做维修家具广告在哪个网站好北京市网站维护公司
news/
2025/9/22 17:13:06/
文章来源:
做维修家具广告在哪个网站好,北京市网站维护公司,昵图网免费图片大全 图库 背景墙,北京公司注册地址政策初识国际化和ResourceBundle这个类主要用来解决国际化和本地化问题。国际化和本地化可不是两个概念#xff0c;两者都是一起出现的。可以说#xff0c;国际化的目的就是为了实现本地化#xff0c;详细的介绍可以看本文的最后。比如对于“取消”#xff0c;中文中我们使用“…初识国际化和ResourceBundle这个类主要用来解决国际化和本地化问题。国际化和本地化可不是两个概念两者都是一起出现的。可以说国际化的目的就是为了实现本地化详细的介绍可以看本文的最后。比如对于“取消”中文中我们使用“取消”来表示而英文中我们使用“cancel”。若我们的程序是面向国际的(这也是软件发展的一个趋势)那么使用的人群必然是多语言环境的实现国际化就非常有必要。而ResourceBundle可以帮助我们轻松完成这个任务当程序需要一个特定于语言环境的资源时(如 String)程序可以从适合当前用户语言环境的资源包(大多数情况下也就是.properties文件)中加载它。这样可以编写很大程度上独立于用户语言环境的程序代码它将资源包中大部分(即便不是全部)特定于语言环境的信息隔离开来。这使编写的程序可以轻松地本地化或翻译成不同的语言一次处理多个语言环境以后可以轻松进行修改以便支持更多的语言环境测试及验证下面我们来模拟一个多语言的环境定义四个资源文件res_en_US.properties、res_zh_CN.properties、res_zh.properties、res.propertiesres_en_US.propertiescancelKeycancelres_zh_CN.propertiescancelKey\u53D6\u6D88(取消)res_zh.propertiescancelKey\u53D6\u6D88zh(取消zh)res.propertiescancelKey\u53D6\u6D88default(取消default)命名规则按照资源名_语言_国别.properties每个资源文件中定义了本地化的信息那么系统如何取到对应的资源文件呢ResourceBundle bundle ResourceBundle.getBundle(res, new Locale(zh, CN));其中new Locale(zh, CN);这个对象就告诉了程序你的本地化信息就拿这个来说吧程序首先会去classpath下寻找res_zh_CN.properties若不存在那么会去找res_zh.properties若还是不存在则会去寻找res.properties要还是找不到的话那么就该抛异常了MissingResourceException我们可以来写个测试程序验证一下package bundle.test;import java.util.Locale;import java.util.ResourceBundle;public class BundleTest {public static void main(String args[]) {ResourceBundle bundle ResourceBundle.getBundle(res, new Locale(zh, CN));String cancel bundle.getString(cancelKey);System.out.println(cancel);bundle ResourceBundle.getBundle(res, Locale.US);cancel bundle.getString(cancelKey);System.out.println(cancel);bundle ResourceBundle.getBundle(res, Locale.getDefault());cancel bundle.getString(cancelKey);System.out.println(cancel);bundle ResourceBundle.getBundle(res, Locale.GERMAN);cancel bundle.getString(cancelKey);System.out.println(cancel);}}输出取消cancel取消取消这里前三个都在我们的预期范围之内但是最后一个GERMAN应该会去使用res.properties这个资源包吧怎么使用了res_zh_CH.properties原来ResourceBundle为我们提供了一个fallback(也就是一个备用方案)这个备用方案就是根据当前系统的语言环境来得到的本地化信息。所以若是找不到GERMAN的之后就会去找CHINA了所以找到了res_zh_CH.properties这个资源包这点我也是看了源代码才明白的下面就贴上一些关键的源代码ResourceBundle baseBundle null;for (Locale targetLocale locale;targetLocale ! null;targetLocale control.getFallbackLocale(baseName, targetLocale)) {// 这里就是去拿备用方案的// do something 我们暂时不关心}跟踪control.getFallbackLocale(baseName, targetLocale)看看备用方案到底是什么public Locale getFallbackLocale(String baseName, Locale locale) {if (baseName null) {throw new NullPointerException();}Locale defaultLocale Locale.getDefault();return locale.equals(defaultLocale) ? null : defaultLocale;}当显式定义的本地化信息并不是当前系统的本地化信息时若未能通过显式定义的找到资源包那么就去转而通过当前系统的本地化信息去找了~最后放一点小知识吧~国际化和本地化国际化(Internationalization)是设计一个适用于多种语言和地区的应用程序的过程。适用于多种语言和地区的含义是当使用不同语言及处于不同的地区的用户在使用这个应用程序时应用程序必须使用他们能看懂的语言和符合他们文化习惯来显示信息。国际化有时候被简称为i18n因为有18个字母在国际化的英文单词的字母i和n之间。一个国际化的程序通常具有以下特征有一个附加的本地化数据(localized data)及拥有在全世界各个地区执行的能力。文本的元素比如状态信息或GUI截面的lables不是直接写(hardcoded)在程序中而是被存储在本地化的数据中并且能被程序正确的动态的使用。支持新的语言时不需要修改程序不需要重新编译。文化差异的数据比如日期和货币必须根据拥护的语言和习惯显示不同的格式。可以被迅速的本地化。本地化(Localization)是指通过增加本地描述的构件(locale-specific components )和文字翻译工作来使应用程序适应于不同的语言和地区的过程。本地化有时候被简称为l10n应为有10个字母在本地化的英文单词的字母l和n之间。通常本地化最耗时的工作应该是文字翻译。本地化工作者们要根据地区的具体需求来为日期、数字和通货等数据建立新的格式。其他类型的数据象声音图象等也需要根据具体需要来决定是否本地化。来自http://blog.csdn.net/u012345283/article/details/42082253
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909764.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!