2016-12-27 1 views
0

In meinem Twig-Projekt verwende ich Übersetzungen aus .yaml-Dateien. Der zu übersetzende Text befindet sich in einer .html.twig-Datei und lautet z. B.Twig übersetzt einen String mit Parameter

"Mein zu übersetzender Text enthält einen zu übersetzenden {{parameter}}".

Ich weiß, dass ich diese ganze Kette mit einem Schlüsselwort ersetzen kann, zum Beispiel - to_translate% Parameter% to_translate2, und ich kann die Übersetzung von meiner .yaml Datei wie diese

to_translate verwenden: „Mein Text für Übersetzung enthält eine " to_translate2:" zu übersetzen "

Und der Parameter wird übergeben. Aber wie kann ich das tun, ohne den Satz in so vielen Teilen zu brechen?

Antwort

2

Vielleicht habe ich Ihren Punkt nicht verstanden, aber Sie können so viele Parameter hinzufügen, wie Sie möchten?

Yaml Datei:

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

In Zweig:

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

Wenn das, was Sie wollen, ist verschachtelte Blöcke in Ihre Übersetzungen zu erhalten, können Sie wahrscheinlich so etwas wie diese versuchen:

Yaml Datei:

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

In Zweig:

{% set welcome = 'welcome_block' | trans({'%where%': 'here'}) %} 
{{ 'my_translation_key' | trans({ 
     '%firstname%': 'John', 
     '%lastname%': 'Doe', 
     '%welcome%': welcome 
    }) }} 
+1

Vielen Dank! Das Problem war, dass ich Stand-alone Twig benutze und vielleicht einige symfony Teile nicht funktionierten. Also übergebe ich nun den Parameter mit {% trans mit {'% var%': var}%} translate {% endtrans%} und in der .yaml-Datei habe ich übersetzt: mein Satz% var% Danke !!! – Dimentica

+0

Gern geschehen, froh, dass ich Ihnen helfen konnte! –

1

Vielleicht sollten Sie dies versuchen:

{{ ('My text for translation contains a '~parameter)|trans }} 

In Documentation:

~: Wandelt alle Operanden in Strings und verkettet sie. {{"Hallo" ~ Name> ~ "!" }} würde zurückkehren (angenommen, der Name ist 'John') Hallo John !.