在我的iOS应用中,我打算让用户更改语言。
实现这一目标的最佳方法是什么?
目前我的所有String都在一个struct中。但我想知道根据用户选择更改语言的最佳方法是什么。
有什么建议吗?
答案 0 :(得分:2)
最常见的方法是不允许用户更改应用程序本身的语言,而是让iOS为您执行此操作。
Here's a good tutorial开始使用NSLocalizedString
本地化您应用的字符串。您应该遵循整个教程,因为它有一堆有关本地化的有用信息,但这里简要概述了您必须做的事情:
Localizable.strings
文件。此文件遵循格式"Hello" = "Hello";
,其中左侧的键是NSLocalizableString
的字符串标识符,右侧的值是本地化字符串。在这种情况下,您将使用@"Hello"
替换对此字符串的任何代码引用(例如,NSLocalizedString(@"Hello", nil)
)。完成此操作后,您的应用将从用户在其设备设置中选择的任何支持语言加载字符串。
This question还提供了一些有用的技巧,可用于本地化现有应用 - 特别是使用NSLocalizedString
批量替换现有字符串。
答案 1 :(得分:1)
如果你想做自己的解决方案,那么很多可能的方法之一就是:
将App中的每个UILabel添加到一个包含UILabel和密钥字符串的字典中。然后就是:
for label in labels {
If let label = LocMan.sharedInst.labels["some Key"] {
label.text = NSLocalizedString("some Key" comment: "")
}
}
对于其他文本类,您应该这样做。