private static final Map<String, Map<Locale,StringManager>> managers =
new Hashtable<String, Map<Locale,StringManager>>();
其中String
的含义是packagerName
。每个包的一种语言表示都对应一个StringManager
。
然后类内部维护了一个bundle
:
private final ResourceBundle bundle;
private final Locale locale;
在获取String
时,实际上是从绑定的bundle
获取。
每个包的一种语言表示都对应一个ResourceBundle
,它会在包内生成LocalStrings_xx.properties
文件,以便后续读取属性的值。其中xx
为语言,结构例子如下:
org.apache.catalina.startup包内
.properties
文件内容大概如下,可以看到都是key-value
形式的:
LocalStrings.properties
LocalStrings_fr.properties
其中的{0}
是用来结合MessageFormat
使用的。
可以用来填充字符串中的{0}
、{1}
等占位符,具体情况看参考里的链接。