24
Iñtërnâçiônàlizæçiøn de aplicaciones web Pedro Hernández. Blog: http://blog.phpleo.com/ twitter: @phpleo

Internacionalización de aplicaciones web

  • Upload
    phpleo

  • View
    1.309

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Internacionalización de aplicaciones web

Iñtërnâçiônàlizæçiøn deaplicaciones web

Pedro Hernández.Blog: http://blog.phpleo.com/twitter: @phpleo

Page 2: Internacionalización de aplicaciones web

¿Por qué aplicaciones como Facebook o Twitter pueden llegar a tantos usuarios?

http://www.flickr.com/photos/marmotte73/2485775993/

Page 3: Internacionalización de aplicaciones web

“Internacionalización: Adaptar las aplicaciones a diferentes idiomas y culturas”

http://www.flickr.com/photos/russelljsmith/3747387/

Page 4: Internacionalización de aplicaciones web

i18n

Page 5: Internacionalización de aplicaciones web

Cultura del usuario

en_US

ISO 639-1(Idioma)

3166-1(País)

es_ES

en_GB

es

es_AR

Page 6: Internacionalización de aplicaciones web

Detectando la cultura del usuario

• Cabecera HTTP Accept-Language (no es muy fiable).

• Geolocalización de la IP.

Page 7: Internacionalización de aplicaciones web

Usando la Internacionalización

http://www.flickr.com/photos/torek/857931903/

Page 8: Internacionalización de aplicaciones web

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).

Page 9: Internacionalización de aplicaciones web

Información textual en la base de datos

Page 10: Internacionalización de aplicaciones web

Traducción de la interfaz

• Mostrar etiquetas, mensajes y la navegación en diferentes idiomas.

• Herramientas:– Diccionarios.– Gettext.– XLIFF.– r3.

Page 11: Internacionalización de aplicaciones web

Herramientas para I18N la Interfaz

http://www.flickr.com/photos/jamingray/935197028/

Page 12: Internacionalización de aplicaciones web

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

Page 13: Internacionalización de aplicaciones web

Gettext

• Biblioteca GNU de i18n.• Archivo .po (texto plano) compilado en un

archivo binario .mo.• Función de traducción: _(‘’)

Page 14: Internacionalización de aplicaciones web

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

Page 15: Internacionalización de aplicaciones web

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

Page 16: Internacionalización de aplicaciones web

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

Page 17: Internacionalización de aplicaciones web

r3

• Utilizado por Yahoo.

• Función de traducción: <r3:trans>hello</r3:trans> vs __(‘hello’)

Page 18: Internacionalización de aplicaciones web

• Español: Guiando la web hacia su máximo potencial…�

• Alemán: Alle Möglichkeiten des Web erschließen…

• Chino: 引å‘网络的全部潜能…�

• Ãrabe: � ...لإيصال الشبكة المعلوماتية إلىأقصى إمكانياتها

Page 19: Internacionalización de aplicaciones web

http://www.flickr.com/photos/sedah/3203954495/

Juego de carácteres (charset) &codificación (encoding)

Page 20: Internacionalización de aplicaciones web

Juego de carácteres

• Probablemente se usó ISO-8859-1 (ISO-Latin-1).

• ISO-8859-1: &euro; en lugar de €• Familia ISO-8859 sólo contienen 255

caracteres.

Page 21: Internacionalización de aplicaciones web

http://www.flickr.com/photos/mumpfpuffel/2763886252/

Page 22: Internacionalización de aplicaciones web

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.

Page 23: Internacionalización de aplicaciones web

• Español: Guiando la web hacia su máximo potencial…

• Alemán: Alle Möglichkeiten des Web erschließen…

• Chino: 引发网络的全部潜能…

• Árabe: ... إلىأقصى المعلوماتية الشبكة إليصالإمكانياتها

Page 24: Internacionalización de aplicaciones web

Gracias.

Pedro Hernández.Blog: http://blog.phpleo.com/twitter: @phpleo