2011-10-07 17 views

Odpowiedz

23

Rozwiązaniem jest:

{% trans from "domain" %}text{% endtrans %} 
+2

jak można to zrobić z filtrem trans za pomocą rury, zamiast bloku? – krishna

52

Można również zrobić za pomocą filtra trans:

{{ 'translationkey'|trans({},'domain') }} 
+0

to nie działa, gdy używasz go do tłumaczenia łańcuchów ze zmiennych. –

+2

Max, musisz zrobić coś złego. Działa to również dla zmiennych (zobacz: http://symfony.com/doc/current/book/translation.html#twig-templates eg np. {{Message | trans ({'% name%': 'Fabien'}, " app ")}}'). – flu

+0

To na pewno działa! Nawet ze zmiennymi. – naitsirch

5

Możesz dodać niestandardowe funkcje do zmiany domeny wewnątrz szablonów.

Dodaj swoje funkcje:

$getTextdomain = new Twig_SimpleFunction('get_textdomain', function() { 
    return textdomain(NULL); 
}); 
$setTextdomain = new Twig_SimpleFunction('set_textdomain', function ($domain) { 
    textdomain($domain); 
}); 

$twig->addFunction($getTextdomain); 
$twig->addFunction($setTextdomain); 

Następnie użyj go:

{% set originalDomain = get_textdomain() %} 
{{ set_textdomain('errors') }} 
{% trans "My error message" %} 
{{ set_textdomain(originalDomain) }}