首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用flask-babel在循环中进行翻译

如何使用flask-babel在循环中进行翻译
EN

Stack Overflow用户
提问于 2015-11-19 02:31:46
回答 1查看 615关注 0票数 0

我很难弄清楚如何使用flask-babel来转换循环中的变量。给出这个(不工作的)例子,我需要为每一次迭代修改什么才能有自己的翻译?

代码语言:javascript
复制
{% for key, values in products.items() %}
    <h4>{{ _('%(name)s', name=values['name']) }}</h4>
    <p>{{ _('%(caption)s', caption=values['caption']) }}</p>
{% endfor %}

在此示例中,PO的生成方式如下:

代码语言:javascript
复制
msgid "%(name)s"
msgstr ""

据我所知,这只允许我为翻译插入一个值

EN

回答 1

Stack Overflow用户

发布于 2015-11-20 18:07:56

所以你有静态和动态的文本。翻译文本的巴别塔方法只对静态文本有效。对于动态生成的文本,它将是非常无效的: Babel不知道动态文本,您将不得不手动添加新闻文本到PO中,每次出现新产品时。我不推荐这样做。

对于动态文本,您应该使用不同的方法。我猜您会定期通过第三方API将产品导入到数据库中,这样就有了一个Product模型。如果只有几种语言和文本需要翻译,那么只有一个模型和多个翻译字段(每种语言一个)就足够了。例如:

代码语言:javascript
复制
class Product(db.Model):
    __tablename__ = 'product'

    id       = db.Column(db.Integer, primary_key=True)
    category = db.Column(db.SmallInteger, index=True)
    added    = db.Column(db.DateTime, index=True)

    name_en  = db.Column(db.String(255))
    name_eo  = db.Column(db.String(255))
    name_hu  = db.Column(db.String(255))

    description_en = db.Column(db.Text)
    description_eo = db.Column(db.Text)
    description_hu = db.Column(db.Text)

因此,在您导入新产品后,您可以通过在线界面翻译它们的文本。如果您有许多字段要翻译,您可以将Product中与语言相关的和独立的部分分开,并为它们建立单独的模型:

代码语言:javascript
复制
class Product(db.Model):
    __tablename__ = 'product'

    id       = db.Column(db.Integer, primary_key=True)
    category = db.Column(db.SmallInteger, index=True)
    added    = db.Column(db.DateTime, index=True)

class ProductText(db.Model):
    __tablename__ = 'product'

    id          = db.Column(db.Integer, primary_key=True)
    pid         = db.Column(db.Integer, db.ForeignKey('product.id'))
    language    = db.Column(db.String(10), index=True)

    name        = db.Column(db.String(255))
    description = db.Column(db.Text)

因此,当您想要向客户端展示产品时,首先检查活动语言,并用当前的Product加载相应的翻译后的ProductText

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

https://stackoverflow.com/questions/33787662

复制
相关文章

相似问题

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