使用 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
如何在 swift 4.1 和 xcode 9.3 中使用 JSONDecoder 解码嵌套的 JSON 数组和对象?