Django-cms占位符翻译,相对于语言的渲染
Django-cms placeholder translation, rendering with respect to language
我想知道如何在 Django-cms 中手动翻译占位符。
如果我使用标签{% placeholder "test" %}
,我只能为所有语言定义一次测试值。是否可以为网站上使用的所有语言多次定义相同的占位符?或者我应该创建不同的占位符 test_en
、test_fr
、test_es
并在我的模板中使用 if
子句?不是很优雅。
您没有提供有关如何构建页面的任何详细信息,但我猜您已经使用占位符的自定义设置创建了自己的页面。如果您在设置中配置了多种语言,任何常规的 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 有更多翻译模型的好东西。
我想知道如何在 Django-cms 中手动翻译占位符。
如果我使用标签{% placeholder "test" %}
,我只能为所有语言定义一次测试值。是否可以为网站上使用的所有语言多次定义相同的占位符?或者我应该创建不同的占位符 test_en
、test_fr
、test_es
并在我的模板中使用 if
子句?不是很优雅。
您没有提供有关如何构建页面的任何详细信息,但我猜您已经使用占位符的自定义设置创建了自己的页面。如果您在设置中配置了多种语言,任何常规的 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 有更多翻译模型的好东西。