在ASP.Net 2.0中实现多语言界面的方法
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) If (languageCookie Is Nothing) Then If language = String.Empty Then _ Dim culture As CultureInfo = New CultureInfo(language) |
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) |
注意最后的Server.Transfer(Request.Path) ,这是为了重新读取这一页,这样这一页也会显示新选择的语言。
13. 最后我们要去掉ASP.Net的自动选择。从Default.aspx中去除:
Culture="auto" UICulture="auto"
14. 打开来看一看吧!
转至http://hi.baidu.com/16v_cn/blog/item/161d9711fc665e7ecb80c402.html。
在ASP.Net 2.0中实现多语言界面的方法相关推荐
- ASP.NET 2.0 中的资源与本地化
转自MSDN 下载本文的代码:BasicInstincts2006_08.exe (878KB) 本页内容 控制页面级别的区域性设置 使用配置文件跟踪语言首选项 ASP.NET 2.0 中的资源文件 ...
- UrlRewritingNet 完美实现 ASP.NET 2.0 中的URL重写(映射)
URL重写好处有很多,如有利于SEO.便于记忆.隐藏真实路径使安全性提高.便于更新等等.本文概要描述了各种URL重写的实现. ASP.NET 2.0 中实现URL重写有很多方法,如:Global. ...
- UrlRewritingNet实现ASP.net 2.0中URL重写(映射)
URL重写好处有很多,如有利于SEO.便于记忆.隐藏真实路径使安全性提高.便于更新等等.本文概要描述了各种URL重写的实现. ASP.NET 2.0 中实现URL重写有很多方法,如:Global.as ...
- UrlRewritingNet ASP.NET 2.0 中的URL重写(映射)
URL重写好处有很多,如有利于SEO.便于记忆.隐藏真实路径使安全性提高.便于更新等等.本文概要描述了各种URL重写的实现. ASP.NET 2.0 中实现URL重写有很多方法,如:Global.as ...
- 在ASP.NET 2.0中使用样式、主题和皮肤
ASP.NET 2.0的主题和皮肤特性使你能够把样式和布局信息存放到一组独立的文件中,总称为主题(Theme).接下来我们可以把这个主题应用到任何站点,用于改变该站点内的页面和控件的外观和感觉.通过改 ...
- asp.net 2.0中设定默认焦点按钮
在asp.net 1.1中,当要在page_load页面中,设置某个控件为默认的焦点按钮(也就是默认焦点是在这个控件上的),可能要用到javascript的代码,而在ASP.NET 2.0中,不用这些 ...
- asp.net 2.0中的弹出对话框
在asp.net 1.1中,要做1个弹出的对话框的话,一般是在服务端的代码中这样写: btnClick.Attributes.Add("onclick", "return ...
- 在ASP.NET 2.0中建立站点导航层次
站点导航提供程序--ASP.NET 2.0中的站点导航提供程序暴露了应用程序中的页面的导航信息,它允许你单独地定义站点的结构,而不用考虑页面的实际物理布局.默认的站点导航提供程序是基于XML的,但是你 ...
- asp.net 2.0中一次性更新所有GRIDVIEW的记录
在asp.net 2.0中,gridview控件是十分不错的控件.有的时候,可能一个GRIDVIEW控件中 的各行都是文本框,如何一次性更新所有修改过的记录呢?有两种方法,一种是使用sqldataso ...
最新文章
- java 集合自定义元素_java集合 collection-list-ArrayList 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。...
- 匿名内部类使用的场景之一
- 系统镜像_如何通过云服务器创建Windows系统镜像
- linux下openssl编程
- Markdown基本语法总结
- 30屏幕参数_顶级屏幕加持,一加8系列核心配置、屏幕参数官方公布
- 查看您的Solr缓存大小:Eclipse Memory Analyzer
- avi编码格式以及查看的视频编码方式的小工具
- 华为云严选上新啦!高效准确的数据同步方案来了
- 使用TASM时报错extra characters on line的解决办法
- Navicat - 导入CSV注意事项
- Maya Mesh Relaxation Deformer
- Firefox中文版与英文版转换
- Leetcode——第108题
- 基于AR眼镜有哪类功能可实现?
- Show一下拿的奖杯
- 【数学建模】2019A题 高压油管的压力控制器(附带优秀论文资源文档下载)
- Python基础(三)Python容器:列表、元组、字典和集合
- 第5章 - 二阶多智能体系统的协同控制 --> 连续时间系统编队控制
- 麦当劳“制服黑丝”,火了!
热门文章
- VTK:图表之ConstructTree
- Qt Creator创建组件
- QT的QDtlsClientVerifier类的使用
- django 不用自带的mysql_21_django配置使用mysql数据库的两种方式
- 15_多子图-Subplot、Subplot: 使用多个figures和 axes、替代解决方案:
- 13-19 Python Number、Python字符串、Python列表(List)、集合的基本操作、元组、字典Dicttionnary、日期和时间
- Spring整合Mongodb,Maven的依赖,Spring配置,MongoDB的公共操作类,使用SpringMVC的Controller进行测试并返回结果的案例
- 01_Eclipse的使用方法
- Kettle使用_31 CSV文件输入跳过前几(首)行之过滤记录
- 数据流图中flow不显示文字_利用Flow来进行旋转流体仿真