2016-06-29 8 views
0

Django-cmsのプレースホルダーを手作業で翻訳する方法を知りたいと思います。言語に関するDjango-cmsプレースホルダーの翻訳、レンダリング

タグ{% placeholder "test" %}を使用すると、すべての言語に対してtestの値を1回だけ定義できます。ウェブサイトで使用されるすべての言語に対して同じプレースホルダを複数回定義することは可能ですか?または、別のプレースホルダを作成する必要がありますtest_entest_frtest_esif句をテンプレート内で使用しますか?あまりエレガントではありません。

答えて

0

あなたのページをどのように構築するかについての詳細は教えていませんが、プレースホルダのカスタム設定で自分自身を作成し​​たと思います。あなたの設定に複数の言語を設定すると、通常のdjango-cmsページはデフォルトで翻訳可能です。

各プレースホルダよりもプレースホルダを保持するコンテナを別々に変換することが望ましいことに注意してください。

あなたは(も何django-cms用途である)django-hvadを使用して、それらの翻訳に認識させることができ、独自のページを定義する場合:

# 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は、翻訳モデルのためのより多くのグッズを持っています。

関連する問題