
Fluent est une famille de spécifications, d'implémentations et de pratiques de localisation développées par Mozilla. Maintenant, il est utilisé dans le navigateur Firefox. En utilisant Fluent, les traducteurs peuvent écrire des traductions plus naturelles dans leur langue maternelle. Aujourd'hui, nous introduisons la spécification du format de fichier Fluent version 1.0. Nous invitons les développeurs d'outils de traduction à l'essayer et à parler de vos impressions.
Quels problèmes Fluent résout-il?
Le navigateur Firefox prend en charge une centaine de langues et interpelle les développeurs en termes de localisation. De nombreux problèmes sont difficiles à résoudre en utilisant des approches traditionnelles. La localisation de logiciels est dominée par le principe du balisage des traductions en une à une avec le texte source. La grammaire de la langue source (dans le cas de Mozilla - anglais) impose de sérieuses restrictions sur la disponibilité des moyens expressifs en traduction.
Considérez le message suivant qui apparaît lorsqu'un utilisateur tente de fermer une fenêtre Firefox avec plusieurs onglets.
tabs-close-warning-multiple = You are about to close {$count} tabs. Are you sure you want to continue?
Un message ne s'affiche que s'il y a 2 onglets ou plus. En anglais, le mot tab sera toujours au pluriel - tabs. Un développeur anglophone sera content d'un tel message. Cela semble correct pour toutes les valeurs de $ count.

