iOS本地化正确! SwiftGen巴蒂·克鲁奇
本地化是一个广泛的话题,很多时候所要做的不仅仅是将单词翻译成预期的语言。 雷·温德利希(Ray Wenderlich)在他的博客上有很多与此相关的文章。 苹果公司已经就该主题制作了多个WWDC视频。 这是一个在网络上覆盖面很广的主题,那么另一篇文章的重点是什么? 我将与大家分享一些技巧和库,这些技巧和库可以在两个常见问题上为您提供很多帮助:
- 保持情节提要的.strings文件同步
- 使用枚举而不是使用NSLocalizedString宏处理本地化
这篇文章从您已经在项目中配置了本地化的地方继续进行,包括字符串和情节提要。 如果不是这种情况,您可以在Ray Wenderlich的帖子中找到所需要做的一切。
SwiftGen比NSLocalizedString更好
SwiftGen是一个神奇的宝石,它为我们的iOS管道带来了很多自动化,它可以帮助您生成一个故事板,字符串等枚举。
您可以在github页面上找到一些用例和更多信息。
AliSoftware / SwiftGen
SwiftGen –用于生成Swift代码的Swift工具集合(用于您的资产的枚举,情节提要,Localizable.strings… github.com
脚步:
- 首先,我们需要安装swiftgen,我们可以通过自制软件完成
$ brew更新
$ brew install swiftgen
2.在此之后,我们只需要向项目的“构建”阶段添加一个新的运行脚本阶段
代码很简单,在上面的屏幕快照中,我同时生成了情节提要和字符串枚举
$ PODS_ROOT / SwiftGen / bin / swiftgen故事板-t swift3 $ SOURCE_ROOT —输出$ SOURCE_ROOT / {STORYBOARD_ENUM_OUTPUT_PATH} /Storyboard.swift — sceneEnumName故事板
$ PODS_ROOT / SwiftGen / bin / swiftgen字符串-t swift3 $ SOURCE_ROOT / {PATH_TO_LOCALIZABLE_STRINGS_FILE} /en.lproj/Localizable.strings —输出$ SOURCE_ROOT / {STRINGS_ENUM_OUTPUT_PATH} /Localized.swift
现在,您只需要用项目的正确路径替换{STORYBOARD_ENUM_OUTPUT_PATH}和{STRINGS_ENUM_OUTPUT_PATH},唯一缺少的部分就是将生成的文件添加到xcode,然后就可以了。 *我还添加了用于生成故事板枚举的代码,但这是最佳的,与本地化无关,这只是SwiftGen的另一个功能。
现在,我们可以使用枚举以更优雅的方式在代码中调用本地化的字符串
将Storyboard的.strings与BartyCrouch同步。
故事板本地化的一个大问题是关于同步状态的问题。 当您第一次从情节提要中创建.string时,它将生成一个适当的文件
不幸的是,xcode在创建后不会更新此文件,因此最终将这些字符串迁移到localizable.strings并手动设置每个标签。 我知道那听起来真的很奇怪而且很麻烦,但是它确实发生了。 我已经看到许多项目都在发生这种情况。
BartyCrouch为此提供了帮助,这是我们添加到项目中的另一个脚本构建阶段,该阶段将确保情节提要的字符串保持同步。
脚步:
- 要安装,我们将再次使用自制软件
$ brew tap flinesoft / bartycrouch
$ brew install flinesoft / bartycrouch / bartycrouch
2.之后,我们将新的运行脚本添加到buildphases
和代码:
如果哪个bartycrouch> / dev / null; 然后
#增量更新所有Storyboard / XIB字符串文件
bartycrouch接口-p“ $ PROJECT_DIR” -b -v
其他
回声“警告:未安装BartyCrouch,请从https://github.com/Flinesoft/BartyCrouch下载”
科幻
3.所有人。
包起来 ..
因此,通过几个简单的步骤,我们可以改善我们的工作流程并适当地处理本地化,两个库的github页面都有很棒的文档,绝对推荐您看看。
与往常一样,任何想法,疑问或评论都将受到欢迎。