I am not exactly sure what you are up to, but it seems that you have let's say web application and you need separate pieces of information about language and country. OK, let me clarify that:
- To correctly format an amount to pay you actually need both the language and the country, meaning the locale as this is what identifies the appropriate format.
- To offer correct payment system, you only need a country user is currently located.
- To display appropriate translations you only need the language (at least that is what you think).
Now, on how to do that. The easiest way would be to establish some kind of user profile and let user decide on what would be the best locales for formatting, what for translation and what payment system (s)he want to use. If you are developing some kind of web-based game, you can actually read Locales from HTTP Accept-Language headers (you actually need to set good defaults and this is the best place to find such information). To "separate" language from the country, all you need is to read language and country code from locale, which is as simple as:
Locale locale = request.getLocale(); // the most acceptable Locale using Servlet API
String language = locale.getLanguage(); // gets language code
String country = locale.getCountry(); // gets country code
Now, language is often not enough to read texts from Resource Bundles, as there are Locales (i.e. zh_CN, zh_TW) for which actual language is different depending on the country (in above example Chinese Simplified is used in mainland of China as well as in Singapore, whereas all other Chinese speaking world is using Traditional Chinese). Therefore you still need actual locale.
Country code will give you the selected country, but not the one user currently is in. It might be good or bad, depending on the view. If you need to ensure that the payment happens in the country user is in, I am afraid that you would need to employ Geolocation, with all the consequences...
Does this answer your question, or I misunderstood something...?