I18n localization
アプリケーションの国際化(i18n)・ローカライゼーション(l10n)を設計・実装するスキル。海外展開を検討している・多言語対応を後付けで追加しようとしている・ハードコード文字列の外部化が必要な時に使う。From its SKILL.md
npx -y skills add tdyzzsp47/claude-skills --skill i18n-localizationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
10.3 KB, ~4.0k tokens by cl100k_base, as published. Nobody here has run it
国際化(i18n)・ローカライゼーション(l10n)
目的
「後からやれば良い」という先送りが最大のコスト要因になる。海外展開の可能性が少しでもあれば最初から文字列をキー化し、フォーマット・レイアウト・翻訳ワークフローを設計する。一方で展開予定が明確にゼロなら過剰対応はしない([[mvp-development]] のトレードオフ)。
使うタイミング
- 海外ロケールへの展開を計画している・可能性がある
- ハードコードされた文字列を後付けで外部化しなければならない
- 翻訳フローが属人化していて管理できていない
- 既存i18n実装のレビュー・改善をしたい
- 新機能追加時のi18n対応方針を決めたい
進め方
- 展開判断: 対応ロケールと優先度を決定する。「日本語のみ」「英語+日本語」「将来的にアジア圏」等、現時点の計画を明文化する
- キー設計: 翻訳キーの命名規約を決め、既存コードのハードコード文字列を洗い出す
- フォーマット方針の確定: 日付・数値・通貨の表示フォーマット、タイムゾーン戦略を決める
- 複数形・変数の規約確定: ICU MessageFormat 等の標準機構を採用するか決め、文字列連結を禁止するルールを周知する
- UIレイアウトの検証: テキスト膨張・RTL対応の要否を確認し、各ロケールでレイアウト崩れがないことを確かめる
- 翻訳ワークフロー構築: 機械翻訳/LLM下訳 → ネイティブレビュー → 用語集更新のフローを整備する
- CI組み込み: 未翻訳キー検出・翻訳ファイルの lint をパイプラインに追加する([[cicd-deployment]])
- ローカライズ優先順位の決定: UI文字列 → ストア掲載文 → ヘルプ・ドキュメント → サポート対応の順で進める。全部一気にやらない
設計の要点
翻訳キーの命名規約
- 画面・機能ベースのプレフィックスを付ける:
checkout.confirm_button、auth.login_error.invalid_password - 動的な文字列は変数を含むキーで管理:
search.result_count→"{count, plural, one {# 件} other {# 件}}" - キーは英語小文字・スネークケース・ドット区切りで統一する
- UIラベルと通知メッセージなど用途が異なるものは名前空間を分ける
変数と複数形
- 文字列連結は絶対禁止:
"件の" + count + "結果"は語順が言語で変わるため破綻する - テンプレート内挿入を使う:
t('search.results', { count })→"{count} results found" - 複数形・性数一致は ICU MessageFormat または対象フレームワークの標準機構で処理する
- 複数形パターンが多い言語(ロシア語・アラビア語等)は設計初期に考慮する
フォーマット
- 日付・時刻・数値・通貨は
Intl等のロケールAPIに委譲し、自前フォーマット実装を禁止する - タイムゾーンはUTCで保存し、表示時にロケールのタイムゾーンへ変換する([[database-design]])
- 通貨は「金額(整数・小数の精度を保持) + 通貨コード(ISO 4217)」で保持し、表示時にフォーマットする
UIレイアウト
- テキスト膨張を見込む: 英→独は約1.3倍、日→英でも語句によっては伸びる。ボタン・ラベルの幅はフレキシブルに設計する
- RTL(アラビア語・ヘブライ語等)対応の要否を展開計画策定時に決定する。後から追加すると改修コストが高い
- CJK(中国語・日本語・韓国語)フォントの指定漏れに注意する([[screen-design]])
- 英語のみのスクリーンショットでレイアウト確認を完了させない
翻訳ワークフロー
- 機械翻訳/LLMによる下訳 → ネイティブレビュー → 本番投入の3ステップを守る
- 翻訳者へのコンテキスト提供: スクリーンショット・文字数制限・用語集・前後の文脈を必ず共有する
- 用語集(glossary)を管理し、製品固有の名称・動詞の訳語を統一する
- 翻訳ファイルはコードと同じくレビュー対象とし、PRに含める
- フォールバック言語(通常は英語)を設定し、未翻訳キーが直接表示されないようにする
法規制
- 対象国の特商法相当の表記・プライバシーポリシーの現地語対応が必要な場合がある([[legal-compliance]])
成果物テンプレート
i18n設計シート
## i18n設計シート
### 対応ロケールと優先度
| ロケール | 言語 | 優先度 | 対応フェーズ |
|----------|------|--------|------------|
| ja | 日本語 | P0 | Phase 1 |
| en | 英語 | P0 | Phase 1 |
| zh-TW | 繁体字中国語 | P1 | Phase 2 |
### キー命名規約
- プレフィックス: <画面名>.<コンポーネント名>.<要素>
- 例: `checkout.order_summary.total_label`
- 名前空間: `common`(共通)、`<feature>`(機能別)
### 変数・複数形の規約
- テンプレートエンジン: ICU MessageFormat
- 変数形式: `{variableName}`
- 複数形: `{count, plural, one {# item} other {# items}}`
- 文字列連結: 禁止(eslint-plugin-i18n 等で強制)
### フォーマット方針
- 日付: `Intl.DateTimeFormat` / ライブラリの locale オプション
- 数値: `Intl.NumberFormat`
- 通貨: `Intl.NumberFormat` + ISO 4217 通貨コード
- タイムゾーン: UTC保存 / 表示時変換
### RTL対応
- 要/不要: [要/不要]
- 対象言語: [アラビア語 / ヘブライ語 / 等]
### 翻訳フロー
1. 開発者が英語キーを追加してPRをマージ
2. LLMによる下訳を生成
3. ネイティブレビュアーが確認・修正
4. 翻訳ファイルをPRで追加・レビュー
5. CI で未翻訳キー検出 → ブロック
### 用語集の場所
- リポジトリ: `docs/i18n/glossary.md`
- 管理ツール: [Crowdin / Lokalise / スプレッドシート 等]
### フォールバック言語
- デフォルト: `en`
チェックリスト
- 対応ロケールと優先度を決定・文書化したか
- 翻訳キーの命名規約を定めたか
- 文字列連結を禁止するルール・lintルールを設定したか
- 複数形・変数はICU MessageFormat等の標準機構で処理しているか
- 日付・時刻・数値・通貨をIntl等のロケールAPIで処理しているか
- タイムゾーンをUTCで保存し表示時変換しているか
- テキスト膨張を考慮したUIレイアウトになっているか
- RTL対応の要否を決定したか
- 翻訳ファイルをコードレビューの対象に含めているか
- 未翻訳キーの検出をCIに組み込んだか
- フォールバック言語を設定したか
- 翻訳者にコンテキスト(スクリーンショット・文字数制限・用語集)を提供しているか
- 用語集を作成・管理しているか
- 対象国の法規制対応(特商法等)を確認したか
アンチパターン
- 文字列連結で文を組み立てる:
"件の" + count + "結果"は語順が変わる言語で破綻する。テンプレート内挿入を使え - コードとリソースへのハードコード混在: 翻訳キーを使わず文字列リテラルが残ると漏れが発生する。lintで検出する
- 英語のみでレイアウト確認して完了: テキスト膨張・CJKフォント・RTLで表示が崩壊する。複数ロケールで目視確認する
- 未翻訳キーをそのままユーザーに表示:
checkout.total_labelが画面に出るのは致命的。フォールバック言語を必ず設定する - 機械翻訳をレビューなしで本番投入: ニュアンスのズレ・敬語の誤り・用語の不統一が発生する。ネイティブレビューを省略しない
- 全言語を同時にローカライズしようとする: リソースが分散する。優先順位をつけてフェーズを分ける
- 翻訳ファイルをレビュー対象外にする: 誤訳・キー漏れ・不整合がそのまま本番に入る
モデル委譲ガイド
共通原則は [[orchestration]] を参照。
| 役割 | 担当 | 具体的な使い方 |
|---|---|---|
| 司令塔(メインモデル) | 対応ロケールの判断・キー設計方針の決定・全体統合 | i18n設計シートを作成し、各エージェントへタスクを割り当てる。設計の判断(RTL要否・翻訳フロー選定等)を下す |
| Opus相当 | 複雑な複数形・性数一致の文法設計・言語特有の例外対応 | ICU MessageFormatのパターン設計や、スラブ語系・アラビア語の複数形ルール等の複雑な文法仕様を深く分析させる |
| Sonnet相当 | 文字列の外部化作業・翻訳ドラフト・ハードコードの洗い出しと置換 | コードベースをスキャンして翻訳キーへの置換を実施。LLMによる翻訳下訳を生成。既存ファイルへのキー追加作業を担当させる |
| Haiku相当 | ハードコード文字列の検出 | grepやASTベースの静的解析でハードコード文字列を高速スキャンさせる。大量ファイルへの反復作業に適している |
関連スキル
- [[orchestration]] — 多エージェント並列実行の共通原則
- [[mvp-development]] — i18n対応の優先度トレードオフ
- [[screen-design]] — テキスト膨張・RTL・CJKフォントを考慮したUI設計
- [[database-design]] — タイムゾーン・通貨の保存設計
- [[cicd-deployment]] — 未翻訳キー検出のCI組み込み
- [[legal-compliance]] — 対象国の法規制・表記要件
- [[accessibility]] — 多言語対応とアクセシビリティの交差点
- [[documentation]] — 用語集・翻訳ガイドラインの整備
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.