avec symfony, j'utilise traduction , brindille et WebPack Encore Composants.
Je peux traduire dans FRONTEND TWIG avec: P>
'my_key'|trans
3 Réponses :
Vous devez utiliser BazingajstranslationBundle qui permet Vous accédez aux traductions que vous avez exposées via JavaScript:
Translator.trans('key', {}, 'DOMAIN_NAME'); Translator.transChoice('key', 1, {}, 'DOMAIN_NAME');
Malheureusement, depuis que JS n'est pas manipulé par PHP et par extension non pas par Symfony, vous n'aurez pas accès au composant de traduction de Symfony à l'intérieur de vos fichiers JS.
Un contournement qui pourrait fonctionner lorsque vous n'avez pas trop de traductions Vous devez passer est créer un objet de données JS dans votre modèle de brindille dans votre application Symfony, puis l'accédez à partir de vos fichiers JS. Si grossièrement comme ceci: p> L'inconvénient de cette solution est que vous devez décider quelles touches de mettre dans votre carte de traduction sans vraiment savoir si elles sont utilisées, donc ceci pourrait devenir un peu inefficace et difficile à suivre. De plus, vous devez faire attention à ce que votre contenu traduit soit valide JSON. Vous pouvez appliquer (personnalisé) s'échapper / filtrer pour vous assurer que, mais le rend toujours un peu fragile. P> Au total, cela pourrait ne pas être la meilleure solution mais peut être une solution de contournement décente pour des projets plus petits jusqu'à ce que vous Trouvez que cela devienne plus une nuisance et vous devez trouver quelque chose de plus sophistiqué. P> p>
Remarque: Dans WebPack Case, vous devez exécuter 2 étapes par conséquent: La première étape construira des traductions vers des actifs à être nécessaires dans les scripts JS. La deuxième étape compilera ensuite les scripts JS. P>
Voici une partie de WebPack Encore Config, qui transforme les traductions * .YAML Fichiers vers JSON avec 'JS-YAML' et les met dans le répertoire d'actifs: P> < Pré> xxx pré> ol>