static void

Globalization

Microsoft language portal has a useful lookup of technical translations in Microsoft applications.

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)

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>