模組:Namespace/doc
这是Module:Namespace的文档页面
| 此頁面是Module:Namespace的模块文档。 此頁面可能包含了模板的使用說明、分類和其他内容。 |
| 此模块文档已评为穩定版,稳定可靠,可各处使用无误。已可在帮助页面和其他维基百科资源中提及,以帮助新用户学习。为降低服务器负载和错误输出,改善本模块前应进行沙盒测试,而不是重复的试错性编辑。 |
| 此模块文档被引用於約1,070,000個頁面,佔全部頁面的13%。 為了避免造成大規模的影響,所有對此模块文档的編輯應先於沙盒或測試樣例上測試。实施修改前,建议先在討論頁發起討論。 模板引用數量會自動更新。 |
本模組判斷頁面所在的命名空間,並輸出命名空間的本地化名稱。除了 MediaWiki 的真實命名空間外,也支援偽命名空間(LTA:、NC:、NT:、RSP: 等以冒號前綴模擬命名空間的條目空間頁面)。
命名空間編號、英文名與簡繁中文名在 Module:Namespace/data 維護,語言回退由 Module:Lan2 處理。若需要依頁面的實際內容(重定向、沙盒、子頁面……)細分頁面類型,請改用 Module:Namespace pagename。
用法
[编辑]Wikitext
[编辑]namespace
[编辑]{{#invoke:Namespace|namespace|命名空間|相符時的輸出|不相符時的輸出}}
比對目前頁面所在的命名空間,相符時輸出第二個參數,否則輸出第三個參數。
| 位置參數 | 具名參數 | 說明 |
|---|---|---|
|1= |
|namespace= |
要比對的命名空間,可用編號、名稱或別名,詳見 #_isNamespace。 |
|2= |
|then= |
相符時的輸出,預設為空字串。 |
|3= |
|else= |
不相符時的輸出,預設為空字串。 |
具名參數優先於對應的位置參數。另外,透過模板呼叫時模板的參數會直接傳遞給本函數,且優先於 #invoke 上所寫的參數,因此只要在包裝模板中寫上 {{#invoke:Namespace|namespace}},模板的使用者即可直接提供上述三個參數。
範例(在 Template:Example):
{{#invoke:Namespace|namespace|template|是模板|不是模板}} <!-- 是模板 -->
{{#invoke:Namespace|namespace|10|是模板|不是模板}} <!-- 是模板 -->
{{#invoke:Namespace|namespace|help|是幫助|不是幫助}} <!-- 不是幫助 -->
{{#invoke:Namespace|namespace|help|是幫助}} <!-- (空字串) -->
{{#invoke:Namespace|namespace|namespace=10|then=是模板|else=不是模板}} <!-- 是模板 -->
目前頁面位於偽命名空間時,會以偽命名空間前綴比對,例如在 LTA:Foo 上以 LTA 比對即為相符;偽命名空間的討論頁(Talk:LTA:Foo)同樣視為該偽命名空間。
namespaceName
[编辑]{{#invoke:Namespace|namespaceName|語言|命名空間}}
輸出命名空間的本地化名稱。
| 參數 | 說明 |
|---|---|
|1= |
語言代碼,如 zh-hant、zh-hans、zh-tw、en。省略或留空時取使用者的介面語言({{int:Lang}});無法對應的語言代碼會回退為英文。
|
|2= |
命名空間,可用編號(10)、命名空間名稱或別名(Template、模板、t)、偽命名空間前綴(LTA、LTA:)或偽命名空間的討論頁前綴(Talk:LTA)。省略時使用目前頁面所在的命名空間。
|
- 省略
|2=且目前頁面位於條目或討論命名空間時,會額外判斷頁面是否位於偽命名空間。 - 本站存在但 Module:Namespace/data 未收錄的命名空間(例如
1728)會輸出空字串。 - 明確傳入空值(
|2=)、無法辨識的命名空間,或偽命名空間的完整頁面名(LTA:Foo)時,會輸出紅字的「輸入命名空間錯誤」。需要由頁面名稱取得偽命名空間前綴時,請先以 #isPseudoNamespace 取得前綴。
範例:
{{#invoke:Namespace|namespaceName|zh-hant|0}} <!-- 條目 -->
{{#invoke:Namespace|namespaceName|zh-hant|10}} <!-- 模板 -->
{{#invoke:Namespace|namespaceName|zh-hant|t}} <!-- 模板 -->
{{#invoke:Namespace|namespaceName|zh-hant|模板}} <!-- 模板 -->
{{#invoke:Namespace|namespaceName|zh-hant|4}} <!-- 專案 -->
{{#invoke:Namespace|namespaceName|zh-hans|2}} <!-- 用户 -->
{{#invoke:Namespace|namespaceName|zh-tw|2}} <!-- 使用者 -->
{{#invoke:Namespace|namespaceName|en|10}} <!-- Template -->
{{#invoke:Namespace|namespaceName|zh-hant|LTA}} <!-- 持續出沒的破壞者捷徑 -->
{{#invoke:Namespace|namespaceName|zh-hant|Talk:LTA}} <!-- 持續出沒的破壞者討論捷徑頁 -->
{{#invoke:Namespace|namespaceName|zh-hant|1728}} <!-- (空字串) -->
{{#invoke:Namespace|namespaceName|zh-hant|corgi}} <!-- 輸入命名空間錯誤(紅字) -->
conversionNamespaceName
[编辑]{{#invoke:Namespace|conversionNamespaceName|語言|命名空間}}
參數與行為同 #namespaceName,但優先使用 Module:Namespace/data 中的 編號-display,即本站實際顯示的命名空間名稱;未定義 -display 的命名空間則與 #namespaceName 完全相同。目前兩者有差異的是專案與介面命名空間:
| 命名空間 | namespaceName | conversionNamespaceName |
|---|---|---|
4 |
專案 | 維基百科 |
5 |
專案討論 | 維基百科討論 |
8 |
介面 | MediaWiki |
9 |
介面討論 | MediaWiki討論 |
isPseudoNamespace
[编辑]別名:ispseudo
{{#invoke:Namespace|isPseudoNamespace|頁面名稱}}
檢查頁面是否位於偽命名空間:是則輸出偽命名空間前綴,否則輸出空字串,|1= 省略時檢查目前頁面。與 #namespaceName 的 |2= 不同,本函數接受完整頁面名稱,也接受偽命名空間的討論頁。
範例:
{{#invoke:Namespace|isPseudoNamespace|LTA}} <!-- LTA -->
{{#invoke:Namespace|isPseudoNamespace|LTA:Foo}} <!-- LTA -->
{{#invoke:Namespace|isPseudoNamespace|Talk:LTA:Foo}} <!-- LTA -->
{{#invoke:Namespace|isPseudoNamespace|RSP:Foo}} <!-- RSP -->
{{#invoke:Namespace|isPseudoNamespace|Template:Foo}} <!-- (空字串) -->
{{#invoke:Namespace|ispseudo}} <!-- 目前頁面的偽命名空間前綴 -->
已有包裝模板 Template:IsPNS(輸出前綴)與 Template:IfPNS(條件判斷)。
Lua
[编辑]以下範例中隱含
local mNS = require('Module:Namespace')
_lan
[编辑]僅供Module:Namespace pagename使用的內部函數。
_isNamespace
[编辑]-- @param string|number id
-- @return string|number|nil
mNS._isNamespace(id)檢查一個輸入是不是偽命名空間或真實命名空間,返回偽命名空間、命名空間編號或 nil。
範例:
mNS._isNamespace("") -- 0
mNS._isNamespace("0") -- 0
mNS._isNamespace(0) -- 0
mNS._isNamespace("t") -- 10
mNS._isNamespace("模板") -- 10
mNS._isNamespace("template") -- 10
mNS._isNamespace("LTA") -- "LTA"
mNS._isNamespace("LTA:") -- "LTA"
mNS._isNamespace("corgi") -- nil
mNS._isNamespace(-999) -- nil
_pseudoNamespaceDisplay
[编辑]僅供Module:Namespace pagename使用的函數,不保證穩定性。
-- @param string lang
-- @param string ns
-- @param bool isTalk
-- @return string
-- @throw
mNS._pseudoNamespaceDisplay(lang, ns, isTalk)返回偽命名空間的顯示名。輸入的偽命名空間不存在會拋出錯誤,使用前請先用 #_isPseudoNamespace 檢查是否是有效偽命名空間。
範例:
mNS._pseudoNamespaceDisplay("zh", "LTA") -- 持续出没的破坏者快捷方式
mNS._pseudoNamespaceDisplay("zh", "NC") -- 命名常规快捷方式
mNS._pseudoNamespaceDisplay("zh", "NT") -- 收录标准快捷方式
mNS._pseudoNamespaceDisplay("zh", "RSP") -- 来源评级快捷方式
mNS._pseudoNamespaceDisplay("zh-hant", "LTA", false) -- 持續出沒的破壞者捷徑
mNS._pseudoNamespaceDisplay("zh-hant", "LTA", true) -- 持續出沒的破壞者討論捷徑頁
_isPseudoNamespace
[编辑]-- @param string|nil ns
-- @param false|nil [isPage]
-- @return nil|string, boolean
-- @throw
mNS._isPseudoNamespace(ns, isPage)
-- @param string|mw.title|nil page
-- @param true isPage
-- @return nil|string, boolean
-- @throw
mNS._isPseudoNamespace(page, isPage)檢查一個輸入是不是偽命名空間,返回偽命名空間(或 nil),以及該偽命名空間是否位於討論命名空間。
isPage為true時,第一個參數視為頁面,可以是字串或mw.title物件,冒號後的內容會被忽略。isPage為false或nil時,第一個參數只能是字串,且只接受PNS與PNS:兩種形式;LTA:Foo這類完整頁面名稱會被判定為非偽命名空間。- 第一個參數為
nil或省略時改用目前頁面,並視為isPage = true。 - 不在條目或討論命名空間的頁面一律返回
nil, false。 - 第一個參數既不是字串也不是
mw.title物件時會拋出錯誤。
範例:
mNS._isPseudoNamespace("LTA") -- "LTA", false
mNS._isPseudoNamespace("LTA:") -- "LTA", false
mNS._isPseudoNamespace("Talk:LTA") -- "LTA", true
mNS._isPseudoNamespace("LTA:Foo") -- nil, false(isPage 不為 true)
mNS._isPseudoNamespace("") -- nil, false
mNS._isPseudoNamespace("corgi") -- nil, false
mNS._isPseudoNamespace("LTA:Foo", true) -- "LTA", false
mNS._isPseudoNamespace("Talk:LTA:Foo", true) -- "LTA", true
mNS._isPseudoNamespace("Template:LTA", true) -- nil, false(不在條目或討論命名空間)
mNS._isPseudoNamespace(10) -- 拋出錯誤
_namespaceName
[编辑]-- @param string|nil [lang]
-- @param string|number|nil [ns]
-- @return string
-- @throw
mNS._namespaceName(lang, ns)返回命名空間的本地化名稱,參數與 #namespaceName 相同,但錯誤會直接拋出而不是輸出紅字訊息。lang 省略或為空字串時取使用者的介面語言;ns 省略時使用目前頁面所在的命名空間,並在頁面位於條目或討論命名空間時額外判斷偽命名空間。
範例:
mNS._namespaceName("zh-hant", 0) -- "條目"
mNS._namespaceName("zh-hant", "t") -- "模板"
mNS._namespaceName("zh-hant", 4) -- "專案"
mNS._namespaceName("zh-hans", 2) -- "用户"
mNS._namespaceName("zh-tw", 2) -- "使用者"
mNS._namespaceName("en", 10) -- "Template"
mNS._namespaceName("zh-hant", "LTA") -- "持續出沒的破壞者捷徑"
mNS._namespaceName("zh-hant", "Talk:LTA") -- "持續出沒的破壞者討論捷徑頁"
mNS._namespaceName("zh-hant", 1728) -- ""(Module:Namespace/data 未收錄)
mNS._namespaceName("zh-hant") -- 目前頁面所在命名空間的名稱
mNS._namespaceName("zh-hant", "") -- 拋出錯誤
mNS._namespaceName("zh-hant", "corgi") -- 拋出錯誤
mNS._namespaceName("zh-hant", "LTA:Foo") -- 拋出錯誤(請先用 _isPseudoNamespace 取得前綴)
_conversionNamespaceName
[编辑]-- @param string|nil [lang]
-- @param string|number|nil [ns]
-- @return string
-- @throw
mNS._conversionNamespaceName(lang, ns)同 #_namespaceName,但優先使用 Module:Namespace/data 中的 編號-display,即本站實際顯示的命名空間名稱,差異見 #conversionNamespaceName。
範例:
mNS._conversionNamespaceName("zh-hant", 4) -- "維基百科"
mNS._conversionNamespaceName("zh-hant", 8) -- "MediaWiki"
mNS._conversionNamespaceName("zh-hant", 10) -- "模板"(無 10-display,同 _namespaceName)
已棄用的別名
[编辑]下列函數名稱因命名不當而棄用,行為與對應的新名稱完全相同,請勿在新的程式碼中使用:
| 已棄用 | 請改用 |
|---|---|
NamespacesDisplay |
#namespaceName |
NamespacesConversionDisplay |
#conversionNamespaceName |
_NamespacesDisplay |
#_namespaceName |
_NamespacesConversionDisplay |
#_conversionNamespaceName |
_PseudoNamespaceDisplay |
#_pseudoNamespaceDisplay |
參見
[编辑]- Module:Namespace/data-命名空間與偽命名空間的資料
- Module:Namespace/testcases-單元測試
- Module:Namespace pagename-依頁面實際內容細分頁面類型
- Module:Lan2-語言回退
- Template:NS、Template:NS1-顯示命名空間名稱
- Template:IsPNS、Template:IfPNS-偽命名空間判斷