2011-06-01 14 views
6

Estoy trabajando en una aplicación I18N que se ubicará en japonés, no conozco ninguna palabra en japonés, y me pregunto primero si utf8 es suficiente para ese idioma.¿Qué debo saber para que mi aplicación I18N funcione en japonés?

Normalmente, para el idioma europeo, utf8 es suficiente, y tengo que configurar el conjunto de caracteres de la base de datos/colación para usar utf8_general_ci (en MySQL) y mis vistas html en utf8, y es suficiente.

Pero, ¿qué hay del japonés, hay algo más que hacer?

Por cierto, mi aplicación podría manejar inglés, francés, japonés, pero más adelante, puede ser necesario agregar algunos idiomas, digamos, ruso.

¿Cómo puedo configurar mi aplicación I18N para que esté disponible ampliamente sin tener que cambiar muchas configuraciones en la implementación?

¿Hay alguna mejores prácticas?

Por cierto, estoy planeando usar gettext, estoy bastante seguro de que admite dichos lenguajes sin ningún problema, ya que es el estándar de facto para casi todos los softwares GNU, pero ¿algún comentario?

+2

Look: http://yahoo.jp es codificación UTF-8. Creo que eso significa que UTF-8 está bien, entonces. –

Respuesta

5

Un par de puntos:

  • UTF-8 está muy bien para sus datos de aplicaciones internas, pero si usted necesita para procesar los documentos suministrados por el usuario (por ejemplo, archivos), los puede utilizar otro tipo de codificación como Shift- JIS o ISO-2022-JP
  • El texto en japonés no utiliza espacios en blanco entre las palabras. Si su aplicación necesita dividir el texto en palabras en alguna parte, tiene un problema.
  • Aparte del texto, la fecha y los formatos de número difieren
  • La intercalación genérica puede no dar lugar a un orden de clasificación útil para el texto en japonés. Si su aplicación incluye listas grandes en las que la gente tiene que encontrar cosas, puede ser un problema.
+0

Gracias, esa es una gran lista de verificación. ¿Hay algo sobre la dirección del texto? Creo que el japonés se puede escribir en cualquier sentido, pero ¿puede haber un estándar en la web para evitar problemas con el lenguaje rtl? –

+1

@Boris: el japonés no es rtl. Tradicionalmente está escrito en líneas verticales, pero esto casi nunca se hace en medios electrónicos. Sin embargo, Rtl es una preocupación con el árabe y el hebreo, y puedes obtener efectos extraños al mezclarlos con texto ltr. Pero no sé mucho más sobre ese tema que el que existe: si quieres apoyar seriamente los lenguajes de rtl, tendrás que investigarlo. –

+0

Acabo de comprobar y tienes razón, estaba bastante seguro de haber leído en algún lugar que el japonés podría ser RTL. Sin embargo, ahora la dirección es una pre optimización bastante mala, pero de todos modos me dio curiosidad. Gracias –

0

Si almacena texto en archivos de texto entonces dice así:

Ésta es la estructura principal de la carpeta para el idioma:

-lang 
     -en 
     -fr 
     -jp 
     etc 

cada subcarpeta, en, fr ... contiene los mismos archivos , las mismas variables con diferentes valores.

Por ejemplo, en lang/es/links.txt Usted tendría

class txtLinks 
{ 

public static $menu="Menu"; 
public static $products="Show products"; 
.... 

class txtErrors 
{ 

public static $wrongUName="This user does not exists"; 
.... 

Luego, cuando se carga un script que hacen

if(en) 
define(__LANG,'en') 
if(fr) 
define(__LANG,'fr') 
... 

Entonces

include('lang'.__LANG.'what ever file you want') 

entonces este es una pieza de su script php:

echo txtLink::$menu etc... 

Si va a la base de datos de forma análoga, donde en lugar de archivos tiene tablas.

De esta manera usted tiene absoluta libertad porque puede dar los archivos en inglés a alguna persona que hable francés y él puede llenar los valores en francés sin tener que saber nada de programación.

Y a usted mismo no le importa qué idioma se agregue o elimine posteriormente.

Y si trabajas en mvc puedes dividir los archivos de idioma de acuerdo con los controladores para que no tengas que cargar un gran archivo de texto.

3

Sí, Unicode contiene todos los puntos de código que necesita para mostrar inglés, francés, japonés, ruso y prácticamente cualquier idioma del mundo (incluidos taiwanés, cherokee, esperanto, nada más que Elfish). Para eso es para eso. Sin embargo, debido a la naturaleza de UTF8, el texto en más idiomas esotéricos requerirá algunos bytes más para almacenar.

Gettext es ampliamente utilizado y su compilación PHP probablemente lo incluya. Ver http://php.net/gettext para detalles de uso.

+1

jaja gracias demasiado malo Elfish no está incluido;) –

Cuestiones relacionadas