Usuario:ManuelRomero/ProgramacionWeb/php/multilenguaje
De WikiEducator
< Usuario:ManuelRomero | ProgramacionWeb/php
Revisión a fecha de 01:57 8 sep 2018; ManuelRomero (Discusión | contribuciones)
Contenido
gettext()
- Función en php que nos va a permitir tener nuestra página en varios lenguajes, lo que se llama internacionalizar nuestra aplicación de una forma profesional
https://www.gnu.org/software/gettext/manual/gettext.html
Instalación
- Para poder usar esta función debemos tener instalado el paquete de ubuntu identificado con el mismo nombre.
apt-get install gettext
- Fichero de configuración de php (En mi caso)
/etct/php/7.2/apache/php.ini
y quitamos el comentario ; de la extensión 'gettext
.... ;extension=gd2 extension=gettext ;extension=gmp ....
- Reiniciamos servicio
sudo service apache2 restart
Estructura de dierectorios
- Se trata de tener un directorio por cada idioma que queramos hacer traducir
- Estos directorios se espera bajo locale
- Los nombres de cada directorio de cada idioma a de ser un nombre estandarizado
- Podemos obtener una lista de las localizaciones instaladas en nuestro sistema
locale -a
- Como ejemplo crearemos 3 idiomas (fr, en, es)
- Se crean directorios con el nombre
ii_PP
ii son dos letras para especificar el idioma de acuerdo a la especificación IDO-639-1 PP son dos letras en mayúsculas correspondinetes al país según la especificación IDO-3166-1
- Dentro de cada directorio crearemos el directorio LC_MESSAGES
Creando los ficheros de texto
- Una herramienta a usar puede ser poedit (Hay varias, esta parece que tiene mucha aceptación)
apt-get install poedit
La página oficial
https://poedit.net/
Funciones a usar para traducir
- bind_textdomain_codeset
- Especifica el juego de caracteres en que los mensajes del catálogo del dominio serán devueltos
- bindtextdomain
- Establece la ruta del dominio
- dcgettext
- Sobrescribe el dominio de la búsqueda única del mensaje
- dcngettext
- Versión plural de dcgettext
- dgettext
- Sobrescribe el dominio actual
- dngettext
- Versión plural de dgettext
- gettext
- Consultar un mensaje en el dominio actual
- ngettext
- Versión plural de gettext
- textdomain
- Establece el dominio actual