Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Twig translate a string which contains parameter

Tags:

twig

symfony

In my Twig project I use translation from .yaml files. The text which I need to translate is found in a .html.twig file and says, for example,

"My text for translation contains a {{parameter}} to translate."

I know that I can replace this whole string with a key word, for example - to_translate %parameter% to_translate2, and I can use the translation from my .yaml file like this

to_translate: "My text for translation contains a" to_translate2: "to translate"

And the parameter will be passed. However, how can I do this without breaking the sentence in so many parts?

like image 803
Dimentica Avatar asked Sep 20 '25 12:09

Dimentica


1 Answers

Maybe I didn't get your point, but you can add as many parameters as you want ?

Yaml file:

my_translation_key: Hello %firstname%, %lastname%, welcome here !

In Twig:

{{ 'my_translation_key' | trans({
        '%firstname%': 'John',
        '%lastname%': 'Doe'
    }) }}

If what you want is to get nested blocks in your translations, you can probably try something like this:

Yaml file:

my_translation_key: Hello %firstname%, %lastname%, %welcome% !
welcome_block: welcome %where%

In Twig:

{% set welcome = 'welcome_block' | trans({'%where%': 'here'}) %}
{{ 'my_translation_key' | trans({
        '%firstname%': 'John',
        '%lastname%': 'Doe',
        '%welcome%': welcome
    }) }}
like image 93
Philippe CARLE Avatar answered Sep 22 '25 20:09

Philippe CARLE



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!