2016-06-29 6 views
0

장고 - cms에서 자리 표시자를 수동으로 번역하는 방법을 알고 싶습니다.언어에 대한 Django-cms 자리 표시 자 번역, 렌더링

{% placeholder "test" %} 태그를 사용하면 모든 언어에 대해 한 번만 test 값을 정의 할 수 있습니다. 웹 사이트에서 사용되는 모든 언어에 대해 동일한 자리 표시자를 여러 번 정의 할 수 있습니까? 또는 다른 템플릿을 test_en, test_fr, test_es으로 만들고 템플릿 내에서 if 절을 사용해야합니까? 그것은 매우 우아하지 않습니다.

답변

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 모델을 변환하는 더 많은 케이크가있다.