i18n について
i18n は、翻訳を管理する開発者向けの LobeHub 国際化ガイドです。キーの命名規則や編集手順、生成される言語ファイルの扱いを説明します。
主な機能
- 01英語を既定言語とする react-i18next
- 02ドット区切りのフラットなキー
- 03lobe-i18n による翻訳生成
- 04日次の自動翻訳ワークフロー
- 05既存キーの文言変更への対応
活用シーン
- 01機能のローカライズキーを追加
- 02簡体字中国語と英語のプレビュー
- 03文言変更後の翻訳を更新
- 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': '数据备份',
ワークフロー
packages/locales/src/default/{namespace}.tsにキーを追加します。packages/locales/src/default/index.tsで新しいネームスペースをエクスポートします。- 開発用プレビューでは、
locales/zh-CN/{namespace}.jsonとlocales/en-US/{namespace}.jsonを手動で翻訳します。 - それ以外のすべてのロケールは
.github/workflows/auto-i18n.ymlに任せます。このワークフローは毎日実行され、自動翻訳のプルリクエストを作成します。 - ブランチで翻訳がすぐに必要な場合に限り、
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
コメント
Markdown 対応