测试已测试 | ✗ |
Lang语言 | SwiftSwift |
许可证 | Apache 2 |
发布上次发布 | 2017年7月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Ilia Kosynkin 维护。
遇到在移动环境中即时更改应用程序语言的开发者可能会知道,这通常不是一项简单任务,尤其是在项目开发过程中突然出现这样的需求时。这个库的主要目的是通过提供代码生成脚本、解析脚本和一些 Swift 类来简化语言更改过程。
库可在 CocoaPods 中使用,只需将以下行添加到您的 pod 中
pod 'OnFlyLocalizer'
然后运行
pod update
下载完成后,在终端中导航到 Pods/OnFlyLocalizer/OnFlyLocalizer,并运行
sudo chmod +x localizer.sh
遗憾的是,这是一步必要的步骤,如果您不这样做,则 xCode 不会执行此脚本。之后,将“Run Script”阶段添加到您的 xCode 项目中,并在其中添加以下行
"$PODS_ROOT/OnFlyLocalizer/OnFlyLocalizer/localizer.sh" "YOUR TARGET NAME HERE"
生成项目,如果一切顺利,您应该会在目标顶级目录中获得 OnFlyLocalizer.conf 文件。
如前所述,第一次构建将只提供配置文件。此文件用于配置脚本的工作。它基本上如下所示
TurnToCamelCharacters=.-
ChangeRSwiftStrings=false
PendingFilesFileName=PendingFiles.txt
LocalizationsTable=Localizable
GeneratedFolderName=LanguageOnFlyChange
ProcessedFileName=processed.txt
ProcessFiles=False
ParseStrings=true
EventBus=|\o/|+__+|/o\|
LocalizationsPath=Others
如您所见,这是一个简单的键值文件,您可以在其中配置脚本如何表现和工作。让我逐一介绍所有键并解释它们的确切功能。
您可以在这里提供所有将转换其后字母的大小写的字符。它用于将本地化文件中的字符串键转换为函数的名称。默认方案是“.-”,即如果您有如下内容
"klappa.kappacino-inc.O_O" = "O_O";
在您的本地化字符串中,它将被转换为以下文件中的函数
func klappaKappacinoIncO_O() -> String
您可以将任意字符传递到这个字段。
基本上,如果你正在使用名为 R.swift 的优秀库,你可能会使用 R.string 来处理字符串。这种方法的缺点是 R.string 在现场本地化方面表现不佳,因此你可能想要更改它。如果此字段设置为“true”,脚本将替换项目中所有 R.string 的实例为生成的文件。请注意,在这种情况下,最好保持默认的 TurnToCamelCharacters 不变,因为这会导致字符串更改时出错。
包含您希望处理的文件列表(即添加本地化)的文件名称。默认情况下,库会处理名称中包含“View”或“Controller”的文件。如果您将您的 ViewController 命名为例“AwesomiumKlappaInternationalScreen”,库将不会将其识别为可能需要本地化的内容,并将其跳过。如果您有此类文件,请将它的名称(不是路径,只是带扩展名的名称)添加到挂起的文件中,并在新的一行中运行构建。
您保存字符串的文件名称。我通常使用“Localizable.strings”,但您可能想要另一个名称。如果您这样选择,请将其放在此参数中。
脚本将所有生成的文件扔入的文件夹。
已经处理过且不需要再处理或您不希望被处理的文件。如果您想排除某些文件的处理,请将该文件名添加至此字段指定的文件中。
此字段指定脚本是否将遍历项目中的所有文件并处理它们。请注意,这是一个相当大的操作,脚本默认将该标志设置为“false”。请确保一切按您期望的方式配置,将此字段更改为“true”并运行构建。脚本完成后,它将再次将该属性设置为“false”,以避免在下一次构建时进行解析。
此字段指定您是否想要解析字符串并重新生成具有函数的文件。如果设置为“true”,则将重新生成文件。
此字段指定脚本从何处获取 EventBus 实例以登记语言更改事件。默认值没有对编译进行更改,因此请提供正确的 EventBus 实例值。请注意,它应该是一个实例。您可能需要使用某种依赖注入或单例来实现,只需确保 EventBus 可以为文件访问。
可选项。您可以在此处指定带有本地化字符串文件夹的相对路径。如果您不指定它,脚本将自行查找并将其写入此处以加快工作速度。
如果您对该库有任何问题,请确保在存储库中创建一个问题。反馈非常受欢迎。