Mô đun:Protection banner/config

Văn thư lưu trữ mở Wikisource
Tài liệu mô đun[tạo]
-- This module provides configuration data for [[Module:Protection banner]].

return {

--------------------------------------------------------------------------------
--
--                                BANNER DATA
--
--------------------------------------------------------------------------------

--[[
-- Banner data consists of six fields:
-- * text - the main protection text that appears at the top of protection
--   banners.
-- * explanation - the text that appears below the main protection text, used
--   to explain the details of the protection.
-- * tooltip - the tooltip text you see when you move the mouse over a small
--   padlock icon.
-- * link - the page that the small padlock icon links to.
-- * alt - the alt text for the small padlock icon. This is also used as tooltip
--   text for the large protection banners.
-- * image - the padlock image used in both protection banners and small padlock
--   icons.
--
-- The module checks in three separate tables to find a value for each field.
-- First it checks the banners table, which has values specific to the reason
-- for the page being protected. Then the module checks the defaultBanners
-- table, which has values specific to each protection level. Finally, the
-- module checks the masterBanner table, which holds data for protection
-- templates to use if no data has been found in the previous two tables.
--
-- The values in the banner data can take parameters. These are specified
-- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name
-- enclosed in curly braces).
--
--                          Available parameters:
--
-- ${CURRENTVERSION} - a link to the page history or the move log, with the
-- display message "current-version-edit-display" or
-- "current-version-move-display".
--
-- ${EDITREQUEST} - a link to create an edit request for the current page.
--
-- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes
-- on the talk page; you may submit a request to ask an administrator to make
-- an edit if it is minor or supported by consensus."
--
-- ${IMAGELINK} - a link to set the image to, depending on the protection
-- action and protection level.
--
-- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry
-- is set. E.g. "Editing of this page by new or unregistered users is currently 
-- disabled until dd Month YYYY."
--
-- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation
-- so that it can be used in run-on sentences.
--
-- ${PAGETYPE} - the type of the page, e.g. "article" or "template".
-- Defined in the cfg.pagetypes table.
--
-- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g.
-- "Editing of this page by new or unregistered users is currently disabled"
--
-- ${PROTECTIONDATE} - the protection date, if it has been supplied to the
-- template.
--
-- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or
-- "semi-protected".
--
-- ${PROTECTIONLOG} - a link to the protection log or the pending changes log,
-- depending on the protection action.
--
-- ${TALKPAGE} - a link to the talk page. If a section is specified, links
-- straight to that talk page section.
--
-- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to
-- create a blurb like "This template is semi-protected", or "This article is
-- move-protected until DD Month YYYY".
--
-- ${VANDAL} - links for the specified username (or the root page name)
-- using Module:Vandal-m.
--
--                                 Functions
--
-- For advanced users, it is possible to use Lua functions instead of strings
-- in the banner config tables. Using functions gives flexibility that is not
-- possible just by using parameters. Functions take two arguments, the
-- protection object and the template arguments, and they must output a string.
--
-- For example:
--
-- text = function (protectionObj, args)
--     if protectionObj.level == 'autoconfirmed' then
--         return 'foo'
--     else
--         return 'bar'
--     end
-- end
--
-- Some protection object properties and methods that may be useful:
-- protectionObj.action - the protection action
-- protectionObj.level - the protection level
-- protectionObj.reason - the protection reason
-- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set
--     to indefinite, and the protection time in unix time if temporary.
-- protectionObj.protectionDate - the protection date in unix time, or nil if
--     unspecified.
-- protectionObj.bannerConfig - the banner config found by the module. Beware
--     of editing the config field used by the function, as it could create an
--     infinite loop.
-- protectionObj:isProtected - returns a boolean showing whether the page is
--     protected.
-- protectionObj:isTemporary - returns a boolean showing whether the expiry is
--     temporary.
-- protectionObj:isIncorrect - returns a boolean showing whether the protection
--     template is incorrect.
--]]

-- The master banner data, used if no values have been found in banners or
-- defaultBanners.
masterBanner = {
	text = '${INTROBLURB}',
	explanation = '${EXPLANATIONBLURB}',
	tooltip = '${TOOLTIPBLURB}',
	link = '${IMAGELINK}',
	alt = 'Trang ${PROTECTIONLEVEL}'
},

-- The default banner data. This holds banner data for different protection
-- levels.
-- *required* - this table needs edit, move, autoreview and upload subtables.
defaultBanners = {
	edit = {},
	move = {},
	autoreview = {
		default = {
			alt = 'Trang bị khóa có thay đổi đang chờ duyệt',
			tooltip = 'Tất cả các sửa đổi của thành viên chưa đăng ký và thành viên mới sẽ cần được kiểm duyệt trước khi các thành viên chưa đăng ký có thể thấy',
			image = 'Pending-protection-shackle.svg'
		}
	},
	upload = {}
},

