コンテンツにスキップ

i18n 概要

Greentic は、greentic-i18n library を通じて包括的な国際化(i18n)サポートを提供します。これにより次のことが可能になります。

  • 決定論的な文字列 identifier
  • locale ベースの message 取得
  • Adaptive Card の翻訳
  • Runtime での言語切り替え

決定論的 ID

I18nId v1 spec は、一貫性があり衝突耐性のある identifier のために BLAKE3 hashing を使用します。

複数フォーマット

JSON、YAML、PO、XLIFF の翻訳フォーマットをサポートします。

Cards 統合

Adaptive Cards を翻訳するための組み込みサポートがあります。

Runtime 切り替え

再起動なしで session ごとに言語を変更できます。

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

Adaptive Cards の場合:

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

greentic-i18n-translator を使用する場合(Codex CLI powered):

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

または、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 は次の順序で解決されます。

  1. Session-level locale(ユーザーごとに設定)
  2. Team-level default
  3. Tenant-level default
  4. Global default
# Set session locale
- id: set_language
type: state
config:
action: set
key: "locale"
value: "id" # Indonesian

任意の言語をサポートできます。よく使われる設定例:

LocaleLanguage
enEnglish
idIndonesian
jaJapanese
zhChinese
esSpanish
deGerman