mcpField
I
i18n

i18n

github.com/lobehub開発83.6k4.6k 回インストール今日更新
リポジトリ

i18n について

i18n は、翻訳を管理する開発者向けの LobeHub 国際化ガイドです。キーの命名規則や編集手順、生成される言語ファイルの扱いを説明します。

主な機能

  1. 01英語を既定言語とする react-i18next
  2. 02ドット区切りのフラットなキー
  3. 03lobe-i18n による翻訳生成
  4. 04日次の自動翻訳ワークフロー
  5. 05既存キーの文言変更への対応

活用シーン

  1. 01機能のローカライズキーを追加
  2. 02簡体字中国語と英語のプレビュー
  3. 03文言変更後の翻訳を更新
  4. 04生成済みロケールの古い訳を調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lobehub/lobehub --skill i18n

インストール後、Claude Code で/i18nを入力して読み込まれたか確認します。

詳細

LobeHub の国際化ガイド

  • デフォルト言語:英語(en-US)
  • フレームワーク:react-i18next
  • 編集するのは packages/locales/src/default/ 内のファイルのみです - locales/ 内の JSON に翻訳を手動で記述しないでください(en-US/zh-CN のプレビューを除く)。生成されたロケールは、既存のキーの英語テキストを変更するで説明しているキーの削除を除き、lobe-i18n を通じてのみ変更してください。
  • デフォルトでは、生成されたロケールは毎日の auto-i18n.yml ワークフローに任せてください。すぐに必要な場合に限り、bun run i18n を手動で実行してください。

キーの命名規則

ドット記法を使ったフラットなキー(ネストされたオブジェクトではありません):

// ✅ Correct
export default {
  'alert.cloud.action': '立即体验',
  'sync.actions.sync': '立即同步',
  'sync.status.ready': '已连接',
};

// ❌ Avoid nested objects
export default {
  alert: { cloud: { action: '...' } },
};

パターン: {feature}.{context}.{action|status}

パラメーター: {{variableName}} 形式を使用します。

'alert.cloud.desc': '我们提供 {{credit}} 额度积分',

キーの競合を避ける:

// ❌ Conflict
'clientDB.solve': '自助解决',
'clientDB.solve.backup.title': '数据备份',

// ✅ Solution
'clientDB.solve.action': '自助解决',
'clientDB.solve.backup.title': '数据备份',

ワークフロー

  1. packages/locales/src/default/{namespace}.ts にキーを追加します。
  2. packages/locales/src/default/index.ts で新しいネームスペースをエクスポートします。
  3. 開発用プレビューでは、locales/zh-CN/{namespace}.json と locales/en-US/{namespace}.json を手動で翻訳します。
  4. それ以外のすべてのロケールは .github/workflows/auto-i18n.yml に任せます。このワークフローは毎日実行され、自動翻訳のプルリクエストを作成します。
  5. ブランチで翻訳がすぐに必要な場合に限り、bun run i18n を手動で実行します。処理に時間がかかり、OPENAI_API_KEY が必要です。
既存のキーの英語テキストを変更する

lobe-i18n(毎日のワークフローと bun run i18n の両方)は、ロケールに存在しないキーのみを翻訳します。英語の値が変更されたキーを再翻訳することはないため、既存の値を編集しても、生成されたすべてのロケールは古いテキストのままになります(たとえば、拡張された settingsSearch.tabKeywords.* は、16 のロケールで数週間にわたり古いままでした)。

既存のキーの意味や内容が変わる場合(単なる誤字の修正ではない場合)は、次のいずれかを行ってください。

  • キーの名前を変更します。すべてのロケールでキーが欠落した状態になり、新たに翻訳されます。
  • 同じプルリクエスト内で再翻訳します。生成されたすべての locales/*/{namespace}.json からキーを削除し(en-US/zh-CN は除く)、bun run i18n を実行して、そのキーのみをコミットします。この実行では、毎日のワークフローのプルリクエストに含めるべき、無関係な欠落キーも補完されます。
  • 古い翻訳のままでも次回の毎日の実行まで問題がない場合は、生成されたロケールからキーを削除して英語にフォールバックさせ、ワークフローで再翻訳されるようにします。ユーザーが自身の言語で入力する検索キーワードなど、ローカライズされたテキストが重要な役割を果たす場合は、この方法を使わないでください。

使用方法

import { useTranslation } from 'react-i18next';

const { t } = useTranslation('common');

t('newFeature.title');
t('alert.cloud.desc', { credit: '1000' });

// Multiple namespaces
const { t } = useTranslation(['common', 'chat']);
t('common:save');

よく使うネームスペース

特によく使うもの: common(共通 UI)、chat(チャット機能)、setting(設定)

その他:auth、changelog、components、discover、editor、electron、error、file、hotkey、knowledgeBase、memory、models、plugin、portal、providers、tool、topic

コメント