1. 跟之前同样作界面,只是注意,把全部须要有多语言界面的文字都用label来作浏览器
2. 作完之后,在Solution Explorer里选中这个文件,选Tools->Generate Local Resourcecookie
3. 你会发现生成了一个目录,App_LocalResources;这个目录里多了一个resx的文件。好比你的aspx文件是default.aspx,它就会生成一个叫作default.aspx.resx的文件。ide
4. 打开这个文件看看,原来在label中的那些文字都跑到这里来了ui
5. 打开原来的aspx文件看看source,会发现源码变了:server
<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="Default2" title="Untitled Page" Culture="auto" meta:resourcekey="PageResource1" UICulture="auto" %>ip
…………资源
<asp:Localize ID="Localize1" runat="server" meta:resourcekey="Localize1Resource1"></asp:Localize>源码
6. 注意这里:meta:resourcekey="PageResource1" 和meta:resourcekey="Localize1Resource1" 这就表示这里的文字是从资源中读取的。it
7. OK如今来作另外一种语言的资源文件。很简单,copy Default.aspx.resx再paste一下,而后rename为Default.aspx.fr-fr.resx注意fr-fr是你要作的语言的名字。你们若是看dvdrip的话,应该以为这跟字幕文件很像吧?io
8. 有人说我怎么知道那个语言叫什么名字呢?很简单,打开ie,tools->internet options -> languages -> add,方框中间的就是了。
9. 如今开始编辑其余资源的文字。打开Default.aspx.fr-fr.resx,对照着原来的内容,把里面的内容改为法语的。
10. 到此为止,咱们就完成了第一阶段。ASP.Net会根据用户的语言偏好来选择显示的语言。把IE里的设置改一下,在咱们刚说过的地方改为fr-fr,打开这一页看看?若是是法语,恭喜你。若是不是,回头重作……
11. OK,下一步,咱们要容许用户选择本身的语言,而不是自动。咱们会用cookie存取用户的选择。在Application级别,咱们读取这个cookie并设置适当的culture和uiculture。固然,第一次进来的时候,咱们仍是要读取浏览器的设置,这个能够从Request.UserLanguages中得到。
Private SupportedLanguages As String() = {"en-us", "fr-fr"}
Public Const LANGUAGE_COOKIE_NAME As String = "UserLanguage"
Sub Application_AcquireRequestState(ByVal sender As Object, ByVal e As EventArgs)
Dim languageCookie As HttpCookie = Request.Cookies(LANGUAGE_COOKIE_NAME)
Dim language As String = String.Empty
If (languageCookie Is Nothing) Then
Dim userLanguages As String() = Request.UserLanguages
Dim index As Integer
For i As Integer = 0 To userLanguages.Length - 1
index = Array.IndexOf(SupportedLanguages, userLanguages(i))
If index >= 0 Then
language = SupportedLanguages(index)
Exit For
End If
Next
If language = String.Empty Then _
language = SupportedLanguages(0)
Response.Cookies.Add(New HttpCookie(LANGUAGE_COOKIE_NAME, language))
Else
language = languageCookie.Value
End If
Dim culture As CultureInfo = New CultureInfo(language)
System.Threading.Thread.CurrentThread.CurrentUICulture = culture
End Sub
12. 而后咱们要有一页让用户选择语言,好比咱们用两个button来作。在点击这个button以后,咱们要设置这个cookie为适当的语言:
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
SetLanguage("fr-fr")
End Sub
Protected Sub SetLanguage(ByVal language As String)
Response.Cookies(Global.ASP.global_asax.LANGUAGE_COOKIE_NAME).Value = language
Dim culture As CultureInfo = New CultureInfo(language)
System.Threading.Thread.CurrentThread.CurrentUICulture = culture
Server.Transfer(Request.Path)
End Sub
注意最后的Server.Transfer(Request.Path) ,这是为了从新读取这一页,这样这一页也会显示新选择的语言。
13. 最后咱们要去掉ASP.Net的自动选择。从Default.aspx中去除:
Culture="auto" UICulture="auto"
14. 打开来看一看吧!