Usuario:ManuelRomero/ProgramacionWeb/php/multilenguaje

De WikiEducator
Saltar a: navegación, buscar

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

Dir idiomas.png

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