首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用烧瓶管理时自动翻译字段标签?

如何在使用烧瓶管理时自动翻译字段标签?
EN

Stack Overflow用户
提问于 2015-06-16 06:22:29
回答 2查看 1.3K关注 0票数 0

我想知道如何使用烧瓶-BabelEx(这是由flask推荐的),以自动翻译字段标签时,它是由烧瓶-管理。

例如,如果我有一个定义如下的字段:

代码语言:javascript
复制
class PurchaseOrder(Base):
    __tablename__ = 'purchase_order'
    id = Column(Integer, primary_key=True)
    logistic_amount = Column(Numeric(xxxx))

    def __unicode__(self):
        return self.id

这里的景色是不一样的

代码语言:javascript
复制
class PurchaseOrderAdmin(ModelView):
    column_labels = dict(logistic_amount=gettext("logistic_amount"),)

然后注册到管理员,如下所示:

代码语言:javascript
复制
    admin.add_view(PurchaseOrderAdmin(PurchaseOrder, db_session, category='Order'))

这是我如何取名于babel:

代码语言:javascript
复制
babel = Babel(app, default_locale="zh_CN", default_timezone="CST")

@babel.localeselector
def get_locale():
    override = request.args.get('lang')
    if override:
        session['lang'] = override
    return session.get('lang', 'zh_CN')

我生成了以下文件:

代码语言:javascript
复制
translations/zh_CN/LC_MESSAGES/messages.mo
translations/zh_CN/LC_MESSAGES/messages.po

文件messages.po的内容如下:

代码语言:javascript
复制
msgid ""
msgstr ""
msgid "logistic_amount"
msgstr "物流费用"

但似乎键(Logistic_amount)一直显示在列表和编辑页面中,而不是已翻译的字符串(物流费用)。

这有什么遗漏的地方吗?

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-18 15:39:43

我们需要使用lazy_gettext而不是gettext来使其工作,如下所示:

代码语言:javascript
复制
adminViews.add_view(SalesOrderAdmin(SalesOrder, db_session, name=lazy_gettext("Sales Order")))

代码语言:javascript
复制
class PurchaseOrderAdmin(ModelView):
    column_labels = dict(logistic_amount=lazy_gettext("logistic_amount"),)
票数 1
EN

Stack Overflow用户

发布于 2015-08-18 08:59:33

我的猜测是,在您的示例中,gettext("logistic_amount")实际上不返回已翻译的字符串。

作为一个相当粗糙的“快速修复”,您可以尝试为您的模型使用自定义admin/model/list.html,并:用{{ _(name) }}替换所有出现的{{ name }},然后Jinja就会处理这个问题。(为我工作)

我还没有对此进行调查,但我相信这是一些Babel / BabelEx配置问题。

问候

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30860157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档