The Java Tutorials have been written for JDK 8.Java教程是为JDK 8编写的。Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available.本页中描述的示例和实践没有利用后续版本中引入的改进,并且可能使用不再可用的技术。See Java Language Changes for a summary of updated language features in Java SE 9 and subsequent releases.有关Java SE 9及其后续版本中更新的语言特性的摘要,请参阅Java语言更改。
See JDK Release Notes for information about new features, enhancements, and removed or deprecated options for all JDK releases.有关所有JDK版本的新功能、增强功能以及已删除或不推荐的选项的信息,请参阅JDK发行说明。
If your application has a user interface, it contains many locale-specific objects. To get started, you should go through your source code and look for objects that vary with Locale
. Your list might include objects instantiated from the following classes:
String
Image
Color
AudioClip
You'll notice that this list doesn't contain objects representing numbers, dates, times, or currencies. The display format of these objects varies with Locale
, but the objects themselves do not. For example, you format a Date
according to Locale
, but you use the same Date
object regardless of Locale
. Instead of isolating these objects in a ResourceBundle
, you format them with special locale-sensitive formatting classes. You'll learn how to do this in the Dates and Times section of the Formatting lesson.
In general, the objects stored in a ResourceBundle
are predefined and ship with the product. These objects are not modified while the program is running. For instance, you should store a Menu
label in a ResourceBundle
because it is locale-specific and will not change during the program session. However, you should not isolate in a ResourceBundle
a String
object the end user enters in a TextField
. Data such as this String
may vary from day to day. It is specific to the program session, not to the Locale
in which the program runs.
Usually most of the objects you need to isolate in a ResourceBundle
are String
objects. However, not all String
objects are locale-specific. For example, if a String
is a protocol element used by interprocess communication, it doesn't need to be localized, because the end users never see it.
The decision whether to localize some String
objects is not always clear. Log files are a good example. If a log file is written by one program and read by another, both programs are using the log file as a buffer for communication. Suppose that end users occasionally check the contents of this log file. Shouldn't the log file be localized? On the other hand, if end users rarely check the log file, the cost of translation may not be worthwhile. Your decision to localize this log file depends on a number of factors: program design, ease of use, cost of translation, and supportability.
You can organize your ResourceBundle
objects according to the category of objects they contain. For example, you might want to load all of the GUI labels for an order entry window into a ResourceBundle
called OrderLabelsBundle
. Using multiple ResourceBundle
objects offers several advantages:
ResourceBundle
objects, which may take too long to load into memory.ResourceBundle
only when needed.