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