SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
i18n en PHP

Carlos Sánchez - carlos@nvivo.es
David Gaya - david.gaya@assertio.es
Introducción
•   i18n NO ES sólo presentar una web en varios idiomas

•   i18n is the process of designing a software application
    so that it can be adapted to various languages and
    regions without engineering changes (Wikipedia)

•   L10n - Enfoca aspectos culturales (Fechas, monedas,
    medidas...)

•   L10n is the process of adapting software for a specific
    region or language by adding locale-specific components
    and translating text. (Wikipedia)
Caso i18n de nvivo.es
•   Nginx, PHP4 + Smarty, MySQL 5, JQuery
    Plataforma completa en ISO-8859-1
•   Despliegue de nvivo.es en más países.
    Comenzando con UK y DE

•   Información Local

•   Localización geográfica: Webservice de
    Geonames. Múltiples dominios, TLDs diferentes
    por cada país, URLs diferentes en cada idioma:
    http://www.5gig.co.uk
    http://www.5gig.de
Pasos realizados
•   Paso de todos los archivos de iso-8859-1 a
    UTF-8. iconv —from-code=ISO-8859-1 —to-code=UTF-8 $file   > $nfile



•   Configuración de Nginx, php.ini, MySQL.

•   Solución de problemas UTF-8 de PHP: Funciones
    mb_string

•   Fechas, moneda, unidades, soporte de localidades
    internacional: Geonames, strftime

•   Instalación de locales en el sistema, gettext,
    utilidades gettext.
Pasos realizados II
•   Creación de estructuras de catálogos de idioma:
    archivos .PO, .MO

•   Uso de gettext en PHP, uso de gettext en Smarty.

•   Traducción de los catálogos.

•   Traducción de las URLs y gestión con
    múltiples .htaccess (rewrite de nginx).
UTF-8
•   ¿qué es UTF-8? Es una norma de transmisión de longitud
    variable para caracteres codificados utilizando Unicode

•   Unicode es un estándar industrial cuyo objetivo es que
    cualquier texto en cualquier forma e idioma pueda ser
    codificado para el uso informático

•   Norma nº 1 - TODO EN UTF-8: Editor, archivos,
    BD, tablas, campos...

•   Soluciona el 90% de tus problemas de i18n

•   ISO-8859-1
A tener en cuenta: Backend
              locale -a //vemos todos los locales


•
              /etc/locale.gen //Añadimos el locale que queremos instalar
    locale    locale-gen //genera los locales que encuentra en /etc/locale.gen



•
              gettext(“Hello World”);
    gettext   sprintf(gettext(“Hello %s”),$var1);
              _(“This way better”);


•   MySQL     ALTER DATABASE Journal SET CHARACTER SET utf8;
              ALTER TABLE Journal.Posts DEFAULT CHARSET SET utf8;
              ALTER TABLE MODIFY body body TEXT CHARACTER SET utf8;
              CHARACTER SET utf8 COLLATE utf8_general_ci;

              SET NAMES 'utf8';


•   Apache    .htaccess AddDefaultCharset UTF-8
A tener en cuenta: PHP

•   PHP4, PHP5 y el UTF-8 no son muy amigos
    ¡funciones mb_string! ¿ PHP 6 ?

