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.
I18n fue la Pieza que Faltaba: Permite que más del 70% de los Usuarios en el Mundo Accedan a tus Aplicaciones
Video Summary and Transcription
La charla de hoy explora el impacto de I18n y DEX para los desarrolladores, los desafíos de I18n y la importancia de comprender diferentes enfoques. Se discute cómo determinar idiomas y regiones utilizando la dirección IP, la configuración del navegador y los patrones de URL. La charla también cubre la carga de traducciones, el uso del i18xProvider y la solución de problemas como los parámetros de URL y el mantenimiento de archivos de traducción. Además, se explora la conexión con un Sistema de Gestión de Contenidos, la implementación de traducción a nivel de carpeta y la utilización de fragmentos de código para rutas dinámicas.
1. Introducción a I18n y su impacto
Hoy vamos a ver cómo I18n hace que las aplicaciones sean accesibles para más del 70% de los usuarios. Exploraremos el impacto de I18n y DEX para los desarrolladores, la lógica fundamental y cómo funciona con Remix. La internacionalización (I18n) tiene sus desafíos, incluyendo un costo de reaprendizaje y una falta de coincidencia entre el texto localizado y las claves de I18n. Sin embargo, los números hablan por sí mismos. Con 5.07 mil millones de usuarios de Internet y el inglés representando solo el 25.9%, comprender diferentes enfoques de I18n mejorará su DX actual.
Hola a todos. Gracias por ver mi charla. Mi nombre es Erys Erczeki. Soy un ingeniero de Deferral que trabaja en Storyblock. Hoy vamos a ver juntos cómo I18n tiene un impacto y hace que tus aplicaciones sean accesibles para más del 70% de los usuarios en el mundo.
Pasemos a la siguiente diapositiva. Y aquí están las tres conclusiones de mi charla. En primer lugar, vamos a ver el impacto de I18n y DEX para los desarrolladores. Y vamos a ver la lógica fundamental. Por último, vamos a ver cómo funciona con Remix.
Hay un par de notas. Esta charla es, en primer lugar, para los desarrolladores que implementan la internacionalización. En segundo lugar, Remix e I18n son temas de discusión en curso. Si estás interesado en unirte a las discusiones, aquí está el enlace. Y me aseguraré de compartir mis diapositivas en las redes sociales. Así que tendrás acceso a todas las fuentes que voy a compartir.
Así que la internacionalización. I18n es, en primer lugar, un acrónimo de internacionalización. Y veamos un poco de la experiencia del desarrollador con I18n. Así que aquí está mi amiga, Maya. Ella compartió conmigo su experiencia en Twitter diciendo que hay un costo de reaprendizaje de cómo usar la biblioteca de internacionalización cada vez. Y también hay otro problema, diría yo, que el texto localizado no coincide con las claves de I18n en las pruebas. Así que según su opinión, o no solo la suya, pero basado en eso, parece que no es la mejor DX. Así que basándonos en la DX actual de I18n que tienes, hablemos de los números y los hechos.
Así que empezando por el número total de usuarios en el mundo, en realidad hay 5.07 mil millones de usuarios que utilizan Internet. Y sorprendentemente, el inglés se utiliza solo en un 25.9% en Internet. Y Asia lidera con más de la mitad de los usuarios de Internet a nivel mundial. Así que todos los números son enormes, ¿verdad? Y no podemos simplemente ignorar estos números masivos. Y al conocer los diferentes enfoques con más opciones, en realidad se resolverá
2. Determinando Idiomas y Ejemplos de Framework
Existen tres formas de determinar idiomas y regiones: dirección IP, configuración del navegador y patrones de URL. El ejemplo de Remix I18next utiliza un paquete npm, mientras que el enfoque del sistema de gestión de contenido combina diferentes sistemas. Los archivos de configuración de I18next definen los idiomas admitidos, el idioma de respaldo y los espacios de nombres. Los archivos de configuración del lado del cliente y del servidor aseguran que las traducciones se carguen antes de la hidratación.
3. Carga de Traducción y i18xProvider
La traducción debe cargarse antes de la hidratación para garantizar que la aplicación sea interactiva. Envolver el componente del navegador de Remix con i18xProvider utiliza el gancho de React use memo para evitar el renderizado innecesario. El directorio de la aplicación contiene API como la función de carga, uso de datos de carga, JSON y cambio de idioma. La API de traducción permite cambiar entre idiomas. Sin embargo, hay algunos problemas que abordar, como los parámetros de URL, mantener los archivos de traducción y traducir los slugs.
Entonces, la primera razón por la que la traducción debe cargarse antes de la hidratación. Imagina si la traducción no se carga antes de que ocurra la hidratación, la aplicación aún no es interactiva. Los usuarios no pueden ver, ya sabes, el valor localizado. Y el otro ejemplo, si la traducción ya se cargó antes de que ocurra la hidratación, la aplicación es interactiva. Los usuarios pueden ver el contenido localizado.
Pasando al segundo, por qué envolver el componente del navegador de Remix con i18xProvider. Investigué un poco en módulos. Y esto es lo que encontré, lo que encontré, donde, ya sabes, se define i18xProvider. En realidad utiliza un gancho de React llamado use memo. Y esto, esto captura el resultado del cálculo entre renderizados. Lo que quiero decir con eso es que si los valores de i18nConfiguration y el valor predeterminado del espacio de nombres son iguales, entonces no activamos el renderizado. Pero si los valores o uno de los valores cambia, entonces solo en ese momento activamos el renderizado. Así que usemos las configuraciones en acción. Pasando al directorio de la aplicación, ya sabes, abriendo este archivo root.jsx, quiero prestar atención a las tres API. La primera se llama función de carga. Esta función de carga es una API de backend que ya está proporcionada por el sitio de Remix. Y ya está, ya sabes, conectada con el uso de datos de carga. Entonces este uso de datos de carga obtiene el local de la función de carga. Y por último, lo que hacemos es llamar a una API llamada JSON. Así que en lugar de definir nuevas cabeceras de respuesta, blah, blah, blah, puedes hacer lo mismo con solo una línea de código. Y al final, hay una función llamada use change language. Esta función actualiza el idioma de la instancia de I18n al local actual de la función de carga y el local se actualiza y I18n carga los archivos de traducción correctos. Así que veamos cómo funciona en el navegador con la última configuración. Cualquier ruta de tus archivos en la aplicación de Remix, lo que estoy haciendo es importar una API llamada use translation y establecer el valor que definimos al principio de uno de los archivos de traducción que creamos. Así que puedes ver, ya sabes, ahora cambiar entre inglés y en este caso español, puedes ver el contenido que conoces cambia de un idioma a otro. Pero si te has dado cuenta de un par de cosas, tengo tres confesiones. En primer lugar, si prestaste atención a la URL, sí, uso los parámetros de URL que quería evitar. En segundo lugar, los desarrolladores necesitamos mantener los archivos de traducción y, por último, no tradujimos los slugs. Así que para limpiar todo lo que aún no hemos logrado, vamos a
4. Conexión con CMS y Traducción a Nivel de Carpeta
En esta parte, conectamos la aplicación Remix con un Sistema de Gestión de Contenidos, específicamente utilizando el ejemplo de Storyblock. Exploramos el enfoque de traducción a nivel de carpeta, donde se utilizan diferentes carpetas para almacenar contenido localizado. Vemos cómo funciona este enfoque en el navegador y cómo implementar la lógica desde el nivel del código fuente. Además, discutimos el uso de code splats proporcionados por Remix para crear rutas dinámicas. En general, enfatizamos la importancia de la internacionalización (i18n) en la mejora del rendimiento, la interfaz de usuario (UI) y la experiencia de usuario (UX).
Comments