首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用DeepL和DeepL WordPress插件转换特定元素

不使用DeepL和DeepL WordPress插件转换特定元素
EN

Stack Overflow用户
提问于 2021-10-25 21:03:15
回答 1查看 69关注 0票数 0

我希望翻译所有文本,但包含在特定元素中的文本除外,例如:

代码语言:javascript
复制
Please open the page <x>Settings</x> to configure your system.

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

我尝试了一下DeepLApiTranslate$this->request['ignore_tags'],但我不想直接编辑这个插件。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-25 21:20:28

WordPress DeepL插件利用wp_remote_*函数将请求发送到它们的API,因此您可以挂钩到http_request_args过滤器来添加额外的参数。

下面是一个示例:

代码语言:javascript
复制
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应用编程接口端点发送请求时才过滤请求参数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69714745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档