chapitreneuf / nova

Maquette Lodel compatible avec OpenEdition Journals
GNU General Public License v3.0
4 stars 4 forks source link

Langue des dates dans le bloc Citer cet article / References #127

Open oliviercrouzet opened 3 months ago

oliviercrouzet commented 3 months ago

Lorsque la langue de l'interface publique sélectionnée sur un site est l'anglais, la langue des dates reste en français dans le bloc References (Citer cet article). Exemple : Sylvie Wharton, « Controverse entre éloge de la diversité langagière et blâme du déficit linguistique : justice sociale et savoirs scolaires langagiers », Diversité [Online], 204 | 2024, Online since 09 avril 2024, connection on 06 juin 2024. URL : https://publications-prairial.fr/diversite/index.php?id=4447

Sur une instance de test, j'ai le problème inverse, la langue des dates reste en anglais quelque soit la langue d'interface choisie. Je crois comprendre que c'est lié à la fonction strftime et à la cuisine des locales faites dans lodel mais je ne vois pas ou l'on peut régler ça.

brrd commented 3 months ago

C'est ici : https://github.com/chapitreneuf/nova/blob/33da664af2397873b7636e17aaf352d2f0039ae4/macros_article.html#L610

J'imagine qu'il faut ajouter un

if ($context['sitelang']) {
  setlocale(LC_TIME, $context['sitelang']);
}

avant d'appeler strftime.

Je note de tester ça pour une prochaine version.

oliviercrouzet commented 3 months ago

Oui, j'ai déja testé ça mais ça n'a pas d'effet.

<DEFMACRO NAME="ARTICLE_REFERENCE_ELECTRONIQUE">
  <?php setlocale(LC_TIME,'en'); ?>
    [%LISTE_AUTEURS]«&nbsp;[#TITRE|removenotes]&nbsp;», <FUNC NAME="BASE_PARU_DANS" CITATION="1" /><IF COND="[#NUMERODOCUMENT]">, [@DOCUMENT|strtolower] [#NUMERODOCUMENT]</IF>, [@MIS_EN_LIGNE_LE] [#DATEPUBLI|humandate], [@CONSULTE_LE] <?php echo strftime('%d %B %Y');?>. URL&nbsp;: [#SITEINFOS.URL]/[#ID|makeurlwithid]
</DEFMACRO>

j'ai essayé avec 'EN', 'en', 'en_US.UTF8','en_US','en_US.UTF-8' : idem.

Je précise aussi mon instance de test n'est pas sur le même serveur (mais debian buster pour les deux) : comme je ne vois pas de différence dans la config lodel, je me dit que ca dépend des locales définies pour l'OS ou pour php mais il n'y a rien dans la config php (php.ini) et pour les locales du système, ça donne ceci pour l'instance de test (ou les dates sont en anglais) : locale -a

C
C.UTF-8
fr_FR.utf8
POSIX

et cela pour le serveur de prod (ou les dates sont en français) :

C
C.UTF-8
french
fr_FR
fr_FR@euro
fr_FR.iso88591
fr_FR.iso885915@euro
fr_FR.utf8
POSIX

D'autre part la surcharge de la fonction ARTICLE_REFERENCE_ELECTRONIQUE dans macros_custom.html n'est pas prise en compte (alors que c'est bien le cas pour d'autres fonctions de macros_articles comme ARTICLE_AUTEUR_IDNO) : ?!!

brrd commented 3 months ago

D'autre part la surcharge de la fonction ARTICLE_REFERENCE_ELECTRONIQUE dans macros_custom.html n'est pas prise en compte (alors que c'est bien le cas pour d'autres fonctions de macros_articles comme ARTICLE_AUTEUR_IDNO) : ?!!

C'est un autre bug qui n'a rien à voir je pense. Il faudrait traiter ça dans un autre ticket svp.