惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google Online Security Blog
Google Online Security Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
CERT Recently Published Vulnerability Notes
C
Cybersecurity and Infrastructure Security Agency CISA
Cisco Talos Blog
Cisco Talos Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Scott Helme
Scott Helme
Project Zero
Project Zero
E
Exploit-DB.com RSS Feed
S
Secure Thoughts
K
Kaspersky official blog
L
Lohrmann on Cybersecurity
NISL@THU
NISL@THU
WordPress大学
WordPress大学
N
News and Events Feed by Topic
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 热门话题
小众软件
小众软件
P
Privacy & Cybersecurity Law Blog
博客园 - 聂微东
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
A
About on SuperTechFans
Hacker News: Ask HN
Hacker News: Ask HN
AWS News Blog
AWS News Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Hacker News: Front Page
F
Full Disclosure
Latest news
Latest news
Schneier on Security
Schneier on Security
The Hacker News
The Hacker News
T
Troy Hunt's Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Jina AI
Jina AI
Martin Fowler
Martin Fowler
P
Proofpoint News Feed
TaoSecurity Blog
TaoSecurity Blog
G
GRAHAM CLULEY
Forbes - Security
Forbes - Security
V
V2EX - 技术
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Vulnerabilities – Threatpost
C
Cyber Attacks, Cyber Crime and Cyber Security
MongoDB | Blog
MongoDB | Blog
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
Hugging Face - Blog
Hugging Face - Blog
P
Privacy International News Feed
C
Check Point Blog
N
News and Events Feed by Topic

博客园 - point.deng

Pinax安装笔记 CuteEditor使用心得 asp.net 中的default button 悬浮的购物车 - point.deng - 博客园 DIV+CSS实现圆角 欢迎使用我的控件 有用的SQL语句,更新中~ 关于WebService中SOAP扩展求助~~ - point.deng - 博客园 同一账号多次登录 WEB自定义控件小记 C# 使用HOOK 小记 视频转为flv和图片 Asp.net上传图片产生预览效果(转) asp.net2.0用户和角色管理 javascript 练习 Ajax示例 asp.net开发小技巧 Master Page主题以及皮肤的使用 ASP.NET 2.0网站快速导航
asp.net 实现多语言界面
point.deng · 2008-04-03 · via 博客园 - point.deng

最近看了朋友公司的项目,要求有中、英、日三种界面,他们是分别做三种不同的页面来实现的~~我看了吓倒了,这样的话,工作量也太大了吧!
其实在.Net里有很好的处理方式,那就是用资源文件。
用了资源文件,项目中不管要求多少种语言,只要做一个界面。其它的工作就只是翻译了。
先讲一下个人理解的原理:IE在访问的时候,服务器会取到访问的客户机的所在区域,也就是说用的是什么语言,这样返回的信息(如:日期)才会是相应的。
这个语言可以在IE--工具-选项-语言,中更改。

先在页面上放了几个BUTTON,其它的不用管它,编译通过后,点击:工具-生成本地资源,几秒后会发现,解决方案中多出了一个文件夹:

App_LocalResources,且它包含了一个与页面同名的文件,不过扩展名是resx,它就是资源文件,打开它后,不难发现里面名称和值都是页面上控件的内容,
这里我们只要把它的值改一下,写些什么张三李四的就行了,现在远行页面,会发现控件已变成了张三李四了,并且页面上我们是没有任何设定的。

现在再回到IE的语言中,中国的代码是:

zh-cn,英国:en-gb,那就用这两个国做例子。实现点张三时,显示中文,点李四时显示英文。
在VS中打开App_LocalResources,拖动先前自动生成的那个资源文件,取个名,如:Default.aspx.en-gb.resx,而默认那个则是:Default.aspx.resx
这里一定要注意命名的规范,注意看一下就知道为什么了。
现在打开Default.aspx.en-gb.resx,会发现它和Default.aspx.resx的内容是一样的(有点像费话,,),更改它,如把张三改成zhang,李四改成li,再编译。运行,如果IE的语言是中文的话,显示会是中文的,再把IE的语言改成英国。F5,看到的就是英文的了,呵呵,这样还没完。

现在要做到点张三为中文,点李四为英文,
到页面代码中重写InitializeCulture方法,加入以下代码:

 if (Session["lan"== null)
        
{
            Session[
"lan"= Request.UserLanguages[0];
        }

        
string lan = Session["lan"].ToString();
        Thread.CurrentThread.CurrentUICulture 
= new CultureInfo(lan);
        Thread.CurrentThread.CurrentCulture 
= CultureInfo.CreateSpecificCulture(lan);

这里是先取默认的语言,然后把当前语言设为这种语言,(如果Session空的话)
转为中文:

Session["lan"= "zh-cn";
        Response.Redirect(Request.Url.PathAndQuery);

转为英文:

Session["lan"= "en-gb";
        Response.Redirect(Request.Url.PathAndQuery);