babel flask jinja javascript地狱

时间:2016-02-26 07:18:37

标签: javascript python flask jinja2 babel

我有没有办法在我的javascript文件中包含flask jinja封闭的babel翻译并将其加载,就好像它是一个静态文件一样?或者是我这样做的唯一方法是将我的代码的这部分包含在.html模板文件中?我问,因为我想抽出我的代码的这部分,所以它可以在其他领域重用,但如果我这样做,我会失去翻译,无法获得必要的信息。

请指教。 我想导入javascript文件,但也可以使用

var x = {{_('translation here')}}

在我的javascript文件中,也可以通过babel提取翻译,然后通过.po文件进行国际化。

谢谢!干杯

2 个答案:

答案 0 :(得分:0)

我尝试了很多让我的js文件中的文本转换为文本,然后将脚本导入到html中:

<script src="myscripts.js"></script>

所以我发现了一些很好的链接:

  1. Flask-Babel localized strings within js

  2. Babel.cfg

  3. 所以我明白我需要制作自己的babel.cfg文件:标题中包含[javascript: / .js]。

    虽然我做了,但执行了代码:

    pybabel extract -F babel.cfg -o messages.pot
    

    它仍然没有从javascript翻译...所以现在我把脚本放在一个HTML:

    <html>
    <script>
    //my script with {{_('translating')}}
    </script>
    </html>
    

    包括这个html,我需要脚本:

    {% include 'myscript.html' %}
    

    我知道这很糟糕,但是现在唯一对我有用的想法

答案 1 :(得分:-1)

要在js中使用jinja表示法,你应该用“”包装它:

使用:

var x = "{{_('translation here')}}"

或:

var x = "{{gettext('translation here')}}"

但我认为标准方法是从后端传递翻译:

from flask_babel import gettext
foo = gettext(a)
return render_template(HTML, a=a)