我正在尝试将以下示例实现到我的jsf2应用程序中:
http://www.mkyong.com/jsf2/jsf-2-internationalization-example/
但我不明白应用程序如何知道属性文件属于哪种语言。
请你解释一下: - )
答案 0 :(得分:3)
这是由ResourceBundle
API完成的,而不是由JSF完成的。资源包文件名应遵循以下模式name_ll_CC.properties
。 _ll
部分应为小写ISO 693-1语言代码。它是可选的,仅在_CC
部分存在时才需要。 _CC
部分应为大写ISO 3166-1 Alpha-2国家/地区代码。它是可选的,通常仅用于区分特定国家/地区的语言,如美式英语(_en_US
)和英式英语(_en_UK
)。
根据当前请求的Locale
确定正确的文件。 JSF会将UIViewRoot#getLocale()
之一传递给ResourceBundle
。如果name_ll_CC.properties
文件不存在,则ResourceBundle
将扫描name_ll.properties
文件。如果它也不存在,那么ResourceBundle
将回退到默认属性文件,您可以在<default-locale>
中将其区域设置指定为faces-config.xml
条目。如果条目也不存在,那么它最终将扫描name.properties
。