是否可以在web.config文件中本地化appSettings信息?

时间:2010-04-06 13:54:24

标签: .net asp.net configuration localization

我有这样的想法:

<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设置被设置为空字符串)。

4 个答案:

答案 0 :(得分:5)

您不应将本地化数据存储在config个文件中。

使用附属程序集和资源文件进行本地化。

如果你所拥有的只是少量物品,那么在config中保留物品可能没问题,但经验表明物品数量会增加,直到最终成为维护噩梦。

有关更多详细信息,请参阅this指南(ASP.NET 2.0中的全局化和本地化)。

答案 1 :(得分:2)

如果真的只有几个设置,那么上面的建议就可以了。我不认为ASP.NET中有任何固有支持来本地化配置设置。

答案 2 :(得分:0)

为什么不拥有appsettings.culture文件并将其复制到您的应用程序文件夹中。根据应用程序的文化,您可以使用正确的本地化应用程序设置文件覆盖appconfig。

答案 3 :(得分:-1)

将此添加到web.config的configSections部分:

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

将此添加到<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"];