SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Ähnlich wie i18n en PHP

Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPV
Irontec
 
introduccionallaprogramacionweb-230123213144-47a8fc90.ppt
introduccionallaprogramacionweb-230123213144-47a8fc90.pptintroduccionallaprogramacionweb-230123213144-47a8fc90.ppt
introduccionallaprogramacionweb-230123213144-47a8fc90.ppt
ssuser948499
 

Ähnlich wie i18n en PHP (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
 

Kürzlich hochgeladen

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
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Kürzlich hochgeladen (15)

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
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
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
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
 
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
 
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
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
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
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
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
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.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
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 

i18n en PHP

  • 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