2016-11-22 49 views
0

我在我的項目中支持幾種語言,包括法語。localizedStringWithFormat顯示法語爲NSNumber對象的空間

self.lblMax.text=[NSString localizedStringWithFormat:@"%@%@",[NSNumber numberWithFloat:[self.arrValues.lastObject floatValue]],self.strUnit]; 

在上面的代碼行,arrValues由具有[NSNumber numberWithFloat:val]對象列表。我將lastObject作爲最大數字,並通過localizedStringWithFormat方法NSString追加其單位。

讓說,arrValues陣列的lastobject是24000所以我得到的值「24個000ms」(有空格),而不是正常的「24000ms」

,因爲我已設置的法語和法國區兩者。

有時它在UILabel中顯示逗號「24,000ms」,但實際值僅爲24000。我用stringByReplacingOccurence方法刪除逗號。

請幫助和糾正我如果我爲法語本地化做錯了什麼。

由於提前,

回答

0

顯示數量24000爲24 000於部分地區,包括法國完全正常的。有些語言環境顯示爲24,000。有些顯示爲24.000。有些人可能會以其他方式展示。你所看到的沒有任何問題。

您不妨考慮使用NSNumberFormatter來格式化數字。

如果您的應用僅支持iOS 10及更高版本,則應考慮使用NSMeasurementNSMeasurementFormatter而不是創建自己的格式字符串,以確保您的編號和單位能夠針對給定的語言環境正確顯示。

+0

是的,即將到來的空間數量(24 000)是正常的幾個地方,但法語十進制數字顯示爲逗號分隔(24,000)因此,在我的應用程序的一些十進制值(浮動)它顯示24,000和一些數字其中沒有任何小數點,它顯示的空間像24 000.在我的情況下,24000被添加到[NSNumber numberWithFloat:val]數組中,其中val是一個浮點值。我調試它,同時通過本地化的字符串分配給UILabel它的插入空間。 –

+0

在iOS和OS X中,當數字格式爲區域設置fr_FR時,數字24000被格式化爲24000(空格),而不是逗號。逗號用於分數,而不是分組。你所看到的是正確的行爲。 – rmaddy