How to specify a custom culture?

2019-04-12 23:52发布

问题:

I have a web project which will be used by multiple clients. I'd like to specify string in resource files so the text on the pages can be dynamic depending on which client the deployment is configured for.

For instance, I wanted to set the globalization element's uiCulture attribute in the Web.config set to "Client1" or "Client2" depending on the deployment.

Then, I would have these resource files:

  • App_GlobalResources\MySite.Client1.resx
  • App_GlobalResources\MySite.Client2.resx
  • App_LocalResources\Default.aspx.Client1.resx
  • App_LocalResources\Default.aspx.Client2.resx

Etc., etc. However, it appears that uiCulture has to be an actual/real culture. I don't want to fake it and pretend that "Client1" is "en-US" and "Client2" is "es-MX" or something like that.

How can I load resources for a specific "mode"?

Update The specific issue I'm having is that when I specify a custom UI Culture (Client1 or en-US-Client1), the resource files in my project don't seem to be compiled correctly. E.g. I end up with two classes name "MySite". Additionally, it doesn't looks like a custom culture can be provided in the Web.config (<globalization uiCulture="en-US-Client1"/>); I get the following error:

The tag contains an invalid value for the 'uiCulture' attribute.

回答1:

I had exactly the same problem. When I registered custom cultures I couldn't setup the new culture in the web.config. Also switching it in the code wasn't working - application was using default culture. This was resolved when I cleaned up the solution and manually removed bin and obj folders.

BTW. Please double check that you have the new cultures really installed i.e. in IE browser: Tools -> Internet Options -> Languages