【发布时间】:2011-01-12 10:11:05
【问题描述】:
我正在尝试在我的 jsf2 应用中实现以下示例:
http://www.mkyong.com/jsf2/jsf-2-internationalization-example/
但我不明白应用程序如何知道哪个属性文件属于哪种语言。
请你解释一下:-)
【问题讨论】:
标签: java jsf internationalization jsf-2
我正在尝试在我的 jsf2 应用中实现以下示例:
http://www.mkyong.com/jsf2/jsf-2-internationalization-example/
但我不明白应用程序如何知道哪个属性文件属于哪种语言。
请你解释一下:-)
【问题讨论】:
标签: java jsf internationalization jsf-2
这是由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 将回退到默认属性文件,您可以在faces-config.xml 中将其语言环境指定为<default-locale> 条目。如果条目也缺失,那么它最终会改为扫描name.properties。
【讨论】: