代码之家  ›  专栏  ›  技术社区  ›  Marek Grzenkowicz

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

  •  4
  • Marek Grzenkowicz  · 技术社区  · 14 年前

    我有这样的想法:

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

    但是 the add element 只有两个属性- key value ,所以我想它不受支持。

    接下来我想到的是:

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

    有谁能提出更好的解决办法吗?


    更新-我实施的解决方案:

    将此信息移动到资源文件的缺点( Oded's answer )事实上,在开发人员和测试人员的机器上,它再也不容易修改了。

    不过,这是我做的-我把设置留在 web.config 文件(它们不能本地化,但可以修改,无需重新编译代码) 将它们添加到资源文件中(它们可以本地化;仅在生产环境中使用,其中 小精灵 设置设置为空字符串)。

    4 回复  |  直到 14 年前
        1
  •  5
  •   Oded    14 年前

    不应将本地化数据存储在 config 文件夹。

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

    如果你只有少量的东西 配置 可能没问题,但经验表明,项目数量将不断增长,直到这最终成为维护的噩梦。

    this 有关详细信息,请参阅指南(在ASP.NET 2.0中解除全球化和本地化的神秘化)。

        2
  •  2
  •   Ben Collins    14 年前

    如果真的只有几个设置,你上面的建议就行了。我认为在asp.net中没有任何对本地化配置设置的内在支持。

        3
  •  0
  •   Ikaso    14 年前

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

        4
  •  -1
  •   BritishDeveloper    14 年前

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