2011-05-09 114 views
3

我一直在嘗試獲取文化特定的資源,以在asp.net mvc 3應用程序上工作。resx資源或全球化資源數據庫

如果我有一個LanguageResources.resx和LanguageResources.en-UK.resx在我的App_GlobalResources文件夾,然後我得到一個錯誤「命名空間的‘資源’已經包含了‘LanguageResources’的定義」

這是我嘗試獲取文化特定資源的一系列問題已經結束。我必須說,我對Microsoft提供的使用此功能的文檔印象不深。

我正在考慮使用數據庫表來存儲我的文化特定的字符串,然後我可以建立一個字典,將所有可用於我的控制器和視圖的值。

是否有其他人做過這樣的決定,或者對於使用數據庫進行文化特定字符串相關的性能問題有任何直接的知識?

還有其他人放棄了資源嗎?

+0

可能不相關,但您應該使用en-GB。英國沒有文化的代碼。 – 2011-05-10 07:22:58

+0

我可以毫無問題地使用資源。我很感興趣,你有哪些其他問題? – alfizqu 2011-05-25 13:51:30

+0

我改變了文件來糾正文化代碼(我的錯誤!!),現在當我改變特定線程的文化時,它們不會生效。我遇到了很多問題,其中一個問題是必須使用publicResXFileCodeGenerator自定義工具,以便可以訪問這些字符串。這會很好,如果這工作! – Oliver 2011-05-28 22:52:18

回答

1

我必須承認,我試圖重現你的缺陷,我很成功。看起來,Visual Studio在添加something.en-UK.resx時會生成額外的類。奇怪。它不應該讓你在第一位添加這樣的東西,因爲沒有這樣的文化。

如何解決問題?只需添加LanguageResources.en-GB.resx和刪除
LanguageResources.en-GB.resx。這有幫助。

我不會使用數據庫來存儲與語言相關的資源,除非它們非常頻繁地更改或者必須由最終用戶輸入(即存在某種模板)。
使用數據庫會傷害Localizability並需要付出很多努力。很難正確設計(我在這方面看到很多錯誤)。除非你真的需要,否則不要走這條路。

+0

感謝您的幫助,它已經停止了這個錯誤,但現在.cs文件始終是空的,即使我使用上下文菜單選項運行自定義工具。這只是導致應用程序回退到我認爲的默認字符串,因爲我試圖用fo-FO測試一些奇怪的字符串,我嘗試過使用PublicResXFileCodeGenerator和全局默認自定義工具。我想我越來越近了,但我仍然認爲這是一個非常尷尬的過程。 – Oliver 2011-05-28 22:56:30

+0

我已經回答了這個問題,因爲我的問題是UK而不是GB。對於任何有問題的人閱讀,我設置Thread.CurrentCulture沒有結果。我需要設置Thread.CurrentUICulture來使用適當的資源。 – Oliver 2011-05-29 00:14:03