1

私はRESTサーバー側で作業しています。

クライアントに応答しながら、HTTPヘッダーの error_codeとを更新します。error_messageこれは、error_messageが静的になるまでは問題ありません。

e.g. error_code    : PC_USER_007
     error_message : You are logged out!

クライアント側はerror_code(PC_USER_007);を確認します。対応するプロパティで、ローカリゼーションを行います。したがって、ユーザーが中国に属している場合、GUIは中国語で同じerror_messageを表示します。

以下のような動的エラー文字列の場合、

e.g. error_code    : PC_USER_008
     error_message : You have tried 2 attempts; only 1 attempts is remaining. 
Here 2, 1 are dynamic values..

次に、GUI側で、このエラーメッセージを他の言語に変換する方法を説明します。

この種のローカリゼーションをすでにサポートしているフレームワーク(struts、spring ...)はありますか?

これは、Java文字列のトークンのセットを置き換える方法とは正反対の質問です。

サーバー側私は上記のリンクをたどりました。今、私はクライアント側で反対のケースが欲しいです。

4

4 に答える 4

6

サーバーに完全なerror_messageを渡させることは、あまり適切ではありません。

通常、サーバーはerror_codeと一連のエラー値を渡します。例えば

error_code: PC_USER_008
error_values: "42", "a value"

クライアントは、次のような多くの言語でそのerror_codeのテンプレートを保持しています。

"This is argument {1} and arg {2}" 
"Ceci est argument {1} et arg {2}"

等..

次に、クライアントはプレースホルダー{1}...{n}を受け取った値で単純な文字列置換を実行します

于 2013-03-21T06:13:43.147 に答える
1

もし私があなたなら、最初にエラーコードをHTTPヘッダーから応答コンテンツの構造(jsonなど)に移動します。ヘッダーは階層的ではなく、構造もありません。適切なステータスコードを使用して、応答にそれらを含めることをお勧めします。

ローカライズされたメッセージとそのテンプレートについては、エラーメッセージなしでエラー応答を返すRESTサービスに出くわしたことはありません。たとえば、zohodjango(REST API)、S3を見てください。それらはすべてコードとメッセージを返します。

  1. メッセージを返さない場合の問題は、クライアントが問題が何であるかをすぐに知ることができないことです。これにより、デバッグが困難になります。
  2. また、クライアントは、後でサーバーコードに導入する新しいエラーコードにアクセスできなくなります。これにより、#1が強化されます。
  3. エラーコードの廃止やエラーメッセージの変更は、もはやあなたの管理下にはありません。

テンプレートを実装しますが、サーバー側で実行します。ロケールを識別するIDを送信するようにクライアントに依頼します。ロケールに基づいて、エラーメッセージを変更できます。サーバー側の変更のためにクライアントがコードを更新する必要はなく、クライアントに表示する正しいローカライズされたメッセージが常に表示されます。

于 2013-03-27T05:52:32.537 に答える
0

通常、多言語アプリケーションを扱っている場合は、IDを使用してサーバーとGUIでテキストを識別し、error_messageフィールドでテキストIDを使用する必要があります。IDとして英語のテキストを使用するいくつかのフレームワークがあります。

于 2013-03-22T11:58:49.290 に答える
0

エラーメッセージ全体を応答ヘッダーで送信することはお勧めできません。エラーコードを送信し、それらのコードにロケール固有のメッセージを実装できます。

成功リクエスト後のJavaScriptで、コールバックメソッドを使用して失敗応答コードを追跡します。バンドルを作成して、特定のロケールユーザーのさまざまなプロパティファイルを読み取り、キー値を読み取って、適切なエラーメッセージを表示します。

元:

Properties file/ JS file
1. EnglishLabels.properties
2. MexicanLabels.properties
3. JapaneseLabels.properties

var bundle = read the specific property file and save the map (key : 0001 , value : Invalid Login)

後で成功リクエストの後で、コールバックメソッドを使用してロケール固有のエラーメッセージを表示します。

よろしくプニート

于 2013-03-27T11:06:18.800 に答える