次のようにFile Inspector
を使用して、Localize...
の画像をローカライズできます。
次に、これを取得できます。
しかし今、Images.xcassetsを使用してiOSプロジェクトの画像を管理しています。これらの画像をImages.xcassetsでローカライズするにはどうすればよいですか?
(明らかに)xcassetsファイルを明示的に直接ローカライズする方法は現在のところありませんが、could Localizable.stringsファイルを使用してプルするアセットの名前をローカライズします。たとえば、ローカライズする必要があるゲームのメインメニューのグラフィックロゴ処理があるとします。ローカライズされたロゴ処理を別の名前でアセットファイルに配置し、Localizable.stringsファイルに名前を追加してから、次のようなコードで適切な画像を取得できます。
UIImage *img = [UIImage imageNamed:NSLocalizedString(@"MAIN_MENU_IMAGE", nil)];
Appleがレモンを与える、レモネードを作る、この場合は、lemonade_en、lemonade_es、またはあなたのニーズに合ったものを提供します。
まず、次のようにアセットファイルに目的の言語ごとにエントリを作成します。
次に、デバイスの言語コードを取得する必要があります。ここで覚えておくべき重要なことは、ユーザーがサポートされていない言語を持っている可能性があることです。その場合、デフォルトを返します(私は英語を使用します)。
次のUIApplication
の拡張子は、これらすべてを処理します。
extension UIApplication {
var languageCode: String {
let supportedLanguageCodes = ["en", "es", "fr"]
let languageCode = Locale.current.languageCode ?? "en"
return supportedLanguageCodes.contains(languageCode) ? languageCode : "en"
}
}
この拡張機能は次のことを行います。
ここで、2つを組み合わせて適切な画像を取得します。
let languageCode = UIApplication.shared.languageCode
let image = UIImage(named: "access_\(languageCode)")
インターネットで検索した結果、この機能は現在xcassetsによって提供されていないと思います。したがって、ローカライズ画像の管理にxcassetsを使用しないでください。
私は別の方法を見つけました:
let languageCode = UIApplication.shared.languageCode let image = UIImage(named: "\(languageCode)\assetname")
現時点では、ローカライズが必要な画像をImages.xcassetsから取り出して、標準プロジェクトフォルダーに配置します。ローカライズされていない画像は.xcassetsに残します。ローカライズする必要のある画像には、この方法を使用します。