2011-08-04 11 views
13

私は、翻訳可能なアプリケーションを開発するためにSymfony2を使用しています。アプリケーションでAsseticを有効にして、* .jsファイルと* .cssファイルを縮小して組み合わせることができます。しかし、私はそれにリテラル文字列を持って、私が書いたjQueryのプラグインがあります。たとえば、次のコードを検討してください:上記のスニペットでAssetic資産のJavaScriptリテラル文字列を変換する最良の方法は何ですか?

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

を、「よろしいです...」、「はい」と「いいえ」は常に英語になる、と私はで小枝のテンプレートを使用することはできません{{"yes" | trans}}

私が知りたいのは、組み込みのSymfony2変換メカニズムを活用するためにTwigを使用する最良の方法は、次のようなものです。 JSスクリプトのリテラル文字列を翻訳します。

たとえば、myscript.js.twigファイルを作成する方法はありますか?

答えて

26

たとえば、myscript.js.twigファイルを作成する方法はありますか?

悪い考えです。


あなたはhttps://github.com/willdurand/BazingaExposeTranslationBundle

を確認するか、それを自分で作成することができ、例えば、あなたのテンプレートでこれを含める:

ファイルが含まれているJavaScriptのならば、
<script type="text/javascript"> 
    var translations = { 
     // ... 
     'yes' : {{ 'yes' | trans }}, 
     // ... 
    } 
</script> 

はちょうど</body>前にtranslations変数を使用することができますその中に。

+0

両方のアイデアは完璧です!私は常に猫を肌に触れる方法は複数あると思います! ;) –

+1

バンドルがうまく見えます。アドバイスありがとう! – eav

+0

あなたは '{{'yes' | trans}} 'を引用符で置き換えてください。そうしないと、エラーが発生します。 – drskullster

0

make twig.js work with translationsのようなものを探していましたが、これは私にとって最善の解決策のようです。まだ検索しています。

その間、私はJoshua I. MillerによるJavascriptのgettext実装であるjsgettextを使用しています。元のレポが消滅してから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 /小枝の拡張を行う必要があります翻訳サービスを中心にしていますが、翻訳リソースを複製しなくてもうまくいきます。

関連する問題