Problème d'affichage du texte suivant la langue choisie

a marqué ce sujet comme résolu.

Bonjour/ bonsoir à tous, je suis un tuto sur django et j’ai un peu de mal avec l’internationalisation. Je pense avoir respecté toutes les étapes pour la traduction mais le résultat de mon template est toujours en français.
Voici la partie de configuration concernée dans settings.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
LANGUAGE_CODE = 'fr-FR'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


def gettext(x):
    return x


LANGUAGES = [
    ('fr', gettext('French')),
    ('en', gettext('English')),
]

# j'ai créé un dossier locale à la racine de l'application
LOCALE_PATHS = [
    os.path.join(BASE_DIR, '/locale/'),
]

Ensuite j’ai rajouté les urls liés à l’internationalisation dans le fichiers d’urls global

1
2
3
from django.conf.urls import url, include
...
url(r'^i18n/', include('django.conf.urls.i18n')),

J’ai créé le template pour sélectionner la langue

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
...
{% load i18n %}
<h1>Changer de langue</h1>

{% trans "Bonjour les nouveaux !" %}

<form action="/i18n/setlang/" method="post">
    {% csrf_token %}
    <input name="next" type="hidden" value="{% url 'blog:test_i18n' %}" />

    <select name="language">
    {% for lang in LANGUAGES %}
        <option value="{{ lang.0 }}">{{ lang.1 }}</option>
    {% endfor %}
    </select>

    <input type="submit" />
</form>

Voici à quoi ressemble ma vue de test et mon template de test

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def test_i18n(request):
    nb_chats = 2
    couleur = _("blanc")
    chaine = _("J'ai un %(animal)s %(col)s.") % {'animal': _('chat'), 'col': couleur}
    infos = ungettext(
        "… et selon mes informations, vous avez %(nb)s %(animal)s %(col)s !",
        "… et selon mes informations, vous avez %(nb)s %(animal)ss %(col)ss !",
        nb_chats) % {'animal': 'chat', 'nb': nb_chats, 'col': couleur}

    return render(request, 'blog/test_i18n.html', locals())
1
2
3
4
5
6
7
8
<body>
<p>
    Bonjour les nouveaux !<br/>
    {{ chaine }}
</p>
<p>
    {{ ip }} {{ infos }}
</p>

J’ai bien créé les fichiers de traduction pour l’anglais (.po) et le fichier compilé (.mo). Malheureusement quand je change de langue dans mon formulaire de sélection pour passer à l’anglais, j’ai toujours la version en français. Quelqu’un aurait une idée du problème?
Merci d’avance.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte