包装模型翻译包,增加了不错的功能。

django-modeltranslation-wrapper的Python项目详细描述


注意!

modeltranslation-0.5已整合此应用程序的所有功能 (此外,智能管理器已经得到改进),因此请更新而不是使用此应用程序 您的modeltranslation版本。但是,此应用程序仍然提供给那些 (出于某种阴暗的原因)希望继续使用较旧的mt版本。

这个包是一堆^{tt3}的补丁$ (http://code.google.com/p/django-modeltranslation/http://pypi.python.org/pypi/django-modeltranslation/, 这可以提高这个不错的应用程序的使用率,并针对一些恼人的方面。

添加了两个功能:

  • 自动发现应用程序中的translation.py文件

    ^{tt5}$ already has this feature (ported from this app :P), so it is no more needed here and is only left for use with older versions of ^{tt2}$. Thus, the autodiscover is deactivated if the 0.4 version of ^{tt2}$ is detected.

  • 智能管理器:过滤、排序、创建等将当前语言 考虑因素

    (This feature was mainly ported from ^{tt8}$ (https://github.com/zmathew/django-linguo, http://pypi.python.org/pypi/django-linguo), another good app. However, ^{tt2}$ idea of translation fields registration is better than ^{tt10}$ model code edition - especially with 3rd-party apps)

稍后,modeltranslation将被称为mt,而django-modeltranslation-wrapper将被称为 包装器。

功能

自动发现

这个应用程序改变了寻找翻译文件的方式。在mt中,您有 每个项目只有一个文件。包装器使其更像admin:中的每个应用程序 INSTALLED_APPS被检查,其translation.py被导入(如果存在)。

此外,如果您仍然希望包含一些非应用程序翻译(例如,第三方应用程序的翻译), 引入了新设置:MODELTRANSLATION_TRANSLATION_FILES。它应该包含 要导入的其他模块(包含翻译)。

因此,当使用包装器时,MODELTRANSLATION_TRANSLATION_REGISTRY设置是不必要的。

为了向后兼容mt,当存在MODELTRANSLATION_TRANSLATION_REGISTRY时, 它被视为在MODELTRANSLATION_TRANSLATION_FILES中列出。所以没有变化 在现有项目中使用的需要。

智能管理器

包装器更改可翻译模型中的管理器,以便管理器知道其中的活动语言 操作。这意味着,未后缀的属性参数将被重写为后缀版本。

假设当前活动语言是pl

X.objects.filter(foo='bar')
X.objects.filter(foo_pl='bar')

activate('de')
X.objects.filter(foo_pl='bar')  # Still the same result

如果可翻译模型有自己的自定义管理器,智能管理器将被温和地添加, 保留旧功能。

然而,X.objects.create()是特殊情况。对于向后兼容性,其工作方式与 违约。但是您可以传递参数_populate=True来填充后缀字段 来自非固定值的值。

举例说明:

x = X.objects.create(foo='bar', _populate=True)

相当于:

x = X.objects.create(foo_en='bar', foo_pl='bar', ... , foo_zu='bar')

或:

x = X.objects.create(foo='bar')
x.foo_en = 'bar'
x.foo_pl = 'bar'
...
x.foo_zu = 'bar'
x.save()

此外,某些字段可以显式地分配不同的值:

x = X.objects.create(foo='-- no translation yet --', foo_pl='nic', _populate=True)

它将生成foo_pl == 'nic'和其他foo_?? == '-- no translation yet --'

有比一直传递_populate更方便的方法: MODELTRANSLATION_AUTO_POPULATE设置。如果缺少_populate参数,create()将 查看设置以确定是否应使用填充。

为了与mt测试向后兼容,默认情况下禁用此有用功能。 但是,如果代码在很大程度上不依赖于create()在后缀字段上不设置任何值这一事实, 建议设置MODELTRANSLATION_AUTO_POPULATE = True

新设置

模型转换文件

默认值:()

要导入的其他翻译模块的列表。

模型转换自动填充

默认值:False

此设置控制是否X.objects.create()函数应填充语言字段 价值观。

安装

  1. 安装应用程序:

    $ pip install django-modeltranslation-wrapper
    

    或者手动下载并放入python路径。

  2. modeltranslation_wrapper添加到INSTALLED_APPS之前普通modeltranslation

    INSTALLED_APPS = (
        ...
        'modeltranslation_wrapper',
        'modeltranslation',
        ...
    )
    
  3. (可选)在设置中指定MODELTRANSLATION_TRANSLATION_FILES

    MODELTRANSLATION_TRANSLATION_FILES = (
        'myproject.flatpages_translation',
        'myproject.foo_translation',
    )
    

    除了自动发现的模块外,还将导入这些模块。

  4. 如果您在0.4或更高版本中使用mt,不幸的是您还必须添加 'modeltranslation_wrapper.patch'作为^{tt16}中的最后一个条目$ 使聪明经理:

    MODELTRANSLATION_TRANSLATION_FILES = (
        'myproject.flatpages_translation',
        'myproject.foo_translation',
        'modeltranslation_wrapper.patch',
    )
    

    这是由于mt0.4加载翻译的方式发生了变化。

  5. (可选)指定MODELTRANSLATION_AUTO_POPULATE(见上文):

    MODELTRANSLATION_AUTO_POPULATE = True
    

更改日志

1.2.2(2012年3月4日)
重新打包分发以删除以前意外添加的过时的modeltranslations包。
1.2.1(2012年9月23日)
  • 重构代码以使用ModelTranslation-0.4
  • 更新多语言管理器以重写q和f查询
1.1(2012年9月4日)
添加了testrunner
1.0(2012年6月24日)
初始代码
Authors:

Jacek Tomaszewski

Zach Mathew (of ^{tt8}$)

For details see AUTHORS file.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法从组合框中选择值。需要JS替代方案   打印带有规范问题的Java打印程序?   使用Xmodem传输文件内容时的附加ASCII字符的java传输   java JAXB通过socket和流读取器块   java“错误:在类Grad中找不到Main方法,请将Main方法定义为:public static void Main(字符串[]args)”   如何在Java中将图像从彩色转换为黑白(灰度)   java如何使用Google云连接服务器发送上游GCM消息   JAVA中的JSON文件字段交叉点   什么是“搜索:{…}”/Java中正式使用的“中断搜索”语法?   由于明显的类路径冲突导致java ToDiscoverable强制转换错误?   java可以成为一种语言。类文件不能添加到URLClassLoader的urlpath   Android设备上会话管理的java最佳实践   Java8Java上的Google应用程序引擎。开发服务器上的时间不可用?   java Derby数据库导出为单个文件?   java如何让jmeter根据访问日志行中的时间戳进行日志重放   访问EJB分离接口时的java IllegalAccessException   java使用JsonPath在不知道密钥的情况下提取值   java将文件保存到Jersey API中的服务器应用程序目录   jsoup中的java Http异常   java有没有错误?