所以你有静态和动态的文本。翻译文本的Babel 方式仅对静态文本有效。对于动态生成的文本,它会非常无效:Babel 不知道动态文本,每次新产品出现时,您都必须手动将新闻文本添加到 PO。我不推荐它。
您应该对动态文本使用不同的方法。我想您会定期通过第 3 方 API 将产品导入数据库,这样您就有了Product
模型。如果只有几种语言和文本要翻译,那么只有一个模型具有许多翻译字段(每种语言一个)仍然足够。例如:
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
分开,并为它们设置单独的模型:
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)
因此,当您想向客户展示产品时,首先检查活动语言,然后ProductText
使用当前的Product
.