languages language browserlanguage javascript localization browser locale

language - ¿Cómo determina el objeto "Fecha" de JavaScript la configuración regional del navegador del usuario?



navigator languages (3)

Es desde la configuración de la zona horaria desde el reloj del sistema, no desde la configuración regional.

[ Editar ] Ahora que volví a leer la pregunta, ¿estás hablando del formato de fecha, verdad? (15 de febrero frente a 15 de febrero) Aquí hay una referencia sobre el método para Firefox: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Date/toLocaleString . Dice que usa la configuración regional del sistema operativo.

Es posible que deba reiniciar el sistema operativo para que los cambios de configuración regional surtan efecto.

Estoy tratando de comprender cómo el JavaScript que se ejecuta en los distintos navegadores determina la configuración regional que usará el objeto Date JavaScript cuando se usa el método toLocaleString() .

Cambié el idioma y la configuración regional de mi sistema a través del panel de control de Windows y también cambié la configuración de idioma de todos los navegadores a la misma. La función todavía devolvió una fecha en inglés.

¿Hay alguna configuración de registro en Windows que deba configurar manualmente? ¿Perdí alguna configuración en algún lado? ¿O debo obtener un disco de instalación de Windows para regiones particulares?


Un excelente artículo de uno de mis blogs favoritos sobre el comportamiento de JScript:

Creo que ahora estamos en el modo "siempre predeterminado para EE. UU.-Inglés" en IE. Es confuso porque los motores de script tienen la capacidad de cambiar la configuración regional utilizada para los mensajes de error independientemente de la configuración regional utilizada para formatear fechas, números, etc.

y

Date.prototype.toLocaleDateString , toLocaleTimeString y toLocaleString son complicados por algunas rarezas extrañas en la API Win32 NLS. Para solucionar varios problemas, solo se localizan las fechas entre 1600 y 10000 AD. Los formatos de fecha hebreos para años posteriores a 2240 AD tampoco son compatibles. Una vez que saltamos esos obstáculos, las API de Win32 GetDateFormat y GetTimeFormat se usan para formatear las cadenas. (Estoy recordando vagamente que también había un error relacionado con el calendario tailandés, pero no recuerdo los detalles).

https://blogs.msdn.com/ericlippert/archive/2004/05/18/jscript-localization-and-those-wacky-newfoundlanders.aspx

Y desde el MDC (Mozilla Developer Center) :

El método toLocaleString se basa en el sistema operativo subyacente en las fechas de formato. Convierte la fecha en una cadena utilizando la convención de formato del sistema operativo donde se ejecuta la secuencia de comandos. Por ejemplo, en los Estados Unidos, el mes aparece antes de la fecha (15/04/98), mientras que en Alemania la fecha aparece antes del mes (15.04.98). Si el sistema operativo no cumple con el año 2000 y no utiliza el año completo durante años anteriores a 1900 o más de 2000, toLocaleString devuelve una cadena que no cumple con el año 2000. toLocaleString se comporta de forma similar a toString al convertir un año en que el sistema operativo no formatea correctamente.


Si bien la implementación del navegador típicamente dependería de las rutinas del sistema operativo para hacer el formateo, no creo que haya nada en la especificación que determine cómo se formatea o cuál es el resultado, solo que es apropiado para la configuración regional.

Creo que la pregunta fue sobre cómo se determina el lugar. Al menos Firefox lo trata como un valor fijo dependiendo de la instalación. No se puede cambiar a través del sistema operativo o incluso las preferencias del navegador (las preferencias de idioma / región que ve en Firefox se relacionan con una configuración regional diferente utilizada solo en transacciones HTTP)

Para controlar realmente el formato de fecha en configuraciones regionales arbitrarias además de lo que su navegador asume como la configuración regional instalada, necesitaría una biblioteca JS como jsdate o dojo.date.