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. 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. 打开来看一看吧!
区域性/语言名称
|
区域性标识符
|
区域性
|
""(空字符串)
|
0x007F
|
固定区域性
|
af
|
0x0036
|
南非荷兰语
|
af-ZA
|
0x0436
|
南非荷兰语(南非)
|
sq
|
0x001C
|
阿尔巴尼亚语
|
sq-AL
|
0x041C
|
阿尔巴尼亚语(阿尔巴尼亚)
|
ar
|
0x0001
|
阿拉伯语
|
ar-DZ
|
0x1401
|
阿拉伯语(阿尔及利亚)
|
ar-BH
|
0x3C01
|
阿拉伯语(巴林)
|
ar-EG
|
0x0C01
|
阿拉伯语(埃及)
|
ar-IQ
|
0x0801
|
阿拉伯语(伊拉克)
|
ar-JO
|
0x2C01
|
阿拉伯语(约旦)
|
ar-KW
|
0x3401
|
阿拉伯语(科威特)
|
ar-LB
|
0x3001
|
阿拉伯语(黎巴嫩)
|
ar-LY
|
0x1001
|
阿拉伯语(利比亚)
|
ar-MA
|
0x1801
|
阿拉伯语(摩洛哥)
|
ar-OM
|
0x2001
|
阿拉伯语(阿曼)
|
ar-QA
|
0x4001
|
阿拉伯语(卡塔尔)
|
ar-SA
|
0x0401
|
阿拉伯语(沙特阿拉伯)
|
ar-SY
|
0x2801
|
阿拉伯语(叙利亚)
|
ar-TN
|
0x1C01
|
阿拉伯语(突尼斯)
|
ar-AE
|
0x3801
|
阿拉伯语(阿联酋)
|
ar-YE
|
0x2401
|
阿拉伯语(也门)
|
hy
|
0x002B
|
亚美尼亚语
|
hy-AM
|
0x042B
|
亚美尼亚语(亚美尼亚)
|
az
|
0x002C
|
阿泽里语
|
az-Cyrl-AZ
|
0x082C
|
阿泽里语(阿塞拜疆,西里尔语)
|
az-Latn-AZ
|
0x042C
|
阿泽里语(阿塞拜疆,拉丁语)
|
eu
|
0x002D
|
巴斯克语
|
eu-ES
|
0x042D
|
巴斯克语(巴斯克地区)
|
be
|
0x0023
|
白俄罗斯语
|
be-BY
|
0x0423
|
白俄罗斯语(白俄罗斯)
|
bg
|
0x0002
|
保加利亚语
|
bg-BG
|
0x0402
|
保加利亚语(保加利亚)
|
ca
|
0x0003
|
加泰罗尼亚语
|
ca-ES
|
0x0403
|
加泰罗尼亚语(加泰罗尼亚地区)
|
zh-HK
|
0x0C04
|
中文(香港特别行政区,中国)
|
zh-MO
|
0x1404
|
中文(澳门特别行政区)
|
zh-CN
|
0x0804
|
中文(中国)
|
zh-Hans
|
0x0004
|
中文(简体)
|
zh-SG
|
0x1004
|
中文(新加坡)
|
zh-TW
|
0x0404
|
中文(台湾)
|
zh-Hant
|
0x7C04
|
中文(繁体)
|
hr
|
0x001A
|
克罗地亚语
|
hr-HR
|
0x041A
|
克罗地亚语(克罗地亚)
|
cs
|
0x0005
|
捷克语
|
cs-CZ
|
0x0405
|
捷克语(捷克共和国)
|
da
|
0x0006
|
丹麦语
|
da-DK
|
0x0406
|
丹麦语(丹麦)
|
dv
|
0x0065
|
迪维希语
|
dv-MV
|
0x0465
|
迪维希语(马尔代夫)
|
nl
|
0x0013
|
荷兰语
|
nl-BE
|
0x0813
|
荷兰语(比利时)
|
nl-NL
|
0x0413
|
荷兰语(荷兰)
|
en
|
0x0009
|
英语
|
en-AU
|
0x0C09
|
英语(澳大利亚)
|
en-BZ
|
0x2809
|
英语(伯利兹)
|
en-CA
|
0x1009
|
英语(加拿大)
|
en-029
|
0x2409
|
英语(加勒比)
|
en-IE
|
0x1809
|
英语(爱尔兰)
|
en-JM
|
0x2009
|
英语(牙买加)
|
en-NZ
|
0x1409
|
英语(新西兰)
|
en-PH
|
0x3409
|
英语(菲律宾)
|
en-ZA
|
0x1C09
|
英语(南非)
|
en-TT
|
0x2C09
|
英语(特立尼达和多巴哥)
|
en-GB
|
0x0809
|
英语(英国)
|
en-US
|
0x0409
|
英语(美国)
|
en-ZW
|
0x3009
|
英语(津巴布韦)
|
et
|
0x0025
|
爱沙尼亚语
|
et-EE
|
0x0425
|
爱沙尼亚语(爱沙尼亚)
|
fo
|
0x0038
|
法罗语
|
fo-FO
|
0x0438
|
法罗语(法罗群岛)
|
fa
|
0x0029
|
波斯语
|
fa-IR
|
0x0429
|
波斯语(伊朗)
|
fi
|
0x000B
|
芬兰语
|
fi-FI
|
0x040B
|
芬兰语(芬兰)
|
fr
|
0x000C
|
法语
|
fr-BE
|
0x080C
|
法语(比利时)
|
fr-CA
|
0x0C0C
|
法语(加拿大)
|
fr-FR
|
0x040C
|
法语(法国)
|
fr-LU
|
0x140C
|
法语(卢森堡)
|
fr-MC
|
0x180C
|
法语(摩纳哥)
|
fr-CH
|
0x100C
|
法语(瑞士)
|
gl
|
0x0056
|
加利西亚语
|
gl-ES
|
0x0456
|
加利西亚语(西班牙)
|
ka
|
0x0037
|
格鲁吉亚语
|
ka-GE
|
0x0437
|
格鲁吉亚语(格鲁吉亚)
|
de
|
0x0007
|
德语
|
de-AT
|
0x0C07
|
德语(奥地利)
|
de-DE
|
0x0407
|
德语(德国)
|
de-LI
|
0x1407
|
德语(列支敦士登)
|
de-LU
|
0x1007
|
德语(卢森堡)
|
de-CH
|
0x0807
|
德语(瑞士)
|
el
|
0x0008
|
希腊语
|
el-GR
|
0x0408
|
希腊语(希腊)
|
gu
|
0x0047
|
古吉拉特语
|
gu-IN
|
0x0447
|
古吉拉特语(印度)
|
he
|
0x000D
|
希伯来语
|
he-IL
|
0x040D
|
希伯来语(以色列)
|
hi
|
0x0039
|
印地语
|
hi-IN
|
0x0439
|
印地语(印度)
|
hu
|
0x000E
|
匈牙利语
|
hu-HU
|
0x040E
|
匈牙利语(匈牙利)
|
is
|
0x000F
|
冰岛语
|
is-IS
|
0x040F
|
冰岛语(冰岛)
|
id
|
0x0021
|
印度尼西亚语
|
id-ID
|
0x0421
|
印度尼西亚语(印度尼西亚)
|
it
|
0x0010
|
意大利语
|
it-IT
|
0x0410
|
意大利语(意大利)
|
it-CH
|
0x0810
|
意大利语(瑞士)
|
ja
|
0x0011
|
日语
|
ja-JP
|
0x0411
|
日语(日本)
|
kn
|
0x004B
|
卡纳达语
|
kn-IN
|
0x044B
|
卡纳达语(印度)
|
kk
|
0x003F
|
哈萨克语
|
kk-KZ
|
0x043F
|
哈萨克语(哈萨克斯坦)
|
kok
|
0x0057
|
贡根语
|
kok-IN
|
0x0457
|
贡根语(印度)
|
ko
|
0x0012
|
朝鲜语
|
ko-KR
|
0x0412
|
朝鲜语(韩国)
|
ky
|
0x0040
|
吉尔吉斯语
|
ky-KG
|
0x0440
|
吉尔吉斯语(吉尔吉斯坦)
|
lv
|
0x0026
|
拉脱维亚语
|
lv-LV
|
0x0426
|
拉脱维亚语(拉脱维亚)
|
lt
|
0x0027
|
立陶宛语
|
lt-LT
|
0x0427
|
立陶宛语(立陶宛)
|
mk
|
0x002F
|
马其顿语
|
mk-MK
|
0x042F
|
马其顿语(马其顿,FYROM)
|
ms
|
0x003E
|
马来语
|
ms-BN
|
0x083E
|
马来语(文莱达鲁萨兰)
|
ms-MY
|
0x043E
|
马来语(马来西亚)
|
mr
|
0x004E
|
马拉地语
|
mr-IN
|
0x044E
|
马拉地语(印度)
|
mn
|
0x0050
|
蒙古语
|
mn-MN
|
0x0450
|
蒙古语(蒙古)
|
no
|
0x0014
|
挪威语
|
nb-NO
|
0x0414
|
挪威语(伯克梅尔,挪威)
|
nn-NO
|
0x0814
|
挪威语(尼诺斯克,挪威)
|
pl
|
0x0015
|
波兰语
|
pl-PL
|
0x0415
|
波兰语(波兰)
|
pt
|
0x0016
|
葡萄牙语
|
pt-BR
|
0x0416
|
葡萄牙语(巴西)
|
pt-PT
|
0x0816
|
葡萄牙语(葡萄牙)
|
pa
|
0x0046
|
旁遮普语
|
pa-IN
|
0x0446
|
旁遮普语(印度)
|
ro
|
0x0018
|
罗马尼亚语
|
ro-RO
|
0x0418
|
罗马尼亚语(罗马尼亚)
|
ru
|
0x0019
|
俄语
|
ru-RU
|
0x0419
|
俄语(俄罗斯)
|
sa
|
0x004F
|
梵语
|
sa-IN
|
0x044F
|
梵语(印度)
|
sr-Cyrl-CS
|
0x0C1A
|
塞尔维亚语(塞尔维亚,西里尔语)
|
sr-Latn-CS
|
0x081A
|
塞尔维亚语(塞尔维亚,拉丁语)
|
sk
|
0x001B
|
斯洛伐克语
|
sk-SK
|
0x041B
|
斯洛伐克语(斯洛伐克)
|
sl
|
0x0024
|
斯洛文尼亚语
|
sl-SI
|
0x0424
|
斯洛文尼亚语(斯洛文尼亚)
|
es
|
0x000A
|
西班牙语
|
es-AR
|
0x2C0A
|
西班牙语(阿根廷)
|
es-BO
|
0x400A
|
西班牙语(玻利维亚)
|
es-CL
|
0x340A
|
西班牙语(智利)
|
es-CO
|
0x240A
|
西班牙语(哥伦比亚)
|
es-CR
|
0x140A
|
西班牙语(哥斯达黎加)
|
es-DO
|
0x1C0A
|
西班牙语(多米尼加共和国)
|
es-EC
|
0x300A
|
西班牙语(厄瓜多尔)
|
es-SV
|
0x440A
|
西班牙语(萨尔瓦多)
|
es-GT
|
0x100A
|
西班牙语(危地马拉)
|
es-HN
|
0x480A
|
西班牙语(洪都拉斯)
|
es-MX
|
0x080A
|
西班牙语(墨西哥)
|
es-NI
|
0x4C0A
|
西班牙语(尼加拉瓜)
|
es-PA
|
0x180A
|
西班牙语(巴拿马)
|
es-PY
|
0x3C0A
|
西班牙语(巴拉圭)
|
es-PE
|
0x280A
|
西班牙(秘鲁)
|
es-PR
|
0x500A
|
西班牙语(波多黎各)
|
es-ES
|
0x0C0A
|
西班牙语(西班牙)
|
es-UY
|
0x380A
|
西班牙语(乌拉圭)
|
es-VE
|
0x200A
|
西班牙语(委内瑞拉)
|
sw
|
0x0041
|
斯瓦希里语
|
sw-KE
|
0x0441
|
斯瓦希里语(肯尼亚)
|
sv
|
0x001D
|
瑞典语
|
sv-FI
|
0x081D
|
瑞典语(芬兰)
|
sv-SE
|
0x041D
|
瑞典语(瑞典)
|
syr
|
0x005A
|
叙利亚语
|
syr-SY
|
0x045A
|
叙利亚语(叙利亚)
|
ta
|
0x0049
|
泰米尔语
|
ta-IN
|
0x0449
|
泰米尔语(印度)
|
tt
|
0x0044
|
鞑靼语
|
tt-RU
|
0x0444
|
鞑靼语(俄罗斯)
|
te
|
0x004A
|
泰卢固语
|
te-IN
|
0x044A
|
泰卢固语(印度)
|
th
|
0x001E
|
泰语
|
th-TH
|
0x041E
|
泰语(泰国)
|
tr
|
0x001F
|
土耳其语
|
tr-TR
|
0x041F
|
土耳其语(土耳其)
|
uk
|
0x0022
|
乌克兰语
|
uk-UA
|
0x0422
|
乌克兰语(乌克兰)
|
ur
|
0x0020
|
乌尔都语
|
ur-PK
|
0x0420
|
乌尔都语(巴基斯坦)
|
uz
|
0x0043
|
乌兹别克语
|
uz-Cyrl-UZ
|
0x0843
|
乌兹别克语(乌兹别克斯坦,西里尔语)
|
uz-Latn-UZ
|
0x0443
|
乌兹别克语(乌兹别克斯坦,拉丁语)
|
vi
|
0x002A
|
越南语
|
vi-VN
|
0x042A
|
越南语(越南)
|
分享到:
相关推荐
默认提供asp、aspx WEB程序、.net普通三层框架程序、.net Windows程序,多种代码框架及多个界面设计模板,均可任意修改管理。通过自定义生成程序的界面风格与输出代码,用户可将其扩展为ASPX/ASP/PHP/JSP等各种程序...
默认提供asp、aspx WEB程序、.net普通三层框架程序、.net Windows程序,多种代码框架及多个界面设计模板,均可任意修改管理。通过自定义生成程序的界面风格与输出代码,用户可将其扩展为ASPX/ASP/PHP/JSP等各种程序...
《风越.Net代码生成器 [FireCode Creator]》是一款采用.Net FrameWork2.0框架、基于多种数据库的程序代码生成软件,可快速建立数据信息的:添加、编辑、查看、列表、搜索功能。默认提供asp、aspx两种代码框架及多个...
默认提供asp、aspx WEB程序、.net普通三层框架程序、.net Windows程序,多种代码框架及多个界面设计模板,均可任意修改管理。通过自定义生成程序的界面风格与输出代码,用户可将其扩展为ASPX/ASP/PHP/JSP等各种程序...
默认提供asp、aspx WEB程序、.net普通三层框架程序、.net Windows程序,多种代码框架及多个界面设计模板,均可任意修改管理。通过自定义生成程序的界面风格与输出代码,用户可将其扩展为ASPX/ASP/PHP/JSP等各种程序...
默认提供asp、aspx WEB程序、.net普通三层框架程序、.net Windows程序,多种代码框架及多个界面设计模板,均可任意修改管理。通过自定义生成程序的界面风格与输出代码,用户可将其扩展为ASPX/ASP/PHP/JSP等各种程序...
《风越代码生成器 [FireCode Creator]》是一款采用.Net FrameWork2.0框架,基于多种数据库的程序代码生成软件,可快速建立数据信息的:添加、编辑、查看、列表、搜索页面。通过界面模板与代码模板管理功能,可自定义...
SharpDevelop 这个轻型的开发工具支持多种程序语言,包括C#、java以及VB.NET,同时还支持多种语言界面,象任何爱好者开发的工具一样,SharpDevelop经历了很多版本的更替,现在最新的是Fidalgo Beta 1。 这个编辑器...
新普网络商城XpShop初始帐号: admin / admin最新发布: XpShop v4.0.1 .Net 2.0版欢迎使用新普网络商城,XpShop v4.0.1 .Net 2.0版具有如下特点:1、使用ASP.Net(c#)、三层结构开发2、自由选择模板,界面美观,...
2)更强大的Word文档导入编辑器功能,无需特殊的服务器权限或安装客户端组件,只要拥有最基本的ASP.NET读写文件权限即可实现导入Word文档,并且还支持最新的DOCX文档格式! 3)更细致的工具栏区域划分! 4)全新的可隐藏...
2)更强大的Word文档导入编辑器功能,无需特殊的服务器权限或安装客户端组件,只要拥有最基本的ASP.NET读写文件权限即可实现导入Word文档,并且还支持最新的DOCX文档格式! 3)更细致的工具栏区域划分! 4)全新的可...
而后被集成到Internet Explorer 4.0 Plus及更高版本中,目前版本为2.0,支持简体中文。 作为一种软件代理工具,Agent以其强大的交互功能、鲜明的人性特点、优美的操作界面和 简便统一的编程方法,对由菜单、按钮、...
- 多语言配置文件,可通过设置“LANGUAGE\SELECTED”项进行语言切换 /dat/language.* -- 多语言数据文件 /dat/config.ini -- 用户配置文件,用于保存待检测端口列表、CGI漏洞检测的相关设置及所有字典文件...
需要“Nessus攻击脚本引擎”源代码、X-Scan插件SDK、示例插件源代码或愿意参与脚本翻译工作的朋友,可通过本站“X-Scan”项目链接获取详细资料:“http://www.xfocus.net/projects/X-Scan/index.html”。 三. 所需...
/dat/language.ini -- 多语言配置文件,可通过设置“LANGUAGE\SELECTED”项进行语 言切换 /dat/language.* -- 多语言数据文件 /dat/config.ini -- 当前配置文件,用于保存当前使用的所有设置 /dat/*.cfg -- ...
“显示详细进度” - 将在主界面普通信息栏中显示详细的扫描过程 “跳过没有响应的主机” - 如果X-Scan运行于NT4.0系统,只能通过ICMP Ping方式对目标主机进行检测,而在WIN2K以上版本的Windows系统下,若具备管理...
在web 2.0应用中,博客(Blog)是web 2.0核心应用中最典型、最流行的代表之一,也是web 2.0技术应用的最直观的表现,是web 2.0精神和理念的具体体现。 1.2. 问题的提出 Blog记载了日常发生的事情和自己的兴趣爱好,把...
如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart 创建和删除硬盘驱动器上的分区。diskpart 命令仅在使用故障恢复控制台时才可用。 diskpart [ /add |/delete] [device_...