Module:Namespace pagename/data:修订间差异

来自Kyoshihira Encyclopedia
跳转到导航 跳转到搜索
小 已更改“Module:Namespace pagename/data”的保护设置:高風險模板​([编辑=仅允许模板编辑员](无限期)​[移动=仅允许模板编辑员](无限期))
 
Lhscogs​(留言 | 贡献)
小 导入1个版本
 
(没有差异)

2026年10月20日 (二) 01:25的最新版本

此模块的文档可以在Module:Namespace pagename/data/doc创建

require('strict')

-- 命名空间常量
local NS = {
	MEDIA            = -2,
	SPECIAL          = -1,
	MAIN             = 0,
	TALK             = 1,
	USER             = 2,
	USER_TALK        = 3,
	PROJECT          = 4,   -- Wikipedia
	PROJECT_TALK     = 5,   -- Wikipedia talk
	FILE             = 6,
	FILE_TALK        = 7,
	MEDIAWIKI        = 8,
	MEDIAWIKI_TALK   = 9,
	TEMPLATE         = 10,
	TEMPLATE_TALK    = 11,
	HELP             = 12,
	HELP_TALK        = 13,
	CATEGORY         = 14,
	CATEGORY_TALK    = 15,
	PORTAL           = 100,
	PORTAL_TALK      = 101,
	WIKIPROJECT      = 102,
	WIKIPROJECT_TALK = 103,
	DRAFT            = 118,
	DRAFT_TALK       = 119,
	MOS              = 126,
	MOS_TALK         = 127,
	TIMEDTEXT        = 710,
	TIMEDTEXT_TALK   = 711,
	MODULE           = 828,
	MODULE_TALK      = 829,
	EVENT            = 1728,
	EVENT_TALK       = 1729,
	TOPIC            = 2600,
}

-- 各种字尾
-- 英文的字尾與命名空間名稱之間要留一個空白,特殊頁面 (-1) 與討論命名空間(nsid % 2 == 1)除外,
-- 因此非討論命名空間請使用 pageWithSpace / pageNameWithSpace。
local suffixTemplates = {
    -- 使用「頁」的字尾
    page = { ['en'] = 'page', ['zh-hans'] = '页', ['zh-hant'] = '頁' },
    pageWithSpace = { ['en'] = ' page', ['zh-hans'] = '页', ['zh-hant'] = '頁' },
    
    -- 使用「頁面」的字尾
    pageName = { ['en'] = 'page', ['zh-hans'] = '页面', ['zh-hant'] = '頁面' },
    pageNameWithSpace = { ['en'] = ' page', ['zh-hans'] = '页面', ['zh-hant'] = '頁面' },
    
    -- 使用者頁面特殊處理
    userPage = { ['en'] = ' page', ['zh-hans'] = '页', ['zh-hant'] = '頁面' },
}

return {
	-- 命名空间常量
	NS = NS,

	-- 内容模型直接映射到页面类型
	ContentModelMap = {
		['css']           = 'style',
		['sanitized-css'] = 'style',
		['javascript']    = 'script',
		['json']          = 'json',
	},

	NamespaceSuffixConfig = {
		-- 字尾 頁/頁面 的列表
		DefaultSuffixList = {
			-- 不要加字尾
			[NS.MEDIA]        = false,
			[NS.MAIN]         = false,
			[NS.FILE]         = false,
			[NS.TEMPLATE]     = false,
			[NS.CATEGORY]     = false,
			[NS.PORTAL]       = false,
			[NS.WIKIPROJECT]  = false,
			[NS.DRAFT]        = false,
			[NS.MOS]          = false,
			[NS.TIMEDTEXT]    = false,
			[NS.MODULE]       = false,
			[NS.TOPIC]        = false,

			-- 页面 / 頁面
			[NS.SPECIAL]      = suffixTemplates.pageName,          -- 特殊页面
			[NS.PROJECT]      = suffixTemplates.pageNameWithSpace, -- 维基百科页面
		    
		    -- 使用者頁面特殊處理:页 / 頁面
		    [NS.USER]         = suffixTemplates.userPage,

		    -- 页 / 頁
			[NS.MEDIAWIKI]      = suffixTemplates.pageWithSpace,
			[NS.HELP]           = suffixTemplates.pageWithSpace,

		    [NS.TALK]             = suffixTemplates.page,
			[NS.USER_TALK]        = suffixTemplates.page,
			[NS.PROJECT_TALK]     = suffixTemplates.page,
			[NS.FILE_TALK]        = suffixTemplates.page,
			[NS.MEDIAWIKI_TALK]   = suffixTemplates.page,
			[NS.TEMPLATE_TALK]    = suffixTemplates.page,
			[NS.HELP_TALK]        = suffixTemplates.page,
			[NS.CATEGORY_TALK]    = suffixTemplates.page,
			[NS.PORTAL_TALK]      = suffixTemplates.page,
			[NS.WIKIPROJECT_TALK] = suffixTemplates.page,
			[NS.DRAFT_TALK]       = suffixTemplates.page,
			[NS.MOS_TALK]         = suffixTemplates.page,
			[NS.TIMEDTEXT_TALK]   = suffixTemplates.page,
			[NS.MODULE_TALK]      = suffixTemplates.page,
		},

		-- 檢測頁面內容模型(JS/CSS/JSON/重定向)的命名空間
		EnablePageTypeNamespaces = {
			NS.USER,
			NS.PROJECT,
			NS.FILE,
			NS.TEMPLATE,
			NS.DRAFT,
			NS.MODULE,
		},

		-- 檢測文檔、沙盒、測試樣例的命名空間
		AllowTemplateType = {
			NS.USER,
			NS.TEMPLATE,
			NS.MODULE,
		},

		-- 檢測臨時頁面的命名空間
		AllowTempType = {
			NS.USER,
			NS.PROJECT,
			NS.TEMPLATE,
			NS.DRAFT,
			NS.MODULE,
		}
	},

	-- 錯誤
	Error = {
		['pg-error'] = {
			['en'] = 'Invalid page name: %s.',
			['zh-hans'] = '页面名称“%s”无效。',
			['zh-hant'] = '頁面名稱「%s」無效。'
		},
		['ns-error'] = {
			['en'] = 'Invalid namespace: %s.',
			['zh-hans'] = '命名空间“%s”无效。',
			['zh-hant'] = '名字空間「%s」無效。'
		},
	},

	-- 沙盒頁面名
	SandboxPageNames = {
		[NS.PROJECT] =   { ['沙盒'] = true, ['重定向沙盒'] = true },
		[NS.USER_TALK] = { ['Sandbox for user warnings~zhwiki'] = true },
		[NS.TEMPLATE] =  { ['沙盒'] = true, ['X1'] = true, ['X2'] = true, ['X3'] = true },
		[NS.CATEGORY] =  { ['沙盒'] = true },
		[NS.DRAFT]    =  { ['沙盒'] = true },
		[NS.FILE]     =  { ['沙盒.png'] = true, ['沙盒.svg'] = true },
	},

	-- 子頁面名稱判定規則
	SubpageRules = {
        doc = {
            names = { 'doc' },
        },
        sandbox = {
            names = { 'sandbox', '沙盒' },
        },
        testcases = {
            names = { 'testcases', '测试样例', '測試樣例' },
        },
        temp = {
            names = { 'temp', 'temporary' },
        },
        intro = {
            names = { 'intro', 'introduction', '说明', '說明' },
            matcher = { allowNs = { NS.TEMPLATE }, subpageOnly = true },
        },
    },

	-- 编辑提示
	NoticeRules = {
		editnotice = {
			matcher = {
				-- Template:Editnotices/xxx
				[NS.TEMPLATE]  = { rootText = 'Editnotices' },
				-- User:xxx/Editnotice 与 User talk:xxx/Editnotice
				[NS.USER]      = { subpageText = 'Editnotice', onlyFirstLevel = true },
				[NS.USER_TALK] = { subpageText = 'Editnotice', onlyFirstLevel = true },
			},
		},
		mailnotice = {
			-- User:xxx/Emailnotice
			matcher = {
				[NS.USER]      = { subpageText = 'Emailnotice', onlyFirstLevel = true },
			},
		},
	},

	-- 頁面內容判定規則
	ContentRules = {
        sandbox = {
            '%{%{[Ss]andbox',
            '%{%{[Tt]emplate[_%s]sandbox[_%s]notice',
            '%{%{請注意:請在這行文字底下進行您的測試,請不要刪除或變更這行文字以及這行文字以上的部份。',
            '%{%{请注意:请在这行文字底下进行您的测试,请不要删除或变更这行文字以及这行文字以上的部分。',
        },
        doc = {
            '%{%{[Dd]ocumentation[_%s]subpage',
            '%{%{[Tt]emplate[_%s]doc[_%s]inline',
            '%{%{[Tt]emplate[_%s]doc[_%s]viewed[_%s]directly'
        },
        testcases = {
            '%{%{[Tt]emplate[_%s]testcases[_%s]notice',
            '%{%{[Tt]est[_%s]cases[_%s]notice',
            '%{%{测试样例',
            '%{%{測試樣例'
        }
	},

	-- 頁面類型
	Type = {
		-- 這裡的頁面類型會連接成後綴 因此en的空白勿刪
		style = {
			['en'] = ' styles',
			['zh-hans'] = '样式',
			['zh-hant'] = '樣式'
		},
		script = {
			['en'] = ' scripts',
			['zh-hans'] = '脚本',
			['zh-hant'] = '工具'
		},
		json = {
			['en'] = ' data',
			['zh-hans'] = '数据',
			['zh-hant'] = '數據',
			['zh-tw'] = '資料'
		},
		redirect = {
			['en'] = ' redirect',
			['zh-hans'] = '重定向',
			['zh-hant'] = '重新導向'
		},
		doc = {
			['en'] = ' documentation',
			['zh-hans'] = '文档',
			['zh-hant'] = '文件'
		},
		sandbox = {
			['en'] = ' sandbox',
			['zh-hans'] = '沙盒',
			['zh-hant'] = '沙盒'
		},
		testcases = {
			['en'] = ' testcases',
			['zh-hans'] = '测试样例',
			['zh-hant'] = '測試樣例'
		},
		temp = {
			['en'] = ' temporary page',
			['zh-hans'] = '临时页',
			['zh-hant'] = '臨時頁'
		},
		intro = {
			['en'] = ' introductory page',
			['zh-hans'] = '说明页',
			['zh-hant'] = '說明頁'
		},

		-- 這裡的頁面類型會直接替換原本的字串 因此en不需要留空白
		external = {
			['en'] = 'Interlanguage link',
			['zh-hans'] = '跨语言链接',
			['zh-hant'] = '跨語言連結'
		},
		editnotice = {
			['en'] = 'editnotice',
			['zh-hans'] = '编辑提示',
			['zh-hant'] = '編輯提示'
		},
		-- %u表示用户名,在主模块换成用户链接
		mailnotice = {
			['en'] = '%u\'s mailnotice',
			['zh-hans'] = '%u的电邮提示',
			['zh-hant'] = '%u的電郵提示'
		},
		shortcut = {
			['en'] = 'Shortcut of %s',
			['zh-hans'] = '%s快捷方式',
			['zh-hant'] = '%s捷徑'
		},
	}
}