2017-06-13 2 views
0

J'ai mis en place un site Wigtail multilingue qui permet de passer du japonais à l'anglais. Chaque page dans les cms a deux champs pour le contenu qui doit être traduit. J'essaie de savoir si un champ traduisible est laissé vide, si le contenu d'un champ de langue de secours peut être affiché.Wagtail Site multilingue site de secours

Cela se rapporte à cette question, mais mon mise en place semble différent: [Django, how to create a fallback language in a multilingual website?

classe TranslatedField (objet):

def __init__(self, en_field, ja_field): 
    self.en_field = en_field 
    self.ja_field = ja_field 

def __get__(self, instance, owner): 
    if translation.get_language() == 'ja': 
     return getattr(instance, self.ja_field) 
    else: 
     return getattr(instance, self.en_field) 

HomePage classe (Page):

body_en = RichTextField(blank=True) 
body_ja = RichTextField(blank=True) 

body = TranslatedField(
    'body_en', 
    'body_ja', 
) 

content_panels = Page.content_panels + [ 
    ImageChooserPanel('background_image'), 
    FieldPanel('body_en', classname="full"), 
    FieldPanel('body_ja', classname="full") 
] 

Alors Dans le modèle, le contenu est simplement appelé avec {{page.body | richtext}}. Peut-être que je devrais ajouter quelque chose à mon def obtenir if/else instruction.

Merci pour toute aide.

Répondre

0

Vous pouvez simplement vérifier si la variable dans le modèle est défini comme ceci:

<div> 
    <span> 
    {% if page.body_jp %} 
     私の日本語テキスト 
    {% else %} 
     This is my fallback text in English! 
    {% endif %} 
    </span> 
</div>