LocalizationKit
Localization kit是一个强大的本地化和翻译管理工具。作为一名开发人员,我总是收到这样的问题:“你能改一下这个文本吗?”或者“你能添加另一种语言吗?”我设计这个框架,使您可以在不重新编译、重新提交或不需要使用开发人员的情况下管理这些翻译和文本。本质上消除所有痛苦。
它是如何工作的
Localization Kit可以快速简单地通过Cocoapods集成到您的应用程序中。然后它连接到LocalizationKit.com提供的服务,这些服务免费使用和管理。然后当您在iOS应用程序中创建项目时,文本键会立即在在线Web UI中可用。从那里您可以更改文本,并且它将在应用中实时反映(在您键入任何键时)。
安装
使用CocoaPods
LocalizationKit可以通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile文件中
pod "LocalizationKit" "~>4.0.3" # Swift 4
pod "LocalizationKit" "~>3.0.12" # Swift 3.2
使用Carthage
github "willpowell8/LocalizationKit_iOS" ~> 4.0.3 // Swift 4
github "willpowell8/LocalizationKit_iOS" ~> 3.0.13 // Swift 3.2
设置
接着访问https://www.localizationkit.com/app/并在左侧创建一个新的应用,使用您的名字。然后将当前URL中 after #/app/...KEY HERE... 生成的代码复制下来。
然后将以下内容放入您的AppDelegate中
在顶部
import LocalizationKit
将以下内容放入didFinishLaunchingWithOptions方法中,同时使用您自己的key
Localization.start(appKey: "[[KEY]]")
启用实时更新
LocalizationKit最强大的功能之一是能够在设备上实时编辑文本。您可以通过以下几种方式启动实时服务
在初始化时
Localization.start(appKey: "bed920eb-9802-4a2c-a8c0-69194729d69d", live: true)
从Settings Bundle内部
确保您创建了一个包含命名为live_localization的布尔对象的settings bundle。
Localization.start(appKey: "bed920eb-9802-4a2c-a8c0-69194729d69d", useSettings: true)
在应用程序内部切换
Localization.liveEnabled = true
启用内联编辑
作为应用程序的一部分,您可以通过长按字段来启用本地化的内联编辑。 支持内联编辑的元素:UILabel,UIButton
在应用程序内部切换
Localization.allowInlineEdit = true
使用界面构建器
本地化工具包支持Xcode UI开发。该过程非常简单
- 安装cocoapod
- 打开Storyboard或Xib文件
- 选择组件,例如UILabel或拖动标准组件UILabel
- 打开属性选择器
- 设置本地化键
- 运行应用程序,键将在线可用
支持的组件
- UILabel
- UINavigatioNitem
- String
- UIBarItem
- UIBarButtonItem
- UITextField
- UIButton
- DateFormatter
代码中使用
从代码使用本地化系统的方法有几种,而不使用故事板或界面构建器。第一种是从任何字符串中你可以调用 .localize 来调用其本地化字符串。这不会给你文本的实时更新,但会在你调用时提供文本。
let localizedGreeting = "Hello".localize
这将创建一个本地化键 String.您的字符串(其中替换空格的点),例如 '选择语言' 将成为 String.Select.Languages。这些文本将类似地在你的 Web UI 内部本地化。
let resultText = Localization.get("Localization.Key", alternate: "default label text")
本地化键
本地化键是允许你为应用中的正确部分分配本地化的唯一标识符。你可以使用任何字符串作为设备标识符,但如果你使用点分隔方法,应用程序有一些使事情更简单的特性:例如 Product.Details.Label
缓存
LocalizationKit 内部会缓存你已经翻译的本地化和翻译。当前情况下,一旦从服务器加载了语言,它就会在本地存储以供离线和后续使用。每次应用重新打开时,都会更新它,首先加载本地版本,然后替换为服务器版本。
待办事项:添加一个构建阶段脚本,可以拉取 ... 的第一个版本
其他功能
设置语言
Localization.setLanguage("de")
获取可用语言
Localization.availableLanguages { (languages) in
// Languages is an array of [Language] which has properties localizedName and key
}
重置为设备语言
Localization.resetToDeviceLanguage()
显示调试字符串
Localization.ifEmptyShowKey = true
设置默认语言
默认语言是您构建应用程序时使用的语言,并用于将字符串和数据传递到后端进行显示。
Localization.defaultLanguageCode = "en"
事件
如果您启用实时更新过程,则可以监听本地化事件。这些事件包括
- LocalizationEvent - 当文本更新时发生。
Localization.localizationEvent(localizationKey: String)
- 高亮事件 - 当用户在Web UI中点击高亮按钮时发生。
Localization.highlightEvent(localizationKey: String)
监听事件的示例
NotificationCenter.default.addObserver(self, selector: #selector(localizationHighlight), name: Localization.highlightEvent(localizationKey: LocalizeKey!), object: nil)
示例日期格式化器
日期格式化是一个单独的调用,它遵循实时更新。注意日期格式字符串必须在本地化键之前设置。
let d = DateFormatter()
d.dateFormat = "dd MMM yyyy"
d.LocalizeKey = "General.DateFormatter"
let dStr = d.string(from: Date())
print(dStr)
示例
要运行示例项目,请先克隆存储库,然后从示例目录运行 pod install
命令。
作者
许可
LocalizationKit 在MIT许可下可用。有关更多信息,请参阅LICENSE文件。