PlugArr 0.5.0
PlugArr parle anglais. L'assistant, la ligne de commande, le preflight, le rapport et la page d'acces, avec un menu de langue sur l'ecran d'accueil.
Deux langues, et elles cessent de se confondre
| Ou | Ce que ca change | |
|---|---|---|
| Langue de PlugArr | ecran d'accueil, ou --lang fr|en |
l'assistant, la ligne de commande, le rapport, la page d'acces |
| Langue des services | ecran des chemins, ou --langue <code> |
ce que Sonarr, Radarr, Prowlarr, Jellyfin et Silo afficheront dans leur interface |
Le second reglage existait depuis la 0.1.11. Mais il etait seul, donc ambigu : l'ecran annoncait « langue des interfaces » sans dire lesquelles, et rien ne disait que PlugArr, lui, ne parlait que francais.
Sans rien regler, PlugArr suit la langue du systeme : un francophone le trouve en francais, tout le monde d'autre en anglais. Le choix est retenu dans stack.yml, donc plugarr serve et plugarr doctor repondent ensuite dans la langue de l'installation, meme sur un serveur dont la session est en anglais.
Rien n'oblige a garder les deux ensemble : on peut vouloir l'outil en anglais et sa mediatheque en francais.
La cle de traduction est la phrase francaise
Inventer des cles (ecran.accueil.titre) ajoute un dictionnaire a tenir, et une cle mal orthographiee s'affiche telle quelle a l'utilisateur. Ici une phrase absente du catalogue retombe sur le francais, comprehensible au pire.
Et les widgets traduisent au passage plutot que phrase par phrase. Envelopper cent-cinquante appels a la main aurait pose la question a chaque ligne ecrite : la vraie question n'aurait pas ete de savoir si on en oublierait, mais combien. Une phrase oubliee ne casse d'ailleurs rien — elle s'affiche simplement en francais a quelqu'un qui a demande l'anglais, sans erreur ni avertissement.
C'est pour ca que le garde-fou est mecanique. scripts/audit_traductions.py releve les 377 phrases affichables — appels a t(), libelles de widgets, notes du catalogue, sous-titres d'ecran, origines des PUID/PGID — et echoue s'il en manque une ou si le catalogue porte une entree morte. Il tourne en CI, et il a deja attrape une entree posee deux fois.
Un defaut que seul un vrai montage pouvait reveler
Select attend (libelle, valeur) et recevait (valeur, libelle). Le code fr devenait alors illegal, et l'assistant mourait au montage de l'ecran d'accueil. Tous les tests passaient.
Les captures existent dans les deux langues
Le README anglais montrait jusqu'ici des captures francaises, ce qui annulait le travail de traduction pour le seul lecteur a qui il s'adresse. scripts/screenshots.py produit desormais les deux jeux.
Et la console d'administration a enfin une image. C'est la seule partie du produit qu'on garde apres l'installation — on la rouvre pour retrouver un port, un mot de passe, ou pour arreter un service — et elle n'apparaissait nulle part. screenshots.py ne pouvait pas la produire : il exporte des ecrans Textual, elle est du HTML servi par plugarr serve. Elle a maintenant son propre script, avec les memes precautions : secrets d'illustration, adresse de machine fixe, et date figee — celle du jour rendrait le fichier different a chaque execution.
Deux libelles ne se voyaient que la, et sont restes francais jusqu'a ce qu'on regarde : les boutons de chaque service et l'etat en cours de verification.
Ce qui reste en francais
Environ 140 chaines, presque toutes des messages d'erreur : « qBittorrent n'est jamais devenu disponible », « le config.xml pre-seme a peut-etre ete ecrase ». Le chemin nominal est entierement couvert ; ce sont les chemins d'echec qui ne le sont pas encore.
plugarr.exe est attache a cette release, construit et controle par la CI. Aucun changement de configuration : une installation existante garde tout, et lit sa langue depuis son stack.yml.