KunstmaanI18nSwift 2.3.4

KunstmaanI18nSwift 2.3.4

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最新发布2017年11月
SwiftSwift 版本3.0
SPM支持 SPM

Kunstmaan Labs 维护。



Kunstmaan I18n-Swift

特性

  • 利用默认的 Localizable.strings 文件。
  • 在不更改设备语言的情况下更改应用程序的语言。
  • 使您的图像可本地化。
  • 界面构建器支持,您可以直接在界面构建器中配置本地化键。如果没有找到本地化键,它将回退到显示标签的原始属性。

示例项目可以在以下位置找到 i18n-swift-example

安装

首选的安装方法是通过 CocoaPods,这样您可以在界面构建器中配置 @ibdesignable 和 @IBInspectable 属性。显然,在用标准 IOS 框架使用时,这些属性不会出现在界面构建器中。

http://stackoverflow.com/questions/29933691/ibdesignable-from-external-framework

CocoaPods

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 (未测试)

Carthage 是一个去中心化的依赖关系管理器,它构建您的依赖关系,并为您提供二进制框架。

您可以使用以下命令使用 Homebrew (

$ brew update
$ brew install carthage

要使用 Carthage 在您的 Xcode 项目中集成 KunstmaanI18nSwift,请在您的 Cartfile 中指定它

github "Kunstmaan/i18n-swift" ~> 2.0

运行 carthage update 以构建框架,并将构建的 KunstmaanI18nSwift.framework 拖到您的 Xcode 项目中。

使用方法

当 i18n 模块加载时,它将尝试根据设备上配置的首选语言自行配置。如果没有找到匹配的语言,则将没有配置语言。

界面构建器

以下 UIView 属性在界面构建器中支持本地化(这些属性也可以用代码设置)

  • UIButton
    • 默认标题:i18nDefaultTitleKey
    • 高亮标题:i18nHighLightedTitleKey
    • 选中标题:i18nSelectedTitleKey
    • 禁用标题:i18nDisabledTitleKey
  • UILabel
    • 文本:i18nTextKey
  • UINavigationItem
    • 标题:i18nTitleKey
  • UITextField
    • 占位符:i18nPlaceholderKey

特殊情况

  • UIImage
    • image: i18nImageBaseName

通过提供图片的基本名称,视图将寻找名为“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
	}
}