コンテンツにスキップ

自動翻訳API

自動翻訳APIは、翻訳タイプと翻訳者を簡単に設定できるAPIです。リアルタイムの同期翻訳と非同期翻訳の両方をサポートし、柔軟な翻訳環境を提供します。

自動翻訳APIには2種類あります:

同期翻訳APIはリアルタイム翻訳を可能にし、非同期翻訳リクエストAPIはリアルタイム翻訳を許可せず、非同期翻訳結果確認APIがあります。

ノート

サポートされているテキスト形式

同期翻訳APIおよび非同期翻訳APIでサポートされているテキスト形式は次のとおりです。

  • 同期翻訳API: プレーンテキストとHTMLフォーマットをサポート
  • 非同期翻訳API: マークダウン形式をサポート

プロジェクトマッチング方法

自動翻訳APIは、App Centerに登録された各ゲームプロジェクトに対して翻訳サービスをマッチングする2つの方法を提供します。

  • 1:1 マッチングと自動翻訳サービス: 各プロジェクトで使用されるサービスを登録する
  • 自動翻訳サービスを呼び出すときは、一致させるためにプロジェクトIDを入力します: 各プロジェクトIDを追加してAPIを呼び出します

翻訳サポート言語

Hive プラットフォームでは、合計16の翻訳言語がサポートされています。

言語 言語特有の表記 言語コード
韓国語 Korean ko
英語 English en
日本語 日本語 ja
簡体字中国語 简体中文 zh-hans
繁体字中国語 繁體中文 zh-hant
フランス語 Français fr
ドイツ語 Deutsch de
ロシア語 русский ru
スペイン語 Español es
ポルトガル語 Português pt
インドネシア語 Bahasa Indonesia id
ベトナム語 tiếng Việt vi
タイ語 ไทย th
イタリア語 Italiano it
トルコ語 Türkçe tr
アラビア語 العربية ar

前提条件

自動翻訳APIを使用するための前提条件は以下の通りです。

1. サービスキー(appKey)とシークレットキーを確認する

  1. Hive コンソール > AI サービス > 自動翻訳 > 自動翻訳システム > サービス管理でサービスを登録します。
  2. 製品のサービスキー(旧アプリキー)とシークレットキーを確認してください。

2. シグネチャの確認

APIサーバーのバックオフィスは、サービスキーとシークレットキーを使用してシグネチャを生成します。

Hive コンソール > AI サービス > 自動翻訳 > 自動翻訳システム > サービス管理 でキー管理を選択して、生成された署名を確認してください。生成された署名コードの例は以下の通りです。

※ 署名は、アプリキーと暗号化キーを使用してHmacSHA256でエンコードされたBase64値です。

import hmac
import hashlib
import base64

app_key = "your_app_key"
secret_key = "your_secret_key"

# HMAC SHA-256を使用する
signature_bytes = hmac.new(secret_key.encode('utf-8'), app_key.encode('utf-8'), hashlib.sha256).digest()
signature = base64.b64encode(signature_bytes).decode('utf-8')

# HTTPリクエストに署名を追加
# ...
public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException {
String appKey = "your_app_key";
String secretKey = "your_secret_key";

// HMAC SHA-256を使用します
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
sha256_HMAC.init(secretKeySpec);

// 署名を作成する
byte[] signatureBytes = sha256_HMAC.doFinal(appKey.getBytes(StandardCharsets.UTF_8));
String signature = Base64.getEncoder().encodeToString(signatureBytes);

// HTTPリクエストに署名を追加
// ...
}

同期翻訳API

翻訳リクエストと翻訳結果を1つのAPIリクエストおよびレスポンスとしてリアルタイムで同期的に処理します。 翻訳結果はAPIレスポンスに直接提供されるため、翻訳結果を確認するためのAPIはありません。

これは、前処理や後処理を必要としないプレーンテキストおよびHTMLテキスト形式をサポートする同期翻訳テキストタイプです。

リクエストURL

ライブURL https://ats.withhive.com/api/translate/Sync https://ats.withhive.com/api/translate/sync/{project_id}
HTTPメソッド POST
コンテンツタイプ application/json
データ形式 JSON

リクエストパス

フィールド名 説明 タイプ 必須かどうか 詳細
project_id アプリセンタープロジェクトID 文字列 N 1. 値がある場合: プロジェクトIDで集計する 2. 値がない場合: “なし”で集計 com.com2us.project1

リクエストヘッダー

フィールド名 説明 タイプ 必須かどうか 詳細
署名 認証のための署名値 文字列 はい 秘密鍵を使用してアプリキーの値をHmacSHA256でエンコードした値 IWusOMIBN8D/0HqgZ7/58e4rgS05E+nka3Ya9vc+yiY=

リクエストボディ

フィールド名 説明 タイプ 必須かどうか 詳細
info アプリキー情報オブジェクト オブジェクト はい
info > app_key アプリキー値 文字列 はい 802890479467404e
info > meta_data 自動翻訳サービスによって集約されない値ですが、ログとして保存されます オブジェクト いいえ JSONオブジェクト文字列を変換する際、1kb以内 {“game” : “MLB”} または [{“key1”:“blabla”}]
text 翻訳リクエスト内容 文字列 はい ※ 文字列JSONエスケープが必要 “登録手続きについての問い合わせ”
from 翻訳リクエストの言語 文字列 はい “text”に対応する言語コード 翻訳サポート言語および言語コード参照 ※ “auto”を入力すると、自動検出(小文字) 1. (自動検出)“auto” 2. (韓国語)“ko”
to 翻訳応答言語 文字列 Y 複数の言語を“,”で区切ってリクエストできます。 翻訳サポート言語と言語コードの参照 1. (単一言語翻訳)“en” 2. (多言語翻訳)“en, fr, de"

応答

フィールド名 説明 タイプ 詳細
result 結果値 オブジェクト
result > code 結果コード 整数 レスポンスコードの参照 成功した場合は'200'
result > msg 結果メッセージ 文字列 レスポンスコードの参照 成功した場合は'成功'
content 翻訳結果 オブジェクト
content > data > translateMsg 翻訳値の配列 配列
content > data > translateMsg > detectedLanguage 入力言語に関連する値 オブジェクト ※「翻訳リクエスト言語(from)」が「自動」の場合に存在
content > data > translateMsg > detectedLanguage > language 入力言語検出値 文字列 翻訳サポート言語および言語コードの参照
content > data > translateMsg > detectedLanguage > score 入力言語検出スコア(1に近いほど正確) 数値(浮動小数点) 1.0
content > data > translateMsg > translations 翻訳されたテキストの配列 配列 言語ごとに配列として公開
content > data > translateMsg > translations > text 翻訳されたテキスト 文字列 Jsonエスケープ文字列 「登録」プロセスに関する問い合わせ
content > data > translateMsg > translations > to 翻訳言語の国コード 文字列 "en"

レスポンスコード

コード テキスト ノート
200 "成功" 成功
400 <> が欠落しているか 不正なリクエスト 失敗 - リクエストパラメータが欠落していますか 失敗 - 解析不可能 (JSONエラー)
401 署名が間違っています 失敗 - 署名キーエラー
404 未登録のアプリキー 失敗 - 未登録のアプリキー
404 未登録のジョブUUID 失敗 - 未登録のジョブUUID
500 内部サーバーエラー (または何らかのメッセージ) 失敗 - 内部サーバーエラー

リクエストの例

    curl --request POST \
    --url https://ats.withhive.com/api/translate/sync \
    --header 'Content-Type: application/json' \
    --header 'Signature: IWusOMIBN8D/0HqgZ7/58e4rgS05E+nka3Ya9vc+yiY=' \
    --data '{
        "info":{
                "app_key":"802890479467404e"
        },
        "text": "サーバーアカウント申請アカウント作成多言語コンテンツ管理手続きの問い合わせ",
        "to":"en,fr,de",
        "from": "ko"
        }'
    import requests

    url = "https://ats.withhive.com/api/translate/sync"

    payload = {
            "info": {"app_key": "802890479467404e"},
            "text": "サーバーアカウント申請アカウント作成多言語コンテンツ管理手続きのお問い合わせ",
            "to": "en,fr,de",
            "from": "ko"
    }
    headers = {
            "Content-Type": "application/json",
            "Signature": "IWusOMIBN8D/0HqgZ7/58e4rgS05E+nka3Ya9vc+yiY="
    }

    response = requests.request("POST", url, json=payload, headers=headers)

    print(response.text)
    OkHttpClient client = new OkHttpClient();

    MediaType mediaType = MediaType.parse("application/json");
    RequestBody body = RequestBody.create(mediaType, "{\n    \"info\":{\n        \"app_key\":\"802890479467404e\"\n    },\n    \"text\":\"サーバーアカウントアプリケーションアカウント作成に関する多言語コンテンツ管理手続き\",\n    \"to\":\"en,fr,de\",\n    \"from\" : \"ko\"\n}");
    Request request = new Request.Builder()
        .url("https://ats.withhive.com/api/translate/sync")
        .post(body)
        .addHeader("Content-Type", "application/json")
        .addHeader("Signature", "IWusOMIBN8D/0HqgZ7/58e4rgS05E+nka3Ya9vc+yiY=")
        .build();

    Response response = client.newCall(request).execute();

応答の例

    {
    "result" : {
    "code" : 200,
    "msg" : "Success"  
    },
    "content" : {
        "data" : {
            "translateMsg":[{
                "detectedLanguage":{
                    "language":"ko",
                    "score":-1.0
                },
                "translations":[{
                        "text":"Server Account Application Create an account Inquiries about the multilingual content management process",
                        "to":"en"
                    },
                    {
                        "text":"Demande de compte serveur Créer un compte Demandes de renseignements sur le processus de gestion de contenu multilingue",
                        "to":"fr"
                    },
                    {
                    "text":"Server-Konto-Anwendung Konto erstellen Anfragen zum mehrsprachigen Content-Management-Prozess",
                    "to":"de"
                }]
            }]
        }
    }
  }

非同期翻訳リクエストAPI

非同期翻訳APIは、翻訳リクエストと翻訳レスポンスの2つのAPIに分かれています。それは次のように処理されます。 リクエストに対応する「非同期翻訳リクエストAPI」と、レスポンスに対応する「非同期翻訳結果確認API」があります。

これは同期翻訳テキストタイプであり、前処理/後処理を必要とするMarkdownテキスト形式をサポートしています。

リクエストURL

ライブURL https://ats.withhive.com/api/translate/async https://ats.withhive.com/api/ translate/async/{project_id}
HTTPメソッド POST
コンテンツタイプ application/json
データ形式 JSON

リクエストパス

フィールド名 説明 タイプ 必須かどうか 詳細
project_id アプリセンタープロジェクトID 文字列 はい 1. 値がある場合: プロジェクトIDで集計 2. 値がない場合: “なし” 集計 com.com2us.project1

リクエストヘッダー

フィールド名 説明< /th> タイプ 必須 詳細
署名 認証のための署名値 文字列 はい アプリケーションキーの値を秘密鍵を使用してHmacSHA256でエンコードします 一つの値 pczeZ91N/ijDBZ80ktNdTDPhnmEK98a3AIsTui46o9c=

リクエストボディ

フィールド名 説明< /th> タイプ 必須 詳細
info アプリキー情報オブジェクト オブジェクト はい
info > app_key アプリキーの値 文字列 はい 802890479467404e
info > meta_data 自動翻訳サービスによって集約されず、ログ値として保存される オブジェクト いいえ JSONオブジェクト文字列を変換する際、1kb以内 {“game” : “MLB”} または [{“key1”:“blabla”}]
text 翻訳リクエスト内容 文字列 はい ※ 文字列のJSONエスケープが必要 “「登録」手続きについての問い合わせ”
from 翻訳リクエスト言語 文字列 はい “text”に対応する言語コード 翻訳サポート言語と言語コードの参照 ※ 非同期翻訳 翻訳リクエストの自動言語検出はサポートされていません。
to 翻訳応答言語 文字列 Y 複数の言語リクエストは「,」で区切って行うことができます 翻訳サポート言語と言語コードの参照 1. (単一言語翻訳) “en” 2. (多言語翻訳) “en , fr, de"

