java 国际化文件(java 核心技术-12版 卷Ⅰ- 7.5.4 本地化)java教程 / Java Web应用程序的国际化与本地化...

wufei123 发布于 2024-05-26 阅读(18)

原文7.5.4 本地化你可能希望将日志消息本地化,以便全球用户都可以阅读应用程序的国际化问题将在卷Ⅱ的第7章中讨论下面简要说明本地化日志消息时需要牢记的一些要点本地化的应用程序包含资源包(resource bundle)中的本地特定信息。

资源包包括一组映射,分别对应各个本地化环境(如美国或德国)例如,一个资源包可能将字符串"readingFile"映射为英文的"Reading file"或者德文的"Achtung! Datei wird eingelesen"。

一个程序可以包含多个资源包,例如一个用于菜单,另一个用于日志消息每个资源包都有一个名字(如"com.mycompany.logmessages")要想为资源包增加映射,需要对应每个本地化环境提供一个文件。

英文消息映射位于com/mycompany/logmessages_en.properties文件中,德文消息映射位于com/mycompany/logmessages_de.properties文件中。

(en和de是语言编码)可以将这些文件与应用程序的类文件放在一起,以便ResourceBundle类自动找到它们这些文件都是纯文本文件,包含如下所示的条目:readingFile=Achtung! Datei wird eingelesen

renamingFile=Datei wird umbenannt...请求一个日志记录器时,可以指定一个资源包:Logger logger=Logger.getLogger(loggerName,"com.mycompany.logmessages");

然后,为日志消息指定资源包的键,而不是具体的日志消息字符串:logger.info("readingFile");通常需要在本地化的消息中包含一些参数,因此,消息可以包括占位符{0}、{1}等例如,要想在日志消息中包含文件名,可以如下使用占位符:。

Reading file{0}.Achtung! Datei {0} wird eingelesen.然后,通过调用下面的一个方法向占位符传递具体的值:logger.log(Level.INFO, "readingFile", fileName);

logger.log(Level.INFO,“renamingFile", new Object[]{ oldName, newName });或者,在Java9中,可以在logrb方法中指定资源包对象(而不是名字):

logger.logrb(Level.INFO,bundle,"renamingFile",oldName, newName);注释:这是唯一一个可以为消息参数使用可变参数的日志记录方法

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

河南中青旅行社综合资讯 奇遇综合资讯 盛世蓟州综合资讯 综合资讯 游戏百科综合资讯 新闻50322