像Pro一样在Swift中进行本地化
配置BartyCrouch
上述所有功能默认情况下都是打开的,因此您无需配置BartyCrouch即可使用它们(只是不要忘记构建脚本中的-x
选项以确保在Xcode中显示警告)。
您可以使用配置文件完全自定义BartyCrouch-我建议您至少使用一个配置文件来优化BartyCrouch的性能。 如果您的开发语言不是英语,那么您肯定需要一种语言,因为这是默认语言。 README有一个很好的分步配置部分,因此在此不再赘述。 去看看吧。
迅捷
还记得Android Studio通过提供编译时间检查和自动补全功能如何比Xcode更好地处理资源访问吗? 好吧,SwiftGen修复了该问题。 它会自动在您的项目中搜索任何指定类型的资源,并生成一个包含所有资源名称的enum
的Swift文件。 这样,您在访问它们时都会获得编译时检查和自动完成。
出于本文的目的,我们将只为本地化字符串生成一个枚举,请参阅自述文件以使用更多选项,例如静态引用图像,颜色和情节提要。
要配置SwiftGen,我们首先需要在项目中创建一个空的Strings.swift
文件。 该文件的内容将被SwiftGen自动替换,因此最好将其与其他代码分开放置,例如在Resources/Generated
。
接下来,在项目的根目录中创建一个名为swiftgen.yml
的文件, swiftgen.yml
其中添加以下内容:
用适当文件的正确路径替换path/to/your
两个条目,然后将此构建脚本添加到您的项目中:
接下来,确保SwiftGen构建脚本在BartyCrouch之后立即运行。
第一次构建项目后,从现在开始,您将能够用对生成的枚举L10n
调用替换对NSLocalizedString
的调用(这是Localization
缩写,但在L
到end n
之间没有10个字符)。 请注意,SwiftGen将自动通过分割您的本地化密钥.
并使用-
或_
进行驼峰铸造。 因此,使用诸如ONBOARDING.PAGE_ONE.TITLE
或ONBOARDING.PAGE_ONE.TITLE
onboarding.page-one.title
类的键都可以通过调用L10n.Onboarding.PageOne.title
来使用。
结合BartyCrouch和SwiftGen
现在,您已经向Xcode添加了两个缺失的功能,但是它们不能很好地协同工作。 当使用BartyCrouch.translate
调用创建新的本地化时,BartyCrouch会在下一个版本中将其转换为NSLocalizedString
调用,并且仍然需要用L10n
调用替换它。 但是BartyCrouch在这里也涵盖了我们:
只需将[update.transform]
部分中.bartycrouch.toml
文件中的配置选项transformer
从foundation
更改为swiftgenStructured
。 这将确保BartyCrouch代替了Foundation
NSLocalizedString,将把BartyCrouch.translate转换为直接调用SwiftGen的L10n
。
专业版本地化工作流程
作为上述所有步骤的结果,面向开发人员的新本地化工作流程如下所示:
- 致电
BartyCrouch.translate
,并提供您的本地化密钥和一项或多项翻译。 - 生成您的项目(在执行此步骤之前,您可以执行多个步骤1)。
由于无论如何都会在某些时候执行步骤2,因此现在实际上只是一个步骤。
结论
通过为您的项目配置BartyCrouch和SwiftGen,您可以简化Xcode中的本地化工作流,这既减少了开发人员的注意力,又在防止翻译问题方面更加安全。 这样可以节省时间和神经。
本文 由 CihatGündüz 撰写 ,
Jamit Labs iOS开发负责人兼 BartyCrouch的 主要作者