BRLocalize 0.11.1

BRLocalize 0.11.1

测试已测试
Lang语言 Obj-CObjective C
许可证 Apache 2
发布最新发布2016 年 5 月

Matt Magoffin 维护。



BRLocalize 0.11.1

BRLocalize 提供了一种方式,可以在分级的 JSON 文件中存储本地化字符串,然后在 NIB 文件中使用占位符字符串自动替换为它们的本地化值。

这是一个示例 JSON 字符串文件,strings.json

{
    "login" : {
        "title" : "Sign in"
    }
}

现在您可以将它本地化,就像任何其他文件一样(例如,移动到 XX.lproj 目录,并在您的应用中包含 JSON 的本地化变体)。

代码本地化

如果您愿意,可以通过代码进行本地化。例如,您可能想要将 登录 视图控制器标题设置为 login.title,如下所示

- (void)viewDidLoad {
    [super viewDidLoad];
    [self localizeWithAppStrings:[NSBundle appStrings]];
}

- (void)localizeWithAppStrings:(NSDictionary *)strings {
    self.navigationItem.title = [strings stringForKeyPath:@"login.title"];
}

appStrings 方法是在 NSBundle 上作为扩展提供的,而 stringForKeyPath: 是在 NSDictionary 上作为扩展提供的。

自动本地化

BRLocalize 为 UI 相关代码提供了某些钩子,以使应用本地化字符串的过程更轻松。这些钩子依赖于 BRLocalizable 协议

@protocol BRLocalizable <NSObject>

/**
Localize the receiver with a given dictionary of strings.

@param strings The strings data, typically loaded via the application's standard JSON strings file.
*/
- (void)localizeWithAppStrings:(NSDictionary *)strings;

@end

提供了两个主要钩子

  1. awakeFromNib - 任何符合 BRLocalizable 的对象,当调用 awakeFromNib 时将调用 localizeWithAppStrings:
  2. willMoveToWindow: - 任何符合 BRLocalizableUIView 类,当调用 willMoveToWindow: 时将调用 localizeWithAppStrings:

基于这些钩子,BRLocalize 提供了以下类的基于分类的实现,使它们符合 BRLocalizable

  1. UIBarButtonItem
  2. UIButton
  3. UILabel
  4. UINavigationItem
  5. UISegmentedControl
  6. UITextField

所有这些都使用了在 NSString 上提供的 localizedStringWithAppStrings: 方法,该方法查找形式为 {some.key.path} 的字符串,并将其替换为在 JSON 字符串文件中找到的 some.key.path 值。