【发布时间】:2012-08-09 12:41:58
【问题描述】:
我对 django 翻译有奇怪的问题,需要帮助解决。问题是每次我似乎随机获得翻译字符串或默认字符串时,而不是获取翻译字符串。
我创建了一个类,用于在多个页面上放置“动作”按钮。其中许多按钮都是可重复使用的,所以我为什么要放
<a href="something">blabla</a>
当我可以创建简单的工具栏并使用时,分成几个模板
toolbar.add(tool)
在视图中,然后只使用模板标签来渲染所有工具......无论如何。
这是一个工具的示例:
class NewUserGroupButton(MyTool):
tool_id = 'new-user-group'
button_label = ugettext(u'Create new user group')
tool_href = 'new/'
js = ()
def render(self):
s = '<a id="%(tool_id)s" href="%(tool_href)s" class="button blue">%(button_label)s</a>'
return s % {'tool_id': self.tool_id, 'tool_href': self.tool_href, 'button_label':self.button_label}
工具呈现如下:
class ToolbarTools:
def __init__(self):
self.tools = []
def add(self, tool):
self.tools.append(tool)
def render(self):
# Organize tools by weight
self.tools.sort(key=lambda x: x.weight)
# Render tools
output = '<ul id="toolbar" class="clearfix">'
for tool in self.tools:
output += '<li id="%s">' % ('tool-'+ tool.tool_id)
output += tool.render() if tool.renderable else ''
output += '</li>'
output += '</ul>'
# Reset tools container
self.tools = []
return mark_safe(output)
我使用 ugettext 来翻译字符串。使用 (u)gettext=lambda s:s 或 ugettext_lazy 不会给我与函数选择相对应的翻译或代理对象。
就像我说的 - 虽然页面的其余部分使用正确的语言,但工具栏按钮似乎是随机翻译或不翻译的。如果我使用不同的“工具”在不同页面之间移动,甚至多次刷新同一页面,错误行为仍然保持一致。
有人可以帮我找出导致此问题的原因以及如何解决它吗?
【问题讨论】:
标签: django translation gettext