首页 > 编程知识 正文

注解resource,resourcebundle使用

时间:2023-05-05 16:16:18 阅读:61050 作者:4613

国际化和资源绑定类主要用于解决国际化和本地化问题。 国际化和本地化不是两个概念,而是两者都一起出现。 国际化的目的可以说是本地化,详细的介绍可以在正文的结尾看到。 例如,“取消”在中文中表示为“取消”,而在英语中使用“取消”。 如果我们的计划面向国际,也是软件发展的趋势。 使用的人们必然是多语言环境,需要实现国际化。 资源绑定有助于轻松完成此任务。 如果程序需要特定于区域设置的资源(如String ),则可以从适合当前用户区域设置的资源包(大多数情况下为. properties文件)中加载程序。 这样,您就可以创建与用户区域设置无关的程序代码,并且可以隔离区域设置特定的信息,即使很少或不是资源包。 这使您能够:

轻松本地化或翻译成不同的语言一次处理多个区域设置后,即可轻松修改。 为了支持更多语言环境的测试和验证,res_en_US.properties、res_zh_CN.properties、res_zh.properties

RES _ zh.properties:cancel key=_ u53d6_ U6 d 88 zh (zh取消) ) ) ) ) ) 0

RES.properties:cancel key=u53d6 U6 d 88 default (取消默认值) ) ) ) ) 0

命名约定是,如果根据资源名称_语言_国家/地区. properties为每个资源文件定义了本地化信息,系统如何获取相应的资源文件呢? resourcebundlebundle=resource bundle.get bundle (' RES ',newlocale )、' CN ' );

其中newlocale('zh )、' CN ); 这个对象告诉了程序你的本地化信息。 谈谈这个吧。 程序首先在classpath下查找res_zh_CN.properties (如果不存在),然后查找res_zh.properties (如果尚未存在)

package bundle.test; import java.util.Locale; import java.util.ResourceBundle; publicclassbundletest { publicstaticvoidmain (string args [ ] } { resourcebundlebundle=resource bundle.get bundle (' RES ' ) system.out.println(Cancel ); bundle=resource bundle.get bundle (' RES ',Locale.US ); cancel=bundle.getstring (cancel key ); system.out.println(Cancel ); bundle=resource bundle.get bundle (' RES ',Locale.getDefault ) ); cancel=bundle.getstring (cancel key ); system.out.println(Cancel ); bundle=resource bundle.get bundle (' RES ',Locale.GERMAN ); cancel=bundle.getstring (cancel key ); system.out.println(Cancel ); }

输出:取消取消取消

这里的前三个在我们的预期范围内,但最后一个GERMAN会去使用名为res.properties的资源包吗? 你是怎么使用res_zh_CH.properties的? ResourceBundle为我们提供了一种备选方案,即根据当前系统的区域设置获取本地化信息。 所以,如果找不到GERMAN,之后就要找CHINA,所以找到res_zh_CH.properties这个资源包也是看了源代码才知道的,所以要贴上重要的源代码资源绑定基本绑定=null; for(localetargetlocale=locale; 目标本地!=null; targetlocale=control.getfallbacklocale (basename,target locale ) /这里去拿备用方案//do something我们暂时不介意)。

请跟踪控制. getfallbacklocale (basename,targetLocale ),以了解备选方案是什么。 publiclocalegetfallbacklocale (string basename,Locale locale ) if ) basename==null ) ({throw new NullPointerException ) ) } localedefaultlocale=locale.get default (; return locale.equals (默认locale? 空:默认本地; }如果显式定义的本地化信息不是当前系统的本地化信息,并且找不到显式定义的资源包,请尝试查找当前系统的本地化信息。 最后加入一点知识吧~

国际化和本地化国际化(Internationalization )是为多种语言和地区设计APP应用程序的过程。 适用于多种语言和地区意味着,如果使用不同的语言,并且不同地区的用户使用此APP应用程序,则APP应用程序必须使用可以理解的语言和文化习惯来查看信息。 国际化有时简称为i18n。 因为18个字符介于国际化英语单词的字母I和n之间。

国际化进程通常具有以下特点:

具有附加的本地化数据(localized data )和在世界各地执行的能力。 文本元素(如状态信息和GUI截面标签)存储在本地化数据中,并由程序正确动态使用,而不是直接写入程序中。 如果支持新语言,则不需要修改或重新编译程序。 日期和货币等文化上不同的数据,必须根据所拥护的语言和习惯显示不同的格式。 可以迅速本地化。 本地化是通过添加本地编写的组件(locale-specific components )和文本翻译工作,使APP应用程序适应不同的语言和地区的过程。 本地化有时简称为l10n,本地化英语单词的字母l和n之间必须有10个字符。 本地化通常最花时间的是文本翻译。 本地化工作者需要根据地区的特定需求建立日期、数字、货币等数据的新格式。 其他类型的数据(如语音、图像等)也需要根据具体需要确定是否本地化。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。