我尝试使用我的json_file在我的html中构建一些导航栏:
例如我的json_file:
{
"_comment":"example auto build navbar",
"TOP" :[
{
"name" : "name1",
"id" : "MLO",
"title" : "Title than i want translate"
}]
}
在我的view.py中:
def view(request):
'''
'''
with open('IHMWEB/json_file.json') as data_file:
data = json.load(data_file)
c = {'user_username': request.session['user_username'],
"data" : data}
context = Context(c)
template = get_template('view.html')
translation.activate(settings.LANGUAGE_CODE)
html = template.render(context)
return HttpResponse(html)
并在我的模板中:
{% for menu in data.TOP %}
<a href="#" id={{menu.id}} title="{{menu.title}}" class="navbar-brand"> {{menu.name}}</a>
{% endfor %}
如何使用gettext翻译“title”并将翻译发送到我的template.html?有可能吗?
答案 0 :(得分:2)
从Python文件加载翻译字符串并使用常规ugettext()
进行翻译可能是个更好的主意。
但是,回答你的问题:Django模板系统非常通用,基本上可以用于任何类型的文本字符串。因此,您也可以使用它来翻译您的JSON文件内容。然而,它非常“hackish”,并没有真正推荐。
t = Template(open('/path/to/menu.json').read())
c = Context({})
translated_json = t.render(c)
py_obj = json.loads(translated_json)
这应该从模板呈现的JSON字符串中生成一个python对象。您的menu.json
看起来像这样
{% load i18n %}
{
"_comment":"example auto build navbar",
"TOP" :[
{
"name" : "name1",
"id" : "MLO",
"title" : "{% trans 'Title than i want translate' %}"
}
]
}
您将该文件加载到模板渲染器中,然后加载i18n模块并翻译任何{% trans %}
字符串。
运行makemessages
时,请记住要包含要搜索转换字符串的.json
个文件。