Django: из языка пользователя в строку локали - как сделать?
В нашем стеке Django/Python/Linux мы хотим определить правильную локаль по языку пользователя. Язык может быть 'de', а локаль может быть чем-то вроде de_DE или de_AT или даже de_CH.UTF-8 - в зависимости от того, что возвращает locale -a
. В случае неоднозначности мы просто используем первую допустимую запись для соответствующего языка.
Затем эта строка локали должна быть использована для определения правильного формата числа, например, так:
locale.setlocale(locale.LC_ALL, user.language)
formattedValue = locale.format_string(f'%.{decimals}f', val=gram, grouping=True)
Мы не хотим создавать связь между кодом языка и строкой локали в нашем приложении - поэтому определение словаря, содержащего языки и строки локали, не входит в наши планы. Эта информация должна извлекаться обобщенно.
Есть идеи, как сделать это правильно?
В итоге я решил эту проблему следующим образом - хотя изначально это было не самое предпочтительное решение...
import subprocess
def get_active_locales():
# Get all active locales on the system using the `locale -a` command
try:
result = subprocess.run(["locale", "-a"], capture_output=True, text=True, check=True)
active_locales = result.stdout.splitlines() # Split by line to get the list of locales
return active_locales
except subprocess.CalledProcessError as e:
return []