我们可以使用File Inspector
像这样在Localize...
中本地化图片:
然后我们可以得到这个:
但是现在,我使用Images.xcassets来管理我的iOS项目中的图像,我应该如何在Images.xcassets中本地化这些图像?
答案 0 :(得分:89)
虽然目前(显然)目前还没有直接显式本地化xcassets文件的方法,但可以本地化使用Localizable.strings文件提取的资产名称。例如,假设您对需要本地化的游戏主菜单有图形徽标处理。您可以使用不同的名称将本地化徽标处理放在assets文件中,将名称添加到Localizable.strings文件中,然后使用以下代码获取相应的图像:
UIImage *img = [UIImage imageNamed:NSLocalizedString(@"MAIN_MENU_IMAGE", nil)];
答案 1 :(得分:8)
当Apple给你柠檬,做柠檬水,或者在这种情况下,柠檬水,柠檬水,或任何适合你需要的东西。
首先,我在资产文件中为每种所需语言创建一个条目,如下所示:
接下来,您需要获取设备的语言代码。这里要记住的重要一点是用户可能使用不受支持的语言,因此如果是这种情况,请返回默认值(我使用英语)。
UIApplication
的以下扩展名将为您处理所有这些:
extension UIApplication {
var languageCode: String {
let supportedLanguageCodes = ["en", "es", "fr"]
let languageCode = Locale.current.languageCode ?? "en"
return supportedLanguageCodes.contains(languageCode) ? languageCode : "en"
}
}
此扩展程序执行以下操作:
现在,我们将两者合并以获得正确的图像:
let languageCode = UIApplication.shared.languageCode
let image = UIImage(named: "access_\(languageCode)")
答案 2 :(得分:7)
在互联网上进行一些搜索后,我认为此功能目前不是由xcassets提供的。所以不要使用xcassets来管理您的本地化图像。
答案 3 :(得分:3)
我找到了另一种方式:
let languageCode = UIApplication.shared.languageCode let image = UIImage(named: "\(languageCode)\assetname")
答案 4 :(得分:1)
目前,我从Images.xcassets中提取需要本地化的图像并将其放入标准项目文件夹中。我将非本地化图像保留在.xcassets中。我将您的方法用于需要本地化的图像。
答案 5 :(得分:0)