У меня есть модуль tools с плюшками, юзаемыми в проекте. Рядом лежат файлы для языков с константами, типа HELLO = "Привет". В tools есть функция get_message, принимающая условное название-константу строки, область видимости и язык.
Пока я вижу следующий вариант -- методы классов возвращают, например tools.get_message("HELLO", {}, "ru"). Далее функция get_message через getattr пытается получить эту константу из файла и через format_map() форматирует ее с областью видимости, переданной функции.
Но это похоже на изврат, есть какие-то ещё альтернативные и логичные варианты? А если мне в этой строке нужно выполнить функцию?
Желательно, чтобы это работало быстро, а не как Template.
При этом меня интересует не сам перевод, коим занимается gettext, а именно подход к хранению и обработке таких строковых данных.
Вопрос непонятный. gettext решает все проблемы уже давно. Строки собираются из файлов при помощи утилиты командной строки xgettext Да и вариаций на ее тему написано 100500 К чему изобретать велосипед с квадратными колесами?
Сделать constants.py или constants.json и хранить все константы там не подходит?
Взять gettext или babel. То что ты описал является стандартной хренью для i18n и l10n
Обсуждают сегодня