Google 翻译 API 是否支持占位符?

Does Google Translate API support placeholders?

假设我想通过 google api 翻译一条推文。

正文:#sf #fiesta #verano #baile #vamos Fiesta aquí @my_friend

我将以下内容发送到 API 端点 https://www.googleapis.com/language/translate/v2:

{1 /} {2 /} {3 /} {4 /} {5 /} Fiesta aquí  {0 /}

这是回复:

{1} {2} {3}} {4} {5}} party over here {0}

这不是我所期望的。但是,我想放入占位符,否则实际的主题标签会被翻译,并且不会指向与原始推文相同的结果。

API docs, so I guess I'm not too surprised that it failed. Maybe they aren't supported. The only thing I've found is this 中没有提到占位符,我不确定它是否相关。

是否有记录在案的方法来使其正常工作?

我刚刚用包含主题标签的文本尝试了 Google 翻译 API,翻译 API 似乎已经处理了 hashtags 以及@ 提及。它不会翻译任何主题标签或 @ 提及。

例子

$ echo '{q: ["#sf #fiesta #verano #baile #vamos Fiesta aquí  @my_friend"], source: "es", target: "en" }' | http --print=bB POST 'https://translation.googleapis.com/language/translate/v2?key=MY_API_KEY'

{
    q: ["#sf #fiesta #verano #baile #vamos Fiesta aquí  @my_friend"],
    source: "es",
    target: "en"
}


{
    "data": {
        "translations": [
            {
                "translatedText": "#sf #fiesta #verano #baile #vamos Party here  @my_friend"
            }
        ]
    }
}

跳过部分文本的翻译

如果您想要 a piece of text to not be translated,可以将其包含在 <span class="notranslate">CONTENT_NOT_TO_BE_TRANSLATED</span> 中。然后,您应该能够使用一些简单的正则表达式模式替换操作将结果中的所有此类跨度块替换为内容。

$ echo '{q: ["#sf #fiesta #verano #baile #vamos <span class=\"notranslate\">Fiesta</span> aquí    @my_friend"], source: "es", target: "en" }' | http --print=bB POST 'https://translation.googleapis.com/language/translate/v2?key=MY_API_KEY'

{
    q: ["#sf #fiesta #verano #baile #vamos <span class=\"notranslate\">Fiesta</span> aquí    @my_friend"],
    source: "es",
    target: "en"
}


{
    "data": {
        "translations": [
            {
                "#sf #fiesta #verano #baile #vamos <span class=\"notranslate\">Fiesta</span> here  @my_friend"
            }
        ]
    }
}