Aller au contenu

Pages de glossaire

phil/translation-bundle

Le glossaire d'une paire de langues se modifie à l'écran : un tableau de ses termes, un formulaire qui ajoute ou change un terme, un bouton qui en supprime un, l'exportation du glossaire en TBX et l'importation d'un fichier TBX. Chaque modification passe par Glossaries du bundle, comme le ferait le code de l'application.

Routes

RouteMéthode et cheminFait
phil_translation_glossaryGET /glossary/{source}/{target}Les termes et le formulaire
phil_translation_glossary_savePOST /glossary/{source}/{target}action=save ajoute ou change un terme, action=remove en supprime un, puis retour avec un 303
phil_translation_glossary_exportGET /glossary/{source}/{target}/tbxLe glossaire en pièce jointe TBX
phil_translation_glossary_importPOST /glossary/{source}/{target}/tbxUn fichier TBX versé dans le glossaire, puis retour avec le nombre de termes

Ces routes viennent avec celles de l'écran, par config/routes.php, après elles : un document nommé glossary garde son écran.

Qui peut modifier

TranslationPolicy::canEditGlossary($source, $target) répond pour l'utilisateur courant. Sans policy, les pages répondent 404 ; pour un utilisateur qu'elle refuse, ou pour deux fois la même langue, 403 ; pour une langue qui n'est pas une étiquette, 404. Les formulaires venus d'un autre site sont refusés, comme à l'écran.

Le formulaire

ChampSens
termLe terme dans la langue source
formsSes formes fléchies, une par ligne
translationsSes traductions, une par ligne ; aucune garde le terme tel quel
translation_formsLes formes fléchies des traductions, une par ligne
forbiddenLes traductions refusées, une par ligne
case_sensitiveSi la casse compte
noteUne note pour les traducteurs

Un terme sans mots, ou de plus de 255 octets, est refusé avec 422 et la raison.

TBX

Glossaries::export() écrit les termes tels qu'ils sont conservés, sans les formes qu'ajoute un fléchisseur, en TBX-Basic, et Glossaries::import() verse dans le glossaire les termes d'un fichier TBX de 2019 ou de 2008 : les nouveaux termes sont ajoutés, ceux qu'il a remplacés sont comptés. Un fichier de plus de 10 Mio, illisible ou contenant un terme de plus de 255 octets est refusé avec 422.

EasyAdmin

Une interface d'administration EasyAdmin renvoie vers ces pages, qui gardent leurs propres routes, formulaires et mise en page : le layout du bundle, pointé vers un gabarit de l'interface d'administration :

use Phil\TranslationBundle\Infrastructure\EasyAdmin\TranslationAdmin;

public function configureMenuItems(): iterable
{
    yield from TranslationAdmin::menuItems([['en', 'fr'], ['en', 'fr-CA']]);
}

menuItems() donne un lien par paire de langues, intitulé Glossary en → fr sauf si on fournit un libellé contenant deux %s, avec l'icône fa fa-language sauf si on en fournit une autre. EasyAdmin est suggéré, non exigé.

Formes fléchies

Avec un fléchisseur, le glossaire qui trouve et vérifie les termes ajoute les formes qu'il produit :

phil_translation:
    inflector: Phil\TranslationMemory\Glossary\RegularPlurals   # the regular plurals of English and French