Ale*_*nez 8 django django-templates internationalization
我是Django的新手,我正在开发一个i18n项目,事情是我 .manage.py makemessages / compilemessages 在我的模板文件中使用了一些变量,但是当我使用时,我对所有语言 {% trans "my string" %} 都有相同"my string"的变化.
我究竟做错了什么?这是views.py和idioma.html的代码
#some code here ...
def idioma(request):
output = _("Mensaje en espanol")
return render_to_response( 'idioma/idioma.html', { 'idioma' : output }, context_instance = RequestContext(request) )
Run Code Online (Sandbox Code Playgroud)
{% 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" %}
Run Code Online (Sandbox Code Playgroud)
但它没有翻译{%trans"carro"%}字符串.
这是怎么回事?
谢谢你的帮助!!!!
dol*_*a33 17
您是否手动翻译了.po中的字符串?
makemessages 只需将"carro"添加到.po,在.po文件中生成类似的内容
#: idioma.html:45
msgid "carro"
msgstr ""
Run Code Online (Sandbox Code Playgroud)
然后你必须编辑.po 手动添加该字符串的翻译,这样:
#: idioma.html:45
msgid "carro"
msgstr "car"
Run Code Online (Sandbox Code Playgroud)
然后,当您完成翻译所有.po字符串后,您可以运行compilemessages:它将编译您的翻译.
注意:永远记得寻找,fuzzy翻译.如果你的.po中有这样的东西
#: idioma.html:45
#, fuzzy
msgid "carro"
msgstr "car"
Run Code Online (Sandbox Code Playgroud)
这意味着django由于某种原因试图自己翻译字符串(通常在您已经在一段不再使用的代码中使用该字符串时发生).
您必须查看翻译并删除该#, fuzzy行:任何标记的翻译#, fuzzy都不会在您的网页中翻译.
res*_*ate 11
我遇到了类似的问题,并能够通过设置LOCALE_PATHS我的设置文件来解决它.LOCALE_PATHS是一个目录路径的元组,其中django查找.mo和.po文件.这是一个例子:
# settings.py
LOCALE_PATHS = (
'/path/to/your/project/locale',
)
Run Code Online (Sandbox Code Playgroud)
有关LOCALE_PATHS更多信息,请阅读django的官方文档.
| 归档时间: |
|
| 查看次数: |
8940 次 |
| 最近记录: |