跳转到内容

模组:Namespace/doc

本页使用了标题或全文手工转换
维基百科,自由的百科全书

这是Module:Namespace的文档页面

本模组判断页面所在的命名空间,并输出命名空间的本地化名称。除了 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

参见

[编辑]