每个语言翻译使用一个单独的模型实例并同步非语言特定字段的可翻译模型。
django-t10e的Python项目详细描述
django-t10e
django-t10e是一种允许您翻译 你的模特。django-t10e代表django translatable。
django-t10e背后的概念是,每个 语言。这意味着一个对象被翻译成两种不同的语言 将由模型数据库表中的两行表示。每一个可翻译的 模型有一个language字段和一个translation_set字段。
language显然定义了每个翻译的语言和 translation_set将一个实体的翻译组合在一起。全部 具有相同translation_set的实例被认为是不同的 同一实体的翻译。一个实体可能是一篇新闻文章 翻译成多种语言。
translation_set字段是一个models.ForeignKey('self')字段,因此 始终指向同一模型的实例。第一个保存的实例 翻译将把这个外键设置为它自己的主键。实例到 一个实体的所有翻译都指向(第一个翻译)的 基本翻译。
一个例子。假设以下页面实例:
- Article(id=13, title='I18N is hard', language='en', translation_set=13)
- Article(id=14, title='Internationalisierung ist schwer', language='de', translation_set=13)
- Article(id=15, title='La internacionalización es dura', language='es', translation_set=13)
带有id=13的项目被视为基本翻译。id=14是 id=13的德语翻译。id=15是 id=13。这三个组成了“i18n很难”的一个翻译集 文章。
可能还有一些字段不需要翻译,如日期字段等。 它们在翻译集中同步。例如:项目模型可能 有一个pub_date字段。所以一个翻译集中的所有翻译都有 相同的pub_date赋值。当一个翻译被更改时,你需要 调用update_translations()方法。将更新所有其他实例 在相应的翻译集中。
发展
使用以下命令安装依赖项(包括测试依赖项):
pip install -r requirements.txt
然后您可以使用以下命令运行所有测试:
tox
更改日志
0.1.0
- 初始释放。