手册:语言

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Language and the translation is 96% complete.

Other languages:
Deutsch • ‎English • ‎català • ‎dansk • ‎español • ‎français • ‎polski • ‎português do Brasil • ‎čeština • ‎русский • ‎تۆرکجه • ‎فارسی • ‎پښتو • ‎中文 • ‎日本語 • ‎한국어
i18n文档 本地化 · 系统消息 · Messages API · 手册:语言 · translatewiki.net · 书写系统 · 书写方向
另可参见手册:MediaWiki架构#语言(是否应合并至此?)

在MediaWiki中,有各种语言:

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

所有这三个都是语言对象

语言代码

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

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

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

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

Names.php

Names.php is the master registry of languages supported by MediaWiki. This is not the same as languages of which MediaWiki will show l10n (JSON files) nor languages of which MediaWiki knows the names (via CLDR), mind you!

备选语言

备选链

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

语言的后备可以在其关联的languages/messages/MessagesXX.php文件中找到。

Site content language

Viewing/getting the site content language

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 list / ar作为translatewiki:Project list的翻译。 因此,对于阿拉伯语,页面的方向性被正确地设置为从右到左。
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和魔术词)不会改变。
查看/获取页面语言
  • JavaScriptwgPageContentLanguage:请注意,例如查看页面历史记录,它将返回它是历史记录的页面的页面语言,而历史记录页面没有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语言验证

参见