关于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)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。