Ir al contenido

Resumen de i18n

Greentic ofrece soporte integral de internacionalización (i18n) mediante la biblioteca greentic-i18n. Esto permite:

  • Identificadores de cadenas deterministas
  • Recuperación de mensajes basada en locale
  • Traducción de Adaptive Cards
  • Cambio de idioma en runtime

IDs deterministas

La especificación I18nId v1 usa hashing BLAKE3 para identificadores consistentes y resistentes a colisiones.

Multiformato

Soporte para formatos de traducción JSON, YAML, PO y XLIFF.

Integración con tarjetas

Soporte incorporado para traducir Adaptive Cards.

Cambio en runtime

Cambia de idioma por sesión sin reiniciar.

Source String: "Hello, World!"
┌─────────────────────────────────┐
│ BLAKE3 Hash Function │
│ blake3(normalize(string)) │
└─────────────────────────────────┘
I18nId: "i18n:v1:abc123def456"
┌─────────────────────────────────┐
│ Translation Lookup │
│ locale_map[id] → "Halo!" │
└─────────────────────────────────┘

Para Adaptive Cards:

Ventana de terminal
greentic-cards2pack extract-i18n --input ./cards --output i18n/en.json

Usando greentic-i18n-translator (impulsado por Codex CLI):

Ventana de terminal
greentic-i18n-translator translate --langs fr,de,ja --en i18n/en.json

O traduce automáticamente durante la generación del pack:

Ventana de terminal
greentic-cards2pack generate \
--cards ./cards --out ./pack --name demo \
--auto-translate --langs fr,de,ja
i18n:
default_locale: "en"
locales:
en: "translations/en.json"
id: "translations/id.json"
ja: "translations/ja.json"
- id: greet
type: reply
config:
message_key: "i18n:v1:abc123" # Resolved based on session locale

El locale se resuelve en este orden:

  1. Locale a nivel de sesión (establecido por usuario)
  2. Predeterminado a nivel de equipo
  3. Predeterminado a nivel de tenant
  4. Predeterminado global
# Set session locale
- id: set_language
type: state
config:
action: set
key: "locale"
value: "id" # Indonesian

Se admite cualquier idioma. Configuraciones comunes:

LocaleIdioma
enInglés
idIndonesio
jaJaponés
zhChino
esEspañol
deAlemán