Вікікнігі bewikibooks https://be.wikibooks.org/wiki/%D0%93%D0%B0%D0%BB%D0%BE%D1%9E%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D0%B0%D1%80%D0%BE%D0%BD%D0%BA%D0%B0 MediaWiki 1.47.0-wmf.5 first-letter Мультымедыя Адмысловае Размовы Удзельнік Размовы з удзельнікам Вікікнігі Размовы пра Вікікнігі Файл Размовы пра файл MediaWiki Размовы пра MediaWiki Шаблон Размовы пра шаблон Даведка Размовы пра даведку Катэгорыя Размовы пра катэгорыю TimedText TimedText talk Модуль Размовы пра модуль Event Event talk Модуль:Infobox 828 3415 8065 2026-06-05T15:54:54Z Jarash 1066 Новая старонка: «local p = {} local args = {} local origArgs = {} local root local empty_row_categories = {} local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]' local has_rows = false local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = 'Plainlist/styles.css' }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s',...» 8065 Scribunto text/plain local p = {} local args = {} local origArgs = {} local root local empty_row_categories = {} local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]' local has_rows = false local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = 'Plainlist/styles.css' }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = 'Hlist/styles.css' } } local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for _, arg in pairs(args_to_check) do for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end local function fixChildBoxes(sval, tt) local function notempty( s ) return s and s:match( '%S' ) end if notempty(sval) then local marker = '<span class=special_infobox_marker>' local s = sval -- пачатак пераносу стыляў шаблонаў ды катэгорый унутр радкоў табліцы local slast = '' while slast ~= s do slast = s s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1') end -- канец пераносу стыляў шаблонаў ды катэгорый унутр радкоў табліцы s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker) if s:match(marker) then s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '') s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1') s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1') s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1') end if s:match(marker) then local subcells = mw.text.split(s, marker) s = '' for k = 1, #subcells do if k == 1 then s = s .. subcells[k] .. '</' .. tt .. '></tr>' elseif k == #subcells then local rowstyle = ' style="display:none"' if notempty(subcells[k]) then rowstyle = '' end s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k] elseif notempty(subcells[k]) then if (k % 2) == 0 then s = s .. subcells[k] else s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>' end end end end -- наступныя два радкі дадаюць перанос на новы радок напрыканцы спісаў для парсера PHP -- [[en:Special:Diff/849054481]] -- выдаліць, калі будзе выпраўлена [[:phab:T191516]] або калі памылка будзе выпраўленая. s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1') s = mw.ustring.gsub(s, '^(%{%|)', '\n%1') return s else return sval end end -- Чысціць пустыя табліцы local function cleanInfobox() root = tostring(root) if has_rows == false then root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '') end end -- Вяртае злучэнне значэнняў двух табліц, як паслядоўнасць. local function union(t1, t2) local vals = {} for k, v in pairs(t1) do vals[v] = true end for k, v in pairs(t2) do vals[v] = true end local ret = {} for k, v in pairs(vals) do table.insert(ret, k) end return ret end -- Вяртае табліцу, якая ўтрымлівае лікі аргументаў, якія існуюць -- для пэўнага прэфікса. Напрыклад, калі прэфікс быў 'data', і існуюць -- 'data1', 'data2', і 'data5', ён павінен выдаваць {1, 2, 5}. local function getArgNums(prefix) local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -- Дадае радок да інфармацыйнай карткі, аб з загалоўкам ячэйкі, або -- з камбінацыяй подпісу/дадзеных ячэйкі. local function addRow(rowArgs) if rowArgs.header and rowArgs.header ~= '_BLANK_' then has_rows = true has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass }) root :tag('tr') :addClass(rowArgs.rowclass) :cssText(rowArgs.rowstyle) :tag('th') :attr('colspan', '2') :addClass('infobox-header') :addClass(rowArgs.class) :addClass(args.headerclass) :cssText(args.headerstyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.header, 'th')) if rowArgs.data then root:wikitext( '[[Катэгорыя:Старонкі, якія выкарыстоўваюць шаблоны інфармацыйных карткак з ячэйкамі дадзеных, якія ігнаруюцца]]' ) end elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ rowArgs.rowclass, rowArgs.class }) local row = root:tag('tr') row:addClass(rowArgs.rowclass) row:cssText(rowArgs.rowstyle) if rowArgs.label then row :tag('th') :attr('scope', 'row') :addClass('infobox-label') :cssText(args.labelstyle) :cssText(rowArgs.rowcellstyle) :wikitext(rowArgs.label) :done() end local dataCell = row:tag('td') dataCell :attr('colspan', not rowArgs.label and '2' or nil) :addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data') :addClass(rowArgs.class) :cssText(rowArgs.datastyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.data, 'td')) else table.insert(empty_row_categories, rowArgs.data or '') end end local function renderTitle() if not args.title then return end has_rows = true has_list_class({args.titleclass}) root :tag('caption') :addClass('infobox-title') :addClass(args.titleclass) :cssText(args.titlestyle) :wikitext(args.title) end local function renderAboveRow() if not args.above then return end has_rows = true has_list_class({ args.aboveclass }) root :tag('tr') :tag('th') :attr('colspan', '2') :addClass('infobox-above') :addClass(args.aboveclass) :cssText(args.abovestyle) :wikitext(fixChildBoxes(args.above,'th')) end local function renderBelowRow() if not args.below then return end has_rows = true has_list_class({ args.belowclass }) root :tag('tr') :tag('td') :attr('colspan', '2') :addClass('infobox-below') :addClass(args.belowclass) :cssText(args.belowstyle) :wikitext(fixChildBoxes(args.below,'td')) end local function addSubheaderRow(subheaderArgs) if subheaderArgs.data and subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ subheaderArgs.rowclass, subheaderArgs.class }) local row = root:tag('tr') row:addClass(subheaderArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '2') :addClass('infobox-subheader') :addClass(subheaderArgs.class) :cssText(subheaderArgs.datastyle) :cssText(subheaderArgs.rowcellstyle) :wikitext(fixChildBoxes(subheaderArgs.data, 'td')) else table.insert(empty_row_categories, subheaderArgs.data or '') end end local function renderSubheaders() if args.subheader then args.subheader1 = args.subheader end if args.subheaderrowclass then args.subheaderrowclass1 = args.subheaderrowclass end local subheadernums = getArgNums('subheader') for k, num in ipairs(subheadernums) do addSubheaderRow({ data = args['subheader' .. tostring(num)], datastyle = args.subheaderstyle, rowcellstyle = args['subheaderstyle' .. tostring(num)], class = args.subheaderclass, rowclass = args['subheaderrowclass' .. tostring(num)] }) end end local function addImageRow(imageArgs) if imageArgs.data and imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ imageArgs.rowclass, imageArgs.class }) local row = root:tag('tr') row:addClass(imageArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '2') :addClass('infobox-image') :addClass(imageArgs.class) :cssText(imageArgs.datastyle) :wikitext(fixChildBoxes(imageArgs.data, 'td')) else table.insert(empty_row_categories, imageArgs.data or '') end end local function renderImages() if args.image then args.image1 = args.image end if args.caption then args.caption1 = args.caption end local imagenums = getArgNums('image') for k, num in ipairs(imagenums) do local caption = args['caption' .. tostring(num)] local data = mw.html.create():wikitext(args['image' .. tostring(num)]) if caption then data :tag('div') :addClass('infobox-caption') :cssText(args.captionstyle) :wikitext(caption) end addImageRow({ data = tostring(data), datastyle = args.imagestyle, class = args.imageclass, rowclass = args['imagerowclass' .. tostring(num)] }) end end -- Калі аўтаматычныя загалоўкі ўключаныя, праводзіцца папярэдняя апрацоўка радкоў local function preprocessRows() if not args.autoheaders then return end local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) local lastheader for k, num in ipairs(rownums) do if args['header' .. tostring(num)] then if lastheader then args['header' .. tostring(lastheader)] = nil end lastheader = num elseif args['data' .. tostring(num)] and args['data' .. tostring(num)]:gsub( category_in_empty_row_pattern, '' ):match('^%S') then local data = args['data' .. tostring(num)] if data:gsub(category_in_empty_row_pattern, ''):match('%S') then lastheader = nil end end end if lastheader then args['header' .. tostring(lastheader)] = nil end end -- Атрымлівае аб’яднанне загалоўка і лікаў аргументаў дадзеных, -- і выводзіць іх усіх па парадку local function renderRows() local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) for k, num in ipairs(rownums) do addRow({ header = args['header' .. tostring(num)], label = args['label' .. tostring(num)], data = args['data' .. tostring(num)], datastyle = args.datastyle, class = args['class' .. tostring(num)], rowclass = args['rowclass' .. tostring(num)], rowstyle = args['rowstyle' .. tostring(num)], rowcellstyle = args['rowcellstyle' .. tostring(num)] }) end end local function renderNavBar() if not args.name then return end has_rows = true root :tag('tr') :tag('td') :attr('colspan', '2') :addClass('infobox-navbar') :wikitext(require('Модуль:Navbar')._navbar{ args.name, mini = 1, }) end -- Катэгорыі з радкоў, якія ў астатніх выпадках пустыя, збіраюцца ў empty_row_categories. -- Гэтая функцыя дадае іх да вываду з модуля. Гэта не выклікана -- args.decat , таму што гэты модуль не павінен прадухіляць катэгорыі, не звязаныя з модулем, -- ад выкліку. local function renderEmptyRowCategories() for _, s in ipairs(empty_row_categories) do root:wikitext(s) end end -- Выклікаць катэгорыі адсочвання. args.decat == адключае катэгорыі адсочвання. local function renderTrackingCategories() if args.decat == 'yes' then return end if args.child == 'yes' then if args.title then root:wikitext( '[[Катэгорыя:Старонкі, якія выкарыстоўваюць убудаваныя шаблоны інфармацыйных картак з параметрам title]]' ) end elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then root:wikitext('[[Катэгорыя:Старонкі, якія выкарыстоўваюць убудаваныя шаблоны інфармацыйных картак без радкоў дадзеных]]') end end --[=[ Загружае стылі шаблонаў для інфармацыйнай карткі. ]=] local function loadTemplateStyles() local frame = mw.getCurrentFrame() local hlist_templatestyles = '' if lists.hlist_t.found then hlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.hlist_t.styles } } end local plainlist_templatestyles = '' if lists.plainlist_t.found then plainlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.plainlist_t.styles } } end -- Глядзіце апісанне функцыі local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' } } local templatestyles = '' if args['templatestyles'] then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['templatestyles'] } } end local child_templatestyles = '' if args['child templatestyles'] then child_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['child templatestyles'] } } end local grandchild_templatestyles = '' if args['grandchild templatestyles'] then grandchild_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['grandchild templatestyles'] } } end return table.concat({ -- hlist -> plainlist -> base найлепшы высілак, каб захаваць стары парадак Common.css. -- гэты парадак не гарантыя, таму што патрэбныя шэрагі, якія выклікаюць -- кожны клас, могуць не быць на пэўнай старонцы hlist_templatestyles, plainlist_templatestyles, base_templatestyles, templatestyles, child_templatestyles, grandchild_templatestyles }) end -- агульныя функцыі паміж даччынным і не даччынным выпадкамі local function structure_infobox_common() renderSubheaders() renderImages() preprocessRows() renderRows() renderBelowRow() renderNavBar() renderEmptyRowCategories() renderTrackingCategories() cleanInfobox() end -- Вызначыць агульнае размяшчэнне інфармацыйнай карткі, з асаблівымі наладкамі, калі -- інфармацыйная картка выкарыстоўваецца ў выглядзе 'даччыннай' унутры іншай інфармацыйнай карткі. local function _infobox() if args.child ~= 'yes' then root = mw.html.create('table') root :addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox') :addClass(args.bodyclass) :cssText(args.bodystyle) has_list_class({ args.bodyclass }) renderTitle() renderAboveRow() else root = mw.html.create() root :wikitext(args.title) end structure_infobox_common() return loadTemplateStyles() .. root end -- Калі аргумент існуе і не пусты, дадаць яго да табліцы аргументаў. -- Пустыя аргументы разглядаюцца як пустое значэнне, каб адпавядаць паводзінам ParserFunctions. local function preprocessSingleArg(argName) if origArgs[argName] and origArgs[argName] ~= '' then args[argName] = origArgs[argName] end end -- Прысвоіць параметры з дадзенымі прэфіксамі табліцы args, каб атрымалася як пазначана у -- паслядоўнасці памераў крокаў. Гэта прадухіліць крыніцы і інш. ад -- паказу ў няправільным парадку. prefixTable павінна быць масівам, які ўтрымлівае -- табліцы, кожная з якіх мае два магчымых поля, радок "prefix" ды -- табліцу "depend". Функцыя заўсёды апрацоўвае параметры, якія ўтрымліваюць радок -- "prefix", але апрацоўвае толькі тыя параметры ў табліцы "depend", калі маецца параметр prefix -- і ён не пусты. local function preprocessArgs(prefixTable, step) if type(prefixTable) ~= 'table' then error("Выяўлена значэнне не табліцы для табліцы prefix", 2) end if type(step) ~= 'number' then error("Выяўлена няправільна значэнне кроку", 2) end -- Узяць аргументы без суфікса number і праверыць на памылковы ўвод. for i,v in ipairs(prefixTable) do if type(v) ~= 'table' or type(v.prefix) ~= "string" or (v.depend and type(v.depend) ~= 'table') then error('Выяўлены няправільны ўвод у табліцу preprocessArgs prefix', 2) end preprocessSingleArg(v.prefix) -- Толькі апрацоўваць параметр depend, калі параметр prefix наяўны і -- не пусты. if args[v.prefix] and v.depend then for j, dependValue in ipairs(v.depend) do if type(dependValue) ~= 'string' then error('Выяўлена няправільнае значэнне параметра "depend" у preprocessArgs') end preprocessSingleArg(dependValue) end end end -- Узяць аргументы з суфіксамі number. local a = 1 -- Пераменная лічыльніка. local moreArgumentsExist = true while moreArgumentsExist == true do moreArgumentsExist = false for i = a, a + step - 1 do for j,v in ipairs(prefixTable) do local prefixArgName = v.prefix .. tostring(i) if origArgs[prefixArgName] then -- Зрабіць яшчэ адзін цыкл, калі якія-небудзь аргументы знойдзеныя, нават пустыя. moreArgumentsExist = true preprocessSingleArg(prefixArgName) end -- Апрацаваць табліцу depend, калі ёсць аргумент prefix -- і ён не пусты, ці мы апрацоўваем "prefix1" і "prefix" маецца -- і не пустое, і калі маецца табліца depend. if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then for j,dependValue in ipairs(v.depend) do local dependArgName = dependValue .. tostring(i) preprocessSingleArg(dependArgName) end end end end a = a + step end end -- Апрацаваць параметры дадзеныя data у тым самым парадку, як гэта рабіў стары {{infobox}}, так што -- гэтыя спасылкі і інш. будуць паказвацца там, дзе і трэба. Параметры, якія -- залежаць ад іншага параметра, апрацоўваюцца толькі калі гэты параметр наяўны, -- каб пазбегнуць фантомныя спасылкі, якія паказваюцца ў спісах крыніц артыкула. local function parseDataParameters() preprocessSingleArg('autoheaders') preprocessSingleArg('child') preprocessSingleArg('bodyclass') preprocessSingleArg('subbox') preprocessSingleArg('bodystyle') preprocessSingleArg('title') preprocessSingleArg('titleclass') preprocessSingleArg('titlestyle') preprocessSingleArg('above') preprocessSingleArg('aboveclass') preprocessSingleArg('abovestyle') preprocessArgs({ {prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}} }, 10) preprocessSingleArg('subheaderstyle') preprocessSingleArg('subheaderclass') preprocessArgs({ {prefix = 'image', depend = {'caption', 'imagerowclass'}} }, 10) preprocessSingleArg('captionstyle') preprocessSingleArg('imagestyle') preprocessSingleArg('imageclass') preprocessArgs({ {prefix = 'header'}, {prefix = 'data', depend = {'label'}}, {prefix = 'rowclass'}, {prefix = 'rowstyle'}, {prefix = 'rowcellstyle'}, {prefix = 'class'} }, 50) preprocessSingleArg('headerclass') preprocessSingleArg('headerstyle') preprocessSingleArg('labelstyle') preprocessSingleArg('datastyle') preprocessSingleArg('below') preprocessSingleArg('belowclass') preprocessSingleArg('belowstyle') preprocessSingleArg('name') -- розныя паводзіны для курсіву, калі пуста ці адутнічае args['italic title'] = origArgs['italic title'] preprocessSingleArg('decat') preprocessSingleArg('templatestyles') preprocessSingleArg('child templatestyles') preprocessSingleArg('grandchild templatestyles') end -- Калі выклікаецца праз #invoke, выкарыстоўваць аргументы, якія перадаюцца шаблону, які выкарыстоўвае модуль. -- У адваротным выпадку, для мэтаў тэсціравання; лічыць, што аргументы перадаюцца напрамую. function p.infobox(frame) if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args else origArgs = frame end parseDataParameters() return _infobox() end -- Для выкліку праз #invoke унутры шаблона function p.infoboxTemplate(frame) origArgs = {} for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end parseDataParameters() return _infobox() end return p h6gj1z5zzmgzrx5aq8io3lfhxht352r Шаблон:Infobox/styles.css 10 3416 8066 2026-06-05T18:53:13Z Jarash 1066 Новая старонка: «.infobox { border: 1px solid #a2a9b1; color: black; padding: 0.2em; font-size: 88%; line-height: 1.5em; border-spacing: 3px; } @media screen { .infobox { background-color: #f8f9fa; } } @media (max-width: 640px) { .infobox { width: 100%; } .infobox .nowrap { white-space: normal; } } @media (min-width: 640px) { .infobox { /* @noflip */ margin: 0.5em 0 0.5em 1em; /* @noflip */ float: right; /* @noflip */ clear: right;...» 8066 sanitized-css text/css .infobox { border: 1px solid #a2a9b1; color: black; padding: 0.2em; font-size: 88%; line-height: 1.5em; border-spacing: 3px; } @media screen { .infobox { background-color: #f8f9fa; } } @media (max-width: 640px) { .infobox { width: 100%; } .infobox .nowrap { white-space: normal; } } @media (min-width: 640px) { .infobox { /* @noflip */ margin: 0.5em 0 0.5em 1em; /* @noflip */ float: right; /* @noflip */ clear: right; width: 22em; } } .infobox-header, .infobox-label, .infobox-above, .infobox-full-data, .infobox-data, .infobox-below, .infobox-subheader, .infobox-image, .infobox-navbar, /* Выдаліце селектар элемента, калі кожны .infobox выкарыстоўвае стандартны модуль/шаблоны */ .infobox th, .infobox td { vertical-align: top; } .infobox-label, .infobox-data, /* Выдаліце селектар элемента, калі кожны .infobox выкарыстоўвае стандартны модуль/шаблоны */ .infobox th, .infobox td { /* @noflip */ text-align: left; } /* Выдаліце .infobox , калі селектары элементаў вышэй выдаленыя */ .infobox .infobox-above, .infobox .infobox-title, /* Выдаліце селектар элемента, калі кожны .infobox выкарыстоўвае стандартны модуль/шаблоны */ .infobox caption { font-size: 125%; font-weight: bold; text-align: center; } .infobox-title, /* Выдаліце селектар элемента, калі кожны .infobox выкарыстоўвае стандартны модуль/шаблоны */ .infobox caption { padding: 0.2em; } /* Выдаліце .infobox , калі селектары элемента вышэй выдаленыя */ .infobox .infobox-header, .infobox .infobox-subheader, .infobox .infobox-image, .infobox .infobox-full-data, .infobox .infobox-below { text-align: center; } /* Выдаліце .infobox , калі селектары элемента вышэй выдаленыя */ .infobox .infobox-navbar { /* @noflip */ text-align: right; } n3s4ypeownjckhjyo1vatkrvzi169ev Шаблон:Template other 10 3417 8067 2026-06-05T19:02:58Z Jarash 1066 Новая старонка: «{{#switch: <!--Калі адсутнічае ці пусты параметр "demospace", тады вызначаецца прастора назваў--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Выкарыстоўваць "demospace" малымі літарамі--> | {{#ifeq:{{NAMESPACE}}|{{ns:Template}} | template | other }} }} | template = {{{1|}}} | other | #default = {{{2|}}} }}<!--Канец switch--><noinclude...» 8067 wikitext text/x-wiki {{#switch: <!--Калі адсутнічае ці пусты параметр "demospace", тады вызначаецца прастора назваў--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Выкарыстоўваць "demospace" малымі літарамі--> | {{#ifeq:{{NAMESPACE}}|{{ns:Template}} | template | other }} }} | template = {{{1|}}} | other | #default = {{{2|}}} }}<!--Канец switch--><noinclude> {{Doc}} <!-- Дадавайце катэгорыі на падстаронку /doc, а не сюды! --> </noinclude> jkvj0w0utk68yca9at65p2z9geec8lr Ісландская кухня 0 3418 8068 2026-06-05T20:27:35Z Jarash 1066 Новая старонка: «'''Ісландская кухня''' (Þorramatur) — традыцыйная ісландская ежа, якая гатуецца пераважна з мяса ды марскіх прадуктаў традыцыйна прыгатаваных, нарэзаных на слаі ці кавалкі і пададзеных з rúgbrauð (цвёрды і цёмны жытні хлеб), маслам ды brennivín (ісландская акавіта). Þ...» 8068 wikitext text/x-wiki '''Ісландская кухня''' (Þorramatur) — традыцыйная ісландская ежа, якая гатуецца пераважна з мяса ды марскіх прадуктаў традыцыйна прыгатаваных, нарэзаных на слаі ці кавалкі і пададзеных з rúgbrauð (цвёрды і цёмны жытні хлеб), маслам ды brennivín (ісландская акавіта). Þorramatur спажываецца падчас старажытнага поўночанага месяца þorri (Thorri), ад студзеня да лютага, асабліва падчас паста Þorrablót (Thorrablot) сярэдзіне зімы ў гонар старажытнай культуры. Такім чынам, злучаная традыцыяй фестываляў Þorrablót, Ісландская кухня найчасцей падаецца ў буфетах. == Стравы == Ісландская кухня складаецца з шматлікіх страў, сярод якіх * '''Хакарль''', тушаная грынландская акула * '''Свід''', вараная галава авечкі, часам вытрымліваецца ў малочнай кіслаце * '''Стокфіск''', сушаная рыба (звычайна трэска ці пікша), падаецца з маслам * '''Хангік’ёт''', (hung meat), капочонае і варанае мяса баранчыка ці авечкі [[en:Cookbook:Cuisine of Iceland]] [[ka:კულინარული წიგნი:ისლანდიური სამზარეულო]] bwgp4bc0uge3rfyqxk0wmm4fiqpujxj