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

        

Reply via email to