iOS i18n
iOSローカライゼーション:ネイティブSwiftとSwiftUIの翻訳ワークフロー
iOSはString Catalogs(Xcode 15以降)と.strings/.stringsdictファイルを使用して翻訳を管理します。SwiftUIビューはText()イニシャライザによって自動的にローカライズされ、Xcodeが翻訳者向けのXLIFFへの抽出、複数形規則、エクスポートを処理します。String Catalogsを使えば、サポートされているすべてのロケールにわたって翻訳状態を追跡するビジュアルエディタが利用できます。
iOSローカライゼーション機能
ビジュアル翻訳エディタと状態追跡を備えたString Catalogs(.xcstrings)
Text()とLocalizedStringKeyによるSwiftUIの自動ローカライゼーション
.stringsdictと自動文法エンジンによる複数形化と文法の一致
Xcodeを介したプロのトランスレーターへの受け渡しのためのXCLOCエクスポート/インポート
Interface Builder統合によるStoryboardとXIBのローカライゼーション
テキスト長やレイアウト方向の変化に適応するAuto Layoutの制約
leadingとtrailingのレイアウトセマンティクスによる右から左(RTL)のサポート
日付、数値、単位のロケール対応のためのFoundationフォーマッタ
ロケールごとのリソースのための.lprojディレクトリを使ったアプリバンドルのローカライゼーション
iOSローカライゼーションの実践
SwiftUIビューはText()でリテラル文字列を使用すると自動的にローカライズされます。String Catalogsは複数形化とデバイスのバリエーションを1つのファイルで管理します。
// SwiftUI - Automatic localization
struct WelcomeView: View {
let name: String
var body: some View {
VStack {
// Automatically looks up "Welcome to %@" in String Catalog
Text("Welcome to \(name)")
// Pluralization via String Catalog
Text("^[\(itemCount) item](inflect: true)")
// Date formatting respects locale
Text(Date.now, format: .dateTime.month(.wide).day())
}
}
}
// Localizable.xcstrings (String Catalog)
// Managed in Xcode - supports:
// - Automatic extraction from SwiftUI
// - Pluralization rules per locale
// - String variation by device
// - Translation state tracking