Iñtërnâçiônàlizæçiøn deaplicaciones web
Pedro Hernández.Blog: http://blog.phpleo.com/twitter: @phpleo
¿Por qué aplicaciones como Facebook o Twitter pueden llegar a tantos usuarios?
http://www.flickr.com/photos/marmotte73/2485775993/
“Internacionalización: Adaptar las aplicaciones a diferentes idiomas y culturas”
http://www.flickr.com/photos/russelljsmith/3747387/
i18n
Cultura del usuario
en_US
ISO 639-1(Idioma)
3166-1(País)
es_ES
en_GB
es
es_AR
Detectando la cultura del usuario
• Cabecera HTTP Accept-Language (no es muy fiable).
• Geolocalización de la IP.
Usando la Internacionalización
http://www.flickr.com/photos/torek/857931903/
Cultura en la Url
http://www.mysite.com/es/acerca-de/http://www.mysite.com/es-es/acerca-de/
http://en.mysite.com/about/http://en-us.mysite.com/about/
• Almacenamiento en cache.• Indexado en motores de búsqueda (SEO).
Información textual en la base de datos
Traducción de la interfaz
• Mostrar etiquetas, mensajes y la navegación en diferentes idiomas.
• Herramientas:– Diccionarios.– Gettext.– XLIFF.– r3.
Herramientas para I18N la Interfaz
http://www.flickr.com/photos/jamingray/935197028/
Diccionarios
$lang = array( 'nombre' => 'Name', 'apellidos' => 'Last name', 'email' => 'E-mail' );
<?php echo $lang[‘nombre’]; ?><?php echo $lang[‘apellidos’]; ?><?php echo $lang[‘email’]; ?>
lang/en_US.php templates/index.php
Gettext
• Biblioteca GNU de i18n.• Archivo .po (texto plano) compilado en un
archivo binario .mo.• Función de traducción: _(‘’)
Gettext
#: templates/index.php:15msgid “Nombre“msgstr “Name“
#: templates/index.php:16msgid “Apellidos“msgstr “Last name“
#: templates/index.php:17msgid “E-mail“msgstr “E-mail“
en_US.po
<?php echo _(‘Nombre’); ?><?php echo _(‘Apellidos’); ?><?php echo _(‘E-mail’); ?>
templates/index.phplang/en_US.mo
XLIFF
• XLIFF (XML Localization Interchange File Format).
• Formato estándar basado en XML.• Función de traducción: __(‘’)• Archivo xml:
messages.[codigo_de_idioma].xmlmessages.en_US.xml
XLIFF
<?xml version="1.0" ?><xliff version="1.0"> <file orginal="global" source-language=“es_ES" datatype="plaintext"> <body> <trans-unit id="1"> <source>Nombre</source> <target>Name</target> </trans-unit> <trans-unit id="2"> <source>Apellidos</source> <target> Last name </target> </trans-unit> </body> </file></xliff>
lang/messages.en_US.xml
r3
• Utilizado por Yahoo.
• Función de traducción: <r3:trans>hello</r3:trans> vs __(‘hello’)
• Español: Guiando la web hacia su máximo potencial…�
• Alemán: Alle Möglichkeiten des Web erschließen…
• Chino: 引å‘网络的全部潜能…�
• Ãrabe: � ...لإيصال الشبكة المعلوماتية إلىأقصى إمكانياتها
http://www.flickr.com/photos/sedah/3203954495/
Juego de carácteres (charset) &codificación (encoding)
Juego de carácteres
• Probablemente se usó ISO-8859-1 (ISO-Latin-1).
• ISO-8859-1: € en lugar de €• Familia ISO-8859 sólo contienen 255
caracteres.
http://www.flickr.com/photos/mumpfpuffel/2763886252/
Uniformizar• Apache:
AddDefaultCharset utf-8
• MySQL:create database `midb`character set utf8 collate utf8_unicode_ci;
• HTML:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
• Clientes y editores por defecto "editando y guardando" en UTF8.
• Español: Guiando la web hacia su máximo potencial…
• Alemán: Alle Möglichkeiten des Web erschließen…
• Chino: 引发网络的全部潜能…
• Árabe: ... إلىأقصى المعلوماتية الشبكة إليصالإمكانياتها
Gracias.
Pedro Hernández.Blog: http://blog.phpleo.com/twitter: @phpleo
Top Related