Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/php/multilenguaje»

De WikiEducator
Saltar a: navegación, buscar
(Instalación)
(Instalación)
Línea 26: Línea 26:
 
sudo apt-get install locales
 
sudo apt-get install locales
 
</source>
 
</source>
 
+
Para ver los idiomas que tengo actualemnte instalados miramos con el comando
 +
<source lang=bash>
 +
locale -a
 +
</source>
 +
Si queremos agregar nuevos idiomas ejecutamos la reconfiguración de los idiomas instalados
 
<source lang=bash>
 
<source lang=bash>
 
# dpkg-reconfigure locales
 
# dpkg-reconfigure locales
 
</source>
 
</source>
Nos aparece una lista de los locales disponibles y seleccionamos los que nos interesen.
+
*Nos aparece una lista de los locales disponibles y seleccionamos los que nos interesen.
 +
*Vamos a agregar el español utf-8, el francés y el inglés para nuestra práctica.
 +
son los códigos (los podemos ver en la lista) 158 182 233 respectivamente
 +
establecemos por defecto el es-ES-UTF8
  
 
===Estructura de dierectorios===
 
===Estructura de dierectorios===

Revisión de 21:32 3 dic 2018

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
Para instalar los idiomas
sudo apt-get install locales

Para ver los idiomas que tengo actualemnte instalados miramos con el comando

locale -a

Si queremos agregar nuevos idiomas ejecutamos la reconfiguración de los idiomas instalados

# dpkg-reconfigure locales
  • Nos aparece una lista de los locales disponibles y seleccionamos los que nos interesen.
  • Vamos a agregar el español utf-8, el francés y el inglés para nuestra práctica.
son los códigos (los podemos ver en la lista) 158 182 233 respectivamente
establecemos por defecto el es-ES-UTF8

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

  • Creamos los ficheros con el texto en el idioma específico. Son ficheros de texto con extensión po
  • Ponemos el ejemplo de inglés
#incluimos estas etiquetas vacías
msgid ""
msgstr ""
 
"PO-Revision-Date: 2018-10-18 11:48+0100\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"Project-Id-Version: 0.1 \n"
"POT-Creation-Date:2018-10-18 11:48+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
#mensaje de usuario
msgid "usuario"
msgstr "user"
 
#mensaje de pass
msgid "pass"
msgstr "password"
 
#mensaje de saludo
msgid "saludo"
msgstr "welcome to this website"
 
#mensaje de despedida
msgid "despedida"
msgstr "We hope to see you soon on this page"
  • El resto de ficheros cambiaría el msgstr correspondiente.
  • Una herramienta a usar puede ser poedit (Hay varias, esta parece que tiene mucha aceptación)
  • Ahora debemos generar el fichero mo (Machine Object) a partir del po (Portable Object)
  • Para ello podemos ejecutar
 msgfmt -o fichero.mo fichero.po
  • O bien instalar el editor poedit, hay mas.
 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

Instalar el idioma

https://es.stackoverflow.com/questions/98786/gettext-no-realiza-las-traducciones-en-web-php