2011-08-04 6 views
13

Używam Symfony2 do opracowania aplikacji, która ma być tłumaczona. Aplikacja ma włączoną funkcję Assetic, aby zminimalizować i połączyć pliki * .js i * .css. Mam jednak wtyczkę jQuery, którą napisałem, zawierającą literalne ciągi. Rozważmy na przykład następujący kod:Jaki jest najlepszy sposób tłumaczenia łańcuchów literackich JavaScriptu w zasobach aktywów?

$('<p>Are you sure you want to proceed?</p>').dialog({ 
     buttons: { 
      "Yes" : function() { 
       // ... 
      }, 
      "No" : function() { 
       // ... 
      } 
     } 
    }); 

W powyższym fragmencie: „Czy jesteś pewien, ...”, „Tak” i „Nie” zawsze będzie angielski, a ja nie mogę używać templating w Gałązka plik .js do przetłumaczenia go za pomocą czegoś takiego: {{"tak" | trans}}

Co chciałbym wiedzieć, jaki byłby najlepszy sposób użycia Twig do wykorzystania wbudowanego mechanizmu tłumaczenia Symfony2, aby tłumaczyć literalne ciągi w moich skryptach JS.

Czy istnieje sposób na stworzenie na przykład plików myscript.js.twig?

Odpowiedz

26

Czy istnieje sposób na stworzenie na przykład plików myscript.js.twig?

Wydaje się, że to zły pomysł.


Można sprawdzić https://github.com/willdurand/BazingaExposeTranslationBundle

lub utwórz go samodzielnie, na przykład uwzględnienie tego w szablonie:

<script type="text/javascript"> 
    var translations = { 
     // ... 
     'yes' : {{ 'yes' | trans }}, 
     // ... 
    } 
</script> 

wtedy, gdy JavaScript plik znajduje się tuż przed </body> można użyć translations zmienną w tym.

+0

Oba pomysły są doskonałe! Przypuszczam, że zawsze istnieje więcej niż jeden sposób na skórze kota! ;) –

+1

pakiet wygląda dobrze. dzięki za radę! – eav

+0

Powinieneś otaczać '{{'tak' | trans}} 'z cytatami lub spowoduje to błąd. – drskullster

0

Szukałem czegoś do make twig.js work with translations co wydaje mi się najlepszym rozwiązaniem. Ciągle szukam.

W międzyczasie używam tego jsgettext, który jest implementacją gettext w JavaScript, autorstwa Joshua I. Millera. Wróciłem do Githubu, ponieważ oryginalne repo nie działa.

<script language="javascript" src="/path/LC_MESSAGES/myDomain.json"></script> 
<script language="javascript" src="/path/Gettext.js"></script> 

załadować swoje pliki tłumaczeń w swoim DOM i jsgettext można go analizować:

function _(msgid) { return gt.gettext(msgid); } 

alert(_("some string")); 

Aby uzyskać ścieżkę plików tłumaczenie z Symfony, będziesz musiał zrobić trochę php/rozszerzenie gałązka wokół usługi Translator, ale działa doskonale bez duplikowania zasobów tłumaczeniowych.

Powiązane problemy