2012-02-28 13 views
6

Dodałem usługę tłumacza do mojego projektu Symfony2. Używam go zarówno w kontrolerach, jak iw szablonach twig. Jest dobrze skonfigurowany i wszystkie znaczniki {% trans %} działają tak, jak powinny. Ale w niektórych przypadkach muszę użyć znacznika {% transchoice %} i nie otrzymuję tłumaczenia. Oto przykład z mojego kodu.Znacznik transchoice Symfony2

{% transchoice post['comments']['count'] %} 
    {0} Comments| {1} Comment| ]1,Inf] Comments 
{% endtranschoice %} 

Próbowałem również napisać to w jednym wierszu.

Dostaję prawidłowy wybór dla liczby komentarzy, ale samo słowo nie zostało przetłumaczone. Tak jak tłumacz nie jest w stanie znaleźć odpowiedniego tłumaczenia. W messages.de.yml mam

Comment: "Kommentar" 
Comments: "Kommentare" 

Czy jest coś nie tak z moim składni transchoice? Może muszę gdzieś umieścić miejsca, czy coś w tym stylu?

Odpowiedz

10

W pliku tłumaczenia, należy napisać to:

{0} Comments| {1} Comment| ]1,Inf] Comments: "{0} Kommentare| {1} Kommentar| ]1,Inf] Kommentare" 

UPDATE: xliff przykład, który pracuje dla mnie:

 <trans-unit id="search.results.summary"> 
      <source>search.results.summary</source> 
      <target>{0}Pas d'annotations trouvée pour "%search_text%"|{1}Une annotation trouvée pour "%search_text%"|]1,Inf]%search_count% annotations trouvées pour "%search_text%"</target> 
     </trans-unit> 

Jak go używać:

<h2>{{ 'search.results.summary' | transchoice(search_count, { 
'%search_text%': search_text, 
'%search_count%': search_count}) }}</h2> 

Jak widzisz, nie używam komplementów zapis maturalny jako źródło mojego tłumaczenia, ponieważ jest całkiem bezużyteczny i sprawiałby, że szablon byłby mniej czytelny. Zamiast tego wstawiam ciąg znaków rozdzielany kropkami, reprezentujący wartość semantyczną mojego ciągu.

W twoim przypadku, myślę, że właściwą rzeczą do korzystania byłoby coś takiego:

comment.summary: "{0} Kommentare|{1} Kommentar|]1,Inf] Kommentare" 

i

{% transchoice post['comments']['count'] %} 
    'comment.summary' 
{% endtranschoice %} 

Powodzenia.

+0

, które nie będą poprawne przy wyborze tłumaczenia. Nawiasem mówiąc, nie można tego sparsować nawet w gałązce. – ArVan

+0

Dlaczego mówisz, że to nie będzie poprawne? Nie jestem zaznajomiony z yml dla tłumaczeń, ale użyłem tego z xliffem i działa (i całkiem dobrze parsuje). Może będziesz musiał dostosować niektóre rzeczy. Przy okazji ponownie wykorzystałem to, co napisałeś, więc jeśli nie parsuje, to jest to * twoja wina. I myślę, że to nie parsuje ze względu na odstępy między rurami a nawiasami. Zaktualizuję mój post z przykładem Xliffa, który działa dla mnie, mam nadzieję, że ci to pomoże. – greg0ire

+0

Teraz działa. Jedynym problemem jest to, że w przypadku braku tłumaczenia, tekst 'comment.summary' zostanie wyświetlony ... – ArVan