django语言翻译标签

时间:2014-05-16 20:33:19

标签: django django-templates translation translate

我正在使用django {%language%} {%endlanguage%} 标记来使用与html选择列表不同的语言代码来过度规范我的django模板中的文本语言代码,但它没有用!

这是我的代码:

{% language '$("#id_language_code").val()' %}

    "{% trans 'to Present' %}" 

{% endlanguage %}

当用户从html选择列表中选择一个值时,$("#id_language_code")。val()肯定会被更改。如果我将$("#id_language_code")。val()附加到上面的翻译字符串,则会显示更改的语言代码,但不会更改翻译字符串。例如:

"{% trans 'to Present' %}" + $('#id_language_code').val() 

显示此信息(其中de是用户选择的语言代码,但" to Present"未翻译):

to Present de

如果我将语言代码硬编码到{%language%}标记中,则会翻译翻译字符串。例如:

{% language 'de' %}

有谁可以指出我做错了什么?

2 个答案:

答案 0 :(得分:1)

Django模板在服务器上呈现 - 在客户端执行 js之前,所以django不知道什么是'$(“#id_language_code”)。val()'。

您需要在模板上下文中将语言作为变量传递。

答案 1 :(得分:0)

您似乎在混淆服务器端和客户端。

Django在服务器端呈现模板。浏览器接收HTML内容,您可以使用JavaScript操作,但Django在那时已经不在了。

The documentation has a dedicated section关于在JavaScript中使用翻译。简而言之,Django有一种方法可以用翻译目录的形式公开字典,您可以使用JavaScript。您需要更改方法,使其使用此翻译目录而不仅仅是模板。