不要用DeepL和DeepL WordPress插件翻译特定的元素



我想翻译所有文本,除了那些包含在特定元素中的文本,例如:

Please open the page <x>Settings</x> to configure your system.

DeepL应该翻译除<x>元素内的项之外的所有内容。我在这里阅读了文档,https://www.deepl.com/docs-api/handling-xml/ignored-tags/并尝试寻找,但似乎找不到适当的钩子来添加ignore_tags参数。

我玩了$this->request['ignore_tags'],为DeepLApiTranslate,但我宁愿不直接编辑插件。

我应该如何处理这个/任何我应该使用的钩子?

WordPress DeepL插件利用wp_remote_*函数发送请求到他们的api,所以你可以挂钩到http_request_args过滤器添加额外的参数。

下面是一个例子:

add_filter(
'http_request_args',
static function ( array $parse_args, string $url ): array {
$method = $parse_args['method'] ?? '';
if ( $method === 'POST' && str_starts_with( $url, 'https://api.deepl.com/v2/translate' ) ) {
$body = (string) ( $parse_args['body'] ?? '' );
parse_str( $body, $results );
$results['ignore_tags'] = 'x';
$parse_args['body'] = http_build_query( $results );
}
return $parse_args;
},
10,
2
);

请注意,代码假设您的站点在PHP8上运行,因为它使用str_starts_with来确保它只在向DeepL API端点发送请求时过滤请求参数。

相关内容

  • 没有找到相关文章

最新更新