方向性支持

其他语言:
英语 • ‎蒂尔克çe • ‎法国 • ‎葡萄牙语 • ‎русский • ‎العربية • ‎中文 • ‎日本語

支持不同写作 方向(从左到右,从右到左)是多语言软件的一个重要方面MediaWiki 1.18版 ,支撑得到了很大的改善。

本页提供了一些相关信息,并为开发人员和wiki管理员提供了一些指导原则,如果您希望使一个特性或扩展与从右向左的界面和不同的方向性兼容。

用户级提示编辑

在为开发人员提供详细信息之前,请向用户提供一些一般提示:

  • 大多数浏览器支持更改纯文本编辑区域的方向,如文章搜索框、wiki语法编辑、编辑摘要等。根据浏览器和操作系统的不同,可以通过Ctrl-Shift(Windows上的Chrome和IE)、Ctrl-Shift-X(Firefox)和Option Click Change direction(Mac)来完成。这将有助于你键入一个不同于网站通常方向的方向。
  • 使用与站点方向不同的语言键入节时,请添加一个具有适当lang、dir和class属性的div标记。例如,在阿拉伯语维基百科中键入英语部分时,键入<div lang=“en”dir=“ltr”class=“mw content ltr”>一开始</div>最后。
  • 在里面输入几个字<span>在具有适当属性的lang和dir。(许多wiki都有这样的模板,比如{{lang}})。
  • 要从具有不同方向性的相邻单词中分离数字,请使用RLM或LRM字符。许多wiki都有这样的模板,例如希伯来语Wikipedia中的{{1499}}},阿拉伯语Wikipedia中的{RLM}},波斯语Wikipedia中的{{RLM}},等等。当模板可用时,通常更倾向于使用Unicode字符本身。

您可以使用RTL标记在任何与MediaWiki相关的项目的Phabricator中报告RTL处理中的错误。

资源加载器编辑

多亏了资源加载器包括CSSJanus公司,当用户语言为RTL时,CSS会自动从右向左翻转。这是自1.18以来的默认设置(在以前的版本中是依赖于wiki内容的语言). 很少有CSS必须依赖于内容语言。

  • 注意:使用ResourceLoader的调试模式,与生产模式相比,CSS可能呈现不一致。在调试关闭的情况下,作为测试RTL接口的临时工作。(问题被跟踪为汽化器:T29025.)

什么样的语言?编辑

主要文章:图谱:语言

  • $wgLang-用户语言(以及各自的方向)
  • $wgContLang-站点内容语言(和各自的方向)->此处为LTR
  • Title->getPageLanguage()-页面内容语言(以及各自的方向)->默认情况下与站点内容语言相同
    • 请参见下面的一些例外情况
    • 它可以通过钩子在延伸部分设置页面内容语言
    • 这就设置了TOC(和语法之类的东西,尽管大部分不是真正相关的)。只需使用parserOptions->setTargetLanguage()
  • 在应该与1.17兼容的扩展中,可以使用wfilang(),但这会破坏与1.16及以下版本的兼容性。$lang在wg.1中返回$lang,但默认为$17.1。

应该遵循哪种类型?编辑

  • 默认情况下,特殊页面遵循用户语言。
  • 源代码应该是英语(CSS/JS页面默认设置为英语)。
  • 带有翻译子页面的页面应遵循翻译语言(例如,“Page”是wgContLang,“Page/he”是“he”)。这是MediaWiki命名空间的默认值。
  • 默认情况下,输入框和文本区域遵循内容方向。
  • 查看diff时,它遵循用户语言,但实际的diff文本是页面内容语言。
方向性可能令人困惑,但你可以观察狗屎linux.conf.au题为“等等”的谈话?tahW:从右到左语言支持的扭曲之路“以更好地理解所涉及的问题和解决方案。

我应该在源代码中添加什么?编辑

  • 任何与用户语言不同的特殊页面上的内容都应该具有<div dir=“…”lang=“…”>标签。
    示例:SpecialRecentchanges->setTopText(),它在wiki内容语言中添加“recentchangestext”消息。
  • 自定义命名空间中包含与默认wiki内容不同的文本的任何内容也应具有分部标签。
  • 当diff文本与页面内容语言不同时,使用$diff->setTextLanguage('code');其中$diff是DifferenceEngine对象。

lang/dir属性编辑

您应该使用HTML:

Xml::罗素( 'div', 阵列( “朗” => $wgContLang美元->获取代码(), '方向' => $wgContLang美元->getDir公司() );

但有时在动态生成的元素中这很困难,您可以依靠CSS:

. { 方向: 贷款利率; }

Wiki内容编辑

MediaWiki版本: 1.18

你可以用mw含量ltr微波含量rtl类来使用基于该方向的编辑节链接和ul/ol元素。

例如。
Xml::罗素( 'div', 阵列(
        “类” => 'mw内容-' . $wgLang->getDir公司(),
        “朗” => $wgLang->获取代码(),
        '方向' => $wgLang->getDir公司(),
        '文本'
);

这当然用于文章的页面内容。

  • 在文件页上,它只在实际文本周围添加,而文件页的其余部分是自定义UI(文件历史记录,…)。
  • 在普通页面中添加了用户类别,但在页面中嵌入了常规文本迪夫具有方向根据用户语言的属性。
  • 在特别的页面上因为这些基本上是用用户语言编写的。特殊页面上的一段文本可以是内容语言,然后应该将其嵌入到这些类中。例如,它在CodeReview扩展中用于代码摘要和代码注释,它可以包含wiki内容语言中的ul/ol元素(*和#wikitext),原则上显然不是用户语言。

不应该在这些类中添加UI内容。 例如,类别链接和FlaggedRevs审阅表单位于#bodyContent内部,而在.mw content ltr/rtl之外。

一个新特性是这些类可以在这些类中使用。 例如,.mw content rtl可以用于LTR(mw content LTR)文章中。 这对多语言页面很有用。 在此之前,必须使用本地MediaWiki:Common.css hacks使项目符号列表正确显示在<div dir=“ltr/rtl”>因此,您应该使用<div class=“mw-content-ltr/rtl”>而不是编辑wiki页面时的<div dir=“ltr/rtl”>。

另请参见ID和类.

身体类别编辑

body标签有一个贷款利率rtl公司默认情况下,它遵循用户语言。 您不应该使用它,因为CSS是根据用户语言自动翻转的。 body标记还具有一个新的(1.18)站点目录站点目录rtl接下来的类$wgContLang->getDir()如果需要,也可以添加“userlang ltr/rtl”和/或“pagelang ltr/rtl”。

对齐/浮动文本编辑

你可以用$wgLang->alignStart(),$wgContLang->alignStart(),$wgLang->alignEnd(),$wgContLang->alignEnd()它提供了适当的“右”或“左”值。

你可以使用CSS浮动水平对齐对于RTL接口语言,其值(左/右)被翻转。

示例编辑

特殊:AllMessages是一个特殊的页面,这意味着它遵循用户语言的方向。但是,实际的消息应该遵循所选语言的方向。

包含消息内容的表中的单元格具有&方向属性。

这个翻译 扩展,利用PageContentLanguage钩子,为翻译的页面设置正确的语言(以及相应的方向),参见。meta:Wikimedia_维护通知/ar它从LTR wiki上的mw-content-rtl类中获益。

本地Wiki编辑

MediaWiki:Common.css页面和相关页面也会被翻转。这意味着您必须在需要的地方添加@noflip。

看到了吗T33923:默认情况下不应翻转网站CSS。

问题编辑

另请参见编辑