如何在Images.xcassets中本地化图像?
我们可以使用Localize...
在File Inspector
中对图像进行Localize...
像这样:
那我们可以得到这个:
但现在,我使用Images.xcassets来pipe理我的iOS项目中的图像,我应该如何将这些图像本地化到Images.xcassets中?
虽然目前显然还没有直接明确本地化xcassets文件的方法,但您可以使用Localizable.strings文件本地化资源的名称。 例如,假设你有一个需要本地化的游戏主菜单的graphics标志处理。 您可以将不同名称的资源文件中的本地化徽标处理,将名称添加到Localizable.strings文件中,然后使用如下代码获取适当的图像:
UIImage *img = [UIImage imageNamed:NSLocalizedString(@"MAIN_MENU_IMAGE", nil)];
在互联网上search一些后,我认为这个function现在不是由xcassets提供的。 所以只是不要使用xcassetspipe理您的本地化图像。
当苹果给你柠檬,做柠檬水,或在这种情况下,柠檬水,柠檬水或任何适合你的需求。
首先,我在资产文件中为每种所需语言创build一个条目,如下所示:
接下来,您需要获取设备的语言代码。 这里要记住的重要的事情是,用户可能有一个不支持的语言,所以如果是这样的话,返回您的默认(我使用英语)。
UIApplication
的以下扩展将为您处理所有这些事情:
extension UIApplication { var languageCode: String { let supportedLanguageCodes = ["en", "es", "fr"] let languageCode = Locale.current.languageCode ?? "en" return supportedLanguageCodes.contains(languageCode) ? languageCode : "en" } }
此扩展名执行以下操作:
- 创build一个我的应用程序支持的语言的数组
- 获取当前设备的语言代码,或者返回一个默认值(如果为零)
- 最后,检查当前的代码是否在我的支持列表中。 如果是,则返回它,否则返回我的默认代码
现在,我们结合这两个来获得正确的形象:
let languageCode = UIApplication.shared.languageCode let image = UIImage(named: "access_\(languageCode)")
目前,我从Images.xcassets中提取需要本地化的图像,并将其放入标准项目文件夹中。 我将非本地化的图像保留在.xcassets中。 我用你的方法来处理需要本地化的图片。