2017-07-03 54 views
-4

您如何本地化不是字符串的東西?例如,具有價值的硬幣。C#非字符串本地化

美國

,有5枚基本的硬幣:

Dollar: 1.00 
Quarter :.25 
Dime: .10 
Nickel: .05 
Penny: .01 

但在加拿大,有7:

Toonie: 2.00 
Loonie: 1.00 
Half Dollar: .50 
Dollar: 1.00 
Quarter :.25 
Dime: .10 
Nickel: .05 
Penny: .01 

什麼是本地化這樣的事情的最好方法?

+0

資源文件可能包含字符串以外的其他對象。 – Joey

+1

他們在加拿大說「en-CA」,呃。和「fr-CA」,oui。 –

回答

1

首先,l10n和i18n必須覆蓋的不僅僅是字符串,例如,圖標和圖像可能與區域設置相關。因此,您可以將任意非字符串數據放入資源中。

在特定情況下,我只是把列表轉換爲字符串和定位是:

en-US 1,Dollar;.25,Quarter;.1,Dime;.05,Nickel;.01,Penny 
en-CA 2,Toonie;1,Loonie;1,Dollar;.5,Half Dollar;... 

,然後解析該字符串,並建立自己的硬幣面值的名單。你的代碼顯然已經能夠處理任意這樣的列表。

+0

想像序列化json的對象是可以接受的嗎?還是會被認爲「太重」? – KevinA

+1

這完全沒問題。資源存儲的內容並不重要,但更多的是如何處理它。每次遇到硬幣值時,反序列化/解析資源字符串的效率會很低。選擇的方法應該是隻反序列化/解析一次然後緩存它。因爲無論如何您需要有一個處理這種「複雜」資源的服務方法(即這裏的服務方法需要一個硬幣值並返回本地硬幣文本),這可以透明地完成。 – ckuri