Как отобразить арабские даты в григорианском календаре?

StackOverflow https://stackoverflow.com/questions/359986

Вопрос

У меня есть многоязычный сайт ASP.NET;один из языков — арабский (ар-СА).Для переключения между культурами я использую этот код:

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Name)
Thread.CurrentThread.CurrentUICulture = New CultureInfo(Name)

Например, при отображении даты статьи я просто делаю это, а API локализации обо всем позаботится:

<%#Eval("DatelineDate","{0:d MMMM yyyy}")%>

Проблема в том, что даты отображаются с использованием календаря Хиджири (исламского) (например,2008 год отображается как 1429).Клиент хочет отображать даты с использованием григорианского календаря (разумеется, названия месяцев и все остальное отображаются на арабском языке).Как я могу это сделать?

Это было полезно?

Решение

Отвечать:

Оказывается, культура АР-СА — единственная, использующая календарь Хиджири;все остальные арабские культуры используют григорианский язык.Вот различные форматы дат на арабском языке (немного запутанно, потому что WMD не поддерживает текст с письмом справа налево).

ar-AE 11 ديسمبر 2008 
ar-BH 11 ديسمبر 2008 
ar-DZ 11 ديسمبر 2008 
ar-EG 11 ديسمبر 2008 
ar-IQ 11 كانون الأول 2008 
ar-JO 11 كانون الأول 2008 
ar-KW 11 ديسمبر 2008 
ar-LB 11 كانون الأول 2008 
ar-LY 11 ديسمبر 2008 
ar-MA 11 دجنبر 2008 
ar-OM 11 ديسمبر 2008 
ar-QA 11 ديسمبر 2008 
ar-SA 13 ذو الحجة 1429 
ar-SY 11 كانون الأول 2008 
ar-TN 11 ديسمبر 2008 
ar-YE 11 ديسمبر 2008 

И, чего бы это ни стоило, вот быстрый и грязный код, который я использовал для создания этого списка:

    Response.Write("<table width=300px>")
    For Each ci As CultureInfo In (From c As CultureInfo In CultureInfo.GetCultures(CultureTypes.AllCultures) Order By c.Name Where c.Name.StartsWith("ar-"))
        Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(ci.Name)
        Thread.CurrentThread.CurrentUICulture = New CultureInfo(ci.Name)
        Response.Write(String.Format("<tr><td>{0}</td> <td style='direction:rtl;font-size:20px;'>{1:d MMMM yyyy}</td></tr>", ci.Name, Today))

    Next
    Response.Write("</table>")
    Response.End()

Больше культур на http://www.massimilianobianchi.info/max/articles/22/UI-cultural-list-and-codes.aspx

Другие советы

Вы можете просто использовать другую арабскую локаль. Единственная разница между ними — формат даты...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top