2012-02-24 4 views
1

私はアプリケーション全体を別の言語に翻訳したいと思っています。リソースファイルLocalizableResources.resxを含む別個のグローバルリソースプロジェクトを追加しました。 は、しかし、私はすべてのJavaScriptの文字列は「JS_」で始まるスクリプト内に存在する文字列のローカライゼーション

*var resourceDictionary = new ResourceReader(FILEPATH OR STREAM) 
           .Cast<DictionaryEntry>() 
           .Where(x=>x.Key.ToString().StartsWith("JS_")) 
           .ToDictionary(entry => entry.Key.ToString(), entry => entry.Value.ToString()); 
      var json = Serializer.Serialize(resourceDictionary);* 

、ここで私が試したものです、JavaScriptの内で使用される文字列で立ち往生しています。 私が直面している問題は、リソースファイルが(Webエンドポイント内ではなく)別のプロジェクトとして存在するため、FILEPATH/STREAMを取得できないということです。もし誰かが違うやり方を提供したり、この方法の間違いを指摘すれば、本当に役に立ちます。 ありがとうございます。

答えて

0

JQueryのようなJavascriptライブラリを使用していますか? i18n用のネイティブ機能またはプラグインがあります。

コードについては、ResourceManagerを使用して、リソースファイルに直接アクセスするのではなく、リソースのすべてのキーを取得できます。

+0

私はResourceManagerを使用してすべてのキーを取得しましたが、うまくいきました。 – user1045047

0

単純な解決策は、翻訳を含む変数をマスタページに定義し、それらを.jsファイルで使用することです。以下のRazorの例を参照してください。

<script type="text/javascript"> 
    var Translation = { 
    helloWorld: '@MyResourceFile.HelloWorld', 
    book: '@MyResourceFile.Book' 
} 
</script> 
<script src="@Url.Content("~/Scripts/MyScriptFile.js")" type="text/javascript" /> 
+0

これは動作しますが、手動ですべての文字列を追加する必要はありません。また、スクリプトに複数の文字列を追加する場合は、MyResourceFileとマスターページを使用するために2か所で変更する必要があります。 – user1045047

+0

真実、私の場合、これは最も簡単な解決策でした:) – Marthijn