本ドキュメントは株式会社クロスランゲージの翻訳サーバーSDKの一部です。ユーザーは、SDKライセンスの制限と条件に準じてのみ本ドキュメントを使用することができます。
サーバーへの全てのリクエストは以下の規則に準じて有効でなければなりません。
GETメソッドに対応する全てのAPIメソッドは、POSTを使ってコールすることもできます。POSTでリクエストする場合、全てのパラメータはそのリクエストの本文内で指定されなければなりません。
全てのリクエストURLは、有効なUTF-8エンコーディングを使用しなければなりません。無効なUTF-8を使用するとエラーになります。
全てのパラメータ値は、パーセントエスケープによって適切にURLエスケープされなければなりません。
バイナリ・データの翻訳は不可となります。0x00から0x1Fまでの全ての文字範囲(TAB (0x09)、LF (0x0A) 、CR (0x0D) を除く)は翻訳前に半角スペース文字 (0x20) に置き換えられます。
GETメソッドを使ったリクエストURLの最大長は20,000バイトです。POST bodyにはURLエンコードデータ長の制限はありません。
UTF-8とURLエンコード後は日本語一文字が9バイトとなるため、GETリクエストでの日本語最大長は約2000文字に制限されます。このような制限を回避するため全てのリクエストでPOSTメソッドを使用することを推奨します。
翻訳サーバーへの全てのコールによって、ライセンスは提供される。このライセンスは様々な方法で適用されます。すべてのメソッドでプレイン・テキストの代わりにハッシュ化されたパスワードが使用されます。
"Cross-Licence"ヘッダーを使用してHTTPリクエストでユーザーIDとハッシュ化されたパスワードを提供します。以下、例となります。
GET /clsoap/user HTTP/1.0 Cross-Licence: userid ce7276de4e2f5eb2c864f01a6121553db0923b65
URLパラメータとしてHTTPリクエストでユーザーIDとハッシュ化されたパスワードを提供します。以下、例となります。
GET /clsoap/user?key=userid+ce7276de4e2f5eb2c864f01a6121553db0923b65 HTTP/1.0
Basic認証もしくはDigest HTTP認証によって、ユーザーIDとハッシュ化されたパスワードを提供します。
エラーがサーバー側で発生した場合は、有効なJSONもしくはJSONPレスポンスが可能ならば返されます。このデータは常にHTTPステータス・コードの200として返されます。実際のHTTPステータス・コードはJSONデータのレスポンスより読み取れます。このエラーレスポンスオブジェクトはコールバックされたか否かにかかわらず同じフォーマットです。コールバックされた場合、エラーオブジェクトが最初のパラメータとして渡されます。
{ "error": { "code":CODE
, "message": "MESSAGE
" } }
CODE
値はHTTPステータス・コードで通常は以下のうちの一つになります。
400 | クライアントが無効なリクエストを発行しました。リクエスト内のエラーを修正し、サーバーに再度リクエストを発行してください。 |
---|---|
401 | サーバーに有効なライセンスキーが与えられていません。リクエストをリトライする前に、上記で紹介したメソッドのいずれかで有効なライセンスキーが提供されているか確認してください。 |
500 | リクエストを処理中にサーバーで内部エラーが発生しました。再度リクエストを実行しても処理できる可能性は低くなります。 |
503 | サーバーが一時的にビジーで、リクエストを処理できませんでした。しばらく待ってから再度リクエストを実行してください。 |
MESSAGE
はプレイン・テキストのエラーメッセージで、エラーについての詳細を提供します。
一般的なエラーメッセージは以下の通りです。以下メッセージリストはエラーの一部となります。
ユーザーAPIで、現ユーザーが利用できるサーバーエンジン、辞書およびその他リソースを処理要求することができます。
/clsoap/user
GET, POST
key=LICENCE | オプション | 当該サービスのユーザーライセンスを提供します。 |
---|---|---|
uilang=LANGUAGE | オプション | 全ユーザーの表示可能なテキストをリクエストされた言語で返すリクエストです。この言語は、言語コードの1つで、"en" = 英語、"ja" = 日本語となります。指定しない場合は、デフォルトとして日本語が指定されます。 |
レスポンス・オブジェクトは以下のフォーマットになります。
{ "user": { "userid": "hogehoge", "username": "ほげほげ", "features": "TEXT TMUL UGTS REST", "timezone": "Japan" }, "engines": { "EJ": { "from": "en", "to": "ja", "reverse": "JE", "display": "英語 - 日本語" }, "JE": { "from": "ja", "to": "en", "reverse": "EJ", "display": "日本語 - 英語" } } }
"ユーザー"オブジェクトは、当該ユーザーに関する全ての情報を含みます。
"エンジン"オブジェクトは、当該ユーザーが利用できるエンジンのリストを含みます。
翻訳APIは、テキストおよびHTML翻訳の機能を提供します。
/clsoap/translate
GET, POST
key=LICENCE | オプション | サービスのユーザーライセンスを提供します。HTTPリクエストヘッダもしくはHTTP認証のいずれかを使用してユーザーライセンスが提供される場合、URLを指定する必要はありません。 |
---|---|---|
e=ENGINE | 必須 | 使用する翻訳エンジンを指定します。翻訳エンジンは/clsoap/userへリクエストして返されたユーザー情報のエンジンIDの内、一つでなければなりません。 |
p=PROFILE | オプション | 翻訳で使用するエンジンプロパティのプロファイルを指定します。指定しない場合、エンジンプロパティはデフォルトプロファイルを使用します。 |
t=TEXT | 必須 | 翻訳されたテキストもしくはHTMLを指定します。複数エントリの指定が可能で、それぞれのファイルは別のブロックとして翻訳されます。指定の順番通りに翻訳結果が別々に返されます。 |
format=TYPE | オプション | "t"パラメータのデータをフォーマットを指定します。"text"はテキストデータ、"html"はhtmlデータとして使用してください。これらのパラメータが指定されない場合は、テキストデータがデフォルトとして使用されます。 |
sent=true | オプション | センテンスセグメント情報が翻訳されたテキストとして返すようリクエストします。 |
equiv=true | オプション | equiv情報が翻訳されたテキストとして返すようリクエストします。 |
レスポンス・オブジェクトは以下のフォーマットになります。
{ "t": [ { "text": "これは、テストです。", "sent": [ ["M","ja",0,15,0,10] ], "equiv": { "org": [ [0,0,4], [2,8,1], [3,10,4], [4,5,2], [9,14,1] ], "txn": [ [0,0,2], [1,2,1], [3,4,3], [4,7,1], [6,8,1], [9,9,1] ] } } ] }
当該レスポンスを発生させるリクエストは以下の通りです。
http://SERVER/clsoap/translate?e=EJ&t=This+is+a+test.&sent=true&equiv=true
レスポンス・オブジェクトは、以下のメンバーを含みます。
t | 結果ブロックの配列となる。リクエストされたそれぞれの"t"パラメータに対して、この配列のエントリが対応しています。最初の"t"パラメータは、t[0]、2番目は、t[1]、等々となります。詳細は以下のt オブジェクトをご参照ください。 |
---|
"t"配列のそれぞれのオブジェクトは、以下のエントリを含みます。
text | 翻訳されたテキストもしくはHTMLデータ。 |
---|---|
sent | テキストのセグメントエントリの配列。詳細は以下の sent配列をご参照ください。 |
equiv | ワードequivエントリの配列。詳細は以下のequivオブジェクトをご参照ください。 |
"sent"配列は、リクエストがテキスト翻訳およびセンテンス・データが"sent=true"でリクエストされている場合にのみ返されます。センテンス・データはHTML翻訳には対応していません。"sent"配列のそれぞれのオブジェクトは、以下項目を含む固定長配列となります。
[ TEXTTYPE, LANGUAGE, ORGSTART, ORGLEN, TXNSTART, TXNLEN ]
それぞれの子配列の内容は以下の通りです。
TEXTTYPE | セグメント型を指定する一文字の文字列。セグメント型はテキストがどのように生成されたかを説明します。例えば、"M"型は、機械翻訳によって生成されたセグメントで、"S"型は、ソース側から単にコピーされた (場合によっては修正された) 空白エントリとなります。この文字はCrossConstants.js ファイルの定数CR_TEXTTYPEの内一つに一致します。 |
---|---|
TLANGUAGE | 入力する言語コード。ほとんどの場合、翻訳目的の言語と同じになりますが、翻訳エンジンが翻訳結果を生成できない場合、当該項目は翻訳元の言語となります。 |
TORGSTART | オリジナル・テキストにおけるセグメントの最初の開始インデックス。インデックスはUTF-16のコードポイントで表される。 |
TORGLEN | オリジナル・テキストにおけるセグメントの長さ。インデックスはUTF-16コードポイントで表される。 |
TTXNSTART | 翻訳テキストにおけるセグメントの最初の開始インデックス。インデックスはUTF-16コードポイントで表される。 |
TTXNLEN | 翻訳テキストおけるセグメントの長さ。インデックスはUTF-16コードポイントで表される。 |
上記の例より、セグメント部分は、["M","ja",0,15,0,10]
のみとなります。このセグメントは、TEXTTYPE = "M", LANGUAGE = "ja", ORGSTART = 0, ORGLEN = 15, TXNSTART = 0, TXNLEN = 10という値となります。元テキストの "This is a test."は翻訳テキストの"これは、テストです。"に対応します。
equiv オブジェクトは、リクエストがテキスト翻訳およびequiv データがパラメータ"equiv=true"としてリクエストされた時のみに返されます。equiv データはHTML翻訳では対応していません。equiv オブジェクトは同等情報の関連する配列を含む"org"と"txn"オブジェクトを含みます。"org"配列は、オリジナル・テキストと同等のエントリを含み、"txn"配列は、翻訳テキストの同等エントリを含みます。
"org"および"txn"オブジェクト配列は同一フォーマットのエントリを含みます。これらのオブジェクト配列のそれぞれのフォーマットエントリは、以下の項目を含む固定長配列となります。
[ ID, START, LENGTH ]
各子配列の内容は以下の通りです。
ID | 同じIDの"org"と"txn"の配列の項目は、同じ単語もしくはフレーズに関連します。いくつかのIDのいずれの配列にも、0、ひとつもしくは多数のエントリがあるものとして、関係性はN:Mであることにご留意ください。 |
---|---|
START | テキスト内の単語もしくはフレーズの開始インデックス。インデックスはUTF-16コードポイントで表される。"org"配列のエントリで、当該インデックスはオリジナル・テキストに関連しています。"txn"配列のエントリで、当該インデックスは翻訳テキストに関連しています。 |
LENGTH | テキスト内の単語もしくはフレーズの長さ。長さはUTF-16コードポイントで表される。 |
上記の例より、ID 3を持つ"org"および"txn"の配列に一つのエントリがあります。"org"エントリは、 [3,10,4]
で、ID = 3、START = 10 (オリジナル・テキスト内)、LENGTH = 4となり、これは"test"という単語になります。 "txn"エントリは、
[3,4,3]
で、ID=3、START=4(翻訳テキスト内)、LENGTH=3となり、これは"テスト"という単語になります。