如何获得我的Wiki的语言?

时间:2016-04-14 12:29:42

标签: php mediawiki multilingual

我得到了一个运行不同语言的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

2 个答案:

答案 0 :(得分:1)

您可以查看window.location.href

var loc = window.location.host;
var userLang = loc.substr(0, loc.indexOf('.'));

这将为您提供en, es, de,具体取决于用户正在使用的子域。

答案 1 :(得分:1)

您正在寻找“网站内容语言”。这不是不是页面语言,并且在您的变体中的所有页面(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)。 (demo

另见:

  • wgDefaultLanguageVariant,用于确定应使用哪种脚本类型,例如中文(简体或繁体)或塞尔维亚语(拉丁语或西里尔语)
  • Manual:Language,有关网页内容语言,网站内容语言和用户语言的更多信息。