如何获取我的 Wiki 的语言?

How to get the language of my Wiki?

我设置了 Wiki 运行 不同的语言,如下所示:

现在我需要为社交按钮挂钩获取不同的语言。它需要根据语言而有所不同。

到目前为止,我在 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

您可以检查 window.location.href:

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

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

您正在寻找“网站内容语言”。这 不是 页面语言,并且通常在您的变体的所有页面中都是相同的(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,有关页面内容语言、站点内容语言和用户语言的更多信息。