??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲人成无码久久电影网站,亚洲人精品午夜射精日韩 ,国产精品亚洲产品一区二区三区 http://m.tkk7.com/cader/articles/57001.html负h博客负h博客Thu, 06 Jul 2006 09:48:00 GMThttp://m.tkk7.com/cader/articles/57001.htmlhttp://m.tkk7.com/cader/comments/57001.htmlhttp://m.tkk7.com/cader/articles/57001.html#Feedback0http://m.tkk7.com/cader/comments/commentRss/57001.htmlhttp://m.tkk7.com/cader/services/trackbacks/57001.html  
  cM?一套有实效的Y件系l也要考虑用户的语a和地理区?语言和区域Ş成了本地环境,描述了Y件本地化的配|和上下?在Javaq_?通过java.util.Locale对象来描q本地化.
  
  本文为在Javaq_上的~程人员讲解Locale对象以其含义.
  
  本文分成如下几部?
  
  . 定义
  . 构?br />  . 预先准备的各Locale
  . 识别可支持的Locale
  . 以字W串来表qLocale
  . 使用 Locale
  . 获取Locale的信?br />  . ȝ
  
  定义
  
  Locale定了一U专门的语言和区?通过使用java.util.Locale对象来ؓ那些区域敏感型的对象定制格式化数据以及向用户的展C?Locale影响到用L面的语言,情Ş映射,整理(排序),日期和时间的格式以及货币格式.Locale在很多文化背景和语言敏感型的数据操作上的要求很严?
  
  java.util.Locale是个轻量U对?包含为数不多的几个重要成?
  
  . 一个语a代号
  . 一个国家或者区域的可选项
  . 一个另一形式代号的可选项
  
  谈到或者书写Locale?Z方便使用,可用~写.在这L~写表述?使用下划U来把Locale对象的每部分隔开?
  <language code>[_<country code>[_<variant code>]]
  
  q三部分内容提供了够的信息让其他些个区域敏感型对象Z特定的语a文化来修饰它们的行ؓ.举例?java.text.NumberFormat对象格式化出来的数字同在徯拼写的奥地利和瑞士是有区别的.
  
  表一,不同Locale的格式化输出
  
  Locale          formatted Numbers
  ======================================
  German (Germany)      123.456,789
  German (Switzerland)    123'456.789
  English (United States)  123,456.789
  
  Locale对象是个标识W?像jva.text.NumberFormat,java.text.DateFormatq样的区域敏感型的对象都会提供本地化的数字或者日期的格式.举例?java.text.DateFormatcd其实例化q程中用Locale对象来正地定出日期的格?
  
  以下部分讲述locale的各成分
  
  ISO 639制定了语a代号,国际标准l织Z界上的大多数语言指派2个或?个字母来代表.Locale?个字母代h识出惌的语a.表二列出q样的几个语a代号.
  
  表二, ISO 639标准里的语言代号的例?br />  
  Language   Code
  =====================
  Arabic    ar
  German    de
  English    en
  Spanish    es
  Japanese   ja
  Hebrew    he
  
  语言环境是Locale对象里的重要l成部分,因ؓ它描qC特定用户的语言.你的应用E序需要用q此信息来ؓ用户提供与其语言一致的用户界面.
  
  当然,语言q没描绘了整个Locale.举一?即?de 作ؓ本地语言代号, 单单的一?de q不能让你知道到底是哪一地区的的的d?一些国家把徯作ؓ官方语言或者作为第二种语言.一个国家与另一个国安的d语的区别之一是排列序.׃q样的原因以及另外些原由,语言q不总能充分地准地定义一个区?
  
  国家(区域)代号
  
  另一个国际标准ISO 3166定义了国家代?q个标准Z界上的大多数主要区域以及每个国家定义??个的~写字母.跟语a代号Ҏ,国家代号是用大写字符?表三l出了一些代号定?Locale用两字母的代h替代标准里也同样支持?字母的代?br />  
  表三,ISO 3166标准中的一些国家代L定义
  
  Country   Code
  ====================
  China      CH
  Canada       CA
  France       FR
  Japan       JP
  Germany   DE
  
  国家代号是Locale的重要组成部?对应日期的java.text.Format对象,旉,数字和货币都对国家代号很敏感.有了国家代号可更好地确认Locale里的语言部分.举例来说,在加拿大和法国都说法语的,然而确切的用法和语a表达习惯却是不一L.q些不同之处可以用Locale里的国家代号来区分出?例如, 代号fr_CA(加拿大法?跟fr_FR(法国法语)׃一?
  
  方言
  

  操作pȝ,览器以及其他Y件供应商可用q个代号来提供附加的功能或者到达语a和国家代h不能实现的定?比如?一家Y件公怹怼Z特定操作pȝ指定一个locale,于是开发h员ؓ西班牙的Macintosh操作pȝ创徏了es_ES_MAC或者ؓWindows操作pȝ创徏es_ES_WIN的本地化.
  
  Javaq_历史上的一个例子就是用EURO变量来ؓƧ洲用户实现本地?Java 2q_1.3标准版过度时期里׃ؓƧ洲的这些国家的本地化用了q个变量.比如,管已经存在?de_DE(德国徯)的本地化,但还是将 de_DE_EURO(Ƨ洲的d国d?加进了Java环境?׃Ƨ元是那些接受欧元流通国安的标准货?因此q个变量׃ J2SE1.4版本里剔除了.多数应用E序可能不需要这个代?
  
  构?/b>
  
  LocalecL如下几个构造器:
  
  . Locale(String language)
  . Locale(String language, String country)
  . Locale(String language, String country, String variant)
  
  以下展示每个构造器如何使用:
  //创徏一个通用p的locale.
  Locale locale1 = new Locale("en");
  //创徏一个加拿大p的locale.
  Locale locale2 = new Locale("en", "CA");
  //创徏一个美式英语的locale
  //谷的英?br />  Locale locale3 = new Locale("en", "US", "SiliconValley");
  
  用ISO 639的两字母代号表示的en代表了英?ISO 3166的代号CA和US分别代表加拿大和国.有个特别:如上代码片段里最后一行上用一个可选变量en_US_SiliconValley创徏locale.
  
  q个locale比第一个locale更明l?不仅说明了是式p,q特地讲指出是硅谷那边的.其目的之一是让开发者可以定制用L本地?q个变量可以是Q何你惌的?
  
  虽然~译与运行环境不兛_你是否指定了你自q语言或者是别的国家地区,但是你应当用ISO标准里定义的代号来区?强制自己ȝISO标准里的定义,q样可确保同其他应用E序或者代码标准兼?
  
  更ؓ重要的一Ҏ,区域敏感型的cd仅用ISO代号.比如,java.text.NumberFormatcd于de_DE的本地化是能明白?但是却不知如何处|虚构的foo_biz.假如用非ISO标准的定?你不得不写程序代码去实现支持那些非ISO标准定义的代?
  
  预定义的Locale
  
  Localec里有几个Localecd的静态成员实?比如?Locale.FRANCE 是预先准备好的代表法国法?你可在想要的地方用Locale.FRANCE也可以用new Locale("fr", "FR")的方式来实现.表四l出了一些预定义的现成Locale对象实例
  
  Locale Name           Locale
  =======================================
  Locale.CHINA           zh_CN
  Locale.CHINESE          zh
  Locale.SIMPLIFIED_CHINESE    zh_CN
  Locale.TRADITIONAL_CHINESE    zh_TW
  Locale.PRC            zh_CN
  Locale.TAIWAN          zh_TW
  Locale.ENGLISH          en
  Locale.UK            en_GB
  Locale.US            en_US
  Locale.FRANCE          fr_FR
  Locale.FRENCH          fr
  
  q些个预定义的Locale对象的实例的存在实很方?然?仅列出的q几个静态成员是有限?不完整的,q不需要对每个重要的locale都要来描q?支持区域敏感型的cȝlocaleq不需要在Localec里有Localecd的成员常?比如?Localec里没有代表南洲的常?虽然没有,但是照样支持包括日期格式和数字格式这L区域敏感型的c?
  
  ׃仅存在极量的预先准备好的locale,以至你可能回避这些静态实?但是实存在或者你会在别h的代码里到,所以在此对它们有所提,管它们很方?但是不靠它们,你的代码也是可行?
  
  识别支持的Locales
  
  Javaq_支持什么样的locale?你可创徏你想要的Mlocale,然而你的运行时ȝ境不一定全支持你创建的q些locale.
  
  那么你想知道你可以创Z么样的locale?{案很简?你可创徏M你要的locale.构造器不会在乎非ISO标准的参?但是从这个提问里引出?对什么样的locale,cd能提供更多信息呢?对什么样的locale,库能提供整理,旉,日期,数字和货币的信息?也许你会依靠脚本或干脆你来写能支持运行环境的pȝ.
  
  以下部分讲述如何识别行库能支持的locales.另外q讲解了可支持文本组件的书写.最?例D了运行库中和开发包里的几个可用的本地化.
  
  把locale用在java.util包和java.text?/b>
  
  q行时刻环境q不需要对每个区域敏感型的c都要用locale来支?每个区域敏感型的cdCؓ它自w支持的一套locale,q套讄能ɾc跟cd区别开?比如,一个格式化数字cL持的localep一个日期类支持的locale有所区别.
  
  另外,不需要所有的q行环境的实现都要支持同一套locale.但是所有的q行环境的实现都必须支持一个locale的最集?q个集合很小,仅是p环境(U.S).q好,SUN公司提供的运行环境的实现里提供了更多的支?管q不是Ş式上所必须?但是SUN公司提供的各q行环境的实现里为区域敏感型的数据格式提供了同样的一套集?q样的做法ؓcL供了一致?Java 2标准?.0里对locale支持的指南提供了详细的列表说?表五l出一部分所支持的locales
  
  表五,java.util和java.text包里所支持的部分locales
  
  Language           Country       Locale ID
  ==========================================================
  Arabic           Saudia Arabia      ar_SA
  Chinese(simplified)     China          zh_CN
  Chinese (traditional)    Taiwan         zh_TW
  Dutch            Netherlands       nl_NL
  English           Australia        en_AU
  English           Canada         en_CA
  English           United Kingdom     en_GB
  English           United States      en_US
  French           Canada         fr_CA
  French           France         fr_FR
  German           Germany         de_DE
  Hebrew           Israel         he_IL
  Hindi            India          hi_IN
  Italian           Italy          it_IT
  Japanese          Japan          ja_JP
  Korean           South Korea       ko_KR
  Portuguese         Brazil         pt_BR
  Spanish           Spain          es_ES
  Swedish           Sweden         sv_SE
  Thai (Western digits)    Thailand        th_TH
  Thai (Thai digits)     Thailand        th_TH_TH
  
  你得问一问区域敏感型的类在运行时ȝ境里(JRE)到底支持什么locales.每个区域敏感型类支持通过实现ҎgetAvailableLocales()来支持多Ulocale.比如:
  Locale[] localeList = NumberFormat.getAvailableLocales();
  
  java.util和java.text包里有许多类实现了getAvailableLocales()Ҏ.例如,NumberFormat,
  DateFormat,Calendar和BreakIterator.
  
  LocalecLw也是本本地化成几个locale,在下面例子中,一个d国locale实例以英?默认情况下是作者的L),徯和法语提供了信息:
  
  Locale deLocale = new Locale("de", "DE");
  Locale frLocale = new Locale("fr", "FR");
  System.out.println("Default language name (default): " +
  deLocale.getDisplayLanguage());
  System.out.println("German language name (German): " +
  deLocale.getDisplayLanguage(deLocale));
  System.out.println("German language name (French): " +
  deLocale.getDisplayLanguage(frLocale));
  
  输出l果如下
  German language name (default): German
  German language name (German): Deutsch
  German language name (French): allemand
  
  对字W的支持
  
  文本lg通常不支持单个locale.实际上文本组件常在本C用一套书写样式来昄.
  
  管不能从各文本lg上获取一个所支持的书写样式列?但是q样的一个列表却是J2SE 5.0的本地化指南中公开?
  
  通常,AWT对等体组件在操作pȝ的支持下可进行书写样式的展示.如果你的pȝ是阿拉伯的环?那么AWT的文本组件会昄阿拉伯文?在一个阿拉伯环境的系l上,你也能在文本框或者文本域里输入阿拉伯?然而你可别指望不在同一语言环境时这些AWTlg可显C同L文本.比如在一个英语环境的pȝ不大可能在文本框里显C阿拉伯文字.
  
  Java Foundation Classes/Swing (JFC/Swing)lg通常能支持多语言,是因Z依赖Lpȝ以及使用UNICODE作ؓ多语a字符集的~码.因此SWINGlg通常可显C多语言字符而AWT的对{体lg׃?表六昄了一些能支持的字W?br />  
  表六.一些可昄的文本字W?br />  
  Writing System          Language
  =======================================================
  Arabic              Arabic
  Chinese (simplified)       Chinese
  Chinese (traditional)       Chinese
  Devanagari            Hindi
  Hebrew              Hebrew
  Japanese             Japanese
  Korean              Korean
  
  Latin: Western European      English, French, German, Italian,
  subset              Spanish, Swedish, and so on
  
  Thai               Thai
  Greek               Greek
  Cyrillic             Belorussian, Russian, and so on
  Latin: Baltic subset       Latvian, Lithuanian
  Latin: Central European subset  Czech, Hungarian, Polish, and so on
  Latin: Turkic subset       Turkish and so on
  
  JRE与SDK的本地化
  
  q行环境里的几个用户界面元素已经Ҏ本地样式q行了本地化.q些元素包括了AWT与SWING的组件以及JRE和SDK产生的消?表七l出了J2SE 5.0提供的所有本地化
  
  表七.为JRE作的用户界面的翻?br />  
  Language         Locale ID
  =================================
  Chinese (simplified)    zh_CN
  Chinese (traditional)   zh_TW
  English          en
  French           fr
  German           de
  Italian          it
  Japanese          ja
  Korean           ko
  Spanish          es
  Swedish          sv
  
  某些开发工?比如JAVA~译?仅随J2SE的Y件开发包供给.q些工具为用h供了出错,出错,警告和其他消?q些工具以及SDK里的实用工具包括~译器里的消?被翻译ؓp或者日?q些译的结果在J2SE 5.0里已l实C.
  
  以字W串形式描述locale
  
  管你用locale的多数时候需要引用一个Locale对象,但是有些时候用另一U表现Ş式会很方?其是进行内部调试时?Locale对象的toString()Ҏq回String,它是语言,区域和变U代L一个串.toString()Ҏ以下划线来把各部分隔开.q样,提供了一U方便的可读性好的Ş式方便你的调?
  
  考虑如下那样创徏locale的代?br />  Locale l = new Locale("ja", "JP");
  
  toString()Ҏ返?"ja_JP".
  
  如此的字W串不适合提供l最l用?大多数用户不熟悉ISO 639和ISO 3166标准中的国家和语a的代?会觉得这L字符串不好懂.q好q有友好用户界面的文本展C?我们在本文后面中讨?
  
  使用locale
  
  管不常?Locale对象却是在JAVAcd中普遍用?即你不明确地要求用locale,JAVAq行环境也会Z提供~省的设|来实现消息和行为的本地?当你明确C用locale,你可Z的应用程序的每个部分使用不同的locale.
  
  譬如,你可用es_MX,西班牙语(墨西?的locale来显C本地化的消?用en_US,(式p)的locale来显C币和数字.q方式很适合在美国工作生zȝ习惯西班牙语的h.管用户见到的是西班牙语的菜?提示与文?但是应用E序其他地方可见到按照美国习惯的货币和数?q个单例子向你展C如何在一个应用程序里使用多种locale.如果你的应用E序真是需要这Llocale支持的话,那么你可自主军_应用E序各方面的行ؓ.
  
  除了像格式化数字,货币,日期和时间这L区域敏感型的cM外还提供了如同词语分解的整理功能.
  
  q些c通常以构造器或者是工厂Ҏ来实例化.无论哪种形式,你可按照你喜Ƣ的一U来创徏一个详l的locale.
  
  使用~省Locale
  
  无论应用E序是否明确指定了详l的locale,区域敏感型的对象都会选用~省的locale.依赖q缺省的locale很不明智.在多用户应用E序?不是每个用户都适合q个~省的locale,因此应用E序应当为所有的区域敏感型对象明指定一个适合的locale.~省的locale是一Uؓ应用E序里所有的区域敏感型对象提供的pȝ资源.~省?也许对用h说可能是对的,但是应当在多语言和多文化的环境下明确指定,当程序运行在一台机器上为多用户所使用?q点其重要.
  
  用如下的Ҏ来获得缺省locale:
  public static Locale getDefault()
  
  有三U途径为应用程序确定出一个缺省的locale.
  
  W一,除非明确的更攚w认的locale,否则getDefault()Ҏq回值的locale是由JAVA虚拟机首ơ装载时定?q就是说,JAVA虚拟Zpȝ环境定Z~省的locale.pȝ环境上的locale是由操作pȝ和用户喜好来定?
  
  W二,某些JAVAq行环境的实现里,用户可通过命o行上讄user.language, user.country以及 user.variant信息来覆盖掉pȝ的缺省locale.
  
  如的代码会依据这些设|的属性来打印出locale
  import java.util.Locale;
  
  public class Default {
  public static void main(String[] args) {
  System.out.println(Locale.getDefault());
  }
  }
  
  Ҏ如上代码来做个实?q行在U.S的英语系l时?如上代码会输出en_US. 假如在命令行上给出选项参数,那么你可让程序用Q何你惌的locale.例如,为程序提供如下的命o行参?
  java -Duser.language=fr -Duser.country=CA Default
  
  以这L方式来运行程序的?把fr_CA当作默认的locale
  
  W三,可通过调用setDefault(Locale aLocale)Ҏ来实? setDefault(Locale aLocale)Ҏ让应用程序设|了一个系l别的资源.在用此方法设|了~省的locale?接着调用Locale.getDefault()得C最新设|的locale.
  
  注意:别在applet中调用setDefault()Ҏ.applet的安全管理不会让你调用这Ҏ?因ؓq个Ҏ调用的结果会影响L上运行着的JAVA虚拟Z的系l别的资源.
  
  大多数情况下,对于其他cM用缺省locale意味着完全忽略locale.譬如,你想要以~省locale格式化一个数?你可以简单地而不需要Q何参数来创徏NumberFormat:
  NumberFormat nf = NumberFormat.getInstance();
  
  如上代码的情况下使用locale基本上不需要你做什?另外一些区域敏感型的类也是照这L模式.需要缺省locale的行为的时候不需要作特定的工作来创徏.但是~省行ؓ不是适合所有情늚,因此在特D时候你q需要明指定locale.
  
  昄使用locale
  
  在有些计机的环境中,仅有单一的locale贯穿于整个应用程序的生命周期?另外一些环境里,应用E序使用一个可变的全局locale.在这些环境里,你可通过~程来改变locale,除非L动locale,否则它一直保持原先的效果.JAVA应用E序环境很独?在应用程序里,可依照你惌的Q何方式来使用不同的locale.
  
  跨国公司在世界上有许多客?q就意味着q些公司的客户和员工也许使用着不同的语aq且希望公司和公司的软g能适合他们.此外,很可能也很常见的事是:公司里有个法国雇员ؓ一位意大利客户处理销售记?在这U情形下,你必要控制好业务以及用L面中的对象所使用的locale以便处理和展现数?应用E序可能在打印销售收据时候用意大利格式的日期和货币格式,然而又要ؓ习惯p的雇员列客户清单.q有很多cMq么复杂的情冉|有列在此?但是JAVA技术提供了灉|的方式来处理如此复杂的情?
  
  Z最大限度的灉|?你必Mؓ区域敏感型的cL定明的locale.q就意味着你必MؓE序的各个方面考虑locale的表现样式或者ؓ不同的用户和客户指定locale.
  
  如果你已lؓ用户方的locale作了考虑,那么在构造器参数列表里明指定一个locale或者在一些特定方法里指定以此来创建区域敏感型的类的实?设想有个用来作展现的对象里存储了为客户选用的locale:
  
  Locale userLocale = preferences.getLocale();
  NumberFormat nf = NumberFormat.getInstance(userLocale);
  
  获取locale的信?/b>
  
  ׃locale对象不包含很多信?但是提供了一些有的Ҏ.正如你想?q些信息跟语a,国家和方a是有密切联系?其中一些是依赖locale?另一些则不依赖locale.q些情况说明了locale对象为它的方法提供了两种不同形式.locale里的一些信息ƈ非是面向客户或者本地化?另一些则是本地化的ƈ且适合用来为用户展现的.
  
  不依赖locale的信?/b>
  
  getLanguage() Ҏq回ISO 639 标准中ؓ语言定义的两字母~写.比如,你创Zja_JP的locale,那么Ҏq回的是 ja . q个Ҏ的完整Ş式是:
  
  public String getLanguage()
  
  ISO 639标准的一个扩展是用三个字母羃写的代号来定义语a?管在J2SE 5.0里不使用q些代号,但是却是有用?用如下的Ҏ来获得三字母~写的语a代号:
  
  public String getISO3Language()
  
  看个Ҏ的例?
  
  Locale aLocale = Locale.JAPAN;
  System.out.println("Locale: " + aLocale);
  System.out.println("ISO 2 letter: "+ aLocale.getLanguage());
  System.out.println("ISO 3 letter: " + aLocale.getISO3Language());
  aLocale = Locale.US;
  System.out.println("Locale:" + aLocale);
  System.out.println("ISO 2 letter: " + aLocale.getLanguage());
  System.out.println("ISO 3 letter: " + aLocale.getISO3Language());
  
  输出l果如下:
  
  Locale: ja_JP
  ISO 2 letter: ja
  ISO 3 letter: jpn
  Locale: en_US
  ISO 2 letter: en
  ISO 3 letter: eng
  
  getCountry()Ҏq回 ISO 3169标准中两字母~写定义的国家或者区域代?Ҏ的完整Ş? public String getCountry()
  
  也有个ISO扩展标准里用三字母羃写来定义国家代号:public String getISO3Country()
  
  看个Ҏ的例?
  
  Locale aLocale = Locale.CANADA_FRENCH;
  System.out.println("Locale: " + aLocale);
  System.out.println("ISO 2 letter: " + aLocale.getCountry());
  System.out.println("ISO 3 letter: " + aLocale.getISO3Country());
  
  输出l果如下:
  
  Locale: fr_CA
  ISO 2 letter: CA
  ISO 3 letter: CAN
  
  如果locale对象里设|有方言的字D늚? getVariant()Ҏq回一个字W串来表C?如果locale对象里没讄方言的字D늚?此方法返回空?此方法的形式如下:public String getVariant()
  
  localecM的如下几个方法可获取所有可用的语言代号和国家代?
  public static String[] getISOCountries()
  public static String[] getISOLanguages()
  
  相对于客h?开发者更愿意使用getLanguage()Ҏq回的代?而客户可能想要如下文中描q的那些不同之处.
  
  依赖locale的信?/b>
  
  ҎgetLanguage(), getCountry(), getVariant()q回的代号对于用h说不友好.用户q不需要懂q些代号,因此locale提供另外的一些方法来提供了更h可读性的面向客户的信?
  
  locale对象提供了一些可q回L的文本描q的Ҏ.q些文本描述不同于toString()Ҏq回的字W串.q把语a,国家和方aq些字段单的串连h,而是提供了locale的h可读懂的,本土化了的信?
  
  public final String getDisplayLanguage()
  public final String getDisplayCountry()
  public final String getDisplayVariant()
  
  昄语言
  
  当你需要以用户习惯的语a来显C的时?应用locale对象的getDisplayLanguage()?此方法返回了可显C的,L的用h语言的名U?假如你不l出目标locale的话,q个昄的名U就是缺省的locale的本土化.此方法的两种形式:
  public final String getDisplayLanguage()
  public final String getDisplayLanguage(Locale targetLocale)
  
  以下举例如何使用q两个方?
  
  Locale deLocale = Locale.GERMANY;
  // pȝ默认的locale?en_US
  String defaultLanguage = deLocale.getDisplayLanguage();
  //目标locale昄地指Z使用的语a
  String targetLanguage = deLocale.getDisplayLanguage(deLocale);
  System.out.println(defaultLanguage);
  System.out.println(targetLanguage);
  
  输出l果如下:
  German
  Deutsch
  
  输出?German 是以式p单词来显Clocale里所使用的语a.qƈ没给你留下特别的印象,但是要注意的?你怎样提供一个目标locale作参?q种情Ş中,getDisplayLanguage()试图扑ֈ和返回一个本土化了的lcoale中语alg的版?
  
  q一点很重要,因ؓ你能为客hC应用程序可支持的客h语言的每个locale的语a名称.你可在程序里提供一个列表来让用户选他们喜好的locale.
  
  q就引来一个有的问题:如何在locale的语a环境里呈现locale的语a名称?你可按照如下代码来做:
  String displayLang = aLocale.getDisplayLanguage(aLocale);
  
  换言?是在调用getDisplayLanguage()Ҏ时候以此locale对象作参?对于其他可显C的locale元素也可使用q个H门.比如,也能用这U方法来昄国家和方a.如下代码演示了这个窍?
  
  Locale[] locales = { new Locale("en", "US"), new Locale("ja","JP"),
  new Locale("es", "ES"), new Locale("it", "IT") };
  for (int x=0; x< locales.length; ++x) {
  String displayLanguage = locales[x].getDisplayLanguage(locales[x]);
  println(locales[x].toString() + ": " + displayLanguage);
  }
  
  昄国家
  
  l用hClocale对象里的国家或者地Z息时可按照如下代?
  
  public final String getDisplayCountry()
  public final String getDisplayCountry(Locale targetLocale)
  
  W一UŞ式的Ҏ为缺省locale提供了本土化的国家名U?W二UŞ式的Ҏ为目标locale提供了同L本土化信?
  
  Locale deLocale = Locale.GERMANY;
  // default en_US
  String defaultCountry = deLocale.getDisplayCountry();
  // target de_DE
  String targetCountry = deLocale.getDisplayCountry(deLocale);
  System.out.println(defaultCountry);
  System.out.println(targetCountry);
  
  输出l果如下:
  
  Germany
  Deutschland
  
  昄方言
  
  方言在locale里相对于其他元素用地比较?然而有时还需要要获取它的信息.
  
  getDisplayVariant()Ҏq回locale里的方言部分的显C名U?
  
  public final String getDisplayVariant()
  public final String getDisplayVariant(Locale targetLocale)
  
  在JAVAq_使用方言的一个方法是为支持泰国语a.ҎU定,对于 th ?th_TH的locale而用的NumberFormat对象通常以阿拉伯数字或者是泰国格式的阿拉伯数字来?对于th_TH_TH的locale的NumberFormat是用泰国数字?如下面的代码演示:
  
  Locale[] thaiLocale = {new Locale("th"), new Locale("th","TH"),
  new Locale("th","TH", "TH")};
  
  for(Locale locale: thaiLocale) {
  NumberFormat nf = NumberFormat.getNumberInstance(locale);
  StringBuffer msgBuff = new StringBuffer();
  msgBuff.append(locale.toString() + ": ");
  msgBuff.append(nf.format(573.34));
  textArea.append(msgBuff.toString() + "\n");
  }
  
  昄名称
  
  昄名称仅是单地l合了本土化语言,国家和刚才演C的方言.Ҏ的Ş式如?
  public final String getDisplayName()
  public final String getDisplayName(Locale targetLocale)
  
  跟locale的toString()Ҏ有所不同.toString()Ҏ是串联v来各个部分ƈ且以下划U分?
  getDisplayName()Ҏ以括号分割各个部?
  
  Locale deLocale = Locale.GERMANY;
  // default en_US
  String defaultCountry = deLocale.getDisplayName();
  // target de_DE
  String targetCountry = deLocale.getDisplayName(deLocale);
  System.out.println(defaultCountry);
  System.out.println(targetCountry);
  
  输出l果如下:
  German (Germany)
  Deutsch (Deutschland)
  
  ȝ
  
  locale是一门语a,一个可选国?或者一个地?或者是一个可选方a代号的标识符.locale对象提供了几个方法来获取关于locale状态的信息.管locale本n不包含许多功?但是区域敏感型对象依赖于locale来指C?区域敏感型对象用locale来定制它们的行ؓ以此满用户所惌?
  
  JAVAq_?每个区域敏感型对象负责它自n区域相关的行?设计?区域敏感型对象之间互不相q?q就是说,在一个类里被支持的localeq不一定要跟另一个类里被支持的lcoale一?
  
  在传l的操作pȝ上和区域模型?在同一旉里仅有一个locale的设|v作用.q些pȝ?在你通过~程来设|locale?所有的区域敏感型的功能都会使用指定的locale,q个locale犹如一个全局locale一栯I于应用E序.当以setLocaleҎ或者类似的调用使另一个全局locale起作用后才发生改?JAVAq_?׃处理locale时有些不?所以一个JAVA应用E序里在同一旉可有多个locale起作?配合格式对象使用多种loalce让开发者有Z为多语言和多文化环境的应用程序创建复杂的必要的组?

负h博客 2006-07-06 17:48 发表评论
]]>
վ֩ģ壺 Ұ߹ۿ| ɫһ վ| 91ѹۿ| þþƷۺר| һ߹ۿ| Ѱββ8x| ŷɫŷ| ȫaëƬ**Ƶ| ɫרһ| ѹۿaëƬվ| ޵һվ| ձһ| ޹ŷۺһ| þþþѹۿ| ҹҹˬ| һɫþ88ۺ| jizz18Ƶ| AVպƷþþþþ| պҹTVӰԺ| 97츾͵ͼƬ| jjizzȫѿƬ| 77777ҹ| Ʒר| Ƶ| һƬѿ| 999߾ƷѲ| þþƷަvDz| ҹAëƬ| С˵ר޴ɫУ԰| ɫƵ| þ޾Ʒ| ҹƷһ鶹| ޹Ʒ13p| ŷպëƬ߿վ| ˮĻӰ| һҹߴ| eeussӰԺwww| ˳ɼ߲| ޹˾Ʒþþþþۺ | AëƬ߲Ųշ| һ˿Ƶwww߸嶯|