我有这样的想法:
<appSettings>
<add key="ConfigName" value="configuration" culture="1033" />
<add key="ConfigName" value="konfiguracja" culture="1045" />
</appSettings>
但the add
element只有2个属性 - key
和value
,所以我猜它不受支持。
我想到的下一件事是:
<appSettings>
<add key="ConfigName-1033" value="configuration" />
<add key="ConfigName-1045" value="konfiguracja" />
</appSettings>
有人能提出更好的解决方案吗?
更新 - 我实施的解决方案:
将此信息移至资源文件(Oded's answer)的缺点是,无法再在开发人员和测试人员的计算机上轻松修改此信息。
然而,这就是我所做的 - 我将设置保留在web.config
文件中(它们无法进行本地化,但可以修改它们而无需重新编译代码)和已添加它们是资源文件(它们可以被本地化;它们仅在生产环境中使用,其中web.config
设置被设置为空字符串)。
答案 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"];