Pregunta

Tengo un sitio ASP.NET multilingüe; uno de los idiomas es Árabe (AR-SA). Para cambiar entre las culturas, utilizo este código:

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

Cuando se muestra la fecha de un artículo, por ejemplo, acabo de hacer esto, y la API de localización se encarga de todo:

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

El problema es que esta muestra fechas utilizando el calendario Hijiri (islámica) (por ejemplo, el año 2008 se representa como 1429). El cliente quiere mostrar las fechas utilizando el calendario gregoriano (siendo la prestación de los nombres de los meses y todo lo demás en árabe, por supuesto). ¿Cómo puedo hacer esto?

¿Fue útil?

Solución

Respuesta:

Resulta que la cultura ar-SA es el único que utilizar el calendario Hijiri; todas las otras culturas árabes utilizan gregoriano. Estos son los diferentes formatos de fecha en árabe (un poco en mal estado debido a las ADM no admite parecen apoyar el texto RTL).

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 

Y por lo que vale aquí está el código rápido y sucio he utilizado para generar esta lista:

    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()

Más culturas en http: // www.massimilianobianchi.info/max/articles/22/UI-culture-list-and-codes.aspx

Otros consejos

Puede sólo tiene que utilizar otra configuración regional árabe, la única diferencia entre ellos es el formato de fecha ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top