static void

Globalization

Setting the culture

On all string/number/date operations use the optional formatting argument (FXCop will complain if you don't). Either System.Globalization.CultureInfo.CurrentCulture or .InvariantCulture (if applicable).

See Intro (Rick Strahl); see also serverside.net and ondotnet.com

For the web, the HTTP header contains user languages (set within IE-Tools-Internet Options-Languages) which you can read in Request.UserLanguages[0] (for the first one). ASP 1: Read it (or a cookie from a user form) in Global.asax Session_Start. In ASP 2 it's automatic.

Resource Files

Use assembly linker for satellite assemblies: al /t:lib /culture:en-UK /embed:strings.en-UK.resources /out:myapp.resources.dll

Asp 2+

App_GlobalResources (Resources namespace, with intellisense) or App_LocalResources (page specific) .No more ResourceManager as in .Net 1!

<p>Implicit Local:
    <asp:Label ID="Label0" runat="server" Text="Hello world"
    meta:resourcekey="LabelResource1" /></p>
<p>Explicit Local:
    <asp:Label ID="Label1" runat="server"
    Text='<%$ Resources:HelloWorld %>' /></p>
<p>Global:
    <asp:Label ID="Label2" runat="server"
    Text='<%$ Resources:Resource1, GlobalKey %>' /></p>