Getting OS language in java

后端 未结 3 1241
-上瘾入骨i
-上瘾入骨i 2021-01-05 09:45

I\'m running into a kind of problem here.

I\'m French and working on an English version of Windows XP. Therefore, I set the regional options to French, but still hav

相关标签:
3条回答
  • 2021-01-05 10:22

    I have no means to try it out (as I tend to avoid anything made by Microsoft), but take a look at these:

    Java 7 required:

    Locale uiLocale = Locale.getDefault(Locale.Category.DISPLAY);
    

    That's what should be used for getting translations (starting from Java 7), anyway.

    If this was not very helpful, I'd try:

    System.out.println(System.getenv("LC_MESSAGES"));       
    System.out.println(System.getenv("LANG"));
    System.out.println(System.getenv("LANGUAGE"));
    

    However, in this case I would expect some similarities to default Locale...

    0 讨论(0)
  • 2021-01-05 10:24

    I tried a few things thanks to your suggestions, and here is my observation :

    • If you are using Java 6, and not Java 7, you are f***ed.
    • If you are using Java 7, you should do as BalusC tells : change the setting in Region and Language Settings. After that, Locale.getDefault() will by default return the display language, meaning English if you set it to English. To make sure of it, you can create you locale by calling Locale.getDefault(Locale.Category.DISPLAY)
    0 讨论(0)
  • 2021-01-05 10:30

    This is a misconfiguration in Windows. The Locale#getDefault() returns the system locale, not the date/time formatting region or location.

    In the below Windows XP specific screenshot, you could just set the Regional Options and Language to French or whatever you like. The dropdown in the Advanced menu actually sets the system locale and should in your case be set to English.

    enter image description here

    Admittedly, this is in Windows XP poorly explained, Windows 7 does it somewhat better:

    enter image description here

    0 讨论(0)
提交回复
热议问题