Projet

Général

Profil

Development #48028

traduction jours fériés, toujours pas bon

Ajouté par Valentin Deniaud il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
26 octobre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Ajouter les fichiers de trads au manifeste (#47906) n'a pas suffit, il doit y avoir autre chose.


Fichiers


Demandes liées

Lié à Chrono - Development #47906: traduction jours fériésFermé21 octobre 2020

Actions

Révisions associées

Révision dd5cdd85 (diff)
Ajouté par Valentin Deniaud il y a plus de 3 ans

change workalendar translations setup (#48028)

Révision a7362b22 (diff)
Ajouté par Valentin Deniaud il y a plus de 3 ans

change workalendar translations setup (#48028)

Historique

#1

Mis à jour par Valentin Deniaud il y a plus de 3 ans

#2

Mis à jour par Valentin Deniaud il y a plus de 3 ans

Les traductions ne sont pas compilées au moment de l'installation du package.

Je ne suis pas encore sûr de quoi faire, le code dans le setup.py c'est

            for path, dirs, files in os.walk('combo'):
                if 'locale' not in dirs:
                    continue
                curdir = os.getcwd()
                os.chdir(os.path.realpath(path))
                call_command('compilemessages')
                os.chdir(curdir)

Avec un petit commentaire qui parle de django 1.4, peut-être une indication que le truc peut être revu (compilemessages fait déjà un os.walk, je me demande si on ne se retrouve pas à compiler plusieurs fois les trucs ici).

Mais donc, pourquoi ce n'est pas compilé ? La commande est bien exécutée dans le répertoire où est 'workalendar_locale' (parce que par chance au même endroit on trouve un répertoire un répertoire 'locale' tout court, donc le check passe).

En fait dans compilemessages :

        basedirs = [os.path.join('conf', 'locale'), 'locale']
        if os.environ.get('DJANGO_SETTINGS_MODULE'):
            from django.conf import settings
            basedirs.extend(upath(path) for path in settings.LOCALE_PATHS)

Et c'est ce qui explique que ça marche en local et pas sur les serveurs, DJANGO_SETTINGS_MODULE est défini seulement dans le premier cas, ce qui permet de trouver 'workalendar_locale', sinon la commande se contente d'un répertoire nommé exactement 'locale'.

Donc, voir comment poser ce DJANGO_SETTINGS_MODULE ?

#3

Mis à jour par Valentin Deniaud il y a plus de 3 ans

Et c'est ce qui explique que ça marche en local et pas sur les serveurs, DJANGO_SETTINGS_MODULE est défini seulement dans le premier cas

C'est vite dit, ce qui explique que ça marche en local c'est que j'ai compilé « à la main » avec chrono-manage compilemessages, or dans manage.py on lit bien sûr

6     os.environ.setdefault("DJANGO_SETTINGS_MODULE", "chrono.settings")

Patch pour faire la même chose dans setup.py, mais je ne suis pas sûr de moi.

#4

Mis à jour par Frédéric Péters il y a plus de 3 ans

  • Ne rien changer au build.
  • Virer la modification au LOCALE_PATHS dans chrono/settings.py
  • Écrire les chaines à traduire dans un fichier, mettons chrono/workalendar_locales.py, façon
from django.utils.translation import ugettext_lazy as _

def translations():
    _('New year')
    _('Easter Monday')
    ...

et ça s'arrêtera à ça, les chaines à traduire se trouveront de manière normale dans chrono/locale/fr/LC_MESSAGES/django.po et tout ira pour le mieux.

#6

Mis à jour par Thomas Noël il y a plus de 3 ans

Pour compléter, peux-tu ajouter un commentaire qui explique que ce fichier ne sert à rien d'autre qu'à avoir les phrases présentes dans les fichiers .po ?

(et, aussi, ajouter l'entête de licence)

Avec ça, nickel.

#7

Mis à jour par Frédéric Péters il y a plus de 3 ans

Où en fait, plutôt que ce fichier .py, taper ça dans un template, ça serait encore plus clean, façon :

{% load i18n %}
{# Translations of holidays names #}
{% trans "New year" %}
...
#9

Mis à jour par Valentin Deniaud il y a plus de 3 ans

Frédéric Péters a écrit :

Où en fait, plutôt que ce fichier .py, taper ça dans un template, ça serait encore plus clean, façon :

Ne pas tenir compte du patch précédent du coup, j'avais pas vu ce message. Je mets le template dans quel dossier ? Il y a pas de dossier templates à la racine, le créer pour l'occasion ?

#10

Mis à jour par Frédéric Péters il y a plus de 3 ans

Non, tape-le dans un dossier existant, disons chrono/agendas/templates/.

#12

Mis à jour par Thomas Noël il y a plus de 3 ans

  • Statut changé de Solution proposée à Solution validée

C'est propre.

#13

Mis à jour par Valentin Deniaud il y a plus de 3 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit dd5cdd85b81fc020d9a29d9bbdfca8785caf8ad4
Author: Valentin Deniaud <vdeniaud@entrouvert.com>
Date:   Mon Oct 26 14:46:30 2020 +0100

    change workalendar translations setup (#48028)
#14

Mis à jour par Frédéric Péters il y a plus de 3 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF