Intl

Estás leyendo la versión en inglés del artículo porque aún no existe una traducción para este idioma. ¡Ayúdanos a traducir este artículo!

El objeto de ámbito global Intl es el espacio de nombres para el API de Internacionalización de ECMAScript, éste provee comparación de cadenas y formato de números, fechas y tiempos con sensibilidad al lenguaje. Los constructores para los objetos Collator, NumberFormat, y DateTimeFormat son propiedades del objeto Intl. En ésta página se documentan tales propiedades, así como la funcionalidad común a los constructores de internacionalización y otras funciones sensibles al lenguaje.

Propiedades

Intl.Collator
Constructor para collators, objetos que permiten la comparación de cadenas con sensibilidad al lenguaje.
Intl.DateTimeFormat
Constructor para objetos que permiten el formato de fecha y tiempos con sensibilidad al lenguaje.
Intl.NumberFormat
Constructor para objetos que permiten el formato de números con sensibilidad al lenguaje.
Intl.PluralRules
Por definir

Métodos

Intl.getCanonicalLocales()
Método que retorna los nombres canónicos de las diferentes variantes de lenguaje.

Identificación de variantes de lenguaje y negociación

Los constructores de internacionalización, así como otros metodos de constructores sensibles al lenguaje (listados bajo Ver más) siguen un mismo patrón para identificar variantes de lenguaje y determinar aquella a utilizar: todos aceptan los argumentos locales y options, y negocian las variantes requeridas contra aquellas que soportan utilizando un algoritmo especificado en la propiedad options.localeMatcher.

locales

El argumento locales debe ser tanto una cadena que contenga una  Etiqueta de Idioma BCP 47, o una matriz de etiquetas de dicho idioma. Si el argumento locales no es provisto o es indefinido, será usado la localicacion predeterminada.

Una etiqueta de idioma BCP 47 define un idioma y minimamente contiene un código primario de idioma. En estos la forma mas comun puede contener, : un código de idioma, un código del sistema de escritura, y un código de país o región, todo separado por guiones. Mientras la etiqueta no es case sensitive, es recomendable usar un titulo para el código del sistema de escritura, mayúsculas para el país y región y minúsculas para todo lo demás.

Ejemplos:

  • "hi": Hindi (idioma principal).
  • "de-AT": Alemán usado en Austria (idioma principal con código del país).
  • "zh-Hans-CN": Escritura China en caracteres simplificados como se usa en China (idioma principal con código de escritura y código del país).

Las subetiquetas que identifican idiomas, scripts, países (regiones), y (raramente utilizadas) variantes en las etiquetas de idiomas BCP 47 pueden ser encontradas en el Registro de subetiquetas de idioma de la IANA.

BCP 47 permite también extensiones. Las funciones de internacionalización de JavaScript utilizan la extensión "u" (Unicode), misma que puede emplearse para requerir personalizacioón de los objetos Collator, NumberFormat, o DateTimeFormat. A continuación algunos ejemplos:

  • "de-DE-u-co-phonebk": Utiliza la variante de guía telefónica del orden de clasificación alemán, que expande las vocales con umlaut a pares de caracteres: ä → ae, ö → oe, ü → ue.
  • "th-TH-u-nu-thai": Utiliza dígitos tailandeses (๐, ๑, ๒, ๓, ๔, ๕, ๖, ๗, ๘, ๙) para formatear números.
  • "ja-JP-u-ca-japanese": Use the Japanese calendar in date and time formatting, so that 2013 is expressed as the year 25 of the Heisei period, or 平成25.
  • "en-GB-u-ca-islamic": use British English with the Islamic (Hijri) calendar, where the Gregorian date 14 October, 2017 is the Hijri date 24 Muharram, 1439.

Locale negotiation

The locales argument, after stripping off all Unicode extensions, is interpreted as a prioritized request from the application. The runtime compares it against the locales it has available and picks the best one available. Two matching algorithms exist: the "lookup" matcher follows the Lookup algorithm specified in BCP 47; the "best fit" matcher lets the runtime provide a locale that's at least, but possibly more, suited for the request than the result of the Lookup algorithm. If the application doesn't provide a locales argument, or the runtime doesn't have a locale that matches the request, then the runtime's default locale is used. The matcher can be selected using a property of the options argument (see below).

If the selected language tag had a Unicode extension substring, that extension is now used to customize the constructed object or the behavior of the function. Each constructor or function supports only a subset of the keys defined for the Unicode extension, and the supported values often depend on the language tag. For example, the "co" key (collation) is only supported by Collator, and its "phonebk" value is only supported for German.

options argument

The options argument must be an object with properties that vary between constructors and functions. If the options argument is not provided or is undefined, default values are used for all properties.

One property is supported by all language sensitive constructors and functions: The localeMatcher property, whose value must be a string "lookup" or "best fit" and which selects one of the locale matching algorithms described above.

