Lewati ke konten

Ringkasan i18n

Greentic menyediakan dukungan internasionalisasi (i18n) yang komprehensif melalui library greentic-i18n. Library ini memungkinkan:

  • Identifier string yang deterministik
  • Pengambilan pesan berbasis locale
  • Penerjemahan Adaptive Card
  • Pergantian bahasa saat runtime

Deterministic IDs

Spesifikasi I18nId v1 menggunakan hashing BLAKE3 untuk identifier yang konsisten dan tahan benturan.

Multi-Format

Dukungan untuk format terjemahan JSON, YAML, PO, dan XLIFF.

Cards Integration

Dukungan bawaan untuk menerjemahkan Adaptive Cards.

Runtime Switching

Ubah bahasa per session tanpa restart.

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

Untuk Adaptive Cards:

Terminal window
greentic-cards2pack extract-i18n --input ./cards --output i18n/en.json

Menggunakan greentic-i18n-translator (didukung oleh Codex CLI):

Terminal window
greentic-i18n-translator translate --langs fr,de,ja --en i18n/en.json

Atau lakukan auto-translate saat generate pack:

Terminal window
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

Locale di-resolve dengan urutan berikut:

  1. Locale level session (ditetapkan per pengguna)
  2. Default level team
  3. Default level tenant
  4. Default global
# Set session locale
- id: set_language
type: state
config:
action: set
key: "locale"
value: "id" # Indonesian

Bahasa apa pun didukung. Konfigurasi yang umum:

LocaleLanguage
enInggris
idIndonesia
jaJepang
zhTionghoa
esSpanyol
deJerman