2010-04-06 69 views
4

我想到的是這樣的:是否可以在web.config文件中本地化appSettings信息?

<appSettings> 
<add key="ConfigName" value="configuration" culture="1033" /> 
<add key="ConfigName" value="konfiguracja" culture="1045" /> 
</appSettings> 

the add element只有2個屬性 - keyvalue,所以我想它不支持。

是我腦海接下來的事情是:

<appSettings> 
<add key="ConfigName-1033" value="configuration" /> 
<add key="ConfigName-1045" value="konfiguracja" /> 
</appSettings> 

任何人可以提出一個更好的解決方案嗎?


更新 - 解我實現:

移動這些信息資源文件(Oded's answer)的缺點是,它不再能夠輕鬆地在開發者和測試者的機器修改。

然而,這裏就是我所做的 - 我留在web.config文件中的設置(不能是局部的,但他們可以無需重新編譯代碼進行修改)加入他們的資源文件(也可以是本地化;它們僅在生產環境中使用,其中web.config設置設置爲空字符串)。

回答

5

您不應該在config文件中存儲本地化數據。

使用衛星程序集和資源文件進行本地化。

如果你只有少量物品,在config中放置東西可能沒問題,但經驗表明,物品數量會增加,直到最終成爲維護噩夢。

請參閱this指南(全球化和本地化在ASP.NET 2.0中揭祕)瞭解更多詳情。

+1

@klausbyskov:我做了,因爲這個答案沒有回答這個問題(沒有冒犯當然是@Oded)。雖然這裏介紹的信息是現貨,但它很無響應,問題是如何本地化appSettings,而不是「什麼是存儲本地化數據的最佳方式」。 – 2010-04-06 14:09:31

+0

我也想知道。這是唯一正確的答案。此外,從不向用戶公開的內容不應該被本地化。 「ConnectionString」應該總是「ConnectionString」..我最討厭的一件事是開發人員本地化代碼。代碼應該是英文,句號。 – mare 2010-04-06 14:10:55

+1

@Ben Collins--當經驗告訴你程序員要做的事情顯然是錯誤的,你有責任向他們指出。所以,它也正在相互關於最佳實踐的教育,而不是堅持不良/不正確的做法。 – Oded 2010-04-06 14:27:51

2

如果確實只有幾個設置,上面的建議只能用於花花公子。我不認爲在ASP.NET中有本地化配置設置的固有支持。

0

爲什麼不能有一個appsettings.culture文件並將其複製到您的應用程序文件夾。基於應用程序的文化,您可以使用正確的本地化應用程序設置文件覆蓋appconfig。

+0

我可以自動訪問這個文件,即設置appSettings的當前文化,然後使用'WebConfigurationManager.AppSettings'? – 2010-04-06 14:09:40

+0

我認爲你可以使用WebConfigurationManager.OpenWebConfiguration(configPath)來做到這一點。 – Ikaso 2010-04-06 14:23:02

-1

添加到您的web.config中的configSections部分:

<section name="ConfigNames" type="System.Configuration.NameValueSectionHandler" /> 

給你的web配置添加<system.web>...</system.web>部分之外:

<ConfigNames> 
    <add key="configuration" value="1033"/> 
    <add key="konfiguracja" value="1045"/> 
</ConfigNames> 

然後你就可以訪問你喜歡這個設置:

var configNames = (NameValueCollection)ConfigurationManager.GetSection("emailLists"); 
//and get at them however you like: 
var culture = configNames["konfiguracja"]; 
+0

這在語義上(邏輯上)是錯誤的。如果有的話,應該這樣做:。您不需要本地化鍵(??),本地化值 - 這是正確的模式,您可以在web.config之外查看它,就像在資源文件中一樣。 – mare 2010-04-06 14:12:59

+0

我不知道他想要什麼 - 我認爲這個數字就是價值。我舉了一個可以工作的例子。而不是在你的appSettings中有一百萬行,這是很好的保持不同的設置分開 - 如果你不想這樣很好,這只是一個建議,但這樣做不可能是'錯誤' – BritishDeveloper 2010-04-06 14:21:46

+0

_configuration_和_konfiguracja_是兩種不同文化的_ConfigName_設置值(1033和1045)。 – 2010-04-06 14:45:51

相關問題