<i18n dev> RFR 9 7131356 : (props) "No Java runtime present, requesting install" when creating VM from JNI [macosx]

Brent Christian brent.christian at oracle.com
Mon Jun 20 23:38:57 UTC 2016


I have an updated webrev at:

The comments have been updated as Gerard suggested.

The code to process the languageString now accounts for 3-character 
language codes, and 4-char script designations (line 86).

More extensive testing of languages with multiple scripts/regions
revealed that more changes were needed to maintain current behavior. 
Without knowing the internal workings of how
JRSCopyCanonicalLanguageForPrimaryLanguage adjusts the language ID, I 
believe the best options are to add a few more mappings as needed to 
locale_aliases (locale_str.h), and to add a special case for Portuguese 
(line 104).

OS X has 3 language options for Portuguese:
Portugues (Portugal)
Portugues (Brasil)
Portugues (Brasileiro)

CFLocaleCopyPreferredLanguages() gives the expected language code for
Portugues (Brasileiro) ("pt-BR"), but "Portugues (Brasil)" doesn't 
include a region code (it's simply, "pt"), so gets mapped to the default 
country, Portugal.  To maintain current behavior, I added a special case 
to map "pt" to "pt_BR" when the Region system preference is set to Brazil.

This change introduces one notable behavior change, which I argue is 
actually a fix.  The bug report and test case do not list the "Spanish 
(Mexico)" language, but it is present on MaxOS 10.9 (presumably it was 
added to the OS since the original investigation).  The old code mapped 
this to "es_XL", XL being one of the "user-assigned" ISO 3166 country 
codes.  The new code maps to "es_MX", MX being the country code for Mexico.

I've tested pretty thoroughly on MacOS 10.9; I'm pretty sure I tried 
every language that includes multiple scripts/locales.  I also added a 
couple updated tests to the bug report.

General testing has looked good so far.


More information about the i18n-dev mailing list