-- The banner data. This holds banner data for different protection reasons.
-- In fact, the reasons specified in this table control which reasons are
-- valid inputs to the first positional parameter.
--
-- There is also a non-standard "description" field that can be used for items
-- in this table. This is a description of the protection reason for use in the
-- module documentation.
--
-- *required* - this table needs edit, move, autoreview and upload subtables.
banners = {
	edit = {
		blp = {
			description = 'Dành cho trang bị khóa để thúc đẩy tuân thủ quy định về'
				.. ' [[w:Wikipedia:Tiểu sử người đang sống'
				.. '|Tiểu sử người đang sống]]',
			text = '${INTROFRAGMENT} để thúc đẩy tuân thủ'
				.. ' [[w:Wikipedia:Tiểu sử người đang sống'
				.. "|quy định wikipedia về tiểu sử"
				.. ' người đang sống]].',
			tooltip = '${TOOLTIPFRAGMENT} để thúc đẩy tuân thủ quy định về'
				.. ' tiểu sử người đang sống',
		},
		dmca = {
			description = 'Dành cho trang bị Quỹ Wikimedia khóa'
				.. ' do yêu cầu gỡ xuống theo [[:en:Digital Millennium Copyright Act|Digital Millennium Copyright Act]]',
			explanation = function (protectionObj, args)
				local ret = 'Căn cứ vào thông báo của chủ sở hữu quyền theo Đạo luật'
					.. ' Bản quyền Kỹ thuật số Thiên niên kỷ (DMCA) về một số nội dung'
					.. ' trong văn kiện này, Quỹ Wikimedia đã hành động theo'
					.. ' pháp luật hiện hành và đã gỡ xuống và hạn chế nội dung'
					.. ' có liên quan.'
				if args.notice then
					ret = ret .. ' Một bản sao của thông báo có thể xem ở đây: '
						.. args.notice .. '.'
				end
				ret = ret .. ' Để biết thêm thông tin, bao gồm các trang web bàn về'
					.. ' cách nộp thông báo phản đối, xin vui lòng xem'
					.. " [[w:en:Wikipedia:Office actions|Wikipedia:Office actions]] và ${TALKPAGE} của bài viết."
					.. "'''Đừng xóa bản mẫu này khỏi văn kiện cho đến khi"
					.. " hạn chế được rút lại'''."
				return ret
			end,
			image = 'Office-protection-shackle-keyhole.svg',
		},
		dispute = {
			description = 'Dành cho trang bị khóa do tranh chấp sửa đổi',
			text = function (protectionObj, args)
				-- Find the value of "disputes".
				local display = 'tranh chấp'
				local disputes
				if args.section then
					disputes = string.format(
						'[[%s:%s#%s|%s]]',
						mw.site.namespaces[protectionObj.title.namespace].talk.name,
						protectionObj.title.text,
						args.section,
						display
					)
				else
					disputes = display
				end

				-- Make the blurb, depending on the expiry.
				local msg
				if type(protectionObj.expiry) == 'number' then
					msg = '${INTROFRAGMENT} hoặc cho đến khi sửa đổi %s được giải quyết.'
				else
					msg = '${INTROFRAGMENT} cho đến khi sửa đổi %s được giải quyết.'
				end
				return string.format(msg, disputes)
			end,
			explanation = "Việc khóa trang này '''không''' phải là sự ủng hộ"
				.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
			tooltip = '${TOOLTIPFRAGMENT} do tranh chấp sửa đổi',
		},
		ecp = {
			description = 'Dành cho bài viết trong lĩnh vực chủ đề được'
				.. ' [[w:en:Wikipedia:Arbitration Committee|ArbCom]] cho phép hoặc'
				.. ' đáp ứng tiêu chí sử dụng của cộng đồng',
			tooltip = 'Trang ${PAGETYPE} này bị kéo dài khóa',
			alt = '${PAGETYPE} bị kéo dài khóa',
		},
		mainpage = {
			description = 'Dành cho trang bị khóa do được hiện ở [[Trang Chính]]',
			text = 'Tập tin này hiện đang bị'
				.. ' [[w:en:Wikipedia:This page is protected|khóa]] không cho'
				.. ' sửa đổi vì nó hiện đang hoặc sẽ sớm được hiển thị'
				.. ' trên [[Trang Chính]].',
			explanation = 'Hình ảnh trên Trang Chính bị khóa do được nhiều người xem.'
				.. ' Vui lòng thảo luận về bất kỳ thay đổi cần thiết nào tại ${TALKPAGE}.'
				.. '<br /><span style="font-size:90%;">'
				.. "'''Bảo quản viên hoặc Điều phối viên:''' Một khi hình ảnh này không còn được dùng trên Trang Chính,"
				.. ' vui lòng mở khóa tập tin này hoặc giảm xuống mức bán khóa.</span>',
		},
		office = {
			description = 'Dành cho trang bị Wikimedia Foundation khóa',
			text = function (protectionObj, args)
				local ret = '${PAGETYPE} này hiện đang được'
					.. ' xem xét bởi'
					.. ' [[w:en:Wikipedia:Office actions|Văn phòng Quỹ Wikimedia]]'
					.. ' và đã bị khóa.'
				if protectionObj.protectionDate then
					ret = ret .. ' Nó bị khóa từ ${PROTECTIONDATE}.'
				end
				return ret
			end,
			explanation = "Nếu bạn có thể sửa đổi trang này, vui lòng thảo luận tất cả các thay đổi và"
				.. " thêm thắt tại ${TALKPAGE} trước."
				.. " '''Đừng mở khóa trang này trừ khi bạn được Quỹ Wikimedia cho phép.'''",
			image = 'Padlock-black.svg',
		},
		reset = {
			description = 'Dành cho trang bị Wikimedia Foundation khóa và'
				.. ' "tái tạo" về phiên bản sơ khởi',
 			text = '${PAGETYPE} này hiện đang được'
					.. ' xem xét bởi'
					.. ' [[w:en:Wikipedia:Office actions|Văn phòng Quỹ Wikimedia]]'
					.. ' và đã bị khóa.',
			explanation = function (protectionObj, args)
				local ret = ''
				if protectionObj.protectionDate then
					ret = ret .. 'Vào ${PROTECTIONDATE} ${PAGETYPE} này đã'
				else
					ret = ret .. '${PAGETYPE} này đã bị'
				end
				ret = ret .. ' thu lại về'
				.. ' một phiên bản sơ khởi để có thể được viết lại'
				.. ' toàn bộ để đảm bảo đáp ứng các quy định về'
				.. ' [[w:Wikipedia:Thái độ trung lập|thái độ trung lập]] và [[w:Wikipedia:Thông tin kiểm chứng được|thông tin kiểm chứng được]].'
				.. ' Các quy định bản lề của Wikipedia sẽ được áp dụng một cách nghiêm ngặt'
				.. ' trong quá trình viết lại và sẽ được mở lại cho tất cả các biên tập viên.'
				.. ' ${PAGETYPE} này đang ${PROTECTIONLEVEL} trong khi'
				.. ' đang được xây dựng lại.\n\n'
				.. 'Những nội dung nào được chép lại từ các phiên bản trước khi bị khóa'
				.. ' của ${PAGETYPE}, cũng như'
				.. ' bất kỳ nội dung nào được thêm vào sau này mà không có'
				.. " nguồn gốc, đều sẽ bị xóa bỏ. Các trang thảo luận đi kèm cũng cùng lúc bị tẩy trống.\n\n"
				.. "Nếu bạn có thể sửa đổi trang này, vui lòng thảo luận tất cả các thay đổi và"
				.. " thêm thắt tại ${TALKPAGE} trước. '''Đừng vượt quyền thay đổi"
				.. " tác vụ này, và đừng mở khóa trang này,"
				.. " trừ khi bạn được Quỹ Wikimedia Foundation"
				.. " cho phép. Không biên tập viên nào được phép xóa thông báo này.'''"

				return ret
			end,
			image = 'Padlock-black.svg',
		},
		sock = {
			description = 'Dành cho trang bị khóa do'
				.. ' [[w:Wikipedia:Tài khoản con rối|dùng tài khoản rối]]',
			text = '${INTROFRAGMENT} để ngăn chặn không cho [[w:Wikipedia:Tài khoản con rối|con rối]] của'
				.. ' thành viên [[Wikisource:Quy định cấm|bị cấm]] hoặc'
				.. ' [[w:Wikipedia:Quy định cấm chỉ|bị cấm chỉ]]'
				.. ' sửa đổi.',
			tooltip = '${TOOLTIPFRAGMENT} để ngăn con rối của thành viên bị cấm hoặc cấm chỉ'
				.. ' sửa đổi',
		},
		template = {
			description = 'Dành cho các bản mẫu và mô-đun Lua'
				.. '[[w:en:Wikipedia:High-risk templates|có nguy cơ cao]]',
			text = 'Đây là ${PAGETYPE} bị [[:en:Help:Protection|khóa]] vĩnh viễn,'
				.. ' do nó [[w:en:Wikipedia:High-risk templates|thuộc nhóm nguy cơ cao]].',
			explanation = 'Vui lòng thảo luận bất kì thay đổi nào tại ${TALKPAGE}; bạn có thể'
				.. ' gửi ${EDITREQUEST} cho một'
				.. ' [[Wikisource:Bảo quản viên|bảo quản viên]] hoặc'
				.. ' [[w:Wikipedia:Điều phối viên|điều phối viên]] nếu'
				.. ' đó là sửa đổi [[Trợ_giúp:Sửa đổi nhỏ#Khi nào được đánh dấu sửa đổi là nhỏ'
				.. '|không tranh cãi]] hoặc nhận được sự'
				.. ' [[w:Wikipedia:Đồng thuận|đồng thuận]]. Bạn cũng có thể'
				.. ' [[Wikisource:Yêu cầu khóa hay mở khóa trang|yêu cầu mở khóa trang]].',
			tooltip = '${PAGETYPE} có nguy cơ cao này bị ${PROTECTIONLEVEL} vĩnh viễn'
				.. ' để ngăn ngừa phá hoại',
			alt = 'Trang ${PAGETYPE} bị khóa vĩnh viễn',
		},
		usertalk = {
			description = 'Dành cho trang được bảo vệ chống lại các sửa đổi gây rối bởi'
				.. ' thành viên cụ thể',
			text = '${INTROFRAGMENT} để ngăn chặn việc ${VANDAL} sử dụng nó để thực hiện các sửa đổi gây rối,'
				.. ' chẳng hạn như lạm dụng'
				.. ' bản mẫu &#123;&#123;[[Bản mẫu:Bỏ cấm|bỏ cấm]]&#125;&#125;.',
			explanation = 'Nếu bạn không thể sửa đổi trang thảo luận thành viên này và bạn cần phải'
				.. ' thay đổi hoặc để lại tin nhắn, bạn có thể'
				.. ' [[Wikisource:Tin nhắn cho bảo quản viên'
				.. '|yêu cầu sửa đổi trang này]],'
				.. ' [[Wikisource:Yêu cầu khóa hay mở khóa trang'
				.. '#Các yêu cầu hiện tại'
				.. '|yêu cầu mở khóa trang]],'
				.. ' [[Special:Userlogin|đăng nhập]],'
				.. ' hoặc [[Special:UserLogin/signup|tạo một tài khoản]].',
		},
		vandalism = {
			description = 'Dành cho trang bị khóa để ngăn chặn'
				.. ' [[w:Wikipedia:Phá hoại|phá hoại]]',
			text = '${INTROFRAGMENT} do [[w:Wikipedia:Phá hoại|phá hoại]].',
			explanation = function (protectionObj, args)
				local ret = ''
				if protectionObj.level == 'sysop' then
					ret = ret .. "Việc khóa trang này '''không''' phải là sự thừa nhận của"
						.. ' ${CURRENTVERSION}. '
				end
				return ret .. '${EXPLANATIONBLURB}'
			end,
			tooltip = '${TOOLTIPFRAGMENT} do phá hoại',
		}
	},
	move = {
		dispute = {
			description = 'Dành cho trang bị khóa chống lại việc di chuyển trang do'
				.. ' tranh chấp về tiêu đề trang',
			explanation = "Việc khóa trang này '''không''' sự thừa nhận của"
				.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
			image = 'Move-protection-shackle.svg'
		},
		vandalism = {
			description = 'Dành cho trang bị khóa chống lại'
				.. ' [[w:Wikipedia:Phá hoại#Các dạng phá hoại'
				.. ' |phá hoại trang di chuyển]]'
		}
	},
	autoreview = {},
	upload = {}
},

