Una razón para llamar a este proceso localización y no simplemente traducción es que hay muchas otras cosas que dependen del idioma, por ejemplo, el formato de las fechas o el signo monetario.

PHP dispone de un buen surtido de funciones para manejar esto. Todo comienza por la función setlocale() que permite indicar el código de idioma/país que se desea usar. Es importante notar que esta función no genera ningún error. Usualmente devolverá el mismo código que se le ha indicado como segundo argumento, pero si no lo encuentra, no devolverá nada, o devolverá el más aproximado que encuentre.

Una vez establecido el `locale´, hay una serie de funciones que permiten manipular textos, cifras, importes monetarios y fechas para distintos países e idiomas. El ejemplo muestra en una tabla el resultado de esas funciones para una serie de códigos de localización y ofrece también la posibilidad de ingresar un código adicional, que mostrará en la primera fila si estuviera disponible.

Al pié de la tabla se muestra el código fuente que la genera.

Las funciones usadas en el ejemplo son las siguientes:

La información de los nombres de los días de la semana y los nombres de los meses que se obtuvieron mediante nl_langinfo() también están disponibles mediante strftime() indicando el formato que corresponda, pero mientras strftime()requiere una fecha válida, con nl_langinfo() basta indicar (indirectamente, como se puede ver en el código) el número de 1 a 7 para los días de la semana o del 1 al 12 para los meses.

Las fechas, en la mayoría de los idiomas, se muestran en formato dd/mm/aaaa, excepto para en_US (mm/dd/aaaa) y japonés que, aunque no se puede ver los símbolos que usa para indicar las partes de la fecha (no son separadores simples, pues son distintos entre cada parte de la fecha y hora) se ve que la fecha está en formato aaaa/mm/dd y, al parecer, no tienen nombres para los meses sino que simplemente dicen `Mes 1´, `Mes 2´, etc.

Es interesante que las tablas incluso contemplan costumbres locales, como el caso del portugués (pt) de Portugal y Brasil donde los nombres de los días de la semana y los meses aún siendo los mismos, en un caso estilan escribirlos con mayúsculas y en el otro no.

Según el idioma, strcoll() puede o no saber qué hacer con la `ñ´, en la casilla se muestra el resultado de comparar la `ñ´ con la `n´ que le antecede y la `o´ que le sucede y el resultado no siempre es el correcto si la `ñ´ no existe en ese idioma. Otro tanto ocurre con la muestra de strtoupper(), donde para algunos idiomas no encuentra la mayúscula pedida.

En idiomas como griego o japonés, que usan otros alfabetos, el resultado para los textos no se puede mostrar directamente. Esto requiere usar otras codificaciones para la página y que el navegador los soporte. Eso no lo cubriré pues lo desconozco.

Viene de: Internacionalización y localización: recomendaciones

Continúa en: Internacionalización y localización: usando constantes

Indice: Internacionalización y Localización: índice