MHLocalizationKit 2.1.0

MHLocalizationKit 2.1.0

Milen Halachev 维护。



  • Milen Halachev

MHLocalizationKit

Build Status

MHLocalizationKit 是一个实用和基础设施库,可以通过修改标准 iOS 本地化系统的行为和使用相同的翻译资源来实现运行时语言更改。

简而言之 - 您可以继续使用 .strings 文件和 NSLocalizedString 宏/函数,并能够在运行时指定和更改语言。

工作原理

NSLocalizedString 宏/函数实际上是使用 Bundle.localizedString(forKey:value:table:)。内部此方法根据系统的语言加载所需的 .strings 文件。

此库通过使用 方法交换(method swizzling),来改变 Bundle 的默认行为,强制它在运行时从指向应用语言 .strings 文件的目录的 bundle 中加载 .strings

安装

Carthage

github "KoCMoHaBTa/MHLocalizationKit"添加到您的Cartfile中,然后直接将框架嵌入到您的项目中。

Cocoapods

pod 'MHLocalizationKit'添加到您的Podfile

Submodules

在您的仓库中添加一个submodule,然后将框架直接嵌入到您的项目中。

手动

下载,然后将框架直接嵌入到您的项目中。

如何使用

基础

  • 在您希望处理运行时语言更改的UIViewController子类中遵循Localizable协议
  • 实现 languageDidChange(from:to:) 方法,并从那里使用标准的 NSLocalizedString 宏或函数加载您的本地化字符串。
  • 当您的应用启动时,设置期望的值到 Bundle.language - 这将在符合 Localizable 协议的所有活动视图控制器上调用 languageDidChange(from:to:)

NSLocalizedString 函数

截至 Xcode 11,由于与更新的 genstrings 不兼容,已经移除了与之不符的重载函数,因为 genstrings 现在支持 Swift 版本的 NSLocalizedString

详细信息

语言设置将在应用启动之间持续。

符合 Localizable 协议的 UIViewController 子类将在 viewDidLoad() 上自动接收到 languageDidChange(from:to) 调用。这是通过使用 方法冒险 来实现的。

您可以将 Bundle.trackSystemLanguageChangesBundle.trackSystemLocaleChanges 设置为 true 以选择自动跟踪系统语言和区域设置。

您可以使用 LanguageWillChangeNotificationNameLanguageDidChangeNotificationName 来订阅语言更改通知。

变更日志

1.0.0

  • 初版文档