内容翻译
业务场景
- 把玩家发言翻译到指定的语言
注意事项
- 时间戳与北京时间差距为 ± 5分钟
接口地址
https://cpapi.iyagame.com/v1/content/translate
接口说明
- 协议:HTTPS
- 方式:POST
- ContentType:application/json;charset=utf-8
- 请求报文:
字段 | 类型 | 必需 | 参与签名 | 说明 |
---|---|---|---|---|
appId | long | 是 | 是 | SDK的appId |
openId | string | 是 | 是 | SDK用户唯一标识 |
type | int | 是 | 是 | 翻译类型:1:文本 |
content | string | 是 | 是 | 翻译文本 |
fromLanguage | string | 否 | 是 | 原文本的语种 语言目录 |
targetLanguage | string | 是 | 是 | 目标文本的语种 语言目录 |
timestamp | long | 是 | 是 | 毫秒时间戳 |
sign | string | 是 | 否 | 签名 |
- 响应报文:
字段 | 类型 | 必需 | 说明 |
---|---|---|---|
code | int | 是 | 响应状态码 |
msg | string | 是 | 响应描述 |
data | object | 是 | 结果数据 |
data字段
字段 | 类型 | 必需 | 说明 |
---|---|---|---|
content | string | 是 | 指定目标语种翻译后的文本内容 |
请求示例
{
"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"
}
}
签名规则
- 参数名区分大小写,按 ASCII 码从小到大排序(字典序)
- 只有值为 null 和 参数名不参与签名 的键值对,才不参与签名
- 使用 URL 键值对的格式,拼接成待签名字符串,签名 key 在最后拼接,再进行MD5计算
- 将生成的签名与入参 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 | 签名不正确 |
10106 | timestamp已过期 |
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 |