更改应用程序内的语言

时间:2015-11-19 03:58:20

标签: ios swift localization swift2

在我的iOS应用中,我打算让用户更改语言。

实现这一目标的最佳方法是什么?

目前我的所有String都在一个struct中。但我想知道根据用户选择更改语言的最佳方法是什么。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

最常见的方法是不允许用户更改应用程序本身的语言,而是让iOS为您执行此操作。

Here's a good tutorial开始使用NSLocalizedString本地化您应用的字符串。您应该遵循整个教程,因为它有一堆有关本地化的有用信息,但这里简要概述了您必须做的事情:

  1. 为您的项目创建一个Localizable.strings文件。此文件遵循格式"Hello" = "Hello";,其中左侧的键是NSLocalizableString的字符串标识符,右侧的值是本地化字符串。在这种情况下,您将使用@"Hello"替换对此字符串的任何代码引用(例如,NSLocalizedString(@"Hello", nil))。
  2. 将您想要的语言添加到您应用的项目中(项目> [应用名称]>本地化>" +"按钮)。这将显示包含项目的可本地化文件(字符串文件和故事板)的提示 - 您可能希望选择所有这些文件。
  3. 选择Localizable.strings文件,在Utilities(右侧)菜单中的Localization下,单击Localize。选择英语作为您的起始语言(假设您的应用目前是英语)。
  4. 您现在可以使用复选框列出可本地化的语言。启用每种语言,这将创建特定于语言的Localizable.strings版本。
  5. 您的所有本地化文件(包括Localizable.strings和Storyboard)现在都会在Project Navigator中显示一个箭头。如果单击这些箭头进行展开,则可以编辑这些文件的每个本地化。
  6. 完成!简单。您可以通过更改设备的语言在模拟器或设备上进行测试。
  7. 完成此操作后,您的应用将从用户在其设备设置中选择的任何支持语言加载字符串。

    This question还提供了一些有用的技巧,可用于本地化现有应用 - 特别是使用NSLocalizedString批量替换现有字符串。

答案 1 :(得分:1)

如果你想做自己的解决方案,那么很多可能的方法之一就是:

  1. 创建您自己的单身人士本地化经理类
  2. 将App中的每个UILabel添加到一个包含UILabel和密钥字符串的字典中。然后就是:

    for label in labels {
         If let label = LocMan.sharedInst.labels["some Key"] {
        label.text = NSLocalizedString("some Key" comment: "") 
        } 
     }
    
  3. 对于其他文本类,您应该这样做。