https://bz.apache.org/bugzilla/show_bug.cgi?id=66207
Bug ID: 66207
Summary: StringManager#getManager(String,
Enumeration<java.util.Locale>) cannot return the
correct value
Product: Tomcat 10
Version: unspecified
Hardware: PC
OS: Mac OS X 10.1
Status: NEW
Severity: normal
Priority: P2
Component: Util
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ------
The reason for the problem is that when the StringManager object is created,
there is a special handling where the locale is specified as ROOT when the
language of the Local is English, and finally the local of the current sm
object is set to Locale.ENGLISH.
Code snippet.
```
if (locale.getLanguage().equals(Locale.ENGLISH.getLanguage())) {
locale = Locale.ROOT;
}
.....
Locale bundleLocale = bundle.getLocale();
if (bundleLocale.equals(Locale.ROOT)) {
this.locale = Locale.ENGLISH;
} else {
this.locale = bundleLocale;
}
```
org.apache.tomcat.util.res.StringManager#getManager(java.lang.String,
java.util.Enumeration<java.util.Locale>)
There is a local comparison in this method, if it is compared with If it is the
same as the local passed in then return it, otherwise get the default local sm.
```
StringManager result = getManager(packageName, locale);
if (result.getLocale().equals(locale)) {
return result;
}
return getManager(packageName);
```
The problem lies in the comparison, which I think should be a comparison of
languages, not local objects, because Local(en) ! = Local(en-US)
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]