像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.TITLEONBOARDING.PAGE_ONE.TITLE onboarding.page-one.title类的键都可以通过调用L10n.Onboarding.PageOne.title来使用。

结合BartyCrouch和SwiftGen

现在,您已经向Xcode添加了两个缺失的功能,但是它们不能很好地协同工作。 当使用BartyCrouch.translate调用创建新的本地化时,BartyCrouch会在下一个版本中将其转换为NSLocalizedString调用,并且仍然需要用L10n调用替换它。 但是BartyCrouch在这里也涵盖了我们:

只需将[update.transform]部分中.bartycrouch.toml文件中的配置选项transformerfoundation更改为swiftgenStructured 。 这将确保BartyCrouch代替了Foundation NSLocalizedString,将把BartyCrouch.translate转换为直接调用SwiftGen的L10n

专业版本地化工作流程

作为上述所有步骤的结果,面向开发人员的新本地化工作流程如下所示:

  1. 致电BartyCrouch.translate ,并提供您的本地化密钥和一项或多项翻译。
  2. 生成您的项目(在执行此步骤之前,您可以执行多个步骤1)。

由于无论如何都会在某些时候执行步骤2,因此现在实际上只是一个步骤。

结论

通过为您的项目配置BartyCrouch和SwiftGen,您可以简化Xcode中的本地化工作流,这既减少了开发人员的注意力,又在防止翻译问题方面更加安全。 这样可以节省时间和神经。

本文 CihatGündüz 撰写
Jamit Labs iOS开发负责人兼 BartyCrouch的 主要作者