__() 如何决定使用哪种语言(WordPress)

How does __() decide which language to use (WordPress)

我在 WordPress 主题模板中使用 __("english text", "textdomain")

网站的基本语言是英语。

我已成功为德语添加 .pot 文件。

如果我在“设置”中将语言设置为德语,则前端的德语翻译没问题。

我正在尝试实现一种语言 select 或者,因此在前端网站访问者可以 select 一种语言。

我认为这只是在 html 标签中适当设置 lang 属性的情况。所以当用户 select 是德语时,我输出 <html lang="de-DE">。但仍然 __() 使用 WordPress 管理设置中的语言。

我想我处理这个问题的方式是错误的。 __() 是否只使用 WP Admin 中设置的语言?或者我可以根据前端的访问者 select 强制它使用不同的翻译文件吗?

谢谢。

您可能需要使用 WordPress 过滤器语言环境 https://developer.wordpress.org/reference/hooks/locale/

您可以在 function.php

中执行类似的操作
//set desired locale
add_filter( 'locale', function($locale) {
    if ( !is_admin() ) 
        $locale = "de-DE";
    return $locale;
});