2

たとえば、私のアプリはCRUD操作を行うときにAJAXの使用に大きく依存しています。

現在のところ、メッセージはこれと同様にハードコーディングされています。

function handleSaveNewMember(xhr, status, args) {  
    if(args.validationFailed || !args.result) {   
    }else{  
        showmsg.show([{summary:'Add New Member', detail: 'Successfully Added New Member', severity: 'info'}]);
    }  
}

しかし、アプリを別のロケールにデプロイするとどうなりますか?では、i18n機能をどのように処理しますか?

ちなみにここではPrimefacesを使用しました。

4

3 に答える 3

4

これは最善の解決策ではないかもしれませんが、過去には、コードで参照する文字列定数を含むjsファイルを基本的にリンクしていました。ロード時に、現在のカルチャに適切なjsファイルをロードします。ただし、そのファイルがロードされない場合は、定数ごとに何らかのデフォルトを設定してください。

于 2012-05-21T05:40:19.370 に答える
1

JQueryの使用が許可されている場合-i18nのプロジェクトでこの素敵な小さなプラグインを使用しています-

http://code.google.com/p/jquery-i18n-properties/

私たちのニーズによく合います。

于 2012-05-21T05:37:55.787 に答える
1

もう1つの方法は、プロパティファイルを繰り返し処理し、それをHashMapsayに入力してmapOfLabelsから、Gsonを使用してJson文字列に変換することです。gson.toJson(mapOfLabels);

xhtmlこのようにgetterを介してページに「リンク」されるBean変数にJson文字列を配置するよりも

<h:inputText id="locLabelsID" value="#{myBean.locLabelsField}" styleClass="hide"/>

js側では、次のように簡単にアクセスしてjQueryで解析できます。

var myJsonVar= $("#locLabelsID").val();
locLabels = $.parseJSON(myJsonVar); 

このようなラベルキーでアクセスします

locLabels[key];

もちろん、ハッシュマップの初期化は一度だけ行われ、同じことがjs側の初期化にも当てはまります...

于 2012-05-21T09:03:39.453 に答える