POLocalizedString 是一个替代 Apple 翻译系统的 gettext 翻译框架。
POLocalizedString 初始是 pomo-iphone 的一个分支。
特性
基本用法
Objective-C
#import <POLocalizedString/POLocalizedString.h>
NSInteger numApples = 10;
// Translate single string
NSLog(@"Gettext translated string: %@", POLocalizedString(@"Hi, this is gettext!") );
// Translate plural string
NSLog(@"Gettext translated plural: %@", POLocalizedPluralFormat(@"%d apple", @"%d apples", numApples) );
// Translate and format altogether
NSLog(@"Gettext translated plural: %@", [NSString stringWithFormat:POLocalizedPluralFormat(@"%d apple", @"%d apples", numApples), numApples]);
Swift
@import POLocalizedString
let numApples = 10
// Translate single string
print("Gettext translated string: %@", "Hi, this is gettext!".localized);
// Translate plural string
print("Gettext translated plural: %@", "%d apple".localized(plural: "%d apples", n: numApples) );
// Translate and format altogether
print("Gettext translated plural: %@", "%d apple".localized(plural: "%d apples", n: numApples, with: numApples);
POLocalizedString
会寻找以下模式的 .mo
或 .po
文件
%app-bundle-path/%language.%extension
其中 %language
是一个两位语言代码(例如 ru, en, es 等),%extension
通常为 mo
或 po
。由于 mo
文件格式更紧凑并且适合分发,它们具有更高的优先级。
例如,路径可能看起来是这样的
/MyApp.app/es.mo
安装
POLocalizedString 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中即可
pod "POLocalizedString"
Poedit
设置
如果您使用 Poedit,请按照以下说明设置 Objective-C 解析器。
转到 Poedit > 预设,并使用以下设置添加新解析器
-
扩展名列表:
*.m;*.mm;*.h;*.swift;
-
解析器命令:
xgettext --force-po -o %o %C %K %F -L ObjectiveC
-
关键字列表中的一个项目:
-k%k
-
输入文件中的一个项目:
%f
-
源代码字符集:
--from-code=%c
您还可以在解析器命令中使用 --add-comments=/
标志来启用翻译者注释。在这个例子中,所有以三个斜杠开始的注释将被视为翻译者注释。
目录
为您的目录设置以下关键字,以便 Poedit 与源代码一起工作
_
POLocalizedString
POLocalizedStringFromContext:2c,1
POLocalizedPluralString:3c,1,2
POLocalizedPluralStringFromContext:4c,1,2
POLocalizedStringInBundle:2
POLocalizedStringFromContextInBundle:3c,2
POLocalizedPluralStringInBundle:2,3
POLocalizedPluralStringFromContextInBundle:5c,2,3
许可
POLocalizedString 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。