diff options
Diffstat (limited to 'libjava/java')
-rw-r--r-- | libjava/java/lang/natSystem.cc | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/libjava/java/lang/natSystem.cc b/libjava/java/lang/natSystem.cc index 57133fb..a987e8d 100644 --- a/libjava/java/lang/natSystem.cc +++ b/libjava/java/lang/natSystem.cc @@ -339,6 +339,31 @@ java::lang::System::init_properties (void) #endif /* HAVE_UNISTD_H */ #endif /* HAVE_GETCWD */ + // Set user locale properties based on setlocale() +#ifdef HAVE_SETLOCALE + char *locale = setlocale (LC_ALL, ""); + if (locale && strlen (locale) >= 2) + { + char buf[3]; + buf[2] = '\0'; + // copy the first two chars to user.language + strncpy (buf, locale, 2); + SET ("user.language", buf); + // if the next char is a '_', copy the two after that to user.region + locale += 2; + if (locale[0] == '_') + { + locale++; + strncpy (buf, locale, 2); + SET ("user.region", buf); + } + } + else +#endif /* HAVE_SETLOCALE */ + { + SET ("user.language", "en"); + } + // Set some properties according to whatever was compiled in with // `-D'. for (int i = 0; _Jv_Compiler_Properties[i]; ++i) @@ -382,7 +407,7 @@ java::lang::System::init_properties (void) sb->append ((jchar) ';'); #else sb->append ((jchar) ':'); -#endif; +#endif } if (cp != NULL) sb->append (cp); |