--------------------------------------------------------------------------------
--
--                            GENERAL DATA TABLES
--
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
-- Protection blurbs
--------------------------------------------------------------------------------

-- This table produces the protection blurbs available with the
-- ${PROTECTIONBLURB} parameter. It is sorted by protection action and
-- protection level, and is checked by the module in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionBlurbs = {
	edit = {
		default = 'Trang ${PAGETYPE} này đang bị [[:en:Help:Protection|'
			.. 'khóa]] không cho sửa đổi',
		autoconfirmed = 'Việc sửa đổi trang ${PAGETYPE} này đối với thành viên [[w:Wikipedia:Quyền truy cập của thành viên'
			.. ' #Thành viên mới|mới]] hoặc [[w:Wikipedia:Quyền truy cập của thành viên#Thành viên vô danh'
			.. '|vô danh]] hiện đang bị [[:en:Help:Protection|vô hiệu hóa]]',
		extendedconfirmed = 'Trang ${PAGETYPE} này hiện đang bị khóa hạn chế cho thành viên xác nhận mở rộng',
	},
	move = {
		default = 'Trang ${PAGETYPE} này hiện đang bị [[:en:Help:Protection|khóa]]'
			.. ' không cho [[w:Wikipedia:Di chuyển trang|di chuyển]]'
	},
	autoreview = {
		default = 'Tất cả các sửa đổi được thực hiện cho trang ${PAGETYPE} này bởi'
			.. ' [[w:Wikipedia:Quyền truy cập của thành viên#Thành viên mới|thành viên mới]] hoặc'
			.. ' [[w:Wikipedia:Quyền truy cập của thành viên#Thành viên vô danh|thành viên vô danh]]'
			.. ' hiện đang'
			.. ' [[w:Wikipedia:Thay đổi đang chờ|được xem xét]]'
	},
	upload = {
		default = 'Tải lên phiên bản mới của trang ${PAGETYPE} này hiện đang bị vô hiệu hóa'
	}
},


