码迷,mamicode.com
首页 > 其他好文 > 详细

软件国际化学习

时间:2015-04-28 14:07:05      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:国际化   native   本地化   

国际化 :同一套系统在不同的国家访问时,显示当前国家的语言
       软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,
       并针对不同地区和国家的访问,提供相应的、符合来访者阅读习惯的页面或数据。
 
   国际化又简称为 i18n:internationalization
 
   软件国际化的特征:
       对于程序中固定使用的静态文本数据,例如菜单栏、导航条等中使用的文本元素、或错误提示信息,
       状态信息等,需要根据来访者的地区和国家,选择不同语言的文本为之服务。
       对于程序动态产生的数据,例如(日期,货币等),软件应能根据当前所在的国家或地区的文化习惯进行显示。
   注意:一个合格的国际化软件必须包含静态数据和动态数据的国际化。
 
   如何做到国际化
   国际化分为静态数据国际化和动态文本国际化
   静态数据国际化:
           网站中显示固定文本的国际化 如用户名和密码的提示。
   动态文本国际化 :如时间的显示      货币的单位
    1.软件中存储特定的字符串
        对于软件中的菜单栏、导航条、错误提示信息,状态信息等这些固定不变的文本信息,可以把它们写在一个properties文件中,
        并根据不同的国家编写不同的properties文件。这一组properties文件称之为一个资源包
        在JavaAPI中提供了一个ResourceBundle 类用于描述一个资源包,并且 ResourceBundle类提供了相应的方法getBundle,
        这个方法可以根据来访者的国家地区自动获取与之对应的资源文件予以显示
        
    
        国际化文件(properties)的命名:基础名_语言简称 _国家简称     国家简称可以不写
        一个资源包中的每个资源文件都必须拥有共同的基名。除了基名,每个资源文件的名称中还必须有标识其本地信息的附加部分。例如:一个资源包的基名是“myproperties”,
            则与中文、英文环境相对应的资源文件名则为: “myproperites_zh.properties”  “myproperites_en.properties”
           
           每个资源包都应有一个默认资源文件,这个文件不带有标识本地信息的附加部分。若ResourceBundle对象在资源包中找不到与用户匹配的资源文件,它将选择该资源包中
           与用户最相近的资源文件,如果再找不到,则使用默认资源文件。例如:myproperites.properties
        
        资源文件的内容通常采用“关键字=值”的形式,软件根据关键字检索值显示在页面上。一个资源包中的所有资源文件的关键字必须相同,
        值则为相应国家的文字。并且资源文件中采用的是properties格式文件,所以文件中的所有字符都必须是ASCII字码,对于像中文
        这样的非ACSII字符,须先进行编码。(java提供了一个native2ascII命令用于编码)。例:属性文件是不能保存中文的
        username=username                       username=\u7528\u6237\u540d
        password=password                        password=\u5bc6\u7801
        submit=submit                            submit=\u63d0\u4ea4
         resource_en.properties文件                resource_zh.properties文件
        ResourceBundle类提供了一个静态方法getBundle,该方法用于装载资源文件,并创建ResourceBundle实例:
             Locale currentLocale = Locale.getDefault();
            ResourceBundle myResources =
             ResourceBundle.getBundle(basename, currentLocale);
            basename为资源包基名(且必须为完整路径)。
        如果与该locale对象匹配的资源包子类找不到。一般情况下,则选用默认资源文件予以显示。
        加载资源文件后, 程序就可以调用ResourceBundle 实例对象的 getString 方法获取指定的资源信息名称所对应的值。
          String value =  myResources.getString(“key");
        在WEB应用中实现固定文本的国际化
        <fmt:setLocale>标签用于在JSP页面中显示的设置用户的本地化信息,并将设置的本地信息以Locale对象的形式保存在某个web域中
            语法:<fmt:setLocale value=“locale”
                         [variant=“variant”]
                         [scope=“{page|request..}”]/>
        <fmt:setBundle>标签用于根据<fmt:setLocale>标签设置的本地化信息创建一个资源包(ResourceBundle)实例对象,并将其绑定到一个web域的属性上。
            语法:<fmt: setBundle basename=“basename”
                         [var=“varname”]
                         [scope=“{page|request|session|application}”] />


   2.知道浏览器当前使用的是那种语言
       Java提供了一个本地化对象,封装了当前所在国家,语言和环境已经经济等信息

       可以通过request.getLocal()方法获取当浏览器使用的本地语言


   Java.util.Local类提供动态国际化的封装
       该类提供了表示各国国家名称的简称的常量
       Locale locale = Locale.CHINA;//模拟中国的语言环境
        locale.getCountry();//获取国家的简称
        locale.getDisplayCountry();//国家名称
        locale.getLanguage();//获取该国使用的语言的简称
        locale.getDisplayLanguage();//获取国家使用的语言

软件国际化学习

标签:国际化   native   本地化   

原文地址:http://blog.csdn.net/ning_xian_hong/article/details/45334953

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!