Chú ý: Sau khi lưu trang này, phải xóa bộ nhớ đệm (cache) của trình duyệt để những thay đổi hiện ra

  • Firefox / Safari: Nhấn giữ phím Shift trong khi nhấn Tải lại (Reload), hoặc nhấn tổ hợp Ctrl-F5 hay Ctrl-R (⌘R trên Mac)
  • Google Chrome: Nhấn tổ hợp Ctrl-Shift-R (⇧⌘R trên Mac)
  • Internet Explorer / Edge: Nhấn giữ phím Ctrl trong khi nhấn Làm tươi (Refresh), hoặc nhấn tổ hợp Ctrl-F5
  • Opera: Nhấn tổ hợp Ctrl-F5.
(function ($) {
	$.wiktviHeaders = {
		aliases: {
			abbr: "abr", adverb: "adv", chia: "forms", "danh từ": "noun",
			dut: "nld", en: "eng", etym: "etymology", hani: "Hani",
			"liên từ": "prep", nl: "nld", note: "dfn", phrase: "idiom",
			proper: "pr-noun", proverb: "expr", "thành ngữ": "idiom",
			"thán từ": "interj", "tính từ": "adj", "từ nguyên": "etymology",
			vi: "vie", "đồng nghĩa": "syn", "động từ": "verb" },
		headers: {},
		getHeader: function (id) {
			return this.headers[this.aliases[id] || id];
		},
		isInitialized: false };
	
	$.wiktviHeaders.get = function (callback, lang) {
		if ($.wiktviHeaders.isInitialized) {
			callback($.wiktviHeaders.headers);
			return;
		}
		
		var api = new mw.Api();
		api.get({
			action: "parse",
			page: "Bản mẫu:*đề mục",
			prop: "sections",
			uselang: lang || mw.config.get("wgUserLanguage"),
			format: "json",
			maxage: 60 * 60 * 24 * 7 /* 1 tuần */ }).done(function (json) {
			var sections = json && json.parse && json.parse.sections;
			if (!sections) return;
			
			// Chuyển đổi từ section thành header.
			$.each(sections, function (i, section) {
				var tmplName = section.fromtitle.match(/B\u1ea3n_m\u1eabu:-(.+)-/);
				tmplName = tmplName && tmplName[1];
				if (!tmplName) return;
				$.wiktviHeaders.headers[tmplName] = {
					level: section.level - 1,
					name: section.line && section.line.replace(/<\/?\w+>/g, "") };
			});
			
			if (callback) callback($.wiktviHeaders.headers);
		});
		
		$.wiktviHeaders.isInitialized = true;
	};
})(jQuery);