Traduction de mon plugin

Bonjour à tous,
Je suis en train de préparer une version corrective de mon plugin sensibosky et j’en profite pour approfondir la traduction.
J’ai donc regardé un peu d’autres plugins et j’ai donc bien vu qu’il faut créer un sous-répertoire i18n dans le répertoire core. J’y ai pour le moment mis un fichier json pour la traduction française.
J’ai donc ensuite mis tout cela sur mon Jeedom de test, supprimé mes équipements et recréé mais je n’ai pas de traduction.
Y a-t-il une ligne de code à mettre quelque part pour lui dire qu’il y a le répertoire i18n? Le plugin template n’a pas d’exemple.
Merci d’avance.

Salut @rombautsdidier,

Ton plugin n’est pas en langue française par défaut ?

De mémoire je m’étais inspiré des fichiers de traduction du plugin weather :

Pour l’anglais par exemple, tu créés et complète le fichier en_US.json. Ensuite tu vas dans la config de Jeedom pour le passer en anglais :
image

En retournant dans ton plugin, il doit être passé en anglais.

Pour confirmation, les textes dans ton plugin sont bien entre double accolades ( {{Texte à traduire}} ) ?

Merci pour ta réponse.

Alors mon plugin est bien en Français par default mais j’ai créé des commandes en anglais qu’elles soient dynamiquement créées en récupérant ce qui est donné par l’API de Sensibo.

Pour ce qui est des menus, effectivement les textes sont entre accolades donc si je passe en Anglais, ils devraient être traduits.

Par contre pour les commandes, j’utilise la fonction php $cmd->setName(__(‹ Refresh ›, FILE)); pour la commande refresh à la création de la commande dans la class principale ( que j’ai vu dans d’autres plugins ) mais là, ce n’est pas traduit.

Si jeedom est en français alors il ne traduit pas en prenant le fichier fr car il considéré que le défaut est français et il retourne la string envoyé en argument

Hello,

J’avais fait un tuto ici mais je pense qu’il y a eu des changements depuis…

https://community.jeedom.com/t/tuto-traduire-votre-plugin-dans-une-autre-langue/528?u=nebz

Effectivement, il y a beaucoup de changements et je ne retrouve toutes les étapes.
Néanmoins, j’imagine que la traduction doit fonctionner sur mon environnement de dev si je le passe d’une langue à l’autre non?
En tout cas, la méthode des accolades, je l’ai suivi par contre c’est pour la traduction des commandes où le système d’accolade ne peut fonctionner ou je peux aussi l’utiliser?

Les {{}} c’est dans le code html.
Dans du code Php tu dois appeler la fonction __() mais voir ma réponse précédente.

Donc il faudrait que je supprime le plugin, je passe Jeedom en Anglais et je le réinstalle pour que les commandes soient correctement traduites? Ai-je bien compris?

Supprimer un plug-in ne va pas aider.
Si tu traduis tes commandes en anglais à la création (ce qui est logique), si les commandes existent elles ne seront plus traduitent.
Si tu supprimes une commande et qu’elle se recréé tu vas passer par la fonction et elle sera traduite.

Mais ce que je disais c’est que le core de jeedom ne traduira jamais vers le français.
Si jeedom est en français, la fonction de traduction retournera la valeur reçu en argument sans la modifier et sans lire ton json fr-fr.

Mmm, donc cela veut dire que je dois mettre les commandes en Français… Et je veux justement éviter car il y a un apprentissage des commandes possibles suivant les informations de l’API. Donc, ce sera tant pis… Les commandes resteront en Anglais.

Ou tu dois gérer toi même la traduction vers le français :wink:
Tu peux t’inspirer de la fonction du core pour faire la même chose juste pour cette partie de ton plug-in.

Et cela veut dire qu’à chaque changement d’API ou une commande nouvelle, il faudra refaire une version du plugin… pas top… Je vais laisser en Anglais.

Forcément, ça depuis le départ tu as besoin de mettre à jour ton json de traduction