4
Я довольно новичок как в Python, так и в Flask (с Jinja2 в качестве механизма шаблонов), и я не уверен, что делаю это правильно. Я использую расширение Flask-Babel для добавления поддержки i18n в свое веб-приложение. Я хочу, чтобы получить локализованные строки из моего JS кода, например:Локализованные строки Flask-Babel в js
var helloWorld = gettext('Hello, world');
console.log(helloWorld); //should log a localized hello world message
Для этого я настроил столпотворение (babel.cfg):
[python: **/**.py]
[jinja2: **/**.html]
extensions=jinja2.ext.autoescape,jinja2.ext.with_
[javascript: **/**.js]
encoding = utf-8
И его инициализация (импорт опущен для простоты) :
#main Flask app
app = Flask(__name__)
#localization
babel = Babel(app)
LANGUAGES = {
'ca': 'Catalan',
'en': 'English',
'de': 'Deutsch',
'es': 'Español',
'fi': 'Finnish',
'it': 'Italian'
}
@babel.localeselector
def get_locale():
return request.accept_languages.best_match(LANGUAGES.keys())
#some more stuff...
Бабель идентифицирует эту строку при создании файлов POT/PO языка, но мне кажется, я не могу получить доступ к этим локализованным строкам из JS кода, поскольку Gettext функция не определена. Кажется, что Jinja2 игнорирует эту часть.
Любые подсказки?
Вы обслуживаете JavaScript как статический файл или обрабатываете его по маршруту, добавленному в ваше приложение Flask? – dirn
Он служит как статический файл (в html, обработанном jinja2). – jarandaf
Я предполагаю, что вы имеете в виду, что на статический файл ссылается тег '