Traduire une application Symfony en anglais
Déposez vos fichiers de traduction Symfony (messages.fr.xlf, validators.fr.yaml…) : Manuce vous rend le même fichier, au même format, avec les valeurs traduites en anglais et les clés intactes. Les paramètres %name% et {name} sont vérifiés chaîne par chaîne, et un rapport indique ce qui a été traduit et ce qui a été laissé tel quel.
Combien ça coûte
Pour les fichiers de langue d'une application Symfony totalisant environ 3 000 mots, vers l’anglais :
Comprendre, usage interne.
Prêt à transmettre, par le spécialiste technique.
Relecture croisée. Pour ce qui engage.
Prix pour une langue, mise en page d'origine comprise. TVA non applicable, article 293 B du CGI. Le devis exact, calculé sur le nombre de mots de votre fichier, s'affiche avant paiement.
Quels fichiers déposer pour une application Symfony
Dans un projet Symfony, les textes de l’interface vivent dans le dossier translations/, un fichier par domaine et par langue : messages.fr.xlf, validators.fr.yaml, security.fr.xlf, ou leurs variantes ICU comme messages+intl-icu.fr.xlf. Manuce prend en charge les deux formats courants, XLIFF et YAML.
- messages : libellés, boutons, titres, courriels générés par vos gabarits Twig.
- validators : vos messages de contraintes personnalisés. Les messages des contraintes intégrées de Symfony existent déjà en anglais dans le composant ; inutile de les payer une seconde fois.
- security : messages d’authentification, souvent déjà fournis eux aussi.
Avant de déposer, lancez php bin/console translation:extract --dump-messages fr ou debug:translation fr pour repérer les chaînes encore écrites en dur dans vos gabarits : Manuce ne traduit que ce qui se trouve dans les fichiers, pas le code Twig ni le PHP.
Du français à l’anglais : ce qui change dans vos chaînes
L’anglais est en général 10 à 15 % plus court que le français : « Enregistrer les modifications » devient « Save changes ». Les débordements de boutons sont donc rares, mais les libellés très courts peuvent paraître abrupts ; vérifiez les menus.
- Le zéro au pluriel. En français, 0 relève du singulier (« 0 article ») ; en anglais, 0 est au pluriel (« 0 items »). Les catégories CLDR de l’anglais sont
oneetother. Dans un message ICU,{count, plural, one {# article} other {# articles}}donne{count, plural, one {# item} other {# items}}et Symfony choisit la bonne forme. Avec l’ancienne syntaxe à barres, contrôlez les intervalles explicites comme{0} Aucun article|{1} Un article|]1,Inf[ %count% articles: ils doivent rester cohérents en anglais. - La ponctuation. Les espaces insécables françaises avant « : ; ? ! » et les guillemets « » disparaissent : « Mot de passe : » devient « Password: ».
- Britannique ou américain. colour/color, cancelled/canceled, et la capitale de titre (« Create Your Account », plus fréquente aux États-Unis) contre la capitale de phrase (« Create your account »). Choisissez avant de commencer et contrôlez sur l’extrait gratuit.
- Les dates. Un format comme
d/m/Ystocké dans une valeur n’est pas traduit : pour un public américain, passez-le vous-même enm/d/Y, ou mieux, formatez via le filtre Twigformat_dateselon la locale.
Ce que Manuce rend exactement, et ce qu’il ne fait pas
Vous récupérez le même fichier : indentation, ordre des clés, guillemets, commentaires, fins de ligne, encodage et BOM conservés. Seules les valeurs changent. Dans user.greeting: 'Bonjour %name%', la clé reste, %name% reste, et seule la valeur devient 'Hello %name%'.
- Chaque valeur traduite est comparée à la source (paramètres
%name%et{name}, balises). En cas d’écart persistant, la valeur source est gardée et le rapport le signale. - Ne sont pas traduits : les clés, les valeurs vides, les URL, les adresses électroniques, les nombres, les couleurs, les formats de date, les identifiants et tout ce qui est marqué non traduisible.
- Le prix porte sur les mots des valeurs uniquement, clés et balises exclues : des clés longues comme
checkout.payment.error.card_declinedne coûtent rien.
Manuce ne renomme pas votre configuration, ne touche pas à translation.yaml et ne traduit pas les textes écrits en dur dans le code. Il ne produit pas non plus de traduction assermentée : si vos conditions générales doivent être certifiées, il faut un traducteur expert.
Préparer, puis vérifier avant la mise en production
- Marquez ce qui ne doit pas bouger : noms de marque, codes, valeurs techniques.
- Après livraison, enregistrez le fichier sous
messages.en.xlf(ou.yaml). Pour une variante britannique distincte, unmessages.en_GB.yamlpeut ne contenir que les écarts, Symfony se repliant surenpour le reste. - En XLIFF, l’attribut
target-languagereste celui de la source, puisque le fichier est rendu à l’identique : ajustez-le si un outil de votre chaîne le lit. - Lancez
php bin/console lint:yaml translationsoulint:xliff translations: une apostrophe anglaise (« Don’t ») dans une valeur entre guillemets simples doit rester valide. - Ajoutez
enàenabled_locales, videz le cache, puis contrôlezdebug:translation enpour voir les chaînes manquantes.
Lisez enfin le rapport : chaque chaîne laissée en français y figure avec la raison, ce qui vous dit précisément où regarder.
En pratique
- Rassemblez les fichiers du dossier translations/ dans la langue source (messages, validators personnalisés…).
- Déposez-les sur Manuce : le devis s’affiche sur le nombre exact de mots des valeurs.
- Vérifiez l’extrait gratuit, notamment la variante britannique ou américaine.
- Récupérez le fichier traduit et son rapport, renommez-le en messages.en.xlf ou .yaml.
- Lancez lint:xliff ou lint:yaml puis debug:translation en avant de déployer.
Questions fréquentes
Mes clés sont en français, par exemple « Connexion » utilisé comme clé : sont-elles traduites ?
Non, les clés ne sont jamais traduites, seules les valeurs le sont. Si vous utilisez le texte source comme clé, votre fichier anglais gardera ces clés françaises, ce qui est normal pour Symfony. Le prix ne les compte pas.
Les pluriels avec %count% fonctionnent-ils en anglais ?
Le paramètre %count% est vérifié comme les autres. L’anglais n’a que deux formes, one et other, et 0 prend la forme plurielle, contrairement au français. Relisez les messages qui utilisent des intervalles explicites comme {0} ou {1}.
Faut-il aussi traduire validators.fr.xlf ?
Seulement pour vos messages de contraintes personnalisés. Les messages des contraintes intégrées sont déjà disponibles en anglais dans Symfony ; ne déposez que vos propres entrées pour ne pas payer de mots inutiles.
Que se passe-t-il si un paramètre comme {username} disparaît à la traduction ?
Chaque valeur traduite est comparée à la source. Si l’écart persiste, la valeur française est conservée telle quelle et le rapport l’indique, pour que votre application ne casse pas sur un paramètre manquant.
Le fichier rendu est-il directement utilisable ?
Oui, c’est le même fichier, au même format, avec la même indentation, le même encodage et les mêmes commentaires. Il vous reste à le nommer avec le suffixe en et à activer la locale dans votre configuration.
Le spécialiste qui s’en charge
Ce sujet est confié à Dédale, le spécialiste technique. Voir comment il travaille.
Le même fichier, vers une autre langue
Vers l’anglais, d’autres fichiers
À lire aussi
Testez sur votre fichier, gratuitement
Un extrait de votre fichier traduit au niveau choisi, avant tout paiement. Vous jugez, puis vous décidez.