跳至內容

模板:Lan/doc

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

Lan模板可以在普通繁簡轉換功能(-{zh:; zh-hans:; zh-hant:; zh-cn:;……}-)無法發揮作用時替代其進行轉換,比如編輯提示等介面文本(system message)的轉換。然而,Lan模板是按介面語言而非語言變種轉換的,不能通過頁面頂部的用字標籤改變用字。在正文中,若不對Lan模板的輸出禁用變體轉換,讀者看到的內容仍將經過一般的變體轉換過程。綜上,在可以使用-{}-進行轉換時,請不要使用Lan模板。

顯示某一頁面的介面語言與語言變體可通過URL的query parameter指定,參數名分別為uselangvariant。已登入用戶可在偏好設定-國際化的「語言:」和「內容語言變體:」變更兩語言配置項的預設值。

用法

[編輯]
{{lan
|zh=原文
|zh-hans=简体中文
|zh-hant=繁體中文
|zh-cn=大陆
|zh-tw=台灣
|zh-hk=港澳
|zh-sg=马新
}}

實現細節

[編輯]

Lan模板的實現機理與-{}-(即Language Converter)的方式完全不同。Lan模板通過解析器函數{{int:查詢MediaWiki:Conversionname的值(取決於用戶的介面語言),再自行按fallback規則從候選列表中挑選輸出的字串。因此,Lan模板支持代碼的轉換,而這一功能是-{}-所不具備的。

這種做法屬於{{int:lang}} hack2024年底的MediaWiki 1.43引入了{{USERLANGUAGE}}魔術字,在一些多語言維基取代了原先需要手動建立子頁面的此類hack。

然而,這類做法會帶來性能影響:由於頁面內容開始依賴用戶的介面語言選項,其渲染結果存於parser cache的key將帶有userlang字段。例如,下列cache key分別來自未使用此類模板的WP:首頁(頁面ID 3597889),與使用了<inputbox>解析器擴展標籤的WP:互助客棧/技術(頁面ID 201888):

zhwiki:pcache:3597889:|#|:idhash:canonical!zh-cn
+
zhwiki:pcache:201888:|#|:idhash:userlang=zh-cn!zh-cn

啟用了Language Converter的MediaWiki本就會將語言變體寫入parser cache key(!後的部分,參見phab:T267067)。未登入用戶若僅在URL指定了variant,介面語言會跟隨變體語言;然而如果用戶手動指定了uselang=zh-hant&variant=zh-tw或者註冊用戶配置了不一致的介面語言和變體,那麼就會加劇parser cache的碎片化(ParserOptions::getUserLangObj):用戶請求與常見組合不一致,所以難以命中緩存,伺服器總需要重新渲染,造成不必要的等待和其他開銷。對緩存碎片化的擔憂是{{USERLANGUAGE}}魔術字未預設啟用的原因(phab:T406057)。

因此,若能用-{}-完成任務,則不應使用Lan模板。

其他環境

[編輯]

Lua語言應該首先嘗試使用Module:WikitextLC進行-{}-轉換。在無法使用處,可以使用本模板的對應模組:

local lan = require('Module:Lan')._main
local result = lan({
  ["zh-hans"] = "乌龟",
  ["zh-hant"] = "繁體"}, frame)

JavaScript小工具應該使用MediaWiki:Gadget-HanAssist.js中的conv()convByVar()。詳細文檔見Wikipedia:HanAssist

在元維基、維基數據及MediaWiki.org,本模板由於命名問題而改命名為meta:Template:Conversion-zhd:Template:Conversion-zhmw:Template:Conversion-zh

參見

[編輯]