关于API V2

如果使用API V2版本的SDK,会出现内容字符数超过5K(1024*5),没法翻译的问题,报错:Your client has issued a malformed or illegal request. <ins>That’s all we know.</ins>,也就是说如果用V2版本的SDK没法翻译长文本,在官方文档中对应的是base版本。

API V3

API V3版本长度虽然也有限制,但是最大可以提交30KB,绝大部分场景够用,但是这里会产生两个问题。

第一种情况是,翻译代码片段的时候,如果手动把需要翻译的代码片段部分利用正则替换成<span class="notranslate">--key--</span>,然后本地把响应的标记key以及对应的代码段缓存成为map,然后翻译好后传递回来的数据再进行手动替换,则会导致一种情况:虽然来说,对不需要翻译的部分标记了notranslate,虽然这部分标签不翻译,会保留,但是某些情况下,这个标记不翻译部分的<span>标签中定义的key部分,会作为一段纯文本插入翻译后的程序某个部分,然后需要手动根据具体情况,而且这种情况有时候还可能不可预料。

另外一种情况是,实际上本身VPI V3接口不会对<code>部分内容做翻译,但是会导致原本<code>中的换行丢失,最后饭回来的翻译内容就是一堆毫无任何格式的内容,看起来乱七八糟的。如果不采用第一种标记的形式,直接扔给谷歌翻译的话,需要在提交翻译前,对需要翻译的内容中的换行符,也就是\n进行替换为<br>,当然这个\n在windows下可能会是\r\n

以上针对谷歌翻译SDK的两个版本以及三个情况的总结,基本上如果需要使用谷歌翻译的人都会遇到,但是在找资料的时候,实际上没有太多相关资料,处理起来比较麻烦还费事。留这篇文章以做总结,希望后来者遇到相关的情况无法着手的时候,可以提供一定的参考。

字符转义

会把 _ 转义成\_,需要手动转回来,strings.ReplaceAll(golang)str_replace(PHP)


kumfo
6.7k 声望4.1k 粉丝

程序生存法则: