🍎
【SwiftUI】ImageAssetのローカライズができない
メリークリスマス🎅
この記事はSwiftUI Advent Calendar 2024の18日目の記事です。
アセットカタログを使用した画像のローカライズ
アセットカタログを使用して画像のローカライズを行うことができます。
使用する際は、ただアセットを呼び出してあげればOKです。
Image(.image)
ImageAssetのローカライズができない
一部のバリエーションのある言語において、SwiftUIのImageでローカライズした画像が細かく出しわけされなくなってしまいました。
例えば中国語には主に3種類あり、UIImage(画像下部)では同じ画像の言語ごとの出しわけができていますが、SwiftUIのImage(画像上部)ではすべて Chinese, Simplified になってしまいます。
簡体中国語 | 広東語(繁体字) | 繁体中国語(香港) |
---|---|---|
また、Chinese, Simplifiedを指定していない場合はデフォルトのローカライズ画像が使用されます。
他の言語でも同様の現象が起こります。
English | English(AU) | English(UK) | English(IN) |
---|---|---|---|
French | French(CA) |
---|---|
etc...
解決策
一度UIImageへの変換を挟むと、期待通りのローカライズが行われます。
このとき、 UIImage(named:)
で指定するとオプショナルになってしまうため、 UIImage(resource:)
で変換を行うことをおすすめします。
Image(uiImage: UIImage(resource: .image))
おわりに
どうしてこんなことになっているのかは分かりません。(手抜きとしか思えない...)
バリエーションのある言語へのローカライズを行うときはSwiftUIのImageでローカライズが意図通りになっているか確認しておこう!
Discussion