localization について
Xcode の String Catalog を使った iOS アプリのローカライズを支援するスキルです。翻訳、複数形、ロケール対応の書式設定、確認手順を扱います。
主な機能
- 01Xcode String Catalog の手順
- 02SwiftUI の文字列抽出
- 03複数形のガイダンス
- 04ロケール対応の書式設定
- 05疑似ローカライズと RTL のテスト
活用シーン
- 01iOS アプリへの翻訳追加
- 02翻訳文字列への文脈の追加
- 03テキスト拡張と RTL レイアウトのテスト
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ johnrogers/ claude-swift-engineering --skill localizationインストール後、Claude Code で/localizationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/formatting.mdpluralization.mdrtl-support.mdstring-catalogs.md詳細
ローカライズ
翻訳、複数形、ロケールに応じたコンテンツを管理するための、String Catalog(.xcstrings)を使用した最新の iOS ローカライズです。SwiftUI の LocalizedStringKey と String(localized:) API をサポートしています。
リファレンスの読み込みガイド
内容が必要になる可能性が少しでもある場合は、必ずリファレンスファイルを読み込んでください。 パターンを見落としたり、間違えたりするより、事前に文脈を把握しておくほうが確実です。
| リファレンス | 読み込むタイミング |
|---|---|
| String Catalogs | Xcode 15 以降の String Catalog を設定または使用するとき |
| Pluralization | 複数形の処理、stringsdict からの移行を行うとき |
| Formatting | 日付、数値、通貨をロケールに応じてフォーマットするとき |
| RTL Support | 右から左へ記述するレイアウト、意味上の方向を扱うとき |
基本的なワークフロー
- Xcode で String Catalog を作成します(File > New > String Catalog)。
String(localized:comment:)で文字列を指定するか、SwiftUI の自動抽出を使用します。- 必要に応じて、String Catalog エディタで複数形のバリエーションを追加します。
- 疑似ローカライズでテストします(Scheme > Run > Options > App Language)。
- 翻訳用にエクスポートします(File > Export Localizations)。
主なパターン
// SwiftUI - automatic localization
Text("Welcome")
Button("Continue") { }
// Explicit localization with context
let title = String(localized: "Settings", comment: "Navigation title")
// Deferred localization for custom views
struct CardView: View {
let title: LocalizedStringResource
var body: some View { Text(title) }
}
ビルド設定
- Use Compiler to Extract Swift Strings:はい
- Localization Prefers String Catalogs:はい
よくある間違い
-
ビルドフェーズに String Catalog を追加し忘れる — String Catalog を追加しても、File Inspector で「Localize」にチェックを入れ忘れると、アプリに組み込まれません。必ず Build Phases > Copy Bundle Resources を確認してください。
-
疑似ローカライズでテストしていない — 疑似ローカライズ(ドイツ語/中国語の疑似ロケール)でアプリを実行しないと、テキストのはみ出しや RTL の問題を見落とします。翻訳前に必ず疑似ローカライズでテストしてください。
-
どこかにハードコードされた文字列がある — String Catalog の外にハードコードされた文字列が一つでもあると、抽出と自動化が正しく機能しません。あらゆる場所で
String(localized:)を使用するか、遅延ローカライズにはLocalizedStringResourceを使用してください。 -
翻訳時に文脈が失われる — 翻訳者向けのコメントがないと、翻訳者は文脈を推測することになり、誤訳につながります。文字列の表示箇所と意味を説明するコメントを追加してください。
-
RTL レイアウトをテストしていない — LTR レイアウトが RTL 言語(アラビア語、ヘブライ語)でも機能すると想定すると、深刻な問題が発生します。システム言語をアラビア語に設定してテストし、意味上の方向が使用されていることを確認してください。