iOS 6+ 字符串本地化库
iOS(iOS 7之前)的本地化没有默认支持复数功能。该 ios-i18n 库旨在填补这一空白,并允许开发者将复数功能无缝集成到其本地化应用程序中,无论有多少地区。
从 iOS 7 和 Mac OS X 10.9 Mavericks 开始,Foundation 有能力根据复数和语法规则指定本地化字符串。您可以在国际化本地化指南中选择《处理名词复数和测量单位》部分了解更多信息。
ios-i18n 不兼容 Apple 的实现,并且不处理新的 ".stringsdict" 资源文件。
Smartling.i18n.framework
拖到项目中的 Frameworks
组。Build Settings
。#import <Smartling.i18n/SLLocalization.h>
int number = 42;
NSString *format = SLPluralizedString(@"%d apples", number, @"Comment");
NSString *text = [NSString stringWithFormat:format, number];
有四个函数用于检索复数字符串,与NSLocalizedString 类似。
NSString * SLPluralizedString(NSString *key, number, NSString *comment)
NSString * SLPluralizedStringFromTable(NSString *key,
NSString *tableName,
number,
NSString *comment)
NSString * SLPluralizedStringFromTableInBundle(NSString *key,
NSString *tableName,
NSBundle *bundle,
number,
NSString *comment)
NSString * SLPluralizedStringWithDefaultValue(NSString *key,
NSString *tableName,
NSBundle *bundle,
number,
NSString *defaultValue,
NSString *comment)
number 可以是任何原始类型(int、long、float、double)或 NSNumber。
在使用基础国际化时,本地化 .strings 文件应位于特定语言的文件夹中(如 en.lproj),而不是 Base.lproj 文件夹中。
ios-i18n 为每个键查询实现了资源回退。在运行时,SLPluralizedString 会检索与用户首选语言最接近的本地化字符串。
相比之下,Apple 实现的 NSLocalizedString 首先选择适当的本地化表,然后在此表中进行所有后续查询。有关此机制更详细的信息,请参阅[国际化支持] applei18n
ios-i18n 使用复数变体扩展了标准 .strings 文件格式。
键的扩展语法为:KEY##{规则}
。其中 KEY
是原始字符串键,而 规则
是以下复数规则之一:zero
、one
、two
、few
、many
、other
。
完整键的规则
部分符合CLDR规范中的复数形式。iOS-i18n 库将按照 CLDR 中定义的相同规则加载特定的翻译。
以下是对字符串键 %d 首歌曲找到
的示例资源文件
/* Number of songs from search results */
"%d songs found##{one}" = "One song found";
"%d songs found##{other}" = "%d songs found";
/* Number of songs from search results */
"%d songs found##{one}" = "Найдена %d песня";
"%d songs found##{few}" = "Найдено %d песни";
"%d songs found##{many}" = "Найдено %d песен";
"%d songs found##{other}" = "Найдено %d песен";
版权所有 2013 Smartling, Inc.
根据 Apache License 2.0 版本("许可证");除非符合许可证,否则您不得使用此作品。您可以在 LICENSE 文件中或通过以下链接获得许可证:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面协议,否则在本许可证下分发的软件按“原样”分词,不提供任何形式的保证或条件,无论是明示的还是隐含的。有关许可证的特定语言如何在许可证中规定权限和限制,请参阅许可证。