Construyendo aplicaciones JS con internacionalización (i18n) en mente

Rate this content
Bookmark

En Adobe construimos productos para el mundo, esta masterclass proporcionará una visión general de las mejores prácticas de internacionalización (i18n), globalización (g11n) y localización (l10n). Por qué son importantes y cómo implementarlas en el diseño, la experiencia de usuario y en cualquier código JS, utilizando ejemplos de JS puro y recomendaciones de las mejores bibliotecas de código abierto.

FAQ

La internacionalización es un proceso de ingeniería en el que se preparan las aplicaciones para que puedan ser fácilmente adaptadas a diferentes idiomas y regiones sin requerir cambios de ingeniería. Involucra la implementación de ciertas prácticas en el código para manejar múltiples idiomas, formatos de datos, y otras variaciones locales.

La localización se refiere a la adaptación de un producto o contenido para satisfacer las necesidades y preferencias de usuarios en diferentes localidades, incluyendo la traducción del texto y ajustes culturales. La globalización engloba tanto la internacionalización como la localización, siendo un proceso más amplio que prepara el producto para su lanzamiento global.

Twitter ha implementado una solución innovadora para la internacionalización del nombre de usuario al permitir que los usuarios ingresen su nombre en su guión y sintaxis nativa sin separar explícitamente los nombres y apellidos, lo que facilita la inclusión de diferentes formatos de nombres globalmente.

Unicode es un estándar de codificación de caracteres que permite la representación y manipulación consistente de textos en cualquier sistema de escritura del mundo. Es crucial para la internacionalización porque asegura que los caracteres de todos los idiomas se muestren y procesen correctamente en las aplicaciones.

JavaScript proporciona el método `normalize` en `String.prototype` que permite normalizar caracteres combinados a su forma canónica en Unicode, facilitando la manipulación y visualización correcta de estos caracteres en las aplicaciones.

Una práctica recomendada es envolver todas las cadenas de texto en un objeto para la traducción, utilizando herramientas y bibliotecas que ayuden a manejar múltiples idiomas y localizaciones, como I18next o GlobalizeJS. Esto permite una gestión centralizada y más eficiente de los recursos de idioma.

UTF-8 es una forma de codificación de caracteres Unicode que usa de 1 a 4 bytes para representar un carácter. Es el formato más común en la web debido a su eficiencia en la representación de cualquier carácter del estándar Unicode, siendo crucial para soportar múltiples idiomas y caracteres especiales en sitios web.

Probar las aplicaciones en varios idiomas asegura que los caracteres específicos de cada idioma se manejen correctamente y que la interfaz de usuario sea adecuada y funcional para diferentes audiencias globales. Esto ayuda a identificar y resolver problemas de localización y codificación antes del lanzamiento.

La internacionalización puede afectar el diseño de interfaces al requerir que los diseños sean flexibles para acomodar textos de diferentes longitudes y orientaciones, como textos que se expanden al ser traducidos o interfaces que deben adaptarse a idiomas que se leen de derecha a izquierda.

Naomi Meyer
Naomi Meyer
21 min
20 Jun, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta masterclass aborda la construcción de aplicaciones JavaScript con la internacionalización en mente, abordando problemas como el manejo de diferentes formatos de nombres, el uso de Unicode para la compatibilidad, errores de codificación de caracteres, soluciones de localización y traducción, pruebas en diferentes idiomas, acomodar el texto traducido en los diseños, consideraciones culturales y la importancia de habilitar diferentes idiomas para los usuarios. El orador también menciona varias herramientas de código abierto para la internacionalización. La masterclass concluye con un recordatorio de evitar suposiciones y abrazar la diversidad en la World Wide Web.

1. Introducción a la Internacionalización

Short description:

¡Hola, JS Nation! ¡Gracias por unirse a mí hoy! Estoy muy emocionado de compartir con ustedes algunas ideas sobre cómo construir aplicaciones JavaScript teniendo en cuenta la internacionalización. Mi nombre es Naomi Meier y trabajo en el equipo de ingeniería de globalización en Adobe, donde me dedico a la ingeniería de internacionalización para muchas aplicaciones de Adobe diferentes. Comencemos con un ejemplo de nombre. Esta es una cadena muy común que vemos a menudo en inglés, donde las personas se presentan con la sintaxis de 'Hola, mi nombre es Naomi Meyer'. Este es mi primer nombre o nombre de pila en azul, seguido de mi apellido, nombre de familia o apellido. Si tomamos esta cadena simple y la traducimos al japonés, hindi, hebreo, árabe, coreano y chino, podemos ver que la sintaxis de nombre de pila, apellido a veces se invierte. A veces es apellido, nombre de pila y, obviamente, a veces el texto se lee de izquierda a derecha. A veces el texto se lee de derecha a izquierda. Y esto es solo una representación visual de cómo podemos identificar el nombre de un usuario de manera diferente en diferentes ubicaciones. Así es como Google resuelve ese problema cuando creas una cuenta de Google, ingresas un nombre de pila y un apellido como campos de datos distintos. Pero Twitter recientemente encontró una gran solución a este problema donde tienen un campo de nombre simple donde un usuario puede ingresar su nombre y su guión nativo y su sintaxis nativa de nombre de pila, apellido, apellido, nombre de pila. Y se almacenará como un campo distinto. Creo que esta es una solución realmente genial para el problema de la internacionalización del nombre de usuario.

¡Hola, JS Nation! ¡Gracias por unirse a mí hoy! Estoy muy emocionado de compartir con ustedes algunas ideas sobre cómo construir aplicaciones JavaScript teniendo en cuenta la internacionalización. Mi nombre es Naomi Meier y trabajo en el equipo de ingeniería de globalización en Adobe, donde me dedico a la ingeniería de internacionalización para muchas aplicaciones de Adobe diferentes.

Entonces, aquí es donde puedes encontrarme en línea, en mi Twitter y mi sitio web. Y si hay algo en lo que te sientas apasionado, por favor avísame. Me encantaría continuar esta conversación en línea. Así que aquí está nuestra agenda para hoy. Voy a comenzar con un ejemplo de nombre y luego pasar a algunas definiciones de localización, internacionalización, globalización, solo para nivelar y asegurarnos de que todos estemos en la misma página. Y luego pasaré a mis cinco mejores consejos para evitar los errores más comunes que encontramos al internacionalizar JavaScript. Y luego terminaré con la culturalización. En general, el objetivo de esta presentación general es animarlos a todos a crear experiencias igualmente utilizables, relevantes y significativas para los usuarios de todo el mundo, y realmente amplificar las voces de nuestros usuarios globales. Así que me gustaría invitarlos y animarlos, ya saben, mis compañeros codificadores de JS, a salir y realmente poner el mundo en la World Wide Web. Así que hablemos de cómo podemos hacer eso.

Comencemos con un ejemplo de nombre. Entonces, esto es, ya saben, una cadena muy común que vemos a menudo en inglés, donde las personas se presentan con la sintaxis de 'Hola, mi nombre es Naomi Meyer'. Este es mi primer nombre o nombre de pila en azul, seguido de mi apellido, nombre de familia o apellido. Si tomamos esta cadena simple y la traducimos al japonés, hindi, hebreo, árabe, coreano y chino, podemos ver que la sintaxis de nombre de pila, apellido a veces se invierte. A veces es apellido, nombre de pila y, obviamente, a veces el texto se lee de izquierda a derecha. A veces el texto se lee de derecha a izquierda. Y esto es solo una representación visual de cómo podemos identificar el nombre de un usuario de manera diferente en diferentes ubicaciones. Y este es un problema de alto nivel que estamos tratando de resolver con internacionalización. Mi nombre es un nombre simple de inglés estadounidense. Aquí hay un ejemplo de algunos otros nombres de Brasil y portugués, Rusia e India. Nombres comunes y cómo no encajan fácilmente en este paradigma simple de nombre de pila, apellido. Y algunos de los desafíos a los que nos enfrentamos aquí. Así es como Google resuelve ese problema cuando creas una cuenta de Google, ingresas un nombre de pila y un apellido como campos de datos distintos. Entonces, los usuarios de regiones e idiomas que no siguen necesariamente ese paradigma tendrán problemas. Pero Twitter recientemente encontró una gran solución a este problema donde tienen simplemente un campo de nombre donde un usuario puede ingresar su nombre y su guión nativo y su sintaxis nativa de nombre de pila, apellido, apellido, nombre de pila. Y se almacenará como un campo distinto. Creo que esta es una solución realmente genial para el problema de la internacionalización del nombre de usuario. Ahora que nuestras mentes están pensando más profundamente en la internacionalización, pasemos a algunas definiciones.

2. Language Granularity and Unicode

Short description:

