使用gettext转换django模型数据
django-vinaigrette的Python项目详细描述
django香醋
vinaigrette使用gnu gettext转换django模型数据(存储在数据库中) 以及django的标准国际化特征。
安装
在您的设置中将vinaigrette添加到INSTALLED_APPS。
然后,告诉vinaigrette你想翻译哪些字段。因为调味汁需要记录信号, 模型加载完成后,您应该在适当的apps.py文件中注册模型翻译。 (或者在您保留AppConfig子类的任何地方):
importvinaigretteclassSaladAppConfig(AppConfig):defready(self):# Import the model requiring translationfrom.modelsimportIngredient# or...Ingredient=self.get_model("Ingredient")# Register fields to translatevinaigrette.register(Ingredient,['name','description'])
这告诉vinaigrette翻译成分对象上的name和description字段。
使用
安装vinaigrette之后,由manage.py makemessages生成的po文件将包括 已注册字段中的字符串。如果转换了特定字符串,则模型值将 将字符串翻译成适当的语言:
>>>fromdjango.utils.translationimportactivate>>>i=Ingredient(name=u'Lettuce')>>>i.nameu'Lettuce'>>>activate('fr')>>>i.nameu'Laitue'
等
有两个选项可以限制将收集哪些对象转换字符串 从。请参阅vinaigrette.register的docstring。
vinaigrette将--keep-obsolete选项添加到manage.py makemessages,这将阻止gettext 停用代码或已注册数据库字段中不再存在的已翻译邮件。
vinaigrette是为数据库内容设计的,即:
- 始终用默认语言编辑
- 由站点管理员而不是用户编辑
仅转换模型实例。通过django querysetvalues方法访问的数据将 不被翻译。
一般来说,当一个字段被访问时,如果存在一个字段,它将总是返回翻译的版本。 但是,如果设置了值,则应保存输入的确切值(而不是翻译版本) 到数据库。例如:>>>fromdjango.utils.translationimportactivate>>>i=Ingredient(name=u'Lettuce')>>>activate('fr')>>>i.nameu'Laitue'>>>i.name='Cabbage'>>>i.nameu'Chou'>>>i.save()>>>Ingredient.objects.get(name='Cabbage').nameu'Chou'
救命!每当我保存更改时,管理员就会把所有的vinaigrette字段弄乱!
将vinaigrette.middleware.VinaigretteAdminLanguageMiddleware添加到 settings.MIDDLEWARE强制管理员始终使用主语言,并且 不要在你的改变观点上搞得一团糟。
贡献
测试
- 为项目创建一个virtualenv
- 安装tox。当运行tox时,它将为
支持django和python版本,然后对它们运行测试
发行说明
1.2.1
- 修复python 2对makemessages的支持
- 为makeMessages添加测试
1.2.0
- 为register函数添加了可选的contexts参数 为模型字段提供翻译上下文。
- 将中间件更新为1.10+样式
- 保持向后兼容1.9及以下
- 将在MIDDLEWARE_CLASSES或MIDDLEWARE 中工作
- 不赞成VinaigrettteAdminLanguageMiddleware对于VinaigretteAdminLanguageMiddleware
- 用户应更改为vinaigrette.middleware.VinaigretteAdminLanguageMiddleware
- vinaigrette.VinaigrettteAdminLanguageMiddleware将继续工作,直到下一个主要版本
- 保持向后兼容1.9及以下
- 为开发和测试添加tox和pytest
1.1.1
- 更新联系信息
1.1.0
- django 2.0支持
1.0.1
- 记住要正确更新版本
1.0.0
- 添加--keep-vinaigrette-temp选项,该选项保留包含生成的翻译列表的临时文件
- 增加了对django 1.9的支持
- 删除对django版本的支持<;1.8
0.5.0
- 无法在.register()函数中指定要使用的属性,而不是数据库字段名。
0.4.0
- 支持Django 1.7
0.3.0
- 支持Python3.3。
0.2.0
- 经营单位g修复–all选项,它现在再次工作。
- 新的VinaigrettAdminLanguageIDdleware中间件。
0.1.3
- 支持Django 1.6。