🌐

複数の String Catalog を使ってローカライズする方法

2024/03/03に公開

XCode 15 ではローカライズのために String Catalog が導入された。Localizable.xcstrings というファイルにソースコード上の文字列が集約され,自動で更新されて便利である。
このファイルには手動で文字列を追加することもできるが,自動で追加される雑多な文字列が並んでいる中で並べ替えやカテゴリー分けが難しく,数が増えると管理しにくいと感じた。

https://developer.apple.com/documentation/Xcode/localizing-and-varying-text-with-a-string-catalog

ドキュメントにもあるようにString Catalog(.xcstringsファイル)は複数作成できる。

Localizable.xcstrings はXCodeが自動生成するもの専用として,他のリソースファイルのローカライズには別のString Catalogを作った方が管理しやすかった。

Localizable.xcstrings以外のファイルを参照する場合は,table名を指定する。

Text("Key", tableName: "CatalogName")
String(localized: "Key", table: "CatalogName")

// localized: の型は String.LocalizationValue なので,String をそのまま渡すとエラーになる
let keyString = "key"
String(localized: String.LocalizationValue(keyString),table: "CatalogName")

Discussion