在不改变JSF语言环境的情况下更改语言
我目前有一个JSF应用程序,它根据用户选择的语言设置区域设置。 他得到一个下拉菜单,选择英语时,我将区域设置为en等。这对数字格式以及从我的ResourceBundle加载的语言字符串非常有用。
所以对于en,我会得到英文单词和a。 作为十进制分隔符。 对于fr,我得到法文和a,作为小数分隔符。
但是,现在有一个要求,对于这个网站,数字格式必须始终有一个,作为小数分隔符。 所以,我想保持语言环境固定为fr。
用户仍然必须能够改变他的语言。 那么,JSF是否可以在不改变语言环境的情况下加载不同的语言?
接缝你需要一个特殊的格式化解决方案,所以覆盖格式化器可能是更好的解决方案。 我认为JSF支持替换默认的数字格式。
只需明确指定您在那里使用的<f:convertNumber>
标记的locale
属性<f:convertNumber>
。
例如
<f:convertNumber ... locale="fr" />
或类似的东西
<f:convertNumber ... locale="#{app.defaultNumberLocale}" />
正如你遇到的那样,它确实会默认为UIViewRoot#getLocale()
。
也可以看看:
<f:convertNumber>
标记文档 - 读取locale
属性