応答

フィールド名 説明 タイプ 詳細
result 結果値 オブジェクト
result > code 結果コード 整数 レスポンスコードの参照 '200' は成功
result > msg 結果メッセージ 文字列 レスポンスコードの参照 '成功' は成功
content 翻訳結果値 オブジェクト
content > uuid 翻訳結果ID 文字列 UUID4形式のID 翻訳ステータスを確認するためのID 62fe5786-0bb8-4cd0-b51a-6d6f6bfe2bac
content > resultUrl 翻訳ステータスを確認するためのURL 文字列 https:///api/translate/async/result/{uuid}

レスポンスコード

コード テキスト ノート
200 "成功" 成功
400 <> が欠落しているか 不正なリクエスト 失敗 - リクエストパラメータが欠落していますか 失敗 - 解析できません (JSONエラー)
401 署名が間違っています 失敗 - 署名キーエラー
404 未登録のアプリキー 失敗 - 未登録のアプリキー
404 未登録のジョブUUID 失敗 - 未登録のジョブUUID
500 内部サーバーエラー (または何らかのメッセージ) 失敗 - サーバー内部エラー

リクエストの例

    curl --request POST \
    --url https://ats.withhive.com/api/translate/async \
    --header 'Content-Type: application/json' \
    --header 'Signature: pczeZ91N/ijDBZ80ktNdTDPhnmEK98a3AIsTui46o9c=' \
    --data '{
        "info":{
                "app_key":"815e3d8d6e7443ba"
        },
        "text":"# マークダウン チートシート ......",
        "to":"ko,ja,zh-hant",
                "from":"en"
    }'
    import requests

    url = "https://ats.withhive.com/api/translate/async"

    payload = {
            "info": {"app_key": "815e3d8d6e7443ba"},
            "text": "# マークダウン チートシート ......",
            "to": "ko,ja,zh-hant",
            "from": "en"
    }
    headers = {
            "Content-Type": "application/json",
            "Signature": "pczeZ91N/ijDBZ80ktNdTDPhnmEK98a3AIsTui46o9c="
    }

    response = requests.request("POST", url, json=payload, headers=headers)

    print(response.text)
    OkHttpClient client = new OkHttpClient();

    MediaType mediaType = MediaType.parse("application/json");
    RequestBody body = RequestBody.create(mediaType, "{\n    \"info\":{\n        \"app_key\":\"815e3d8d6e7443ba\"\n    },\n\t\"text\":\"# マークダウン チートシート 
    ......\",\n    \"to\":\"ko,ja,zh-hant\",\n\t\t\"from\":\"en\"\n}\n");
    Request request = new Request.Builder()
        .url("https://ats.withhive.com/api/translate/async")
        .post(body)
        .addHeader("Content-Type", "application/json")
        .addHeader("Signature", "pczeZ91N/ijDBZ80ktNdTDPhnmEK98a3AIsTui46o9c=")
        .build();

    Response response = client.newCall(request).execute();

応答の例

{
    "result": {
        "code": 200,
        "msg": "Success"
    },
    "content": {
        "uuid": "d2a36ba1-1bb3-43aa-ac57-46576d27eb37",
        "resultUrl": "https://test-ats.withhive.com/api/translate/async/result/d2a36ba1-1bb3-43aa-ac57-46576d27eb37"
    }
 }

非同期翻訳結果確認API

非同期翻訳結果確認APIは、非同期翻訳リクエストの翻訳結果を返します。言い換えれば、リクエストとレスポンスを別々に処理する非同期APIの応答に対応するAPIです。

リクエストURL

ライブURL https://ats.withhive.com/api/translate/async/result/{uuid}
HTTPメソッド GET

リクエストパス

