Manual:Language/zh


 * 另可参见手册:MediaWiki架构#语言（是否应合并至此？）

在MediaWiki中，有各种语言：


 * 网站内容语言（ ，基于 ），只要维基存在，通常应保持不变.
 * 网站内容语言变体（）是为该语言实现时的默认变体.
 * 用户界面语言（$contextSource->getLanguage，以前是 ），可以在您的首选项中更改，或在URL中使用 ，但在使用wiki时通常也应保持不变.
 * 页面内容语言. 即使站点和用户语言相同，每个页面也可能不同. 它在Title中的getPageLanguage中定义，表示wiki文本源的编写语言.
 * 页面查看语言又名用户语言变体，它是页面内容语言的语言变体，由用户首选. 它也可以通过URL中的 （或）进行设置（例如，通过选择其中一个选项卡），如果它是页面的内容语言的变体查看. 它在标题中的getPageViewLanguage中定义，表示呈现的HTML内容的语言.

所有这三个都是语言对象.

语言代码

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

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

在下面的示例中， ， 是语言代码.

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

Names.php
是MediaWiki支持的语言的主注册表. 请注意，这与MediaWiki将显示l10n的语言（JSON文件）或MediaWiki已知名称的语言（通过）不同.

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

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

站点内容语言

 * 查看/获取站点语言



用户界面语言

 * 默认值
 * $contextSource->getLanguage


 * 设置通过


 * Special:Preferences
 * 在URL（见uselang）
 * （或）在网址如果它是您的用户语言的变体


 * 问题
 * 由于接口消息可能来自后备语言，但未返回语言，因此不知道每条消息的实际语言.

页面内容语言

 * 默认值


 * $wgLang在特殊页面上.
 * CSS和JS页面的英文.
 * 对于MediaWiki命名空间页面，该语言取决于子页面. 例如，MediaWiki:Message/ar将设置为阿拉伯语（ar），MediaWiki:Message将为$wgContLang.
 * 所有其他页面默认为$wgContLang.


 * 配置
 * 扩展可以通过钩子更改所有其他页面. 无法覆盖特殊页面、CSS、JS和MediaWiki命名空间页面的值.


 * 例子
 * 翻译扩展将其用于页面翻译功能. 参见translatewiki:Project:About/ar作为translatewiki:Project:About的翻译. 因此，对于阿拉伯语，页面的方向性被正确地设置为从右到左.


 * 手动更改页面语言
 * 自MediaWiki 1.24以来，借助Special:PageLanguage，现在可以实现页面语言选择.
 * 用户可以更改页面的内容语言，默认情况下是默认的Wiki语言（$wgContLang）. 无法更改MediaWiki名称空间中页面的语言.
 * 需要使用 启用该功能，并且需要为 设置权限.
 * 更改页面语言会导致源翻译页面及其单位移动到正确的目标语言. 如果目标语言翻译页面已存在，则不允许语言更改.
 * 匹配API可以在API:SetPageLanguage上找到.


 * 它定义了什么？


 * 在SkinTemplate中，它在页面文本周围添加了 . dir属性设置正确的写入方向. lang属性将始终是根代码，例如 “de”即使是“de-formal”.
 * 对于文件页面，它在ImagePage.php中设置，因为有很多用户语言的HTML.
 * 在Parser.php中，它设置目录（TOC）编号和语法之类的东西，尽管大多数情况下并不真正相关. 要做到这一点，请使用parserOptions->setTargetLanguage.
 * diff文本的方向（DifferenceEngine）设置为页面内容语言. 在某些情况下，这不相同，在这种情况下可以使用$diffEngineObject->setTextLanguage（$code）.
 * 从开始，它还设置时间和数字格式魔术字，包括方向标记，但不包括名字空间，因为真的取决于网站语言. 请注意，在带有语言B的页面上包含标记为语言A的模板，将在该页面上使用语言B进行解析.


 * 单个页面上的多种语言
 * 理论上不支持单个页面上的多种语言，但这很简单 标签可用于将文本标记为使用其他语言编写. 如果使用CSS类，当dir标记与页面内容语言的值相反时，ul/ol列表和编辑部分将很好地显示. 然而，解析器中定义的内容（如TOC和魔术词）不会改变.


 * 查看/获取页面语言


 * JavaScript： ：请注意，例如查看页面历史记录，它将返回它是历史记录的页面的页面语言，而历史记录页面没有mw-content-ltr/rtl类. 即/wiki/Page和/w/index.php?title=Page&action=history都将返回Page的语言.
 * 页面信息视图中提到了页面内容语言（ ，在工具箱中链接）
 * 可以通过api.php?action=query&prop=info在API中检索页面内容语言

参见

 * 多语言MediaWiki
 * 使用魔术字中记录的核心函数 ，可以从代码中获取语言名称.