Specifications

Specification Status Comment
ECMAScript Internationalization API 1.0 (ECMA-402)
La definición de 'Intl' en esta especificación.
Standard Initial definition.
ECMAScript Internationalization API 2.0 (ECMA-402)
La definición de 'Intl' en esta especificación.
Standard
ECMAScript Internationalization API 4.0 (ECMA-402)
La definición de 'Intl' en esta especificación.
Draft Added Intl.getCanonicalLocales in the 4th edition.

Browser compatibility

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome para AndroidFirefox para AndroidOpera para AndroidSafari en iOSSamsung InternetNode.js
IntlChrome Soporte completo 24Edge Soporte completo 12Firefox Soporte completo 29IE Soporte completo 11Opera Soporte completo 15Safari Soporte completo 10WebView Android Soporte completo 4.4Chrome Android Soporte completo 25Firefox Android Soporte completo 56Opera Android Soporte completo SiSafari iOS Soporte completo 10Samsung Internet Android Soporte completo 1.5nodejs Soporte completo Si
CollatorChrome Soporte completo 24Edge Soporte completo 12Firefox Soporte completo 29IE Soporte completo 11Opera Soporte completo 15Safari Soporte completo 10WebView Android Soporte completo ≤37Chrome Android Soporte completo 25Firefox Android Soporte completo 56Opera Android Soporte completo SiSafari iOS Soporte completo 10Samsung Internet Android Soporte completo 1.5nodejs ?
DateTimeFormatChrome Soporte completo 24Edge Soporte completo 12Firefox Soporte completo 29IE Soporte completo 11Opera Soporte completo 15Safari Soporte completo 10WebView Android Soporte completo 4.4Chrome Android Soporte completo 26Firefox Android Soporte completo 56Opera Android Soporte completo 14Safari iOS Soporte completo 10Samsung Internet Android Soporte completo 1.5nodejs Soporte completo Si
ListFormat
Experimental
Chrome Soporte completo 72Edge Sin soporte NoFirefox Sin soporte NoIE Sin soporte NoOpera Soporte completo 60Safari Sin soporte NoWebView Android Soporte completo 72Chrome Android Soporte completo 72Firefox Android Sin soporte NoOpera Android ? Safari iOS Sin soporte NoSamsung Internet Android Sin soporte Nonodejs Sin soporte No
LocaleChrome Soporte completo 74Edge Sin soporte NoFirefox Sin soporte NoIE Sin soporte NoOpera Sin soporte NoSafari Sin soporte NoWebView Android Soporte completo 74Chrome Android Soporte completo 74Firefox Android Sin soporte NoOpera Android Sin soporte NoSafari iOS Sin soporte NoSamsung Internet Android Sin soporte Nonodejs Sin soporte No
NumberFormatChrome Soporte completo 24Edge Soporte completo 12Firefox Soporte completo 29IE Soporte completo 11Opera Soporte completo 15Safari Soporte completo 10WebView Android Soporte completo SiChrome Android Soporte completo 26Firefox Android Soporte completo 56Opera Android Soporte completo 14Safari iOS Soporte completo 10Samsung Internet Android Soporte completo 1.5nodejs ?
PluralRulesChrome Soporte completo 63Edge Soporte completo 18Firefox Soporte completo 58IE Sin soporte NoOpera Soporte completo 50Safari Sin soporte NoWebView Android Soporte completo 63Chrome Android Soporte completo 63Firefox Android Soporte completo 58Opera Android Soporte completo 46Safari iOS Sin soporte NoSamsung Internet Android Soporte completo 8.0nodejs Soporte completo 10.0.0
RelativeTimeFormatChrome Soporte completo 71Edge Sin soporte NoFirefox Soporte completo 65IE Sin soporte NoOpera Soporte completo 58Safari Sin soporte NoWebView Android Soporte completo 71Chrome Android Soporte completo 71Firefox Android Soporte completo 65Opera Android Soporte completo 50Safari iOS Sin soporte NoSamsung Internet Android Soporte completo 10.0nodejs Soporte completo 12.0.0
getCanonicalLocalesChrome Soporte completo 54Edge Soporte completo 16Firefox Soporte completo 48IE Sin soporte NoOpera Sin soporte NoSafari Soporte completo 11WebView Android Sin soporte NoChrome Android Sin soporte NoFirefox Android Soporte completo 56Opera Android Sin soporte NoSafari iOS Soporte completo 11Samsung Internet Android Sin soporte Nonodejs Sin soporte No

Leyenda

Soporte completo  
Soporte completo
Sin soporte  
Sin soporte
Compatibilidad desconocida  
Compatibilidad desconocida
Experimental. Esperar que el comportamiento cambie en el futuro.
Experimental. Esperar que el comportamiento cambie en el futuro.

See also