2014-03-12 6 views
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 игнорирует эту часть.

Любые подсказки?

+0

Вы обслуживаете JavaScript как статический файл или обрабатываете его по маршруту, добавленному в ваше приложение Flask? – dirn

+0

Он служит как статический файл (в html, обработанном jinja2). – jarandaf

+0

Я предполагаю, что вы имеете в виду, что на статический файл ссылается тег '

Смежные вопросы