iOS应用中的本地化-快速方法

如果您想要一个在多个国家/地区支持多种语言的应用程序,则应决定使用iOS提供给您的本地化功能。

您可以在应用程序中本地化许多内容,例如图像,文本,甚至是自动布局,但最常见的是在视图上显示文本或只是字符串。
您可以在应用程序中处理本地化,但是最常见的方法是使用本地资源。

您需要做的第一件事是将Localizable.strings文件添加到Xcode项目中。

另外,请确保在项目设置中选中了“使用基础国际化”。

然后转到以前创建的Localizable.string文件,并在右侧的Localization菜单中选中所有语言复选框。

之后,您的文件应如下所示:

现在我们可以用一些示例数据填充文件:

和德国版本:

目前,我们已经在代码库中配置了基本的本地化设置。 但是,我们多久使用一次呢?
在许多项目中,您可以找到以下内容:

好的,此代码还可以,但是在键盘上输入错误和打错也不太困难。 之后,我们可以花几分钟寻找问题的答案:“为什么我们的字符串不显示?!”

我们可以考虑如何更快地做得更好? 当然可以,我将描述如何。

第一步是创建能够从Localizable.strings文件读取我们的本地化字符串的服务。
在此示例中,我决定先创建协议,以防稍后在单元测试中模拟我的服务。
这是一个示例,显示如下:

我们还需要提供协议的实现:

您可能想知道这个“ LocalizedStringKey”是什么。 这是所有此实现的核心功能,但它本身很简单-只是枚举包含所有键(作为案例)而不是字符串,从而可以防止我们在接收资源字符串时犯错误。

为了节省时间,您可以编写简单的Python / Ruby脚本,该脚本将基于Localizable.strings文件生成此枚举。

现在是时候使用我们的实现了:
首先,我们需要创建服务的实例,例如,您可以通过一些DI技术将其传递给ViewController。

之后,您可以简单地在标签,字符串等上使用它:

结论:
如您所知,Swift中的枚举为您提供了许多可能性,而这仅仅是另一种。 这是您可以构建的唯一示例,可以在代码中提供高级Swift API。 随时基于此构建更多的本地化服务。 例如,您可以创建图像或自动布局的方法。

希望您会喜欢。