跳转到主要内容

为翻译项目收集的辅助工具和混入类。

项目描述

Continuation of the deprecated project "Divio Aldryn translation tools" Pypi package status Python versions license

Aldryn Translation Tools

已弃用项目的延续 Divio Aldryn搜索.

为翻译django-CMS项目收集的共享辅助工具和混入类。

要使用它,请使用pip将其安装到您的项目中

pip install djangocms-aldryn-translation-tools

贡献

我们感谢所有帮助创建和维护此软件包的贡献者。

贡献者名单在贡献页面上。

admin.AllTranslationsMixin

自动在变更列表中添加语言“标签”列表。标签颜色表示该对象的翻译状态。灰色表示未翻译,蓝色表示已翻译。使用较深的颜色表示当前语言。

每个标签都链接到对象变更表单上的特定语言标签。

在HVAD中也有类似的功能,现在基于Parler的项目也有这个功能。

预览

https://cloud.githubusercontent.com/assets/615759/7727430/5889f0e0-ff11-11e4-930a-2bfc80bef426.jpg

要使用此功能,只需导入并将混入类添加到您的Model Admin类中即可

from parler.admin import TranslatableAdmin
from aldryn_translation_tools.admin import AllTranslationsMixin

class GroupAdmin(AllTranslationsMixin, TranslatableAdmin):
   # ....

如果您希望将标签放入不同的列中,您可以将 all_translations 添加到 list_display 列表中您想要的位置,否则“语言”列将自动放置在最右边。

admin.LinkedRelatedInlineMixin

此 admin inline 混合将第一个字段链接到行对象的自己的 admin 变更表。

如果第一个字段是可编辑的,结果将未定义,但可能无法按预期工作。为了获得最佳结果,请考虑将所有字段设置为只读(因为它们可以通过链接轻松编辑),并覆盖 inline 上的 has_add_permission() 方法以始终返回 False

models.TranslatedAutoSlugMixin

这是一个可翻译的模型混合,它会在 save() 时自动为对象生成合适的 slug。

如果 slug_globally_uniqueTrue,则 slug 必须在所有语言中都是唯一的。

如果 slug_globally_uniqueFalse(默认值),则这里使用的策略是,如果 slug 属于不同的语言,则允许两个对象使用相同的 slug。所以如果这个用于翻译的文章模型,这些 URL 是有效的

/en/pain - 一篇关于身体不适的英文文章

/fr/pain - 一篇关于面包的法文文章

当然,这意味着在从 URL 解析对象时,必须注意考虑 URL 的语言部分。

在使用此混合时,还必须将实现模型上的 slug_source_field_name 属性设置为要从中派生 slug 的翻译字段的名称。如果您需要从多个字段(翻译或其他)派生更多 slug,只需覆盖方法 get_slug_source 以提供 slug 的源字符串。

配置属性

slug_default

提供要使用的默认 slug 的懒惰翻译字符串,如果对象没有源字符串来派生 slug,则使用。

slug_field_name

提供存储生成的 slug 的翻译字段的名称。

slug_globally_unique

一个布尔标志,用于控制 slug 是否全局唯一,或仅在每个语言中唯一。默认值为 False。

slug_max_length

声明 slug 的最大长度。默认值为 slug_field 的 max_length,并通过内省确定。

slug_separator

这确定在添加到 slug 之前使用的分隔符。它不决定用于 slug 本身的分隔符,它始终是 -。这只是为了与 aldryn_common 中的 slugify() 方法兼容,但它不推荐使用。默认为 -

slug_source_field_name

提供用于派生 slug 的翻译字段的名称。如果有多个字段或其他复杂来源需要,请覆盖方法 get_slug_source()。注意,如果覆盖了 get_slug_source(),建议还覆盖 get_slug_default()

公共方法

get_slug_default

天真地从对象中构建翻译的默认 slug。为了获得更好的结果,只需将类上的 slug_default 属性设置为懒惰翻译字符串。或者,如果您需要以更程序化的方式确定默认 slug,可以覆盖此方法。

示例:如果您的模型是“新闻文章”,源字段是“标题”,则此方法将返回“news-article-without-title”。

get_slug_max_length

接受可选参数 idx_len

检查 slug 字段以确定最大长度,考虑到可能的分隔符以及最多 [idx_len] 位数字。

get_slug_source

简单返回 slug 源字段的值。对于使用多个字段(已翻译或未翻译)作为源等更复杂的情况,可以重写。

models.TranslationHelperMixin

公开方法

known_translation_getter()

签名

(value, language) = obj.known_translation_getter(field, default=None, language_code=None, any_language=False)

类似 Parler 的 safe_translation_getter(),但尊重 settings.CMS_LANGUAGES 中定义的回退首选项,并提供作为元组的翻译值及其表示的语言。

这在解决给定语言的对象的绝对 URL 时特别有帮助。如果使用回退(尊重首选项),则返回的 language_code 可以用于为 reverse() 设置正确的上下文,以获取与结果语言一致的 URL。

例如

from django.utils.translation import override

from aldryn_translation_tools.models import TranslationHelperMixin
from cms.utils.i18n import get_current_language
from parler.models import TranslatableModel, TranslatedFields

class Fruit(TranslationHelperMixin, TranslatableModel):
    translations = TranslatableFields(
        name=models.CharField(...),
        slug=models.CharField(...)
    )

    def get_absolute_url(self, language=None):
        language = language or get_current_language()
        (slug, language) = self.known_translation_getter('slug',
            default=None, language_code=language, any_language=False)
        with override(language):
            return reverse('fruit-detail', kwargs={'slug': slug})

相比之下,如果我们只做了类似这样的事情

...

    def get_absolute_url(self, language=None)
        language = language or get_current_language()
        slug = self.safe_translation_getter('slug', default=None,
            language_code=language, any_language=False)
        with override(language):
            return reverse('fruit-detail', kwargs={'slug': slug})

那么,如果水果 苹果 尚未翻译成 FR,那么 slug 可能会出现在回退语言中,而 URL 的其余部分则在请求的语言中,因此,而不是获取语言一致的回退 URL

/en/apple/

你可能会得到

/fr/apple/

这最多会让网站访客感到困惑,但更有可能不存在,导致 NoReverseFound 异常或 404,这显然没有尊重开发人员设置的回退首选项。

项目详情


下载文件

下载适用于您的平台文件。如果您不确定选择哪一个,请了解更多关于 安装软件包 的信息。

源分发

djangocms-aldryn-translation-tools-1.0.2.tar.gz (18.4 kB 查看哈希值)

上传时间

构建分发

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面