不要使用 DeepL 和 DeepL WordPress 插件翻译特定元素
Do not translate specific elements with DeepL and DeepL WordPress plugin
我想翻译所有文本,特定元素中包含的文本除外,例如:
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 参数。
为了 DeepLApiTranslate
,我使用了 $this->request['ignore_tags']
,但我不想直接编辑插件。
我应该如何处理这个/我应该使用的任何钩子?
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 端点。
我想翻译所有文本,特定元素中包含的文本除外,例如:
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 参数。
为了 DeepLApiTranslate
,我使用了 $this->request['ignore_tags']
,但我不想直接编辑插件。
我应该如何处理这个/我应该使用的任何钩子?
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 端点。