--------------------------------------------------------------------------------
-- Explanation blurbs
--------------------------------------------------------------------------------

-- This table produces the explanation blurbs available with the
-- ${EXPLANATIONBLURB} parameter. It is sorted by protection action,
-- protection level, and whether the page is a talk page or not. If the page is
-- a talk page it will have a talk key of "talk"; otherwise it will have a talk
-- key of "subject". The table is checked in the following order:
-- 1. page's protection action, page's protection level, page's talk key
-- 2. page's protection action, page's protection level, default talk key
-- 3. page's protection action, default protection level, page's talk key
-- 4. page's protection action, default protection level, default talk key
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
explanationBlurbs = {
	edit = {
		autoconfirmed = {
			subject = 'Xem [[Wikisource:Quy định khóa|'
				.. 'quy định khóa trang]] và  ${PROTECTIONLOG} để biết thêm chi tiết. nếu bạn'
				.. ' không thể sửa đổi ${PAGETYPE} này và bạn muốn thay đổi, bạn có thể'
				.. ' ${EDITREQUEST}, thảo luận về những thay đổi tại ${TALKPAGE},'
				.. ' [[Wikisource:Yêu cầu khóa hay mở khóa trang'
				.. '#Các yêu cầu hiện tại'
				.. '|yêu cầu mở khóa trang này]], [[Special:Userlogin|đăng nhập]], hoặc'
				.. ' [[Special:UserLogin/signup|tạo một tài khoản]].',
			default = 'Xem [[Wikisource:Quy định khóa|'
				.. 'quy định khóa trang]] và  ${PROTECTIONLOG} để biết thêm chi tiết. nếu bạn'
				.. ' không thể sửa đổi ${PAGETYPE} này và bạn muốn thay đổi, bạn có thể'
				.. ' ${EDITREQUEST}, thảo luận về những thay đổi tại ${TALKPAGE},'
				.. ' [[Wikisource:Yêu cầu khóa hay mở khóa trang'
				.. '#Các yêu cầu hiện tại'
				.. '|yêu cầu mở khóa trang này]], [[Special:Userlogin|đăng nhập]], hoặc'
				.. ' [[Special:UserLogin/signup|tạo một tài khoản]].',
		},
		extendedconfirmed = {
			default = 'Khóa hạn chế cho thành viên xác nhận mở rộng (khóa 30/500) ngăn chặn không cho tất cả các thành viên chưa đăng ký'
				.. ' và thành viên đã đăng ký có tài khoản đã mở ít hơn 30 ngày và 500 lần sửa đổi sửa đổi trang.'
				.. ' [[Wikisource:Quy định khóa#extended|Quy định của cộng đồng]]'
				.. ' xác định rằng khóa hạn chế cho thành viên xác nhận mở rộng có thể được áp dụng để ngăn chặn'
				.. ' phá hoại, nếu khóa hạn chế sửa đổi được chứng minh là không hiệu quả.'
				.. ' Vui lòng thảo luận về bất kỳ thay đổi tại ${TALKPAGE}; bạn có thể'
				.. ' ${EDITREQUEST} để yêu cầu thay đổi không gây tranh cãi được đồng ý bởi'
				.. ' [[w:Wikipedia:Đồng thuận|sự đồng thuận]].'
		},
		default = {
			subject = 'Xem [[Wikisource:Quy định khóa|'
				.. 'quy định khóa trang]] và  ${PROTECTIONLOG} để biết thêm chi tiết.'
				.. ' Vui lòng thảo luận bất kỳ thay đổi nào tại ${TALKPAGE}; bạn'
				.. ' có thể ${EDITREQUEST} để yêu cầu'
				.. ' [[Wikisource:Bảo quản viên|bảo quản viên]] sửa đổi trang nếu'
				.. ' sửa đổi đó là [[Trợ giúp:Sửa đổi nhỏ#Khi nào được đánh dấu sửa đổi là nhỏ'
				.. '|sửa đổi không gây hại]] hoặc được chấp nhận [[w:Wikipedia:Đồng thuận'
				.. '|sự đồng thuận]]. Bạn cũng có thể [[Wikisource:Yêu cầu khóa hay mở khóa trang#Các yêu cầu hiện tại'
				.. '|yêu cầu mở khóa trang này]].',
			default = 'Xem [[Wikisource:Quy định khóa|'
				.. 'quy định khóa trang]] và  ${PROTECTIONLOG} để biết thêm chi tiết.'
				.. ' Bạn có thể [[Wikisource:Tin nhắn cho bảo quản viên'
				.. ' |yêu cầu sửa đổi]] trang này, hoặc [[Wikisource:Yêu cầu khóa hay mở khóa trang'
				.. ' #Các yêu cầu hiện tại'
				.. '|yêu cầu mở khóa trang này]].'
		}
	},
	move = {
		default = {
			subject = 'Xem [[Wikisource:Quy định khóa|'
				.. 'quy định khóa trang]] và  ${PROTECTIONLOG} để biết thêm chi tiết.'
				.. ' Trang này vẫn có thể sửa đổi được nhưng không thể di chuyển'
				.. ' cho đến khi được mở khóa. Vui lòng thảo luận về bất kỳ đề xuất di chuyển nào tại'
				.. ' ${TALKPAGE} hoặc tại [[w:Wikipedia:Yêu cầu di chuyển trang]]. Bạn cũng có thể'
				.. ' [[Wikisource:Yêu cầu khóa hay mở khóa trang|yêu cầu mở khóa trang này]].',
			default = 'Xem [[Wikisource:Quy định khóa|'
				.. 'quy định khóa trang]] và  ${PROTECTIONLOG} để biết thêm chi tiết.'
				.. ' Trang này vẫn có thể sửa đổi được nhưng không thể di chuyển'
				.. ' cho đến khi được mở khóa. Vui lòng thảo luận về bất kỳ đề xuất di chuyển nào tại'
				.. ' [[w:Wikipedia:Yêu cầu di chuyển trang]]. Bạn cũng có thể'
				.. ' [[Wikisource:Yêu cầu khóa hay mở khóa trang|yêu cầu mở khóa trang này]].'
		}
	},
	autoreview = {
		default = {
			default = 'Xem [[Wikisource:Quy định khóa|'
				.. 'quy định khóa trang]] và  ${PROTECTIONLOG} để biết thêm chi tiết.'
				.. ' Các sửa đổi ${PAGETYPE} này bởi thành viên chưa đăng ký và thành viên mới'
				.. ' sẽ không được hiển thị cho độc giả cho đến khi nó được chấp nhận bởi'
				.. ' một người đánh giá. Để tránh sự cần thiết sửa đổi của bạn'
				.. ' phải cần được đánh giá, bạn có thể'
				.. ' [[Wikisource:Yêu cầu khóa hay mở khóa trang'
				.. '#Các yêu cầu hiện tại'
				.. '|yêu cầu mở khóa trang này]], [[Special:Userlogin|đăng nhập]], hoặc'
				.. ' [[Special:UserLogin/signup|tạo một tài khoản]].'
		},
	},
	upload = {
		default = {
			default = 'Xem [[Wikisource:Quy định khóa|'
				.. 'quy định khóa trang]] và  ${PROTECTIONLOG} để biết thêm chi tiết.'
				.. ' Trang vẫn có thể sửa đổi được nhưng không thể tải lên phiên bản mới'
				.. ' của tập tin cho đến khi trang này được mở khóa. Bạn có thể'
				.. ' yêu cầu tải lên phiên bản mới bằng cách sử dụng'
				.. ' [[Wikisource:Tin nhắn cho bảo quản viên|yêu cầu sửa đổi trang này]], hoặc bạn'
				.. ' có thể  [[Wikisource:Yêu cầu khóa hay mở khóa trang|yêu cầu mở khóa tập tin này]].'
		}
	}
},

