簡體   English   中英

如何為C#中的本地化創建一個中性的后備衛星資源?

[英]How do I create a neutral fallback satellite resource for localization in C#.?

我正在嘗試修改現有的WPF應用程序以進行本地化。 我的限制之一是所有資源(包括默認的美國后備資源)必須是衛星資源。 它們都不能嵌入到主部件中。

通過對Codeplex的閱讀,我發現我需要做的就是在AssemblyInfo.cs文件中進行以下更改。

[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]

當我這樣做時,我在應用程序啟動時遇到一個異常:

找不到適合於指定區域性或中性區域性的任何資源。 確保在編譯時已將“ XXX.YYY.ZZZ.g.en-US.resources”正確地嵌入或鏈接到程序集“ XXX.YYY.ZZZ”中,或者確保所需的所有附屬程序集均已加載並完全簽名。

如果我轉回將后備資源(en-US)放入主程序集中,則一切正常。 根據我的閱讀,如果您希望將后備資源作為衛星資源,則必須具有針對該語言環境的特定資源(即,必須具有Resources.en-US.resx)。 我對么?

在我看來,除了g(.g.en-US)之外,我似乎很討厭。 這表示什么嗎? 我的任何資源文件中都不存在g?

我在正確創建資源嗎? 我首先創建一個通用的Resources.resx文件,並將所有字符串放入其中。 然后,我只需在Visual Studio中復制/粘貼並為每個特定的語言環境(ar,es-MX等)重命名。 然后,進行適當的翻譯。

現在,我僅關注一個項目資源文件。 也許它掛在另一個沒有資源文件的美國版的項目上了? 如果是這樣,是否有任何方法可以使Visual Studio告訴我有關它真正掛在身上的更多信息?

簡而言之,您對資源文件和需要構建的內容的理解似乎是正確的。

.g用於已編譯的XAML文件,並自動為您構建。 這里沒有什么特別的或不可思議的事情。

通常,后備資源嵌入在主程序集中。 如果您不這樣做,則必須為要進行的每種文化創建一個衛星資源程序集,以及一個美國英語版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM