はじめの一歩

開始するには、以下のステップに従ってください

ステップ1: Sandboxアカウントを作成して、APIキーを取得します。

あらゆるAPIの呼び出しは、APIキーを用いて承認される必要があります。テスト中は、Sandbox環境をご利用いただき、そこからあなたのキーを生成してください。このチュートリアルでは、Sandboxアカウントの作成方法をご説明して、Gengoの翻訳APIを呼び出すためのAPIキーを生成できるようにします。

まず、 無料のSandboxアカウントを作成 する必要があります。

ログイン後にAccountセクションに行き、右側にあるメニューから "API settings" をクリックしてください。

ここにあなたのAPIキーが保存されます。別のキーを生成するには "Generate Key" をクリックしてください。

各パブリックキーには、対応するプライベートキーとコールバックURLがあります。パブリックキーはあなたを識別するもので、あなたのログイン名と似た働きをします。プライベートキーはいわばあなたのパスワードなので、絶対に秘密にしてください。他人に知られた場合、その人はあなたのアカウントにアクセスできてしまいます。コールバックURLは、案件の進行状況についてステータスアップデートをGengoからあなたのサーバーやアプリケーションに送ってほしい場合に役立ちます。

生成したパブリックキーとプライベートキーをコピーして、ご自分のアプリケーションで利用できるようにしましょう。

1#!/usr/bin/python
2# -*- coding: utf-8 -*-
3
4PUBLIC_KEY = 'rspZJxEnswelpvS0)tdwM]7uPjkcgR%@k_mN[Z1ac_3a=#EN%r=]cKwxq98-XQdK'
5PRIVATE_KEY = 'IlUyZP5TISBSxRzEm0mil$L}-0FxeX(24W1d#TkY{qNkh42Q3B}m2)XJi_nYqrl^'

これだけです! 次のステップでは、APIコールの例をいくつかご紹介します。

ステップ2: あなたのAPIキーを使って、Sandbox環境で遊んでみましょう

ベーシックGETコール

このチュートリアルでは、APIの呼び出しを行う方法を数種類のPHPスクリプトをコマンドラインで使用しながら具体的にご説明しています。これらすべての例では、以下の定数値を仮定しています。

1#!/usr/bin/python
2# -*- coding: utf-8 -*-
3
4PUBLIC_KEY = 'your public key'
5PRIVATE_KEY = 'your private key'
6URL = 'http://api.sandbox.gengo.com/v2/'
7RESPONSE_TYPE = 'json'
8header = {"Accept": "application/{0}".format(RESPONSE_TYPE)}

言語ペアの読み出し

まずは、単純な呼び出しを行い、翻訳対応している言語ペアのリストを検索します。

 1#!/usr/bin/python
 2# -*- coding: utf-8 -*-
 3
 4from hashlib import sha1
 5import hmac
 6import json
 7import requests
 8import time
 9
10if __name__ == '__main__':
11    PUBLIC_KEY = 'your public key'
12    PRIVATE_KEY = 'your private key'
13
14    URL = "http://api.gengo.com/v2/translate/service/language_pairs"
15    header = {"Accept": "application/json"}
16
17    data = {
18        "api_key": PUBLIC_KEY,
19        "ts": str(int(time.time()))
20    }
21
22    # use your private_key to create an hmac
23    data["api_sig"] = hmac.new(
24        PRIVATE_KEY,
25        data["ts"],
26        sha1
27    ).hexdigest()
28
29    get_language_pair = requests.get(URL, headers=header, params=data)
30    res_json = json.loads(get_language_pair.text)
31
32    if res_json["opstat"] != "ok":
33        msg = "API error occured.\nerror msg: {0}".format(
34            res_json["err"]
35        )
36        raise AssertionError(msg)
37    else:
38        print(res_json)

戻り値

 1{
 2  "opstat": "ok",
 3  "response": [
 4    {
 5      "tier": "standard",
 6      "lc_tgt": "en",
 7      "lc_src": "de",
 8      "unit_price": 0.05,
 9      "currency": "USD"
10    },
11    {
12      "tier": "pro",
13      "lc_tgt": "en",
14      "lc_src": "de",
15      "unit_price": 0.10,
16      "currency": "USD"
17    },
18    ...
19    ...
20    ...,
21    {
22      "tier": "pro",
23      "lc_tgt": "en",
24      "lc_src": "pt-br",
25      "unit_price": 0.10,
26      "currency": "USD"
27    }
28  ]
29}

返ってくる値は、品質レベル (tier) と単価を含む各対応言語ペアに関するデータです。

以上は、Gengoの翻訳APIを通じてデータを検索する方法のごく単純な例です。

ベーシックPOSTコール

今度は、人力翻訳用に案件の注文をいくつか提出してみましょう。Sandbox環境では、ユーザーは仮ポイントを素早く追加して、案件の注文を簡単に提出できるようになっています。まずはログインし、あなたのアカウントに仮ポイントを適宜追加しましょう。

仮ポイントを追加したら、jobs-post.pyのスクリプトの例を開き、フィールドを編集して2件の案件が提出できるようにします。'body_src'フィールドに翻訳用のテキストを適宜追加した後、ソース言語、ターゲット言語、レベルの各パラメータが希望通りであるかを確認しましょう。また、各案件と関連付けるカスタムデータを送信することもできます。これは、あなたに対するサービスに特化したデータで、その他の用途には一切使用されません。カスタムデータは案件がリクエストされるつど、全文そのままがリターンされます。

 1#!/usr/bin/python
 2# -*- coding: utf-8 -*-
 3
 4from hashlib import sha1
 5import hmac
 6import json
 7import requests
 8import time
 9
10if __name__ == '__main__':
11    PUBLIC_KEY = 'your public key'
12    PRIVATE_KEY = 'your private key'
13
14    URL = "http://api.gengo.com/v2/translate/jobs"
15    header = {"Accept": "application/json"}
16
17    data = {
18        "api_key": PUBLIC_KEY,
19        "ts": str(int(time.time()))
20    }
21
22    # use your private_key to create an hmac
23    data["api_sig"] = hmac.new(
24        PRIVATE_KEY,
25        data["ts"],
26        sha1
27    ).hexdigest()
28
29    job1 = {
30        'slug': 'job test 1',
31        'body_src': 'one two three four',
32        'lc_src': 'en',
33        'lc_tgt': 'ja',
34        'tier': 'standard',
35        'auto_approve': 1,
36        'custom_data': 'some custom data untouched by Gengo.',
37    }
38    job2 = {
39        'slug': 'job test 2',
40        'body_src': 'five six seven eight',
41        'lc_src': 'en',
42        'lc_tgt': 'ja',
43        'tier': 'standard',
44        'comment': 'This one has a comment',
45    }
46
47    jobs = {'job_1': job1, 'job_2': job2}
48    data["data"] = json.dumps({'jobs': jobs}, separators=(',', ':'))
49
50    post_job = requests.post(URL, data=data, headers=header)
51    res_json = json.loads(post_job.text)
52
53    if not res_json["opstat"] != "ok":
54        msg = "API error occured.\nerror msg: {0}".format(
55            res_json["err"]
56        )
57        raise AssertionError(msg)
58    else:
59        print(res_json)

"translate/jobs " エントリーポインのドキュメントをご覧いただき、その他にどんなパラメータが利用できるかを確認されることをお勧めします。ただしこの例では、案件のグループ化をオフにしています (そうすると、各案件を異なる翻訳者が担当できます)。

では、この2件の案件を送信してみましょう:

python jobs-post.py

このレスポンスでは、ご注文に関する各種のデータを教えてくれます:

1{
2  "opstat": "ok",
3  "response": {
4    "order_id": 914451,
5    "job_count": 2,
6    "credits_used": 0.40,
7    "currency": "USD"
8  }
9}

案件の post からのレスポンスに含まれる最も重要な情報の1つは order id です。これは、ご注文に関する情報 (注文された各翻訳の案件IDなど) を取り出すときにも必要になります: