使用flask-admin时如何自动翻译字段标签? [英] How to translate field label automatically when using flask-admin?
问题描述
我想知道当Flask-admin生成烧瓶标签时,如何使用Flask-BabelEx(由Flask-Admin建议)自动转换字段标签.
I would like to know how to use Flask-BabelEx(which is recommended by Flask-Admin) to translate field labels automatically when it's been generated by flask-admin.
例如,如果我有一个定义如下的字段:
For example, If I have a field which is defined as below:
class PurchaseOrder(Base):
__tablename__ = 'purchase_order'
id = Column(Integer, primary_key=True)
logistic_amount = Column(Numeric(xxxx))
def __unicode__(self):
return self.id
该视图被视为
class PurchaseOrderAdmin(ModelView):
column_labels = dict(logistic_amount=gettext("logistic_amount"),)
然后按如下所示向管理员注册:
Then register to the admin as below:
admin.add_view(PurchaseOrderAdmin(PurchaseOrder, db_session, category='Order'))
这是我初始化通天塔的方式:
Here is how I init babel:
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')
我已经生成了以下文件:
And I have generated the follow files:
translations/zh_CN/LC_MESSAGES/messages.mo
translations/zh_CN/LC_MESSAGES/messages.po
文件messages.po的内容如下所示:
Content of file messages.po shown below:
msgid ""
msgstr ""
msgid "logistic_amount"
msgstr "物流费用"
但是似乎键(logistic_amount)而不是翻译后的字符串(物流费用)一直显示在列表和编辑页面中.
But seems the key(logistic_amount) rather than the translated string(物流费用) is displaying in the list and edit page all the time.
这里还缺少什么吗?
感谢您的帮助.
推荐答案
我们需要使用lazy_gettext而不是gettext来使其正常工作,示例如下:
We need to use lazy_gettext rather than gettext to make it work, examples as below:
adminViews.add_view(SalesOrderAdmin(SalesOrder, db_session, name=lazy_gettext("Sales Order")))
还有
class PurchaseOrderAdmin(ModelView):
column_labels = dict(logistic_amount=lazy_gettext("logistic_amount"),)
这篇关于使用flask-admin时如何自动翻译字段标签?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!