--------------------------------------------------------------------------------
-- Protection levels
--------------------------------------------------------------------------------

-- This table provides the data for the ${PROTECTIONLEVEL} parameter, which
-- produces a short label for different protection levels. It is sorted by
-- protection action and protection level, and is checked in the following
-- order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionLevels = {
	edit = {
		default = 'khóa',
		templateeditor = 'khóa bản mẫu',
		extendedconfirmed = 'khóa hạn chế cho thành viên xác nhận mở rộng (khóa 30/500)',
		autoconfirmed = 'hạn chế sửa đổi (bán khóa)',
	},
	move = {
		default = 'khóa di chuyển'
	},
	autoreview = {
	},
	upload = {
		default = 'khóa tải lên'
	}
},

--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------

-- This table lists different padlock images for each protection action and
-- protection level. It is used if an image is not specified in any of the
-- banner data tables, and if the page does not satisfy the conditions for using
-- the ['image-filename-indef'] image. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
images = {
	edit = {
		default = 'Padlock.svg',
		templateeditor = 'Padlock-pink.svg',
		extendedconfirmed = 'Padlock-blue.svg',
		autoconfirmed = 'Padlock-silver.svg'
	},
	move = {
		default = 'Padlock-olive.svg',
	},
	autoreview = {
		default = 'Padlock-silver-light.svg'
	},
	upload = {
		default = 'Padlock-purple.svg'
	}
},

-- Pages with a reason specified in this table will show the special "indef"
-- padlock, defined in the 'image-filename-indef' message, if no expiry is set.
indefImageReasons = {
	template = true
},

--------------------------------------------------------------------------------
-- Image links
--------------------------------------------------------------------------------

-- This table provides the data for the ${IMAGELINK} parameter, which gets
-- the image link for small padlock icons based on the page's protection action
-- and protection level. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
imageLinks = {
	edit = {
		default = 'Wikisource:Quy định khóa#Khóa hẳn',
		templateeditor = 'Wikisource:Quy định khóa#Khóa bản mẫu',
		extendedconfirmed = 'Wikisource:Quy định khóa#Khóa mở rộng',
		autoconfirmed = 'Wikisource:Quy định khóa#semi'
	},
	move = {
		default = 'Wikisource:Quy định khóa#move'
	},
	autoreview = {
		default = 'Wikisource:Quy định khóa#pending'
	},
	upload = {
		default = 'Wikisource:Quy định khóa#upload'
	}
},

--------------------------------------------------------------------------------
-- Padlock indicator names
--------------------------------------------------------------------------------

