分享
 
 
 

ASP.Net 2.0中实现多语言界面的方法

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

1. 跟以前一样做界面,只是注意,把所有需要有多语言界面的文字都用label来做

2. 做完以后,在Solution Explorer里选中这个文件,选Tools->Generate Local Resource

3. 你会发现生成了一个目录,App_LocalResources;这个目录里多了一个resx的文件。比如你的aspx文件是default.aspx,它就会生成一个叫做default.aspx.resx的文件。

4. 打开这个文件看看,原来在label中的那些文字都跑到这里来了

5. 打开原来的aspx文件看看source,会发现源码变了:

<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="Default2" title="Untitled Page" Culture="auto" meta:resourcekey="PageResource1" UICulture="auto" %>

…………

<asp:Localize ID="Localize1" runat="server" meta:resourcekey="Localize1Resource1"></asp:Localize>

*********************************************************************

如果是其他的控件上的文字,基本上也是会自动生成的。比如button和gridview的:

<asp:Button ID="Button1" runat="server" meta:resourcekey="Button1Resource1" Text="Button1" /><br />

<asp:GridView ID="GridView1" runat="server" meta:resourcekey="GridView1Resource1">

<Columns>

<asp:BoundField HeaderText="Header1" meta:resourcekey="BoundFieldResource1" />

<asp:BoundField HeaderText="Header2" meta:resourcekey="BoundFieldResource2" />

</Columns>

</asp:GridView>

生成的resource如下:

*********************************************************************

6. 注意这里:meta:resourcekey="PageResource1" 和meta:resourcekey="Localize1Resource1" 这就表示这里的文字是从资源中读取的。

7. OK现在来做另一种语言的资源文件。很简单,copy Default.aspx.resx再paste一下,然后rename为Default.aspx.fr-fr.resx注意fr-fr是你要做的语言的名字。大家如果看dvdrip的话,应该觉得这跟字幕文件很像吧?

8. 有人说我怎么知道那个语言叫什么名字呢?很简单,打开ie,tools->internet options -> languages -> add,方框中间的就是了。

9. 现在开始编辑其他资源的文字。打开Default.aspx.fr-fr.resx,对照着原来的内容,把里面的内容改成法语的。

10. 到此为止,我们就完成了第一阶段。ASP.Net会根据用户的语言偏好来选择显示的语言。把IE里的设置改一下,在我们刚说过的地方改成fr-fr,打开这一页看看?如果是法语,恭喜你。如果不是,回头重做……

11.下一步,我们要允许用户选择自己的语言,而不是自动。我们会用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. 打开来看一看吧!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有