如何获取我的Wiki语言


How to get the language of my Wiki?

我得到了一个运行不同语言的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,具体取决于用户正在使用的子域。