zoukankan      html  css  js  c++  java
  • 多语言本地化技术(2009.11.25)

    不给我分配任务,自己看在开发的项目代码,现在在做的项目支持多语言功能,就是用户通过切换语言选项,实现页面的中英文等语言之间的切换,是前辈开发好的,觉得这是个很高深的技术,不过还是想尝试学一下。

    开始想从项目代码中抽出相关代码来实现,但是项目代码太多了,对代码的结构理解不好,绕晕了。只好,借用网络代码。

    主要参考资料:ASP.NET 2.0中实现多语言界面的方法

    DynamicWebMultiLanguages

    1. 和以前用同样的方法做一个界面,只是需要注意一点,所有需要用多语言来显示的文字都要用Label来做,不能直接写在页面上。

    2. 做完之后,在Solution Explorer里选中这个文件,选Tools->Generate Local Resource,会自动生成一个目录文件夹App_LocalResources,目录中有个resx文件,比如你的aspx文件叫MultiLanguag.aspx,它就叫MultiLanguag.aspx.resx,打开这个文件,会发现界面上的控件都在这里。

    3. 再打开原来的aspx文件看看,会发现源码变了,头文件和控件代码都多了个meta:resourcekey

    4. 现在要做的工作就是,把aspx.resx文件copy一下,然后paste,想要几种语言就paste几下,然后rename,格式是XXXXX.aspx.fr-fr.resx,这里fr-fr是你要做的语言的名字。比如英语就是XXXx.aspx.en-us.resx,汉语就是XXXX.aspx.zh-cn.resx。其他不知道的语言,可以到打开IE->tools->internet options -> languages -> add中去查。

    5. 到这里,前台就完成了,下面要写后台代码了。

    先建立一个类,管理语言,叫LanguageManagement.cs

    LanguageManagement

    现在,可以加任何所需要的语言资源文件。因为这个类可能需要用在很多个页面上,为了减少重复代码,建立一个PageBase类,让页面继承此类。这里,用Session保存选择的语言状态。

    PageBase

    这里,就可以在页面的aspx.cs文件中,继承PageBase类了。

    Page

    做了个简单的页面,通过切换中英文的button,功能实现了!

    虽然,代码都是抄写网上的,不是很理解,但是实现了功能,还是很有成就感的。

    哈哈!

    相关知识点:

    1. readonly

    http://blog.csdn.net/yunggood/archive/2009/01/21/3847439.aspx

    readonly和const都是表示常数,const字段是编译时常数,readonly字段可用于运行时常数。const对于引用类型的常数,可能的值只能是string和null,readonly可以是任何类型。

    2. CultureInfo

    属于System.Globalization命名空间,System.Globalization:命名空间包含定义区域性相关信息的类,这些信息包括语言、国家/地区、使用的日历、日期、货币和数字的格式模式

    以及字符串的排序顺序。我们可以使用这些类编写全球化(国际化)应用程序。

    CurltureInfo:表示有关特定区域性的信息,包括区域性的名称、书写体系和使用的日历,以及有关对常用操作(如格式化日期和排序字符串)提供信息的区域性特定对象的访问
    3. Path.Combine

    命名空间:System.IO; 用法:public static string Combine(string path1, string path2),返回值为合并的路径的字符串。

    4. HttpRuntime.AppDomainAppPath

    获取目前应用程序定义域里装载(Host)应用程序的目录的实体磁盘路径。

    5. DirectoryInfo

    命名空间:System.IO; 公开用于创建、移动和枚举目录和子目录的实例方法,无法继承此类。

    DirectoryInfo.GetFiles

    返回当前目录的文件列表。语法:public FileInfo[] GetFiles(); 返回FileInfo[],FileInfo类型数组。返回文件的名称顺序无法保证;如果需要特定排序顺序,请使用Sort()方法。

    Directory.GetFiles(String,String,SearchOption)

    返回指定目录中文件的名称,该目录与指定搜索模式匹配并使用某个值确定是否在子目录中搜索。

    http://skybirdzw.blog.163.com/blog/static/7257062620099751329403/

    6. FileInfo

    命名空间:System.IO; 提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建FileStream对象,无法继承此类。

    7. Path.GetFileNameWithoutExtension

    返回不具有扩展名的指定路径字符串的文件名。 此方法不验证路径或文件名是否存在。
    8. LastIndexOf,Substring(暂不研究,留待以后)


     

  • 相关阅读:
    Kubernetes进阶实战读书笔记:持久化存储卷(pvc详解)
    Nginx核心知识100讲学习笔记(陶辉)详解HTTP模块(接受请求模块|正则表达式|冲突合并)
    Nginx核心知识100讲学习笔记(陶辉)详解HTTP模块(详解11阶段)
    WIndows 编辑的文件的文件在Linux下查看每行末尾有 ^M
    JQuery ajax 使用
    查看oracle死锁进程并结束死锁
    Oracle 死锁处理(查看锁表语句及解锁)
    BS表单编程注意事项
    Delphi MDI多文档架构几个问题解决
    Delphi MDI子窗体
  • 原文地址:https://www.cnblogs.com/niuniu1985/p/1609677.html
Copyright © 2011-2022 走看看