2011-08-04 18 views
13

我正在使用Symfony2來開發一個可翻譯的應用程序。該應用程序啓用了Assetic來縮小和合並* .js和* .css文件。不過,我有一個我寫的jQuery插件,裏面有文字字符串。例如,請考慮下面的代碼:在Assetic資產中翻譯JavaScript文字字符串的最佳方式是什麼?

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

在上面的代碼中,「你確定?」,「是」和「否」將永遠是英語,我不能用桂枝模板.js文件翻譯它使用類似於:{{「yes」| trans}}

我想知道的是,什麼是使用Twig來利用內置的Symfony2翻譯機制的最佳方式,以翻譯我的JS腳本中的文字字符串。

有沒有辦法創建例如:myscript.js.twig文件?

回答

26

有沒有辦法創建例如:myscript.js.twig文件?

這似乎是一個壞主意。


您可以檢查https://github.com/willdurand/BazingaExposeTranslationBundle

或自己創建它,例如包括這在你的模板:

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

那麼如果你的JavaScript包含文件只是</body>纔可以使用translations變量在裏面。

+0

你的想法是完美的!我想總有不止一種方法來給一隻貓上皮! ;) –

+1

捆綁看起來不錯。感謝您的建議! – eav

+0

你應該包圍'{{'yes'| trans}}'用引號或這會引發錯誤。 – drskullster

0

我正在尋找make twig.js work with translations這對我來說似乎是最好的解決方案。仍然在尋找。

與此同時,我正在使用這個jsgettext,這是Joshua I. Miller在Javascript中的gettext實現。自從原始回購下來以來,我已經上傳回github。

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

你你的翻譯文件加載到DOM和jsgettext可以解析它:

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

alert(_("some string")); 

要想從Symfony的您的翻譯文件的路徑,你將不得不作出一些PHP /樹枝延伸圍繞翻譯服務,但它的工作原理並不重複您的翻譯資源。

相關問題