Aller au contenu

Glossaire

phil/translation-memory

Un Glossary\Glossary contient les Term d'une paire de langues.

$glossary = new Glossary(LanguageTag::of('en'), LanguageTag::of('fr'), [
    new Term('hit points', ['points de vie', 'PV'], forbidden: ['vie']),
    new Term('Dungeon Master'),                                  // kept as it is
    new Term('Gnome', ['Gnome'], caseSensitive: true, note: 'The people, not the garden ornament.'),
]);
TermeSens
sourceLe terme dans la langue source, espaces normalisées
translationsLes traductions permises ; aucune quand le terme est conservé tel quel, comme un nom ou une marque
forbiddenLes traductions refusées
caseSensitiveSi la casse compte, dans la source comme dans la cible
noteUne note pour les traducteurs
formsLes formes fléchies du terme : hit point pour hit points
translationFormsLes formes fléchies de ses traductions (point de vie pour points de vie), ou du terme quand il est conservé

Trouver des termes

find($source) donne les TermHit d'une source, dans l'ordre de lecture : le terme, les mots tels qu'écrits, et leur position en caractères dans le texte brut. Les termes correspondent en mots entiers (jamais à l'intérieur d'un mot plus long) et littéralement, sans égard à la casse sauf si le terme le précise. Quand deux termes se chevauchent, le plus long l'emporte : hit points avant hit.

Vérifier une cible

check($source, $target) donne les TermIssue d'une cible :

SorteQuand
missingLa cible contient les traductions permises (ou le terme conservé) moins de fois que la source ne contient le terme ; le problème indique combien de chacun
forbiddenLa cible contient une traduction refusée hors d'une traduction permise : vie est refusé alors que points de vie est permis

Seuls les termes de la source sont vérifiés.

Formes fléchies

Un terme et ses traductions changent dans une phrase : un point de vie, deux points de vie. Les formes d'un terme sont trouvées comme le terme lui-même, et les formes de ses traductions comptent comme ses traductions :

$term = new Term('hit points', ['points de vie'], forms: ['hit point'], translationForms: ['point de vie']);

$term->variants();   // ['hit points', 'hit point'] — what find() looks for
$term->accepted();   // ['points de vie', 'point de vie'] — what check() counts

Les formes égales au terme ou à une traduction sont omises, et les doublons gardés une fois.

Un Inflector produit les formes à leur place : quand on lui en donne un, le glossaire ajoute les formes qu'il donne pour chaque terme, dans la langue source, et pour chaque traduction, dans la langue cible ; $term->inflected($inflector, $source, $target) fait de même pour un seul terme. RegularPlurals donne le pluriel régulier en anglais et en français, variantes régionales comprises :

LangueRègleExemples
AnglaisLe dernier mot : -es après s, x, z, ch, sh ; -ies après une consonne et y ; -s sinonhit point, hit points ; box, boxes ; city, cities
FrançaisChaque mot avant la première préposition : inchangé après s, x, z ; -aux pour -al ; -x après au, eu et sept noms en -ou ; -s sinon, et pour bal, bleu, festival, pneu et semblablespoint de vie, points de vie ; épée longue, épées longues ; cheval, chevaux

Les mots qui contiennent un chiffre ou une apostrophe sont laissés tels quels, et les autres langues ne reçoivent aucune forme. Les pluriels irréguliers (mouse, œil) et les autres flexions (genres, cas, conjugaisons) vont dans les formes du terme, ou dans un fléchisseur de l'application.

$glossary = new Glossary(LanguageTag::of('en'), LanguageTag::of('fr-CA'), $terms, new RegularPlurals());

Échange

Un glossaire part et arrive en TBX : voir TMX et TBX.