-- This table provides the "name" attribute for the <indicator> extension tag
-- with which small padlock icons are generated. All indicator tags on a page
-- are displayed in alphabetical order based on this attribute, and with
-- indicator tags with duplicate names, the last tag on the page wins.
-- The attribute is chosen based on the protection action; table keys must be a
-- protection action name or the string "default".
padlockIndicatorNames = {
	autoreview = 'pp-autoreview',
	default = 'pp-default'
},

--------------------------------------------------------------------------------
-- Protection categories
--------------------------------------------------------------------------------

--[[
-- The protection categories are stored in the protectionCategories table.
-- Keys to this table are made up of the following strings:
--
-- 1. the expiry date
-- 2. the namespace
-- 3. the protection reason (e.g. "dispute" or "vandalism")
-- 4. the protection level (e.g. "sysop" or "autoconfirmed")
-- 5. the action (e.g. "edit" or "move")
-- 
-- When the module looks up a category in the table, first it will will check to
-- see a key exists that corresponds to all five parameters. For example, a
-- user page semi-protected from vandalism for two weeks would have the key
-- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module
-- changes the first part of the key to "all" and checks the table again. It
-- keeps checking increasingly generic key combinations until it finds the
-- field, or until it reaches the key "all-all-all-all-all".
--
-- The module uses a binary matrix to determine the order in which to search.
-- This is best demonstrated by a table. In this table, the "0" values
-- represent "all", and the "1" values represent the original data (e.g.
-- "indef" or "file" or "vandalism").
--
--        expiry    namespace reason   level     action
-- order
-- 1      1         1         1        1         1
-- 2      0         1         1        1         1
-- 3      1         0         1        1         1
-- 4      0         0         1        1         1
-- 5      1         1         0        1         1
-- 6      0         1         0        1         1
-- 7      1         0         0        1         1
-- 8      0         0         0        1         1
-- 9      1         1         1        0         1
-- 10     0         1         1        0         1
-- 11     1         0         1        0         1
-- 12     0         0         1        0         1
-- 13     1         1         0        0         1
-- 14     0         1         0        0         1
-- 15     1         0         0        0         1
-- 16     0         0         0        0         1
-- 17     1         1         1        1         0
-- 18     0         1         1        1         0
-- 19     1         0         1        1         0
-- 20     0         0         1        1         0
-- 21     1         1         0        1         0
-- 22     0         1         0        1         0
-- 23     1         0         0        1         0
-- 24     0         0         0        1         0
-- 25     1         1         1        0         0
-- 26     0         1         1        0         0
-- 27     1         0         1        0         0
-- 28     0         0         1        0         0
-- 29     1         1         0        0         0
-- 30     0         1         0        0         0
-- 31     1         0         0        0         0
-- 32     0         0         0        0         0
--
-- In this scheme the action has the highest priority, as it is the last
-- to change, and the expiry has the least priority, as it changes the most.
-- The priorities of the expiry, the protection level and the action are
-- fixed, but the priorities of the reason and the namespace can be swapped
-- through the use of the cfg.bannerDataNamespaceHasPriority table.
--]]

-- If the reason specified to the template is listed in this table,
-- namespace data will take priority over reason data in the protectionCategories
-- table.
reasonsWithNamespacePriority = {
	vandalism = true,
},

-- The string to use as a namespace key for the protectionCategories table for each
-- namespace number.
categoryNamespaceKeys = {
	[  2] = 'user',
	[  3] = 'user',
	[  4] = 'project',
	[  6] = 'file',
	[  8] = 'mediawiki',
	[ 10] = 'template',
	[ 12] = 'project',
	[ 14] = 'category',
	[100] = 'portal',
	[828] = 'module',
},

protectionCategories = {
	['all|all|all|all|all']                  = 'Trang bị khóa hoàn toàn',
	['all|all|office|all|all']               = 'Văn phòng Wikimedia Foundation khóa',
	['all|all|reset|all|all']                = 'Văn phòng Wikimedia Foundation khóa',
	['all|all|dmca|all|all']                 = 'Văn phòng Wikimedia Foundation khóa',
	['all|all|mainpage|all|all']             = 'Hình khóa trang chính',
	['all|all|all|extendedconfirmed|all']    = 'Trang bị hạn chế cho thành viên xác nhận mở rộng',
	['all|all|ecp|extendedconfirmed|all']    = 'Trang bị hạn chế cho thành viên xác nhận mở rộng',
	['all|template|all|all|edit']            = 'Bản mẫu bị khóa',
	['all|template|all|extendedconfirmed|edit'] = 'Bản mẫu bị hạn chế cho thành viên xác nhận mở rộng',
	['all|all|all|autoconfirmed|edit']       = 'Trang bị nửa khóa',
	['indef|all|all|autoconfirmed|edit']     = 'Trang bị nửa khóa',
	['all|all|blp|autoconfirmed|edit']       = 'Tiểu sử nhân vật còn sống bị khóa',
	['temp|all|blp|autoconfirmed|edit']      = 'Tiểu sử nhân vật còn sống bị khóa',
	['all|all|dispute|autoconfirmed|edit']   = 'Trang bị khóa do có tranh chấp',
	['all|all|sock|autoconfirmed|edit']      = 'Trang bị nửa khóa',
	['all|all|vandalism|autoconfirmed|edit'] = 'Nửa khóa để tránh phá hoại',
	['all|category|all|autoconfirmed|edit']  = 'Trang bị nửa khóa',
	['all|file|all|autoconfirmed|edit']      = 'Trang bị nửa khóa',
	['all|portal|all|autoconfirmed|edit']    = 'Trang bị nửa khóa',
	['all|project|all|autoconfirmed|edit']   = 'Trang bị nửa khóa',
	['all|talk|all|autoconfirmed|edit']      = 'Trang bị nửa khóa',
	['all|template|all|autoconfirmed|edit']  = 'Bản mẫu bị hạn chế sửa đổi',
	['all|user|all|autoconfirmed|edit']      = 'Trang thành viên và thảo luận thành viên bị khóa',
	['all|all|blp|sysop|edit']               = 'Tiểu sử nhân vật còn sống bị khóa',
	['temp|all|blp|sysop|edit']              = 'Tiểu sử nhân vật còn sống bị khóa',
	['all|all|dispute|sysop|edit']           = 'Trang bị khóa do có tranh chấp',
	['all|all|sock|sysop|edit']              = 'Trang bị khóa hoàn toàn',
	['all|all|vandalism|sysop|edit']         = 'Trang bị khóa để tránh phá hoại',
	['all|category|all|sysop|edit']          = 'Trang bị khóa hoàn toàn',
	['all|file|all|sysop|edit']              = 'Trang bị khóa hoàn toàn',
	['all|project|all|sysop|edit']           = 'Trang bị khóa hoàn toàn',
	['all|talk|all|sysop|edit']              = 'Trang bị khóa hoàn toàn',
	['all|template|all|sysop|edit']          = 'Bản mẫu bị khóa',
	['all|user|all|sysop|edit']              = 'Trang thành viên và thảo luận thành viên bị khóa',
	['all|module|all|all|edit']              = 'Bản mẫu bị khóa',
	['all|module|all|extendedconfirmed|edit']= 'Bản mẫu bị khóa',
	['all|module|all|autoconfirmed|edit']    = 'Bản mẫu bị hạn chế sửa đổi',
	['all|all|all|sysop|move']               = 'Bản mẫu Wikipedia bị khóa di chuyển',
	['indef|all|all|sysop|move']             = 'Khóa không được đổi tên',
	['all|all|dispute|sysop|move']           = 'Khóa không được đổi tên',
	['all|all|vandalism|sysop|move']         = 'Khóa không được đổi tên',
	['all|portal|all|sysop|move']            = 'Trang chủ đề bị khóa không được đổi tên',
	['all|portal|all|sysop|move']            = 'Trang chủ đề bị khóa không được đổi tên',
	['all|project|all|sysop|move']           = 'Trang dự án bị khóa không được đổi tên',
	['all|talk|all|sysop|move']              = 'Khóa không được đổi tên',
	['all|template|all|sysop|move']          = 'Bản mẫu Wikipedia bị khóa di chuyển',
	['all|user|all|sysop|move']              = 'Trang thành viên và thảo luận thành viên bị khóa không được đổi tên',
	['all|all|all|autoconfirmed|autoreview'] = 'Trang Wikipedia khóa chờ thay đổi',
	['all|file|all|all|upload']              = 'Trang bị khóa hoàn toàn',
},

