版本:MiawKit 1.2.1

MiawKit 1.2.1

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布上次发布2015年1月

Kristian Andersen 维护。




MiawKit 1.2.1

MiawKit 是一个用于本地化 iOS 和 OS X 应用的实用工具集合。该工具包由三个不同的部分组成,它们可以很好地协同工作。第一部分是一系列用于替换 `NSLocalizedString` 的函数。第二部分是一系列 UIKit 和 AppKit 类别,如标签和按钮,使得单视图部分的本地化更容易。最后一部分是一个脚本,可以将您字符串文件中的本地化密钥转换为代码中的常量。

入门

MiawKit 支持同时使用 CocoaPodsCarthage。如果您使用 CocoaPods,请在您的 `Podfile` 中添加此行:

pod 'MiawKit', '~> 1.2'

如果您打算使用 MiawKit 的脚本部分,您将需要手动将 `miaw 脚本` 复制到您项目的根目录中。

miaw

MiawKit 的一个重要部分是它的命令行实用工具本身。这是一个生成所有本地化密钥常量的简小 Ruby 脚本。它可以避免在代码中出现“字符串类型”的键,并有助于 Xcode 自动完成您的本地化键。`miaw` 通过搜索项目目录中的所有位于 `.lproj` 目录下的 `.strings` 文件来工作。它生成包含每个找到的键的常量的 `MKLocalizableKeys.h` 文件。每个常量都会用找到的该键的所有本地化文档化。以下是一个例子

/*!
 * "Let's play Wordbase!"
 * All translations:
 * @b da@: "Lad os spille Wordbase!"
 * @b en@: "Let's play Wordbase!"
 * @b es@: "¡Vamos a jugar a Wordbase!"
 * @b fi@: "Pelataan Wordbase-peliä!"
 * @b nb@: "La oss spille Wordbase!"
 * @b sv@: "Spela Wordbase med mig!"
 */
static NSString * const RK_FACEBOOK_INVITE_TITLE = @"RK_FACEBOOK_INVITE_TITLE";

XCode 甚至足够智能,可以通过在本地化键常量上按下 Alt-click 来显示文档,从而查看键的翻译。

请确保将 `miaw` 文件复制到您项目的根目录,并运行以下命令:

./miaw --g

这将生成在您根目录中的 `MKLocalizaableKeys.h` 文件。将此文件包含到您的 Xcode 项目中,您就准备就绪了。

运行 `miaw -h` 了解如何使用 `miaw` 的更多信息。

MKLocalization

MiawKit 提供了一个简单的 API 用于注册本地化更改。在您的代码库中,当它们被显示或语言更改时需要更新以进行本地化的类可以使用 MKLocalizationregisterForLocalization: 方法进行更改注册

/*!
 * Register an object implementing the MKLocalizable protocol
 * for localization. Calling this method will invoke the
 * -shouldLocalize method of the passed object immediately. It
 * will also invoke the method if the preferred language changes.
 * @param localizableObject The object to register for localization
 */
+ (void)registerForLocalization:(id<MKLocalizable>)localizableObject;

您的类需要符合 MKlocalizable 协议,当需要本地化更改时,该协议会调用 shouldLocalize。以下是一个如何在 UIViewController 中使用 API 的示例。

- (void)viewDidLoad {
    [self viewDidLoad];

    [MKLocalization registerForLocalization:self];
}

- (void)shouldLocalize {
    [self.awesomeLabel mk_localize];
    [self.awesomeOtherLabel mk_localizeWithFormat:MK_AWESOME_OTHER_LABEL, self.awesomeValue];
}

如果您想更改应用内的语言,可以使用 changeLocalizationTo: 来更改语言。所有注册对象将重新本地化。

/*!
 * Change the preferred language to a given language. Changing the
 * preferred language will invoke the -shouldLocalize method of all
 * registered localizable objects.
 * @param language The language identifier for the new language
 */
+ (void)changeLocalizationTo:(NSString *)language;

Apple 没有提供任何官方 API 来支持与应用程序系统或用户区域设置不同的应用程序。MiawKit 使用将 AppleLanguages 设置在 [[NSUserDefaults] standardDefaults] 中的当前首选语言代码的约定。请注意,依靠的其他第三方库可能不遵循此约定。

UIKit 分类

MiawKit 为 UIButtonUILabel 提供了有用的分类方法,以简化 UI 元素的本地化。这两个分类共享使用标题作为键进行本地化的方法

[self.awesomeLabel mk_localize];

或给出键

[self.awesomeLabel mk_localize:MK_AWESOME_BUTTON];

或使用格式化字符串

[self.awesomeLabel mk_localizeWithFormat:MK_AWESOME_BUTTON, self.awesomeValue];