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 []
Вернуться на верх