如何本地化 iOS 中的数字?
How to localise the numbers in iOS?
我按照以下步骤对字符串进行了本地化。我在 .strings 文件中写了以下内容:
"Hello"="Hello";
在法语中,.strings 文件:
"Hello"="bonjour";
我将标签更改为:
self.myLabel.text = NSLocalizedString(@"Hello", nil);
到这里我已经很成功了。我有两种情况:
考虑数字 2.5,在英语系统中它是 2.5
,在法语系统中它是 2,5
。
如何本地化数字?
编辑:我使用了 属性 NSLocale,但我无法将结果数字格式化为字符串。
这是我转换成字符串后得到的:
NSString *localizedDecimalString = [NSString localizedStringWithFormat:@"%f",distance];
result is 7 324,253011 //which is ok
我想在末尾附加 km,所以我尝试将其转换回 double:
double newlyChangedNumber = [localizedDecimalString doubleValue];
result is 7.0 //I should get 7324253011 here
我怎样才能得到像 7 324,25 公里这样的东西?
您可以 "translate" 使用区域设置的号码。
例如,要显示一个浮点数,您可以这样做:
NSString *localizedString = [NSString localizedStringWithFormat:@"%3.2f", myNumber];
此方法将使用系统的语言环境([NSLocale currentLocale]
的结果)。要使用自定义语言环境,请使用 initWithFormat:locale:
或 initWithFormat:locale:arguments:
方法。
有关详细信息,请阅读 Formatting Data Using the Locale Settings。
UPDATE(适应问题的更新)
要在末尾添加 km
,只需像这样编辑格式字符串:
NSString *localizedDecimalString = [NSString localizedStringWithFormat:@"%f km",distance];
顺便说一下,[localizedDecimalString doubleValue];
不起作用,因为它需要一个点 (.
) 小数分隔符和一个逗号千位分隔符 (,
)。因此,它只是进行转换,直到遇到意外字符,在本例中为 space。所以,从 7 324,253011
它只转换了 7
。它适用于英文版 (7,324.253011
)。要将本地化数字的字符串转换回 double/float,您必须使用 NSNumberFormatter
.
NSNumberFormatter
处理这个。适当设置 the locale
property 即可。
另请参阅开源 FormatterKit,例如,它可以在“1st、2nd、3rd”和“1ère、2ème、3ème”之间进行转换。
我按照以下步骤对字符串进行了本地化。我在 .strings 文件中写了以下内容:
"Hello"="Hello";
在法语中,.strings 文件:
"Hello"="bonjour";
我将标签更改为:
self.myLabel.text = NSLocalizedString(@"Hello", nil);
到这里我已经很成功了。我有两种情况:
考虑数字 2.5,在英语系统中它是 2.5
,在法语系统中它是 2,5
。
如何本地化数字?
编辑:我使用了 属性 NSLocale,但我无法将结果数字格式化为字符串。
这是我转换成字符串后得到的:
NSString *localizedDecimalString = [NSString localizedStringWithFormat:@"%f",distance];
result is 7 324,253011 //which is ok
我想在末尾附加 km,所以我尝试将其转换回 double:
double newlyChangedNumber = [localizedDecimalString doubleValue];
result is 7.0 //I should get 7324253011 here
我怎样才能得到像 7 324,25 公里这样的东西?
您可以 "translate" 使用区域设置的号码。
例如,要显示一个浮点数,您可以这样做:
NSString *localizedString = [NSString localizedStringWithFormat:@"%3.2f", myNumber];
此方法将使用系统的语言环境([NSLocale currentLocale]
的结果)。要使用自定义语言环境,请使用 initWithFormat:locale:
或 initWithFormat:locale:arguments:
方法。
有关详细信息,请阅读 Formatting Data Using the Locale Settings。
UPDATE(适应问题的更新)
要在末尾添加 km
,只需像这样编辑格式字符串:
NSString *localizedDecimalString = [NSString localizedStringWithFormat:@"%f km",distance];
顺便说一下,[localizedDecimalString doubleValue];
不起作用,因为它需要一个点 (.
) 小数分隔符和一个逗号千位分隔符 (,
)。因此,它只是进行转换,直到遇到意外字符,在本例中为 space。所以,从 7 324,253011
它只转换了 7
。它适用于英文版 (7,324.253011
)。要将本地化数字的字符串转换回 double/float,您必须使用 NSNumberFormatter
.
NSNumberFormatter
处理这个。适当设置 the locale
property 即可。
另请参阅开源 FormatterKit,例如,它可以在“1st、2nd、3rd”和“1ère、2ème、3ème”之间进行转换。