测试已测试 | ✗ |
Lang语言 | SwiftSwift |
许可证 | MIT |
发布最新发布 | 2017年11月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Kunstmaan Labs 维护。
示例项目可以在以下位置找到 i18n-swift-example
首选的安装方法是通过 CocoaPods,这样您可以在界面构建器中配置 @ibdesignable 和 @IBInspectable 属性。显然,在用标准 IOS 框架使用时,这些属性不会出现在界面构建器中。
http://stackoverflow.com/questions/29933691/ibdesignable-from-external-framework
CocoaPods 是 Cocoa 项目的依赖关系管理器。您可以使用以下命令安装它
$ gem install cocoapods
要使用 CocoaPods 将 KunstmaanI18nSwift 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'KunstmaanI18nSwift', '~> 2.0'
然后,运行以下命令:
$ pod install
最后,将以下内容添加到您的 Bridging-Header.h 文件中
#import <KunstmaanI18nSwift/KunstmaanI18nSwift.h>
Carthage 是一个去中心化的依赖关系管理器,它构建您的依赖关系,并为您提供二进制框架。
您可以使用以下命令使用 Homebrew ($ brew update
$ brew install carthage
要使用 Carthage 在您的 Xcode 项目中集成 KunstmaanI18nSwift,请在您的 Cartfile
中指定它
github "Kunstmaan/i18n-swift" ~> 2.0
运行 carthage update
以构建框架,并将构建的 KunstmaanI18nSwift.framework
拖到您的 Xcode 项目中。
当 i18n 模块加载时,它将尝试根据设备上配置的首选语言自行配置。如果没有找到匹配的语言,则将没有配置语言。
以下 UIView 属性在界面构建器中支持本地化(这些属性也可以用代码设置)
特殊情况
通过提供图片的基本名称,视图将寻找名为“baseName (locale)”的图片。可以通过扩展 i18n 类并重写此格式来覆盖此格式。
public func localizedImageNameFor(name: String, lang: String?) -> String
您可以使用 String 扩展来快速翻译一个键
"your.translation.key".i18nLocalized
或者使用额外的选项
"your.translation.key".i18nLocalized(defaultValue: String, table: String, arguments: ...)
或者您可以使用 i18n 类,要使用此功能,您应在您的 Swift 类中将 i18n 模块导入到顶部,在那里您想使用此功能
import KunstmaanI18nSwift
这会使 i18n 类可供您使用,并为您提供了以下 API 的访问权限
i18n.possibleLanguages
该函数返回一个包含您项目中配置的语言的数组(例如:["en", "nl"])i18n.language
该函数返回当前配置语言的 String 值(例如:"en")i18n.locale
该函数返回当前配置语言的 NSLocale 值i18n.hasLanguage
返回一个布尔值,指示是否配置了当前语言i18n.setLanguage(lang: String)
设置当前语言i18n.isCurrentLanguage(lang: String)
返回给定的语言是否与当前配置的语言相同i18n.clear()
删除任何配置的语言i18n.localizedStringForKey(key: String, defaultValue: String, table: String, arguments: ...)
返回此翻译键的翻译值i18n.localizedImageForName(name: String)
返回给定名称的本地化 UIImage(《em>baseName (locale)”)目前只有一种事件正在分发,那就是当语言被改变时。您可以通过以下方式监听此事件
NSNotificationCenter.defaultCenter().addObserver(self, selector: "onLanguageChange", name: I18n.Events.OnChange, object: nil)
public func onLanguageChange(notification: NSNotification) {
if let info = notification.userInfo as? Dictionary<String,String>, lang = info["lang"] {
let oldLang = info["oldLang"]
// Do something here
}
}