--------------------------------------------------------------------------------
-- Expiry category config
--------------------------------------------------------------------------------

-- This table configures the expiry category behaviour for each protection
-- action.
-- * If set to true, setting that action will always categorise the page if
--   an expiry parameter is not set.
-- * If set to false, setting that action will never categorise the page.
-- * If set to nil, the module will categorise the page if:
--   1) an expiry parameter is not set, and
--   2) a reason is provided, and
--   3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck
--      table.

expiryCheckActions = {
	edit = nil,
	move = false,
	autoreview = true,
	upload = false
},

reasonsWithoutExpiryCheck = {
	blp = true,
	template = true,
},

--------------------------------------------------------------------------------
-- Pagetypes
--------------------------------------------------------------------------------

-- This table produces the page types available with the ${PAGETYPE} parameter.
-- Keys are namespace numbers, or the string "default" for the default value.
pagetypes = {
	[0] = 'Bài viết',
	[6] = 'Tập tin',
	[10] = 'Bản mẫu',
	[14] = 'Thể loại',
	[828] = 'Mô đun',
	default = 'Trang'
},

--------------------------------------------------------------------------------
-- Strings marking indefinite protection
--------------------------------------------------------------------------------

-- This table contains values passed to the expiry parameter that mean the page
-- is protected indefinitely.
indefStrings = {
	['indef'] = true,
	['indefinite'] = true,
	['indefinitely'] = true,
	['infinite'] = true,
},

--------------------------------------------------------------------------------
-- Group hierarchy
--------------------------------------------------------------------------------

-- This table maps each group to all groups that have a superset of the original
-- group's page editing permissions.
hierarchy = {
	sysop = {},
	reviewer = {'sysop'},
	filemover = {'sysop'},
	templateeditor = {'sysop'},
	extendedconfirmed = {'sysop'},
	autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'},
	user = {'autoconfirmed'},
	['*'] = {'user'}
},

--------------------------------------------------------------------------------
-- Wrapper templates and their default arguments
--------------------------------------------------------------------------------

