手册:语言

From mediawiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Language and the translation is 95% complete.
Outdated translations are marked like this.
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎català • ‎dansk • ‎español • ‎français • ‎polski • ‎português • ‎português do Brasil • ‎svenska • ‎čeština • ‎русский • ‎تۆرکجه • ‎فارسی • ‎پښتو • ‎中文 • ‎日本語 • ‎한국어
i18n文档
另可参见手册:MediaWiki架构#语言(是否应合并至此?)

在MediaWiki中,有各种语言:

  • 网站内容语言$wgContLang ,基于$wgLanguageCode ),只要维基存在,通常应保持不变。
  • 用户界面语言$contextSource->getLanguage(),以前是$wgLang ),可以在您的首选项中更改,或在URL中使用&uselang=xyz,但在使用wiki时通常也应保持不变。
  • 页面内容语言。即使站点和用户语言相同,每个页面也可能不同。它在Title中的getPageLanguage()中定义,表示wiki文本源的编写语言。
    • 页面查看语言又名用户语言变体,它是页面内容语言的语言变体,由用户首选。它也可以通过URL中的&variant(或$wgVariantArticlePath )进行设置(例如,通过选择其中一个选项卡),如果它是页面的内容语言的变体查看。它在标题中的getPageViewLanguage()中定义,表示呈现的HTML内容的语言。

所有这三个都是语言对象

语言代码

不要与维基媒体项目代码混淆,另请参阅元维基上的语言代码

语言代码是MediaWiki支持的语言的有效标准缩写,[1]使用此类代码作为语言的标准标识符(大多数符合ISO 639-3,除了ISO 639-1的“已建立”区域设置的双字母代码)并公开或要求它们接口和代码的许多要点。[2]

在下面的示例中,MediaWiki:Message/arar是العربية的语言代码。

需要使用Unicode标准的一致性来提供良好的语言支持,特别是与CLDR合作,拥有ISO 639-3代码的是要求添加到MediaWiki语言环境的语言

Names.php

Names.php是MediaWiki支持的语言的主注册表。 请注意,这与MediaWiki将显示l10n的语言(JSON文件)或MediaWiki已知名称的语言(通过拓展:CLDR )不同。

备选语言

备选链 (Some of the lines shown are inaccurate due to double languages in the fallback. Check if the connection actually exists in the text version)

MediaWiki中的某些语言具有所谓的“后备序列”。如果MediaWiki无法找到所需的语言,那么这将是另一种语言。这方面的一个例子是语言代码frc(Cajun French),它依赖于语言代码fr(法语)。这样做的原因是有时语言中没有定义所有消息。

语言的后备可以在其关联的languages/messages/MessagesXX.php文件中找到。 例如MessagesFrc.php。您可以搜索所有用途的代码There is also a plain list from 2020-09 in this phabricator comment.

站点内容语言

查看/获取站点语言

JavaScript :

mw.config.get( 'wgContentLanguage' );

用户界面语言

MediaWiki版本:
1.18
默认值
设置通过
  • Special:Preferences
  • &uselang=zxx在URL(见uselang
  • &variant=xy(或$wgVariantArticlePath )在网址如果它是您的用户语言的变体
问题
由于接口消息可能来自后备语言,但未返回语言,因此不知道每条消息的实际语言。

页面内容语言

MediaWiki版本:
1.18
默认值
  • $wgLang在特殊页面上。
  • CSS和JS页面的英文。
  • 对于MediaWiki命名空间页面,该语言取决于子页面。例如,MediaWiki:Message/ar将设置为阿拉伯语(ar),MediaWiki:Message将为$wgContLang。
  • 所有其他页面默认为$wgContLang。
配置
扩展可以通过PageContentLanguage 钩子更改所有其他页面。 无法覆盖特殊页面、CSS、JS和MediaWiki命名空间页面的值。
例子
翻译扩展将其用于页面翻译功能。参见translatewiki:Project:About/ar作为translatewiki:Project:About的翻译。 因此,对于阿拉伯语,页面的方向性被正确地设置为从右到左。
MediaWiki版本:
1.24
手动更改页面语言
自MediaWiki 1.24以来,借助Special:PageLanguage,现在可以实现页面语言选择。
用户可以更改页面的内容语言,默认情况下是默认的Wiki语言($wgContLang)。无法更改MediaWiki名称空间中页面的语言。
需要使用$wgPageLanguageUseDB = true启用该功能,并且需要为pagelang设置权限。
更改页面语言会导致源翻译页面及其单位移动到正确的目标语言。如果目标语言翻译页面已存在,则不允许语言更改。
匹配API可以在API:SetPageLanguage上找到。
它定义了什么?
  • 在SkinTemplate中,它在页面文本周围添加了<div lang="xyz" dir ="ltr/rtl" class="mw-content-ltr/rtl"></div>。dir属性设置正确的写入方向。lang属性将始终是根代码,例如 “de”即使是“de-formal”。
    对于文件页面,它在ImagePage.php中设置,因为有很多用户语言的HTML。
  • 在Parser.php中,它设置目录(TOC)编号和语法之类的东西,尽管大多数情况下并不真正相关。要做到这一点,请使用parserOptions->setTargetLanguage()。
  • diff文本的方向(DifferenceEngine)设置为页面内容语言。在某些情况下,这不相同,在这种情况下可以使用$diffEngineObject->setTextLanguage($code)。
  • 1.19开始,它还设置时间和数字格式魔术字,包括方向标记,但不包括名字空间,因为真的取决于网站语言。请注意,在带有语言B的页面上包含标记为语言A的模板,将在该页面上使用语言B进行解析。
单个页面上的多种语言
理论上不支持单个页面上的多种语言,但这很简单<div lang="xyz" dir="ltr/rtl" class="mw-content-ltr/rtl">标签可用于将文本标记为使用其他语言编写。如果使用CSS类,当dir标记与页面内容语言的值相反时,ul/ol列表和编辑部分将很好地显示。然而,解析器中定义的内容(如TOC和魔术词)不会改变。
查看/获取页面语言
  • JavaScriptmw.config.get( 'wgPageContentLanguage' ):请注意,例如查看页面历史记录,它将返回它是历史记录的页面的页面语言,而历史记录页面没有mw-content-ltr/rtl类。即/wiki/Page和/w/index.php?title=Page&action=history都将返回Page的语言。 1.19+
  • 页面信息视图中提到了页面内容语言(action=info,在工具箱中链接) 1.21+
  • 可以通过api.php?action=query&prop=infoAPI中检索页面内容语言 1.22+

注释

  1. 参见languages/data/Names.php
  2. 尽管如此,截至2012年,语言代码验证尚未解决。见2012年8月28日的NiklasLaxström的MediaWiki语言验证

参见