内容翻译

业务场景

  1. 把玩家发言翻译到指定的语言

注意事项

  1. 时间戳与北京时间差距为 ± 5分钟

接口地址

https://cpapi.iyagame.com/v1/content/translate

接口说明

  1. 协议:HTTPS
  2. 方式:POST
  3. ContentType:application/json;charset=utf-8
  4. 请求报文:
字段类型必需参与签名说明
appIdlongSDK的appId
openIdstringSDK用户唯一标识
typeint翻译类型:1:文本
contentstring翻译文本
fromLanguagestring原文本的语种 语言目录
targetLanguagestring目标文本的语种 语言目录
timestamplong毫秒时间戳
signstring签名
  1. 响应报文:
字段类型必需说明
codeint响应状态码
msgstring响应描述
dataobject结果数据

data字段

字段类型必需说明
contentstring指定目标语种翻译后的文本内容

请求示例

{
    "appId": 10070,
    "openId": "12345678912345678912345",
    "type": 1,
    "content": "Hello World!\ntest",
    "targetLanguage": "zh-CN",
    "timestamp": 1742214770340,
    "sign": "29ce30601f0d3c5453fe808585a17d32"
}

响应示例

{
    "code": 0,
    "msg": "Success",
    "data": {
        "content": "你好,世界!\n测试"
    },
    "meta": {
        "tid": "43052b74"
    }
}

签名规则

  1. 参数名区分大小写,按 ASCII 码从小到大排序(字典序)
  2. 只有值为 null 和 参数名不参与签名 的键值对,才不参与签名
  3. 使用 URL 键值对的格式,拼接成待签名字符串,签名 key 在最后拼接,再进行MD5计算
  4. 将生成的签名与入参 sign 值作校验,验签忽略大小写

调试示例

import cn.hutool.crypto.SecureUtil;
import com.google.common.collect.Maps;

import java.util.Map;
import java.util.TreeMap;

public class Sign {

    public static String getMd5Sign(Map<String, Object> params, String appKey) {
        TreeMap<String, Object> sortedParams = new TreeMap(params);
        StringBuilder builder = new StringBuilder(512);
        sortedParams.forEach((k, v) -> {
            if (v != null) {
                builder.append(k).append("=").append(v).append("&");
            }
        });
        builder.append("key=").append(appKey);
        System.out.println(builder);
        return SecureUtil.md5(builder.toString());
    }

    public static void main(String[] args) {
        Map<String, Object> params = Maps.newLinkedHashMap();
        params.put("appId", 10070);
        params.put("openId", "12345678912345678912345");
        params.put("type", 1);
        params.put("content", "Hello World!\ntest");
        params.put("targetLanguage", "zh-CN");
        params.put("timestamp", 1742214770340L);
        String appKey = "AaBbCcDdEeFfGgHh";
        System.out.println(String.format("签名:%s", getMd5Sign(params, appKey)));
    }
}

状态码

状态码说明
0成功
-1失败,常规性错误
10101查询基础信息失败
10102缺少游戏信息
10103请求参数全部为空
10104缺少签名sign
10105签名不正确
10106timestamp已过期
10301翻译失败,具体信息见msg
10302翻译服务请求超时,可重试

附录

大多数语言代码参数与 ISO-639-1(https://en.wikipedia.org/wiki/ISO_639-1) 标识符一致(特别注明的语言代码参数除外)。

语言语言代码(ISO-639-1)
自动识别auto
中文(繁体)zh-TW(BCP-47:https://tools.ietf.org/html/bcp47)
中文(简体)zh-CN(BCP-47:https://tools.ietf.org/html/bcp47)
粤语zh-yue
越南语vi
土耳其语tr
他加禄语(菲律宾语)tl
泰语th
马来语ms
阿尔巴尼亚语sq
瑞典语sv
俄语ru
普什图语ps
葡萄牙语pt
波兰语pl
挪威语no
荷兰语nl
韩语ko
日语ja
意大利语it
印度尼西亚语id
法语fr
西班牙语es
英语en
希腊语el
德语de
阿拉伯语ar
印地语hi
孟加拉语bn
古吉拉特语gu
波斯语fa
乌尔都语ur
马拉地语mr
马拉雅拉姆语ml
泰卢固语te
卡纳达语kn
旁遮普语pa
泰米尔语ta
老挝语lo
高棉语(柬埔寨语)km
缅甸语my
希伯来语he
罗马尼亚语ro
匈牙利语hu
捷克语cs
斯洛伐克语sk
克罗地亚语hr
芬兰语fi
丹麦语da
保加利亚语bg
乌克兰语uk
爱沙尼亚语et
斯洛文尼亚语sl