LocalizeNIB 1.1

LocalizeNIB 1.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2018 年 1 月
SwiftSwift 版本4.0
SPM支持 SPM

Jindrich Dolezy 维护。



  • Jindra Dolezy

LocalizeNIB

BuddyBuild

LocalizeNIB 帮助您本地化故事板和 XIB 文件。将您想要本地化的所有内容放入您的 UIViewController 中的 localizables 控件集合中,LocalizeNIB 将使用 NSLocalizedString 对所有内容进行本地化。不再需要手动处理难以阅读的组件 ID !

安装

LocalizeNIB 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod "LocalizeNIB"

使用方法

基本用法

LocalizeNIB 默认使用 NSLocalizedString。如果您准备好了 Localizable.strings 文件,那么您只需要将所有想要本地化的组件添加到 localizables 控件集合中(如下图中所示)。LocalizeNIB 将使用故事板中设置的字符串值作为本地化的键。对于常见的 UIKit 组件,提供了扩展,因此如果您不想使用自定义类,则不需要这样做。

Adding to outlet collection

调试模式

LocalizeNIB.instance.debugMode 设置为 true 将启用调试模式。LocalizeNIB 将记录未知的字符串键和未能或不支持本地化 altogether 的对象。记录未知键仅在

如果您使用自己的日志解决方案,您可以通过提供 LocalizeNIB.instance.debugBlock 与 LocalizeNIB 一起集成。

自定义本地化字符串

您可以通过设置 LocalizeNIB.instance.stringProvider 块并提供自定义本地化字符串来设置 LocalizeNIB.instance.stringProvider。此块会被频繁调用,因此它应该迅速返回。

以下示例获取所有传入的键并简单地返回它们的上标形式。

LocalizeNIB.instance.stringProvider = { $0.uppercased() }

本地化自定义组件

您可以通过实现 Localizable 协议为任何对象提供自定义本地化。UIKit 类默认提供了扩展。

extension UILabel: Localizable {
    open func localize(provider: LocalizedStringProvider) throws {
        text = text.flatMap { provider($0) }
    }
}

捕获所有块

您可以通过提供 LocalizeNIB.instance.localizeAll 块来自定义本地化过程或从本地化中排除某些对象。该块会为每个要本地化的对象调用。您如果在这个块中返回 true,则可以跳过此对象的本地化。

以下示例为所有带有 localizeAll 文本的 UILabel 组件提供自定义文本。

LocalizeNIB.instance.localizeAll = { object, stringProvider in
    if let label = object as? UILabel, label.text == "localizeAll" {
        label.text = "Caught by localizeAll block"
        return true                
    } else {
        print("About to localize \(object)")
        return false
    }
}

使用 LocalizeNIB 和 MainInterface

当您定制 LocalizeNIB.instance 的行为并使用默认的Storyboard时,必须在您的 UIApplicationDelegate 的 init 方法中进行所有定制,否则Storyboard将在您的自定义生效之前进行本地化。请参阅示例项目中的 AppDelegate 作为参考。

示例

要运行示例项目,请先克隆仓库,然后从 Example 目录运行 pod install

作者

Jindra Dolezy, [email protected]

许可证

LocalizeNIB 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。