Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/php/multilenguaje»
De WikiEducator
(→Estructura de dierectorios) |
(→Creando los ficheros de texto) |
||
Línea 40: | Línea 40: | ||
===Creando los ficheros de texto=== | ===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 | ||
+ | <source lang=bash> | ||
+ | #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" | ||
+ | </source> | ||
+ | *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) | *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 | ||
+ | <source lang=bash> | ||
+ | msgfmt -o fichero.mo fichero.po | ||
+ | </source> | ||
+ | *O bien instalar el editor '''''poedit''''', hay mas. | ||
<source lang=bash> | <source lang=bash> | ||
apt-get install poedit | apt-get install poedit | ||
Línea 46: | Línea 85: | ||
La página oficial | La página oficial | ||
https://poedit.net/ | https://poedit.net/ | ||
− | |||
===Funciones a usar para traducir=== | ===Funciones a usar para traducir=== |
Revisión de 02:24 8 sep 2018
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
- 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