我得到了一个运行不同语言的Wiki设置,比如:
es.myWiki.org
de.myWiki.org
en.myWiki.org
现在我需要为社交按钮挂钩获取不同的语言。它需要根据语言而有所不同。
到目前为止,我在customSkin.php
:中使用这样的JS
var userLang = navigator.language || navigator.userLanguage;
if (userLang == "en-US") {
userLang = "en_US";
} else if (userLang == "de-DE") {
userLang = "de_DE";
} else if (userLang == "es-ES") {
userLang = "es_ES";
};
如果有人使用德语浏览器,但用英语查看页面,我显然有问题。如何检测我的Wiki语言?
我的设置使用一个localsettings.php
。
您正在寻找"站点内容语言"。这是而不是页面语言,并且通常在变体中的所有页面上都是相同的(es
代表es.myWiki.org
等),无论用户的语言设置如何。换句话说,在es.myWiki.org/aPage?uselang=en
上,它仍然是es
。
前端
var contentLang = mw.config.get( 'wgContentLanguage' );
后端
global $wgLanguageCode;
// do something with $wgLanguageCode
API
查询api.php?action=query&meta=siteinfo
以获取例如网站内容语言的数据(在query.general.lang
中)。(演示)
另请参阅:
- wgDefaultLanguageVariant,用于确定应使用何种脚本变体,例如中文(简体或繁体)或塞尔维亚语(拉丁或西里尔)
- 手册:语言,了解更多页面内容语言,网站内容语言和用户语言
您可以检查window.location.href
:
var loc = window.location.host;
var userLang = loc.substr(0, loc.indexOf('.'));
这将为您提供en, es, de
,具体取决于用户正在使用的子域。