Hello,
Je regarde comment fonctionne les traductions, j’ai bien compris pour les textes écrits par le plugin dans les pages de config ou autre, le tuto de @nebz est très clair.
Y a-t-il un mécanisme existant pour les noms de commandes créées lors de l’ajout d’un équipement ou faut-il le gérer « à la main » dans le code du plugin?
Évidemment l’utilisateur peut les renommer lui même après la création mais cela serait plus sympa de fournir des noms traduits.
Et concernant la documentation (fichier .md), doit-on les traduire nous-même ou est-ce pris en charge via transiflex?
Pour les noms de commandes, il n’y a pas besoin des {{}} apparemment.
A la création d’un équipement, il remplace le nom de la commande par celui de la traduction donc tout marche nickel.
Mon problème était que la génération des chaines de traductions n’avait pas eu lieu pour cette partie cela a fonctionné les fois suivantes et je ne peux pas reproduire donc j’ai sans doute fait une fausse manip.
Merci!
il est possible de traduire des valeurs d’une commande info string ?
dans un de mes plugins j’ai un status qui retourne 0,1,2,3,4,5,6 et chaque status correspond à une chaine « disabled, enabled, provisionning, etc ». est-il possible de traduire ces valeurs de commande ?
D’où viennent tes chaines de textes (disable, …)?
C’est une « ressource » ou chaine de caractères dans ton code qlq part? ou est-ce que ton plugin récupère ces chaines d’un autre « appareil » hors jeedom?
Je pense avoir trouvé ce qu’il te fallait, j’ai fait un petit plugin de test pour valider que ca fonctionne (le plugin tourne mais c’est juste un fork à peine nettoyé du plugin template donc ne regardes pas les détails): https://github.com/Mips2648/testtranslation
Pour la démo tu créés un equipement et puis tu le refresh sur le dashboard, il va chercher un statut random (un entier) et sa description traduite selon ta config jeedom (mais je n’ai écrit que les fichiers de traduction pour l’anglais), le francais etant la langue de base (détail important, j’y reviens):
Dans le code, regarde juste la class du core, tu verras la ligne : $description = __(testtranslation::$_statusDescription[$status], __FILE__); dans la fonction run() du plugin;
la fonction __() est une fonction du core jeedom (translate.class.php) qui va traduire la phrase en argument dans la langue choisie par le user; c’est ce même appel qui est effectué partout dans le code en fait (y compris dans le tuto de création du plugin pour la création des commandes), lors d’un throw exception etc
Les traductions sont comme d’habitude dans \core\i18n
Je suppose que le code parlera de lui-même mais si besoin de clarification fait signe.
Mais donc un détail important qui moi m’a déjà posé un soucis: quand le français est choisi comme langue dans jeedom, les traductions ne se font pas (ou alors j’ai loupé qlqch); j’avais écris mes plugins avec les textes en anglais et la traduction en français dans le fichier \core\i18n\fr_FR.json et les textes n’était pas traduit excepté si l’option pour « générer les traductions » était activée dans la config jeedom.
Pour des textes sur lequel tu as le contrôle, c’est dommage mais pas grave, par contre si les ressources que tu veux traduire sont en anglais de base (car récupérées d’une API ou d’un système externe), pas moyen de les traduire en français…
par contre pour générer la traduction de chaque valeur, je dois toutes les afficher au moins une fois… puisque c’est à l’appel de la fonction __ que le fichier /core/i18n/fr_FR.json est généré (lorsque générer les traductions est coché)
pour les traductions, tu peux aussi écrire toi même le fichier json, c’est un peu long et répétitif mais gérable pour ce genre de cas ou tu as 5 phrases à mettre mais qui s’afficheront uniquement dans un certain contexte, faut juste pas se louper sur la syntaxe;
quand t’as le contenu pour le fr_FR.json tu copy/paste dans les autres.