Pregunta

Le digo que estoy diseñando un sitio web en el que tenemos Inglés, Francés, Español, Alemán, y Corea (no estoy, pero vamos a pretender que soy).

No se puede confiar en los servicios como traductor Google, ya que la naturaleza del sitio web no es un entretenimiento, sino de negocios. Digamos que tengo acceso a traductores profesionales que pueden traducir algo en contexto a otro idioma y dame ese texto.

¿Cuáles son algunas formas conocidas y sencillas para servir contenido a través de múltiples idiomas con un sitio web?

Hay un montón de opciones, tales como páginas separadas, utilizando una base de datos, y así sucesivamente ... pero realmente no puedo decidir lo que es mejor, cómo el concepto se escala, lo que debe tenerse en cuenta, y cómo hacer frente a traducciones falta?

¿Hay prácticas bien establecidas para esto?

¿Fue útil?

Solución

El amplio tema que estés preguntando por se llama "internacional y localización" (o I18N y L10N para abreviar). Lo importante para recordar es que es no sólo de traducir los mensajes. Hay muchas otras cosas que van en la internacionalización de un sitio web.

Las cosas más obvias que se necesitan son:

  • Una codificación de caracteres que funcione para caracteres de todos los idiomas, no sólo en Inglés (Esto significa todo abajo a la base de datos debe utilizar la codificación UTF)
  • Algunos manera de representar Locale (es decir, del usuario: clase Locale )
  • Un modelo común para la producción de un mensaje en el entorno local de ese usuario (es decir: Resorte de MessageSource

Otras cosas que hay que tener en cuenta:

  • correctamente la clasificación cuerdas según la configuración regional
  • formato de fecha según la configuración regional
  • Siempre que muestran veces en la zona horaria del usuario
  • Mostrando mediciones de distancia para el entorno local del usuario (es decir:? Miles frente Kilómetros)
  • Trazado de la página web de derecha a izquierda para los idiomas como el hebreo
  • Piense en cómo se pluralices sus mensajes. String message = "Please fix the following error" + (errors.size() > 1 ? "s" : ""); simplemente no funciona en un programa de internacionalización.
  • Piense acerca de cómo diseñar sus páginas web cuando la longitud del texto puede variar mucho .. y nunca asuma que un personaje es más o menos una cierta anchura (un solo carácter en kanji podría ser 8 veces más ancha que una minúscula 'i')

El mejor recurso que puedo encontrar para esto es el href="http://userguide.icu-project.org/" rel="noreferrer"> de biblioteca UCI . Si utiliza Java, esta es la biblioteca para su uso.

Esperamos que esta respuesta es un comienzo muy útil!

Otros consejos

Tome un vistazo a las recomendaciones de Google para multi-regionales y multilingües . Esperamos que la información es muy útil. Mejor de las suertes.

Totalmente de acuerdo con @ Michael D y otros desarrolladores que han publicado sus respuestas. Aunque el para esta pregunta ya haya sido aceptada pero creo que una opción pequeña, como la: pseudoclase lang () puede ser atento para createing sitios multilingües también. El: lang () pseudoclase permite determinar el idioma en diversos documentos.

código CSS:

    q:lang(fr) {     /* Quotations for French */ 
     quotes: "\00AB" "\00BB"; 
    }

    q:lang(en) {
     quotes: "\201C" "\201D";    /* Quotations for English */ 
    }


código HTML:

 <html>
 <body>
 <pre>
     <p>Quote in French: <q lang="fr">То être ou ne pas être</q>.</p>
     <p>Quote in English: <q lang="en">То be or not to be</q>.</p>
 </pre>
 </body>
 </html>

Y la salida será la siguiente:

Quote in French language: << То être ou ne pas être >>.

Quote in English language: "То be or not to be".

Tenga en cuenta que estamos hablando de documentos, no un trozo de texto, ya que realizan un formato complejo.

Tenemos un conjunto de archivos en el disco que contiene todas las cadenas en una determinada Reproductor / módulo / lo que sea, y archivos separados por idioma, es decir:.

foo.strings == generic (happens to be US english)
foo.fr.strings == french
foo.fr-CA.strings == canadian french 
foo.en-CA.strings == canadian english

Con base en el cliente es encabezado Accept-Language, determinamos que el lenguaje que quiere.

Cuando se solicita por primera vez un idioma determinado, que golpeó el sistema de archivos para construir el mapeo de cadena grande para ese idioma, a continuación, almacenar en caché en la memoria. Si una determinada cadena no está definido en el documento FR-CA, que subiremos hasta la pila para fr, entonces eventualmente al genérico

Las páginas se genera de forma dinámica y la versión generada de cada URL se almacena en caché en función de las cabeceras de idioma del usuario (entre otras cosas).

Espero que ayude

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top