gpt4 book ai didi

django - {% trans "string"%} 不适用于模板,但 {% trans variable %} 可以

转载 作者:行者123 更新时间:2023-12-04 04:47:55 27 4
gpt4 key购买 nike

我对 Django 很陌生,我正在用 i18n 做一个项目,问题是我已经使用 .manage.py makemessages / compilemessages 翻译了一些变量。在我的模板文件上,但是当我使用 {% trans "my string" %} 时我得到了同样的 "my string"适用于所有语言。

我究竟做错了什么?这是 views.py 和 idioma.html 的代码

View .py:

#这里有一些代码...

def idioma(request):
output = _("Mensaje en espanol")
return render_to_response( 'idioma/idioma.html', { 'idioma' : output }, context_instance = RequestContext(request) )

idioma.html
{% load i18n %}

< form action="/i18n/setlang/" method="post">

{% csrf_token %}

< input name="next" type="hidden" value="{{ redirect_to }}" />

< select name="language" >

{% get_language_info_list for LANGUAGES as languages %}

{% for language in languages %}

< option value="{{ language.code }}">
{{ language.name_local }} ({{ language.code }})
< /option>
{% endfor %}

</select>

< input type="submit" value="Go" />

< /form>

La cadena es: {% trans idioma %}

{% trans "carro" %}

应用程序从 locale/path/to/language/中的 .po 和 .mo 文件转换成语变量

但它不会翻译 {% trans "carro"%} 字符串。

这是怎么回事?

谢谢你的帮助!!!!

最佳答案

您是否手动翻译了 .po 中的字符串?
makemessages只需将“carro”添加到 .po,在 .po 文件中生成类似的内容

#: idioma.html:45
msgid "carro"
msgstr ""

然后你必须编辑 .po 手动 以这种方式添加该字符串的翻译:
#: idioma.html:45
msgid "carro"
msgstr "car"

然后,当您完成所有 .po 字符串的翻译后,您可以运行 compilemessages : 它会编译你的翻译。

注:永远记得找 ,fuzzy翻译。
如果你的 .po 中有这样的东西
#: idioma.html:45
#, fuzzy
msgid "carro"
msgstr "car"

这意味着 django 出于某种原因尝试自行翻译字符串(通常发生在您已经在一段不再使用的代码中使用该字符串时)。

您必须检查翻译并删除 #, fuzzy行:任何带有 #, fuzzy 标签的翻译不会在您的网页中翻译。

关于django - {% trans "string"%} 不适用于模板,但 {% trans variable %} 可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12101811/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com