使用gettext翻译Django模型数据
项目描述
django-vinaigrette
Vinaigrette使用GNU gettext和Django的标准国际化功能将存储在数据库中的Django模型数据进行翻译。
安装
将vinaigrette添加到设置中的INSTALLED_APPS。
然后,告诉vinaigrette你想翻译哪些字段。因为vinaigrette需要注册信号,所以你应该在模型加载完成时注册你的模型翻译,在适当的apps.py文件中(或你保存AppConfig子类的任何地方)
import vinaigrette
class SaladAppConfig(AppConfig):
def ready(self):
# Import the model requiring translation
from .models import Ingredient # or...
Ingredient = self.get_model("Ingredient")
# Register fields to translate
vinaigrette.register(Ingredient, ['name', 'description'])
这告诉vinaigrette翻译原料对象上的name和description字段。
使用
安装vinaigrette后,manage.py makemessages生成的PO文件将包含注册字段中的字符串。如果某个字符串被翻译,模型值将是翻译成适当语言的字符串
>>> from django.utils.translation import activate
>>> i = Ingredient(name=u'Lettuce')
>>> i.name
u'Lettuce'
>>> activate('fr')
>>> i.name
u'Laitue'
等等
有一些选项可以限制从哪些对象中收集翻译字符串。请参阅vinaigrette.register的文档字符串。
Vinaigrette为manage.py makemessages添加了--keep-obsolete选项,该选项防止gettext停用不再存在于代码或注册数据库字段中的翻译消息。
Vinaigrette是为始终以默认语言编辑、由网站管理员编辑而不是用户编辑的数据库内容而设计的
始终在默认语言中编辑
由网站管理员编辑,而不是用户
只有模型实例被翻译。通过Django QuerySet values方法访问的数据将不会被翻译。
通常,当访问字段时,如果存在翻译版本,它将始终返回翻译版本。但是,如果设置了值,应将确切输入的值(而不是翻译版本)保存到数据库中。例如
>>> from django.utils.translation import activate
>>> i = Ingredient(name=u'Lettuce')
>>> activate('fr')
>>> i.name
u'Laitue'
>>> i.name = 'Cabbage'
>>> i.name
u'Chou'
>>> i.save()
>>> Ingredient.objects.get(name='Cabbage').name
u'Chou'
救命!每次我保存更改时,管理员都在乱搞所有的vinaigrette字段!
将vinaigrette.middleware.VinaigretteAdminLanguageMiddleware添加到你的settings.MIDDLEWARE中,以强制管理员始终使用主要语言,并防止vinaigrette干扰你的更改视图。
贡献
测试
为项目创建一个虚拟环境
安装tox。当运行tox时,它将为支持的Django和Python版本创建测试环境,然后针对它们运行测试
发布说明
2.0.1
为PyPI重新构建
2.0.0
移除Python 2支持
允许在不指定区域设置的情况下运行makemessages(在所有区域设置上运行)
解决Django升级警告
确保在执行期间如果活动区域设置不是英语,makemessages也能正常工作
1.2.1
修复makemessages对Python 2的支持
为makemessages添加测试
1.2.0
为register函数添加了可选的上下文参数,用于为模型字段提供翻译上下文。
更新中间件到1.10+样式
与1.9及以下版本保持向后兼容
现在可以在MIDDLEWARE_CLASSES或MIDDLEWARE中使用
废弃VinaigrettteAdminLanguageMiddleware为VinaigretteAdminLanguageMiddleware
用户应更改为vinaigrette.middleware.VinaigretteAdminLanguageMiddleware
vinaigrette.VinaigrettteAdminLanguageMiddleware将继续在下一个主要版本中工作
为开发和测试添加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
对python 3.3的支持。
0.2.0
修复了–all选项的bug,现在它又正常工作了。
新增加VinaigrettteAdminLanguageMiddleware中间件。
0.1.3
支持Django 1.6。
项目详情
django-vinaigrette-2.0.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cf5b3e789da3f4f755a896c39c7b226932e171d782b006ed9771b04597df8f2e |
|
MD5 | 4e20961b46ed0723d9f34da15d832827 |
|
BLAKE2b-256 | 18072c3b669d0db3491a1184509914684891c3bea14f4d971d4afa3d7d950032 |
django_vinaigrette-2.0.1-py2-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 84f2fc3b77001cd378c613020d011c0a5ae854dd33cba92ff73c63ce57650139 |
|
MD5 | 477b08868e90b773d07a6aaa4df0cfb5 |
|
BLAKE2b-256 | 63723cf032be97c04cfd3e056953264f9d0a31895e64983be36ee36c79266892 |