使用 Xcode 9 和 Swift 4 本地化应用程序的最佳方式是啥?

Posted

技术标签:

【中文标题】使用 Xcode 9 和 Swift 4 本地化应用程序的最佳方式是啥?【英文标题】:The best way for localize an app with Xcode 9 and Swift 4?使用 Xcode 9 和 Swift 4 本地化应用程序的最佳方式是什么? 【发布时间】:2017-09-25 13:33:20 【问题描述】:

我曾经使用Localizable.string 文件对我的应用进行本地化,并为我项目中的每个文本提供一个密钥。

目前我正在使用 Xcode 9 和 Swift 4 开发一个项目,并且我第一次使用 Storyboards(是的,这听起来很奇怪,但我总是使用 SpriteKit 而不使用 Storyboards),我有点困惑如何处理本地化。基本上我的问题是:

我应该为 UILabel 使用 Storyboard 本地化,还是应该实现 Localizable.string 中的所有内容并通过代码为标签赋值?

有什么提示可以帮助您了解哪种方法是本地化的最佳方式?

【问题讨论】:

【参考方案1】:

我建议您使用 Localizable.string 而不是 Storyboard 本地化,因为 Storyboard 中标签的 ID 可能会更改。

【讨论】:

感谢您的回答!那我肯定会用Localizable.strings文件【参考方案2】:

没有更好/更差的解决方案。这取决于您的UILabel 的用途。如果它是在应用程序的生命周期内不会更改的元素,您可能更喜欢直接使用 Storyboard 本地化。相反,如果标签可能有不同的值,我建议您以编程方式设置本地化字符串。

【讨论】:

【参考方案3】:

我发现的最可靠的解决方案之一,这对我很有效。

首先我们需要使用故事板并创建本地化字符串文件。这将自动为所有对象创建 ID。 关注这个tutorial

然后我们可以使用一个库MCLocaliztion,它将根据 ID 选择相应的翻译字符串。我们要做的,就是根据Objects ID准备一个合适的json。

希望对你有帮助。

【讨论】:

以上是关于使用 Xcode 9 和 Swift 4 本地化应用程序的最佳方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 存档验证错误 - Xcode 9 和 Swift 4

没有这样的模块 'GoogleSignIn' Xcode 9.3 和 Swift 4.1

Vapor 不适用于 xcode 9 和 swift 4

如何在 swift 4.1 和 xcode 9.3 中使用 JSONDecoder 解码嵌套的 JSON 数组和对象?

Xcode 9:使用 Swift 3.1 编译的模块无法在 Swift 4.0 中导入

在 swift 4 和 Xcode 9 中解码 ExpandableTableView 的嵌套 json 数组