What is the difference between creating a locale for en-US and en_US?

I have all my ResourceBundle values in a table and formatted as per requirement. I have to change the languages on the website based on user selection in a dropdown at the top of the page.

If I use a language code such as en_US, then it works fine. If I use en-US as a language code, then it doesn't work. What might be the problem? Which is the correct way to do this?


  • "en" is the language code specified by ISO 639. while US is country code specified by 3166.
    In Java, the Locale object recognizes the language as languageCode_countryCode (e.g. en_US) and not as languageCode-countryCode.