Pages: 1 2
Bonsoir,
Je crois (mais restons modeste ) avoir compris le fonctionnement des langues dans les plugins piwigo.
Ont été créés deux fichiers de langues
fr_FR avec des items FR -> FR
en_UK avec des items FR -> UK
Notre utilisateur français va avoir le plugin en français
Notre utilisateur anglais va avoir le plugin en anglais
et comme le fichier de langue de_DE n'existe pas notre utilisateur Allemand va avoir le plugin en français,
mais il voudrait l'avoir en anglais !! il fait comment ?
Apparemment ce n'est pas prévu dans piwigo ? sauf à passer tout le site en anglais
Solution de contournement
dans ./language copier le dossier en_UK sous le nom de_DE
Hors ligne
Normalement, si la langue est absente c'est la langue par défaut (en_UK) qui est choisie.
Hors ligne
Gotcha a écrit:
Normalement, si la langue est absente c'est la langue par défaut (en_UK) qui est choisie.
C'est ce que je croyais mais ce n'est pas la cas.
C'est le texte de base qui est choisi par défaut , si tu as :
fr_FR avec des items FR -> FR
en_UK avec des items FR -> UK
ce sera FR
fr_FR avec des items UK -> FR
en_UK avec des items UK -> UK
ce sera UK
Ce serait bien que ce soit en_UK par défaut , dans une prochaine version de piwigo ?
Hors ligne
@Charles69 : en principe, nombre de plugins sont codés en anglais et les fichiers de langue permettent l'internationalisation, même en français.
Par exemple dans un template tu peux trouver {'File'|@translate} et dans ton fichier fr_FR tu auras une ligne $lang['File'] = 'Fichier';
Hors ligne
Gotcha a écrit:
Normalement, si la langue est absente c'est la langue par défaut (en_UK) qui est choisie.
non, on affiche la clef de langue. Comme dans 99.999% des cas, la clef de langue est identique à la chaîne traduite dans en_UK, tu as l'impression que c'est en_UK.
{'My taylor is rich'|translate} => en fr_FR, ça donne 'My taylor is rich' si cette chaîne n'est pas traduite.
Hors ligne
Il existe cependant de rares cas où Piwigo (ou un plugin) charge en_UK puis une autre langue. Dans ce cas là, c'est bien la valeur de en_UK qui sera utilisée, car non surchargée par l'autre langue (si la clef n'est pas traduite dans l'autre langue)
Hors ligne
plg a écrit:
Il existe cependant de rares cas où Piwigo (ou un plugin) charge en_UK puis une autre langue. Dans ce cas là, c'est bien la valeur de en_UK qui sera utilisée, car non surchargée par l'autre langue (si la clef n'est pas traduite dans l'autre langue)
Aurais-tu un exemple ? Dans quel cadre est-ce nécessaire ? Et comment peut-on l'implémenter dans un plugin ?
Hors ligne
polowigo a écrit:
plg a écrit:
Il existe cependant de rares cas où Piwigo (ou un plugin) charge en_UK puis une autre langue. Dans ce cas là, c'est bien la valeur de en_UK qui sera utilisée, car non surchargée par l'autre langue (si la clef n'est pas traduite dans l'autre langue)
Aurais-tu un exemple ? Dans quel cadre est-ce nécessaire ? Et comment peut-on l'implémenter dans un plugin ?
Oui : [Github] piwigodotorg file main.inc.php@L83
Cela sert si les clefs de langue ne sont pas identiques aux valeurs dans en_UK
Hors ligne
Je viens de l'implémenter.
[Github] centralAdmin commit 6e583fea
Hors ligne
Gotcha a écrit:
Je viens de l'implémenter.
[Github] centralAdmin commit 6e583fea
Là tu ne gères que l'absence "totale" d'une langue. Si tu as un fichier de langue avec seulement 32% des clefs traduites, ça ne fonctionnera pas. Faut pas se prendre la tête, tu charges systématiquement en_UK et ensuite tu charges la langue du user. Ca ne ccoûte rien du tout de faire ça.
Hors ligne
J'avais pris connaissance en effet de ta (la) bonne solution après coup.
Merci, je vais corriger.
Hors ligne
Je viens de tester sur 3 plugins où j'ai des fichiers de langue en français et en anglais.
J'ai supprimé les divers load_langage qui se promenaient dans le code , et juste après les define j'ai mis ce code une fois
//======= CHARGEMENT DES LANGUES , UK PAR DEFAUT ==================
// Charger d'abord l'anglais comme base
load_language('plugin.lang', TBS_PATH, array('language' => 'en_UK', 'no_fallback' => true));
// Puis charger la langue de l'utilisateur (qui écrasera l'anglais si la langue existe)
load_language('plugin.lang', TBS_PATH);Quand je me connecte en français c'est bien le français qui apparait, et quand je me connecte en allemand par exemple c'est bien l'anglais qui apparait.
Ensuite il suffira d'ajouter les fichiers de langue complémentaires.
Merci @plg pour la solution.
Dernière modification par Charles69 (2026-01-08 15:31:59)
Hors ligne
plg a écrit:
Là tu ne gères que l'absence "totale" d'une langue. Si tu as un fichier de langue avec seulement 32% des clefs traduites, ça ne fonctionnera pas.
Je ne suis pas sûr d'avoir compris : si j'applique le code de ton #8, que je traduis toutes les clés vers en_UK et seulement une partie des clés en Vietnamien ou autre, ces quelques clé s'afficheront bien dans la langue cible et les clés non traduites s'afficheront en anglais ?
Hors ligne
polowigo a écrit:
plg a écrit:
Là tu ne gères que l'absence "totale" d'une langue. Si tu as un fichier de langue avec seulement 32% des clefs traduites, ça ne fonctionnera pas.
Je ne suis pas sûr d'avoir compris : si j'applique le code de ton #8, que je traduis toutes les clés vers en_UK et seulement une partie des clés en Vietnamien ou autre, ces quelques clé s'afficheront bien dans la langue cible et les clés non traduites s'afficheront en anglais ?
Oui.
Tu appliques par défaut en_UK et tu surcharges avec ce qu'il y a de disponible. Si la clé est non traduite, ca reste à en_UK.
Dernière modification par Gotcha (2026-01-08 19:34:00)
Hors ligne
Pages: 1 2