2012-02-05 82 views
1

認爲我明白了,但有幾個方面讓我感到困惑。假設我想在德國,西班牙和美國爲MyApp本地化字符串。.net resx文件和本地化

MyApp.resx 
MyApp.de-DE.resx 
MyApp.es-ES.resx 
MyApp.en-US.resx // this *feels* redundant 

最後雷克斯文件(「EN」)將具有相同的鍵和值作爲「中性」之一,因爲我是美國人開發的,但是...我都需要?

我可以猜出答案,但它似乎令人困惑,儘管可能是因爲所有MSDN文檔都解釋了最終的降落,衛星和中性語言。

有人可以與國際發展經驗解釋爲什麼或爲什麼不以一種(非常)簡單的方式?如果我在做WPF,Silverlight,ASP或者其他一些.Net變體,那會很重要嗎?

乾杯,
Berryl

+0

相當困難的猜測你是如何得到它們,本地化通常與GUI組件來完成。你會使用MyApp.en-GB.resx,所以你不會向女王說色。詢問寫下它的人。 – 2012-02-05 23:00:09

+0

@Hans Passant。我的文件是通過Visual Studio生成的。一點也不確定我明白你的觀點,除了美國英語與英國不同之外。請澄清。 – Berryl 2012-02-05 23:07:08

+0

@HansPassant。我相信,任何能夠回答這個知識的人都會忽略en.Us作爲特定的文化方面並不是問題的焦點! – Berryl 2012-02-05 23:09:13

回答

4

如果主要部件(MyApp.resx)的資源在EN-US區域性,你並不需要創建一個MyApp.en-US.resx文件。如果沒有發現這種文化的衛星組件,資源管理器將回退到主組件中的資源。

0

同意托馬斯。如果您的應用程序的主要語言爲en-us比你只需將主資源所有的字符串和這個字符串的所有翻譯(如德語,法語等),在相應的衛星資源文件。

例如 - 主要語言是En-Us,但你也想支持英國人,德國人,西班牙人。因此,您將所有原始字符串放在默認資源文件中,例如Resources.resx。然後創建Resources.en-GB.resx,Resources.de-De.resx,Resources.es-ES.resx並把有原始字符串的翻譯。

如果某些字符串在美國和英國版本中相同,則只需從Resources.en-GB.resx文件中刪除這些字符串即可。因爲第一個衛星組件將被檢查資源,並且如果沒有找到資源字符串 - 將使用該字符串的主程序集版本。

相關問題