Cuando se trata de lenguaje, existen diferentes niveles de granularidad: traducción, localización, internacionalización y globalización. La cultura juega un papel importante en cómo los usuarios interactúan con las experiencias digitales. Es crucial expandir el contenido digital a diferentes idiomas. El primer consejo es utilizar Unicode en todas partes, asegurando la compatibilidad entre diferentes sistemas y lenguajes de programación.

Entonces, ¿de qué estamos hablando aquí? Cuando comenzamos en el nivel más granular, tenemos la traducción donde, ya sabes, hello se convierte en ola, konichiwa, bonjour. Luego, el siguiente nivel de granularidad sería la localización. Y eso es, ya sabes, en inglés escribimos localización con Z en Estados Unidos. Pero si vas al Reino Unido, localización se escribe con una S. Y ambos son inglés, pero son diferentes variaciones dialectales regionales. Así que ese es el nivel de localidad al que llegamos con la localización.

El siguiente nivel de granularidad es la internationalization. Y esto es más en el lado de la ingeniería, donde envolvemos la aplicación en herramientas para internationalization para que puedan ser enviadas en forms traducidos. Aquí es donde entramos en los tubos, donde si un software es una casa, alcanzaremos los tubos, los cambiaremos. Y crearemos un sistema que pueda ser fácilmente traducido. Luego, el siguiente nivel de granularidad es la globalización, y todos estos caen bajo el paraguas de la globalización o G11N. Y es importante tener en cuenta que estos son acrónimos numéricos. Entonces, para la globalización, tomamos el primer carácter G, seguido del número de caracteres y luego el último carácter N. Y cuanto más pienso en estas grandes ideas, la cultura está profundamente arraigada en nuestro pensamiento patterns y afecta cómo nuestros usuarios interactúan y se benefician de las experiencias digitales. Entonces, la internationalization o globalización realmente van más allá de la traducción. Y al reconocer las características culturales y celebrar las diferencias, estamos creando con innovation y accesibilidad y construyendo productos para todo el mundo de usuarios.

