Objective-C的国际多元化Lib?
我正在将我的应用程序国际化,并正在寻找如何处理复数形式的解决方案。我遇到了一个项目,它从本质上抽象出了复数的国际化问题。下面是它的工作原理:Objective-C的国际多元化Lib?,objective-c,ios,internationalization,Objective C,Ios,Internationalization,我正在将我的应用程序国际化,并正在寻找如何处理复数形式的解决方案。我遇到了一个项目,它从本质上抽象出了复数的国际化问题。下面是它的工作原理: 语言可以遵循许多“复数规则”。每种语言都适用于多种复数规则中的一种(Mozilla的文档中有15种可能的复数规则)。例如,在规则为0的语言中(如中文),没有复数形式,因此只需要一种单词形式。在规则1的语言中(如德语),每个词有两种不同的复数形式。依此类推,取决于规则如何匹配 编写国际化字符串时,不仅要传递要国际化的字符串,还要传递要使名词复数的数字: pr
print(“您有“+num+”+PluralForm.get(num,downloads)+”)代码>
在Objective-C中,我们的做法会有很大不同:
NSString*str=[NSString stringWithFormat:NSLocalizedStringFromTable(@“%d项”),myNumber]代码>
当然,上述Objective-C示例并不能解决复数形式的问题
"%d Items Processed##{one}" = "1 Item Processed";
"%d Items Processed##{other}" = "%d Items Processed";
您可以使用SLPluralizedString函数查找字符串:
SLPluralizedString(@”%d Items Processed”, numItems, @”Number of items processed”);
翻译后的俄语文件应具有适当数量的语言键/值:
"%d Items Processed##{one}" = "%d элемент обработан";
"%d Items Processed##{few}" = "%d элемента обработано";
"%d Items Processed##{many}" = "%d элементов обработано";
"%d Items Processed##{other}" = "%d элемента обработано";
实际代码不需要根据语言进行更改。一个函数可以跨所有语言工作,并返回相应的翻译字符串
请随意分享评论、改进等。我对问题稍加修改,使其更具一般性。希望你们不介意。这看起来和苹果的stringsdict文件的想法相似。请参阅本手册的“处理名词复数和度量单位”部分