Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Impossible de faire marcher le système de traduction de Django

0 votes

J'essaye d'utiliser le système d'i18n de Django avec django-cms

J'ai parfaitement réussi a faire marcher makemessages et compilemessages, mais lorsque je démarre le serveur et que je vais sur ma page, mes chaines restent non traduites

J'imagine que je dois faire mal quelque chose mais j'ignore quoi.

Un example de fichier python ou une chaine n'est pas traduite:

from cms.toolbar_pool import toolbar_pool
from cms.extensions.toolbar import ExtensionToolbar
from django.utils.translation import ugettext_lazy as _
from .models import CategoryExtension


@toolbar_pool.register
class CategoryExtensionToolbar(ExtensionToolbar):
    # defines the model for the current toolbar
    model = CategoryExtension

    def populate(self):
        # setup the extension toolbar with permissions and sanity checks
        current_page_menu = self._setup_extension_toolbar()

        # if it's all ok
        if current_page_menu:
            # retrieves the instance of the current extension (if any) and the toolbar item URL
            page_extension, url = self.get_page_extension_admin()
            if url:
                # adds a toolbar item in position 0 (at the top of the menu)
                current_page_menu.add_modal_item(_('Page Category'), url=url,
                                                 disabled=not self.toolbar.edit_mode, position=0)

Mes settings liés aux traductions :

def gettext(s):
    return s


LOCALE_PATHS = (
    BASE_DIR + "/locale",
)

LANGUAGE_CODE = 'fr-fr'

TIME_ZONE = 'Europe/Paris'

USE_I18N = True

USE_L10N = True

USE_TZ = True

LANGUAGES = (
    ('fr-fr', gettext('fr-fr')),
)

CMS_LANGUAGES = {
    1: [
        {
            'code': 'fr-fr',
            'name': gettext('fr-fr'),
            'redirect_on_fallback': True,
            'public': True,
            'hide_untranslated': False,
        },
    ],
    'default': {
        'redirect_on_fallback': True,
        'public': True,
        'hide_untranslated': False,
    },
}

Et mon fichier .po (dans RACINE/locale/fr-fr/LC_MESSAGES/django.po) :

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE 
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-06 19:11+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#: myapp/cms_toolbars.py:22
msgid "Page Category"
msgstr "Catégorie de Page"

#: myapp/configuration/cms_settings.py:6
msgid "Page"
msgstr "Page"

#: myapp/configuration/cms_settings.py:7
msgid "Page with instagram pictures"
msgstr "Page avec bandeau instagram"

#: myapp/configuration/cms_settings.py:8
msgid "Page who list children"
msgstr "Page qui liste ses enfants"

#: myapp/configuration/i18n_settings.py:25
#: myapp/configuration/i18n_settings.py:32
msgid "fr-fr"
msgstr "fr-fr"
demandé 6-Jun par Varkal (144 points)

1 Réponse

0 votes

C'est tombé en marche en remplaçant le settings LANGUAGES par :

LANGUAGES = [
    ('fr', gettext('French')),
]
répondu 8-Jun par Varkal (144 points)
...