ICU syntax: Cursillo acelerado
Esta libraría analiza y compila las traducciones creadas en la syntaxis ICU. Aunque la sintaxis ICU es un proyecto independiente este es un cursillo acelerado de porqué es interesante y como usar sus principales funcionalidades
¿Porqué usar la sintaxis ICU?
ICU son las siglas de International Components for Unicode. Aunque su popularidad comenzó con C/C++ y Java, es en el ecosistema javascript donde se ha convertido en el standard de facto para internacionalización, aunque también es popular en Python y PHP
Internacionalizar aplicaciones es mucho más que mapear una claves a la traducción apropiada en un diccionario. Aplicaciones internacionalizadas debidamente deben gestional todos los aspectos de la traducción, incluyendo la forma en que fechas y tiempos se formatean, que delimitadores se usan en los números para separar los millares o los decimales, formateo de divisas y soportar lenguages con géneros.
Incluso algo tan aparentemente sencillo como los plurales puede resultar muy complejo en algunos idiomas. El inglés, español y alemán tiene solo un singular y un plural pero algunos idiomas eslavos tienen tres, y otros como el árabe tienen 6 dependiendo del número de elementos. A veces el número a partir del cual se cambia de una forma del plural a la siguiente varía dependiendo de la variante regional.
El ingles no tiene muchas palabras con dos géneros, pero el francés y el español sí, y los adjetivos de esos sustantivos deben respetar su género. Formatear 123456789
en inglés americano resultará en 123,456,789
pero en inglés de la India será 12,34,56,789
.
Formateando divisas el símbolo $ va antes de la cantidad pero el € va después.
La sintaxis ICU abstrae toda esta complejidad de los desarrolladores y da a los verdaderos traductores profesionales un meta-lenguage suficientemente expresivo para gestional todas las sutilezas por su cuenta
Interpolaciones
Las entradas ICU soportan interpolar valores, que serán adecuadamente saneados, por lo que pasar undefined
not se interpolará como "undefined".
Entrada | Entrada | Salida |
---|---|---|
|
Your favorite color is orange |
Plurales
La segunda funcionalidad más usada en cualquier aplicación es la pluralización. La sintaxis ICU proporciona la utilidad plural
para definir traducciones para los plurales desde los más sencillos a los más complejos, todo sin salir de la sintaxis en sí misma.
- zero
- one (singular)
- two (dual)
- few (paucal)
- many (También usado para fracciones)
- other (plural genérico. El usado en idiomas con solo una forma de plural)
Entrada | Valores | Salida |
---|---|---|
|
Your have 0 cats | |
|
Your have no cats at all | |
|
Mary does not give a party. |
Algunos idiomas como el inglés solamente utilizan one
y other
pero otros idiomas serán capaces de seleccionar siempre el plural más adecuando. El límite particular que divide few
y many
es altamente cultural.
Puedes también especificar traducciones para cantidades específicas usando =N
. Cuando un número específico es especificad de esta manera tomará precedencia sobre el comportamiento por defecto de los plurales en ese idioma.
Por ejemplo, en inglés puedes usar =2
o =12
para usar diferentes traducciones específicamente para un par y una docena de elementos en lugar de usar el plural genérico.
Por último, los plurales puedes utilizar la almoadilla para imprimir como número el valor usado para seleccionar el plural y opcionalmente la utilidad puede recibir un offset que se restará del valor antes de reemplazar la almoadilla.
Select
La utilidad select
se usa para elegir entre varias posibles traducciones en base al valor de un argumento.
Aunque tener muchos usos el más común es para tener traducciones dependientes del género.
Entrada | Valores | Salida |
---|---|---|
|
Your son has won an award |
Fechas
Los formatos disponibles por defecto son:
short
: La representación más abreviada (numérica)medium
: Representación textual abreviadalong
: Representación textual extendidafull
: La representación más completa
Entrada | Valores | Salida |
---|---|---|
|
Your next holidays start on sábado, 17 de mayo de 2025 |
Horas
Idéntico a la utilidad para fechas pero para foratear únicamente la parte temporal de un objecto Date.
Entrada | Valores | Salida |
---|---|---|
|
Your doctor's appointment is today at 11:10 |
Números
Formatea un número de acuerdo a las reglas del idioma seleccionado.
Entrada | Valores | Salida |
---|---|---|
|
Your account balance is 0 |
También hay una funcionalidad avanzada llamada Number Skeletons que te permite personalizar hasta el extremo cómo quieres que los números se formateen.
Entrada | Valores | Salida |
---|---|---|
|
Your account balance is 0,00 € | |
|
Your account balance is +0,00 € | |
|
Game progress 0 % | |
|
Game progress 0,00 % | |
|
Game progress 0,00 % | |
|
Your destination is 0 m away | |
|
Your destination is 0 metros away | |
|
Are you sure you want to bid 5 mil over asking? | |
|
Are you sure you want to bid 5 mil over asking? | |
|
The chances of winning the lottery are 1 in 1,235E8 |
Las posibilidades de los number skeleton son ilimitadas.