Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to get locale from country or timezone?

I was programming a program in Python, where I need to output date as per user's locale:

  1. Get a list of timezones in a country specified as per user input (did that using pytz)
  2. Get the locale of the user (which I am unable to figure out how to do)

Is there a way to get locale from county/timezone or some other method needs to be followed?

Or do I need to get the locale input from user itself?

EDIT

The program is to be a web-app. The user can provide me his country. But does he have to explicitly provide me the locale also or can I get it from his timezone/country?

like image 837
c0da Avatar asked Jan 17 '23 03:01

c0da


1 Answers

"Locale" is a country + language pair.

You have country + timezone. But no info about the language.

I don't think it's possible to convert country + timezone into a single 'correct' locale... in countries with multiple languages there is not a 1:1 relation between language and timezone.

The closest I can see is to use Babel:

from babel import Locale
Locale.parse('und_BR')  # 'und' here means unknown language, BR is country
>>> Locale('pt', territory='BR')

This gives you a single 'most likely' (or default) locale for the country. To handle the languages properly you need to ask the user their preferred language.

like image 122
Anentropic Avatar answered Jan 28 '23 20:01

Anentropic