Entonces, si miramos estas dos visualizaciones, podemos ver que la mayoría de las personas en la Tierra no hablan inglés como primer idioma. Pero podemos ver que la mayoría del contenido digital está en inglés en este momento. Así que esta es realmente una oportunidad para nosotros de expandir el contenido digital en línea a diferentes idiomas para usuarios de todo el mundo que lo usen en su lengua materna. Así que hablemos de los cinco principales tips sobre cómo podemos hacer eso. Así que el primer consejo es utilizar Unicode en todas partes. Entonces, para empezar, ¿qué es Unicode? Estoy seguro de que todos estamos muy familiarizados con ver esta línea en nuestras etiquetas HTML donde decimos meta char set equals UTF 8 para la web. Entonces, ¿qué es UTF? UTF es el formato de transformación Unicode. Unicode, ¿verdad? Así es como se representa UTF en 8, 16 y 32 bits, para el carácter A y el carácter O, en japonés. Y UTF 8 es el más común en la web. UTF 16 se utiliza en Java y Windows, y 32 se utiliza en Linux y varios sistemas Unix. Así que UTF es realmente genial porque es reversible, y las conversiones entre todos están basadas algorítmicamente y son rápidas y evitan la pérdida de información en el viaje de ida y vuelta. Entonces sabemos que muchos lenguajes de programación utilizarán directamente una de estas codificaciones UTF. Pero como ingenieros de JavaScript, ¿qué UTF utiliza JavaScript? Esto es realmente importante cuando pensamos en la codificación. Y ya sea que estés en Reactor, Angular, View o Spelt, todos están codificados de la misma manera bajo el capó.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Cómo localizar y personalizar contenido con Sanity.io y Next.js
React Advanced Conference 2021React Advanced Conference 2021
8 min
Cómo localizar y personalizar contenido con Sanity.io y Next.js
Estructurar tu contenido con Sanity.io significa que puedes consultar el contenido basado en señales de tus visitantes, como su ubicación. La personalización es un problema complicado con sitios estáticos y el jamstack, esta demostración te mostrará cómo se puede hacer con Sanity.io, Next.js y Vercel.
End-to-end i18n
React Advanced Conference 2021React Advanced Conference 2021
26 min
End-to-end i18n
Existen algunas bibliotecas excelentes que ayudan con la internacionalización en React, pero sorprendentemente hay poca orientación sobre cómo manejar la internacionalización de principio a fin. En esta masterclass discutiremos las mejores prácticas y consejos prácticos para manejar las traducciones en React. Hablaremos sobre cómo extraer cadenas de texto de su código, cómo gestionar archivos de traducción, cómo pensar en el mantenimiento a largo plazo de sus traducciones e incluso cómo evitar errores comunes en los que suelen caer los desarrolladores que solo hablan un idioma.
Internacionalizando React
React Summit Remote Edition 2021React Summit Remote Edition 2021
29 min
Internacionalizando React
Aprender 100 idiomas diferentes es un desafío, pero diseñar tu aplicación de React para admitir 100 idiomas no tiene por qué serlo. A medida que tu aplicación web crece y alcanza una audiencia global, la funcionalidad multilingüe se vuelve cada vez más esencial. Entonces, ¿cómo diseñas tu código de manera que sea lo suficientemente flexible como para incluir a todos tus usuarios internacionales? En esta charla, exploraremos qué significa y cómo se ve construir una aplicación de React que admita internacionalización (i18n). Aprenderás varias estrategias diferentes para hacer que tu aplicación sea a prueba de locales con contextos de React y hooks personalizados.
Codificación de emojis, Unicode e internacionalización
JSNation Live 2020JSNation Live 2020
34 min
Codificación de emojis, Unicode e internacionalización
¿Por qué '👩🏿‍🎤'.length = 7? ¿Es JavaScript UTF-8 o UTF-16? ¿Qué sucede bajo el capó cuando estableces ? ¿Alguna vez te has preguntado cómo se codifican los emojis y los lenguajes de escritura complejos para funcionar correctamente en navegadores y dispositivos, para miles de millones de personas en todo el mundo? ¿O cómo se introducen y aprueban nuevos emojis? ¿Alguna vez has visto uno de estos: □ � caracteres de glifo 'especiales' antes y quieres más información sobre por qué podrían aparecer y cómo evitarlos en el futuro? ¡Hablemos sobre la codificación Unicode en JavaScript y en la World Wide Web! Repasaremos las mejores prácticas, los problemas comunes y proporcionaremos recursos para aprender más, ¡incluso dónde ir si quieres enviar una nueva propuesta de emoji! :)
Localización para casos de uso del mundo real: Aprendizajes clave de la incorporación de marcas globales
React Summit 2022React Summit 2022
8 min
Localización para casos de uso del mundo real: Aprendizajes clave de la incorporación de marcas globales
i18n no es fácil, pero con una planificación cuidadosa de tu modelo de contenido te mostraré cómo estructurar la configuración, la autoría y la consulta de contenido localizado. Cubriremos documentos traducidos completos o parciales, la diferencia entre contenido específico del mercado y del idioma, formas de autoría en un CMS como Sanity y formas de consultarlo en frontends como Next.js y Remix.
I18n fue la Pieza que Faltaba: Permite que más del 70% de los Usuarios en el Mundo Accedan a tus Aplicaciones
JSNation 2023JSNation 2023
13 min
I18n fue la Pieza que Faltaba: Permite que más del 70% de los Usuarios en el Mundo Accedan a tus Aplicaciones
La accesibilidad, una mejor DX y el rendimiento reciben mucha atención ya que mejoran significativamente la UX. Además, brinda satisfacción a los desarrolladores al ver las mejoras significativas. Pero, ¿qué hay de la internacionalización? Un dato curioso: más del 70% de los usuarios en el mundo acceden a contenido no inglés. En esta charla, te mostraré más datos sorprendentes sobre la internacionalización y cuáles son los enfoques escalables. Verás ejemplos con bibliotecas para frameworks con diferentes lógicas para implementar diferentes diseños de internacionalización.

Workshops on related topic

Localizando tu sitio web de Remix
React Summit 2023React Summit 2023
154 min
Localizando tu sitio web de Remix
WorkshopFree
Harshil Agrawal
Harshil Agrawal
El contenido localizado te ayuda a conectarte con tu audiencia en su idioma preferido. No solo te ayuda a hacer crecer tu negocio, sino que también ayuda a tu audiencia a comprender mejor tus ofertas. En este masterclass, obtendrás una introducción a la localización y aprenderás cómo implementar la localización en tu sitio web de Remix alimentado por Contentful.
Tabla de contenidos:- Introducción a la localización- Introducción a Contentful- Localización en Contentful- Introducción a Remix- Configuración de un nuevo proyecto de Remix- Renderización de contenido en el sitio web- Implementación de la localización en el sitio web de Remix- Recapitulación- Próximos pasos