我们可以在File Inspector使用中本地化图像,Localize...如下所示:

然后我们可以得到这个:

但现在,我使用Images.xcassets来管理我的iOS项目中的图像,我应该如何在Images.xcassets中本地化这些图像?
cc.*_*cc. 92
虽然(显然)目前没有直接显式本地化xcassets文件的方法,但您可以使用Localizable.strings文件本地化资产的名称.例如,假设您对需要本地化的游戏主菜单有图形徽标处理.您可以使用不同的名称将本地化徽标处理放在assets文件中,将名称添加到Localizable.strings文件中,然后使用以下代码获取相应的图像:
UIImage *img = [UIImage imageNamed:NSLocalizedString(@"MAIN_MENU_IMAGE", nil)];
Run Code Online (Sandbox Code Playgroud)
当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"
}
}
Run Code Online (Sandbox Code Playgroud)
此扩展程序执行以下操作:
现在,我们将两者结合起来以获得正确的图像:
let languageCode = UIApplication.shared.languageCode
let image = UIImage(named: "access_\(languageCode)")
Run Code Online (Sandbox Code Playgroud)
在互联网上进行一些搜索后,我认为此功能目前不是由xcassets提供的.所以只是不要使用xcassets来管理您的本地化图像.
我找到了另一种方法:
Run Code Online (Sandbox Code Playgroud)let languageCode = UIApplication.shared.languageCode let image = UIImage(named: "\(languageCode)\assetname")
| 归档时间: |
|
| 查看次数: |
22693 次 |
| 最近记录: |