i18n和数字范围

时间:2016-02-03 22:00:17

标签: ios objective-c localization

我了解如何使用NSNumberFormatterNSLocalizedString创建字符串,以便显示的数字字段正确使用句点和逗号来表示i18n方面。

[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSString *numberString = [numberFormatter stringFromNumber:@(11.0987)];
rangeStartLabel.text = [NSString stringWithFormat:NSLocalizedString(@"Start range: %@ ", nil), numberString];

但有没有办法对显示两个十进制数之间的范围进行相同的操作?现在,我将预先计算的小数范围计算为NSStrings(例如@"119.3-124.4"),以便在屏幕上显示。如果我想国际化字符串,我将解析字符串以获取两个数字,为​​每个数字使用NSNumberFormatter,然后在中间用短划线连接结果以创建NSString最终结果,其中包含句点的句点或逗号根据需要分隔。或者我会为两个国际化的十进制字符串创建两个标签,并在其间放置一个带有破折号的标签。

但似乎应该有一种方法可以同时将整个字符串国际化。

1 个答案:

答案 0 :(得分:0)

为什么不像你的字符串文件中的任何其他字符串那样使用硬编码字符串?

在您的en.strings文件中:

"119.3-124.4" = "119.3-124.4";

并在de.strings文件中(例如)你有:

"119.3-124.4" = "119,3-124,4";

您甚至可以将-更改为给定区域设置的其他适当格式。

然后使用正常的NSLocalizedString宏,就像您应用中的任何其他i18n文字一样。

否则,如果您想在代码中使用两个数字值创建范围字符串,请按照您的说明进行操作。使用NSNumberFormatter构建两个数字字符串,将它们与-或其他适当的区域设置分隔符一起附加,并将一个结果范围字符串分配给您的标签。