En anglais, pour toutes les valeurs de $ count, une variante du message est suffisante.
De nombreux traducteurs remarqueront que l'onglet de mots peut prendre différentes formes en fonction de la valeur de $ count.
Dans l'approche traditionnelle de la localisation, la responsabilité du traitement correct du message incombera aux traducteurs. Ils doivent tenir compte du fait que dans d'autres langues, il peut y avoir plusieurs formes multiples du mot, même si en anglais il n'en est qu'une. Plus l'application prend en charge de langues, plus le problème devient grave.
- Dans certaines langues, les noms ont un sexe, ce qui nécessitera des changements d'adjectifs et de participes. En français, les mots connectés, connectée, connectés et connectées sont traduits en anglais comme connectés.
- Le guide de style peut nécessiter l'utilisation de certains termes en fonction de la plate-forme sur laquelle le logiciel s'exécute. Dans la version anglaise de Firefox, par exemple, les paramètres sont utilisés sur la plate-forme Windows, et les préférences sur d'autres systèmes, afin de se conformer aux normes adoptées sur ces systèmes. En japonais, la différence peut être encore plus intéressante: le choix d'un système d'écriture pour certains termes informatiques dépend du système d'exploitation.
- Le contexte et le public cible de l'application peuvent nécessiter des modifications supplémentaires du texte. Une application de langue anglaise pour travailler avec la comptabilité peut utiliser une mise en forme de nombres différente de celle utilisée sur les sites réguliers sur Internet. Mais dans d'autres langues, une telle séparation peut ne pas être nécessaire.
Il existe de nombreuses variantes grammaticales et stylistiques qui ne peuvent pas être directement corrélées entre les deux langues. Il peut être difficile de prendre en charge toutes ces nuances en utilisant l'approche traditionnelle. Dans certaines langues, vous devez faire des compromis, dans d'autres, il n'y aura aucune solution appropriée.
Localisation asymétrique
Fluent modifie la distribution des rôles dans la localisation. Au lieu d'exiger des développeurs qu'ils prennent en compte toutes les nuances possibles de toutes les langues, Fluent essaie de conserver les textes dans la langue source sous la forme la plus simple possible.
Nous permettons de transmettre la grammaire et le style d'autres langues, quel que soit le texte source. Tout se passe isolément. Le fait qu'une langue puisse utiliser une logique plus avancée dans la localisation n'affecte pas les autres langues de traduction. Chaque localisation dans le programme lui-même décide de la complexité du texte de traduction.
Par exemple, examinons la traduction d'un message sur la fermeture des onglets en tchèque. Le panneau de mots (onglet) doit prendre l'une des deux formes suivantes: panely pour le nombre d'onglets 2, 3 et 4 et panelů pour toutes les autres valeurs.
tabs-close-warning-multiple = {$count -> [few] Chystáte se zavřít {$count} panely. Opravdu chcete pokračovat? *[other] Chystáte se zavřít {$count} panelů. Opravdu chcete pokračovat? }
Fluent donne aux traducteurs la possibilité d'écrire des phrases grammaticalement correctes et d'utiliser librement les moyens expressifs de leur langue. Grâce à Fluent, la traduction tchèque utilise les formes plurielles correctes pour toutes les valeurs possibles de $ count.
En tchèque, avec des valeurs $ count de 2, 3 et 4, le nom requiert une forme plurielle spéciale.Dans le même temps, aucune modification n'est requise pour le code source ou le code. La logique dans la localisation tchèque n'affecte pas toutes les autres localisations du programme. En français, cette phrase sera aussi simple que l'anglais:
tabs-close-warning-multiple = Vous êtes sur le point de fermer {$count} onglets. Voulez-vous vraiment continuer ?
Le concept de localisation asymétrique est une innovation clé de Fluent, rendue possible par l'expérience de Mozilla dans le développement de logiciels multilingues depuis plus de 20 ans. De nombreuses idées clés pour Fluent ont été empruntées à MessageFormat à ICU (International Component for Unicode) et au format XLIFF .
À première vue, Fluent est comme d'autres solutions de localisation qui vous permettent d'utiliser des variantes de mots pour plusieurs noms et mots avec un genre grammatical. En revanche, Fluent adopte une approche holistique de la localisation. Fluent développe ces idées en définissant la syntaxe de l'ensemble du fichier texte où sont stockées les traductions et en autorisant les liens d'un message à un autre.
Termes et liens
Un fichier Fluent peut contenir de nombreux messages, chacun étant traduit dans la langue du traducteur. Les messages peuvent faire référence à d'autres messages dans le même fichier ou à des messages provenant d'autres fichiers. Au moment de l'exécution, Fluent fusionne les fichiers en ensembles et les liens sont résolus dans cet ensemble.
Le lien vers les publications est un outil puissant pour maintenir des traductions cohérentes. Une fois qu'une certaine traduction peut être réutilisée dans d'autres traductions. Fluent prend en charge un type spécial de message appelé le terme, bien adapté à la réutilisation. L'identifiant du terme commence toujours par un tiret.
-sync-brand-name = Firefox
Une fois défini, le terme -sync-brand-name peut être utilisé à partir d'autres messages comme une variable, renvoyant toujours le texte correct. Les termes aident à introduire l'uniformité selon les directives de style. Par exemple, ils peuvent être modifiés pour marquer spécifiquement des versions non officielles ou des versions bêta.
sync-dialog-title = {-sync-brand-name} sync-headline-title = {-sync-brand-name}: The best way to bring your data always with you sync-signedout-account-title = {-sync-brand-name}
L'utilisation du terme directement au milieu d'une phrase peut entraîner des problèmes dans les langues flexionnelles ou dans les langues avec d'autres règles de majuscule de texte. Le sens du terme peut être défini sous plusieurs aspects, selon le contexte. Considérez la définition suivante du terme -sync-brand-name en italien.
-sync-brand-name = {$capitalization -> *[uppercase] Account Firefox [lowercase] account Firefox }
En raison de la nature asymétrique de Fluent, un traducteur italien peut définir deux formes pour écrire une marque. La variante en majuscule (par défaut) convient à une utilisation indépendante ou à une utilisation au début d'une phrase. Une option en minuscules peut être demandée en passant un paramètre de mise en majuscule lorsque le terme est utilisé dans une grande phrase.
sync-dialog-title = {-sync-brand-name} sync-headline-title = {-sync-brand-name}: il modo migliore per avere i tuoi dati sempre con te # . sync-signedout-account-title = Connetti il tuo {-sync-brand-name(capitalization: "lowercase")}
La définition de plusieurs variantes du terme est une technique pratique qui vous permet de vous conformer aux règles grammaticales de nombreuses langues. Dans l'exemple suivant, le traducteur polonais peut utiliser des déclinaisons pour créer la phrase correcte dans le message de synchronisation du compte signé.
-sync-brand-name = {$case -> *[nominative] Konto Firefox [genitive] Konta Firefox [accusative] Kontem Firefox } sync-signedout-account-title = Zaloguj do {-sync-brand-name(case: "genitive")}
Fluent vous permet d'intégrer une logique de construction de langage complexe là où vous en avez besoin. Dans le même temps, la simple traduction reste simple. Fluent n'ajoute pas d'implémentations complexes à des conceptions simples.
sync-signedout-caption = Take Your Web With You sync-signedout-caption = Il tuo Web, sempre con te sync-signedout-caption = Zabierz swoją sieć ze sobą sync-signedout-caption = So haben Sie das Web überall dabei.
Syntaxe fluide
Aujourd'hui, nous annonçons la première version stable de Fluent Syntax. Il s'agit d'une spécification du format de fichier pour le stockage des traductions, ainsi que d'une version bêta des analyseurs pour JavaScript, Python et Rust.
Dans les exemples ci-dessus, vous avez vu en quoi consiste la syntaxe Fluent. Il a été créé pour être compréhensible pour les personnes ayant peu de connaissances techniques et vous permet de vérifier et de modifier du texte avec un nombre minimum d'erreurs. La récupération d'erreur est un point important: une traduction incorrecte ne cassera pas le fichier entier ou les traductions adjacentes. Les commentaires sont utiles pour transmettre le contexte d'un message particulier ou d'un groupe entier. Les traductions peuvent prendre plusieurs lignes, ce qui facilite le travail et le balisage de gros fragments de texte.
Les fichiers courants peuvent être ouverts dans n'importe quel éditeur de texte, ce qui abaisse le seuil d'entrée pour les développeurs et les localisateurs. Le format est déjà pris en charge par la plateforme de traduction logicielle open source Pontoon de Mozilla.
Fluent Playground est un bac à sable pour tester Fluent directement dans le navigateur.Pour plus de détails sur la syntaxe, consultez le Guide de syntaxe Fluent . Une définition formelle peut être trouvée dans la spécification de la syntaxe Fluent . Et si vous voulez simplement essayer Fluent, utilisez Fluent Playground , un éditeur en ligne avec des extraits à partager.
Rétroaction
Firefox est un facteur majeur dans le développement de Fluent. Firefox utilise déjà plus de 3 000 publications Fluent . La migration vers Fluent a commencé l'année dernière et bat son plein. Le format Fluent s'est avéré être une solution stable et flexible pour les interfaces complexes, telles que la page des paramètres de Firefox. Il est également utilisé sur de nombreuses pages Web de Mozilla telles que Firefox Send et Common Voice .
Nous pensons que Fluent est un excellent choix pour les applications où la simplicité et la vitesse sont importantes, mais qui nécessitent en même temps l'affichage des éléments d'interface en fonction de nombreuses variables. En particulier, Fluent aide à créer des phrases naturelles dans différentes langues dans un espace limité d'interfaces mobiles; dans les plateformes de médias sociaux riches en informations; et dans les jeux pour transmettre des statistiques de jeu et expliquer les mécanismes au joueur.
Nous aimerions entendre les développeurs ou les fournisseurs de Fluent. Fluent est développé comme standard du futur, nous invitons donc tout le monde à l'essayer et à nous dire quels autres problèmes vous rencontrez dans votre travail. Avec votre aide, nous pourrons améliorer Fluent pour qu'il fonctionne sur de nombreuses plateformes et dans de nombreuses situations.
Nous sommes ouverts à des critiques constructives. En savoir plus sur Fluent sur le site Web du projet . Si vous avez une histoire à raconter, contactez-nous à Fluent Discourse .
D'un traducteur: documentation de syntaxe en russe .