•   utf8_encode, utf8_decode
    No es necesario si se usa UTF-8, excepto con
    strftime :(
•   http://www.phpwact.org/php/i18n/utf-8
A tener en cuenta: Frontend
• XHTML
  <meta http-equiv=quot;Content-Typequot; content=quot;text/html; charset=utf-8quot; />


• Smarty Gettext
  <p>{t}Hello World{/t}</p>
  <p>{t 1=$var1 escape=”no”}Hello <strong>%1!</strong>{/t}</p>




• Javascript
  Jquery gettext ¿? - Problemas de rendimiento (AJAX, JSON)
  Nosotros preferimos Smarty
  Ojo con las expresiones regulares y el paso a UTF-8 de ficheros .js
gettext
•   Flexible: Fácil de actualizar nuevas frases

•   GPL, Estándar de facto, herramientas, utilidades

•   ¿por qué reinventar la rueda?
    xgettext, msgfmt, msgmerge....

•   La opción menos mala
    xgettext -c archivo.php
    msgfmt messages.po
    msgmerge old.po messages.po -o new.po


•   POEdit y KBabel
¡A programar!
Host - 217.113.247.140 / phpbarcelona.phpbcn.org
User - phpworkshop
Passwd - phpworkshop
URL - http://phpbarcelona.phpbcn.org/i18n_workshop/user#/

PDF - http://phpbarcelona.phpbcn.org/i18n_workshop/bcnworkshop.pdf

Más contenido relacionado

Similar a i18n PHP guía

Introdución a la web: HTTP, URL y HTML
Introdución a la web: HTTP, URL y HTMLIntrodución a la web: HTTP, URL y HTML
Introdución a la web: HTTP, URL y HTMLJoaquín Salvachúa
 
Webinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPWebinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPArsys
 
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Daniel González Cerviño
 
WordPress Multilingue
WordPress MultilingueWordPress Multilingue
WordPress MultilingueAmit Kvint
 
M1 introduccion a php
M1   introduccion a phpM1   introduccion a php
M1 introduccion a phpEDUARDLARA1
 
.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0Luis Ruiz Pavón
 
Redmine - Gestión de Portafolio de Proyectos
Redmine - Gestión de Portafolio de ProyectosRedmine - Gestión de Portafolio de Proyectos
Redmine - Gestión de Portafolio de ProyectosEQ SOFT EIRL
 
Estado actual de la localización española. Versión 6.1 y 7.0. Comunidad vs. O...
Estado actual de la localización española. Versión 6.1 y 7.0. Comunidad vs. O...Estado actual de la localización española. Versión 6.1 y 7.0. Comunidad vs. O...
Estado actual de la localización española. Versión 6.1 y 7.0. Comunidad vs. O...Domatix
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVIrontec
 
introduccionallaprogramacionweb-230123213144-47a8fc90.ppt
introduccionallaprogramacionweb-230123213144-47a8fc90.pptintroduccionallaprogramacionweb-230123213144-47a8fc90.ppt
introduccionallaprogramacionweb-230123213144-47a8fc90.pptssuser948499
 
INTRODUCCION AL LA PROGRAMACION WEB.ppt
INTRODUCCION AL LA PROGRAMACION WEB.pptINTRODUCCION AL LA PROGRAMACION WEB.ppt
INTRODUCCION AL LA PROGRAMACION WEB.pptTIRZOANTONIOMEDINACA
 
Mi timeline programando desde el notepad a la nube
Mi timeline programando desde el notepad a la nubeMi timeline programando desde el notepad a la nube
Mi timeline programando desde el notepad a la nubeCarlos Longarela
 

Similar a i18n PHP guía (20)

Conociendo PHP
Conociendo PHPConociendo PHP
Conociendo PHP
 
Introdución a la web: HTTP, URL y HTML
Introdución a la web: HTTP, URL y HTMLIntrodución a la web: HTTP, URL y HTML
Introdución a la web: HTTP, URL y HTML
 
Webinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPWebinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHP
 
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
 
WordPress Multilingue
WordPress MultilingueWordPress Multilingue
WordPress Multilingue
 
PHP IUTE
PHP IUTEPHP IUTE
PHP IUTE
 
M1 introduccion a php
M1   introduccion a phpM1   introduccion a php
M1 introduccion a php
 
.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0
 
Que es php
Que es phpQue es php
Que es php
 
Que es php
Que es phpQue es php
Que es php
 
Que es php
Que es phpQue es php
Que es php
 
Redmine - Gestión de Portafolio de Proyectos
Redmine - Gestión de Portafolio de ProyectosRedmine - Gestión de Portafolio de Proyectos
Redmine - Gestión de Portafolio de Proyectos
 
Estado actual de la localización española. Versión 6.1 y 7.0. Comunidad vs. O...
Estado actual de la localización española. Versión 6.1 y 7.0. Comunidad vs. O...Estado actual de la localización española. Versión 6.1 y 7.0. Comunidad vs. O...
Estado actual de la localización española. Versión 6.1 y 7.0. Comunidad vs. O...
 
Php basico
Php basicoPhp basico
Php basico
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPV
 
introduccionallaprogramacionweb-230123213144-47a8fc90.ppt
introduccionallaprogramacionweb-230123213144-47a8fc90.pptintroduccionallaprogramacionweb-230123213144-47a8fc90.ppt
introduccionallaprogramacionweb-230123213144-47a8fc90.ppt
 
INTRODUCCION AL LA PROGRAMACION WEB.ppt
INTRODUCCION AL LA PROGRAMACION WEB.pptINTRODUCCION AL LA PROGRAMACION WEB.ppt
INTRODUCCION AL LA PROGRAMACION WEB.ppt
 
Manual de php
Manual de phpManual de php
Manual de php
 
Manual de php
Manual de phpManual de php
Manual de php
 
Mi timeline programando desde el notepad a la nube
Mi timeline programando desde el notepad a la nubeMi timeline programando desde el notepad a la nube
Mi timeline programando desde el notepad a la nube
 

Último

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 

Último (13)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 

i18n PHP guía

  • 1. i18n en PHP Carlos Sánchez - carlos@nvivo.es David Gaya - david.gaya@assertio.es
  • 2. Introducción • i18n NO ES sólo presentar una web en varios idiomas • i18n is the process of designing a software application so that it can be adapted to various languages and regions without engineering changes (Wikipedia) • L10n - Enfoca aspectos culturales (Fechas, monedas, medidas...) • L10n is the process of adapting software for a specific region or language by adding locale-specific components and translating text. (Wikipedia)
  • 3. Caso i18n de nvivo.es • Nginx, PHP4 + Smarty, MySQL 5, JQuery Plataforma completa en ISO-8859-1 • Despliegue de nvivo.es en más países. Comenzando con UK y DE • Información Local • Localización geográfica: Webservice de Geonames. Múltiples dominios, TLDs diferentes por cada país, URLs diferentes en cada idioma: http://www.5gig.co.uk http://www.5gig.de
  • 4. Pasos realizados • Paso de todos los archivos de iso-8859-1 a UTF-8. iconv —from-code=ISO-8859-1 —to-code=UTF-8 $file > $nfile • Configuración de Nginx, php.ini, MySQL. • Solución de problemas UTF-8 de PHP: Funciones mb_string • Fechas, moneda, unidades, soporte de localidades internacional: Geonames, strftime • Instalación de locales en el sistema, gettext, utilidades gettext.
  • 5. Pasos realizados II • Creación de estructuras de catálogos de idioma: archivos .PO, .MO • Uso de gettext en PHP, uso de gettext en Smarty. • Traducción de los catálogos. • Traducción de las URLs y gestión con múltiples .htaccess (rewrite de nginx).
  • 6. UTF-8 • ¿qué es UTF-8? Es una norma de transmisión de longitud variable para caracteres codificados utilizando Unicode • Unicode es un estándar industrial cuyo objetivo es que cualquier texto en cualquier forma e idioma pueda ser codificado para el uso informático • Norma nº 1 - TODO EN UTF-8: Editor, archivos, BD, tablas, campos... • Soluciona el 90% de tus problemas de i18n • ISO-8859-1
  • 7. A tener en cuenta: Backend locale -a //vemos todos los locales • /etc/locale.gen //Añadimos el locale que queremos instalar locale locale-gen //genera los locales que encuentra en /etc/locale.gen • gettext(“Hello World”); gettext sprintf(gettext(“Hello %s”),$var1); _(“This way better”); • MySQL ALTER DATABASE Journal SET CHARACTER SET utf8; ALTER TABLE Journal.Posts DEFAULT CHARSET SET utf8; ALTER TABLE MODIFY body body TEXT CHARACTER SET utf8; CHARACTER SET utf8 COLLATE utf8_general_ci; SET NAMES 'utf8'; • Apache .htaccess AddDefaultCharset UTF-8
  • 8. A tener en cuenta: PHP • PHP4, PHP5 y el UTF-8 no son muy amigos ¡funciones mb_string! ¿ PHP 6 ? • utf8_encode, utf8_decode No es necesario si se usa UTF-8, excepto con strftime :( • http://www.phpwact.org/php/i18n/utf-8
  • 9. A tener en cuenta: Frontend • XHTML <meta http-equiv=quot;Content-Typequot; content=quot;text/html; charset=utf-8quot; /> • Smarty Gettext <p>{t}Hello World{/t}</p> <p>{t 1=$var1 escape=”no”}Hello <strong>%1!</strong>{/t}</p> • Javascript Jquery gettext ¿? - Problemas de rendimiento (AJAX, JSON) Nosotros preferimos Smarty Ojo con las expresiones regulares y el paso a UTF-8 de ficheros .js
  • 10. gettext • Flexible: Fácil de actualizar nuevas frases • GPL, Estándar de facto, herramientas, utilidades • ¿por qué reinventar la rueda? xgettext, msgfmt, msgmerge.... • La opción menos mala xgettext -c archivo.php msgfmt messages.po msgmerge old.po messages.po -o new.po • POEdit y KBabel
  • 11. ¡A programar! Host - 217.113.247.140 / phpbarcelona.phpbcn.org User - phpworkshop Passwd - phpworkshop URL - http://phpbarcelona.phpbcn.org/i18n_workshop/user#/ PDF - http://phpbarcelona.phpbcn.org/i18n_workshop/bcnworkshop.pdf