SwiftPackage内の文言がローカライズされない時の解消方法
iOS Swift Xcode
2024-07-23
背景
SPMでFeatureごとにモジュールを分割し、各モジュール内に.xcstringsファイルを作成、String Catalogsでローカライズしようとしました。 しかしこの状態でビルドしてもSwiftPackage内の文言がローカライズされず、デフォルト言語のまま表示されてしまう現象がありました。
原因
- SwiftPackage内の文言をローカライズするには、SwiftPackageを使う側がローカライズ対象の言語設定を持っている必要がある。
- しかし今回の場合、SwiftPackageを使う側(
Bundle.main
)に.xcstringsなどを用意しておらず、ローカライズ言語もデフォルト言語のみしか設定していなかった。 - SwiftPackage内で.xcstringsを用意しても、SwiftPackageを使う側の
Bundle.main
にローカライズ対象言語が含まれていないと、Package側のローカライズが行われない。
-> そのため、(おそらく)SwiftPackage内の文言がローカライズされなかった?
解消方法
Info.plistにLocalized resources can be mixed = YES
の設定を追加する。
(Key名はCFBundleAllowMixedLocalizations
)
これを設定すると、メインバンドルの言語設定に縛られず、
SwiftPackage内のローカライズリソースファイルに則ってローカライズされるようになります。
参考リンク
https://useyourloaf.com/blog/swift-package-string-localization/ https://forums.swift.org/t/swift-package-manager-localization/46685