Page History
...
GoogleTranslateServerModule という名前の新規サーバー・モジュールを作成し、必要なフィールドを宣言します。
Begin_Com Role(*EXTENDS #PRIM_SRVM) End_Com
最初に次のフィールドを定義します。
Define Field(#TargetLanguage) Type(*NVARCHAR) Length(10)Define Field(#SourceLanguage) Type(*NVARCHAR) Length(10)Define Field(#SourceText) Type(*NVARCHAR) Length(500)Define Field(#TranslatedText) Type(*NVARCHAR) Length(500)Define Field(#ErrorCode) Type(*NVARCHAR) Length(50)Define Field(#ErrorMessage) Type(*NVARCHAR) Length(200)Define Field(#OK) Type(*BOOLEAN)
Translate という名前の新しいサーバー・ルーチンを作成します。
Srvroutine Name(Translate) Endroutine
次の入力・出力パラメータをサーバー・ルーチンに追加します。
* 入力フィールドの定義Field_Map For(*INPUT) Field(#SourceText)Field_Map For(*INPUT) Field(#TargetLanguage) Field_Map For(*INPUT) Field(#SourceLanguage)
* 出力フィールドの定義Field_Map For(*OUTPUT) Field(#OK)Field_Map For(*OUTPUT) Field(#TranslatedText)Field_Map For(*OUTPUT) Field(#ErrorCode)Field_Map For(*OUTPUT) Field(#ErrorMessage)
サーバー・ルーチンの最初に以下の変数を宣言します。
Define_Com Class(#XPRIM_HttpRequest) Name(#HttpRequest)Define_Com Class(#XPRIM_UriBuilder) Name(#Url)Define_Com Class(#XPRIM_RandomAccessJsonReader) Name(#Reader)
URL ホスト、パスおよびクエリ文字列に値を入れます。
#Url.SetScheme( 'https' )#Url.SetHost( 'www.googleapis.com' )#Url.SetPath( '/language/translate/v2' )#Url.AddQueryString( 'q' #SourceText )#Url.AddQueryString( 'target' #TargetLanguage )#Url.AddQueryString( 'format' 'text' )#Url.AddQueryString( 'source' #SourceLanguage )#Url.AddQueryString( 'key' '<前のステップで取得した api キー>' )
URL により指定された要求を実行します。
#HttpRequest.DoGet Url(#Url)
次に JSON 応答から翻訳されたテキストを取得する必要があります。
...
"翻訳されたテキスト" の値へのパスは次のようになります。
data/translations/1/translatedText
まずは、要求が正常に実行されたかどうかを確認する必要があることを忘れないでください。これは、サーバーからの応答の有無 (IsSucessfulRequest プロパティ)、正常な応答を受信したかどうか (IsSuccessHttpStatusCode) をチェックすることで確認できます。
エラー発生時の JSON 応答を思い出してください。
エラー・メッセージへのパスは以下になります。
error/message
以下は JSON 応答から翻訳されたテキストを抽出するコードです。
* サーバーからの応答の有無を確認If (#HttpRequest.Response.IsSuccessfulRequest)
* HTTP 応答を JsonReader オブジェクトにフィード #Reader.SetSourceHttpResponse Httpresponse(#HttpRequest.Response)
* サーバーから正常な応答を取得したか確認 If (#HttpRequest.Response.IsSuccessHttpStatusCode)
* 結果の (翻訳された) テキストを取得 #TranslatedText := #Reader.ReadStringWithPath( 'data/translations/1/translatedText' ) #OK := True Else
* エラー・コードおよびエラー・メッセージを JSON 応答から取得 #ErrorCode := #Reader.ReadStringWithPath( 'error/code' ) #ErrorMessage := #Reader.ReadStringWithPath( 'error/message' ) #OK := False EndifElse
* サーバーからの応答無し * 応答オブジェクトからの転送エラーを取得
#OK := False #ErrorCode := #HttpRequest.Response.ErrorCode #ErrorMessage := #HttpRequest.Response.ErrorMessageEndif

