这个问题似乎非常简单,但几个小时的谷歌搜索没有结果。以下是基本要点:
I am building a site for Japanese viewers, and am using the theme\'s language folder to replace certain text (e.g. "Read More" and "Older Entries") with Japanese text. 当我在管理中将WP语言设置为日语时,它工作得很好;然而,这样做将意味着永远不会显示英文版本。我觉得奇怪的是,WP允许我以用户为基础为管理员做这件事,而不是以系统语言为基础为面向公众的网站做这件事。
What I\'m looking for is a solution that utilizes gettext and/or text domain to serve translated content only to those whose system language is set to Japanese, rather than a plugin solution. 坦率地说,当数据已经由我自己在主题中进行了有机翻译时,我不认为使用翻译插件有什么意义。采购订单和。mo文件。
请注意,博客帖子已经是日文的,网站的客户群也将是日文的,因此没有必要通过添加翻译插件来增加数据库的开销。对于没有将语言设置为日语的任何人来说,显示默认(英语)文本非常方便。之前,我使用JS来替换所需的字符串,但这当然是我希望避免的不受欢迎的黑客行为。
***我意识到,在一个完全不同语言的帖子归档列表中提供英语似乎很愚蠢;但我可以看到这还有其他实际应用,某种解决方案可能会在将来帮助其他人。我还为亚洲国家的客户做了大量工作,更好地了解如何在更广泛的范围内实现这一目标将是有益的。
任何帮助都将不胜感激!
SO网友:Milan Petrovic
PHP可以从浏览器请求中读取“HTTP\\u ACCEPT\\u LANGUAGE”标头,但如果有多个接受的语言集,则可能不容易解析。对于最简单的情况,当一种语言设置为可接受时,您只需要读取此标题中的前2个字符:
$language = substr($_SERVER[\'HTTP_ACCEPT_LANGUAGE\'], 0, 2);
但是,大多数WordPress语言字符串都比这复杂(英语的变体很少,有些语言也有很多变体),因此需要将两个字母的语言代码转换为WordPress语言代码。
此外,请求中可能根本不包括HTTP\\U ACCEPT\\u语言,这取决于浏览器。