language-agnostic internationalization

language agnostic - ¿Mejores prácticas para internacionalizar aplicaciones web?



language-agnostic internationalization (4)

Tengo un par de aplicaciones que son "bilingües". Utilicé archivos de recursos en ASP.NET1.1

También hay algo llamado Herramienta de recursos de cadenas. Básicamente, coloca todas las cadenas en un archivo .RES para ambos idiomas y luego determina qué archivo leer en función de Cultura o si alguien hizo clic en un Enlace para el idioma.

El mayor problema es asegurarse de que las traducciones se hagan correctamente

Internacionalizar aplicaciones web siempre parece ser una tarea ardua. No importa cuánto planifique en adelante para los idiomas enchufables, siempre hay problemas con la codificación, el fraseo funky que no se ajusta a sus plantillas y otros problemas.

Creo que sería útil obtener la opinión de la comunidad SO para un conjunto de cosas que los programadores deberían tener en cuenta al momento de decidir internacionalizar sus aplicaciones web.


La internacionalización es difícil, he aquí algunas cosas que aprendí al trabajar con 2 sitios web que estaban en más de 20 idiomas diferentes:

  • Use UTF-8 en todas partes. Sin excepciones. HTML, lenguaje del lado del servidor (cuidado especialmente con PHP), base de datos, etc.
  • No hay texto en las imágenes a menos que quieras un montón de trabajo. Use CSS para colocar texto sobre las imágenes si es necesario.
  • Configuración separada de la localización. De esta manera, los localizadores pueden traducir el texto y puede tratar con diferentes configuraciones por localidad (características, diseño, etc.). No desea que los localizadores tengan la capacidad de meterse con su aplicación.
  • Asegúrese de que sus diseños puedan tratar con texto que es 2-3 veces más largo que el inglés. Y también un 50% menos que en inglés (el japonés y el chino a menudo son más cortos).
  • Algunos idiomas necesitan tamaños de letra más grandes (japonés, chino)
  • Los colores también son específicos del lugar. ¡Rojo y verde no significan lo mismo en todas partes!
  • Agregue un nombre de clase que sea el nombre de la localidad a la etiqueta del cuerpo de sus documentos. De esta forma, puede especificar fácilmente el diseño de una configuración regional específica en su archivo CSS.
  • Tenga cuidado con la sustitución variable. No separe las cuerdas. Déjelos enteros así: "Tiene X nuevos mensajes" y reemplace la "X" con el #.
  • Los diferentes idiomas tienen una pluralización diferente. 0, 1, 2-4, 5-7, 7-infinito. Es difícil de tratar.
  • El contexto es difícil. A veces los localizadores necesitan saber dónde / cómo se usa una cadena para asegurarse de que se traduzca correctamente.

Recursos:


Como persona inglesa que vive en el extranjero, me he sentido frustrado por el enfoque de internacionalización de muchas aplicaciones web y he escrito un blog sobre mis frustraciones .

Mis consejos serían:

  • pensar en cómo mostrar una versión internacional de una página
  • utilizar la geolocalización podría funcionar para muchos usuarios, pero como mis ejemplos muestran para muchos, no lo hará
  • ¿Por qué no utilizar el encabezado Aceptar idioma para determinar qué idioma servir?
  • si un usuario accede a una página a través de un motor de búsqueda, no los redireccione a otro lugar, por ejemplo, a una página de inicio en un idioma diferente
  • es extremadamente molesto cambiar el idioma y tener una recarga de página diferente: sirve la misma página o advierte al usuario que el contenido actual no está disponible en un idioma diferente antes de redirigirlos
  • El inglés es un idioma muy común, por lo que quizás prefiera eso
  • Pero asegúrese de que la opción de cambio de idioma sea clara en la GUI (me gusta lo que Google Maps está haciendo, como se muestra en la publicación)

Todo lo que veo en la Web es que las empresas se equivocan en la internalización. Hacerlo bien desde la perspectiva de un usuario es realmente complicado.


En mi empresa, todas nuestras cadenas se almacenan en archivos * .properties. Nuestras herramientas de compilación crean una copia de "prueba de idioma" de los archivos de propiedades, que reemplazan una cadena como esta:

Click here

con algo como esto:

[~~ Çļïčк н∑ѓё ~~ タウ ~~]

Ahora, cuando configuramos el idioma para "probar" en nuestros archivos de configuración, se usan estos archivos de propiedades. (Y, por supuesto, no enviamos los archivos de idioma de prueba).

Esto nos permite:

  1. Asegúrese de que los caracteres Unicode se muestren correctamente, incluido el japonés / chino / coreano.
  2. Asegúrese de que el diseño se adapte adecuadamente para los idiomas con palabras más largas (el alemán en particular tiene palabras más largas en promedio que el inglés).
  3. Encuentra cualquier cadena codificada (ya que estará en inglés sencillo).

En cuanto a la traducción real, esto es realizado por traductores profesionales, no por desarrolladores.