フィールド名 説明 タイプ 必須かどうか 詳細
uuid 翻訳結果ID、非同期翻訳リクエストのステータス応答値 文字列 Y 作成から~N日まで確認 5c8ded49-9ee2-412a-a0ab-a4018a0dc093

リクエストヘッダー

フィールド名 説明 タイプ 必須かどうか 詳細
署名 認証のための署名値 文字列 はい 秘密鍵を使用してHmacSHA256でエンコードされたアプリキー値 pczeZ91N/ijDBZ80ktNdTDPhnmEK98a3AIsTui46o9c=

応答

フィールド名 説明 タイプ 詳細
result 結果値配列 オブジェクト
result > code 結果コード 整数 レスポンスコードの参照 成功の場合は'200'
result > msg 結果メッセージ 文字列 レスポンスコードの参照 成功の場合は'Success'
content 翻訳結果 オブジェクト
content 翻訳結果 オブジェクト
content > status 翻訳ステータス値 オブジェクト 翻訳ステータス情報
content > status > code 翻訳ステータスコード 整数 100 / 101 / 102 / 199
content > status > mag 翻訳ステータスメッセージ 文字列 “completed(100)”/ “waiting(101)” / “processing(102)” / “failed(199)”
content > data 翻訳結果値 オブジェクト ※ result>status>msgの値が “waiting” / “processing” / “failed”の場合、フィールドは存在せず、 “completed”の場合のみ存在します
content > data > translateMsg 翻訳値配列 配列
content > data > translateMsg > translations 翻訳テキストの配列 配列 言語ごとに配列として公開されます
content > data > translateMsg > translations > text 翻訳テキスト 文字列 Jsonエスケープ文字列 「登録」プロセスに関する問い合わせ
content > data > translateMsg > translations > to 翻訳言語国コード 文字列 "en"

応答コード

コード テキスト ノート
200 "成功" 成功
400 <> が欠落していますまたは 不正なリクエスト 失敗 - リクエストパラメータが欠落していますまたは 失敗 - パースできませんでした (JSONエラー)
401 署名が間違っています 失敗 - 署名キーエラー
404 未登録のアプリキー 失敗 - 未登録のアプリキー
404 未登録のジョブUUID 失敗 - 未登録のジョブUUID
500 内部サーバーエラー (または何らかのメッセージ) 失敗 - 内部サーバーエラー

リクエストの例

    curl --request GET 
    --url https://test-ats.withhive.com/api/translate/asyncresult/3f8891e9-513a-4e91-b0b6-ac9aabbbf6d2 
    --header 'Content-Type: application/json' 
    --header 'Signature: pczeZ91NijDBZ80ktNdTDPhnmEK98a3AIsTui46o9c='
import requests

url = "https://ats.withhive.com/api/translate/async/result/3f8891e9-513a-4e91-b0b6-ac9aabbbf6d2"

headers = {
        "Content-Type": "application/json",
        "Signature": "pczeZ91N/ijDBZ80ktNdTDPhnmEK98a3AIsTui46o9c="
}

response = requests.request("GET", url, headers=headers)

print(response.text)
OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
    .url("https://ats.withhive.com/api/translate/async/result/3f8891e9-513a-4e91-b0b6-ac9aabbbf6d2")
    .get()
    .addHeader("Content-Type", "application/json")
    .addHeader("Signature", "pczeZ91N/ijDBZ80ktNdTDPhnmEK98a3AIsTui46o9c=")
    .build();

Response response = client.newCall(request).execute();

応答の例

{
    "result": {
            "code": 200,
            "msg": "Success"
    },
    "content": {
            "status": {
                    "code": 100,
                    "msg": "completed"
            },
            "data": {
                    "translateMsg": [
                            {
                                    "translations": [
                                            {
                                                    "text": "# Markdown 치트 시트\r\n\r\n......",
                                                    "to": "ko"
                                            },
                                            {
                                                    "text": "# Markdownチートシート\r\n\r\n......",
                                                    "to": "ja"
                                            },
                                            {
                                                    "text": "# Markdown 備忘單\r\n\r\n......",
                                                    "to": "zh-hant"
                                            }
                                    ]
                            }
                    ]
            }
    }
}