龙空技术网

java 核心技术-12版 卷Ⅰ- 7.5.4 本地化

CC躺平混吃 79

前言:

眼前同学们对“java核心技术卷一电子版下载”都比较关怀,咱们都需要知道一些“java核心技术卷一电子版下载”的相关知识。那么小编同时在网络上网罗了一些对于“java核心技术卷一电子版下载””的相关知识,希望看官们能喜欢,你们一起来学习一下吧!

原文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);

注释:这是唯一一个可以为消息参数使用可变参数的日志记录方法

标签: #java核心技术卷一电子版下载