【问题标题】:Django-cms placeholder translation, rendering with respect to languageDjango-cms 占位符翻译,相对于语言的渲染
【发布时间】:2016-06-29 23:57:33
【问题描述】:

我想知道如何在 Django-cms 中手动翻译占位符。

如果我使用标签{% placeholder "test" %},我只能为所有语言定义一次测试的值。是否可以为网站上使用的所有语言多次定义相同的占位符?或者我应该创建不同的占位符test_entest_frtest_es 并在我的模板中使用if 子句?它不是很优雅。

【问题讨论】:

    标签: django-cms


    【解决方案1】:

    您尚未提供有关如何构建页面的任何详细信息,但我猜您已经使用自定义占位符设置创建了自己的页面。如果您在设置中配置多种语言,则默认情况下任何常规 django-cms 页面都是可翻译的。

    请注意,最好翻译包含占位符的容器而不是单独翻译每个占位符。

    如果您定义自己的页面,则可以使用 django-hvad(这也是 django-cms 使用的)使这些翻译感知:

    # models.py
    
    from cms.models import PlaceholderField, Placeholder
    from django.conf import settings
    from django.contrib.auth.models import User
    from django.db import models
    from django.db.models import Q
    from django.utils.translation import ugettext_lazy as _
    from hvad.manager import TranslationAwareManager
    
    class LanguageManager(TranslationAwareManager):
        def for_language(self, language):
            return self.get_queryset().filter(Q(language__isnull=True) | Q(language=language))
    
    
    class CustomPage(models.Model):
    
        language = models.CharField(_('language'), max_length=5, null=True, blank=True, choices=settings.LANGUAGES,
                                    help_text=_('leave empty to display in all languages'))
    
        placeholder_abstract = PlaceholderField('abstract', related_name='%(class)s_abstracts')
        placeholder_content = PlaceholderField('content', related_name='%(class)s_contents')
        placeholder_links = PlaceholderField('links', related_name='%(class)s_links')
    
        created_by = models.ForeignKey(User, null=False, blank=False, related_name='+', editable=False)
        modified_by = models.ForeignKey(User, null=False, blank=False, related_name='+', editable=False)
        created = models.DateTimeField(auto_now_add=True, editable=False)
        last_modified = models.DateTimeField(auto_now=True, editable=False)
    
        objects = LanguageManager()
    

    Django Hvad 有更多用于翻译模型的好东西。

    【讨论】:

      猜你喜欢
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 2014-05-02
      • 1970-01-01
      相关资源
      最近更新 更多