Introducción
¿Porqué querría usarla?
Svelte-intl-precompile es una librería de i18n para apps Svelte que busca proporcionar todas las funcionalidades que tu app puede necesitar con el mínimo impacto tanto en el tamaño de tu app como en su velocidad de ejecución
Para lograrlo usa una solución diferente a la mayoría de librerías de internacionalización. Similarmente a como Svelte.js analiza y comprende tu código y durante la compilación lo tranforma en javascript compacto y eficiente, esta librería inspeciona tus traducciones escritas en el ICU message syntax y las compila a funciones pequeñas y optimizadas.
Si usas todas y cada una de las funcionalidades soportadas por la sintaxis ICU añadirá aproximadamente 2kb a tu app tras el minificado y la compresión. Si solamente usas unas pocas de las funcionalidades esa cifra puede bajar hasta tan solo 1kb
Dado que no tiene que parsear y tokenizar tus traducciones en el navegador, es además más rápido. Como 4 veces más rápido renderizando traducciones la primera vez, y alrededor del 50% más rápido renderizando traducciones que ya se ha encontrado antes.
¿¡Qué!? Enséñame el código
Aquí tienes, pruébalo. Pega tus propias traducciones y observa el resultado de la compilación
{ "header": "Svelte Intl Precompile is {adjective}", "posted-on": "Posted on {postDate, date, long}", "invite-friend": "{name} has joined Svelte! Give {gender, select, male {him} female {her} other {your friend}} a warm welcome!", "friends-msg": "You have {count, plural, zero {no friend} one {just # friend} other {# friends}}", "show-friend-profile": "Click to show {gender, select, male {his profile} female {her profile} other {the profile}}" }458 bytes
0 bytes (100% smaller than the source translations)
¿Qué funcionalidades soporta?
Todas las funcionalidades de la sintaxis ICU están soportadas.
Tiene una API casi completamente compatible con svelte-i18n , otra librería de internacionalización muy popular y bien diseñada para Svelte.js
Las principales funcionalidades incluyen:
- Traducciones con interpolaciones, seleccionar ramas de subtraducciones en base a valores y el resto de funcionalidades de ICU.
- Formatear fechas, tiempos, números, ordinales y divisas, todo apoyándose en la API Intl, presente en todos los navegadores modernos y en Node.
- Una API diseñada para Svelte.js que poporciona unos convenientes stores que actualizan sus valores automáticamente cuando el idioma seleccionado o las traducciones cargadas se actualizan.
- Una variedad de funciones para cargar paquetes de idiomas asíncronamente cuando sea necesario, utilidades para extraer el idioma predeterminado de las cabeceras de la petición HTTP en modo SSR
- Tree-shaking completo de todas las utilidades arriba mencionadas que tu aplicación no use