TranslationsResourceLoader Get Wrong Resourcebundle For Locales Who Have Country Code
-------------------------------------------------------------------------------------
Key: ADFFACES-347
URL: https://issues.apache.org/jira/browse/ADFFACES-347
Project: MyFaces ADF-Faces
Issue Type: Bug
Reporter: Adam Winer
>From an internal Oracle filer:
org.apache.myfaces.trinidadinternal.resource.TranslationsResourceLoader.java,
the locale is get using the following mechanism:
.
protected String getLocaleString(FacesContext context)
{
Object localeObj = context.getExternalContext().getRequestParameterMap().
get("loc");
return (localeObj == null || "".equals(localeObj))
? null : localeObj.toString();
}
which returns a string with language code and country code separated by a
underscore, e.g. zh_cn
.
then it tries to get a Locale object using the following code:
.
Locale locale = LocaleUtils.getLocaleForIANAString(localeStr);
.
while, LocaleUtils.getLocaleForIANAString(String localeStr) can handle only
locale strings which use a dash as the separator for language code and
country code, since the parameter passed into this method is separated by a
underscore, so the parameter is treated as a whole representing language
code. then a wrong locale object is returned, i.e. new Locale("zh_CN","") is
returned instead of new Locale("zh","CN"). finally, the system cannot find a
resource bundle file whose language code is zh_CN, so it return the resource
bundle file suffixed by the defult locale of the platform.
.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
|