跳转到主要内容

使用gettext翻译Django模型数据

项目描述

https://travis-ci.cn/ecometrica/django-vinaigrette.svg?branch=master https://coveralls.io/repos/github/ecometrica/django-vinaigrette/badge.svg?branch=master

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翻译原料对象上的namedescription字段。

使用

安装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_CLASSESMIDDLEWARE中使用

    • 废弃VinaigrettteAdminLanguageMiddlewareVinaigretteAdminLanguageMiddleware

      • 用户应更改为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 (10.3 kB 查看哈希值)

上传时间

构建分布

django_vinaigrette-2.0.1-py2-none-any.whl (12.3 kB 查看哈希值)

上传时间 Python 2

由以下组织支持