-- This table contains wrapper templates used with the module, and their
-- default arguments. Templates specified in this table should contain the
-- following invocation, and no other template content:
--
-- {{#invoke:Protection banner|main}}
--
-- If other content is desired, it can be added between
-- <noinclude>...</noinclude> tags.
--
-- When a user calls one of these wrapper templates, they will use the
-- default arguments automatically. However, users can override any of the
-- arguments.
wrappers = {
	['Bản mẫu:Khóa']               = {},
	['Bản mẫu:Khóa-30-500']                  = {'ecp'},
	['Bản mẫu:Khóa-tsnds']                     = {'blp'},
	-- we don't need Template:Pp-create
	['Bản mẫu:Khóa-tranh chấp']                 = {'dispute'},
	['Bản mẫu:Khóa-Commons']               = {'mainpage'},
	['Bản mẫu:Khóa-di chuyển']                    = {action = 'move'},
	['Bản mẫu:Khóa-di chuyển-tranh chấp']            = {'dispute', action = 'move'},
	-- we don't need Template:Pp-move-indef
	['Bản mẫu:Khóa-di chuyển-phá hoại']          = {'vandalism', action = 'move'},
	['Bản mẫu:Khóa-văn phòng']                  = {'office'},
	['Bản mẫu:Khóa-văn phòng-dmca']             = {'dmca'},
	['Bản mẫu:Pp-pc']                      = {action = 'autoreview', small = true},
	['Bản mẫu:Pp-pc1']                     = {action = 'autoreview', small = true},
	['Bản mẫu:Pp-reset']                   = {'reset'},
	['Bản mẫu:Khóa-nửa-vô hạn']              = {small = true},
	['Bản mẫu:Khóa-rối']                    = {'sock'},
	['Bản mẫu:Khóa-bản mẫu']       = {'template', small = false},
	['Bản mẫu:Khóa-tải lên']                  = {action = 'upload'},
	['Bản mẫu:Khóa-thảo luận thành viên']                = {'usertalk'},
	['Bản mẫu:Khóa-phá hoại']               = {'vandalism'},
},

--------------------------------------------------------------------------------
-- 
--                                 MESSAGES
-- 
--------------------------------------------------------------------------------

msg = {

--------------------------------------------------------------------------------
-- Intro blurb and intro fragment
--------------------------------------------------------------------------------

-- These messages specify what is produced by the ${INTROBLURB} and
-- ${INTROFRAGMENT} parameters. If the protection is temporary they use the
-- intro-blurb-expiry or intro-fragment-expiry, and if not they use
-- intro-blurb-noexpiry or intro-fragment-noexpiry.
-- It is possible to use banner parameters in these messages.
['intro-blurb-expiry'] = '${PROTECTIONBLURB} cho đến ${EXPIRY}.',
['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.',
['intro-fragment-expiry'] = '${PROTECTIONBLURB} cho đến ${EXPIRY},',
['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}',

--------------------------------------------------------------------------------
-- Tooltip blurb
--------------------------------------------------------------------------------

-- These messages specify what is produced by the ${TOOLTIPBLURB} parameter.
-- If the protection is temporary the tooltip-blurb-expiry message is used, and
-- if not the tooltip-blurb-noexpiry message is used.
-- It is possible to use banner parameters in these messages.
['tooltip-blurb-expiry'] = 'Trang ${PAGETYPE} này đang bị ${PROTECTIONLEVEL} cho đến ${EXPIRY}.',
['tooltip-blurb-noexpiry'] = 'Trang ${PAGETYPE} này đang bị ${PROTECTIONLEVEL}.',
['tooltip-fragment-expiry'] = 'Trang ${PAGETYPE} này đang bị ${PROTECTIONLEVEL} cho đến ${EXPIRY},',
['tooltip-fragment-noexpiry'] = 'Trang ${PAGETYPE} này đang bị ${PROTECTIONLEVEL}',

--------------------------------------------------------------------------------
-- Special explanation blurb
--------------------------------------------------------------------------------

-- An explanation blurb for pages that cannot be unprotected, e.g. for pages
-- in the MediaWiki namespace.
-- It is possible to use banner parameters in this message.
['explanation-blurb-nounprotect'] = 'Xem [[Wikisource:Quy định khóa|'
	.. 'quy định khóa trang]] và ${PROTECTIONLOG} để biết thêm thông tin.'
	.. ' Vui lòng thảo luận về bất kỳ thay đổi tại ${TALKPAGE}; bạn'
	.. ' có thể ${EDITREQUEST} yêu cầu một'
	.. ' [[Wikisource:Bảo quản viên|bảo quản viên]] sửa đổi nếu nó'
	.. ' là sửa đổi [[Trợ giúp:Sửa đổi nhỏ#Khi nào được đánh dấu sửa đổi là nhỏ'
	.. '|không gây hại]] hoặc được đồng ý bởi [[w:Wikipedia:Đồng thuận'
	.. '|sự đồng thuận]].',

--------------------------------------------------------------------------------
-- Protection log display values
--------------------------------------------------------------------------------

-- These messages determine the display values for the protection log link
-- or the pending changes log link produced by the ${PROTECTIONLOG} parameter.
-- It is possible to use banner parameters in these messages.
['protection-log-display'] = 'nhật trình khóa',
['pc-log-display'] = 'nhật trình thay đổi đang chờ xử lý',

--------------------------------------------------------------------------------
-- Current version display values
--------------------------------------------------------------------------------

-- These messages determine the display values for the page history link
-- or the move log link produced by the ${CURRENTVERSION} parameter.
-- It is possible to use banner parameters in these messages.
['current-version-move-display'] = 'tiêu đề hiện tại',
['current-version-edit-display'] = 'phiên bản hiện tại',

--------------------------------------------------------------------------------
-- Talk page
--------------------------------------------------------------------------------

-- This message determines the display value of the talk page link produced
-- with the ${TALKPAGE} parameter.
-- It is possible to use banner parameters in this message.
['talk-page-link-display'] = 'trang thảo luận',

--------------------------------------------------------------------------------
-- Edit requests
--------------------------------------------------------------------------------

-- This message determines the display value of the edit request link produced
-- with the ${EDITREQUEST} parameter.
-- It is possible to use banner parameters in this message.
['edit-request-display'] = 'gửi yêu cầu sửa đổi bằng cách dùng'
.. ' &#123;&#123;[[Bản mẫu:Sửa trang nửa khóa|Sửa trang nửa khóa]]&#125;&#125; (đối với trang bị khóa hạn chế sửa đổi)'
.. ' hoặc &#123;&#123;[[Bản mẫu:Sửa trang khóa|sửa trang khóa]]&#125;&#125; (đối với trang bị khóa ở các mức độ khác)',
--------------------------------------------------------------------------------
-- Expiry date format
--------------------------------------------------------------------------------

-- This is the format for the blurb expiry date. It should be valid input for
-- the first parameter of the #time parser function.
['expiry-date-format'] = 'j F, Y "vào" H:i e',

--------------------------------------------------------------------------------
-- Tracking categories
--------------------------------------------------------------------------------

-- These messages determine which tracking categories the module outputs.
['tracking-category-incorrect'] = 'Trang có tham số bản mẫu khóa trang không đúng',
['tracking-category-template'] = 'Trang có tham số bản mẫu khóa trang không đúng',

--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------

-- These are images that are not defined by their protection action and protection level.
['image-filename-indef'] = 'Padlock.svg',
['image-filename-default'] = 'Transparent.gif',

--------------------------------------------------------------------------------
-- End messages
--------------------------------------------------------------------------------
}

--------------------------------------------------------------------------------
-- End configuration
--------------------------------------------------------------------------------
}