4

クライアント側のローカリゼーション (つまり、javascript とリソース ファイルの埋め込み) を行いたいと考えています。js ファイルとリソース ファイルの両方を同じプロジェクト ("XXX.Web") に含めるまで、すべてが正常に機能していました。

要件の一部として、すべてのリソース ファイルを「XXX.LocalizedResources」プロジェクトに移動する必要がありましたが、js ファイルのクライアント側のローカライズはまだ必要です。

Web プロジェクトの AssemblyInfo.vb で次のことを試しました。

前:

アセンブリ: System.Web.UI.WebResource("XXX.Web.GlobalStrings.js", "text/javascript")

アセンブリ: System.Web.UI.ScriptResource("XXX.Web.GlobalStrings.js", "XXX.Web.Resources", "Resources")

後:

アセンブリ: System.Web.UI.WebResource("XXX.Web.GlobalStrings.js", "text/javascript")

アセンブリ: System.Web.UI.ScriptResource("XXX.Web.GlobalStrings.js", "XXX.LocalizedResources.Resources", "Resources")

(上記の行の構文エラーは無視してください)そして、私が今得たエラーは次のとおりです:

指定されたカルチャまたはニュートラル カルチャに適したリソースが見つかりませんでした。コンパイル時に "XXX.LocalizedResources.Resources" がアセンブリ "XXX.Web" に正しく埋め込まれているかリンクされていること、または必要なすべてのサテライト アセンブリが読み込み可能で完全に署名されていることを確認してください。

少し調べたところ、「Assembly: System.Web.UI.ScriptResource (...)」で使用できるのは web または web.extension プロジェクトのみであることがわかりました。

"XXX.LocalizedResources" の AssemblyInfo に "Assembly: InternalsVisibleTo("XXX.Web")" を追加しようとしましたが、リソース ファイルを "XXX.Web" に開くのに役立ちません。また、リソース ファイルは既に公開されており、埋め込みオプションも設定されています。

クライアント側のローカリゼーションのために外部リソース ファイルを JavaScript に埋め込む方法はありますか?

4

1 に答える 1

0

これをページに含めます。

<script>
//declare string variable defaults here
function UrlExists(url){
var http = new XMLHttpRequest();
try{http.open('HEAD', url, false);
    http.send();
    return http.status!=404;
}catch(e){return false;}
}

var lang=navigator.userLanguage || navigator.language.toLowerCase();
var langsrc   = document.createElement("script");
langsrc.type  = "text/javascript";

if(UrlExists(lang+".js")){
   langsrc.src=lang+".js";
}else{
   langsrc.src="en-us.js";
}
document.body.appendChild(langsrc);
//rest of code here:
</script>

次に、サポートされている言語ごとに、en-us.js などのファイルを設定します。

//en-us.js localization for....
//set language specific variables here
//define language specific functions    

このファイルはページと同じディレクトリに配置され、そのディレクトリ内のすべてのページで共有できます (変更を加えれば、複数のディレクトリやサイト、または 1 つのファイルのみを実行できますが、好みに合わせて味付けできるようにシンプルに保つことができます)

可能であれば、変数に JSON オブジェクトを使用することをお勧めします。これにより、1 つのローカライズ ファイルをサーバー側 (たとえば、php) と共有できるようになります。

于 2012-11-21T08:22:48.663 に答える