Википеди oswiki https://os.wikipedia.org/wiki/%D0%A1%C3%A6%D0%B9%D1%80%D0%B0%D0%B3_%D1%84%D0%B0%D1%80%D1%81 MediaWiki 1.46.0-wmf.26 first-letter Медиа Сæрмагонд Тæрхон Архайæг Архайæджы ныхас Википеди Википедийы тæрхон Файл Файлы тæрхон MediaWiki MediaWiki-йы тæрхон Хуызæг Хуызæджы тæрхон Æххуыс Æххуысы тæрхон Категори Категорийы тæрхон TimedText TimedText talk Модуль Обсуждение модуля Event Event talk Хуызæг:ПозКартæ+ 10 13067 594555 594522 2026-05-02T17:49:55Z Taamu 795 594555 wikitext text/x-wiki <includeonly>{{#ifexist:template:ПозКартæ {{{1}}}|{{#if:{{{alt|}}}|{{#ifexist:Media:{{{alt|}}}|[[Категори:Википедия:Изображения для переноса в ПозКарты]]}}}}<templatestyles src="Хуызæг:ПозКартæ/styles.css" /><div class="location-map {{#switch:Q{{{caption|-}}}|Q|Q-=|thumb}} {{#switch:{{{float|right}}}|left|right=t{{{float|right}}}|none=tright}}" style="width:{{#expr:{{{width|240}}}+{{#if:{{{caption|}}}|10|0}}}}px;{{#switch:{{{border|}}}Q|noneQ=border:none|Q=;|border:1px solid {{{border}}}}};{{#ifeq:{{{float|}}}|center|margin:0 auto}}"><div class="{{#switch:Q{{{caption|-}}}|Q|Q-=|thumbinner}}"><div class="thumbimage" style="overflow:hidden;max-width:100%;width:{{{width|240}}}px;position:relative;{{#switch:{{{border|}}}Q|noneQ=border:none|Q=;|border:1px solid {{{border}}}}}">{{#if:{{ПозКартæ {{{1|Зæхх}}}|areas|{{{areas|}}}}}|{{#tag:imagemap|Файл:{{#ifexist:Media:{{{alt|}}}|{{{alt}}}|{{ПозКартæ {{{1|Зæхх}}}|image|{{{alt|}}}}}}}{{!}}{{{width|240}}}px{{!}}{{#if:{{{altname|}}}|{{{altname}}}|{{#if:{{{label|}}}|{{{label}}}|{{PAGENAME}}}} ({{ПозКартæ {{{1|Зæхх}}}|name}})}} {{#ifeq:{{{areas|}}}|{{{alt|}}}|{{ПозКартæ {{{1|Зæхх}}}|areas|{{{areas|}}}}}|default [[:Файл:{{ПозКартæ {{{1|Зæхх}}}|image|{{{alt|}}}}}]] desc none}}}}|[[Файл:{{#ifexist:Media:{{{alt|}}}|{{{alt}}}|{{ПозКартæ {{{1|Зæхх}}}|image|{{{alt|}}}}}}}{{!}}{{{width|240}}}px{{!}}{{#if:{{{altname|}}}|{{{altname}}}|{{#if:{{{label|}}}|{{{label}}}|{{PAGENAME}}}} ({{ПозКартæ {{{1|Зæхх}}}|name}})}}]]}}{{{places|}}}</div>{{#if:{{{caption|-}}}|<div class="thumbcaption">{{#ifeq:{{{caption|-}}}|-|{{#if:{{{label|}}}|{{{label}}}, {{ПозКартæ {{{1|Зæхх}}}|name}}|{{PAGENAME}}, {{ПозКартæ {{{1|Зæхх}}}|name}}}}|{{{caption|}}}}}</div>}}</div></div>|<div class="error">''{{{1}}}'' ещё не имеет [[Хуызæг:ПозКартæ {{{1}}}|позиционной карты]].</div>[[Категори:Википедия:Неверно указанные ПозКарты]]}}</includeonly><noinclude>{{doc|Хуызæг:ПозКартæ/doc}}</noinclude> d3d99djdzuzak1tlasbmepkkxwrhmak Гури 0 17059 594566 554311 2026-05-02T18:09:03Z Taamu 795 594566 wikitext text/x-wiki {{Административон иуæг |Хуыз1 = {{Хуыз|Гуырдзыстон}} |Хуыз2 = |Ирон ном = Гури |Оригиналон ном = {{lang-ka|გურია}} |Герб = |Тырыса = |Паддзахад = Гуырдзыстон |Гимн = |Статус = Регион |Кæй сконды у = |Датæ = |Йæ дæлхæйттæ = |Сæйраг сахар = [[Озургети]] |СтырдæрСахартæ = |Сæргълæууæг = |Сæргълæууæджы титул = |Сæргълæууæг2 = |Сæргълæууæджы титул2 = |ÆМП = |ÆМП-ы аз = |Бынат ÆМП-мæ гæсгæ = |ÆМП иу адæймагмæ = |Бынат ÆМП иу адæймагмæ гæсгæ = |ÆРП = |ÆРП-ы аз = |Бынат ÆРП-мæ гæсгæ = |ÆРП иу адæймагмæ = |Бынат ÆРП иу адæймагмæ гæсгæ = |Æвзаг = |Æвзæгтæ = |Цæрджытæ = |Сфысты аз = |Цæрджыты нымæцмæ гæсгæ бынат = |Æнгомдзинад = |Националон сконд = [[гуырдзиаг адæм|гуырдзы]] (98,1%) |Динмæ гæсгæ = |Фæзуат = |Фæзуатмæ гæсгæ бынат = |Картæ = Guria in Georgia.svg |Картæйы ас = |Административон иуæджы картæ = Georgia Guria relief location map.svg |Картæйы ас аи = |СахатонТаг = +4 |ISO = GE-GU |Автомобилон код = |Сайт = |ВикиКъæбицы категори = }} '''Гу́ри''' ({{lang-ka|გურია}}) у историон бæстæ æмæ край (мхаре) [[Гуырдзыстон]]ы ныгуылæны. Йæ сæйраг сахар у [[Озургети]]. == Фиппаинæгтæ == {{фиппаинæгтæ}} {{къæртт-Гуырдзыстон}} {{Гуырдзыстоны административон дих}} {{Гуырдзыстоны историон регионтæ}} [[Категори:Гуырдзыстоны регионтæ]] nuvn219qt4h11900oemwlxnin1y07yv Шарой 0 17871 594543 537863 2026-05-02T13:49:39Z Taamu 795 594543 wikitext text/x-wiki {{ЦР |Статус = Хъæу |Ирон ном = Шарой |Оригиналон ном = {{lang-ce|Шара}} |Ныв = |Ном = |Паддзахад = Уæрæсе |Герб = |Тырыса = |Гербы уæрх = |Тырысайы уæрх = |lat_deg = |lat_min = |lat_sec = |lon_deg = |lon_min = |lon_sec = |CoordAddon = |CoordScale = |Паддзахады картæйы ас = 300 |Регионы картæйы ас = 300 |Районы картæйы ас = 300 |Регионы тип = Уæрæсейы федеративон арæзт{{!}}Федерацийы субъект |Регион = Цæцæн |Регион таблицæйы = Цæцæн |Районы тип = Муниципалон район (Уæрæсе){{!}}Муниципалон район |Район = Шаройы район |Район таблицæйы = Шаройы район |Æмбалады тип = |Æмбалад = |Сæргълæууæджы тип = |Сæргълæууæг = |Бындурæвæрд = |Раздæры нæмттæ = |Статус кæдæй = |Фыццаг кой = |Фæзуат = |Бæрзæнды тип = |Центры бæрзæнд = |Бæстыхъæд = |Официалон æвзаг = |Официалон æвзаг-ref = |Цæрджытæ = {{ Цæрджытæ | Шарой (село) | тс }} |Сфысты аз = {{ Цæрджытæ | Шарой (село) | г }} |Æнгомдзинад = |Агломераци = |Националон сконд = [[цæцæйнæгтæ]] |Динон сконд = |Сахатон таг = +3 |DST = |Телефонон код = |Посты индекстæ = 366413 |Автомобилон код = |Идентификаторы тип = |Цифрон идентификатор = |ВикиКъæбицы категори = |Сайт = |Сайты æвзаг = }} '''Шарой''' ({{lang-ce|Шара}}, {{lang-ru|Шарой}}) у хъæу [[Цæцæн]]ы [[Шаройы район]]ы. == Фиппаинæгтæ == {{фиппаинæгтæ}} {{къæртт-Цæцæн}} {{Шаройы районы цæрæнрæттæ}} [[Категори:Шаройы районы цæрæнрæттæ]] j49sso7s39s8hlkzfeh55is2b7nmsnl Цмийаг ком 0 31956 594546 578628 2026-05-02T14:10:01Z Taamu 795 594546 wikitext text/x-wiki '''Цмийаг ком''' (''[[Цыми (Алагиры район)|Цыми]]'' + ''ком'') у ком [[Цæгат Ирыстон]]ы [[Алагиры район]]ы, цæугæдон [[Цмийаг комы дон]]ы дæргъмæ. == Хъæутæ == * [[Сагол]] * [[Тоборза]] * [[Цыми (Алагиры район)|Цыми]] == Комы топонимтæ == * [[Куыройы фыдтæ]] * [[Пусалгъаты ком]] * [[Цмийаг комы цъити]] == Литературæ == * [[Цагъаты Анастасия]]. Цæгат Ирыстоны топоними. 1975 {{къæртт-ирон}} {{Туалгом}} [[Категори:Цæгат Ирыстоны кæмттæ]] 9aqcitg1swdmml5w4cbah39ju5q7nj9 Модуль:Wikidata 828 37643 594550 559464 2026-05-02T14:24:34Z Taamu 795 594550 Scribunto text/plain ---settings, may differ from project to project local fileDefaultSize = '267x400px' local outputReferences = true local writingSystemElementId = 'Q8209' local langElementId = 'Q33968' ---Ссылки на используемые модули, которые потребуются в 99% случаев загрузки страниц (чтобы иметь на виду при переименовании) local moduleSources = require( 'Module:Sources' ) local WDS = require( 'Module:WikidataSelectors' ) local listRef = require( 'Module:Languages' ).list_ref ---Константы ---@type string local CONTENT_LANGUAGE_CODE = mw.language.getContentLanguage():getCode() local p = {} local g_config, g_frame local formatDatavalue, formatEntityId, formatRefs, formatSnak, formatStatement, formatStatementDefault, getSourcingCircumstances, getPropertyParams ---@param obj table ---@param target table ---@param skipEmpty boolean | nil ---@return table local function copyTo( obj, target, skipEmpty ) for key, val in pairs( obj ) do if skipEmpty ~= true or ( val ~= nil and val ~= '' ) then target[ key ] = val end end return target end ---Генерация языковой метки через модуль Languages ---@param langCode string ---@return string local function getLanguageRef( langCode ) local frame = mw.getCurrentFrame() frame.args = { langCode } return listRef( frame ) end ---@param prev number | nil ---@param next number | nil ---@return number | nil local function min( prev, next ) if prev == nil or prev > next then return next end return prev end ---@param prev number | nil ---@param next number | nil ---@return number | nil local function max( prev, next ) if prev == nil or prev < next then return next end return prev end ---@param section string ---@param code string ---@return any | nil local function getConfig( section, code ) if g_config == nil then g_config = require( 'Module:Wikidata/config' ) end if not g_config then g_config = {} end if not section then return g_config end if not code then return g_config[ section ] or {} end if not g_config[ section ] then return nil end return g_config[ section ][ code ] end ---@param code string ---@param sortKey string | nil ---@return string local function getCategoryByCode( code, sortKey ) local value = getConfig( 'categories', code ) if not value or value == '' then return '' end if sortKey ~= nil then return '[[Category:' .. value .. '|' .. sortKey .. ']]'; -- экранировать? else return '[[Category:' .. value .. ']]' end end ---@param isoStr string | table ---@return table | nil local function splitISO8601( isoStr ) if 'table' == type( isoStr ) then if isoStr.args and isoStr.args[ 1 ] then isoStr = '' .. isoStr.args[ 1 ] else return 'unknown argument type: ' .. type( isoStr ) .. ': ' .. table.tostring( isoStr ) end end local Y, M, D = ( function( str ) local pattern = "(%-?%d+)%-(%d+)%-(%d+)T" local _Y, _M, _D = mw.ustring.match( str, pattern ) return tonumber( _Y ), tonumber( _M ), tonumber( _D ) end )( isoStr ) local h, m, s = ( function( str ) local pattern = "T(%d+):(%d+):(%d+)%Z" local _H, _M, _S = mw.ustring.match( str, pattern ) return tonumber( _H ), tonumber( _M ), tonumber( _S ) end )( isoStr ) local oh, om = ( function( str ) if str:sub(-1) == "Z" then -- ends with Z, Zulu time return 0, 0 end -- matches ±hh:mm, ±hhmm or ±hh; else returns nils local pattern = "([-+])(%d%d):?(%d?%d?)$" local sign, oh, om = mw.ustring.match( str, pattern ) sign, oh, om = sign or "+", oh or "00", om or "00" return tonumber( sign .. oh ), tonumber( sign .. om ) end )( isoStr ) return { year=Y, month=M, day=D, hour=( h + oh ), min=( m + om ), sec=s } end ---Внутренняя функции для получения границ временного диапазона ---@param time string ---@param precision number ---@return table | nil function p._parseTimeBoundaries( time, precision ) local s = splitISO8601( time ) if not s then return nil end if precision >= 0 and precision <= 8 then local powers = { 1000000000 , 100000000, 10000000, 1000000, 100000, 10000, 1000, 100, 10 } local power = powers[ precision + 1 ] local left = s.year - ( s.year % power ) return { tonumber( os.time( { year=left, month=1, day=1, hour=0, min=0, sec=0 } ) ) * 1000, tonumber( os.time( { year=left + power - 1, month=12, day=31, hour=29, min=59, sec=58 } ) ) * 1000 + 1999 } end if precision == 9 then return { tonumber( os.time( { year=s.year, month=1, day=1, hour=0, min=0, sec=0} )) * 1000, tonumber( os.time( { year=s.year, month=12, day=31, hour=23, min=59, sec=58} )) * 1000 + 1999 } end if precision == 10 then local lastDays = { 31, 28.25, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } local lastDay = lastDays[ s.month ] return { tonumber( os.time( { year=s.year, month=s.month, day=1, hour=0, min=0, sec=0 } ) ) * 1000, tonumber( os.time( { year=s.year, month=s.month, day=lastDay, hour=23, min=59, sec=58 } ) ) * 1000 + 1999 } end if precision == 11 then return { tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=0, min=0, sec=0 } ) ) * 1000, tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=23, min=59, sec=58 } ) ) * 1000 + 1999 } end if precision == 12 then return { tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=s.hour, min=0, sec=0 } ) ) * 1000, tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=s.hour, min=59, sec=58 } ) ) * 1000 + 1999 } end if precision == 13 then return { tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=s.hour, min=s.min, sec=0 } ) ) * 1000, tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=s.hour, min=s.min, sec=58 } ) ) * 1000 + 1999 } end if precision == 14 then local t = tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=s.hour, min=s.min, sec=0 } ) ) return { t * 1000, t * 1000 + 999 } end error( 'Unsupported precision: ' .. precision ) end ---Внутренняя функция для получения числового значения времени из snak'а ---@param table snak ---@return number | nil function p._parseTimeFromSnak( snak ) if snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.time then local timeData = splitISO8601( tostring( snak.datavalue.value.time ) ) timeData.month = math.max( timeData.month, 1 ) timeData.day = math.max( timeData.day, 1 ) return tonumber( os.time( timeData ) ) * 1000 end return nil end ---Функция для формирования категории на основе wikidata/config ---@param options table ---@param entityId string ---@return string local function extractCategory( options, entityId ) if not entityId or not options.category or options.nocat then return '' end if type( entityId ) ~= 'string' then entityId = entityId.id end local claims = WDS.load( entityId, options.category ) if not claims then return '' end for _, claim in pairs( claims ) do if claim and claim.mainsnak and claim.mainsnak.datavalue and claim.mainsnak.datavalue.type == 'wikibase-entityid' then local catEntityId = claim.mainsnak.datavalue.value.id local wbStatus, catSiteLink = pcall( mw.wikibase.getSitelink, catEntityId ) if wbStatus and catSiteLink then return '[[' .. catSiteLink .. ']]' end end end return '' end ---Преобразует строку в булевое значение ---@param valueToParse string ---@return boolean Преобразованное значение, если его удалось распознать, или defaultValue во всех остальных случаях local function toBoolean( valueToParse, defaultValue ) if valueToParse ~= nil then if valueToParse == false or valueToParse == '' or valueToParse == 'false' or valueToParse == '0' then return false end return true end return defaultValue end ---Обрачивает отформатированное значение в инлайновый или блочный тег. ---@param value string value ---@param attributes table of attributes ---@return string HTML tag with value local function wrapValue( value, attributes ) local tagName = 'span' local spacer = '' if string.match( value, '\n' ) or string.match( value, '<t[dhr][ >]' ) or string.match( value, '<div[ >]' ) or string.find( value, 'UNIQ%-%-imagemap' ) then tagName = 'div' spacer = '\n' end local attrString = '' for key, val in pairs( attributes or {} ) do local _key = mw.text.trim( key ) local _value = mw.text.encode( mw.text.trim( val ) ) attrString = attrString .. _key .. '="' .. _value .. '" ' end return '<' .. tagName .. ' ' .. attrString .. '>' .. spacer .. value .. '</' .. tagName .. '>' end ---Wraps formatted snak value into HTML tag with attributes. ---@param value string value of snak ---@param hash string ---@param attributes table of extra attributes ---@return string HTML tag with value local function wrapSnak( value, hash, attributes ) local newAttributes = mw.clone( attributes or {} ) newAttributes[ 'class' ] = ( newAttributes[ 'class' ] or '' ) .. ' wikidata-snak' if hash then newAttributes[ 'data-wikidata-hash'] = hash else newAttributes[ 'class' ] = newAttributes[ 'class' ] .. ' wikidata-main-snak' end return wrapValue( value, newAttributes ) end ---Wraps formatted statement value into HTML tag with attributes. ---@param value string value of statement ---@param propertyId string PID of property ---@param claimId string ID of claim or nil for local value ---@param attributes table of extra attributes ---@return string HTML tag with value local function wrapStatement( value, propertyId, claimId, attributes ) local newAttributes = mw.clone( attributes or {} ) newAttributes[ 'class' ] = newAttributes[ 'class' ] or '' newAttributes[ 'data-wikidata-property-id' ] = string.upper( propertyId ) if claimId then newAttributes[ 'class' ] = newAttributes[ 'class' ] .. ' wikidata-claim' newAttributes[ 'data-wikidata-claim-id' ] = claimId else newAttributes[ 'class' ] = newAttributes[ 'class' ] .. ' no-wikidata' end return wrapValue( value, newAttributes ) end ---Wraps formatted qualifier's statement value into HTML tag with attributes. ---@param value string value of qualifier's statement ---@param qualifierId string PID of qualifier ---@param attributes table of extra attributes ---@return string HTML tag with value local function wrapQualifier( value, qualifierId, attributes ) local newAttributes = mw.clone( attributes or {} ) newAttributes[ 'data-wikidata-qualifier-id' ] = string.upper( qualifierId ) return wrapValue( value, newAttributes ) end ---Функция для получения сущности (еntity) для текущей страницы ---Подробнее о сущностях см. d:Wikidata:Glossary/ru ---@param id string Идентификатор (типа P18, Q42) ---@return table Таблица, элементы которой индексируются с нуля local function getEntityFromId( id ) local entity local wbStatus if id then wbStatus, entity = pcall( mw.wikibase.getEntity, id ) else wbStatus, entity = pcall( mw.wikibase.getEntity ) end return entity end ---Внутренняя функция для формирования сообщения об ошибке ---@param key string Ключ элемента в таблице config.errors (например entity-not-found) ---@return void local function throwError( key ) error( getConfig( 'errors', key ) ) end ---Функция для получения идентификатора сущностей ---@param value table ---@return string local function getEntityIdFromValue( value ) local prefix = '' if value[ 'entity-type' ] == 'item' then prefix = 'Q' elseif value[ 'entity-type' ] == 'property' then prefix = 'P' else throwError( 'unknown-entity-type' ) end return prefix .. value[ 'numeric-id' ] end ---Проверка на наличие специализированной функции в опциях ---@param options table ---@param prefix string ---@return function local function getUserFunction( options, prefix, defaultFunction ) -- проверка на указание специализированных обработчиков в параметрах, -- переданных при вызове if options[ prefix .. '-module' ] or options[ prefix .. '-function' ] then -- проверка на пустые строки в параметрах или их отсутствие if not options[ prefix .. '-module' ] or not options[ prefix .. '-function' ] then throwError( 'unknown-' .. prefix .. '-module' ) end -- динамическая загруза модуля с обработчиком указанным в параметре local formatter = require( 'Module:' .. options[ prefix .. '-module' ] ) if formatter == nil then throwError( prefix .. '-module-not-found' ) end local fun = formatter[ options[ prefix .. '-function' ] ] if fun == nil then throwError( prefix .. '-function-not-found' ) end return fun end return defaultFunction end ---Выбирает свойства по property id, дополнительно фильтруя их по рангу ---@param context table ---@param options table ---@param propertySelector string ---@return table | nil local function selectClaims( context, options, propertySelector ) if not context then error( 'context not specified' ); end if not options then error( 'options not specified' ); end if not options.entityId then error( 'options.entity is missing' ); end if not propertySelector then error( 'propertySelector not specified' ); end local result = WDS.load( options.entityId, propertySelector ) if not result or #result == 0 then return nil end if options.limit and options.limit ~= '' and options.limit ~= '-' then local limit = tonumber( options.limit, 10 ) while #result > limit do table.remove( result ) end end return result end ---Функция для получения значения свойства элемента в заданный момент времени. ---@param entityId string ---@param boundaries table Временные границы ---@param propertyIds table<string> ---@param selectors table<string> ---@return table Таблица соответствующих значений свойства local function getPropertyInBoundaries( context, entityId, boundaries, propertyIds, selectors ) if type( entityId ) ~= 'string' then error( 'type of entityId argument expected string, but was ' .. type(entityId)); end local results = {} if not propertyIds or #propertyIds == 0 then return results end for i, propertyId in ipairs( propertyIds ) do local selector if selectors ~= nil then selector = selectors[ i ] or selectors[ propertyId ] or propertyId else selector = propertyId end local fakeAllClaims = {} fakeAllClaims[ propertyId ] = mw.wikibase.getAllStatements( entityId, propertyId ) local filteredClaims = WDS.filter( fakeAllClaims, selector .. '[rank:preferred, rank:normal]' ) if filteredClaims then for _, claim in pairs( filteredClaims ) do if not boundaries then if not claim.qualifiers or not claim.qualifiers.P582 then table.insert( results, claim.mainsnak ) end else local startBoundaries = p.getTimeBoundariesFromQualifier( context.frame, context, claim, 'P580' ) local endBoundaries = p.getTimeBoundariesFromQualifier( context.frame, context, claim, 'P582' ) if ( startBoundaries == nil or startBoundaries[ 1 ] <= boundaries[ 1 ] ) and ( endBoundaries == nil or endBoundaries[ 1 ] >= boundaries[ 2 ] ) then table.insert( results, claim.mainsnak ) end end end end if #results > 0 then break end end return results end ---@param context table ---@param propertyId string ---@return table | nil function p.getTimeBoundariesFromProperty( context, propertyId ) local dateClaims = WDS.filter( context.entity.claims, propertyId ) if not dateClaims or #dateClaims == 0 then return nil; end -- only support exact date so far, but need improvment local left = nil local right = nil for _, claim in pairs( dateClaims ) do if not claim.mainsnak then return nil end local boundaries = context.parseTimeBoundariesFromSnak( claim.mainsnak ) if not boundaries then return nil end left = min( left, boundaries[ 1 ] ) right = max( right, boundaries[ 2 ] ) end if not left or not right then return nil end return { left, right } end ---@param context table ---@param propertyIds table<string> ---@return table | nil function p.getTimeBoundariesFromProperties( context, propertyIds ) for _, propertyId in ipairs( propertyIds ) do local result = p.getTimeBoundariesFromProperty( context, propertyId ); if result then return result end end return nil end ---@param context table ---@param statement table ---@param qualifierId string ---@return table | nil function p.getTimeBoundariesFromQualifier( _, context, statement, qualifierId ) -- only support exact date so far, but need improvement local left, right if statement.qualifiers and statement.qualifiers[ qualifierId ] then for _, qualifier in pairs( statement.qualifiers[ qualifierId ] ) do local boundaries = context.parseTimeBoundariesFromSnak( qualifier ) if not boundaries then return nil end left = min( left, boundaries[ 1 ] ) right = max( right, boundaries[ 2 ] ) end end if not left or not right then return nil end return { left, right } end ---@param _ table ---@param context table ---@param statement table ---@param qualifierIds table<string> ---@return table | nil function p.getTimeBoundariesFromQualifiers( _, context, statement, qualifierIds ) if not qualifierIds then qualifierIds = { 'P582', 'P580', 'P585' } end for _, qualifierId in pairs( qualifierIds ) do local result = p.getTimeBoundariesFromQualifier( _, context, statement, qualifierId ) if result then return result end end return nil end ---@type table<string> local getLabelWithLang_DEFAULT_PROPERTIES = { 'P1813', 'P1448', 'P1705' } ---@type table<string> local getLabelWithLang_DEFAULT_SELECTORS = { 'P1813[language:' .. CONTENT_LANGUAGE_CODE .. '][!P282,P282:' .. writingSystemElementId .. '][!P3831,P3831:Q105690470]', 'P1448[language:' .. CONTENT_LANGUAGE_CODE .. '][!P282,P282:' .. writingSystemElementId .. '][!P3831,P3831:Q105690470]', 'P1705[language:' .. CONTENT_LANGUAGE_CODE .. '][!P282,P282:' .. writingSystemElementId .. '][!P3831,P3831:Q105690470]' } ---Функция для получения метки элемента в заданный момент времени. ---@param context table ---@param options table ---@param entityId string ---@param boundaries table ---@param propertyIds table ---@param selectors table<string> ---@return string, string Текстовая метка элемента, язык метки local function getLabelWithLang( context, options, entityId, boundaries, propertyIds, selectors ) if type( entityId ) ~= 'string' then error( 'type of entityId argument expected string, but was ' .. type( entityId ) ); end if not entityId then return nil end local langCode = CONTENT_LANGUAGE_CODE -- name from label local label if options.text and options.text ~= '' then label = options.text else if not propertyIds then propertyIds = getLabelWithLang_DEFAULT_PROPERTIES selectors = getLabelWithLang_DEFAULT_SELECTORS end -- name from properties local results = getPropertyInBoundaries( context, entityId, boundaries, propertyIds, selectors ) for _, result in pairs( results ) do if result.datavalue and result.datavalue.value then if result.datavalue.type == 'monolingualtext' and result.datavalue.value.text then label = result.datavalue.value.text langCode = result.datavalue.value.language break elseif result.datavalue.type == 'string' then label = result.datavalue.value break end end end if not label then label, langCode = mw.wikibase.getLabelWithLang( entityId ) if not langCode then return nil end end end return label, langCode end ---@param context table ---@param options table ---@return string local function formatPropertyDefault( context, options ) if not context then error( 'context not specified' ); end if not options then error( 'options not specified' ); end if not options.entityId then error( 'options.entityId missing' ); end local claims if options.property then -- TODO: Почему тут может не быть property? if options.rank then -- передать настройки ранга из конфига claims = context.selectClaims( options, options.property .. options.rank ) else claims = context.selectClaims( options, options.property ) end end if claims == nil then return '' --TODO error? end -- Обход всех заявлений утверждения и с накоплением оформленных предпочтительных -- заявлений в таблице local formattedClaims = {} for _, claim in pairs( claims ) do local formattedStatement = context.formatStatement( options, claim ) -- здесь может вернуться либо оформленный текст заявления, либо строка ошибки, либо nil if formattedStatement and formattedStatement ~= '' then if not options.plain then formattedStatement = context.wrapStatement( formattedStatement, options.property, claim.id ) end table.insert( formattedClaims, formattedStatement ) end end -- создание текстовой строки со списком оформленых заявлений из таблицы local out = mw.text.listToText( formattedClaims, options.separator, options.conjunction ) if out ~= '' then if options.before then out = options.before .. out end if options.after then out = out .. options.after end end return out end ---Create context ---@param initOptions table ---@return table | nil local function initContext( initOptions ) local context = { entityId = initOptions.entityId, entity = initOptions.entity, extractCategory = extractCategory, formatSnak = formatSnak, formatPropertyDefault = formatPropertyDefault, formatStatementDefault = formatStatementDefault, getPropertyInBoundaries = getPropertyInBoundaries, getTimeBoundariesFromProperty = p.getTimeBoundariesFromProperty, getTimeBoundariesFromProperties = p.getTimeBoundariesFromProperties, getTimeBoundariesFromQualifier = p.getTimeBoundariesFromQualifier, getTimeBoundariesFromQualifiers = p.getTimeBoundariesFromQualifiers, parseTimeFromSnak = p._parseTimeFromSnak, getLabelWithLang = getLabelWithLang, wrapSnak = wrapSnak, wrapStatement = wrapStatement, wrapQualifier = wrapQualifier, } context.cloneOptions = function( options ) local entity = options.entity options.entity = nil local newOptions = mw.clone( options ) options.entity = entity newOptions.entity = entity newOptions.frame = options.frame; -- На склонированном фрейме frame:expandTemplate() return newOptions end context.formatProperty = function( options ) local func = getUserFunction( options, 'property', context.formatPropertyDefault ) return func( context, options ) end context.formatStatement = function( options, statement ) return formatStatement( context, options, statement ) end context.formatSnak = function( options, snak, circumstances ) return formatSnak( context, options, snak, circumstances ) end context.formatRefs = function( options, statement ) return formatRefs( context, options, statement ) end context.parseTimeBoundariesFromSnak = function( snak ) if snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.time and snak.datavalue.value.precision then return p._parseTimeBoundaries( snak.datavalue.value.time, snak.datavalue.value.precision ) end return nil end context.getSourcingCircumstances = function( statement ) return getSourcingCircumstances( statement ) end context.selectClaims = function( options, propertyId ) return selectClaims( context, options, propertyId ) end return context end ---Функция для оформления утверждений (statement) ---Подробнее о утверждениях см. d:Wikidata:Glossary/ru ---@param options table ---@return string Formatted wikitext. local function formatProperty( options ) -- Получение сущности по идентификатору local entity = getEntityFromId( options.entityId ) if not entity then return -- throwError( 'entity-not-found' ) end -- проверка на присутсвие у сущности заявлений (claim) -- подробнее о заявлениях см. d:Викиданные:Глоссарий if not entity.claims then return '' --TODO error? end -- improve options options.frame = g_frame options.entity = entity options.extends = function( self, newOptions ) return copyTo( newOptions, copyTo( self, {} ) ) end if options.i18n then options.i18n = copyTo( options.i18n, copyTo( getConfig( 'i18n' ), {} ) ) else options.i18n = getConfig( 'i18n' ) end local context = initContext( options ) return context.formatProperty( options ) end ---Функция для оформления одного утверждения (statement) ---@param context table ---@param options table ---@param statement table ---@return string Formatted wikitext. function formatStatement( context, options, statement ) if not statement then error( 'statement is not specified or nil' ) end if not statement.type or statement.type ~= 'statement' then throwError( 'unknown-claim-type' ) end local functionToCall = getUserFunction( options, 'claim', context.formatStatementDefault ) return functionToCall( context, options, statement ) end ---@param statement table ---@return table function getSourcingCircumstances( statement ) if not statement then error( 'statement is not specified' ) end local circumstances = {} if statement.qualifiers and statement.qualifiers.P1480 then for _, qualifier in pairs( statement.qualifiers.P1480 ) do if qualifier and qualifier.datavalue and qualifier.datavalue.type == 'wikibase-entityid' and qualifier.datavalue.value and qualifier.datavalue.value[ 'entity-type'] == 'item' then table.insert( circumstances, qualifier.datavalue.value.id ) end end end return circumstances end ---Функция для оформления одного утверждения (statement) ---@param context table Context. ---@param options table Parameters. ---@param statement table ---@return string Formatted wikitext. function formatStatementDefault( context, options, statement ) if not context then error( 'context is not specified' ) end if not options then error( 'options is not specified' ) end if not statement then error( 'statement is not specified' ) end local circumstances = context.getSourcingCircumstances( statement ) options.qualifiers = statement.qualifiers local result = context.formatSnak( options, statement.mainsnak, circumstances ) if options.qualifier and statement.qualifiers and statement.qualifiers[ options.qualifier ] then local qualifierConfig = getPropertyParams( options.qualifier, nil, {} ) if options.i18n then qualifierConfig.i18n = options.i18n end if qualifierConfig.datatype == 'time' then qualifierConfig.nolinks = true end local qualifierValues = {} for _, qualifierSnak in pairs( statement.qualifiers[ options.qualifier ] ) do local snakValue = context.formatSnak( qualifierConfig, qualifierSnak ) if snakValue and snakValue ~= '' then table.insert( qualifierValues, snakValue ) end end if result and result ~= '' and #qualifierValues then if qualifierConfig.invisible then result = result .. table.concat( qualifierValues, ', ' ) else result = result .. ' (' .. table.concat( qualifierValues, ', ' ) .. ')' end end end if result and result ~= '' and options.references then result = result .. context.formatRefs( options, statement ) end return result end ---Функция для оформления части утверждения (snak) ---Подробнее о snak см. d:Викиданные:Глоссарий ---@param context table Context. ---@param options table Parameters. ---@param snak table ---@param circumstances table ---@return string Formatted wikitext. function formatSnak( context, options, snak, circumstances ) circumstances = circumstances or {} local result if snak.snaktype == 'somevalue' then if options[ 'somevalue' ] and options[ 'somevalue' ] ~= '' then result = options[ 'somevalue' ] else result = options.i18n[ 'somevalue' ] end elseif snak.snaktype == 'novalue' then if options[ 'novalue' ] and options[ 'novalue' ] ~= '' then result = options[ 'novalue' ] else result = options.i18n[ 'novalue' ] end elseif snak.snaktype == 'value' then result = formatDatavalue( context, options, snak.datavalue, snak.datatype ) for _, item in pairs( circumstances ) do if options.i18n[ item ] then result = options.i18n[ item ] .. result end end else throwError( 'unknown-snak-type' ) end if not result or result == '' then return nil end if options.plain then return result end return context.wrapSnak( result, snak.hash ) end ---Функция для оформления объектов-значений с географическими координатами ---@param value string Raw value. ---@param options table Parameters. ---@return string Formatted string. local function formatGlobeCoordinate( value, options ) -- проверка на требование в параметрах вызова на возврат сырого значения if options[ 'subvalue' ] == 'latitude' then -- широты return value[ 'latitude' ] elseif options[ 'subvalue' ] == 'longitude' then -- долготы return value[ 'longitude' ] elseif options[ 'nocoord' ] and options[ 'nocoord' ] ~= '' then -- если передан параметр nocoord, то не выводить координаты -- обычно это делается при использовании нескольких карточек на странице return '' else -- в противном случае формируются параметры для вызова шаблона {{coord}} -- нужно дописать в документации шаблона, что он отсюда вызывается, и что -- любое изменние его парамеров должно быть согласовано с кодом тут local coordModule = require( 'Module:Coordinates' ) local globe = options.globe or '' if globe == '' and value[ 'globe' ] then local globes = require( 'Module:Wikidata/Globes' ) globe = globes[ value[ 'globe' ] ] or '' end local display = 'inline' if options.display and options.display ~= '' then display = options.display elseif ( options.property:upper() == 'P625' ) then display = 'title' end local format = options.format or '' if format == '' then format = 'dms' if value[ 'precision' ] then local precision = value[ 'precision' ] * 60 if precision >= 60 then format = 'd' elseif precision >= 1 then format = 'dm' end end end g_frame.args = { tostring( value[ 'latitude' ] ), tostring( value[ 'longitude' ] ), globe = globe, type = options.type and options.type or '', scale = options.scale and options.scale or '', display = display, format = format, } return coordModule.coord(g_frame) end end ---Функция для оформления объектов-значений с файлами с Викисклада ---@param value string Raw value. ---@param options table Parameters. ---@return string Formatted string. local function formatCommonsMedia( value, options ) local image = value local caption = '' if options[ 'caption' ] and options[ 'caption' ] ~= '' then caption = options[ 'caption' ] end if caption ~= '' then caption = wrapQualifier( caption, 'P2096', { class = 'media-caption', style = 'display:block' } ) end if not string.find( value, '[%[%]%{%}]' ) and not string.find( value, 'UNIQ%-%-imagemap' ) then -- если в value не содержится викикод или imagemap, то викифицируем имя файла -- ищем слово imagemap в строке, потому что вставляется плейсхолдер: [[phab:T28213]] image = '[[File:' .. value .. '|frameless' if options[ 'border' ] and options[ 'border' ] ~= '' then image = image .. '|border' end local size = options[ 'size' ] if size and size ~= '' then -- TODO: check localized pixel names too if not string.match( size, 'px$' ) then size = size .. 'px' end else size = fileDefaultSize end image = image .. '|' .. size if options[ 'alt' ] and options[ 'alt' ] ~= '' then image = image .. '|alt=' .. options[ 'alt' ] end if caption ~= '' then image = image .. '|' .. caption end image = image .. ']]' if caption ~= '' then image = image .. '<br>' .. caption end else image = image .. caption .. getCategoryByCode( 'media-contains-markup' ) end return image end ---Function for render math formulas ---@param value string Value. ---@param options table Parameters. ---@return string Formatted string. local function formatMath( value, options ) return options.frame:extensionTag{ name = 'math', content = value } end ---Функция для оформления внешних идентификаторов ---@param value string ---@param options table ---@return string local function formatExternalId( value, options ) local formatter = options.formatter local propertyId = options.property:upper() if not formatter or formatter == '' then local isGoodFormat = false local wbStatus, formatRegexStatements = pcall( mw.wikibase.getBestStatements, propertyId, 'P1793' ) if wbStatus and formatRegexStatements then for _, statement in pairs( formatRegexStatements ) do if statement.mainsnak.snaktype == 'value' then local pattern = mw.ustring.gsub( statement.mainsnak.datavalue.value, '\\', '%' ) pattern = mw.ustring.gsub( pattern, '{%d+,?%d*}', '+' ) if ( string.find( pattern, '|' ) or string.find( pattern, '%)%?' ) or mw.ustring.match( value, '^' .. pattern .. '$' ) ~= nil ) then isGoodFormat = true break end end end end if isGoodFormat then local formatterStatements wbStatus, formatterStatements = pcall( mw.wikibase.getBestStatements, propertyId, 'P1630' ) if wbStatus and formatterStatements then for _, statement in pairs( formatterStatements ) do if statement.mainsnak.snaktype == 'value' then formatter = statement.mainsnak.datavalue.value break end end end end end if formatter and formatter ~= '' then local encodedValue = mw.ustring.gsub( value, '%%', '%%%%' ) -- ломается, если подставить внутрь другого mw.ustring.gsub local link = mw.ustring.gsub( mw.ustring.gsub( formatter, '$1', encodedValue ), '.', { [ ' ' ] = '%20', [ '+' ] = '%2b', [ '[' ] = '%5B', [ ']' ] = '%5D' } ) local title = options.title if not title or title == '' then title = '$1' end title = mw.ustring.gsub( mw.ustring.gsub( title, '$1', encodedValue ), '.', { [ '[' ] = '(', [ ']' ] = ')' } ) return '[' .. link .. ' ' .. title .. ']' end return value end ---Функция для оформления числовых значений ---@param value table Объект-значение ---@param options table Таблица параметров ---@return string Оформленный текст local function formatQuantity( value, options ) -- диапазон значений local amount = string.gsub( value.amount, '^%+', '' ) local lang = mw.language.getContentLanguage() local langCode = lang:getCode() local function formatNum( number, sigfig ) local multiplier = '' if options.countByThousands then local powers = options.i18n.thousandPowers local pos = 1 while math.abs( number ) >= 1000 and pos < #powers do number = number / 1000 pos = pos + 1 end multiplier = powers[ pos ] if math.abs( number ) >= 100 then sigfig = sigfig or 0 elseif math.abs( number ) >= 10 then sigfig = sigfig or 1 else sigfig = sigfig or 2 end else sigfig = sigfig or 12 -- округление до 12 знаков после запятой, на 13-м возникает ошибка в точности end local iMultiplier = 10^sigfig number = math.floor( number * iMultiplier + 0.5 ) / iMultiplier return string.gsub( lang:formatNum( number ), '^-', '−' ) .. multiplier end local out = formatNum( tonumber( amount ) ) if value.upperBound then local diff = tonumber( value.upperBound ) - tonumber( amount ) if diff > 0 then -- временная провека, пока у большинства значений не будет убрано ±0 -- Пробуем понять до какого знака округлять local integer, dot, decimals, _ = value.upperBound:match( '^+?-?(%d*)(%.?)(%d*)(.*)' ) local precision if dot == '' then precision = -integer:match( '0*$' ):len() else precision = #decimals end local bound = formatNum( diff, precision ) if string.match( bound, 'E%-(%d+)' ) then -- если в экспоненциальном формате local digits = tonumber( string.match( bound, 'E%-(%d+)' ) ) - 2 bound = formatNum( diff * 10 ^ digits, precision ) bound = string.sub( bound, 0, 2 ) .. string.rep( '0', digits ) .. string.sub( bound, -string.len( bound ) + 2 ) end out = out .. ' ± ' .. bound end end if options.unit and options.unit ~= '' then if options.unit ~= '-' then out = out .. ' ' .. options.unit end elseif value.unit and string.match( value.unit, 'http://www.wikidata.org/entity/' ) then local unitEntityId = string.gsub( value.unit, 'http://www.wikidata.org/entity/', '' ) if unitEntityId ~= 'undefined' then local wbStatus, unitEntity = pcall( mw.wikibase.getEntity, unitEntityId ) if wbStatus == true and unitEntity then if unitEntity.claims.P2370 and unitEntity.claims.P2370[ 1 ].mainsnak.snaktype == 'value' and not value.upperBound and options.siConversion == true then local conversionToSiUnit = string.gsub( unitEntity.claims.P2370[ 1 ].mainsnak.datavalue.value.amount, '^%+', '' ) if math.floor( math.log10( conversionToSiUnit ) ) ~= math.log10( conversionToSiUnit ) then -- Если не степени десятки (переводить сантиметры в метры не надо!) local outValue = tonumber( amount ) * conversionToSiUnit if outValue > 0 then -- Пробуем понять до какого знака округлять local integer, dot, decimals, _ = amount:match( '^(%d*)(%.?)(%d*)(.*)' ) local precision if dot == '' then precision = -integer:match( '0*$' ):len() else precision = #decimals end local adjust = math.log10( math.abs( conversionToSiUnit ) ) + math.log10( 2 ) local minPrecision = 1 - math.floor( math.log10( outValue ) + 2e-14 ) out = formatNum( outValue, math.max( math.floor( precision + adjust ), minPrecision ) ) else out = formatNum( outValue, 0 ) end unitEntityId = string.gsub( unitEntity.claims.P2370[ 1 ].mainsnak.datavalue.value.unit, 'http://www.wikidata.org/entity/', '' ) wbStatus, unitEntity = pcall( mw.wikibase.getEntity, unitEntityId ) end end local label = getLabelWithLang( context, options, unitEntity.id, nil, { "P5061", "P558", "P558" }, { 'P5061[language:' .. langCode .. ']', 'P558[P282:' .. writingSystemElementId .. ', P407:' .. langElementId .. ']', 'P558[!P282][!P407]' } ) out = out .. ' ' .. label end end end return out end ---Функция для оформления URL ---@param context table ---@param options table ---@param value string local function formatUrlValue( context, options, value ) if not options.length or options.length == '' then options.length = 25 end local moduleUrl = require( 'Module:URL' ) return moduleUrl.formatUrlSingle( context, options, value ) end local DATATYPE_CACHE = {} ---Get property datatype by ID. ---@param propertyId string Property ID, e.g. 'P123'. ---@return string Property datatype, e.g. 'commonsMedia', 'time' or 'url'. local function getPropertyDatatype( propertyId ) if not propertyId or not string.match( propertyId, '^P%d+$' ) then return nil end local cached = DATATYPE_CACHE[ propertyId ] if cached ~= nil then return cached end local wbStatus, propertyEntity = pcall( mw.wikibase.getEntity, propertyId ) if wbStatus ~= true or not propertyEntity then return nil end mw.log("Loaded datatype " .. propertyEntity.datatype .. " of " .. propertyId .. ' from wikidata, consider passing datatype argument to formatProperty call or to Wikidata/config' ) DATATYPE_CACHE[ propertyId ] = propertyEntity.datatype return propertyEntity.datatype end ---@param datavalue table ---@return function local function getPlainValueFunction( datavalue, _ ) if datavalue.type == 'wikibase-entityid' then return function( _, _, value ) return getEntityIdFromValue( value ) end elseif datavalue.type == 'string' then return function( _, _, value ) return value end elseif datavalue.type == 'monolingualtext' then return function( _, _, value ) return value.text end elseif datavalue.type == 'globecoordinate' then return function( _, _, value ) return value.latitude .. ',' .. value.longitude end elseif datavalue.type == 'quantity' then return function( _, _, value ) return value.amount end elseif datavalue.type == 'time' then return function( _, _, value ) return value.time end end throwError( 'unknown-datavalue-type' ) end ---@param datavalue table ---@param datatype string ---@return function local function getDefaultValueFunction( datavalue, datatype ) -- вызов обработчиков по умолчанию для известных типов значений if datavalue.type == 'wikibase-entityid' then -- Entity ID return function( context, options, value ) return formatEntityId( context, options, getEntityIdFromValue( value ) ) end elseif datavalue.type == 'string' then -- String if datatype and datatype == 'commonsMedia' then -- Media return function( _, options, value ) return formatCommonsMedia( value, options ) end elseif datatype and datatype == 'external-id' then -- External ID return function( _, options, value ) return formatExternalId( value, options ) end elseif datatype and datatype == 'math' then -- Math formula return function( _, options, value ) return formatMath( value, options ) end elseif datatype and datatype == 'url' then -- URL return formatUrlValue end return function( _, _, value ) return value end elseif datavalue.type == 'monolingualtext' then -- моноязычный текст (строка с указанием языка) return function( _, options, value ) if options.monolingualLangTemplate == 'lang' then if value.language == CONTENT_LANGUAGE_CODE then return value.text end -- TODO: этот вызов тоже надо перенести на Languages return options.frame:expandTemplate{ title = 'lang-' .. value.language, args = { value.text } } elseif options.monolingualLangTemplate == 'ref' then return '<span class="lang" lang="' .. value.language .. '">' .. value.text .. '</span>' .. getLanguageRef( value.language ) else return '<span class="lang" lang="' .. value.language .. '">' .. value.text .. '</span>' end end elseif datavalue.type == 'globecoordinate' then -- географические координаты return function( _, options, value ) return formatGlobeCoordinate( value, options ) end elseif datavalue.type == 'quantity' then return function( _, options, value ) return formatQuantity( value, options ) end elseif datavalue.type == 'time' then return function( context, options, value ) local moduleDate = require( 'Module:Wikidata/date' ) return moduleDate.formatDate( context, options, value ) end end -- во всех стальных случаях возвращаем ошибку throwError( 'unknown-datavalue-type' ) end ---Функция для оформления значений (value) ---Подробнее о значениях см. d:Wikidata:Glossary/ru ---@param context table ---@param options table ---@param datavalue table ---@param datatype string ---@return string Оформленный текст function formatDatavalue( context, options, datavalue, datatype ) if not context then error( 'context not specified' ); end if not options then error( 'options not specified' ); end if not datavalue then error( 'datavalue not specified' ); end if not datavalue.value then error( 'datavalue.value is missing' ); end -- проверка на указание специализированных обработчиков в параметрах, -- переданных при вызове if options.plain then context.formatValueDefault = getPlainValueFunction( datavalue, datatype ) else context.formatValueDefault = getDefaultValueFunction( datavalue, datatype ) end local functionToCall = getUserFunction( options, 'value', context.formatValueDefault ) return functionToCall( context, options, datavalue.value ) end local DEFAULT_BOUNDARIES = { os.time() * 1000, os.time() * 1000} ---Функция для оформления идентификатора сущности ---@param context table ---@param options table ---@param entityId string ---@return string Оформленный текст function formatEntityId( context, options, entityId ) -- получение локализованного названия local boundaries if options.qualifiers then boundaries = p.getTimeBoundariesFromQualifiers( context.frame, context, { qualifiers = options.qualifiers } ) end if not boundaries then boundaries = DEFAULT_BOUNDARIES end local label, labelLanguageCode = getLabelWithLang( context, options, entityId, boundaries ) -- определение соответствующей показываемому элементу категории local category = context.extractCategory( options, { id = entityId } ) -- получение ссылки по идентификатору local link = mw.wikibase.sitelink( entityId ) if link then -- ссылка на категорию, а не добавление страницы в неё if mw.ustring.match( link, '^' .. mw.site.namespaces[ 14 ].name .. ':' ) then link = ':' .. link end if label and not options.rawArticle then if labelLanguageCode ~= CONTENT_LANGUAGE_CODE then label = '<span lang="' .. label .. '">' .. label .. '</span>' end local a = '[[' .. link .. '|' .. label .. ']]' if CONTENT_LANGUAGE_CODE ~= labelLanguageCode and 'mul' ~= labelLanguageCode then a = a .. getCategoryByCode( 'links-to-entities-with-missing-local-language-label' ) end return a .. category else return '[[' .. link .. ']]' .. category end end if label then -- TODO: возможно, лучше просто mw.wikibase.getLabel(entityId) -- красная ссылка -- TODO: разобраться, почему не всегда есть options.frame local moduleRedLink = require( 'Module:Wikidata/redLink' ) local title = mw.title.new( label ) if title and not title.exists and options.frame then local rawLabel = mw.wikibase.getLabel(entityId) or label -- без |text= и boundaries; or label - костыль local redLink = moduleRedLink.formatRedLinkWithInfobox(rawLabel, label, entityId) if CONTENT_LANGUAGE_CODE ~= labelLanguageCode and 'mul' ~= labelLanguageCode then redLink = '<span lang="' .. labelLanguageCode .. '">' .. redLink .. '</span>' .. getCategoryByCode( 'links-to-entities-with-missing-local-language-label' ) end return redLink .. category end -- TODO: перенести до проверки на существование статьи local addWdLink = false if ( not options.format or options.format ~= 'text' ) and entityId ~= 'Q6581072' and entityId ~= 'Q6581097' -- TODO: переписать на format=text then addWdLink = true end -- одноимённая статья уже существует - выводится текст и ссылка на ВД return moduleRedLink.formatText(label, entityId, addWdLink) .. category end -- сообщение об отсутвии локализованного названия -- not good, but better than nothing return '[[:d:' .. entityId .. '|' .. entityId .. ']]<span style="border-bottom: 1px dotted; cursor: help; white-space: nowrap" title="В Викиданных нет русской подписи к элементу. Вы можете помочь, указав русский вариант подписи.">?</span>' .. getCategoryByCode( 'links-to-entities-with-missing-label' ) .. category end ---Функция для оформления утверждений (statement) ---Подробнее о утверждениях см. d:Wikidata:Glossary/ru ---@deprecated Use p.formatProperty() instead ---@param frame table ---@return string Строка оформленного текста, предназначенная для отображения в статье function p.formatStatements( frame ) return p.formatProperty( frame ) end ---Получение параметров, которые обычно используются для вывода свойства. ---@param propertyId string ---@param datatype string ---@param params table function getPropertyParams( propertyId, datatype, params ) local config = getConfig() -- Различные уровни настройки параметров, по убыванию приоритета local propertyParams = {} -- 1. Параметры, указанные явно при вызове if params then for key, value in pairs( params ) do if value ~= '' then propertyParams[ key ] = value end end end if toBoolean( propertyParams.plain, false ) then propertyParams.separator = propertyParams.separator or ', ' propertyParams.conjunction = propertyParams.conjunction or ', ' else -- 2. Настройки конкретного параметра if config.properties and config.properties[ propertyId ] then for key, value in pairs( config.properties[ propertyId ] ) do if propertyParams[ key ] == nil then propertyParams[ key ] = value end end end -- 3. Указанный пресет настроек if propertyParams.preset and config.presets and config.presets[ propertyParams.preset ] then for key, value in pairs( config.presets[ propertyParams.preset ] ) do if propertyParams[ key ] == nil then propertyParams[ key ] = value end end end datatype = datatype or params.datatype or propertyParams.datatype or getPropertyDatatype( propertyId ) if propertyParams.datatype == nil then propertyParams.datatype = datatype end -- 4. Настройки для типа данных if datatype and config.datatypes and config.datatypes[ datatype ] then for key, value in pairs( config.datatypes[ datatype ] ) do if propertyParams[ key ] == nil then propertyParams[ key ] = value end end end -- 5. Общие настройки для всех свойств if config.global then for key, value in pairs( config.global ) do if propertyParams[ key ] == nil then propertyParams[ key ] = value end end end end return propertyParams end ---Функция для оформления утверждений (statement) ---Подробнее о утверждениях см. d:Wikidata:Glossary/ru ---@param frame table ---@return string Строка оформленного текста, предназначенная для отображения в статье function p.formatProperty( frame ) local args = copyTo( frame.args, {} ) -- проверка на отсутствие обязательного параметра property if not args.property then throwError( 'property-param-not-provided' ) end local override local propertyId = mw.language.getContentLanguage():ucfirst( string.gsub( args.property, '([^Pp0-9].*)$', function(w) if string.sub( w, 1, 1 ) == '~' then override = w end return '' end ) ) if override then args[ override:match( '[,~]([^=]*)=' ) ] = override:match( '=(.*)' ) args.property = propertyId end -- проброс всех параметров из шаблона {wikidata} и параметра from откуда угодно local p_frame = frame while p_frame do if p_frame:getTitle() == mw.site.namespaces[ 10 ].name .. ':Wikidata' then copyTo( p_frame.args, args, true ) end if p_frame.args and p_frame.args.from and p_frame.args.from ~= '' then args.entityId = p_frame.args.from else args.entityId = mw.wikibase.getEntityIdForCurrentPage() end p_frame = p_frame:getParent() end args = getPropertyParams( propertyId, nil, args ) local datatype = args.datatype -- перевод итоговых значений флагов в true/false и добавление значений -- по умолчанию только в том случае, если они нигде не были указаны ранее args.plain = toBoolean( args.plain, false ) args.nocat = not args.plain and toBoolean( args.nocat, false ) args.references = not args.plain and toBoolean( args.references, true ) -- если значение передано в параметрах вызова то выводим только его if args.value and args.value ~= '' then -- специальное значение для скрытия Викиданных if args.value == '-' then return '' end local value = args.value -- опция, запрещающая оформление значения, поэтому никак не трогаем if args.plain then return value end local context = initContext( args ) -- обработчики по типу значения local wrapperExtraArgs = {} if args[ 'value-module' ] and args[ 'value-function' ] and not string.find( value, '[%[%]%{%}]' ) then local func = getUserFunction( args, 'value' ) value = func( context, args, value ) elseif datatype == 'commonsMedia' then value = formatCommonsMedia( value, args ) elseif datatype == 'external-id' and not string.find( value, '[%[%]%{%}]' ) then wrapperExtraArgs[ 'data-wikidata-external-id' ] = mw.text.killMarkers( value ) value = formatExternalId( value, args ) --elseif datatype == 'math' then -- args.frame = frame -- костыль: в formatMath нужно frame:extensionTag -- value = formatMath( value, args ) elseif datatype == 'url' then value = formatUrlValue( context, args, value ) end -- оборачиваем в тег для JS-функций if string.match( propertyId, '^P%d+$' ) then value = mw.text.trim( value ) -- временная штрафная категория для исправления табличных вставок local allowTables = getPropertyParams( propertyId, nil, {} ).allowTables if not allowTables and string.match( value, '<t[dhr][ >]' ) -- and not string.match( value, '<table[ >]' ) -- and not string.match( value, '^%{%|' ) then value = value .. getCategoryByCode( 'value-contains-table', propertyId ) else value = wrapStatement( value, propertyId, nil, wrapperExtraArgs ) end end return value end -- ability to disable loading Wikidata if args.entityId == '-' then return '' end g_frame = frame -- после проверки всех аргументов -- вызов функции оформления для свойства (набора утверждений) return formatProperty( args ) end ---Функция проверки на присутствие источника в списке нерекомендованных. ---@param snaks table ---@return boolean local function isReferenceDeprecated( snaks ) if not snaks then return false end if snaks.P248 and snaks.P248[ 1 ] and snaks.P248[ 1 ].datavalue and snaks.P248[ 1 ].datavalue.value.id then local entityId = snaks.P248[ 1 ].datavalue.value.id if getConfig( 'deprecatedSources', entityId ) then return true end elseif snaks.P1433 and snaks.P1433[ 1 ] and snaks.P1433[ 1 ].datavalue and snaks.P1433[ 1 ].datavalue.value.id then local entityId = snaks.P1433[ 1 ].datavalue.value.id if getConfig( 'deprecatedSources', entityId ) then return true end end return false end ---Функция оформления ссылок на источники (reference) ---Подробнее о ссылках на источники см. d:Wikidata:Glossary/ru --- ---Экспортируется в качестве зарезервированной точки для вызова из функций-расширения вида claim-module/claim-function через context ---Вызов из других модулей напрямую осуществляться не должен (используйте frame:expandTemplate вместе с одним из специлизированных шаблонов вывода значения свойства). ---@param context table ---@param options table ---@param statement table ---@return string Оформленные примечания для отображения в статье function formatRefs( context, options, statement ) if not context then error( 'context not specified' ); end if not options then error( 'options not specified' ); end if not options.entityId then error( 'options.entityId missing' ); end if not statement then error( 'statement not specified' ); end if not outputReferences then return '' end ---@type string[] local references = {} if statement.references then local hasNotDeprecated = false local displayCount = 0 for _, reference in pairs( statement.references ) do if not isReferenceDeprecated( reference.snaks ) then hasNotDeprecated = true end end for _, reference in pairs( statement.references ) do local display = true if hasNotDeprecated then if isReferenceDeprecated( reference.snaks ) then display = false end end if displayCount >= 2 then if options.entityId and options.property then local propertyId = mw.ustring.match( options.property, '^[Pp][0-9]+' ) -- TODO: обрабатывать не тут, а раньше local moreReferences = '<sup>[[d:' .. options.entityId .. '#' .. string.upper( propertyId ) .. '|[…]]]</sup>' table.insert( references, moreReferences ) end break end if display == true then ---@type string local refText = moduleSources.renderReference( g_frame, options.entityId, reference ) if refText and refText ~= '' then table.insert( references, refText ) displayCount = displayCount + 1 end end end end return table.concat( references ) end return p pdafdkapdl4fnj2xae2vg16q90rhrv9 594553 594550 2026-05-02T14:33:56Z Taamu 795 594553 Scribunto text/plain ---settings, may differ from project to project local fileDefaultSize = '267x400px' local outputReferences = true local writingSystemElementId = 'Q8209' local langElementId = 'Q33968' ---Ссылки на используемые модули, которые потребуются в 99% случаев загрузки страниц (чтобы иметь на виду при переименовании) local moduleSources = require( 'Module:Sources' ) local WDS = require( 'Module:WikidataSelectors' ) local listRef = require( 'Module:Languages' ).list_ref ---Константы ---@type string local CONTENT_LANGUAGE_CODE = mw.language.getContentLanguage():getCode() local p = {} local g_config, g_frame local formatDatavalue, formatEntityId, formatRefs, formatSnak, formatStatement, formatStatementDefault, getSourcingCircumstances, getPropertyParams ---@param obj table ---@param target table ---@param skipEmpty boolean | nil ---@return table local function copyTo( obj, target, skipEmpty ) for key, val in pairs( obj ) do if skipEmpty ~= true or ( val ~= nil and val ~= '' ) then target[ key ] = val end end return target end ---Генерация языковой метки через модуль Languages ---@param langCode string ---@return string local function getLanguageRef( langCode ) local frame = mw.getCurrentFrame() frame.args = { langCode } return listRef( frame ) end ---@param prev number | nil ---@param next number | nil ---@return number | nil local function min( prev, next ) if prev == nil or prev > next then return next end return prev end ---@param prev number | nil ---@param next number | nil ---@return number | nil local function max( prev, next ) if prev == nil or prev < next then return next end return prev end ---@param section string ---@param code string ---@return any | nil local function getConfig( section, code ) if g_config == nil then g_config = require( 'Module:Wikidata/config' ) end if not g_config then g_config = {} end if not section then return g_config end if not code then return g_config[ section ] or {} end if not g_config[ section ] then return nil end return g_config[ section ][ code ] end ---@param code string ---@param sortKey string | nil ---@return string local function getCategoryByCode( code, sortKey ) local value = getConfig( 'categories', code ) if not value or value == '' then return '' end if sortKey ~= nil then return '[[Category:' .. value .. '|' .. sortKey .. ']]'; -- экранировать? else return '[[Category:' .. value .. ']]' end end ---@param isoStr string | table ---@return table | nil local function splitISO8601( isoStr ) if 'table' == type( isoStr ) then if isoStr.args and isoStr.args[ 1 ] then isoStr = '' .. isoStr.args[ 1 ] else return 'unknown argument type: ' .. type( isoStr ) .. ': ' .. table.tostring( isoStr ) end end local Y, M, D = ( function( str ) local pattern = "(%-?%d+)%-(%d+)%-(%d+)T" local _Y, _M, _D = mw.ustring.match( str, pattern ) return tonumber( _Y ), tonumber( _M ), tonumber( _D ) end )( isoStr ) local h, m, s = ( function( str ) local pattern = "T(%d+):(%d+):(%d+)%Z" local _H, _M, _S = mw.ustring.match( str, pattern ) return tonumber( _H ), tonumber( _M ), tonumber( _S ) end )( isoStr ) local oh, om = ( function( str ) if str:sub(-1) == "Z" then -- ends with Z, Zulu time return 0, 0 end -- matches ±hh:mm, ±hhmm or ±hh; else returns nils local pattern = "([-+])(%d%d):?(%d?%d?)$" local sign, oh, om = mw.ustring.match( str, pattern ) sign, oh, om = sign or "+", oh or "00", om or "00" return tonumber( sign .. oh ), tonumber( sign .. om ) end )( isoStr ) return { year=Y, month=M, day=D, hour=( h + oh ), min=( m + om ), sec=s } end ---Внутренняя функции для получения границ временного диапазона ---@param time string ---@param precision number ---@return table | nil function p._parseTimeBoundaries( time, precision ) local s = splitISO8601( time ) if not s then return nil end if precision >= 0 and precision <= 8 then local powers = { 1000000000 , 100000000, 10000000, 1000000, 100000, 10000, 1000, 100, 10 } local power = powers[ precision + 1 ] local left = s.year - ( s.year % power ) return { tonumber( os.time( { year=left, month=1, day=1, hour=0, min=0, sec=0 } ) ) * 1000, tonumber( os.time( { year=left + power - 1, month=12, day=31, hour=29, min=59, sec=58 } ) ) * 1000 + 1999 } end if precision == 9 then return { tonumber( os.time( { year=s.year, month=1, day=1, hour=0, min=0, sec=0} )) * 1000, tonumber( os.time( { year=s.year, month=12, day=31, hour=23, min=59, sec=58} )) * 1000 + 1999 } end if precision == 10 then local lastDays = { 31, 28.25, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } local lastDay = lastDays[ s.month ] return { tonumber( os.time( { year=s.year, month=s.month, day=1, hour=0, min=0, sec=0 } ) ) * 1000, tonumber( os.time( { year=s.year, month=s.month, day=lastDay, hour=23, min=59, sec=58 } ) ) * 1000 + 1999 } end if precision == 11 then return { tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=0, min=0, sec=0 } ) ) * 1000, tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=23, min=59, sec=58 } ) ) * 1000 + 1999 } end if precision == 12 then return { tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=s.hour, min=0, sec=0 } ) ) * 1000, tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=s.hour, min=59, sec=58 } ) ) * 1000 + 1999 } end if precision == 13 then return { tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=s.hour, min=s.min, sec=0 } ) ) * 1000, tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=s.hour, min=s.min, sec=58 } ) ) * 1000 + 1999 } end if precision == 14 then local t = tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=s.hour, min=s.min, sec=0 } ) ) return { t * 1000, t * 1000 + 999 } end error( 'Unsupported precision: ' .. precision ) end ---Внутренняя функция для получения числового значения времени из snak'а ---@param table snak ---@return number | nil function p._parseTimeFromSnak( snak ) if snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.time then local timeData = splitISO8601( tostring( snak.datavalue.value.time ) ) timeData.month = math.max( timeData.month, 1 ) timeData.day = math.max( timeData.day, 1 ) return tonumber( os.time( timeData ) ) * 1000 end return nil end ---Функция для формирования категории на основе wikidata/config ---@param options table ---@param entityId string ---@return string local function extractCategory( options, entityId ) if not entityId or not options.category or options.nocat then return '' end if type( entityId ) ~= 'string' then entityId = entityId.id end local claims = WDS.load( entityId, options.category ) if not claims then return '' end for _, claim in pairs( claims ) do if claim and claim.mainsnak and claim.mainsnak.datavalue and claim.mainsnak.datavalue.type == 'wikibase-entityid' then local catEntityId = claim.mainsnak.datavalue.value.id local wbStatus, catSiteLink = pcall( mw.wikibase.getSitelink, catEntityId ) if wbStatus and catSiteLink then return '[[' .. catSiteLink .. ']]' end end end return '' end ---Преобразует строку в булевое значение ---@param valueToParse string ---@return boolean Преобразованное значение, если его удалось распознать, или defaultValue во всех остальных случаях local function toBoolean( valueToParse, defaultValue ) if valueToParse ~= nil then if valueToParse == false or valueToParse == '' or valueToParse == 'false' or valueToParse == '0' then return false end return true end return defaultValue end ---Обрачивает отформатированное значение в инлайновый или блочный тег. ---@param value string value ---@param attributes table of attributes ---@return string HTML tag with value local function wrapValue( value, attributes ) local tagName = 'span' local spacer = '' if string.match( value, '\n' ) or string.match( value, '<t[dhr][ >]' ) or string.match( value, '<div[ >]' ) or string.find( value, 'UNIQ%-%-imagemap' ) then tagName = 'div' spacer = '\n' end local attrString = '' for key, val in pairs( attributes or {} ) do local _key = mw.text.trim( key ) local _value = mw.text.encode( mw.text.trim( val ) ) attrString = attrString .. _key .. '="' .. _value .. '" ' end return '<' .. tagName .. ' ' .. attrString .. '>' .. spacer .. value .. '</' .. tagName .. '>' end ---Wraps formatted snak value into HTML tag with attributes. ---@param value string value of snak ---@param hash string ---@param attributes table of extra attributes ---@return string HTML tag with value local function wrapSnak( value, hash, attributes ) local newAttributes = mw.clone( attributes or {} ) newAttributes[ 'class' ] = ( newAttributes[ 'class' ] or '' ) .. ' wikidata-snak' if hash then newAttributes[ 'data-wikidata-hash'] = hash else newAttributes[ 'class' ] = newAttributes[ 'class' ] .. ' wikidata-main-snak' end return wrapValue( value, newAttributes ) end ---Wraps formatted statement value into HTML tag with attributes. ---@param value string value of statement ---@param propertyId string PID of property ---@param claimId string ID of claim or nil for local value ---@param attributes table of extra attributes ---@return string HTML tag with value local function wrapStatement( value, propertyId, claimId, attributes ) local newAttributes = mw.clone( attributes or {} ) newAttributes[ 'class' ] = newAttributes[ 'class' ] or '' newAttributes[ 'data-wikidata-property-id' ] = string.upper( propertyId ) if claimId then newAttributes[ 'class' ] = newAttributes[ 'class' ] .. ' wikidata-claim' newAttributes[ 'data-wikidata-claim-id' ] = claimId else newAttributes[ 'class' ] = newAttributes[ 'class' ] .. ' no-wikidata' end return wrapValue( value, newAttributes ) end ---Wraps formatted qualifier's statement value into HTML tag with attributes. ---@param value string value of qualifier's statement ---@param qualifierId string PID of qualifier ---@param attributes table of extra attributes ---@return string HTML tag with value local function wrapQualifier( value, qualifierId, attributes ) local newAttributes = mw.clone( attributes or {} ) newAttributes[ 'data-wikidata-qualifier-id' ] = string.upper( qualifierId ) return wrapValue( value, newAttributes ) end ---Функция для получения сущности (еntity) для текущей страницы ---Подробнее о сущностях см. d:Wikidata:Glossary/ru ---@param id string Идентификатор (типа P18, Q42) ---@return table Таблица, элементы которой индексируются с нуля local function getEntityFromId( id ) local entity local wbStatus if id then wbStatus, entity = pcall( mw.wikibase.getEntity, id ) else wbStatus, entity = pcall( mw.wikibase.getEntity ) end return entity end ---Внутренняя функция для формирования сообщения об ошибке ---@param key string Ключ элемента в таблице config.errors (например entity-not-found) ---@return void local function throwError( key ) error( getConfig( 'errors', key ) ) end ---Функция для получения идентификатора сущностей ---@param value table ---@return string local function getEntityIdFromValue( value ) local prefix = '' if value[ 'entity-type' ] == 'item' then prefix = 'Q' elseif value[ 'entity-type' ] == 'property' then prefix = 'P' else throwError( 'unknown-entity-type' ) end return prefix .. value[ 'numeric-id' ] end ---Проверка на наличие специализированной функции в опциях ---@param options table ---@param prefix string ---@return function local function getUserFunction( options, prefix, defaultFunction ) -- проверка на указание специализированных обработчиков в параметрах, -- переданных при вызове if options[ prefix .. '-module' ] or options[ prefix .. '-function' ] then -- проверка на пустые строки в параметрах или их отсутствие if not options[ prefix .. '-module' ] or not options[ prefix .. '-function' ] then throwError( 'unknown-' .. prefix .. '-module' ) end -- динамическая загруза модуля с обработчиком указанным в параметре local formatter = require( 'Module:' .. options[ prefix .. '-module' ] ) if formatter == nil then throwError( prefix .. '-module-not-found' ) end local fun = formatter[ options[ prefix .. '-function' ] ] if fun == nil then throwError( prefix .. '-function-not-found' ) end return fun end return defaultFunction end ---Выбирает свойства по property id, дополнительно фильтруя их по рангу ---@param context table ---@param options table ---@param propertySelector string ---@return table | nil local function selectClaims( context, options, propertySelector ) if not context then error( 'context not specified' ); end if not options then error( 'options not specified' ); end if not options.entityId then error( 'options.entity is missing' ); end if not propertySelector then error( 'propertySelector not specified' ); end local result = WDS.load( options.entityId, propertySelector ) if not result or #result == 0 then return nil end if options.limit and options.limit ~= '' and options.limit ~= '-' then local limit = tonumber( options.limit, 10 ) while #result > limit do table.remove( result ) end end return result end ---Функция для получения значения свойства элемента в заданный момент времени. ---@param entityId string ---@param boundaries table Временные границы ---@param propertyIds table<string> ---@param selectors table<string> ---@return table Таблица соответствующих значений свойства local function getPropertyInBoundaries( context, entityId, boundaries, propertyIds, selectors ) if type( entityId ) ~= 'string' then error( 'type of entityId argument expected string, but was ' .. type(entityId)); end local results = {} if not propertyIds or #propertyIds == 0 then return results end for i, propertyId in ipairs( propertyIds ) do local selector if selectors ~= nil then selector = selectors[ i ] or selectors[ propertyId ] or propertyId else selector = propertyId end local fakeAllClaims = {} fakeAllClaims[ propertyId ] = mw.wikibase.getAllStatements( entityId, propertyId ) local filteredClaims = WDS.filter( fakeAllClaims, selector .. '[rank:preferred, rank:normal]' ) if filteredClaims then for _, claim in pairs( filteredClaims ) do if not boundaries then if not claim.qualifiers or not claim.qualifiers.P582 then table.insert( results, claim.mainsnak ) end else local startBoundaries = p.getTimeBoundariesFromQualifier( context.frame, context, claim, 'P580' ) local endBoundaries = p.getTimeBoundariesFromQualifier( context.frame, context, claim, 'P582' ) if ( startBoundaries == nil or startBoundaries[ 1 ] <= boundaries[ 1 ] ) and ( endBoundaries == nil or endBoundaries[ 1 ] >= boundaries[ 2 ] ) then table.insert( results, claim.mainsnak ) end end end end if #results > 0 then break end end return results end ---@param context table ---@param propertyId string ---@return table | nil function p.getTimeBoundariesFromProperty( context, propertyId ) local dateClaims = WDS.filter( context.entity.claims, propertyId ) if not dateClaims or #dateClaims == 0 then return nil; end -- only support exact date so far, but need improvment local left = nil local right = nil for _, claim in pairs( dateClaims ) do if not claim.mainsnak then return nil end local boundaries = context.parseTimeBoundariesFromSnak( claim.mainsnak ) if not boundaries then return nil end left = min( left, boundaries[ 1 ] ) right = max( right, boundaries[ 2 ] ) end if not left or not right then return nil end return { left, right } end ---@param context table ---@param propertyIds table<string> ---@return table | nil function p.getTimeBoundariesFromProperties( context, propertyIds ) for _, propertyId in ipairs( propertyIds ) do local result = p.getTimeBoundariesFromProperty( context, propertyId ); if result then return result end end return nil end ---@param context table ---@param statement table ---@param qualifierId string ---@return table | nil function p.getTimeBoundariesFromQualifier( _, context, statement, qualifierId ) -- only support exact date so far, but need improvement local left, right if statement.qualifiers and statement.qualifiers[ qualifierId ] then for _, qualifier in pairs( statement.qualifiers[ qualifierId ] ) do local boundaries = context.parseTimeBoundariesFromSnak( qualifier ) if not boundaries then return nil end left = min( left, boundaries[ 1 ] ) right = max( right, boundaries[ 2 ] ) end end if not left or not right then return nil end return { left, right } end ---@param _ table ---@param context table ---@param statement table ---@param qualifierIds table<string> ---@return table | nil function p.getTimeBoundariesFromQualifiers( _, context, statement, qualifierIds ) if not qualifierIds then qualifierIds = { 'P582', 'P580', 'P585' } end for _, qualifierId in pairs( qualifierIds ) do local result = p.getTimeBoundariesFromQualifier( _, context, statement, qualifierId ) if result then return result end end return nil end ---@type table<string> local getLabelWithLang_DEFAULT_PROPERTIES = { 'P1813', 'P1448', 'P1705' } ---@type table<string> local getLabelWithLang_DEFAULT_SELECTORS = { 'P1813[language:' .. CONTENT_LANGUAGE_CODE .. '][!P282,P282:' .. writingSystemElementId .. '][!P3831,P3831:Q105690470]', 'P1448[language:' .. CONTENT_LANGUAGE_CODE .. '][!P282,P282:' .. writingSystemElementId .. '][!P3831,P3831:Q105690470]', 'P1705[language:' .. CONTENT_LANGUAGE_CODE .. '][!P282,P282:' .. writingSystemElementId .. '][!P3831,P3831:Q105690470]' } ---Функция для получения метки элемента в заданный момент времени. ---@param context table ---@param options table ---@param entityId string ---@param boundaries table ---@param propertyIds table ---@param selectors table<string> ---@return string, string Текстовая метка элемента, язык метки local function getLabelWithLang( context, options, entityId, boundaries, propertyIds, selectors ) if type( entityId ) ~= 'string' then error( 'type of entityId argument expected string, but was ' .. type( entityId ) ); end if not entityId then return nil end local langCode = CONTENT_LANGUAGE_CODE -- name from label local label if options.text and options.text ~= '' then label = options.text else if not propertyIds then propertyIds = getLabelWithLang_DEFAULT_PROPERTIES selectors = getLabelWithLang_DEFAULT_SELECTORS end -- name from properties local results = getPropertyInBoundaries( context, entityId, boundaries, propertyIds, selectors ) for _, result in pairs( results ) do if result.datavalue and result.datavalue.value then if result.datavalue.type == 'monolingualtext' and result.datavalue.value.text then label = result.datavalue.value.text langCode = result.datavalue.value.language break elseif result.datavalue.type == 'string' then label = result.datavalue.value break end end end if not label then label, langCode = mw.wikibase.getLabelWithLang( entityId ) if not langCode then return nil end end end return label, langCode end ---@param context table ---@param options table ---@return string local function formatPropertyDefault( context, options ) if not context then error( 'context not specified' ); end if not options then error( 'options not specified' ); end if not options.entityId then error( 'options.entityId missing' ); end local claims if options.property then -- TODO: Почему тут может не быть property? if options.rank then -- передать настройки ранга из конфига claims = context.selectClaims( options, options.property .. options.rank ) else claims = context.selectClaims( options, options.property ) end end if claims == nil then return '' --TODO error? end -- Обход всех заявлений утверждения и с накоплением оформленных предпочтительных -- заявлений в таблице local formattedClaims = {} for _, claim in pairs( claims ) do local formattedStatement = context.formatStatement( options, claim ) -- здесь может вернуться либо оформленный текст заявления, либо строка ошибки, либо nil if formattedStatement and formattedStatement ~= '' then if not options.plain then formattedStatement = context.wrapStatement( formattedStatement, options.property, claim.id ) end table.insert( formattedClaims, formattedStatement ) end end -- создание текстовой строки со списком оформленых заявлений из таблицы local out = mw.text.listToText( formattedClaims, options.separator, options.conjunction ) if out ~= '' then if options.before then out = options.before .. out end if options.after then out = out .. options.after end end return out end ---Create context ---@param initOptions table ---@return table | nil local function initContext( initOptions ) local context = { entityId = initOptions.entityId, entity = initOptions.entity, extractCategory = extractCategory, formatSnak = formatSnak, formatPropertyDefault = formatPropertyDefault, formatStatementDefault = formatStatementDefault, getPropertyInBoundaries = getPropertyInBoundaries, getTimeBoundariesFromProperty = p.getTimeBoundariesFromProperty, getTimeBoundariesFromProperties = p.getTimeBoundariesFromProperties, getTimeBoundariesFromQualifier = p.getTimeBoundariesFromQualifier, getTimeBoundariesFromQualifiers = p.getTimeBoundariesFromQualifiers, parseTimeFromSnak = p._parseTimeFromSnak, getLabelWithLang = getLabelWithLang, wrapSnak = wrapSnak, wrapStatement = wrapStatement, wrapQualifier = wrapQualifier, } context.cloneOptions = function( options ) local entity = options.entity options.entity = nil local newOptions = mw.clone( options ) options.entity = entity newOptions.entity = entity newOptions.frame = options.frame; -- На склонированном фрейме frame:expandTemplate() return newOptions end context.formatProperty = function( options ) local func = getUserFunction( options, 'property', context.formatPropertyDefault ) return func( context, options ) end context.formatStatement = function( options, statement ) return formatStatement( context, options, statement ) end context.formatSnak = function( options, snak, circumstances ) return formatSnak( context, options, snak, circumstances ) end context.formatRefs = function( options, statement ) return formatRefs( context, options, statement ) end context.parseTimeBoundariesFromSnak = function( snak ) if snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.time and snak.datavalue.value.precision then return p._parseTimeBoundaries( snak.datavalue.value.time, snak.datavalue.value.precision ) end return nil end context.getSourcingCircumstances = function( statement ) return getSourcingCircumstances( statement ) end context.selectClaims = function( options, propertyId ) return selectClaims( context, options, propertyId ) end return context end ---Функция для оформления утверждений (statement) ---Подробнее о утверждениях см. d:Wikidata:Glossary/ru ---@param options table ---@return string Formatted wikitext. local function formatProperty( options ) -- Получение сущности по идентификатору local entity = getEntityFromId( options.entityId ) if not entity then return -- throwError( 'entity-not-found' ) end -- проверка на присутсвие у сущности заявлений (claim) -- подробнее о заявлениях см. d:Викиданные:Глоссарий if not entity.claims then return '' --TODO error? end -- improve options options.frame = g_frame options.entity = entity options.extends = function( self, newOptions ) return copyTo( newOptions, copyTo( self, {} ) ) end if options.i18n then options.i18n = copyTo( options.i18n, copyTo( getConfig( 'i18n' ), {} ) ) else options.i18n = getConfig( 'i18n' ) end local context = initContext( options ) return context.formatProperty( options ) end ---Функция для оформления одного утверждения (statement) ---@param context table ---@param options table ---@param statement table ---@return string Formatted wikitext. function formatStatement( context, options, statement ) if not statement then error( 'statement is not specified or nil' ) end if not statement.type or statement.type ~= 'statement' then throwError( 'unknown-claim-type' ) end local functionToCall = getUserFunction( options, 'claim', context.formatStatementDefault ) return functionToCall( context, options, statement ) end ---@param statement table ---@return table function getSourcingCircumstances( statement ) if not statement then error( 'statement is not specified' ) end local circumstances = {} if statement.qualifiers and statement.qualifiers.P1480 then for _, qualifier in pairs( statement.qualifiers.P1480 ) do if qualifier and qualifier.datavalue and qualifier.datavalue.type == 'wikibase-entityid' and qualifier.datavalue.value and qualifier.datavalue.value[ 'entity-type'] == 'item' then table.insert( circumstances, qualifier.datavalue.value.id ) end end end return circumstances end ---Функция для оформления одного утверждения (statement) ---@param context table Context. ---@param options table Parameters. ---@param statement table ---@return string Formatted wikitext. function formatStatementDefault( context, options, statement ) if not context then error( 'context is not specified' ) end if not options then error( 'options is not specified' ) end if not statement then error( 'statement is not specified' ) end local circumstances = context.getSourcingCircumstances( statement ) options.qualifiers = statement.qualifiers local result = context.formatSnak( options, statement.mainsnak, circumstances ) if options.qualifier and statement.qualifiers and statement.qualifiers[ options.qualifier ] then local qualifierConfig = getPropertyParams( options.qualifier, nil, {} ) if options.i18n then qualifierConfig.i18n = options.i18n end if qualifierConfig.datatype == 'time' then qualifierConfig.nolinks = true end local qualifierValues = {} for _, qualifierSnak in pairs( statement.qualifiers[ options.qualifier ] ) do local snakValue = context.formatSnak( qualifierConfig, qualifierSnak ) if snakValue and snakValue ~= '' then table.insert( qualifierValues, snakValue ) end end if result and result ~= '' and #qualifierValues then if qualifierConfig.invisible then result = result .. table.concat( qualifierValues, ', ' ) else result = result .. ' (' .. table.concat( qualifierValues, ', ' ) .. ')' end end end if result and result ~= '' and options.references then result = result .. context.formatRefs( options, statement ) end return result end ---Функция для оформления части утверждения (snak) ---Подробнее о snak см. d:Викиданные:Глоссарий ---@param context table Context. ---@param options table Parameters. ---@param snak table ---@param circumstances table ---@return string Formatted wikitext. function formatSnak( context, options, snak, circumstances ) circumstances = circumstances or {} local result if snak.snaktype == 'somevalue' then if options[ 'somevalue' ] and options[ 'somevalue' ] ~= '' then result = options[ 'somevalue' ] else result = options.i18n[ 'somevalue' ] end elseif snak.snaktype == 'novalue' then if options[ 'novalue' ] and options[ 'novalue' ] ~= '' then result = options[ 'novalue' ] else result = options.i18n[ 'novalue' ] end elseif snak.snaktype == 'value' then result = formatDatavalue( context, options, snak.datavalue, snak.datatype ) for _, item in pairs( circumstances ) do if options.i18n[ item ] then result = options.i18n[ item ] .. result end end else throwError( 'unknown-snak-type' ) end if not result or result == '' then return nil end if options.plain then return result end return context.wrapSnak( result, snak.hash ) end ---Функция для оформления объектов-значений с географическими координатами ---@param value string Raw value. ---@param options table Parameters. ---@return string Formatted string. local function formatGlobeCoordinate( value, options ) -- проверка на требование в параметрах вызова на возврат сырого значения if options[ 'subvalue' ] == 'latitude' then -- широты return value[ 'latitude' ] elseif options[ 'subvalue' ] == 'longitude' then -- долготы return value[ 'longitude' ] elseif options[ 'nocoord' ] and options[ 'nocoord' ] ~= '' then -- если передан параметр nocoord, то не выводить координаты -- обычно это делается при использовании нескольких карточек на странице return '' else -- в противном случае формируются параметры для вызова шаблона {{coord}} -- нужно дописать в документации шаблона, что он отсюда вызывается, и что -- любое изменние его парамеров должно быть согласовано с кодом тут local coordModule = require( 'Module:Coordinates' ) local globe = options.globe or '' if globe == '' and value[ 'globe' ] then local globes = require( 'Module:Wikidata/Globes' ) globe = globes[ value[ 'globe' ] ] or '' end local display = 'inline' if options.display and options.display ~= '' then display = options.display elseif ( options.property:upper() == 'P625' ) then display = 'title' end local format = options.format or '' if format == '' then format = 'dms' if value[ 'precision' ] then local precision = value[ 'precision' ] * 60 if precision >= 60 then format = 'd' elseif precision >= 1 then format = 'dm' end end end g_frame.args = { tostring( value[ 'latitude' ] ), tostring( value[ 'longitude' ] ), globe = globe, type = options.type and options.type or '', scale = options.scale and options.scale or '', display = display, format = format, } return coordModule.coord(g_frame) end end ---Функция для оформления объектов-значений с файлами с Викисклада ---@param value string Raw value. ---@param options table Parameters. ---@return string Formatted string. local function formatCommonsMedia( value, options ) local image = value local caption = '' if options[ 'caption' ] and options[ 'caption' ] ~= '' then caption = options[ 'caption' ] end if caption ~= '' then caption = wrapQualifier( caption, 'P2096', { class = 'media-caption', style = 'display:block' } ) end if not string.find( value, '[%[%]%{%}]' ) and not string.find( value, 'UNIQ%-%-imagemap' ) then -- если в value не содержится викикод или imagemap, то викифицируем имя файла -- ищем слово imagemap в строке, потому что вставляется плейсхолдер: [[phab:T28213]] image = '[[File:' .. value .. '|frameless' if options[ 'border' ] and options[ 'border' ] ~= '' then image = image .. '|border' end local size = options[ 'size' ] if size and size ~= '' then -- TODO: check localized pixel names too if not string.match( size, 'px$' ) then size = size .. 'px' end else size = fileDefaultSize end image = image .. '|' .. size if options[ 'alt' ] and options[ 'alt' ] ~= '' then image = image .. '|alt=' .. options[ 'alt' ] end if caption ~= '' then image = image .. '|' .. caption end image = image .. ']]' if caption ~= '' then image = image .. '<br>' .. caption end else image = image .. caption .. getCategoryByCode( 'media-contains-markup' ) end return image end ---Function for render math formulas ---@param value string Value. ---@param options table Parameters. ---@return string Formatted string. local function formatMath( value, options ) return options.frame:extensionTag{ name = 'math', content = value } end ---Функция для оформления внешних идентификаторов ---@param value string ---@param options table ---@return string local function formatExternalId( value, options ) local formatter = options.formatter local propertyId = options.property:upper() if not formatter or formatter == '' then local isGoodFormat = false local wbStatus, formatRegexStatements = pcall( mw.wikibase.getBestStatements, propertyId, 'P1793' ) if wbStatus and formatRegexStatements then for _, statement in pairs( formatRegexStatements ) do if statement.mainsnak.snaktype == 'value' then local pattern = mw.ustring.gsub( statement.mainsnak.datavalue.value, '\\', '%' ) pattern = mw.ustring.gsub( pattern, '{%d+,?%d*}', '+' ) if ( string.find( pattern, '|' ) or string.find( pattern, '%)%?' ) or mw.ustring.match( value, '^' .. pattern .. '$' ) ~= nil ) then isGoodFormat = true break end end end end if isGoodFormat then local formatterStatements wbStatus, formatterStatements = pcall( mw.wikibase.getBestStatements, propertyId, 'P1630' ) if wbStatus and formatterStatements then for _, statement in pairs( formatterStatements ) do if statement.mainsnak.snaktype == 'value' then formatter = statement.mainsnak.datavalue.value break end end end end end if formatter and formatter ~= '' then local encodedValue = mw.ustring.gsub( value, '%%', '%%%%' ) -- ломается, если подставить внутрь другого mw.ustring.gsub local link = mw.ustring.gsub( mw.ustring.gsub( formatter, '$1', encodedValue ), '.', { [ ' ' ] = '%20', [ '+' ] = '%2b', [ '[' ] = '%5B', [ ']' ] = '%5D' } ) local title = options.title if not title or title == '' then title = '$1' end title = mw.ustring.gsub( mw.ustring.gsub( title, '$1', encodedValue ), '.', { [ '[' ] = '(', [ ']' ] = ')' } ) return '[' .. link .. ' ' .. title .. ']' end return value end ---Функция для оформления числовых значений ---@param value table Объект-значение ---@param options table Таблица параметров ---@return string Оформленный текст local function formatQuantity( value, options ) -- диапазон значений local amount = string.gsub( value.amount, '^%+', '' ) local lang = mw.language.getContentLanguage() local langCode = lang:getCode() local function formatNum( number, sigfig ) local multiplier = '' if options.countByThousands then local powers = options.i18n.thousandPowers local pos = 1 while math.abs( number ) >= 1000 and pos < #powers do number = number / 1000 pos = pos + 1 end multiplier = powers[ pos ] if math.abs( number ) >= 100 then sigfig = sigfig or 0 elseif math.abs( number ) >= 10 then sigfig = sigfig or 1 else sigfig = sigfig or 2 end else sigfig = sigfig or 12 -- округление до 12 знаков после запятой, на 13-м возникает ошибка в точности end local iMultiplier = 10^sigfig number = math.floor( number * iMultiplier + 0.5 ) / iMultiplier return string.gsub( lang:formatNum( number ), '^-', '−' ) .. multiplier end local out = formatNum( tonumber( amount ) ) if value.upperBound then local diff = tonumber( value.upperBound ) - tonumber( amount ) if diff > 0 then -- временная провека, пока у большинства значений не будет убрано ±0 -- Пробуем понять до какого знака округлять local integer, dot, decimals, _ = value.upperBound:match( '^+?-?(%d*)(%.?)(%d*)(.*)' ) local precision if dot == '' then precision = -integer:match( '0*$' ):len() else precision = #decimals end local bound = formatNum( diff, precision ) if string.match( bound, 'E%-(%d+)' ) then -- если в экспоненциальном формате local digits = tonumber( string.match( bound, 'E%-(%d+)' ) ) - 2 bound = formatNum( diff * 10 ^ digits, precision ) bound = string.sub( bound, 0, 2 ) .. string.rep( '0', digits ) .. string.sub( bound, -string.len( bound ) + 2 ) end out = out .. ' ± ' .. bound end end if options.unit and options.unit ~= '' then if options.unit ~= '-' then out = out .. ' ' .. options.unit end elseif value.unit and string.match( value.unit, 'http://www.wikidata.org/entity/' ) then local unitEntityId = string.gsub( value.unit, 'http://www.wikidata.org/entity/', '' ) if unitEntityId ~= 'undefined' then local wbStatus, unitEntity = pcall( mw.wikibase.getEntity, unitEntityId ) if wbStatus == true and unitEntity then if unitEntity.claims.P2370 and unitEntity.claims.P2370[ 1 ].mainsnak.snaktype == 'value' and not value.upperBound and options.siConversion == true then local conversionToSiUnit = string.gsub( unitEntity.claims.P2370[ 1 ].mainsnak.datavalue.value.amount, '^%+', '' ) if math.floor( math.log10( conversionToSiUnit ) ) ~= math.log10( conversionToSiUnit ) then -- Если не степени десятки (переводить сантиметры в метры не надо!) local outValue = tonumber( amount ) * conversionToSiUnit if outValue > 0 then -- Пробуем понять до какого знака округлять local integer, dot, decimals, _ = amount:match( '^(%d*)(%.?)(%d*)(.*)' ) local precision if dot == '' then precision = -integer:match( '0*$' ):len() else precision = #decimals end local adjust = math.log10( math.abs( conversionToSiUnit ) ) + math.log10( 2 ) local minPrecision = 1 - math.floor( math.log10( outValue ) + 2e-14 ) out = formatNum( outValue, math.max( math.floor( precision + adjust ), minPrecision ) ) else out = formatNum( outValue, 0 ) end unitEntityId = string.gsub( unitEntity.claims.P2370[ 1 ].mainsnak.datavalue.value.unit, 'http://www.wikidata.org/entity/', '' ) wbStatus, unitEntity = pcall( mw.wikibase.getEntity, unitEntityId ) end end local label = getLabelWithLang( context, options, unitEntity.id, nil, { "P5061", "P558", "P558" }, { 'P5061[language:' .. langCode .. ']', 'P558[P282:' .. writingSystemElementId .. ', P407:' .. langElementId .. ']', 'P558[!P282][!P407]' } ) out = out .. ' ' .. label end end end return out end ---Функция для оформления URL ---@param context table ---@param options table ---@param value string local function formatUrlValue( context, options, value ) if not options.length or options.length == '' then options.length = 25 end local moduleUrl = require( 'Module:URL' ) return moduleUrl.formatUrlSingle( context, options, value ) end local DATATYPE_CACHE = {} ---Get property datatype by ID. ---@param propertyId string Property ID, e.g. 'P123'. ---@return string Property datatype, e.g. 'commonsMedia', 'time' or 'url'. local function getPropertyDatatype( propertyId ) if not propertyId or not string.match( propertyId, '^P%d+$' ) then return nil end local cached = DATATYPE_CACHE[ propertyId ] if cached ~= nil then return cached end local wbStatus, propertyEntity = pcall( mw.wikibase.getEntity, propertyId ) if wbStatus ~= true or not propertyEntity then return nil end mw.log("Loaded datatype " .. propertyEntity.datatype .. " of " .. propertyId .. ' from wikidata, consider passing datatype argument to formatProperty call or to Wikidata/config' ) DATATYPE_CACHE[ propertyId ] = propertyEntity.datatype return propertyEntity.datatype end ---@param datavalue table ---@return function local function getPlainValueFunction( datavalue, _ ) if datavalue.type == 'wikibase-entityid' then return function( _, _, value ) return getEntityIdFromValue( value ) end elseif datavalue.type == 'string' then return function( _, _, value ) return value end elseif datavalue.type == 'monolingualtext' then return function( _, _, value ) return value.text end elseif datavalue.type == 'globecoordinate' then return function( _, _, value ) return value.latitude .. ',' .. value.longitude end elseif datavalue.type == 'quantity' then return function( _, _, value ) return value.amount end elseif datavalue.type == 'time' then return function( _, _, value ) return value.time end end throwError( 'unknown-datavalue-type' ) end ---@param datavalue table ---@param datatype string ---@return function local function getDefaultValueFunction( datavalue, datatype ) -- вызов обработчиков по умолчанию для известных типов значений if datavalue.type == 'wikibase-entityid' then -- Entity ID return function( context, options, value ) return formatEntityId( context, options, getEntityIdFromValue( value ) ) end elseif datavalue.type == 'string' then -- String if datatype and datatype == 'commonsMedia' then -- Media return function( _, options, value ) return formatCommonsMedia( value, options ) end elseif datatype and datatype == 'external-id' then -- External ID return function( _, options, value ) return formatExternalId( value, options ) end elseif datatype and datatype == 'math' then -- Math formula return function( _, options, value ) return formatMath( value, options ) end elseif datatype and datatype == 'url' then -- URL return formatUrlValue end return function( _, _, value ) return value end elseif datavalue.type == 'monolingualtext' then -- моноязычный текст (строка с указанием языка) return function( _, options, value ) if options.monolingualLangTemplate == 'lang' then if value.language == CONTENT_LANGUAGE_CODE then return value.text end -- TODO: этот вызов тоже надо перенести на Languages return options.frame:expandTemplate{ title = 'lang-' .. value.language, args = { value.text } } elseif options.monolingualLangTemplate == 'ref' then return '<span class="lang" lang="' .. value.language .. '">' .. value.text .. '</span>' .. getLanguageRef( value.language ) else return '<span class="lang" lang="' .. value.language .. '">' .. value.text .. '</span>' end end elseif datavalue.type == 'globecoordinate' then -- географические координаты return function( _, options, value ) return formatGlobeCoordinate( value, options ) end elseif datavalue.type == 'quantity' then return function( _, options, value ) return formatQuantity( value, options ) end elseif datavalue.type == 'time' then return function( context, options, value ) local moduleDate = require( 'Module:Wikidata/date' ) return moduleDate.formatDate( context, options, value ) end end -- во всех стальных случаях возвращаем ошибку throwError( 'unknown-datavalue-type' ) end ---Функция для оформления значений (value) ---Подробнее о значениях см. d:Wikidata:Glossary/ru ---@param context table ---@param options table ---@param datavalue table ---@param datatype string ---@return string Оформленный текст function formatDatavalue( context, options, datavalue, datatype ) if not context then error( 'context not specified' ); end if not options then error( 'options not specified' ); end if not datavalue then error( 'datavalue not specified' ); end if not datavalue.value then error( 'datavalue.value is missing' ); end -- проверка на указание специализированных обработчиков в параметрах, -- переданных при вызове if options.plain then context.formatValueDefault = getPlainValueFunction( datavalue, datatype ) else context.formatValueDefault = getDefaultValueFunction( datavalue, datatype ) end local functionToCall = getUserFunction( options, 'value', context.formatValueDefault ) return functionToCall( context, options, datavalue.value ) end local DEFAULT_BOUNDARIES = { os.time() * 1000, os.time() * 1000} ---Функция для оформления идентификатора сущности ---@param context table ---@param options table ---@param entityId string ---@return string Оформленный текст function formatEntityId( context, options, entityId ) -- получение локализованного названия local boundaries if options.qualifiers then boundaries = p.getTimeBoundariesFromQualifiers( context.frame, context, { qualifiers = options.qualifiers } ) end if not boundaries then boundaries = DEFAULT_BOUNDARIES end local label, labelLanguageCode = getLabelWithLang( context, options, entityId, boundaries ) -- определение соответствующей показываемому элементу категории local category = context.extractCategory( options, { id = entityId } ) -- получение ссылки по идентификатору local link = mw.wikibase.sitelink( entityId ) if link then -- ссылка на категорию, а не добавление страницы в неё if mw.ustring.match( link, '^' .. mw.site.namespaces[ 14 ].name .. ':' ) then link = ':' .. link end if label and not options.rawArticle then if labelLanguageCode ~= CONTENT_LANGUAGE_CODE then label = '<span lang="' .. label .. '">' .. label .. '</span>' end local a = '[[' .. link .. '|' .. label .. ']]' if CONTENT_LANGUAGE_CODE ~= labelLanguageCode and 'mul' ~= labelLanguageCode then a = a .. getCategoryByCode( 'links-to-entities-with-missing-local-language-label' ) end return a .. category else return '[[' .. link .. ']]' .. category end end if label then -- TODO: возможно, лучше просто mw.wikibase.getLabel(entityId) -- красная ссылка -- TODO: разобраться, почему не всегда есть options.frame local moduleRedLink = require( 'Module:Wikidata/redLink' ) local title = mw.title.new( label ) if title and not title.exists and options.frame then local rawLabel = mw.wikibase.getLabel(entityId) or label -- без |text= и boundaries; or label - костыль local redLink = moduleRedLink.formatRedLinkWithInfobox(rawLabel, label, entityId) if CONTENT_LANGUAGE_CODE ~= labelLanguageCode and 'mul' ~= labelLanguageCode then redLink = '<span lang="' .. labelLanguageCode .. '">' .. redLink .. '</span>' .. getCategoryByCode( 'links-to-entities-with-missing-local-language-label' ) end return redLink .. category end -- TODO: перенести до проверки на существование статьи local addWdLink = false if ( not options.format or options.format ~= 'text' ) and entityId ~= 'Q6581072' and entityId ~= 'Q6581097' -- TODO: переписать на format=text then addWdLink = true end -- одноимённая статья уже существует - выводится текст и ссылка на ВД return moduleRedLink.formatText(label, entityId, addWdLink) .. category end -- Различные уровни настройки параметров, по убыванию приоритета local propertyParams = {} -- 1. Параметры, указанные явно при вызове if params then for key, value in pairs( params ) do if value ~= '' then propertyParams[ key ] = value end end end if toBoolean( propertyParams.plain, false ) then propertyParams.separator = propertyParams.separator or ', ' propertyParams.conjunction = propertyParams.conjunction or ', ' else -- 2. Настройки конкретного параметра if config.properties and config.properties[ propertyId ] then for key, value in pairs( config.properties[ propertyId ] ) do if propertyParams[ key ] == nil then propertyParams[ key ] = value end end end -- 3. Указанный пресет настроек if propertyParams.preset and config.presets and config.presets[ propertyParams.preset ] then for key, value in pairs( config.presets[ propertyParams.preset ] ) do if propertyParams[ key ] == nil then propertyParams[ key ] = value end end end datatype = datatype or params.datatype or propertyParams.datatype or getPropertyDatatype( propertyId ) if propertyParams.datatype == nil then propertyParams.datatype = datatype end -- 4. Настройки для типа данных if datatype and config.datatypes and config.datatypes[ datatype ] then for key, value in pairs( config.datatypes[ datatype ] ) do if propertyParams[ key ] == nil then propertyParams[ key ] = value end end end -- 5. Общие настройки для всех свойств if config.global then for key, value in pairs( config.global ) do if propertyParams[ key ] == nil then propertyParams[ key ] = value end end end end return propertyParams end ---Функция для оформления утверждений (statement) ---Подробнее о утверждениях см. d:Wikidata:Glossary/ru ---@param frame table ---@return string Строка оформленного текста, предназначенная для отображения в статье function p.formatProperty( frame ) local args = copyTo( frame.args, {} ) -- проверка на отсутствие обязательного параметра property if not args.property then throwError( 'property-param-not-provided' ) end local override local propertyId = mw.language.getContentLanguage():ucfirst( string.gsub( args.property, '([^Pp0-9].*)$', function(w) if string.sub( w, 1, 1 ) == '~' then override = w end return '' end ) ) if override then args[ override:match( '[,~]([^=]*)=' ) ] = override:match( '=(.*)' ) args.property = propertyId end -- проброс всех параметров из шаблона {wikidata} и параметра from откуда угодно local p_frame = frame while p_frame do if p_frame:getTitle() == mw.site.namespaces[ 10 ].name .. ':Wikidata' then copyTo( p_frame.args, args, true ) end if p_frame.args and p_frame.args.from and p_frame.args.from ~= '' then args.entityId = p_frame.args.from else args.entityId = mw.wikibase.getEntityIdForCurrentPage() end p_frame = p_frame:getParent() end args = getPropertyParams( propertyId, nil, args ) local datatype = args.datatype -- перевод итоговых значений флагов в true/false и добавление значений -- по умолчанию только в том случае, если они нигде не были указаны ранее args.plain = toBoolean( args.plain, false ) args.nocat = not args.plain and toBoolean( args.nocat, false ) args.references = not args.plain and toBoolean( args.references, true ) -- если значение передано в параметрах вызова то выводим только его if args.value and args.value ~= '' then -- специальное значение для скрытия Викиданных if args.value == '-' then return '' end local value = args.value -- опция, запрещающая оформление значения, поэтому никак не трогаем if args.plain then return value end local context = initContext( args ) -- обработчики по типу значения local wrapperExtraArgs = {} if args[ 'value-module' ] and args[ 'value-function' ] and not string.find( value, '[%[%]%{%}]' ) then local func = getUserFunction( args, 'value' ) value = func( context, args, value ) elseif datatype == 'commonsMedia' then value = formatCommonsMedia( value, args ) elseif datatype == 'external-id' and not string.find( value, '[%[%]%{%}]' ) then wrapperExtraArgs[ 'data-wikidata-external-id' ] = mw.text.killMarkers( value ) value = formatExternalId( value, args ) --elseif datatype == 'math' then -- args.frame = frame -- костыль: в formatMath нужно frame:extensionTag -- value = formatMath( value, args ) elseif datatype == 'url' then value = formatUrlValue( context, args, value ) end -- оборачиваем в тег для JS-функций if string.match( propertyId, '^P%d+$' ) then value = mw.text.trim( value ) -- временная штрафная категория для исправления табличных вставок local allowTables = getPropertyParams( propertyId, nil, {} ).allowTables if not allowTables and string.match( value, '<t[dhr][ >]' ) -- and not string.match( value, '<table[ >]' ) -- and not string.match( value, '^%{%|' ) then value = value .. getCategoryByCode( 'value-contains-table', propertyId ) else value = wrapStatement( value, propertyId, nil, wrapperExtraArgs ) end end return value end -- ability to disable loading Wikidata if args.entityId == '-' then return '' end g_frame = frame -- после проверки всех аргументов -- вызов функции оформления для свойства (набора утверждений) return formatProperty( args ) end ---Функция проверки на присутствие источника в списке нерекомендованных. ---@param snaks table ---@return boolean local function isReferenceDeprecated( snaks ) if not snaks then return false end if snaks.P248 and snaks.P248[ 1 ] and snaks.P248[ 1 ].datavalue and snaks.P248[ 1 ].datavalue.value.id then local entityId = snaks.P248[ 1 ].datavalue.value.id if getConfig( 'deprecatedSources', entityId ) then return true end elseif snaks.P1433 and snaks.P1433[ 1 ] and snaks.P1433[ 1 ].datavalue and snaks.P1433[ 1 ].datavalue.value.id then local entityId = snaks.P1433[ 1 ].datavalue.value.id if getConfig( 'deprecatedSources', entityId ) then return true end end return false end ---Функция оформления ссылок на источники (reference) ---Подробнее о ссылках на источники см. d:Wikidata:Glossary/ru --- ---Экспортируется в качестве зарезервированной точки для вызова из функций-расширения вида claim-module/claim-function через context ---Вызов из других модулей напрямую осуществляться не должен (используйте frame:expandTemplate вместе с одним из специлизированных шаблонов вывода значения свойства). ---@param context table ---@param options table ---@param statement table ---@return string Оформленные примечания для отображения в статье function formatRefs( context, options, statement ) if not context then error( 'context not specified' ); end if not options then error( 'options not specified' ); end if not options.entityId then error( 'options.entityId missing' ); end if not statement then error( 'statement not specified' ); end if not outputReferences then return '' end ---@type string[] local references = {} if statement.references then local hasNotDeprecated = false local displayCount = 0 for _, reference in pairs( statement.references ) do if not isReferenceDeprecated( reference.snaks ) then hasNotDeprecated = true end end for _, reference in pairs( statement.references ) do local display = true if hasNotDeprecated then if isReferenceDeprecated( reference.snaks ) then display = false end end if displayCount >= 2 then if options.entityId and options.property then local propertyId = mw.ustring.match( options.property, '^[Pp][0-9]+' ) -- TODO: обрабатывать не тут, а раньше local moreReferences = '<sup>[[d:' .. options.entityId .. '#' .. string.upper( propertyId ) .. '|[…]]]</sup>' table.insert( references, moreReferences ) end break end if display == true then ---@type string local refText = moduleSources.renderReference( g_frame, options.entityId, reference ) if refText and refText ~= '' then table.insert( references, refText ) displayCount = displayCount + 1 end end end end return table.concat( references ) end return p 2g1pgnyw6mnpryexe5tb4eopcmmtpow 594554 594553 2026-05-02T14:34:25Z Taamu 795 Отменено 2 изменения от [[Special:Diff/594550|594550]] до [[Special:Diff/594553|594553]] 594554 Scribunto text/plain ---settings, may differ from project to project local fileDefaultSize = '267x400px' local outputReferences = true local writingSystemElementId = 'Q8209' local langElementId = 'Q33968' ---Ссылки на используемые модули, которые потребуются в 99% случаев загрузки страниц (чтобы иметь на виду при переименовании) local moduleSources = require( 'Module:Sources' ) local WDS = require( 'Module:WikidataSelectors' ) ---Константы ---@type string local CONTENT_LANGUAGE_CODE = mw.language.getContentLanguage():getCode() local p = {} local g_config, g_frame local formatDatavalue, formatEntityId, formatRefs, formatSnak, formatStatement, formatStatementDefault, getSourcingCircumstances, getPropertyParams ---@param obj table ---@param target table ---@param skipEmpty boolean | nil ---@return table local function copyTo( obj, target, skipEmpty ) for key, val in pairs( obj ) do if skipEmpty ~= true or ( val ~= nil and val ~= '' ) then target[ key ] = val end end return target end ---@param prev number | nil ---@param next number | nil ---@return number | nil local function min( prev, next ) if prev == nil or prev > next then return next end return prev end ---@param prev number | nil ---@param next number | nil ---@return number | nil local function max( prev, next ) if prev == nil or prev < next then return next end return prev end ---@param section string ---@param code string ---@return any | nil local function getConfig( section, code ) if g_config == nil then g_config = require( 'Module:Wikidata/config' ) end if not g_config then g_config = {} end if not section then return g_config end if not code then return g_config[ section ] or {} end if not g_config[ section ] then return nil end return g_config[ section ][ code ] end ---@param code string ---@param sortKey string | nil ---@return string local function getCategoryByCode( code, sortKey ) local value = getConfig( 'categories', code ) if not value or value == '' then return '' end if sortKey ~= nil then return '[[Category:' .. value .. '|' .. sortKey .. ']]'; -- экранировать? else return '[[Category:' .. value .. ']]' end end ---@param isoStr string | table ---@return table | nil local function splitISO8601( isoStr ) if 'table' == type( isoStr ) then if isoStr.args and isoStr.args[ 1 ] then isoStr = '' .. isoStr.args[ 1 ] else return 'unknown argument type: ' .. type( isoStr ) .. ': ' .. table.tostring( isoStr ) end end local Y, M, D = ( function( str ) local pattern = "(%-?%d+)%-(%d+)%-(%d+)T" local _Y, _M, _D = mw.ustring.match( str, pattern ) return tonumber( _Y ), tonumber( _M ), tonumber( _D ) end )( isoStr ) local h, m, s = ( function( str ) local pattern = "T(%d+):(%d+):(%d+)%Z" local _H, _M, _S = mw.ustring.match( str, pattern ) return tonumber( _H ), tonumber( _M ), tonumber( _S ) end )( isoStr ) local oh, om = ( function( str ) if str:sub(-1) == "Z" then -- ends with Z, Zulu time return 0, 0 end -- matches ±hh:mm, ±hhmm or ±hh; else returns nils local pattern = "([-+])(%d%d):?(%d?%d?)$" local sign, oh, om = mw.ustring.match( str, pattern ) sign, oh, om = sign or "+", oh or "00", om or "00" return tonumber( sign .. oh ), tonumber( sign .. om ) end )( isoStr ) return { year=Y, month=M, day=D, hour=( h + oh ), min=( m + om ), sec=s } end ---@param time string ---@param precision number ---@return table | nil local function parseTimeBoundaries( time, precision ) local s = splitISO8601( time ) if not s then return nil end if precision >= 0 and precision <= 8 then local powers = { 1000000000 , 100000000, 10000000, 1000000, 100000, 10000, 1000, 100, 10 } local power = powers[ precision + 1 ] local left = s.year - ( s.year % power ) return { tonumber( os.time( { year=left, month=1, day=1, hour=0, min=0, sec=0 } ) ) * 1000, tonumber( os.time( { year=left + power - 1, month=12, day=31, hour=29, min=59, sec=58 } ) ) * 1000 + 1999 } end if precision == 9 then return { tonumber( os.time( { year=s.year, month=1, day=1, hour=0, min=0, sec=0} )) * 1000, tonumber( os.time( { year=s.year, month=12, day=31, hour=23, min=59, sec=58} )) * 1000 + 1999 } end if precision == 10 then local lastDays = { 31, 28.25, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } local lastDay = lastDays[ s.month ] return { tonumber( os.time( { year=s.year, month=s.month, day=1, hour=0, min=0, sec=0 } ) ) * 1000, tonumber( os.time( { year=s.year, month=s.month, day=lastDay, hour=23, min=59, sec=58 } ) ) * 1000 + 1999 } end if precision == 11 then return { tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=0, min=0, sec=0 } ) ) * 1000, tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=23, min=59, sec=58 } ) ) * 1000 + 1999 } end if precision == 12 then return { tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=s.hour, min=0, sec=0 } ) ) * 1000, tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=s.hour, min=59, sec=58 } ) ) * 1000 + 1999 } end if precision == 13 then return { tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=s.hour, min=s.min, sec=0 } ) ) * 1000, tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=s.hour, min=s.min, sec=58 } ) ) * 1000 + 1999 } end if precision == 14 then local t = tonumber( os.time( { year=s.year, month=s.month, day=s.day, hour=s.hour, min=s.min, sec=0 } ) ) return { t * 1000, t * 1000 + 999 } end error( 'Unsupported precision: ' .. precision ) end ---Функция для формирования категории на основе wikidata/config ---@param options table ---@param entityId string ---@return string local function extractCategory( options, entityId ) if not entityId or not options.category or options.nocat then return '' end if type( entityId ) ~= 'string' then entityId = entityId.id end local claims = WDS.load( entityId, options.category ) if not claims then return '' end for _, claim in pairs( claims ) do if claim and claim.mainsnak and claim.mainsnak.datavalue and claim.mainsnak.datavalue.type == 'wikibase-entityid' then local catEntityId = claim.mainsnak.datavalue.value.id local wbStatus, catSiteLink = pcall( mw.wikibase.getSitelink, catEntityId ) if wbStatus and catSiteLink then return '[[' .. catSiteLink .. ']]' end end end return '' end ---Преобразует строку в булевое значение ---@param valueToParse string ---@return boolean Преобразованное значение, если его удалось распознать, или defaultValue во всех остальных случаях local function toBoolean( valueToParse, defaultValue ) if valueToParse ~= nil then if valueToParse == false or valueToParse == '' or valueToParse == 'false' or valueToParse == '0' then return false end return true end return defaultValue end ---Обрачивает отформатированное значение в инлайновый или блочный тег. ---@param value string value ---@param attributes table of attributes ---@return string HTML tag with value local function wrapValue( value, attributes ) local tagName = 'span' local spacer = '' if string.match( value, '\n' ) or string.match( value, '<t[dhr][ >]' ) or string.match( value, '<div[ >]' ) or string.find( value, 'UNIQ%-%-imagemap' ) then tagName = 'div' spacer = '\n' end local attrString = '' for key, val in pairs( attributes or {} ) do local _key = mw.text.trim( key ) local _value = mw.text.encode( mw.text.trim( val ) ) attrString = attrString .. _key .. '="' .. _value .. '" ' end return '<' .. tagName .. ' ' .. attrString .. '>' .. spacer .. value .. '</' .. tagName .. '>' end ---Wraps formatted snak value into HTML tag with attributes. ---@param value string value of snak ---@param hash string ---@param attributes table of extra attributes ---@return string HTML tag with value local function wrapSnak( value, hash, attributes ) local newAttributes = mw.clone( attributes or {} ) newAttributes[ 'class' ] = ( newAttributes[ 'class' ] or '' ) .. ' wikidata-snak' if hash then newAttributes[ 'data-wikidata-hash'] = hash else newAttributes[ 'class' ] = newAttributes[ 'class' ] .. ' wikidata-main-snak' end return wrapValue( value, newAttributes ) end ---Wraps formatted statement value into HTML tag with attributes. ---@param value string value of statement ---@param propertyId string PID of property ---@param claimId string ID of claim or nil for local value ---@param attributes table of extra attributes ---@return string HTML tag with value local function wrapStatement( value, propertyId, claimId, attributes ) local newAttributes = mw.clone( attributes or {} ) newAttributes[ 'class' ] = newAttributes[ 'class' ] or '' newAttributes[ 'data-wikidata-property-id' ] = string.upper( propertyId ) if claimId then newAttributes[ 'class' ] = newAttributes[ 'class' ] .. ' wikidata-claim' newAttributes[ 'data-wikidata-claim-id' ] = claimId else newAttributes[ 'class' ] = newAttributes[ 'class' ] .. ' no-wikidata' end return wrapValue( value, newAttributes ) end ---Wraps formatted qualifier's statement value into HTML tag with attributes. ---@param value string value of qualifier's statement ---@param qualifierId string PID of qualifier ---@param attributes table of extra attributes ---@return string HTML tag with value local function wrapQualifier( value, qualifierId, attributes ) local newAttributes = mw.clone( attributes or {} ) newAttributes[ 'data-wikidata-qualifier-id' ] = string.upper( qualifierId ) return wrapValue( value, newAttributes ) end ---Функция для получения сущности (еntity) для текущей страницы ---Подробнее о сущностях см. d:Wikidata:Glossary/ru ---@param id string Идентификатор (типа P18, Q42) ---@return table Таблица, элементы которой индексируются с нуля local function getEntityFromId( id ) local entity local wbStatus if id then wbStatus, entity = pcall( mw.wikibase.getEntity, id ) else wbStatus, entity = pcall( mw.wikibase.getEntity ) end return entity end ---Внутренняя функция для формирования сообщения об ошибке ---@param key string Ключ элемента в таблице config.errors (например entity-not-found) ---@return void local function throwError( key ) error( getConfig( 'errors', key ) ) end ---Функция для получения идентификатора сущностей ---@param value table ---@return string local function getEntityIdFromValue( value ) local prefix = '' if value[ 'entity-type' ] == 'item' then prefix = 'Q' elseif value[ 'entity-type' ] == 'property' then prefix = 'P' else throwError( 'unknown-entity-type' ) end return prefix .. value[ 'numeric-id' ] end ---Проверка на наличие специализированной функции в опциях ---@param options table ---@param prefix string ---@return function local function getUserFunction( options, prefix, defaultFunction ) -- проверка на указание специализированных обработчиков в параметрах, -- переданных при вызове if options[ prefix .. '-module' ] or options[ prefix .. '-function' ] then -- проверка на пустые строки в параметрах или их отсутствие if not options[ prefix .. '-module' ] or not options[ prefix .. '-function' ] then throwError( 'unknown-' .. prefix .. '-module' ) end -- динамическая загруза модуля с обработчиком указанным в параметре local formatter = require( 'Module:' .. options[ prefix .. '-module' ] ) if formatter == nil then throwError( prefix .. '-module-not-found' ) end local fun = formatter[ options[ prefix .. '-function' ] ] if fun == nil then throwError( prefix .. '-function-not-found' ) end return fun end return defaultFunction end ---Выбирает свойства по property id, дополнительно фильтруя их по рангу ---@param context table ---@param options table ---@param propertySelector string ---@return table | nil local function selectClaims( context, options, propertySelector ) if not context then error( 'context not specified' ); end if not options then error( 'options not specified' ); end if not options.entityId then error( 'options.entity is missing' ); end if not propertySelector then error( 'propertySelector not specified' ); end local result = WDS.load( options.entityId, propertySelector ) if not result or #result == 0 then return nil end if options.limit and options.limit ~= '' and options.limit ~= '-' then local limit = tonumber( options.limit, 10 ) while #result > limit do table.remove( result ) end end return result end ---Функция для получения значения свойства элемента в заданный момент времени. ---@param entityId string ---@param boundaries table Временные границы ---@param propertyIds table<string> ---@param selectors table<string> ---@return table Таблица соответствующих значений свойства local function getPropertyInBoundaries( context, entityId, boundaries, propertyIds, selectors ) if type( entityId ) ~= 'string' then error( 'type of entityId argument expected string, but was ' .. type(entityId)); end local results = {} if not propertyIds or #propertyIds == 0 then return results end for i, propertyId in ipairs( propertyIds ) do local selector if selectors ~= nil then selector = selectors[ i ] or selectors[ propertyId ] or propertyId else selector = propertyId end local fakeAllClaims = {} fakeAllClaims[ propertyId ] = mw.wikibase.getAllStatements( entityId, propertyId ) local filteredClaims = WDS.filter( fakeAllClaims, selector .. '[rank:preferred, rank:normal]' ) if filteredClaims then for _, claim in pairs( filteredClaims ) do if not boundaries then table.insert( results, claim.mainsnak ) else local startBoundaries = p.getTimeBoundariesFromQualifier( context.frame, context, claim, 'P580' ) local endBoundaries = p.getTimeBoundariesFromQualifier( context.frame, context, claim, 'P582' ) if ( startBoundaries == nil or startBoundaries[ 1 ] <= boundaries[ 1 ] ) and ( endBoundaries == nil or endBoundaries[ 1 ] >= boundaries[ 2 ] ) then table.insert( results, claim.mainsnak ) end end end end if #results > 0 then break end end return results end ---@param context table ---@param statement table ---@param qualifierId string ---@return table | nil function p.getTimeBoundariesFromQualifier( _, context, statement, qualifierId ) -- only support exact date so far, but need improvement local left, right if statement.qualifiers and statement.qualifiers[ qualifierId ] then for _, qualifier in pairs( statement.qualifiers[ qualifierId ] ) do local boundaries = context.parseTimeBoundariesFromSnak( qualifier ) if not boundaries then return nil end left = min( left, boundaries[ 1 ] ) right = max( right, boundaries[ 2 ] ) end end if not left or not right then return nil end return { left, right } end ---@param frame table ---@param context table ---@param statement table ---@param qualifierIds table<string> ---@return table | nil function p.getTimeBoundariesFromQualifiers( frame, context, statement, qualifierIds ) if not qualifierIds then qualifierIds = { 'P582', 'P580', 'P585' } end for _, qualifierId in pairs( qualifierIds ) do local result = p.getTimeBoundariesFromQualifier( frame, context, statement, qualifierId ) if result then return result end end return nil end ---@type table<string> local getLabelWithLang_DEFAULT_PROPERTIES = { 'P1813', 'P1448', 'P1705' } ---@type table<string> local getLabelWithLang_DEFAULT_SELECTORS = { 'P1813[language:' .. CONTENT_LANGUAGE_CODE .. '][!P282,P282:' .. writingSystemElementId .. '][!P3831,P3831:Q105690470]', 'P1448[language:' .. CONTENT_LANGUAGE_CODE .. '][!P282,P282:' .. writingSystemElementId .. '][!P3831,P3831:Q105690470]', 'P1705[language:' .. CONTENT_LANGUAGE_CODE .. '][!P282,P282:' .. writingSystemElementId .. '][!P3831,P3831:Q105690470]' } ---Функция для получения метки элемента в заданный момент времени. ---@param context table ---@param options table ---@param entityId string ---@param boundaries table ---@param propertyIds table ---@param selectors table<string> ---@return string, string Текстовая метка элемента, язык метки local function getLabelWithLang( context, options, entityId, boundaries, propertyIds, selectors ) if type( entityId ) ~= 'string' then error( 'type of entityId argument expected string, but was ' .. type( entityId ) ); end if not entityId then return nil end local langCode = CONTENT_LANGUAGE_CODE -- name from label local label if options.text and options.text ~= '' then label = options.text else if not propertyIds then propertyIds = getLabelWithLang_DEFAULT_PROPERTIES selectors = getLabelWithLang_DEFAULT_SELECTORS end -- name from properties local results = getPropertyInBoundaries( context, entityId, boundaries, propertyIds, selectors ) for _, result in pairs( results ) do if result.datavalue and result.datavalue.value then if result.datavalue.type == 'monolingualtext' and result.datavalue.value.text then label = result.datavalue.value.text langCode = result.datavalue.value.language break elseif result.datavalue.type == 'string' then label = result.datavalue.value break end end end if not label then label, langCode = mw.wikibase.getLabelWithLang( entityId ) if not langCode then return nil end end end return label, langCode end ---@param context table ---@param options table ---@return string local function formatPropertyDefault( context, options ) if not context then error( 'context not specified' ); end if not options then error( 'options not specified' ); end if not options.entityId then error( 'options.entityId missing' ); end local claims if options.property then -- TODO: Почему тут может не быть property? if options.rank then -- передать настройки ранга из конфига claims = context.selectClaims( options, options.property .. options.rank ) else claims = context.selectClaims( options, options.property ) end end if claims == nil then return '' --TODO error? end -- Обход всех заявлений утверждения и с накоплением оформленных предпочтительных -- заявлений в таблице local formattedClaims = {} for _, claim in pairs( claims ) do local formattedStatement = context.formatStatement( options, claim ) -- здесь может вернуться либо оформленный текст заявления, либо строка ошибки, либо nil if formattedStatement and formattedStatement ~= '' then if not options.plain then formattedStatement = context.wrapStatement( formattedStatement, options.property, claim.id ) end table.insert( formattedClaims, formattedStatement ) end end -- создание текстовой строки со списком оформленых заявлений из таблицы local out = mw.text.listToText( formattedClaims, options.separator, options.conjunction ) if out ~= '' then if options.before then out = options.before .. out end if options.after then out = out .. options.after end end return out end ---Create context ---@param initOptions table ---@return table | nil local function initContext( initOptions ) local context = { entityId = initOptions.entityId, entity = initOptions.entity, extractCategory = extractCategory, formatSnak = formatSnak, formatPropertyDefault = formatPropertyDefault, formatStatementDefault = formatStatementDefault, getPropertyInBoundaries = getPropertyInBoundaries, getTimeBoundariesFromQualifier = p.getTimeBoundariesFromQualifier, getTimeBoundariesFromQualifiers = p.getTimeBoundariesFromQualifiers, wrapSnak = wrapSnak, wrapStatement = wrapStatement, wrapQualifier = wrapQualifier, } context.cloneOptions = function( options ) local entity = options.entity options.entity = nil local newOptions = mw.clone( options ) options.entity = entity newOptions.entity = entity newOptions.frame = options.frame; -- На склонированном фрейме frame:expandTemplate() return newOptions end context.formatProperty = function( options ) local func = getUserFunction( options, 'property', context.formatPropertyDefault ) return func( context, options ) end context.formatStatement = function( options, statement ) return formatStatement( context, options, statement ) end context.formatSnak = function( options, snak, circumstances ) return formatSnak( context, options, snak, circumstances ) end context.formatRefs = function( options, statement ) return formatRefs( context, options, statement ) end context.parseTimeFromSnak = function( snak ) if snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.time then return tonumber( os.time( splitISO8601( tostring( snak.datavalue.value.time ) ) ) ) * 1000 end return nil end context.parseTimeBoundariesFromSnak = function( snak ) if snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.time and snak.datavalue.value.precision then return parseTimeBoundaries( snak.datavalue.value.time, snak.datavalue.value.precision ) end return nil end context.getSourcingCircumstances = function( statement ) return getSourcingCircumstances( statement ) end context.selectClaims = function( options, propertyId ) return selectClaims( context, options, propertyId ) end return context end ---Функция для оформления утверждений (statement) ---Подробнее о утверждениях см. d:Wikidata:Glossary/ru ---@param options table ---@return string Formatted wikitext. local function formatProperty( options ) -- Получение сущности по идентификатору local entity = getEntityFromId( options.entityId ) if not entity then return -- throwError( 'entity-not-found' ) end -- проверка на присутсвие у сущности заявлений (claim) -- подробнее о заявлениях см. d:Викиданные:Глоссарий if not entity.claims then return '' --TODO error? end -- improve options options.frame = g_frame options.entity = entity options.extends = function( self, newOptions ) return copyTo( newOptions, copyTo( self, {} ) ) end if options.i18n then options.i18n = copyTo( options.i18n, copyTo( getConfig( 'i18n' ), {} ) ) else options.i18n = getConfig( 'i18n' ) end local context = initContext( options ) return context.formatProperty( options ) end ---Функция для оформления одного утверждения (statement) ---@param context table ---@param options table ---@param statement table ---@return string Formatted wikitext. function formatStatement( context, options, statement ) if not statement then error( 'statement is not specified or nil' ) end if not statement.type or statement.type ~= 'statement' then throwError( 'unknown-claim-type' ) end local functionToCall = getUserFunction( options, 'claim', context.formatStatementDefault ) return functionToCall( context, options, statement ) end ---@param statement table ---@return table function getSourcingCircumstances( statement ) if not statement then error( 'statement is not specified' ) end local circumstances = {} if statement.qualifiers and statement.qualifiers.P1480 then for _, qualifier in pairs( statement.qualifiers.P1480 ) do if qualifier and qualifier.datavalue and qualifier.datavalue.type == 'wikibase-entityid' and qualifier.datavalue.value and qualifier.datavalue.value[ 'entity-type'] == 'item' then table.insert( circumstances, qualifier.datavalue.value.id ) end end end return circumstances end ---Функция для оформления одного утверждения (statement) ---@param context table Context. ---@param options table Parameters. ---@param statement table ---@return string Formatted wikitext. function formatStatementDefault( context, options, statement ) if not context then error( 'context is not specified' ) end if not options then error( 'options is not specified' ) end if not statement then error( 'statement is not specified' ) end local circumstances = context.getSourcingCircumstances( statement ) options.qualifiers = statement.qualifiers local result = context.formatSnak( options, statement.mainsnak, circumstances ) if options.qualifier and statement.qualifiers and statement.qualifiers[ options.qualifier ] then local qualifierConfig = getPropertyParams( options.qualifier, nil, {} ) if options.i18n then qualifierConfig.i18n = options.i18n end if qualifierConfig.datatype == 'time' then qualifierConfig.nolinks = true end local qualifierValues = {} for _, qualifierSnak in pairs( statement.qualifiers[ options.qualifier ] ) do local snakValue = context.formatSnak( qualifierConfig, qualifierSnak ) if snakValue and snakValue ~= '' then table.insert( qualifierValues, snakValue ) end end if result and result ~= '' and #qualifierValues then if qualifierConfig.invisible then result = result .. table.concat( qualifierValues, ', ' ) else result = result .. ' (' .. table.concat( qualifierValues, ', ' ) .. ')' end end end if result and result ~= '' and options.references then result = result .. context.formatRefs( options, statement ) end return result end ---Функция для оформления части утверждения (snak) ---Подробнее о snak см. d:Викиданные:Глоссарий ---@param context table Context. ---@param options table Parameters. ---@param snak table ---@param circumstances table ---@return string Formatted wikitext. function formatSnak( context, options, snak, circumstances ) circumstances = circumstances or {} local result if snak.snaktype == 'somevalue' then if options[ 'somevalue' ] and options[ 'somevalue' ] ~= '' then result = options[ 'somevalue' ] else result = options.i18n[ 'somevalue' ] end elseif snak.snaktype == 'novalue' then if options[ 'novalue' ] and options[ 'novalue' ] ~= '' then result = options[ 'novalue' ] else result = options.i18n[ 'novalue' ] end elseif snak.snaktype == 'value' then result = formatDatavalue( context, options, snak.datavalue, snak.datatype ) for _, item in pairs( circumstances ) do if options.i18n[ item ] then result = options.i18n[ item ] .. result end end else throwError( 'unknown-snak-type' ) end if not result or result == '' then return nil end if options.plain then return result end return context.wrapSnak( result, snak.hash ) end ---Функция для оформления объектов-значений с географическими координатами ---@param value string Raw value. ---@param options table Parameters. ---@return string Formatted string. local function formatGlobeCoordinate( value, options ) -- проверка на требование в параметрах вызова на возврат сырого значения if options[ 'subvalue' ] == 'latitude' then -- широты return value[ 'latitude' ] elseif options[ 'subvalue' ] == 'longitude' then -- долготы return value[ 'longitude' ] elseif options[ 'nocoord' ] and options[ 'nocoord' ] ~= '' then -- если передан параметр nocoord, то не выводить координаты -- обычно это делается при использовании нескольких карточек на странице return '' else -- в противном случае формируются параметры для вызова шаблона {{coord}} -- нужно дописать в документации шаблона, что он отсюда вызывается, и что -- любое изменние его парамеров должно быть согласовано с кодом тут local coordModule = require( 'Module:Coordinates' ) local globe = options.globe or '' if globe == '' and value[ 'globe' ] then local globes = require( 'Module:Wikidata/Globes' ) globe = globes[ value[ 'globe' ] ] or '' end local display = 'inline' if options.display and options.display ~= '' then display = options.display elseif ( options.property:upper() == 'P625' ) then display = 'title' end local format = options.format or '' if format == '' then format = 'dms' if value[ 'precision' ] then local precision = value[ 'precision' ] * 60 if precision >= 60 then format = 'd' elseif precision >= 1 then format = 'dm' end end end g_frame.args = { tostring( value[ 'latitude' ] ), tostring( value[ 'longitude' ] ), globe = globe, type = options.type and options.type or '', scale = options.scale and options.scale or '', display = display, format = format, } return coordModule.coord(g_frame) end end ---Функция для оформления объектов-значений с файлами с Викисклада ---@param value string Raw value. ---@param options table Parameters. ---@return string Formatted string. local function formatCommonsMedia( value, options ) local image = value local caption = '' if options[ 'caption' ] and options[ 'caption' ] ~= '' then caption = options[ 'caption' ] end if caption ~= '' then caption = wrapQualifier( caption, 'P2096', { class = 'media-caption', style = 'display:block' } ) end if not string.find( value, '[%[%]%{%}]' ) and not string.find( value, 'UNIQ%-%-imagemap' ) then -- если в value не содержится викикод или imagemap, то викифицируем имя файла -- ищем слово imagemap в строке, потому что вставляется плейсхолдер: [[phab:T28213]] image = '[[File:' .. value .. '|frameless' if options[ 'border' ] and options[ 'border' ] ~= '' then image = image .. '|border' end local size = options[ 'size' ] if size and size ~= '' then -- TODO: check localized pixel names too if not string.match( size, 'px$' ) then size = size .. 'px' end else size = fileDefaultSize end image = image .. '|' .. size if options[ 'alt' ] and options[ 'alt' ] ~= '' then image = image .. '|alt=' .. options[ 'alt' ] end if caption ~= '' then image = image .. '|' .. caption end image = image .. ']]' if caption ~= '' then image = image .. '<br>' .. caption end else image = image .. caption .. getCategoryByCode( 'media-contains-markup' ) end return image end ---Function for render math formulas ---@param value string Value. ---@param options table Parameters. ---@return string Formatted string. local function formatMath( value, options ) return options.frame:extensionTag{ name = 'math', content = value } end ---Функция для оформления внешних идентификаторов ---@param value string ---@param options table ---@return string local function formatExternalId( value, options ) local formatter = options.formatter local propertyId = options.property:upper() if not formatter or formatter == '' then local isGoodFormat = false local wbStatus, formatRegexStatements = pcall( mw.wikibase.getBestStatements, propertyId, 'P1793' ) if wbStatus and formatRegexStatements then for _, statement in pairs( formatRegexStatements ) do if statement.mainsnak.snaktype == 'value' then local pattern = mw.ustring.gsub( statement.mainsnak.datavalue.value, '\\', '%' ) pattern = mw.ustring.gsub( pattern, '{%d+,?%d*}', '+' ) if ( string.find( pattern, '|' ) or string.find( pattern, '%)%?' ) or mw.ustring.match( value, '^' .. pattern .. '$' ) ~= nil ) then isGoodFormat = true break end end end end if isGoodFormat then local formatterStatements wbStatus, formatterStatements = pcall( mw.wikibase.getBestStatements, propertyId, 'P1630' ) if wbStatus and formatterStatements then for _, statement in pairs( formatterStatements ) do if statement.mainsnak.snaktype == 'value' then formatter = statement.mainsnak.datavalue.value break end end end end end if formatter and formatter ~= '' then local encodedValue = mw.ustring.gsub( value, '%%', '%%%%' ) -- ломается, если подставить внутрь другого mw.ustring.gsub local link = mw.ustring.gsub( mw.ustring.gsub( formatter, '$1', encodedValue ), '.', { [ ' ' ] = '%20', [ '+' ] = '%2b', [ '[' ] = '%5B', [ ']' ] = '%5D' } ) local title = options.title if not title or title == '' then title = '$1' end title = mw.ustring.gsub( mw.ustring.gsub( title, '$1', encodedValue ), '.', { [ '[' ] = '(', [ ']' ] = ')' } ) return '[' .. link .. ' ' .. title .. ']' end return value end ---Функция для оформления числовых значений ---@param value table Объект-значение ---@param options table Таблица параметров ---@return string Оформленный текст local function formatQuantity( value, options ) -- диапазон значений local amount = string.gsub( value.amount, '^%+', '' ) local lang = mw.language.getContentLanguage() local langCode = lang:getCode() local function formatNum( number, sigfig ) local multiplier = '' if options.countByThousands then local powers = options.i18n.thousandPowers local pos = 1 while math.abs( number ) >= 1000 and pos < #powers do number = number / 1000 pos = pos + 1 end multiplier = powers[ pos ] if math.abs( number ) >= 100 then sigfig = sigfig or 0 elseif math.abs( number ) >= 10 then sigfig = sigfig or 1 else sigfig = sigfig or 2 end else sigfig = sigfig or 12 -- округление до 12 знаков после запятой, на 13-м возникает ошибка в точности end local iMultiplier = 10^sigfig number = math.floor( number * iMultiplier + 0.5 ) / iMultiplier return string.gsub( lang:formatNum( number ), '^-', '−' ) .. multiplier end local out = formatNum( tonumber( amount ) ) if value.upperBound then local diff = tonumber( value.upperBound ) - tonumber( amount ) if diff > 0 then -- временная провека, пока у большинства значений не будет убрано ±0 -- Пробуем понять до какого знака округлять local integer, dot, decimals, _ = value.upperBound:match( '^+?-?(%d*)(%.?)(%d*)(.*)' ) local precision if dot == '' then precision = -integer:match( '0*$' ):len() else precision = #decimals end local bound = formatNum( diff, precision ) if string.match( bound, 'E%-(%d+)' ) then -- если в экспоненциальном формате local digits = tonumber( string.match( bound, 'E%-(%d+)' ) ) - 2 bound = formatNum( diff * 10 ^ digits, precision ) bound = string.sub( bound, 0, 2 ) .. string.rep( '0', digits ) .. string.sub( bound, -string.len( bound ) + 2 ) end out = out .. ' ± ' .. bound end end if options.unit and options.unit ~= '' then if options.unit ~= '-' then out = out .. ' ' .. options.unit end elseif value.unit and string.match( value.unit, 'http://www.wikidata.org/entity/' ) then local unitEntityId = string.gsub( value.unit, 'http://www.wikidata.org/entity/', '' ) if unitEntityId ~= 'undefined' then local wbStatus, unitEntity = pcall( mw.wikibase.getEntity, unitEntityId ) if wbStatus == true and unitEntity then if unitEntity.claims.P2370 and unitEntity.claims.P2370[ 1 ].mainsnak.snaktype == 'value' and not value.upperBound and options.siConversion == true then local conversionToSiUnit = string.gsub( unitEntity.claims.P2370[ 1 ].mainsnak.datavalue.value.amount, '^%+', '' ) if math.floor( math.log10( conversionToSiUnit ) ) ~= math.log10( conversionToSiUnit ) then -- Если не степени десятки (переводить сантиметры в метры не надо!) local outValue = tonumber( amount ) * conversionToSiUnit if outValue > 0 then -- Пробуем понять до какого знака округлять local integer, dot, decimals, _ = amount:match( '^(%d*)(%.?)(%d*)(.*)' ) local precision if dot == '' then precision = -integer:match( '0*$' ):len() else precision = #decimals end local adjust = math.log10( math.abs( conversionToSiUnit ) ) + math.log10( 2 ) local minPrecision = 1 - math.floor( math.log10( outValue ) + 2e-14 ) out = formatNum( outValue, math.max( math.floor( precision + adjust ), minPrecision ) ) else out = formatNum( outValue, 0 ) end unitEntityId = string.gsub( unitEntity.claims.P2370[ 1 ].mainsnak.datavalue.value.unit, 'http://www.wikidata.org/entity/', '' ) wbStatus, unitEntity = pcall( mw.wikibase.getEntity, unitEntityId ) end end local label = getLabelWithLang( context, options, unitEntity.id, nil, { "P5061", "P558", "P558" }, { 'P5061[language:' .. langCode .. ']', 'P558[P282:' .. writingSystemElementId .. ', P407:' .. langElementId .. ']', 'P558[!P282][!P407]' } ) out = out .. ' ' .. label end end end return out end ---Функция для оформления URL ---@param context table ---@param options table ---@param value string local function formatUrlValue( context, options, value ) if not options.length or options.length == '' then options.length = 25 end local moduleUrl = require( 'Module:URL' ) return moduleUrl.formatUrlSingle( context, options, value ) end local DATATYPE_CACHE = {} ---Get property datatype by ID. ---@param propertyId string Property ID, e.g. 'P123'. ---@return string Property datatype, e.g. 'commonsMedia', 'time' or 'url'. local function getPropertyDatatype( propertyId ) if not propertyId or not string.match( propertyId, '^P%d+$' ) then return nil end local cached = DATATYPE_CACHE[ propertyId ] if cached ~= nil then return cached end local wbStatus, propertyEntity = pcall( mw.wikibase.getEntity, propertyId ) if wbStatus ~= true or not propertyEntity then return nil end mw.log("Loaded datatype " .. propertyEntity.datatype .. " of " .. propertyId .. ' from wikidata, consider passing datatype argument to formatProperty call or to Wikidata/config' ) DATATYPE_CACHE[ propertyId ] = propertyEntity.datatype return propertyEntity.datatype end ---@param datavalue table ---@return function local function getPlainValueFunction( datavalue, _ ) if datavalue.type == 'wikibase-entityid' then return function( _, _, value ) return getEntityIdFromValue( value ) end elseif datavalue.type == 'string' then return function( _, _, value ) return value end elseif datavalue.type == 'monolingualtext' then return function( _, _, value ) return value.text end elseif datavalue.type == 'globecoordinate' then return function( _, _, value ) return value.latitude .. ',' .. value.longitude end elseif datavalue.type == 'quantity' then return function( _, _, value ) return value.amount end elseif datavalue.type == 'time' then return function( _, _, value ) return value.time end end throwError( 'unknown-datavalue-type' ) end ---@param datavalue table ---@param datatype string ---@return function local function getDefaultValueFunction( datavalue, datatype ) -- вызов обработчиков по умолчанию для известных типов значений if datavalue.type == 'wikibase-entityid' then -- Entity ID return function( context, options, value ) return formatEntityId( context, options, getEntityIdFromValue( value ) ) end elseif datavalue.type == 'string' then -- String if datatype and datatype == 'commonsMedia' then -- Media return function( _, options, value ) return formatCommonsMedia( value, options ) end elseif datatype and datatype == 'external-id' then -- External ID return function( _, options, value ) return formatExternalId( value, options ) end elseif datatype and datatype == 'math' then -- Math formula return function( _, options, value ) return formatMath( value, options ) end elseif datatype and datatype == 'url' then -- URL return formatUrlValue end return function( _, _, value ) return value end elseif datavalue.type == 'monolingualtext' then -- моноязычный текст (строка с указанием языка) return function( _, options, value ) if options.monolingualLangTemplate == 'lang' then if value.language == CONTENT_LANGUAGE_CODE then return value.text end return options.frame:expandTemplate{ title = 'lang-' .. value.language, args = { value.text } } elseif options.monolingualLangTemplate == 'ref' then return '<span class="lang" lang="' .. value.language .. '">' .. value.text .. '</span>' .. options.frame:expandTemplate{ title = 'ref-' .. value.language } else return '<span class="lang" lang="' .. value.language .. '">' .. value.text .. '</span>' end end elseif datavalue.type == 'globecoordinate' then -- географические координаты return function( _, options, value ) return formatGlobeCoordinate( value, options ) end elseif datavalue.type == 'quantity' then return function( _, options, value ) return formatQuantity( value, options ) end elseif datavalue.type == 'time' then return function( context, options, value ) local moduleDate = require( 'Module:Wikidata/date' ) return moduleDate.formatDate( context, options, value ) end end -- во всех стальных случаях возвращаем ошибку throwError( 'unknown-datavalue-type' ) end ---Функция для оформления значений (value) ---Подробнее о значениях см. d:Wikidata:Glossary/ru ---@param context table ---@param options table ---@param datavalue table ---@param datatype string ---@return string Оформленный текст function formatDatavalue( context, options, datavalue, datatype ) if not context then error( 'context not specified' ); end if not options then error( 'options not specified' ); end if not datavalue then error( 'datavalue not specified' ); end if not datavalue.value then error( 'datavalue.value is missing' ); end -- проверка на указание специализированных обработчиков в параметрах, -- переданных при вызове if options.plain then context.formatValueDefault = getPlainValueFunction( datavalue, datatype ) else context.formatValueDefault = getDefaultValueFunction( datavalue, datatype ) end local functionToCall = getUserFunction( options, 'value', context.formatValueDefault ) return functionToCall( context, options, datavalue.value ) end local DEFAULT_BOUNDARIES = { os.time() * 1000, os.time() * 1000} ---Функция для оформления идентификатора сущности ---@param context table ---@param options table ---@param entityId string ---@return string Оформленный текст function formatEntityId( context, options, entityId ) -- получение локализованного названия local boundaries if options.qualifiers then boundaries = p.getTimeBoundariesFromQualifiers( context.frame, context, { qualifiers = options.qualifiers } ) end if not boundaries then boundaries = DEFAULT_BOUNDARIES end local label, labelLanguageCode = getLabelWithLang( context, options, entityId, boundaries ) -- определение соответствующей показываемому элементу категории local category = context.extractCategory( options, { id = entityId } ) -- получение ссылки по идентификатору local link = mw.wikibase.sitelink( entityId ) if link then -- ссылка на категорию, а не добавление страницы в неё if mw.ustring.match( link, '^' .. mw.site.namespaces[ 14 ].name .. ':' ) then link = ':' .. link end if label and not options.rawArticle then if labelLanguageCode ~= CONTENT_LANGUAGE_CODE then label = '<span lang="' .. label .. '">' .. label .. '</span>' end local a = '[[' .. link .. '|' .. label .. ']]' if CONTENT_LANGUAGE_CODE ~= labelLanguageCode and 'mul' ~= labelLanguageCode then a = a .. getCategoryByCode( 'links-to-entities-with-missing-local-language-label' ) end return a .. category else return '[[' .. link .. ']]' .. category end end if label then -- TODO: возможно, лучше просто mw.wikibase.getLabel(entityId) -- красная ссылка -- TODO: разобраться, почему не всегда есть options.frame local title = mw.title.new( label ) if title and not title.exists and options.frame then local moduleRedLink = require( 'Module:Wikidata/redLink' ) local rawLabel = mw.wikibase.getLabel(entityId) or label -- без |text= и boundaries; or label - костыль local redLink = moduleRedLink.formatRedLinkWithInfobox(rawLabel, label, entityId) if CONTENT_LANGUAGE_CODE ~= labelLanguageCode and 'mul' ~= labelLanguageCode then redLink = '<span lang="' .. labelLanguageCode .. '">' .. redLink .. '</span>' .. getCategoryByCode( 'links-to-entities-with-missing-local-language-label' ) end return redLink .. '<sup>[[:d:' .. entityId .. '|[d]]]</sup>' .. category end -- TODO: перенести до проверки на существование статьи local sup = '' if ( not options.format or options.format ~= 'text' ) and entityId ~= 'Q6581072' and entityId ~= 'Q6581097' -- TODO: переписать на format=text then sup = '<sup class="plainlinks noprint">[//www.wikidata.org/wiki/' .. entityId .. '?uselang=' .. CONTENT_LANGUAGE_CODE .. ' [d&#x5d;]</sup>' end -- одноимённая статья уже существует - выводится текст и ссылка на ВД return '<span class="iw" data-title="' .. label .. '">' .. label .. sup .. '</span>' .. category end -- сообщение об отсутвии локализованного названия -- not good, but better than nothing return '[[:d:' .. entityId .. '|' .. entityId .. ']]<span style="border-bottom: 1px dotted; cursor: help; white-space: nowrap" title="В Викиданных нет русской подписи к элементу. Вы можете помочь, указав русский вариант подписи.">?</span>' .. getCategoryByCode( 'links-to-entities-with-missing-label' ) .. category end ---Функция для оформления утверждений (statement) ---Подробнее о утверждениях см. d:Wikidata:Glossary/ru ---@deprecated Use p.formatProperty() instead ---@param frame table ---@return string Строка оформленного текста, предназначенная для отображения в статье function p.formatStatements( frame ) return p.formatProperty( frame ) end ---Получение параметров, которые обычно используются для вывода свойства. ---@param propertyId string ---@param datatype string ---@param params table function getPropertyParams( propertyId, datatype, params ) local config = getConfig() -- Различные уровни настройки параметров, по убыванию приоритета local propertyParams = {} -- 1. Параметры, указанные явно при вызове if params then for key, value in pairs( params ) do if value ~= '' then propertyParams[ key ] = value end end end if toBoolean( propertyParams.plain, false ) then propertyParams.separator = propertyParams.separator or ', ' propertyParams.conjunction = propertyParams.conjunction or ', ' else -- 2. Настройки конкретного параметра if config.properties and config.properties[ propertyId ] then for key, value in pairs( config.properties[ propertyId ] ) do if propertyParams[ key ] == nil then propertyParams[ key ] = value end end end -- 3. Указанный пресет настроек if propertyParams.preset and config.presets and config.presets[ propertyParams.preset ] then for key, value in pairs( config.presets[ propertyParams.preset ] ) do if propertyParams[ key ] == nil then propertyParams[ key ] = value end end end datatype = datatype or params.datatype or propertyParams.datatype or getPropertyDatatype( propertyId ) if propertyParams.datatype == nil then propertyParams.datatype = datatype end -- 4. Настройки для типа данных if datatype and config.datatypes and config.datatypes[ datatype ] then for key, value in pairs( config.datatypes[ datatype ] ) do if propertyParams[ key ] == nil then propertyParams[ key ] = value end end end -- 5. Общие настройки для всех свойств if config.global then for key, value in pairs( config.global ) do if propertyParams[ key ] == nil then propertyParams[ key ] = value end end end end return propertyParams end ---Функция для оформления утверждений (statement) ---Подробнее о утверждениях см. d:Wikidata:Glossary/ru ---@param frame table ---@return string Строка оформленного текста, предназначенная для отображения в статье function p.formatProperty( frame ) local args = copyTo( frame.args, {} ) -- проверка на отсутствие обязательного параметра property if not args.property then throwError( 'property-param-not-provided' ) end local override local propertyId = mw.language.getContentLanguage():ucfirst( string.gsub( args.property, '([^Pp0-9].*)$', function(w) if string.sub( w, 1, 1 ) == '~' then override = w end return '' end ) ) if override then args[ override:match( '[,~]([^=]*)=' ) ] = override:match( '=(.*)' ) args.property = propertyId end -- проброс всех параметров из шаблона {wikidata} и параметра from откуда угодно local p_frame = frame while p_frame do if p_frame:getTitle() == mw.site.namespaces[ 10 ].name .. ':Wikidata' then copyTo( p_frame.args, args, true ) end if p_frame.args and p_frame.args.from and p_frame.args.from ~= '' then args.entityId = p_frame.args.from else args.entityId = mw.wikibase.getEntityIdForCurrentPage() end p_frame = p_frame:getParent() end args = getPropertyParams( propertyId, nil, args ) local datatype = args.datatype -- перевод итоговых значений флагов в true/false и добавление значений -- по умолчанию только в том случае, если они нигде не были указаны ранее args.plain = toBoolean( args.plain, false ) args.nocat = not args.plain and toBoolean( args.nocat, false ) args.references = not args.plain and toBoolean( args.references, true ) -- если значение передано в параметрах вызова то выводим только его if args.value and args.value ~= '' then -- специальное значение для скрытия Викиданных if args.value == '-' then return '' end local value = args.value -- опция, запрещающая оформление значения, поэтому никак не трогаем if args.plain then return value end local context = initContext( args ) -- обработчики по типу значения local wrapperExtraArgs = {} if args[ 'value-module' ] and args[ 'value-function' ] and not string.find( value, '[%[%]%{%}]' ) then local func = getUserFunction( args, 'value' ) value = func( context, args, value ) elseif datatype == 'commonsMedia' then value = formatCommonsMedia( value, args ) elseif datatype == 'external-id' and not string.find( value, '[%[%]%{%}]' ) then wrapperExtraArgs[ 'data-wikidata-external-id' ] = mw.text.killMarkers( value ) value = formatExternalId( value, args ) --elseif datatype == 'math' then -- args.frame = frame -- костыль: в formatMath нужно frame:extensionTag -- value = formatMath( value, args ) elseif datatype == 'url' then value = formatUrlValue( context, args, value ) end -- оборачиваем в тег для JS-функций if string.match( propertyId, '^P%d+$' ) then value = mw.text.trim( value ) -- временная штрафная категория для исправления табличных вставок local allowTables = getPropertyParams( propertyId, nil, {} ).allowTables if not allowTables and string.match( value, '<t[dhr][ >]' ) -- and not string.match( value, '<table[ >]' ) -- and not string.match( value, '^%{%|' ) then value = value .. getCategoryByCode( 'value-contains-table', propertyId ) else value = wrapStatement( value, propertyId, nil, wrapperExtraArgs ) end end return value end -- ability to disable loading Wikidata if args.entityId == '-' then return '' end g_frame = frame -- после проверки всех аргументов -- вызов функции оформления для свойства (набора утверждений) return formatProperty( args ) end ---Функция проверки на присутствие источника в списке нерекомендованных. ---@param snaks table ---@return boolean local function isReferenceDeprecated( snaks ) if not snaks then return false end if snaks.P248 and snaks.P248[ 1 ] and snaks.P248[ 1 ].datavalue and snaks.P248[ 1 ].datavalue.value.id then local entityId = snaks.P248[ 1 ].datavalue.value.id if getConfig( 'deprecatedSources', entityId ) then return true end elseif snaks.P1433 and snaks.P1433[ 1 ] and snaks.P1433[ 1 ].datavalue and snaks.P1433[ 1 ].datavalue.value.id then local entityId = snaks.P1433[ 1 ].datavalue.value.id if getConfig( 'deprecatedSources', entityId ) then return true end end return false end ---Функция оформления ссылок на источники (reference) ---Подробнее о ссылках на источники см. d:Wikidata:Glossary/ru --- ---Экспортируется в качестве зарезервированной точки для вызова из функций-расширения вида claim-module/claim-function через context ---Вызов из других модулей напрямую осуществляться не должен (используйте frame:expandTemplate вместе с одним из специлизированных шаблонов вывода значения свойства). ---@param context table ---@param options table ---@param statement table ---@return string Оформленные примечания для отображения в статье function formatRefs( context, options, statement ) if not context then error( 'context not specified' ); end if not options then error( 'options not specified' ); end if not options.entityId then error( 'options.entityId missing' ); end if not statement then error( 'statement not specified' ); end if not outputReferences then return '' end ---@type string[] local references = {} if statement.references then local hasNotDeprecated = false local displayCount = 0 for _, reference in pairs( statement.references ) do if not isReferenceDeprecated( reference.snaks ) then hasNotDeprecated = true end end for _, reference in pairs( statement.references ) do local display = true if hasNotDeprecated then if isReferenceDeprecated( reference.snaks ) then display = false end end if displayCount >= 2 then if options.entityId and options.property then local propertyId = mw.ustring.match( options.property, '^[Pp][0-9]+' ) -- TODO: обрабатывать не тут, а раньше local moreReferences = '<sup>[[d:' .. options.entityId .. '#' .. string.upper( propertyId ) .. '|[…]]]</sup>' table.insert( references, moreReferences ) end break end if display == true then ---@type string local refText = moduleSources.renderReference( g_frame, options.entityId, reference ) if refText and refText ~= '' then table.insert( references, refText ) displayCount = displayCount + 1 end end end end return table.concat( references ) end return p qe8n9rw77d1fm9cyh1ts66xx3knnpue Химой 0 45351 594545 537948 2026-05-02T13:50:50Z Taamu 795 594545 wikitext text/x-wiki {{ЦР |Статус = Хъæу |Ирон ном = Химой |Оригиналон ном = |Ныв = |Ном = |Паддзахад = Уæрæсе |Герб = |Тырыса = |Гербы уæрх = |Тырысайы уæрх = |lat_deg = |lat_min = |lat_sec = |lon_deg = |lon_min = |lon_sec = |CoordAddon = |CoordScale = |Паддзахады картæйы ас = 300 |Регионы картæйы ас = 300 |Районы картæйы ас = 300 |Регионы тип = Уæрæсейы федеративон арæзт{{!}}Федерацийы субъект |Регион = Цæцæн |Регион таблицæйы = Цæцæн |Районы тип = Муниципалон район (Уæрæсе){{!}}Муниципалон район |Район = Шаройы район |Район таблицæйы = Шаройы район |Æмбалады тип = |Æмбалад = |Сæргълæууæджы тип = |Сæргълæууæг = |Бындурæвæрд = |Раздæры нæмттæ = |Статус кæдæй = |Фыццаг кой = |Фæзуат = |Бæрзæнды тип = |Центры бæрзæнд = |Бæстыхъæд = |Официалон æвзаг = |Официалон æвзаг-ref = |Цæрджытæ = {{ Цæрджытæ | Химой | тс }} |Сфысты аз = {{ Цæрджытæ | Химой | г }} |Æнгомдзинад = |Агломераци = |Националон сконд = [[цæцæйнæгтæ]] |Динон сконд = |Сахатон таг = +3 |DST = |Телефонон код = |Посты индекстæ = 366413 |Автомобилон код = |Идентификаторы тип = |Цифрон идентификатор = |ВикиКъæбицы категори = |Сайт = |Сайты æвзаг = }} '''Химой''' ({{lang-ce|ХIима}}, {{lang-ru|Химой}}) у [[Цæцæн]]ы хъæу, [[Шаройы район]]ы административон центр. == Фиппаинæгтæ == {{фиппаинæгтæ}} {{къæртт-Цæцæн}} {{Шаройы районы цæрæнрæттæ}} [[Категори:Шаройы районы цæрæнрæттæ]] 4pjap6g9nj60a782ebjhwjz463fz2lg Модуль:Wikidata/config 828 46840 594549 567271 2026-05-02T14:22:21Z Taamu 795 594549 Scribunto text/plain -- Property configuration for Wikidata module return { global = { separator = ',&#32;', conjunction = '&#32;æмæ&#32;', }, presets = { ['catonly'] = { datatype = 'wikibase-item', conjunction = '', invisible = true, ['value-module'] = 'Wikidata/item', ['value-function'] = 'formatCategoryOnly', references = '', category = 'P910', }, ['country'] = { datatype = 'wikibase-item', ['claim-module'] = 'Wikidata/Places', ['claim-function'] = 'formatCountryClaimWithFlag', before = '<ul><li>', separator = '</li><li>', conjunction = '</li><li>', after = '</li></ul>', }, ['from-to'] = { datatype = 'time', ['property-module'] = 'Wikidata/date', ['property-function'] = 'formatDateIntervalProperty', }, ['link'] = { ['value-module'] = 'Wikidata/link', ['value-function'] = 'fromModule', }, ['list'] = { before = '<ul><li>', separator = '</li><li>', conjunction = '</li><li>', after = '</li></ul>', }, ['name'] = { datatype = 'monolingualtext', monolingualLangTemplate = 'lang', separator = '<br>', conjunction = '<br>', }, ['place'] = { datatype = 'wikibase-item', ['claim-module'] = 'Wikidata/Places', ['claim-function'] = 'formatPlaceWithQualifiers', before = '<ul><li>', separator = '</li><li>', conjunction = '</li><li>', after = '</li></ul>', }, ['quantity (date)'] = { datatype = 'quantity', before = '<ul><li>', separator = '</li><li>', conjunction = '</li><li>', after = '</li></ul>', qualifier = 'P585', }, }, datatypes = { commonsMedia = { limit = 1, references = false, size = '274x400px', separator = '<br>', conjunction = '<br>', somevalue = '', ['value-module'] = 'Wikidata/media', ['value-function'] = 'formatCommonsMediaValue', }, ['external-id'] = { references = false, }, ['globe-coordinate'] = { limit = 1, references = false, }, url = { separator = '<br>', conjunction = '<br>', references = false, ['value-module'] = 'Wikidata/url', ['value-function'] = 'formatUrlValue', }, quantity = { siConversion = true } }, properties = { P6 = { datatype = 'wikibase-item', }, P17 = { preset = 'country', }, P18 = { datatype = 'commonsMedia', fixdouble = true, }, P19 = { preset = 'place', separator = ',</li><li>', conjunction = ' кæнæ </li><li>', }, P20 = { preset = 'place', separator = ',</li><li>', conjunction = ' кæнæ </li><li>', }, P22 = { datatype = 'wikibase-item', conjunction = ' кæнæ ' }, P25 = { datatype = 'wikibase-item', conjunction = ' кæнæ ' }, P26 = { datatype = 'wikibase-item', }, P27 = { preset = 'country', }, P31 = { datatype = 'wikibase-item', references = false, }, P37 = { datatype = 'wikibase-item', }, P39 = { datatype = 'wikibase-item', ['claim-module'] = 'Wikidata/positions', ['claim-function'] = 'formatPositionClaim', separator = '', conjunction = '', allowTables = true, }, P40 = { datatype = 'wikibase-item', }, P41 = { datatype = 'commonsMedia', size = '150x200px', }, P53 = { datatype = 'wikibase-item', category = 'P910', }, P54 = { category = 'P6112', }, P57 = { datatype = 'wikibase-item', preset = 'list', }, P58 = { datatype = 'wikibase-item', preset = 'list', }, P59 = { datatype = 'wikibase-item', category = 'P910', references = false, }, P69 = { datatype = 'wikibase-item', preset = 'list', category = 'P3876', qualifier = 'P582', }, P94 = { datatype = 'commonsMedia', size = '100x200px', }, P86 = { datatype = 'wikibase-item', preset = 'list', }, P101 = { datatype = 'wikibase-item', }, P102 = { datatype = 'wikibase-item', preset = 'list', qualifier = 'P582', category = 'P6365', }, P103 = { datatype = 'wikibase-item', }, P106 = { datatype = 'wikibase-item', ['claim-module'] = 'Wikidata/item', ['claim-function'] = 'formatEntityWithGenderClaim', conjunction = ',&#32;', }, P108 = { datatype = 'wikibase-item', preset = 'list', category = 'P4195', }, P109 = { datatype = 'commonsMedia', size = '150x150px', alt = 'Изображение автографа', }, P117 = { datatype = 'commonsMedia', size = '290x300px', alt = 'Изображение химической структуры', }, P119 = { preset = 'place', thisLocationOnly = 'true', }, P131 = { datatype = 'wikibase-item', }, P140 = { datatype = 'wikibase-item', }, P154 = { size = '220x80px', alt = 'Логотипы ныв', }, P159 = { preset = 'place', }, P161 = { preset = 'list', }, P162 = { preset = 'list', }, P163 = { datatype = 'wikibase-item', }, P166 = { datatype = 'wikibase-item', ['property-module'] = 'Wikidata/Medals', ['property-function'] = 'formatProperty', ['value-module'] = 'Wikidata/Medals', ['value-function'] = 'formatValue', before = '<div style="text-align:justify">', after = '</div>', separator = '&#32;', conjunction = '&#32;', references = false, allowTables = true, }, P190 = { datatype = 'wikibase-item', }, P212 = { preset = 'link', }, P225 = { preset = 'list', ['claim-module'] = 'Wikidata/Biology', ['claim-function'] = 'formatTaxonNameClaim', }, P237 = { datatype = 'wikibase-item', }, P241 = { datatype = 'wikibase-item', }, P242 = { datatype = 'commonsMedia', size = '300x300px', }, P247 = { formatter = 'https://nssdc.gsfc.nasa.gov/nmc/spacecraft/display.action?id=$1', }, P267 = { preset = 'link', }, P276 = { preset = 'place', }, P281 = { datatype = 'string', }, P286 = { preset = 'list', }, P296 = { formatter = 'http://osm.sbin.ru/esr/esr:$1', }, P301 = { rawArticle = true, }, P344 = { preset = 'list', }, P345 = { preset = 'link', }, P348 = { preset = 'list', ['property-module'] = 'Wikidata/Software', ['property-function'] = 'formatVersionProperty', }, P361 = { datatype = 'wikibase-item', }, P373 = { datatype = 'string', ['value-module'] = 'Wikidata/media', ['value-function'] = 'formatCommonsCategory', limit = 1, }, P374 = { datatype = 'external-id', }, P395 = { datatype = 'string', }, P407 = { datatype = 'wikibase-item', }, P410 = { datatype = 'wikibase-item', }, P412 = { datatype = 'wikibase-item', category = 'P910', }, P413 = { datatype = 'wikibase-item', ['claim-module'] = 'Wikidata/item', ['claim-function'] = 'formatEntityWithGenderClaim', conjunction = ',&#32;', category = 'P910', }, P414 = { ['claim-module'] = 'Wikidata/item', ['claim-function'] = 'applyDefaultTemplate', }, P421 = { datatype = 'wikibase-item', }, P473 = { datatype = 'string', }, P495 = { preset = 'country', }, P505 = { preset = 'list', }, P512 = { datatype = 'wikibase-item', ['property-module'] = 'Wikidata/P512', ['property-function'] = 'formatAcademicDegree', }, P527 = { preset = 'list', }, P528 = { references = false, qualifier = 'P972', }, P551 = { preset = 'place', }, P569 = { datatype = 'time', ['claim-module'] = 'Wikidata/date', ['claim-function'] = 'formatDateOfBirthClaim', }, P570 = { datatype = 'time', ['claim-module'] = 'Wikidata/date', ['claim-function'] = 'formatDateOfDeathClaim', }, P571 = { datatype = 'time', }, P576 = { datatype = 'time', }, P598 = { datatype = 'wikibase-item', }, P607 = { datatype = 'wikibase-item', preset = 'list', }, P625 = { datatype = 'globe-coordinate', }, P669 = { qualifier = 'P670', }, P685 = { formatter = 'https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=$1', }, P721 = { preset = 'link', }, P764 = { preset = 'link', }, P803 = { datatype = 'wikibase-item', }, P856 = { datatype = 'url', }, P881 = { novalue = 'нет', category = 'P910', }, P884 = { preset = 'link', }, P915 = { category = 'P1740', }, P957 = { preset = 'link', }, P972 = { preset = 'catonly', }, P1077 = { preset = 'link', }, P1082 = { preset = 'quantity (date)', unit = 'ад.', ['property-module'] = 'Wikidata/number', ['property-function'] = 'formatPropertyWithMostRecentClaimAndIndicator' }, P1098 = { preset = 'quantity (date)', unit = 'ад.', }, P1120 = { preset = 'quantity (date)', unit = 'ад.', ['property-module'] = 'Wikidata/number', ['property-function'] = 'formatPropertyWithMostRecentClaimAndIndicator' }, P1128 = { datatype = 'quantity', preset = 'quantity (date)', unit = 'ад.', ['property-module'] = 'Wikidata/number', ['property-function'] = 'formatPropertyWithMostRecentClaimAndIndicator' }, P1114 = { datatype = 'quantity', qualifier = 'P585', }, P1174 = { preset = 'quantity (date)', unit = 'ад.', }, P1195 = { ['value-module'] = 'Wikidata/Software', ['value-function'] = 'formatExtension', conjunction = ' кæнæ ', }, P1215 = { datatype = 'quantity', ['property-module'] = 'Wikidata/number', ['property-function'] = 'formatVisualMagnitude' }, P1246 = { preset = 'link', }, P1249 = { datatype = 'time', }, P1352 = { preset = 'quantity (date)', }, P1376 = { datatype = 'wikibase-item', }, P1402 = { preset = 'link', }, P1448 = { preset = 'name', }, P1458 = { datatype = 'quantity', ['property-module'] = 'Wikidata/number', ['property-function'] = 'formatColorIndex' }, P1464 = { datatype = 'wikibase-item', }, P1476 = { preset = 'name', }, P1477 = { preset = 'name', }, P1532 = { preset = 'country', rank = '[rank:normal, rank:preferred]', }, P1543 = { datatype = 'commonsMedia', }, P1559 = { preset = 'name', }, P1603 = { preset = 'quantity (date)', unit = 'ад.', ['property-module'] = 'Wikidata/number', ['property-function'] = 'formatPropertyWithMostRecentClaimAndIndicator' }, P1621 = { size = '300x300px', }, P1692 = { preset = 'link', }, P1705 = { preset = 'name', }, P1753 = { rowArticle = true, }, P1809 = { preset = 'list', }, P1846 = { datatype = 'commonsMedia', fixdouble = true, }, P2031 = { preset = 'from-to', to = 'P2032', within = 'P570', }, P2043 = { preset = 'quantity (date)', }, P2044 = { datatype = 'quantity', }, P2046 = { preset = 'quantity (date)', siConversion = false, }, P2047 = { siConversion = false, }, P2048 = { conjunction = '&#32;кæнæ&#32;', }, P2060 = { siConversion = false, }, P2097 = { siConversion = false, }, P2120 = { siConversion = false, }, P2137 = { preset = 'quantity (date)', ['property-module'] = 'Wikidata/number', ['property-function'] = 'formatPropertyWithMostRecentClaimAndIndicator', countByThousands = true, }, P2139 = { preset = 'quantity (date)', ['property-module'] = 'Wikidata/number', ['property-function'] = 'formatPropertyWithMostRecentClaimAndIndicator', countByThousands = true, }, P2146 = { siConversion = false, }, P2214 = { siConversion = false }, P2226 = { preset = 'quantity (date)', ['property-module'] = 'Wikidata/number', ['property-function'] = 'formatPropertyWithMostRecentClaimAndIndicator', countByThousands = true, }, P2257 = { siConversion = false }, P2260 = { siConversion = false }, P2295 = { preset = 'quantity (date)', ['property-module'] = 'Wikidata/number', ['property-function'] = 'formatPropertyWithMostRecentClaimAndIndicator', countByThousands = true, }, P2324 = { datatype = 'quantity', preset = 'quantity (date)', unit = 'ад.' }, P2403 = { preset = 'quantity (date)', ['property-module'] = 'Wikidata/number', ['property-function'] = 'formatPropertyWithMostRecentClaimAndIndicator', countByThousands = true, }, P2425 = { alt = 'Изображение орденской планки', }, P2583 = { siConversion = false, }, P2597 = { preset = 'catonly', }, P2650 = { datatype = 'wikibase-item', }, P2789 = { preset = 'list', }, P2896 = { siConversion = false, }, P2910 = { size = '100x80px', }, P3083 = { formatter = 'http://simbad.u-strasbg.fr/simbad/sim-id?Ident=$1', }, P3086 = { siConversion = false, }, P3362 = { preset = 'quantity (date)', ['property-module'] = 'Wikidata/number', ['property-function'] = 'formatPropertyWithMostRecentClaimAndIndicator', countByThousands = true, }, P3537 = { preset = 'link', }, P3872 = { preset = 'quantity (date)', unit = 'ад.', ['property-module'] = 'Wikidata/number', ['property-function'] = 'formatPropertyWithMostRecentClaimAndIndicator' }, P4614 = { category = 'P1200', }, P5348 = { siConversion = false, }, P6257 = { ['value-module'] = 'Wikidata/number', ['value-function'] = 'formatRA', }, P6258 = { ['value-module'] = 'Wikidata/number', ['value-function'] = 'formatDMS', }, P6259 = { ['references'] = false, }, P7584 = { siConversion = false, }, P8010 = { datatype = 'quantity', preset = 'quantity (date)', unit = 'ад.', ['property-module'] = 'Wikidata/number', ['property-function'] = 'formatPropertyWithMostRecentClaimAndIndicator' }, P8224 = { alt = 'Изображение молекулярной модели', }, }, categories = { ['links-to-entities-with-missing-label'] = '', ['links-to-entities-with-wikibase-error'] = 'Википедия:Страницы с ошибками скриптов, использующих Викиданные', ['links-to-entities-with-missing-local-language-label'] = '', ['media-contains-local-caption'] = 'Википедия:Локальная подпись у изображения из Викиданных', ['media-contains-markup'] = '', ['media-contains-local-double'] = 'Википедия:Изображение в статье дублирует изображение в карточке', ['value-contains-table'] = '', }, errors = { ['property-param-not-provided'] = 'Не дан параметр свойства', ['entity-not-found'] = 'Сущность не найдена.', ['unknown-claim-type'] = 'Неизвестный тип заявления.', ['unknown-snak-type'] = 'Неизвестный тип снэка.', ['unknown-datavalue-type'] = 'Неизвестный тип значения данных.', ['unknown-entity-type'] = 'Неизвестный тип сущности.', ['unknown-property-module'] = 'Вы должны установить и property-module, и property-function.', ['unknown-claim-module'] = 'Вы должны установить и claim-module, и claim-function.', ['unknown-value-module'] = 'Вы должны установить и value-module, и value-function.', ['property-module-not-found'] = 'Модуль для отображения свойства не найден', ['property-function-not-found'] = 'Функция для отображения свойства не найдена', ['claim-module-not-found'] = 'Модуль для отображения утверждения не найден.', ['claim-function-not-found'] = 'Функция для отображения утверждения не найдена.', ['value-module-not-found'] = 'Модуль для отображения значения не найден.', ['value-function-not-found'] = 'Функция для отображения значения не найдена.', }, i18n = { somevalue = "''бæрæг нæу''", novalue = '', -- Обстоятельства источника Q5727902 = '≈ ', Q18122778 = '<span style="border-bottom: 1px dotted; cursor: help;" title="предположительно">предп.</span> ', Q30230067 = 'чи зоны ', Q52834024 = '<span style="border-bottom: 1px dotted; cursor: help;" title="менее чем">&lt;</span> ', Q54418095 = '<span style="border-bottom: 1px dotted; cursor: help;" title="более чем">&gt;</span> ', thousandPowers = {'', ' мин', ' млн', ' млрд', ' трлн'}, }, deprecatedSources = { Q355 = true, -- Facebook Q36578 = true, -- Gemeinsame Normdatei Q63056 = true, -- Find a Grave Q212256 = true, -- АиФ Q504063 = true, -- Discogs Q523660 = true, -- International Music Score Library Project by https://ru.wikipedia.org/?diff=107090748 Q1798125 = true, -- LIBRIS Q2621214 = true, -- Geni Q15222191 = true, -- BNF Q15241312 = true, -- Freebase Q19938912 = true, -- BNF Q21697707 = true, -- Хайазг Q25328680 = true, -- Prabook Q29861311 = true, -- SNAC Q86999151 = true, -- WeChangEd }, }; 38xwg6q4zuklcksbd5b7cvo8gwvg93q Кенхи (хъæу) 0 47478 594544 537945 2026-05-02T13:50:33Z Taamu 795 594544 wikitext text/x-wiki {{ЦР |Статус = Хъæу |Ирон ном = Кенхи |Оригиналон ном = {{lang-ru|Шарой}} |Ныв = |Ном = |Паддзахад = Уæрæсе |Герб = |Тырыса = |Гербы уæрх = |Тырысайы уæрх = |lat_deg = |lat_min = |lat_sec = |lon_deg = |lon_min = |lon_sec = |CoordAddon = |CoordScale = |Паддзахады картæйы ас = 300 |Регионы картæйы ас = 300 |Районы картæйы ас = 300 |Регионы тип = Уæрæсейы федеративон арæзт{{!}}Федерацийы субъект |Регион = Цæцæн |Регион таблицæйы = Цæцæн |Районы тип = Муниципалон район (Уæрæсе){{!}}Муниципалон район |Район = Шаройы район |Район таблицæйы = Шаройы район |Æмбалады тип = |Æмбалад = |Сæргълæууæджы тип = |Сæргълæууæг = |Бындурæвæрд = |Раздæры нæмттæ = |Статус кæдæй = |Фыццаг кой = |Фæзуат = |Бæрзæнды тип = |Центры бæрзæнд = 1558 |Бæстыхъæд = |Официалон æвзаг = |Официалон æвзаг-ref = |Цæрджытæ = {{ Цæрджытæ | Кенхи (село) | тс }} |Сфысты аз = {{ Цæрджытæ | Кенхи (село) | г }} |Æнгомдзинад = |Агломераци = |Националон сконд = [[солы]] ([[чамалалтæ]]) |Динон сконд = |Сахатон таг = +3 |DST = |Телефонон код = |Посты индекстæ = 366413 |Автомобилон код = |Идентификаторы тип = |Цифрон идентификатор = |ВикиКъæбицы категори = |Сайт = |Сайты æвзаг = }} '''Шарой''' ({{lang-ce|Кенхи}}) у [[Цæцæн]]ы хъæу. Ис [[Шаройы район]]ы. == Фиппаинæгтæ == {{фиппаинæгтæ}} {{къæртт-Цæцæн}} {{Шаройы районы цæрæнрæттæ}} [[Категори:Шаройы районы цæрæнрæттæ]] 9gpp5xp90aaso4bowl7rvqlgc3k0am6 Модуль:Navbar 828 52299 594551 558916 2026-05-02T14:27:23Z Taamu 795 594551 Scribunto text/plain local p = {} local hlist = 'Template:Flatlist/styles.css' local templatestyles = 'Module:Navbar/styles.css' local getArgs function p._oswikiNavbar( args ) local titleText = args[ 1 ] or (':' .. mw.getCurrentFrame():getParent():getTitle()) local title = mw.title.new(mw.text.trim(titleText), 'Template'); if not title then error('Invalid title ' .. titleText) end local whiteColorDefs = { ['#fff'] = true, ['#ffffff'] = true, ['white'] = true, } local fontColor = args.fontcolor and args.fontcolor:lower() local isWhite = fontColor and whiteColorDefs[ fontColor ] == true local fontStyle = args.fontstyle and mw.text.unstripNoWiki( args.fontstyle:lower() ) if not isWhite and fontStyle then local styleratio = require( 'Module:Color contrast' )._styleratio isWhite = styleratio( { fontStyle .. '; color:#666;', '', '#666' } ) < 3.66 end local isTemplate = title.namespace == 10 local altText = string.format( 'Перейти %s «%s»', isTemplate and 'к шаблону' or 'на страницу', mw.text.split( isTemplate and title.text or title.fullText, '#' )[ 1 ] ) return string.format( '[[Файл:Wikipedia interwiki section gear icon%s.svg|14px|class=noprint%s|link=%s|%s]]', isWhite and ' white' or '', isWhite and '' or ' skin-invert-image', tostring( title ), altText ) end function p.oswikiNavbar(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return p._oswikiNavbar(getArgs(frame)) end function p._navbar(args) local titleArg = 1 if args.collapsible then titleArg = 2 if not args.plain then args.mini = 1 end if args.fontcolor then args.fontstyle = 'color:' .. args.fontcolor .. ';' end args.style = 'float:left; text-align:left; white-space:nowrap;' end if args[titleArg] == 'off' then return end local titleText = args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle()) local title = mw.title.new(mw.text.trim(titleText), 'Template'); if not title then error('Invalid title ' .. titleText) end local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''; local tag if args.nodiv then tag = 'span' else tag = 'div' end local div = mw.html.create():tag(tag) div :addClass('navbar hlist plainlinks noprint') :attr('data-navboxnavigation-link', '0') :cssText(args.style) if args.mini then div:addClass('navbar-mini') end if not (args.mini or args.plain) then div :tag('span') :addClass('navbar-boxtext') :cssText(args.fontstyle) :wikitext(args.text or 'Шаблон:') :wikitext(' ') end local ul = div:tag('ul'); if args.brackets then ul:addClass('navbar-brackets') end ul :tag('li') :addClass('nv-view') :wikitext('[[' .. title.fullText .. '|') :tag(args.mini and 'abbr' or 'span') :addClass(args.mini and 'navbar-mini-abbr') :attr('title', 'Просмотр этого шаблона') :cssText(args.fontstyle) :wikitext(args.mini and 'п' or 'просмотр') :done() :wikitext(']]') :done() :tag('li') :addClass('nv-talk') :wikitext('[[' .. talkpage .. '|') :tag(args.mini and 'abbr' or 'span') :attr('title', 'Обсуждение этого шаблона') :cssText(args.fontstyle) :wikitext(args.mini and 'о' or 'обсуждение') :done() :wikitext(']]'); if not args.noedit then ul :tag('li') :addClass('nv-edit') :wikitext('[[Special:EditPage/' .. title.fullText .. '|') :tag(args.mini and 'abbr' or 'span') :attr('title', 'Править этот шаблон') :cssText(args.fontstyle) :wikitext(args.mini and 'р' or 'править') :done() :wikitext(']]'); end if args.collapsible then div:done() :tag('span') :addClass( args.mini and 'navbar-ct-mini' or 'navbar-ct-full' ) :cssText(args.fontstyle) :wikitext(args[1]) end local frame = mw.getCurrentFrame() return frame:extensionTag{ name = 'templatestyles', args = { src = hlist } } .. frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } .. tostring(div:done()) end function p.navbar(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return p._navbar(getArgs(frame)) end return p 70nhswlgfcclalrziyyjnwryfsxzi57 Хуызæг:ЦР 10 54017 594556 594533 2026-05-02T17:51:42Z Taamu 795 594556 wikitext text/x-wiki {{Къопп |имя = {{#if:{{{Ирон ном|}}}|{{{Ирон ном}}}|НП-3}} |автозаголовки = нет |стиль_меток = width:40%; background:#F8F8FF; font-weight:normal; text-align: left; |стиль_заголовков = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; |стиль_текста = width:60%; |вверху0 = {{#if: {{{Статус|}}} | {{ucfirst:{{{Статус|}}}}} | Цæрæнран}} |вверху = {{къопп/ном|{{{Ирон ном|}}}}} |стиль_вверху = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; |вверху3 = {{{Оригиналон ном|}}} |изображение = {{wikidata|p18|{{{Ныв|}}}|size=290x435px|caption={{{Нывы ном|}}}}} |стиль_изображения= text-align: center; |текст1 = {{Къопп/тырыса æмæ герб | Тырыса = {{{Тырыса|}}} | флаг ширина = {{{Тырысайы уæрх|}}} | флаг подпись = {{#if:{{{описание флага|}}}|[[{{{описание флага|}}}|{{#if:{{{вместо флага|}}}|{{{вместо флага|}}}|Тырыса}}]]|{{if-wikidata|p163||{{wikidata|p163|text={{#if:{{{вместо флага|}}}|{{{вместо флага|}}}|Тырыса}}}}|{{#if:{{{вместо флага|}}}|{{{вместо флага}}}|Тырыса}}}}}} | Герб = {{{Герб|}}} | герб ширина = {{{Гербы уæрх|}}} | герб подпись = {{#if:{{{описание герба|}}}|[[{{{описание герба|}}}|{{#if:{{{вместо герба|}}}|{{{вместо герба|}}}|Герб}}]]|{{if-wikidata|p237||{{wikidata|p237|text={{#if:{{{вместо герба|}}}|{{{вместо герба|}}}|Герб}}}}|{{#if:{{{вместо герба|}}}|{{{вместо герба}}}|Герб}}}}}} }} |стиль_текста1 = padding:0; |текст2 = {{wikidata-coords|coord|coord |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |coord = {{{координаты|}}} |type = city |region = {{ISO 3166|{{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }}}} |scale = {{#if: {{{CoordScale|}}} | {{{CoordScale}}} | 100000 }} |display = {{#if: {{{display|}}} | {{{display}}} | title,inline }} |from = {{{from|}}} }} |стиль_текста2 = text-align: center; padding-bottom:0.25em; |метка3 = {{#if:{{{вид территории|}}}|{{{вид территории}}}|Паддзахад}} |текст3 = {{#if:{{{территория в таблице|}}}|{{{территория в таблице}}}|{{#ifexist:Хуызæг:Флагификаци/{{{Паддзахад|}}} | {{Флагификаци|{{{Паддзахад|}}}}} |{{{Паддзахад|}}}}}}} |викиданные3 = p17 |метка4 = Статус |текст4 = {{{Дæлбарад|}}} |метка5 = {{#if:{{{Регионы тип|}}}|[[{{#ifexist:{{{Регионы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Регионы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Регионы тип}}}}}|{{ucfirst:{{{Регионы тип}}}}}}}]]|Регион}} |текст5 = {{#if:{{{отображаемый регион|}}}|{{{отображаемый регион}}}|{{#if:{{{Регион таблицæйы|}}}|[[{{{Регион таблицæйы}}}]]|{{#if:{{{Регион|}}}|[[{{{Регион}}}]]}}}}}} |метка6 = {{{вид административной единицы|Административная единица}}} |текст6 = {{{административная единица|}}} |метка7 = {{#if:{{{отображаемый вид района|}}}|{{{отображаемый вид района}}}|{{#if:{{{Районы тип|}}}|[[{{#ifexist:{{{Районы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Районы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Районы тип}}}}}|{{ucfirst:{{{Районы тип}}}}}}}]]|[[Район]]}}}} |текст7 = {{#if:{{{отображаемый район|}}}|{{{отображаемый район}}}|{{#if:{{#if:{{{Район таблицæйы|}}}|{{{Район таблицæйы|}}}|{{{Район|}}}}}|{{#if:{{{Район таблицæйы|}}}|[[{{{Район таблицæйы|}}}]]|[[{{{Район|}}}]]}}}}}} |метка8 = {{#if:{{{Æмбалады тип|}}}|[[{{#ifexist:{{{Æмбалады тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Æмбалады тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Æмбалады тип}}}}}|{{ucfirst:{{{Æмбалады тип}}}}}}}]]|{{{Æмбалады тип|}}}}} |текст8 = {{#if:{{#if:{{{Æмбалад таблицæйы|}}}|{{{Æмбалад таблицæйы|}}}|{{{Æмбалад|}}}}}|{{#if:{{{Æмбалад таблицæйы|}}}|[[{{{Æмбалад таблицæйы|}}}]]|[[{{{Æмбалад|}}}]]}}}} |метка9 = {{#if:{{{Коммунæйы тип|}}}|[[{{#ifexist:{{{Коммунæйы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Коммунæйы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Коммунæйы тип}}}}}|{{ucfirst:{{{Коммунæйы тип}}}}}}}]]|{{{Коммунæйы тип|}}}}} |текст9 = {{#if:{{#if:{{{Коммунæ таблицæйы|}}}|{{{Коммунæ таблицæйы|}}}|{{{Коммунæ |}}}}}|{{#if:{{{Коммунæ таблицæйы|}}}|[[{{{Коммунæ таблицæйы|}}}]]|[[{{{Коммунæ|}}}]]}}}} |метка10 = Мидæг дих |текст10 = {{{Мидæг дихкæнынад|}}} |метка11 = {{#if:{{{Сæргълæууæджы тип|}}}|{{ucfirst:{{{Сæргълæууæджы тип}}}}}|Сæргълæууæг}} |текст11 = {{{Сæргълæууæг|}}} |заголовок12 = Истори æмæ географи |метка13 = Бындурæвæрд |текст13 = {{{Бындурæвæрд|}}} |викиданные13 = p571 |метка14 = Фыццаг кой |текст14 = {{#if:{{{Фыццаг кой|}}}|{{#ifeq:{{{Фыццаг кой|}}}|-|-|{{#ifexist: {{{Фыццаг кой}}}|[[{{{Фыццаг кой}}}]]|{{{Фыццаг кой}}}}}}}}} |викиданные14 = p1249 |метка15 = Раздæры нæмттæ |текст15 = {{{Раздæры нæмттæ|}}} |метка16 = {{#switch:{{ucfirst:{{{Статус|Цæрæнран}}}}}|Сахарæнгæс посёлок|Сахарæнгæс посёлок=Сахарæнгæс посёлок&nbsp;кæдæй|{{ucfirst:{{{Статус|Цæрæнран}}}}}&nbsp;кæдæй}} |текст16 = {{{Статус кæдæй|}}} |метка17 = {{{статус 1}}} с |текст17 = {{{статус 1 с|}}} |метка18 = {{{статус 2}}} с |текст18 = {{{статус 2 с|}}} |метка19 = Фæзуат |текст19 = {{#if:{{{Фæзуат|}}}|{{#ifeq:{{{Фæзуат|}}}|-|-|{{{Фæзуат|}}} км²{{#if:{{{примечание к площади|}}}|{{{примечание к площади}}}}}}}}} |викиданные19 = p2046 |метка20 = {{#if:{{{Бæрзæнды тип|}}}|{{ucfirst:{{{Бæрзæнды тип}}}}}|Центры бæрзæнд}} |текст20 = {{#if:{{{Центры бæрзæнд|}}}|{{{Центры бæрзæнд}}} м}} |викиданные20 = |метка21 = [[Бæстыхъæд|Бæстыхъæд]] |текст21 = {{{Бæстыхъæд|}}} |метка22 = [[Сахатон таг]] |текст22 = {{#if:{{{Сахатон таг|}}}|{{ЦР/Сахаты формат|Сахатон таг={{{Сахатон таг}}}|DST={{{DST|}}}}}}} |викиданные22 = P421 |заголовок23 = {{#if:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|Цæрджытæ}} |метка24 = Цæрджытæ |текст24 = {{#if:{{{Цæрджытæ|}}}|{{#ifeq:{{{Цæрджытæ|}}}|-|-|{{nobr|1={{{Цæрджытæ|}}}&nbsp;{{str ≥ len | {{{Цæрджытæ|}}} | 10 | {{#iferror: {{plural:{{formatnum:{{#invoke:String|match|{{{Цæрджытæ|}}}|>?([%d%s]+)%c}}|R}}|адæймаг|адæймаджы|адæймаджы}} | ад.}} | {{plural:{{formatnum:{{{Цæрджытæ|}}}|R}}|адæймаг|адæймаджы|адæймаджы}} }} {{#if:{{{Сфысты аз|}}}|(<span data-wikidata-qualifier-id="P585">{{{Сфысты аз}}}</span>)}}}}}}}} |викиданные24 = p1082 |метка25 = Æнгомад |текст25 = {{#if:{{{Æнгомад|}}}|{{{Æнгомад}}}&nbsp;ад./км²}} |метка26 = Агломераци |текст26 = {{{Агломераци|}}} |метка27 = Агломерацийы цæрджытæ |текст27 = {{{Агломерацийы цæрджытæ|}}} |метка28 = Национ сконд |текст28 = {{{Националон сконд|}}} |метка29 = Дин |текст29 = {{{Динон сконд|}}} |метка30 = [[Катойконим]] |текст30 = {{{этнохороним|{{{Этнохороним|}}}}}} |метка31 = Официалон æвзаг |текст31 = {{#if:{{{Официалон æвзаг|}}}|{{#ifeq:{{{Официалон æвзаг|}}}|-|-|{{#ifexist:{{{Официалон æвзаг}}} æвзаг|[[{{{Официалон æвзаг}}} æвзаг{{!}}{{{Официалон æвзаг}}}]]|[[{{{Официалон æвзаг}}}]]}}}}}}{{#if:{{{Официалон æвзаг-ref|}}}|{{anchor|_lang_ref}} [[#_lang_note|'''*''']]}} |заголовок32 = {{#if:{{wikidata|p473|{{{Телефонон код|}}}|plain=true}}{{wikidata|p281|{{{Посты индекстæ|}}}{{{Посты индекстæ|}}}|plain=true}}{{wikidata|p395|{{{автомобильный код|}}}{{{Цифрон идентификатор|}}}{{{Цифрон идентификатор 2|}}}{{{Цифрон идентификатор 3|}}}|plain=true}}|Цифрон идентификатортæ}} |метка33 = [[Телефонон код|Телефонон код]] |текст33 = {{Телефонон код|{{wikidata|p473|{{{Телефонон код|}}}|plain=true|from={{{from|}}}}}|{{wikidata|p17|{{{Паддзахад|}}}|plain=true|from={{{from|}}}}}}} |метка34 = {{#if:{{{Посты индекстæ|}}}|[[Посты индекс|Посты индекстæ]]|[[Посты индекс]]}} |текст34 = {{#if:{{{Посты индекстæ|}}}|{{{Посты индекстæ}}}|{{{Посты индекстæ|}}}}} |викиданные34 = P281 |метка35 = [[Автомобилон номыр|Автомобилон код]] |текст35 = {{{Автомобилон код|}}} |метка36 = [[{{ucfirst:{{{Идентификаторы тип}}}}}]] |текст36 = {{{Цифрон идентификатор|}}} |метка37 = [[{{ucfirst:{{{Идентификаторы тип 2}}}}}]] |текст37 = {{{Цифрон идентификатор 2|}}} |метка38 = [[{{ucfirst:{{{Идентификаторы тип 3}}}}}]] |текст38 = {{{Цифрон идентификатор 3|}}} |заголовок39 = {{#if:{{{add1n|}}}{{{add1|}}}{{{add2n|}}}{{{add2|}}}{{{add3n|}}}{{{add3|}}}|Æндæр информаци}} |заголовок40 = {{#if:{{{add1|}}}||{{{add1n|}}}}} |метка40 = {{{add1n|}}} |текст40 = {{{add1|}}} |заголовок41 = {{#if:{{{add2|}}}||{{{add2n|}}}}} |метка41 = {{{add2n|}}} |текст41 = {{{add2|}}} |заголовок42 = {{#if:{{{add3|}}}||{{{add3n|}}}}} |метка42 = {{{add3n|}}} |текст42 = {{{add3|}}} |текст43 = {{#if:{{{Сайт|}}}|<hr>}} |класс43 = nomobile |текст44 = {{#if:{{{Сайт|}}}|<span style="word-break:break-word;"><!-- Костыль для Хрома, чтобы адрес сайта переносился, а язык — нет -->{{URL|{{{Сайт}}}}}</span>{{#if:{{{Сайты æвзаг|}}}|{{#if:{{{Сайты æвзаг 2|}}}|<br>}}&#32;<span style="margin-left:-0.25em;">{{ref-{{{Сайты æвзаг}}}}}|}}{{#if:{{{Сайты æвзаг 2|}}}|{{ref-{{{Сайты æвзаг 2}}}}}|}}{{#if:{{{Сайты æвзаг 3|}}}|{{ref-{{{Сайты æвзаг 3}}}}}|}}{{#if:{{{Сайты æвзаг 4|}}}|{{ref-{{{Сайты æвзаг 4}}}}}|}}{{#if:{{{Сайты æвзаг 5|}}}|{{ref-{{{Сайты æвзаг 5}}}}}|}}{{#if:{{{Сайты æвзаг|}}}|</span>}}}} |викиданные44 = p856 |текст45 = {{#if: {{{lat_deg|}}}{{wikidata|p625|plain=true|from={{{from|}}}}} | {{#ifeq: {{{карта страны|}}}{{{карта региона|}}}{{{карта района|}}}| 000 || }}{{#if:{{{основные НП на карте|}}}|{{wikidata-coords|НП/ПозКартæ+ |Ирон ном = {{къопп/ном|{{{Ирон ном|}}}}} |coord = {{{координаты|}}} |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |Паддзахад = {{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }} |территория в таблице = {{{территория в таблице|}}} |карта страны = {{{карта страны|}}} |в страну = {{{в страну|}}} |A в страну = {{{A в страну|}}} |B в страну = {{{B в страну|}}} |C в страну = {{{C в страну|}}} |D в страну = {{{D в страну|}}} |Регион = {{{Регион|}}} |Регион таблицæйы = {{{Регион таблицæйы|}}} |карта региона = {{{карта региона|}}} |в регион = {{{в регион|}}} |A в регион = {{{A в регион|}}} |B в регион = {{{B в регион|}}} |C в регион = {{{C в регион|}}} |D в регион = {{{D в регион|}}} |район = {{{Район|}}} |район в таблице = {{ucfirst: {{{Район таблицæйы|}}} }} |карта района = {{{карта района|}}} |в район = {{{в район|}}} |A в район = {{{A в район|}}} |B в район = {{{B в район|}}} |C в район = {{{C в район|}}} |D в район = {{{D в район|}}} |метка A = {{{метка A|}}} |ссылка A = {{{ссылка A|}}} |lat_deg A = {{{lat_deg A|}}} |lat_min A = {{{lat_min A|}}} |lat_sec A = {{{lat_sec A|}}} |lon_deg A = {{{lon_deg A|}}} |lon_min A = {{{lon_min A|}}} |lon_sec A = {{{lon_sec A|}}} |метка B = {{{метка B|}}} |ссылка B = {{{ссылка B|}}} |lat_deg B = {{{lat_deg B|}}} |lat_min B = {{{lat_min B|}}} |lat_sec B = {{{lat_sec B|}}} |lon_deg B = {{{lon_deg B|}}} |lon_min B = {{{lon_min B|}}} |lon_sec B = {{{lon_sec B|}}} |метка C = {{{метка C|}}} |ссылка C = {{{ссылка C|}}} |lat_deg C = {{{lat_deg C|}}} |lat_min C = {{{lat_min C|}}} |lat_sec C = {{{lat_sec C|}}} |lon_deg C = {{{lon_deg C|}}} |lon_min C = {{{lon_min C|}}} |lon_sec C = {{{lon_sec C|}}} |метка D = {{{метка D|}}} |ссылка D = {{{ссылка D|}}} |lat_deg D = {{{lat_deg D|}}} |lat_min D = {{{lat_min D|}}} |lat_sec D = {{{lat_sec D|}}} |lon_deg D = {{{lon_deg D|}}} |lon_min D = {{{lon_min D|}}} |lon_sec D = {{{lon_sec D|}}} }}|{{wikidata-coords|НП/ПозКартæ-3 |Ирон ном = {{къопп/ном|{{{Ирон ном|}}}}} |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |Паддзахад = {{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }} |Паддзахады картæ = {{{Паддзахады картæ|}}} |название странакарта = {{{название странакарта|}}} |регионкарта = {{{регионкарта|}}} |название регионкарта = {{{название регионкарта|}}} |странакарта position = {{{странакарта position|}}} |регионкарта position = {{{регионкарта position|}}} |районкарта position = {{{районкарта position|}}} |карта страны = {{{карта страны|}}} |регион = {{{Регион|}}} |карта региона = {{{карта региона|}}} |район = {{{Район|}}} |карта района = {{{карта района|}}} }}}}{{#ifeq: {{{карта страны|}}}{{{карта региона|}}}{{{карта района|}}}| 000 || {{#ifexpr: {{REVISIONSIZE}} < 10240 | </div></div> }}}}}} |стиль_текста45 = padding: 0 1px 1px 0; |внизу = {{къопп/Викикъæбиц|{{{ВикиКъæбицы категори|}}}|nocat={{{nocat|}}}}} |стиль_внизу = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; }}<!-- -->{{#if:{{NAMESPACE}}{{{nocat|}}}||<!-- -->[[Категори:Цæрæнрæттæ алфавитмæ гæсгæ]]<!-- -->{{#if:{{{дата основания|}}}|{{#invoke:math/tonumber|year|{{{дата основания|}}}|cat=Населённые пункты, основанные в }}}}<!-- -->{{#if:{{wikidata|p281|{{{почтовый индекс|}}}{{{почтовые индексы|}}}|plain=true}}||[[Категори:Посты индекс кæмæн нæй, ахæм цæрæнрæттæ]]}}<!-- -->{{#if:{{{lat_deg|}}}{{{lon_deg|}}}{{wikidata|p625|plain=true}}||[[Категори:Википеди:Географион координатæтæ кæмæн нæй, ахæм цæрæнрæттæ]]}}<!-- -->{{#if:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|{{#ifeq:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|0|[[Категори:Цæрджытæ кæмæн нæй, ахæм цæрæнрæттæ]]}}|[[Категори:Цæрæнрæттæ æнæ бæлвырдгонд цæрджыты нымæц]]}}<!-- -->{{#if:{{wikidata|p373|{{{ВикиКъæбицы категори|}}}|plain=true}}||[[Категори:Цæрæнуаты тыххæй ВикиКъæбицы категори кæмæн нæй, ахæм статьятæ]]}}<!-- -->}}<!-- -->{{#ifeq:{{{Ном|}}}|{{PAGENAME}}|[[Категори:Шаблоны на основе шаблона НП]]}}<noinclude>{{doc}}</noinclude> s442nq1prsart9jowc4fk0adrh6rmw4 594557 594556 2026-05-02T17:52:53Z Taamu 795 594557 wikitext text/x-wiki {{Къопп |имя = {{#if:{{{Ирон ном|}}}|{{{Ирон ном}}}|НП-3}} |автозаголовки = нет |стиль_меток = width:40%; background:#F8F8FF; font-weight:normal; text-align: left; |стиль_заголовков = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; |стиль_текста = width:60%; |вверху0 = {{#if: {{{Статус|}}} | {{ucfirst:{{{Статус|}}}}} | Цæрæнран}} |вверху = {{къопп/ном|{{{Ирон ном|}}}}} |стиль_вверху = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; |вверху3 = {{{Оригиналон ном|}}} |изображение = {{wikidata|p18|{{{Ныв|}}}|size=290x435px|caption={{{Нывы ном|}}}}} |стиль_изображения= text-align: center; |текст1 = {{Къопп/тырыса æмæ герб | Тырыса = {{{Тырыса|}}} | флаг ширина = {{{Тырысайы уæрх|}}} | флаг подпись = {{#if:{{{описание флага|}}}|[[{{{описание флага|}}}|{{#if:{{{вместо флага|}}}|{{{вместо флага|}}}|Тырыса}}]]|{{if-wikidata|p163||{{wikidata|p163|text={{#if:{{{вместо флага|}}}|{{{вместо флага|}}}|Тырыса}}}}|{{#if:{{{вместо флага|}}}|{{{вместо флага}}}|Тырыса}}}}}} | Герб = {{{Герб|}}} | герб ширина = {{{Гербы уæрх|}}} | герб подпись = {{#if:{{{описание герба|}}}|[[{{{описание герба|}}}|{{#if:{{{вместо герба|}}}|{{{вместо герба|}}}|Герб}}]]|{{if-wikidata|p237||{{wikidata|p237|text={{#if:{{{вместо герба|}}}|{{{вместо герба|}}}|Герб}}}}|{{#if:{{{вместо герба|}}}|{{{вместо герба}}}|Герб}}}}}} }} |стиль_текста1 = padding:0; |текст2 = {{wikidata-coords|coord|coord |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |coord = {{{координаты|}}} |type = city |region = {{ISO 3166|{{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }}}} |scale = {{#if: {{{CoordScale|}}} | {{{CoordScale}}} | 100000 }} |display = {{#if: {{{display|}}} | {{{display}}} | title,inline }} |from = {{{from|}}} }} |стиль_текста2 = text-align: center; padding-bottom:0.25em; |метка3 = {{#if:{{{вид территории|}}}|{{{вид территории}}}|Паддзахад}} |текст3 = {{#if:{{{территория в таблице|}}}|{{{территория в таблице}}}|{{#ifexist:Хуызæг:Флагификаци/{{{Паддзахад|}}} | {{Флагификаци|{{{Паддзахад|}}}}} |{{{Паддзахад|}}}}}}} |викиданные3 = p17 |метка4 = Статус |текст4 = {{{Дæлбарад|}}} |метка5 = {{#if:{{{Регионы тип|}}}|[[{{#ifexist:{{{Регионы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Регионы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Регионы тип}}}}}|{{ucfirst:{{{Регионы тип}}}}}}}]]|Регион}} |текст5 = {{#if:{{{отображаемый регион|}}}|{{{отображаемый регион}}}|{{#if:{{{Регион таблицæйы|}}}|[[{{{Регион таблицæйы}}}]]|{{#if:{{{Регион|}}}|[[{{{Регион}}}]]}}}}}} |метка6 = {{{вид административной единицы|Административная единица}}} |текст6 = {{{административная единица|}}} |метка7 = {{#if:{{{отображаемый вид района|}}}|{{{отображаемый вид района}}}|{{#if:{{{Районы тип|}}}|[[{{#ifexist:{{{Районы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Районы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Районы тип}}}}}|{{ucfirst:{{{Районы тип}}}}}}}]]|[[Район]]}}}} |текст7 = {{#if:{{{отображаемый район|}}}|{{{отображаемый район}}}|{{#if:{{#if:{{{Район таблицæйы|}}}|{{{Район таблицæйы|}}}|{{{Район|}}}}}|{{#if:{{{Район таблицæйы|}}}|[[{{{Район таблицæйы|}}}]]|[[{{{Район|}}}]]}}}}}} |метка8 = {{#if:{{{Æмбалады тип|}}}|[[{{#ifexist:{{{Æмбалады тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Æмбалады тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Æмбалады тип}}}}}|{{ucfirst:{{{Æмбалады тип}}}}}}}]]|{{{Æмбалады тип|}}}}} |текст8 = {{#if:{{#if:{{{Æмбалад таблицæйы|}}}|{{{Æмбалад таблицæйы|}}}|{{{Æмбалад|}}}}}|{{#if:{{{Æмбалад таблицæйы|}}}|[[{{{Æмбалад таблицæйы|}}}]]|[[{{{Æмбалад|}}}]]}}}} |метка9 = {{#if:{{{Коммунæйы тип|}}}|[[{{#ifexist:{{{Коммунæйы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Коммунæйы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Коммунæйы тип}}}}}|{{ucfirst:{{{Коммунæйы тип}}}}}}}]]|{{{Коммунæйы тип|}}}}} |текст9 = {{#if:{{#if:{{{Коммунæ таблицæйы|}}}|{{{Коммунæ таблицæйы|}}}|{{{Коммунæ |}}}}}|{{#if:{{{Коммунæ таблицæйы|}}}|[[{{{Коммунæ таблицæйы|}}}]]|[[{{{Коммунæ|}}}]]}}}} |метка10 = Мидæг дих |текст10 = {{{Мидæг дихкæнынад|}}} |метка11 = {{#if:{{{Сæргълæууæджы тип|}}}|{{ucfirst:{{{Сæргълæууæджы тип}}}}}|Сæргълæууæг}} |текст11 = {{{Сæргълæууæг|}}} |заголовок12 = Истори æмæ географи |метка13 = Бындурæвæрд |текст13 = {{{Бындурæвæрд|}}} |викиданные13 = p571 |метка14 = Фыццаг кой |текст14 = {{#if:{{{Фыццаг кой|}}}|{{#ifeq:{{{Фыццаг кой|}}}|-|-|{{#ifexist: {{{Фыццаг кой}}}|[[{{{Фыццаг кой}}}]]|{{{Фыццаг кой}}}}}}}}} |викиданные14 = p1249 |метка15 = Раздæры нæмттæ |текст15 = {{{Раздæры нæмттæ|}}} |метка16 = {{#switch:{{ucfirst:{{{Статус|Цæрæнран}}}}}|Сахарæнгæс посёлок|Сахарæнгæс посёлок=Сахарæнгæс посёлок&nbsp;кæдæй|{{ucfirst:{{{Статус|Цæрæнран}}}}}&nbsp;кæдæй}} |текст16 = {{{Статус кæдæй|}}} |метка17 = {{{статус 1}}} с |текст17 = {{{статус 1 с|}}} |метка18 = {{{статус 2}}} с |текст18 = {{{статус 2 с|}}} |метка19 = Фæзуат |текст19 = {{#if:{{{Фæзуат|}}}|{{#ifeq:{{{Фæзуат|}}}|-|-|{{{Фæзуат|}}} км²{{#if:{{{примечание к площади|}}}|{{{примечание к площади}}}}}}}}} |викиданные19 = p2046 |метка20 = {{#if:{{{Бæрзæнды тип|}}}|{{ucfirst:{{{Бæрзæнды тип}}}}}|Центры бæрзæнд}} |текст20 = {{#if:{{{Центры бæрзæнд|}}}|{{{Центры бæрзæнд}}} м}} |викиданные20 = |метка21 = [[Бæстыхъæд|Бæстыхъæд]] |текст21 = {{{Бæстыхъæд|}}} |метка22 = [[Сахатон таг]] |текст22 = {{#if:{{{Сахатон таг|}}}|{{ЦР/Сахаты формат|Сахатон таг={{{Сахатон таг}}}|DST={{{DST|}}}}}}} |викиданные22 = P421 |заголовок23 = {{#if:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|Цæрджытæ}} |метка24 = Цæрджытæ |текст24 = {{#if:{{{Цæрджытæ|}}}|{{#ifeq:{{{Цæрджытæ|}}}|-|-|{{nobr|1={{{Цæрджытæ|}}}&nbsp;{{str ≥ len | {{{Цæрджытæ|}}} | 10 | {{#iferror: {{plural:{{formatnum:{{#invoke:String|match|{{{Цæрджытæ|}}}|>?([%d%s]+)%c}}|R}}|адæймаг|адæймаджы|адæймаджы}} | ад.}} | {{plural:{{formatnum:{{{Цæрджытæ|}}}|R}}|адæймаг|адæймаджы|адæймаджы}} }} {{#if:{{{Сфысты аз|}}}|(<span data-wikidata-qualifier-id="P585">{{{Сфысты аз}}}</span>)}}}}}}}} |викиданные24 = p1082 |метка25 = Æнгомад |текст25 = {{#if:{{{Æнгомад|}}}|{{{Æнгомад}}}&nbsp;ад./км²}} |метка26 = Агломераци |текст26 = {{{Агломераци|}}} |метка27 = Агломерацийы цæрджытæ |текст27 = {{{Агломерацийы цæрджытæ|}}} |метка28 = Национ сконд |текст28 = {{{Националон сконд|}}} |метка29 = Дин |текст29 = {{{Динон сконд|}}} |метка30 = [[Катойконим]] |текст30 = {{{этнохороним|{{{Этнохороним|}}}}}} |метка31 = Официалон æвзаг |текст31 = {{#if:{{{Официалон æвзаг|}}}|{{#ifeq:{{{Официалон æвзаг|}}}|-|-|{{#ifexist:{{{Официалон æвзаг}}} æвзаг|[[{{{Официалон æвзаг}}} æвзаг{{!}}{{{Официалон æвзаг}}}]]|[[{{{Официалон æвзаг}}}]]}}}}}}{{#if:{{{Официалон æвзаг-ref|}}}|{{anchor|_lang_ref}} [[#_lang_note|'''*''']]}} |заголовок32 = {{#if:{{wikidata|p473|{{{Телефонон код|}}}|plain=true}}{{wikidata|p281|{{{Посты индекстæ|}}}{{{Посты индекстæ|}}}|plain=true}}{{wikidata|p395|{{{автомобильный код|}}}{{{Цифрон идентификатор|}}}{{{Цифрон идентификатор 2|}}}{{{Цифрон идентификатор 3|}}}|plain=true}}|Цифрон идентификатортæ}} |метка33 = [[Телефонон код|Телефонон код]] |текст33 = {{Телефонон код|{{wikidata|p473|{{{Телефонон код|}}}|plain=true|from={{{from|}}}}}|{{wikidata|p17|{{{Паддзахад|}}}|plain=true|from={{{from|}}}}}}} |метка34 = {{#if:{{{Посты индекстæ|}}}|[[Посты индекс|Посты индекстæ]]|[[Посты индекс]]}} |текст34 = {{#if:{{{Посты индекстæ|}}}|{{{Посты индекстæ}}}|{{{Посты индекстæ|}}}}} |викиданные34 = P281 |метка35 = [[Автомобилон номыр|Автомобилон код]] |текст35 = {{{Автомобилон код|}}} |метка36 = [[{{ucfirst:{{{Идентификаторы тип}}}}}]] |текст36 = {{{Цифрон идентификатор|}}} |метка37 = [[{{ucfirst:{{{Идентификаторы тип 2}}}}}]] |текст37 = {{{Цифрон идентификатор 2|}}} |метка38 = [[{{ucfirst:{{{Идентификаторы тип 3}}}}}]] |текст38 = {{{Цифрон идентификатор 3|}}} |заголовок39 = {{#if:{{{add1n|}}}{{{add1|}}}{{{add2n|}}}{{{add2|}}}{{{add3n|}}}{{{add3|}}}|Æндæр информаци}} |заголовок40 = {{#if:{{{add1|}}}||{{{add1n|}}}}} |метка40 = {{{add1n|}}} |текст40 = {{{add1|}}} |заголовок41 = {{#if:{{{add2|}}}||{{{add2n|}}}}} |метка41 = {{{add2n|}}} |текст41 = {{{add2|}}} |заголовок42 = {{#if:{{{add3|}}}||{{{add3n|}}}}} |метка42 = {{{add3n|}}} |текст42 = {{{add3|}}} |текст43 = {{#if:{{{Сайт|}}}|<hr>}} |класс43 = nomobile |текст44 = {{#if:{{{Сайт|}}}|<span style="word-break:break-word;"><!-- Костыль для Хрома, чтобы адрес сайта переносился, а язык — нет -->{{URL|{{{Сайт}}}}}</span>{{#if:{{{Сайты æвзаг|}}}|{{#if:{{{Сайты æвзаг 2|}}}|<br>}}&#32;<span style="margin-left:-0.25em;">{{ref-{{{Сайты æвзаг}}}}}|}}{{#if:{{{Сайты æвзаг 2|}}}|{{ref-{{{Сайты æвзаг 2}}}}}|}}{{#if:{{{Сайты æвзаг 3|}}}|{{ref-{{{Сайты æвзаг 3}}}}}|}}{{#if:{{{Сайты æвзаг 4|}}}|{{ref-{{{Сайты æвзаг 4}}}}}|}}{{#if:{{{Сайты æвзаг 5|}}}|{{ref-{{{Сайты æвзаг 5}}}}}|}}{{#if:{{{Сайты æвзаг|}}}|</span>}}}} |викиданные44 = p856 |текст45 = {{#if: {{{lat_deg|}}}{{wikidata|p625|plain=true|from={{{from|}}}}} | {{#ifeq: {{{карта страны|}}}{{{карта региона|}}}{{{карта района|}}}| 000 || }}{{#if:{{{основные НП на карте|}}}|{{wikidata-coords|НП/ПозКартæ+ |Ирон ном = {{къопп/ном|{{{Ирон ном|}}}}}|from={{{from|}}}}} |coord = {{{координаты|}}} |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |Паддзахад = {{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }} |территория в таблице = {{{территория в таблице|}}} |карта страны = {{{карта страны|}}} |в страну = {{{в страну|}}} |A в страну = {{{A в страну|}}} |B в страну = {{{B в страну|}}} |C в страну = {{{C в страну|}}} |D в страну = {{{D в страну|}}} |Регион = {{{Регион|}}} |Регион таблицæйы = {{{Регион таблицæйы|}}} |карта региона = {{{карта региона|}}} |в регион = {{{в регион|}}} |A в регион = {{{A в регион|}}} |B в регион = {{{B в регион|}}} |C в регион = {{{C в регион|}}} |D в регион = {{{D в регион|}}} |район = {{{Район|}}} |район в таблице = {{ucfirst: {{{Район таблицæйы|}}} }} |карта района = {{{карта района|}}} |в район = {{{в район|}}} |A в район = {{{A в район|}}} |B в район = {{{B в район|}}} |C в район = {{{C в район|}}} |D в район = {{{D в район|}}} |метка A = {{{метка A|}}} |ссылка A = {{{ссылка A|}}} |lat_deg A = {{{lat_deg A|}}} |lat_min A = {{{lat_min A|}}} |lat_sec A = {{{lat_sec A|}}} |lon_deg A = {{{lon_deg A|}}} |lon_min A = {{{lon_min A|}}} |lon_sec A = {{{lon_sec A|}}} |метка B = {{{метка B|}}} |ссылка B = {{{ссылка B|}}} |lat_deg B = {{{lat_deg B|}}} |lat_min B = {{{lat_min B|}}} |lat_sec B = {{{lat_sec B|}}} |lon_deg B = {{{lon_deg B|}}} |lon_min B = {{{lon_min B|}}} |lon_sec B = {{{lon_sec B|}}} |метка C = {{{метка C|}}} |ссылка C = {{{ссылка C|}}} |lat_deg C = {{{lat_deg C|}}} |lat_min C = {{{lat_min C|}}} |lat_sec C = {{{lat_sec C|}}} |lon_deg C = {{{lon_deg C|}}} |lon_min C = {{{lon_min C|}}} |lon_sec C = {{{lon_sec C|}}} |метка D = {{{метка D|}}} |ссылка D = {{{ссылка D|}}} |lat_deg D = {{{lat_deg D|}}} |lat_min D = {{{lat_min D|}}} |lat_sec D = {{{lat_sec D|}}} |lon_deg D = {{{lon_deg D|}}} |lon_min D = {{{lon_min D|}}} |lon_sec D = {{{lon_sec D|}}} }}|{{wikidata-coords|НП/ПозКартæ-3 |Ирон ном = {{къопп/ном|{{{Ирон ном|}}}}} |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |Паддзахад = {{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }} |Паддзахады картæ = {{{Паддзахады картæ|}}} |название странакарта = {{{название странакарта|}}} |регионкарта = {{{регионкарта|}}} |название регионкарта = {{{название регионкарта|}}} |странакарта position = {{{странакарта position|}}} |регионкарта position = {{{регионкарта position|}}} |районкарта position = {{{районкарта position|}}} |карта страны = {{{карта страны|}}} |регион = {{{Регион|}}} |карта региона = {{{карта региона|}}} |район = {{{Район|}}} |карта района = {{{карта района|}}} }}}}{{#ifeq: {{{карта страны|}}}{{{карта региона|}}}{{{карта района|}}}| 000 || {{#ifexpr: {{REVISIONSIZE}} < 10240 | </div></div> }}}}}} |стиль_текста45 = padding: 0 1px 1px 0; |внизу = {{къопп/Викикъæбиц|{{{ВикиКъæбицы категори|}}}|nocat={{{nocat|}}}}} |стиль_внизу = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; }}<!-- -->{{#if:{{NAMESPACE}}{{{nocat|}}}||<!-- -->[[Категори:Цæрæнрæттæ алфавитмæ гæсгæ]]<!-- -->{{#if:{{{дата основания|}}}|{{#invoke:math/tonumber|year|{{{дата основания|}}}|cat=Населённые пункты, основанные в }}}}<!-- -->{{#if:{{wikidata|p281|{{{почтовый индекс|}}}{{{почтовые индексы|}}}|plain=true}}||[[Категори:Посты индекс кæмæн нæй, ахæм цæрæнрæттæ]]}}<!-- -->{{#if:{{{lat_deg|}}}{{{lon_deg|}}}{{wikidata|p625|plain=true}}||[[Категори:Википеди:Географион координатæтæ кæмæн нæй, ахæм цæрæнрæттæ]]}}<!-- -->{{#if:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|{{#ifeq:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|0|[[Категори:Цæрджытæ кæмæн нæй, ахæм цæрæнрæттæ]]}}|[[Категори:Цæрæнрæттæ æнæ бæлвырдгонд цæрджыты нымæц]]}}<!-- -->{{#if:{{wikidata|p373|{{{ВикиКъæбицы категори|}}}|plain=true}}||[[Категори:Цæрæнуаты тыххæй ВикиКъæбицы категори кæмæн нæй, ахæм статьятæ]]}}<!-- -->}}<!-- -->{{#ifeq:{{{Ном|}}}|{{PAGENAME}}|[[Категори:Шаблоны на основе шаблона НП]]}}<noinclude>{{doc}}</noinclude> rt1vrk75f62ezppnxwydt3sdyp9sg41 594558 594557 2026-05-02T17:53:04Z Taamu 795 Отменена версия [[Special:Diff/594557|594557]], сделанная [[Special:Contributions/Taamu|Taamu]] ([[User talk:Taamu|обсуждение]]) 594558 wikitext text/x-wiki {{Къопп |имя = {{#if:{{{Ирон ном|}}}|{{{Ирон ном}}}|НП-3}} |автозаголовки = нет |стиль_меток = width:40%; background:#F8F8FF; font-weight:normal; text-align: left; |стиль_заголовков = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; |стиль_текста = width:60%; |вверху0 = {{#if: {{{Статус|}}} | {{ucfirst:{{{Статус|}}}}} | Цæрæнран}} |вверху = {{къопп/ном|{{{Ирон ном|}}}}} |стиль_вверху = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; |вверху3 = {{{Оригиналон ном|}}} |изображение = {{wikidata|p18|{{{Ныв|}}}|size=290x435px|caption={{{Нывы ном|}}}}} |стиль_изображения= text-align: center; |текст1 = {{Къопп/тырыса æмæ герб | Тырыса = {{{Тырыса|}}} | флаг ширина = {{{Тырысайы уæрх|}}} | флаг подпись = {{#if:{{{описание флага|}}}|[[{{{описание флага|}}}|{{#if:{{{вместо флага|}}}|{{{вместо флага|}}}|Тырыса}}]]|{{if-wikidata|p163||{{wikidata|p163|text={{#if:{{{вместо флага|}}}|{{{вместо флага|}}}|Тырыса}}}}|{{#if:{{{вместо флага|}}}|{{{вместо флага}}}|Тырыса}}}}}} | Герб = {{{Герб|}}} | герб ширина = {{{Гербы уæрх|}}} | герб подпись = {{#if:{{{описание герба|}}}|[[{{{описание герба|}}}|{{#if:{{{вместо герба|}}}|{{{вместо герба|}}}|Герб}}]]|{{if-wikidata|p237||{{wikidata|p237|text={{#if:{{{вместо герба|}}}|{{{вместо герба|}}}|Герб}}}}|{{#if:{{{вместо герба|}}}|{{{вместо герба}}}|Герб}}}}}} }} |стиль_текста1 = padding:0; |текст2 = {{wikidata-coords|coord|coord |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |coord = {{{координаты|}}} |type = city |region = {{ISO 3166|{{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }}}} |scale = {{#if: {{{CoordScale|}}} | {{{CoordScale}}} | 100000 }} |display = {{#if: {{{display|}}} | {{{display}}} | title,inline }} |from = {{{from|}}} }} |стиль_текста2 = text-align: center; padding-bottom:0.25em; |метка3 = {{#if:{{{вид территории|}}}|{{{вид территории}}}|Паддзахад}} |текст3 = {{#if:{{{территория в таблице|}}}|{{{территория в таблице}}}|{{#ifexist:Хуызæг:Флагификаци/{{{Паддзахад|}}} | {{Флагификаци|{{{Паддзахад|}}}}} |{{{Паддзахад|}}}}}}} |викиданные3 = p17 |метка4 = Статус |текст4 = {{{Дæлбарад|}}} |метка5 = {{#if:{{{Регионы тип|}}}|[[{{#ifexist:{{{Регионы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Регионы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Регионы тип}}}}}|{{ucfirst:{{{Регионы тип}}}}}}}]]|Регион}} |текст5 = {{#if:{{{отображаемый регион|}}}|{{{отображаемый регион}}}|{{#if:{{{Регион таблицæйы|}}}|[[{{{Регион таблицæйы}}}]]|{{#if:{{{Регион|}}}|[[{{{Регион}}}]]}}}}}} |метка6 = {{{вид административной единицы|Административная единица}}} |текст6 = {{{административная единица|}}} |метка7 = {{#if:{{{отображаемый вид района|}}}|{{{отображаемый вид района}}}|{{#if:{{{Районы тип|}}}|[[{{#ifexist:{{{Районы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Районы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Районы тип}}}}}|{{ucfirst:{{{Районы тип}}}}}}}]]|[[Район]]}}}} |текст7 = {{#if:{{{отображаемый район|}}}|{{{отображаемый район}}}|{{#if:{{#if:{{{Район таблицæйы|}}}|{{{Район таблицæйы|}}}|{{{Район|}}}}}|{{#if:{{{Район таблицæйы|}}}|[[{{{Район таблицæйы|}}}]]|[[{{{Район|}}}]]}}}}}} |метка8 = {{#if:{{{Æмбалады тип|}}}|[[{{#ifexist:{{{Æмбалады тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Æмбалады тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Æмбалады тип}}}}}|{{ucfirst:{{{Æмбалады тип}}}}}}}]]|{{{Æмбалады тип|}}}}} |текст8 = {{#if:{{#if:{{{Æмбалад таблицæйы|}}}|{{{Æмбалад таблицæйы|}}}|{{{Æмбалад|}}}}}|{{#if:{{{Æмбалад таблицæйы|}}}|[[{{{Æмбалад таблицæйы|}}}]]|[[{{{Æмбалад|}}}]]}}}} |метка9 = {{#if:{{{Коммунæйы тип|}}}|[[{{#ifexist:{{{Коммунæйы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Коммунæйы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Коммунæйы тип}}}}}|{{ucfirst:{{{Коммунæйы тип}}}}}}}]]|{{{Коммунæйы тип|}}}}} |текст9 = {{#if:{{#if:{{{Коммунæ таблицæйы|}}}|{{{Коммунæ таблицæйы|}}}|{{{Коммунæ |}}}}}|{{#if:{{{Коммунæ таблицæйы|}}}|[[{{{Коммунæ таблицæйы|}}}]]|[[{{{Коммунæ|}}}]]}}}} |метка10 = Мидæг дих |текст10 = {{{Мидæг дихкæнынад|}}} |метка11 = {{#if:{{{Сæргълæууæджы тип|}}}|{{ucfirst:{{{Сæргълæууæджы тип}}}}}|Сæргълæууæг}} |текст11 = {{{Сæргълæууæг|}}} |заголовок12 = Истори æмæ географи |метка13 = Бындурæвæрд |текст13 = {{{Бындурæвæрд|}}} |викиданные13 = p571 |метка14 = Фыццаг кой |текст14 = {{#if:{{{Фыццаг кой|}}}|{{#ifeq:{{{Фыццаг кой|}}}|-|-|{{#ifexist: {{{Фыццаг кой}}}|[[{{{Фыццаг кой}}}]]|{{{Фыццаг кой}}}}}}}}} |викиданные14 = p1249 |метка15 = Раздæры нæмттæ |текст15 = {{{Раздæры нæмттæ|}}} |метка16 = {{#switch:{{ucfirst:{{{Статус|Цæрæнран}}}}}|Сахарæнгæс посёлок|Сахарæнгæс посёлок=Сахарæнгæс посёлок&nbsp;кæдæй|{{ucfirst:{{{Статус|Цæрæнран}}}}}&nbsp;кæдæй}} |текст16 = {{{Статус кæдæй|}}} |метка17 = {{{статус 1}}} с |текст17 = {{{статус 1 с|}}} |метка18 = {{{статус 2}}} с |текст18 = {{{статус 2 с|}}} |метка19 = Фæзуат |текст19 = {{#if:{{{Фæзуат|}}}|{{#ifeq:{{{Фæзуат|}}}|-|-|{{{Фæзуат|}}} км²{{#if:{{{примечание к площади|}}}|{{{примечание к площади}}}}}}}}} |викиданные19 = p2046 |метка20 = {{#if:{{{Бæрзæнды тип|}}}|{{ucfirst:{{{Бæрзæнды тип}}}}}|Центры бæрзæнд}} |текст20 = {{#if:{{{Центры бæрзæнд|}}}|{{{Центры бæрзæнд}}} м}} |викиданные20 = |метка21 = [[Бæстыхъæд|Бæстыхъæд]] |текст21 = {{{Бæстыхъæд|}}} |метка22 = [[Сахатон таг]] |текст22 = {{#if:{{{Сахатон таг|}}}|{{ЦР/Сахаты формат|Сахатон таг={{{Сахатон таг}}}|DST={{{DST|}}}}}}} |викиданные22 = P421 |заголовок23 = {{#if:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|Цæрджытæ}} |метка24 = Цæрджытæ |текст24 = {{#if:{{{Цæрджытæ|}}}|{{#ifeq:{{{Цæрджытæ|}}}|-|-|{{nobr|1={{{Цæрджытæ|}}}&nbsp;{{str ≥ len | {{{Цæрджытæ|}}} | 10 | {{#iferror: {{plural:{{formatnum:{{#invoke:String|match|{{{Цæрджытæ|}}}|>?([%d%s]+)%c}}|R}}|адæймаг|адæймаджы|адæймаджы}} | ад.}} | {{plural:{{formatnum:{{{Цæрджытæ|}}}|R}}|адæймаг|адæймаджы|адæймаджы}} }} {{#if:{{{Сфысты аз|}}}|(<span data-wikidata-qualifier-id="P585">{{{Сфысты аз}}}</span>)}}}}}}}} |викиданные24 = p1082 |метка25 = Æнгомад |текст25 = {{#if:{{{Æнгомад|}}}|{{{Æнгомад}}}&nbsp;ад./км²}} |метка26 = Агломераци |текст26 = {{{Агломераци|}}} |метка27 = Агломерацийы цæрджытæ |текст27 = {{{Агломерацийы цæрджытæ|}}} |метка28 = Национ сконд |текст28 = {{{Националон сконд|}}} |метка29 = Дин |текст29 = {{{Динон сконд|}}} |метка30 = [[Катойконим]] |текст30 = {{{этнохороним|{{{Этнохороним|}}}}}} |метка31 = Официалон æвзаг |текст31 = {{#if:{{{Официалон æвзаг|}}}|{{#ifeq:{{{Официалон æвзаг|}}}|-|-|{{#ifexist:{{{Официалон æвзаг}}} æвзаг|[[{{{Официалон æвзаг}}} æвзаг{{!}}{{{Официалон æвзаг}}}]]|[[{{{Официалон æвзаг}}}]]}}}}}}{{#if:{{{Официалон æвзаг-ref|}}}|{{anchor|_lang_ref}} [[#_lang_note|'''*''']]}} |заголовок32 = {{#if:{{wikidata|p473|{{{Телефонон код|}}}|plain=true}}{{wikidata|p281|{{{Посты индекстæ|}}}{{{Посты индекстæ|}}}|plain=true}}{{wikidata|p395|{{{автомобильный код|}}}{{{Цифрон идентификатор|}}}{{{Цифрон идентификатор 2|}}}{{{Цифрон идентификатор 3|}}}|plain=true}}|Цифрон идентификатортæ}} |метка33 = [[Телефонон код|Телефонон код]] |текст33 = {{Телефонон код|{{wikidata|p473|{{{Телефонон код|}}}|plain=true|from={{{from|}}}}}|{{wikidata|p17|{{{Паддзахад|}}}|plain=true|from={{{from|}}}}}}} |метка34 = {{#if:{{{Посты индекстæ|}}}|[[Посты индекс|Посты индекстæ]]|[[Посты индекс]]}} |текст34 = {{#if:{{{Посты индекстæ|}}}|{{{Посты индекстæ}}}|{{{Посты индекстæ|}}}}} |викиданные34 = P281 |метка35 = [[Автомобилон номыр|Автомобилон код]] |текст35 = {{{Автомобилон код|}}} |метка36 = [[{{ucfirst:{{{Идентификаторы тип}}}}}]] |текст36 = {{{Цифрон идентификатор|}}} |метка37 = [[{{ucfirst:{{{Идентификаторы тип 2}}}}}]] |текст37 = {{{Цифрон идентификатор 2|}}} |метка38 = [[{{ucfirst:{{{Идентификаторы тип 3}}}}}]] |текст38 = {{{Цифрон идентификатор 3|}}} |заголовок39 = {{#if:{{{add1n|}}}{{{add1|}}}{{{add2n|}}}{{{add2|}}}{{{add3n|}}}{{{add3|}}}|Æндæр информаци}} |заголовок40 = {{#if:{{{add1|}}}||{{{add1n|}}}}} |метка40 = {{{add1n|}}} |текст40 = {{{add1|}}} |заголовок41 = {{#if:{{{add2|}}}||{{{add2n|}}}}} |метка41 = {{{add2n|}}} |текст41 = {{{add2|}}} |заголовок42 = {{#if:{{{add3|}}}||{{{add3n|}}}}} |метка42 = {{{add3n|}}} |текст42 = {{{add3|}}} |текст43 = {{#if:{{{Сайт|}}}|<hr>}} |класс43 = nomobile |текст44 = {{#if:{{{Сайт|}}}|<span style="word-break:break-word;"><!-- Костыль для Хрома, чтобы адрес сайта переносился, а язык — нет -->{{URL|{{{Сайт}}}}}</span>{{#if:{{{Сайты æвзаг|}}}|{{#if:{{{Сайты æвзаг 2|}}}|<br>}}&#32;<span style="margin-left:-0.25em;">{{ref-{{{Сайты æвзаг}}}}}|}}{{#if:{{{Сайты æвзаг 2|}}}|{{ref-{{{Сайты æвзаг 2}}}}}|}}{{#if:{{{Сайты æвзаг 3|}}}|{{ref-{{{Сайты æвзаг 3}}}}}|}}{{#if:{{{Сайты æвзаг 4|}}}|{{ref-{{{Сайты æвзаг 4}}}}}|}}{{#if:{{{Сайты æвзаг 5|}}}|{{ref-{{{Сайты æвзаг 5}}}}}|}}{{#if:{{{Сайты æвзаг|}}}|</span>}}}} |викиданные44 = p856 |текст45 = {{#if: {{{lat_deg|}}}{{wikidata|p625|plain=true|from={{{from|}}}}} | {{#ifeq: {{{карта страны|}}}{{{карта региона|}}}{{{карта района|}}}| 000 || }}{{#if:{{{основные НП на карте|}}}|{{wikidata-coords|НП/ПозКартæ+ |Ирон ном = {{къопп/ном|{{{Ирон ном|}}}}} |coord = {{{координаты|}}} |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |Паддзахад = {{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }} |территория в таблице = {{{территория в таблице|}}} |карта страны = {{{карта страны|}}} |в страну = {{{в страну|}}} |A в страну = {{{A в страну|}}} |B в страну = {{{B в страну|}}} |C в страну = {{{C в страну|}}} |D в страну = {{{D в страну|}}} |Регион = {{{Регион|}}} |Регион таблицæйы = {{{Регион таблицæйы|}}} |карта региона = {{{карта региона|}}} |в регион = {{{в регион|}}} |A в регион = {{{A в регион|}}} |B в регион = {{{B в регион|}}} |C в регион = {{{C в регион|}}} |D в регион = {{{D в регион|}}} |район = {{{Район|}}} |район в таблице = {{ucfirst: {{{Район таблицæйы|}}} }} |карта района = {{{карта района|}}} |в район = {{{в район|}}} |A в район = {{{A в район|}}} |B в район = {{{B в район|}}} |C в район = {{{C в район|}}} |D в район = {{{D в район|}}} |метка A = {{{метка A|}}} |ссылка A = {{{ссылка A|}}} |lat_deg A = {{{lat_deg A|}}} |lat_min A = {{{lat_min A|}}} |lat_sec A = {{{lat_sec A|}}} |lon_deg A = {{{lon_deg A|}}} |lon_min A = {{{lon_min A|}}} |lon_sec A = {{{lon_sec A|}}} |метка B = {{{метка B|}}} |ссылка B = {{{ссылка B|}}} |lat_deg B = {{{lat_deg B|}}} |lat_min B = {{{lat_min B|}}} |lat_sec B = {{{lat_sec B|}}} |lon_deg B = {{{lon_deg B|}}} |lon_min B = {{{lon_min B|}}} |lon_sec B = {{{lon_sec B|}}} |метка C = {{{метка C|}}} |ссылка C = {{{ссылка C|}}} |lat_deg C = {{{lat_deg C|}}} |lat_min C = {{{lat_min C|}}} |lat_sec C = {{{lat_sec C|}}} |lon_deg C = {{{lon_deg C|}}} |lon_min C = {{{lon_min C|}}} |lon_sec C = {{{lon_sec C|}}} |метка D = {{{метка D|}}} |ссылка D = {{{ссылка D|}}} |lat_deg D = {{{lat_deg D|}}} |lat_min D = {{{lat_min D|}}} |lat_sec D = {{{lat_sec D|}}} |lon_deg D = {{{lon_deg D|}}} |lon_min D = {{{lon_min D|}}} |lon_sec D = {{{lon_sec D|}}} }}|{{wikidata-coords|НП/ПозКартæ-3 |Ирон ном = {{къопп/ном|{{{Ирон ном|}}}}} |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |Паддзахад = {{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }} |Паддзахады картæ = {{{Паддзахады картæ|}}} |название странакарта = {{{название странакарта|}}} |регионкарта = {{{регионкарта|}}} |название регионкарта = {{{название регионкарта|}}} |странакарта position = {{{странакарта position|}}} |регионкарта position = {{{регионкарта position|}}} |районкарта position = {{{районкарта position|}}} |карта страны = {{{карта страны|}}} |регион = {{{Регион|}}} |карта региона = {{{карта региона|}}} |район = {{{Район|}}} |карта района = {{{карта района|}}} }}}}{{#ifeq: {{{карта страны|}}}{{{карта региона|}}}{{{карта района|}}}| 000 || {{#ifexpr: {{REVISIONSIZE}} < 10240 | </div></div> }}}}}} |стиль_текста45 = padding: 0 1px 1px 0; |внизу = {{къопп/Викикъæбиц|{{{ВикиКъæбицы категори|}}}|nocat={{{nocat|}}}}} |стиль_внизу = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; }}<!-- -->{{#if:{{NAMESPACE}}{{{nocat|}}}||<!-- -->[[Категори:Цæрæнрæттæ алфавитмæ гæсгæ]]<!-- -->{{#if:{{{дата основания|}}}|{{#invoke:math/tonumber|year|{{{дата основания|}}}|cat=Населённые пункты, основанные в }}}}<!-- -->{{#if:{{wikidata|p281|{{{почтовый индекс|}}}{{{почтовые индексы|}}}|plain=true}}||[[Категори:Посты индекс кæмæн нæй, ахæм цæрæнрæттæ]]}}<!-- -->{{#if:{{{lat_deg|}}}{{{lon_deg|}}}{{wikidata|p625|plain=true}}||[[Категори:Википеди:Географион координатæтæ кæмæн нæй, ахæм цæрæнрæттæ]]}}<!-- -->{{#if:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|{{#ifeq:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|0|[[Категори:Цæрджытæ кæмæн нæй, ахæм цæрæнрæттæ]]}}|[[Категори:Цæрæнрæттæ æнæ бæлвырдгонд цæрджыты нымæц]]}}<!-- -->{{#if:{{wikidata|p373|{{{ВикиКъæбицы категори|}}}|plain=true}}||[[Категори:Цæрæнуаты тыххæй ВикиКъæбицы категори кæмæн нæй, ахæм статьятæ]]}}<!-- -->}}<!-- -->{{#ifeq:{{{Ном|}}}|{{PAGENAME}}|[[Категори:Шаблоны на основе шаблона НП]]}}<noinclude>{{doc}}</noinclude> s442nq1prsart9jowc4fk0adrh6rmw4 594559 594558 2026-05-02T17:57:29Z Taamu 795 594559 wikitext text/x-wiki {{Къопп |имя = {{#if:{{{Ирон ном|}}}|{{{Ирон ном}}}|НП-3}} |автозаголовки = нет |стиль_меток = width:40%; background:#F8F8FF; font-weight:normal; text-align: left; |стиль_заголовков = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; |стиль_текста = width:60%; |вверху0 = {{#if: {{{Статус|}}} | {{ucfirst:{{{Статус|}}}}} | Цæрæнран}} |вверху = {{къопп/ном|{{{Ирон ном|}}}}} |стиль_вверху = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; |вверху3 = {{{Оригиналон ном|}}} |изображение = {{wikidata|p18|{{{Ныв|}}}|size=290x435px|caption={{{Нывы ном|}}}}} |стиль_изображения= text-align: center; |текст1 = {{Къопп/тырыса æмæ герб | Тырыса = {{{Тырыса|}}} | флаг ширина = {{{Тырысайы уæрх|}}} | флаг подпись = {{#if:{{{описание флага|}}}|[[{{{описание флага|}}}|{{#if:{{{вместо флага|}}}|{{{вместо флага|}}}|Тырыса}}]]|{{if-wikidata|p163||{{wikidata|p163|text={{#if:{{{вместо флага|}}}|{{{вместо флага|}}}|Тырыса}}}}|{{#if:{{{вместо флага|}}}|{{{вместо флага}}}|Тырыса}}}}}} | Герб = {{{Герб|}}} | герб ширина = {{{Гербы уæрх|}}} | герб подпись = {{#if:{{{описание герба|}}}|[[{{{описание герба|}}}|{{#if:{{{вместо герба|}}}|{{{вместо герба|}}}|Герб}}]]|{{if-wikidata|p237||{{wikidata|p237|text={{#if:{{{вместо герба|}}}|{{{вместо герба|}}}|Герб}}}}|{{#if:{{{вместо герба|}}}|{{{вместо герба}}}|Герб}}}}}} }} |стиль_текста1 = padding:0; |текст2 = {{wikidata-coords|coord|coord |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |coord = {{{координаты|}}} |type = city |region = {{ISO 3166|{{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }}}} |scale = {{#if: {{{CoordScale|}}} | {{{CoordScale}}} | 100000 }} |display = {{#if: {{{display|}}} | {{{display}}} | title,inline }} |from = {{{from|}}} }} |стиль_текста2 = text-align: center; padding-bottom:0.25em; |метка3 = {{#if:{{{вид территории|}}}|{{{вид территории}}}|Паддзахад}} |текст3 = {{#if:{{{территория в таблице|}}}|{{{территория в таблице}}}|{{#ifexist:Хуызæг:Флагификаци/{{{Паддзахад|}}} | {{Флагификаци|{{{Паддзахад|}}}}} |{{{Паддзахад|}}}}}}} |викиданные3 = p17 |метка4 = Статус |текст4 = {{{Дæлбарад|}}} |метка5 = {{#if:{{{Регионы тип|}}}|[[{{#ifexist:{{{Регионы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Регионы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Регионы тип}}}}}|{{ucfirst:{{{Регионы тип}}}}}}}]]|Регион}} |текст5 = {{#if:{{{отображаемый регион|}}}|{{{отображаемый регион}}}|{{#if:{{{Регион таблицæйы|}}}|[[{{{Регион таблицæйы}}}]]|{{#if:{{{Регион|}}}|[[{{{Регион}}}]]}}}}}} |метка6 = {{{вид административной единицы|Административная единица}}} |текст6 = {{{административная единица|}}} |метка7 = {{#if:{{{отображаемый вид района|}}}|{{{отображаемый вид района}}}|{{#if:{{{Районы тип|}}}|[[{{#ifexist:{{{Районы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Районы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Районы тип}}}}}|{{ucfirst:{{{Районы тип}}}}}}}]]|[[Район]]}}}} |текст7 = {{#if:{{{отображаемый район|}}}|{{{отображаемый район}}}|{{#if:{{#if:{{{Район таблицæйы|}}}|{{{Район таблицæйы|}}}|{{{Район|}}}}}|{{#if:{{{Район таблицæйы|}}}|[[{{{Район таблицæйы|}}}]]|[[{{{Район|}}}]]}}}}}} |метка8 = {{#if:{{{Æмбалады тип|}}}|[[{{#ifexist:{{{Æмбалады тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Æмбалады тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Æмбалады тип}}}}}|{{ucfirst:{{{Æмбалады тип}}}}}}}]]|{{{Æмбалады тип|}}}}} |текст8 = {{#if:{{#if:{{{Æмбалад таблицæйы|}}}|{{{Æмбалад таблицæйы|}}}|{{{Æмбалад|}}}}}|{{#if:{{{Æмбалад таблицæйы|}}}|[[{{{Æмбалад таблицæйы|}}}]]|[[{{{Æмбалад|}}}]]}}}} |метка9 = {{#if:{{{Коммунæйы тип|}}}|[[{{#ifexist:{{{Коммунæйы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Коммунæйы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Коммунæйы тип}}}}}|{{ucfirst:{{{Коммунæйы тип}}}}}}}]]|{{{Коммунæйы тип|}}}}} |текст9 = {{#if:{{#if:{{{Коммунæ таблицæйы|}}}|{{{Коммунæ таблицæйы|}}}|{{{Коммунæ |}}}}}|{{#if:{{{Коммунæ таблицæйы|}}}|[[{{{Коммунæ таблицæйы|}}}]]|[[{{{Коммунæ|}}}]]}}}} |метка10 = Мидæг дих |текст10 = {{{Мидæг дихкæнынад|}}} |метка11 = {{#if:{{{Сæргълæууæджы тип|}}}|{{ucfirst:{{{Сæргълæууæджы тип}}}}}|Сæргълæууæг}} |текст11 = {{{Сæргълæууæг|}}} |заголовок12 = Истори æмæ географи |метка13 = Бындурæвæрд |текст13 = {{{Бындурæвæрд|}}} |викиданные13 = p571 |метка14 = Фыццаг кой |текст14 = {{#if:{{{Фыццаг кой|}}}|{{#ifeq:{{{Фыццаг кой|}}}|-|-|{{#ifexist: {{{Фыццаг кой}}}|[[{{{Фыццаг кой}}}]]|{{{Фыццаг кой}}}}}}}}} |викиданные14 = p1249 |метка15 = Раздæры нæмттæ |текст15 = {{{Раздæры нæмттæ|}}} |метка16 = {{#switch:{{ucfirst:{{{Статус|Цæрæнран}}}}}|Сахарæнгæс посёлок|Сахарæнгæс посёлок=Сахарæнгæс посёлок&nbsp;кæдæй|{{ucfirst:{{{Статус|Цæрæнран}}}}}&nbsp;кæдæй}} |текст16 = {{{Статус кæдæй|}}} |метка17 = {{{статус 1}}} с |текст17 = {{{статус 1 с|}}} |метка18 = {{{статус 2}}} с |текст18 = {{{статус 2 с|}}} |метка19 = Фæзуат |текст19 = {{#if:{{{Фæзуат|}}}|{{#ifeq:{{{Фæзуат|}}}|-|-|{{{Фæзуат|}}} км²{{#if:{{{примечание к площади|}}}|{{{примечание к площади}}}}}}}}} |викиданные19 = p2046 |метка20 = {{#if:{{{Бæрзæнды тип|}}}|{{ucfirst:{{{Бæрзæнды тип}}}}}|Центры бæрзæнд}} |текст20 = {{#if:{{{Центры бæрзæнд|}}}|{{{Центры бæрзæнд}}} м}} |викиданные20 = |метка21 = [[Бæстыхъæд|Бæстыхъæд]] |текст21 = {{{Бæстыхъæд|}}} |метка22 = [[Сахатон таг]] |текст22 = {{#if:{{{Сахатон таг|}}}|{{ЦР/Сахаты формат|Сахатон таг={{{Сахатон таг}}}|DST={{{DST|}}}}}}} |викиданные22 = P421 |заголовок23 = {{#if:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|Цæрджытæ}} |метка24 = Цæрджытæ |текст24 = {{#if:{{{Цæрджытæ|}}}|{{#ifeq:{{{Цæрджытæ|}}}|-|-|{{nobr|1={{{Цæрджытæ|}}}&nbsp;{{str ≥ len | {{{Цæрджытæ|}}} | 10 | {{#iferror: {{plural:{{formatnum:{{#invoke:String|match|{{{Цæрджытæ|}}}|>?([%d%s]+)%c}}|R}}|адæймаг|адæймаджы|адæймаджы}} | ад.}} | {{plural:{{formatnum:{{{Цæрджытæ|}}}|R}}|адæймаг|адæймаджы|адæймаджы}} }} {{#if:{{{Сфысты аз|}}}|(<span data-wikidata-qualifier-id="P585">{{{Сфысты аз}}}</span>)}}}}}}}} |викиданные24 = p1082 |метка25 = Æнгомад |текст25 = {{#if:{{{Æнгомад|}}}|{{{Æнгомад}}}&nbsp;ад./км²}} |метка26 = Агломераци |текст26 = {{{Агломераци|}}} |метка27 = Агломерацийы цæрджытæ |текст27 = {{{Агломерацийы цæрджытæ|}}} |метка28 = Национ сконд |текст28 = {{{Националон сконд|}}} |метка29 = Дин |текст29 = {{{Динон сконд|}}} |метка30 = [[Катойконим]] |текст30 = {{{этнохороним|{{{Этнохороним|}}}}}} |метка31 = Официалон æвзаг |текст31 = {{#if:{{{Официалон æвзаг|}}}|{{#ifeq:{{{Официалон æвзаг|}}}|-|-|{{#ifexist:{{{Официалон æвзаг}}} æвзаг|[[{{{Официалон æвзаг}}} æвзаг{{!}}{{{Официалон æвзаг}}}]]|[[{{{Официалон æвзаг}}}]]}}}}}}{{#if:{{{Официалон æвзаг-ref|}}}|{{anchor|_lang_ref}} [[#_lang_note|'''*''']]}} |заголовок32 = {{#if:{{wikidata|p473|{{{Телефонон код|}}}|plain=true}}{{wikidata|p281|{{{Посты индекстæ|}}}{{{Посты индекстæ|}}}|plain=true}}{{wikidata|p395|{{{автомобильный код|}}}{{{Цифрон идентификатор|}}}{{{Цифрон идентификатор 2|}}}{{{Цифрон идентификатор 3|}}}|plain=true}}|Цифрон идентификатортæ}} |метка33 = [[Телефонон код|Телефонон код]] |текст33 = {{Телефонон код|{{wikidata|p473|{{{Телефонон код|}}}|plain=true|from={{{from|}}}}}|{{wikidata|p17|{{{Паддзахад|}}}|plain=true|from={{{from|}}}}}}} |метка34 = {{#if:{{{Посты индекстæ|}}}|[[Посты индекс|Посты индекстæ]]|[[Посты индекс]]}} |текст34 = {{#if:{{{Посты индекстæ|}}}|{{{Посты индекстæ}}}|{{{Посты индекстæ|}}}}} |викиданные34 = P281 |метка35 = [[Автомобилон номыр|Автомобилон код]] |текст35 = {{{Автомобилон код|}}} |метка36 = [[{{ucfirst:{{{Идентификаторы тип}}}}}]] |текст36 = {{{Цифрон идентификатор|}}} |метка37 = [[{{ucfirst:{{{Идентификаторы тип 2}}}}}]] |текст37 = {{{Цифрон идентификатор 2|}}} |метка38 = [[{{ucfirst:{{{Идентификаторы тип 3}}}}}]] |текст38 = {{{Цифрон идентификатор 3|}}} |заголовок39 = {{#if:{{{add1n|}}}{{{add1|}}}{{{add2n|}}}{{{add2|}}}{{{add3n|}}}{{{add3|}}}|Æндæр информаци}} |заголовок40 = {{#if:{{{add1|}}}||{{{add1n|}}}}} |метка40 = {{{add1n|}}} |текст40 = {{{add1|}}} |заголовок41 = {{#if:{{{add2|}}}||{{{add2n|}}}}} |метка41 = {{{add2n|}}} |текст41 = {{{add2|}}} |заголовок42 = {{#if:{{{add3|}}}||{{{add3n|}}}}} |метка42 = {{{add3n|}}} |текст42 = {{{add3|}}} |текст43 = {{#if:{{{Сайт|}}}|<hr>}} |класс43 = nomobile |текст44 = {{#if:{{{Сайт|}}}|<span style="word-break:break-word;"><!-- Костыль для Хрома, чтобы адрес сайта переносился, а язык — нет -->{{URL|{{{Сайт}}}}}</span>{{#if:{{{Сайты æвзаг|}}}|{{#if:{{{Сайты æвзаг 2|}}}|<br>}}&#32;<span style="margin-left:-0.25em;">{{ref-{{{Сайты æвзаг}}}}}|}}{{#if:{{{Сайты æвзаг 2|}}}|{{ref-{{{Сайты æвзаг 2}}}}}|}}{{#if:{{{Сайты æвзаг 3|}}}|{{ref-{{{Сайты æвзаг 3}}}}}|}}{{#if:{{{Сайты æвзаг 4|}}}|{{ref-{{{Сайты æвзаг 4}}}}}|}}{{#if:{{{Сайты æвзаг 5|}}}|{{ref-{{{Сайты æвзаг 5}}}}}|}}{{#if:{{{Сайты æвзаг|}}}|</span>}}}} |викиданные44 = p856 |текст45 = {{#if: {{{lat_deg|}}}{{wikidata|p625|plain=true|from={{{from|}}}}} | {{#ifeq: {{{карта страны|}}}{{{карта региона|}}}{{{карта района|}}}| 000 || }}{{#if:{{{основные НП на карте|}}}|{{wikidata-coords|НП/ПозКартæ+ |Ирон ном = {{къопп/ном|{{{Ирон ном|}}}}} |coord = {{{координаты|}}} |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |Паддзахад = {{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }} |территория в таблице = {{{территория в таблице|}}} |карта страны = {{{карта страны|}}} |в страну = {{{в страну|}}} |A в страну = {{{A в страну|}}} |B в страну = {{{B в страну|}}} |C в страну = {{{C в страну|}}} |D в страну = {{{D в страну|}}} |Регион = {{{Регион|}}} |Регион таблицæйы = {{{Регион таблицæйы|}}} |карта региона = {{{карта региона|}}} |в регион = {{{в регион|}}} |A в регион = {{{A в регион|}}} |B в регион = {{{B в регион|}}} |C в регион = {{{C в регион|}}} |D в регион = {{{D в регион|}}} |район = {{{Район|}}} |район в таблице = {{ucfirst: {{{Район таблицæйы|}}} }} |карта района = {{{карта района|}}} |в район = {{{в район|}}} |A в район = {{{A в район|}}} |B в район = {{{B в район|}}} |C в район = {{{C в район|}}} |D в район = {{{D в район|}}} |метка A = {{{метка A|}}} |ссылка A = {{{ссылка A|}}} |lat_deg A = {{{lat_deg A|}}} |lat_min A = {{{lat_min A|}}} |lat_sec A = {{{lat_sec A|}}} |lon_deg A = {{{lon_deg A|}}} |lon_min A = {{{lon_min A|}}} |lon_sec A = {{{lon_sec A|}}} |метка B = {{{метка B|}}} |ссылка B = {{{ссылка B|}}} |lat_deg B = {{{lat_deg B|}}} |lat_min B = {{{lat_min B|}}} |lat_sec B = {{{lat_sec B|}}} |lon_deg B = {{{lon_deg B|}}} |lon_min B = {{{lon_min B|}}} |lon_sec B = {{{lon_sec B|}}} |метка C = {{{метка C|}}} |ссылка C = {{{ссылка C|}}} |lat_deg C = {{{lat_deg C|}}} |lat_min C = {{{lat_min C|}}} |lat_sec C = {{{lat_sec C|}}} |lon_deg C = {{{lon_deg C|}}} |lon_min C = {{{lon_min C|}}} |lon_sec C = {{{lon_sec C|}}} |метка D = {{{метка D|}}} |ссылка D = {{{ссылка D|}}} |lat_deg D = {{{lat_deg D|}}} |lat_min D = {{{lat_min D|}}} |lat_sec D = {{{lat_sec D|}}} |lon_deg D = {{{lon_deg D|}}} |lon_min D = {{{lon_min D|}}} |lon_sec D = {{{lon_sec D|}}} }}|{{wikidata-coords|НП/ПозКартæ|coord |Ирон ном = {{къопп/ном|{{{Ирон ном|}}}}} |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |Паддзахад = {{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }} |Паддзахады картæ = {{{Паддзахады картæ|}}} |название странакарта = {{{название странакарта|}}} |регионкарта = {{{регионкарта|}}} |название регионкарта = {{{название регионкарта|}}} |странакарта position = {{{странакарта position|}}} |регионкарта position = {{{регионкарта position|}}} |районкарта position = {{{районкарта position|}}} |карта страны = {{{карта страны|}}} |регион = {{{Регион|}}} |карта региона = {{{карта региона|}}} |район = {{{Район|}}} |карта района = {{{карта района|}}} }}}}{{#ifeq: {{{карта страны|}}}{{{карта региона|}}}{{{карта района|}}}| 000 || {{#ifexpr: {{REVISIONSIZE}} < 10240 | </div></div> }}}}}} |стиль_текста45 = padding: 0 1px 1px 0; |внизу = {{къопп/Викикъæбиц|{{{ВикиКъæбицы категори|}}}|nocat={{{nocat|}}}}} |стиль_внизу = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; }}<!-- -->{{#if:{{NAMESPACE}}{{{nocat|}}}||<!-- -->[[Категори:Цæрæнрæттæ алфавитмæ гæсгæ]]<!-- -->{{#if:{{{дата основания|}}}|{{#invoke:math/tonumber|year|{{{дата основания|}}}|cat=Населённые пункты, основанные в }}}}<!-- -->{{#if:{{wikidata|p281|{{{почтовый индекс|}}}{{{почтовые индексы|}}}|plain=true}}||[[Категори:Посты индекс кæмæн нæй, ахæм цæрæнрæттæ]]}}<!-- -->{{#if:{{{lat_deg|}}}{{{lon_deg|}}}{{wikidata|p625|plain=true}}||[[Категори:Википеди:Географион координатæтæ кæмæн нæй, ахæм цæрæнрæттæ]]}}<!-- -->{{#if:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|{{#ifeq:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|0|[[Категори:Цæрджытæ кæмæн нæй, ахæм цæрæнрæттæ]]}}|[[Категори:Цæрæнрæттæ æнæ бæлвырдгонд цæрджыты нымæц]]}}<!-- -->{{#if:{{wikidata|p373|{{{ВикиКъæбицы категори|}}}|plain=true}}||[[Категори:Цæрæнуаты тыххæй ВикиКъæбицы категори кæмæн нæй, ахæм статьятæ]]}}<!-- -->}}<!-- -->{{#ifeq:{{{Ном|}}}|{{PAGENAME}}|[[Категори:Шаблоны на основе шаблона НП]]}}<noinclude>{{doc}}</noinclude> 5pkkog0o7ngem0xzsnrtov3j8202jcq 594562 594559 2026-05-02T18:03:10Z Taamu 795 594562 wikitext text/x-wiki {{Къопп |имя = {{#if:{{{Ирон ном|}}}|{{{Ирон ном}}}|НП-3}} |автозаголовки = нет |стиль_меток = width:40%; background:#F8F8FF; font-weight:normal; text-align: left; |стиль_заголовков = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; |стиль_текста = width:60%; |вверху0 = {{#if: {{{Статус|}}} | {{ucfirst:{{{Статус|}}}}} | Цæрæнран}} |вверху = {{къопп/ном|{{{Ирон ном|}}}}} |стиль_вверху = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; |вверху3 = {{{Оригиналон ном|}}} |изображение = {{wikidata|p18|{{{Ныв|}}}|size=290x435px|caption={{{Нывы ном|}}}}} |стиль_изображения= text-align: center; |текст1 = {{Къопп/тырыса æмæ герб | Тырыса = {{{Тырыса|}}} | флаг ширина = {{{Тырысайы уæрх|}}} | флаг подпись = {{#if:{{{описание флага|}}}|[[{{{описание флага|}}}|{{#if:{{{вместо флага|}}}|{{{вместо флага|}}}|Тырыса}}]]|{{if-wikidata|p163||{{wikidata|p163|text={{#if:{{{вместо флага|}}}|{{{вместо флага|}}}|Тырыса}}}}|{{#if:{{{вместо флага|}}}|{{{вместо флага}}}|Тырыса}}}}}} | Герб = {{{Герб|}}} | герб ширина = {{{Гербы уæрх|}}} | герб подпись = {{#if:{{{описание герба|}}}|[[{{{описание герба|}}}|{{#if:{{{вместо герба|}}}|{{{вместо герба|}}}|Герб}}]]|{{if-wikidata|p237||{{wikidata|p237|text={{#if:{{{вместо герба|}}}|{{{вместо герба|}}}|Герб}}}}|{{#if:{{{вместо герба|}}}|{{{вместо герба}}}|Герб}}}}}} }} |стиль_текста1 = padding:0; |текст2 = {{wikidata-coords|coord|coord |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |coord = {{{координаты|}}} |type = city |region = {{ISO 3166|{{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }}}} |scale = {{#if: {{{CoordScale|}}} | {{{CoordScale}}} | 100000 }} |display = {{#if: {{{display|}}} | {{{display}}} | title,inline }} |from = {{{from|}}} }} |стиль_текста2 = text-align: center; padding-bottom:0.25em; |метка3 = {{#if:{{{вид территории|}}}|{{{вид территории}}}|Паддзахад}} |текст3 = {{#if:{{{территория в таблице|}}}|{{{территория в таблице}}}|{{#ifexist:Хуызæг:Флагификаци/{{{Паддзахад|}}} | {{Флагификаци|{{{Паддзахад|}}}}} |{{{Паддзахад|}}}}}}} |викиданные3 = p17 |метка4 = Статус |текст4 = {{{Дæлбарад|}}} |метка5 = {{#if:{{{Регионы тип|}}}|[[{{#ifexist:{{{Регионы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Регионы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Регионы тип}}}}}|{{ucfirst:{{{Регионы тип}}}}}}}]]|Регион}} |текст5 = {{#if:{{{отображаемый регион|}}}|{{{отображаемый регион}}}|{{#if:{{{Регион таблицæйы|}}}|[[{{{Регион таблицæйы}}}]]|{{#if:{{{Регион|}}}|[[{{{Регион}}}]]}}}}}} |метка6 = {{{вид административной единицы|Административная единица}}} |текст6 = {{{административная единица|}}} |метка7 = {{#if:{{{отображаемый вид района|}}}|{{{отображаемый вид района}}}|{{#if:{{{Районы тип|}}}|[[{{#ifexist:{{{Районы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Районы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Районы тип}}}}}|{{ucfirst:{{{Районы тип}}}}}}}]]|[[Район]]}}}} |текст7 = {{#if:{{{отображаемый район|}}}|{{{отображаемый район}}}|{{#if:{{#if:{{{Район таблицæйы|}}}|{{{Район таблицæйы|}}}|{{{Район|}}}}}|{{#if:{{{Район таблицæйы|}}}|[[{{{Район таблицæйы|}}}]]|[[{{{Район|}}}]]}}}}}} |метка8 = {{#if:{{{Æмбалады тип|}}}|[[{{#ifexist:{{{Æмбалады тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Æмбалады тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Æмбалады тип}}}}}|{{ucfirst:{{{Æмбалады тип}}}}}}}]]|{{{Æмбалады тип|}}}}} |текст8 = {{#if:{{#if:{{{Æмбалад таблицæйы|}}}|{{{Æмбалад таблицæйы|}}}|{{{Æмбалад|}}}}}|{{#if:{{{Æмбалад таблицæйы|}}}|[[{{{Æмбалад таблицæйы|}}}]]|[[{{{Æмбалад|}}}]]}}}} |метка9 = {{#if:{{{Коммунæйы тип|}}}|[[{{#ifexist:{{{Коммунæйы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Коммунæйы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Коммунæйы тип}}}}}|{{ucfirst:{{{Коммунæйы тип}}}}}}}]]|{{{Коммунæйы тип|}}}}} |текст9 = {{#if:{{#if:{{{Коммунæ таблицæйы|}}}|{{{Коммунæ таблицæйы|}}}|{{{Коммунæ |}}}}}|{{#if:{{{Коммунæ таблицæйы|}}}|[[{{{Коммунæ таблицæйы|}}}]]|[[{{{Коммунæ|}}}]]}}}} |метка10 = Мидæг дих |текст10 = {{{Мидæг дихкæнынад|}}} |метка11 = {{#if:{{{Сæргълæууæджы тип|}}}|{{ucfirst:{{{Сæргълæууæджы тип}}}}}|Сæргълæууæг}} |текст11 = {{{Сæргълæууæг|}}} |заголовок12 = Истори æмæ географи |метка13 = Бындурæвæрд |текст13 = {{{Бындурæвæрд|}}} |викиданные13 = p571 |метка14 = Фыццаг кой |текст14 = {{#if:{{{Фыццаг кой|}}}|{{#ifeq:{{{Фыццаг кой|}}}|-|-|{{#ifexist: {{{Фыццаг кой}}}|[[{{{Фыццаг кой}}}]]|{{{Фыццаг кой}}}}}}}}} |викиданные14 = p1249 |метка15 = Раздæры нæмттæ |текст15 = {{{Раздæры нæмттæ|}}} |метка16 = {{#switch:{{ucfirst:{{{Статус|Цæрæнран}}}}}|Сахарæнгæс посёлок|Сахарæнгæс посёлок=Сахарæнгæс посёлок&nbsp;кæдæй|{{ucfirst:{{{Статус|Цæрæнран}}}}}&nbsp;кæдæй}} |текст16 = {{{Статус кæдæй|}}} |метка17 = {{{статус 1}}} с |текст17 = {{{статус 1 с|}}} |метка18 = {{{статус 2}}} с |текст18 = {{{статус 2 с|}}} |метка19 = Фæзуат |текст19 = {{#if:{{{Фæзуат|}}}|{{#ifeq:{{{Фæзуат|}}}|-|-|{{{Фæзуат|}}} км²{{#if:{{{примечание к площади|}}}|{{{примечание к площади}}}}}}}}} |викиданные19 = p2046 |метка20 = {{#if:{{{Бæрзæнды тип|}}}|{{ucfirst:{{{Бæрзæнды тип}}}}}|Центры бæрзæнд}} |текст20 = {{#if:{{{Центры бæрзæнд|}}}|{{{Центры бæрзæнд}}} м}} |викиданные20 = |метка21 = [[Бæстыхъæд|Бæстыхъæд]] |текст21 = {{{Бæстыхъæд|}}} |метка22 = [[Сахатон таг]] |текст22 = {{#if:{{{Сахатон таг|}}}|{{ЦР/Сахаты формат|Сахатон таг={{{Сахатон таг}}}|DST={{{DST|}}}}}}} |викиданные22 = P421 |заголовок23 = {{#if:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|Цæрджытæ}} |метка24 = Цæрджытæ |текст24 = {{#if:{{{Цæрджытæ|}}}|{{#ifeq:{{{Цæрджытæ|}}}|-|-|{{nobr|1={{{Цæрджытæ|}}}&nbsp;{{str ≥ len | {{{Цæрджытæ|}}} | 10 | {{#iferror: {{plural:{{formatnum:{{#invoke:String|match|{{{Цæрджытæ|}}}|>?([%d%s]+)%c}}|R}}|адæймаг|адæймаджы|адæймаджы}} | ад.}} | {{plural:{{formatnum:{{{Цæрджытæ|}}}|R}}|адæймаг|адæймаджы|адæймаджы}} }} {{#if:{{{Сфысты аз|}}}|(<span data-wikidata-qualifier-id="P585">{{{Сфысты аз}}}</span>)}}}}}}}} |викиданные24 = p1082 |метка25 = Æнгомад |текст25 = {{#if:{{{Æнгомад|}}}|{{{Æнгомад}}}&nbsp;ад./км²}} |метка26 = Агломераци |текст26 = {{{Агломераци|}}} |метка27 = Агломерацийы цæрджытæ |текст27 = {{{Агломерацийы цæрджытæ|}}} |метка28 = Национ сконд |текст28 = {{{Националон сконд|}}} |метка29 = Дин |текст29 = {{{Динон сконд|}}} |метка30 = [[Катойконим]] |текст30 = {{{этнохороним|{{{Этнохороним|}}}}}} |метка31 = Официалон æвзаг |текст31 = {{#if:{{{Официалон æвзаг|}}}|{{#ifeq:{{{Официалон æвзаг|}}}|-|-|{{#ifexist:{{{Официалон æвзаг}}} æвзаг|[[{{{Официалон æвзаг}}} æвзаг{{!}}{{{Официалон æвзаг}}}]]|[[{{{Официалон æвзаг}}}]]}}}}}}{{#if:{{{Официалон æвзаг-ref|}}}|{{anchor|_lang_ref}} [[#_lang_note|'''*''']]}} |заголовок32 = {{#if:{{wikidata|p473|{{{Телефонон код|}}}|plain=true}}{{wikidata|p281|{{{Посты индекстæ|}}}{{{Посты индекстæ|}}}|plain=true}}{{wikidata|p395|{{{автомобильный код|}}}{{{Цифрон идентификатор|}}}{{{Цифрон идентификатор 2|}}}{{{Цифрон идентификатор 3|}}}|plain=true}}|Цифрон идентификатортæ}} |метка33 = [[Телефонон код|Телефонон код]] |текст33 = {{Телефонон код|{{wikidata|p473|{{{Телефонон код|}}}|plain=true|from={{{from|}}}}}|{{wikidata|p17|{{{Паддзахад|}}}|plain=true|from={{{from|}}}}}}} |метка34 = {{#if:{{{Посты индекстæ|}}}|[[Посты индекс|Посты индекстæ]]|[[Посты индекс]]}} |текст34 = {{#if:{{{Посты индекстæ|}}}|{{{Посты индекстæ}}}|{{{Посты индекстæ|}}}}} |викиданные34 = P281 |метка35 = [[Автомобилон номыр|Автомобилон код]] |текст35 = {{{Автомобилон код|}}} |метка36 = [[{{ucfirst:{{{Идентификаторы тип}}}}}]] |текст36 = {{{Цифрон идентификатор|}}} |метка37 = [[{{ucfirst:{{{Идентификаторы тип 2}}}}}]] |текст37 = {{{Цифрон идентификатор 2|}}} |метка38 = [[{{ucfirst:{{{Идентификаторы тип 3}}}}}]] |текст38 = {{{Цифрон идентификатор 3|}}} |заголовок39 = {{#if:{{{add1n|}}}{{{add1|}}}{{{add2n|}}}{{{add2|}}}{{{add3n|}}}{{{add3|}}}|Æндæр информаци}} |заголовок40 = {{#if:{{{add1|}}}||{{{add1n|}}}}} |метка40 = {{{add1n|}}} |текст40 = {{{add1|}}} |заголовок41 = {{#if:{{{add2|}}}||{{{add2n|}}}}} |метка41 = {{{add2n|}}} |текст41 = {{{add2|}}} |заголовок42 = {{#if:{{{add3|}}}||{{{add3n|}}}}} |метка42 = {{{add3n|}}} |текст42 = {{{add3|}}} |текст43 = {{#if:{{{Сайт|}}}|<hr>}} |класс43 = nomobile |текст44 = {{#if:{{{Сайт|}}}|<span style="word-break:break-word;"><!-- Костыль для Хрома, чтобы адрес сайта переносился, а язык — нет -->{{URL|{{{Сайт}}}}}</span>{{#if:{{{Сайты æвзаг|}}}|{{#if:{{{Сайты æвзаг 2|}}}|<br>}}&#32;<span style="margin-left:-0.25em;">{{ref-{{{Сайты æвзаг}}}}}|}}{{#if:{{{Сайты æвзаг 2|}}}|{{ref-{{{Сайты æвзаг 2}}}}}|}}{{#if:{{{Сайты æвзаг 3|}}}|{{ref-{{{Сайты æвзаг 3}}}}}|}}{{#if:{{{Сайты æвзаг 4|}}}|{{ref-{{{Сайты æвзаг 4}}}}}|}}{{#if:{{{Сайты æвзаг 5|}}}|{{ref-{{{Сайты æвзаг 5}}}}}|}}{{#if:{{{Сайты æвзаг|}}}|</span>}}}} |викиданные44 = p856 |текст45 = {{#if: {{{lat_deg|}}}{{wikidata|p625|plain=true|from={{{from|}}}}} | {{#ifeq: {{{карта страны|}}}{{{карта региона|}}}{{{карта района|}}}| 000 || }}{{#if:{{{основные НП на карте|}}}|{{wikidata-coords|НП/ПозКартæ+ |Ирон ном = {{къопп/ном|{{{Ирон ном|}}}}} |coord = {{{координаты|}}} |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |Паддзахад = {{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }} |территория в таблице = {{{территория в таблице|}}} |карта страны = {{{карта страны|}}} |в страну = {{{в страну|}}} |A в страну = {{{A в страну|}}} |B в страну = {{{B в страну|}}} |C в страну = {{{C в страну|}}} |D в страну = {{{D в страну|}}} |Регион = {{{Регион|}}} |Регион таблицæйы = {{{Регион таблицæйы|}}} |карта региона = {{{карта региона|}}} |в регион = {{{в регион|}}} |A в регион = {{{A в регион|}}} |B в регион = {{{B в регион|}}} |C в регион = {{{C в регион|}}} |D в регион = {{{D в регион|}}} |район = {{{Район|}}} |район в таблице = {{ucfirst: {{{Район таблицæйы|}}} }} |карта района = {{{карта района|}}} |в район = {{{в район|}}} |A в район = {{{A в район|}}} |B в район = {{{B в район|}}} |C в район = {{{C в район|}}} |D в район = {{{D в район|}}} |метка A = {{{метка A|}}} |ссылка A = {{{ссылка A|}}} |lat_deg A = {{{lat_deg A|}}} |lat_min A = {{{lat_min A|}}} |lat_sec A = {{{lat_sec A|}}} |lon_deg A = {{{lon_deg A|}}} |lon_min A = {{{lon_min A|}}} |lon_sec A = {{{lon_sec A|}}} |метка B = {{{метка B|}}} |ссылка B = {{{ссылка B|}}} |lat_deg B = {{{lat_deg B|}}} |lat_min B = {{{lat_min B|}}} |lat_sec B = {{{lat_sec B|}}} |lon_deg B = {{{lon_deg B|}}} |lon_min B = {{{lon_min B|}}} |lon_sec B = {{{lon_sec B|}}} |метка C = {{{метка C|}}} |ссылка C = {{{ссылка C|}}} |lat_deg C = {{{lat_deg C|}}} |lat_min C = {{{lat_min C|}}} |lat_sec C = {{{lat_sec C|}}} |lon_deg C = {{{lon_deg C|}}} |lon_min C = {{{lon_min C|}}} |lon_sec C = {{{lon_sec C|}}} |метка D = {{{метка D|}}} |ссылка D = {{{ссылка D|}}} |lat_deg D = {{{lat_deg D|}}} |lat_min D = {{{lat_min D|}}} |lat_sec D = {{{lat_sec D|}}} |lon_deg D = {{{lon_deg D|}}} |lon_min D = {{{lon_min D|}}} |lon_sec D = {{{lon_sec D|}}} }}|{{wikidata-coords|НП/ПозКартæ-3|coord |Ирон ном = {{къопп/ном|{{{Ирон ном|}}}}} |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |Паддзахад = {{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }} |Паддзахады картæ = {{{Паддзахады картæ|}}} |название странакарта = {{{название странакарта|}}} |регионкарта = {{{регионкарта|}}} |название регионкарта = {{{название регионкарта|}}} |странакарта position = {{{странакарта position|}}} |регионкарта position = {{{регионкарта position|}}} |районкарта position = {{{районкарта position|}}} |карта страны = {{{карта страны|}}} |регион = {{{Регион|}}} |карта региона = {{{карта региона|}}} |район = {{{Район|}}} |карта района = {{{карта района|}}} }}}}{{#ifeq: {{{карта страны|}}}{{{карта региона|}}}{{{карта района|}}}| 000 || {{#ifexpr: {{REVISIONSIZE}} < 10240 | </div></div> }}}}}} |стиль_текста45 = padding: 0 1px 1px 0; |внизу = {{къопп/Викикъæбиц|{{{ВикиКъæбицы категори|}}}|nocat={{{nocat|}}}}} |стиль_внизу = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; }}<!-- -->{{#if:{{NAMESPACE}}{{{nocat|}}}||<!-- -->[[Категори:Цæрæнрæттæ алфавитмæ гæсгæ]]<!-- -->{{#if:{{{дата основания|}}}|{{#invoke:math/tonumber|year|{{{дата основания|}}}|cat=Населённые пункты, основанные в }}}}<!-- -->{{#if:{{wikidata|p281|{{{почтовый индекс|}}}{{{почтовые индексы|}}}|plain=true}}||[[Категори:Посты индекс кæмæн нæй, ахæм цæрæнрæттæ]]}}<!-- -->{{#if:{{{lat_deg|}}}{{{lon_deg|}}}{{wikidata|p625|plain=true}}||[[Категори:Википеди:Географион координатæтæ кæмæн нæй, ахæм цæрæнрæттæ]]}}<!-- -->{{#if:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|{{#ifeq:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|0|[[Категори:Цæрджытæ кæмæн нæй, ахæм цæрæнрæттæ]]}}|[[Категори:Цæрæнрæттæ æнæ бæлвырдгонд цæрджыты нымæц]]}}<!-- -->{{#if:{{wikidata|p373|{{{ВикиКъæбицы категори|}}}|plain=true}}||[[Категори:Цæрæнуаты тыххæй ВикиКъæбицы категори кæмæн нæй, ахæм статьятæ]]}}<!-- -->}}<!-- -->{{#ifeq:{{{Ном|}}}|{{PAGENAME}}|[[Категори:Шаблоны на основе шаблона НП]]}}<noinclude>{{doc}}</noinclude> l657dlm1wtkca46ge5p5rodr3g05ucs 594563 594562 2026-05-02T18:07:23Z Taamu 795 594563 wikitext text/x-wiki {{Къопп |имя = {{#if:{{{Ирон ном|}}}|{{{Ирон ном}}}|НП-3}} |автозаголовки = нет |стиль_меток = width:40%; background:#F8F8FF; font-weight:normal; text-align: left; |стиль_заголовков = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; |стиль_текста = width:60%; |вверху0 = {{#if: {{{Статус|}}} | {{ucfirst:{{{Статус|}}}}} | Цæрæнран}} |вверху = {{къопп/ном|{{{Ирон ном|}}}}} |стиль_вверху = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; |вверху3 = {{{Оригиналон ном|}}} |изображение = {{wikidata|p18|{{{Ныв|}}}|size=290x435px|caption={{{Нывы ном|}}}}} |стиль_изображения= text-align: center; |текст1 = {{Къопп/тырыса æмæ герб | Тырыса = {{{Тырыса|}}} | флаг ширина = {{{Тырысайы уæрх|}}} | флаг подпись = {{#if:{{{описание флага|}}}|[[{{{описание флага|}}}|{{#if:{{{вместо флага|}}}|{{{вместо флага|}}}|Тырыса}}]]|{{if-wikidata|p163||{{wikidata|p163|text={{#if:{{{вместо флага|}}}|{{{вместо флага|}}}|Тырыса}}}}|{{#if:{{{вместо флага|}}}|{{{вместо флага}}}|Тырыса}}}}}} | Герб = {{{Герб|}}} | герб ширина = {{{Гербы уæрх|}}} | герб подпись = {{#if:{{{описание герба|}}}|[[{{{описание герба|}}}|{{#if:{{{вместо герба|}}}|{{{вместо герба|}}}|Герб}}]]|{{if-wikidata|p237||{{wikidata|p237|text={{#if:{{{вместо герба|}}}|{{{вместо герба|}}}|Герб}}}}|{{#if:{{{вместо герба|}}}|{{{вместо герба}}}|Герб}}}}}} }} |стиль_текста1 = padding:0; |текст2 = {{wikidata-coords|coord|coord |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |coord = {{{координаты|}}} |type = city |region = {{ISO 3166|{{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }}}} |scale = {{#if: {{{CoordScale|}}} | {{{CoordScale}}} | 100000 }} |display = {{#if: {{{display|}}} | {{{display}}} | title,inline }} |from = {{{from|}}} }} |стиль_текста2 = text-align: center; padding-bottom:0.25em; |метка3 = {{#if:{{{вид территории|}}}|{{{вид территории}}}|Паддзахад}} |текст3 = {{#if:{{{территория в таблице|}}}|{{{территория в таблице}}}|{{#ifexist:Хуызæг:Флагификаци/{{{Паддзахад|}}} | {{Флагификаци|{{{Паддзахад|}}}}} |{{{Паддзахад|}}}}}}} |викиданные3 = p17 |метка4 = Статус |текст4 = {{{Дæлбарад|}}} |метка5 = {{#if:{{{Регионы тип|}}}|[[{{#ifexist:{{{Регионы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Регионы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Регионы тип}}}}}|{{ucfirst:{{{Регионы тип}}}}}}}]]|Регион}} |текст5 = {{#if:{{{отображаемый регион|}}}|{{{отображаемый регион}}}|{{#if:{{{Регион таблицæйы|}}}|[[{{{Регион таблицæйы}}}]]|{{#if:{{{Регион|}}}|[[{{{Регион}}}]]}}}}}} |метка6 = {{{вид административной единицы|Административная единица}}} |текст6 = {{{административная единица|}}} |метка7 = {{#if:{{{отображаемый вид района|}}}|{{{отображаемый вид района}}}|{{#if:{{{Районы тип|}}}|[[{{#ifexist:{{{Районы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Районы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Районы тип}}}}}|{{ucfirst:{{{Районы тип}}}}}}}]]|[[Район]]}}}} |текст7 = {{#if:{{{отображаемый район|}}}|{{{отображаемый район}}}|{{#if:{{#if:{{{Район таблицæйы|}}}|{{{Район таблицæйы|}}}|{{{Район|}}}}}|{{#if:{{{Район таблицæйы|}}}|[[{{{Район таблицæйы|}}}]]|[[{{{Район|}}}]]}}}}}} |метка8 = {{#if:{{{Æмбалады тип|}}}|[[{{#ifexist:{{{Æмбалады тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Æмбалады тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Æмбалады тип}}}}}|{{ucfirst:{{{Æмбалады тип}}}}}}}]]|{{{Æмбалады тип|}}}}} |текст8 = {{#if:{{#if:{{{Æмбалад таблицæйы|}}}|{{{Æмбалад таблицæйы|}}}|{{{Æмбалад|}}}}}|{{#if:{{{Æмбалад таблицæйы|}}}|[[{{{Æмбалад таблицæйы|}}}]]|[[{{{Æмбалад|}}}]]}}}} |метка9 = {{#if:{{{Коммунæйы тип|}}}|[[{{#ifexist:{{{Коммунæйы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}})|{{{Коммунæйы тип}}} ({{wikidata|p17|{{{Паддзахад|}}}|plain=true}}){{!}}{{ucfirst:{{{Коммунæйы тип}}}}}|{{ucfirst:{{{Коммунæйы тип}}}}}}}]]|{{{Коммунæйы тип|}}}}} |текст9 = {{#if:{{#if:{{{Коммунæ таблицæйы|}}}|{{{Коммунæ таблицæйы|}}}|{{{Коммунæ |}}}}}|{{#if:{{{Коммунæ таблицæйы|}}}|[[{{{Коммунæ таблицæйы|}}}]]|[[{{{Коммунæ|}}}]]}}}} |метка10 = Мидæг дих |текст10 = {{{Мидæг дихкæнынад|}}} |метка11 = {{#if:{{{Сæргълæууæджы тип|}}}|{{ucfirst:{{{Сæргълæууæджы тип}}}}}|Сæргълæууæг}} |текст11 = {{{Сæргълæууæг|}}} |заголовок12 = Истори æмæ географи |метка13 = Бындурæвæрд |текст13 = {{{Бындурæвæрд|}}} |викиданные13 = p571 |метка14 = Фыццаг кой |текст14 = {{#if:{{{Фыццаг кой|}}}|{{#ifeq:{{{Фыццаг кой|}}}|-|-|{{#ifexist: {{{Фыццаг кой}}}|[[{{{Фыццаг кой}}}]]|{{{Фыццаг кой}}}}}}}}} |викиданные14 = p1249 |метка15 = Раздæры нæмттæ |текст15 = {{{Раздæры нæмттæ|}}} |метка16 = {{#switch:{{ucfirst:{{{Статус|Цæрæнран}}}}}|Сахарæнгæс посёлок|Сахарæнгæс посёлок=Сахарæнгæс посёлок&nbsp;кæдæй|{{ucfirst:{{{Статус|Цæрæнран}}}}}&nbsp;кæдæй}} |текст16 = {{{Статус кæдæй|}}} |метка17 = {{{статус 1}}} с |текст17 = {{{статус 1 с|}}} |метка18 = {{{статус 2}}} с |текст18 = {{{статус 2 с|}}} |метка19 = Фæзуат |текст19 = {{#if:{{{Фæзуат|}}}|{{#ifeq:{{{Фæзуат|}}}|-|-|{{{Фæзуат|}}} км²{{#if:{{{примечание к площади|}}}|{{{примечание к площади}}}}}}}}} |викиданные19 = p2046 |метка20 = {{#if:{{{Бæрзæнды тип|}}}|{{ucfirst:{{{Бæрзæнды тип}}}}}|Центры бæрзæнд}} |текст20 = {{#if:{{{Центры бæрзæнд|}}}|{{{Центры бæрзæнд}}} м}} |викиданные20 = |метка21 = [[Бæстыхъæд|Бæстыхъæд]] |текст21 = {{{Бæстыхъæд|}}} |метка22 = [[Сахатон таг]] |текст22 = {{#if:{{{Сахатон таг|}}}|{{ЦР/Сахаты формат|Сахатон таг={{{Сахатон таг}}}|DST={{{DST|}}}}}}} |викиданные22 = P421 |заголовок23 = {{#if:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|Цæрджытæ}} |метка24 = Цæрджытæ |текст24 = {{#if:{{{Цæрджытæ|}}}|{{#ifeq:{{{Цæрджытæ|}}}|-|-|{{nobr|1={{{Цæрджытæ|}}}&nbsp;{{str ≥ len | {{{Цæрджытæ|}}} | 10 | {{#iferror: {{plural:{{formatnum:{{#invoke:String|match|{{{Цæрджытæ|}}}|>?([%d%s]+)%c}}|R}}|адæймаг|адæймаджы|адæймаджы}} | ад.}} | {{plural:{{formatnum:{{{Цæрджытæ|}}}|R}}|адæймаг|адæймаджы|адæймаджы}} }} {{#if:{{{Сфысты аз|}}}|(<span data-wikidata-qualifier-id="P585">{{{Сфысты аз}}}</span>)}}}}}}}} |викиданные24 = p1082 |метка25 = Æнгомад |текст25 = {{#if:{{{Æнгомад|}}}|{{{Æнгомад}}}&nbsp;ад./км²}} |метка26 = Агломераци |текст26 = {{{Агломераци|}}} |метка27 = Агломерацийы цæрджытæ |текст27 = {{{Агломерацийы цæрджытæ|}}} |метка28 = Национ сконд |текст28 = {{{Националон сконд|}}} |метка29 = Дин |текст29 = {{{Динон сконд|}}} |метка30 = [[Катойконим]] |текст30 = {{{этнохороним|{{{Этнохороним|}}}}}} |метка31 = Официалон æвзаг |текст31 = {{#if:{{{Официалон æвзаг|}}}|{{#ifeq:{{{Официалон æвзаг|}}}|-|-|{{#ifexist:{{{Официалон æвзаг}}} æвзаг|[[{{{Официалон æвзаг}}} æвзаг{{!}}{{{Официалон æвзаг}}}]]|[[{{{Официалон æвзаг}}}]]}}}}}}{{#if:{{{Официалон æвзаг-ref|}}}|{{anchor|_lang_ref}} [[#_lang_note|'''*''']]}} |заголовок32 = {{#if:{{wikidata|p473|{{{Телефонон код|}}}|plain=true}}{{wikidata|p281|{{{Посты индекстæ|}}}{{{Посты индекстæ|}}}|plain=true}}{{wikidata|p395|{{{автомобильный код|}}}{{{Цифрон идентификатор|}}}{{{Цифрон идентификатор 2|}}}{{{Цифрон идентификатор 3|}}}|plain=true}}|Цифрон идентификатортæ}} |метка33 = [[Телефонон код|Телефонон код]] |текст33 = {{Телефонон код|{{wikidata|p473|{{{Телефонон код|}}}|plain=true|from={{{from|}}}}}|{{wikidata|p17|{{{Паддзахад|}}}|plain=true|from={{{from|}}}}}}} |метка34 = {{#if:{{{Посты индекстæ|}}}|[[Посты индекс|Посты индекстæ]]|[[Посты индекс]]}} |текст34 = {{#if:{{{Посты индекстæ|}}}|{{{Посты индекстæ}}}|{{{Посты индекстæ|}}}}} |викиданные34 = P281 |метка35 = [[Автомобилон номыр|Автомобилон код]] |текст35 = {{{Автомобилон код|}}} |метка36 = [[{{ucfirst:{{{Идентификаторы тип}}}}}]] |текст36 = {{{Цифрон идентификатор|}}} |метка37 = [[{{ucfirst:{{{Идентификаторы тип 2}}}}}]] |текст37 = {{{Цифрон идентификатор 2|}}} |метка38 = [[{{ucfirst:{{{Идентификаторы тип 3}}}}}]] |текст38 = {{{Цифрон идентификатор 3|}}} |заголовок39 = {{#if:{{{add1n|}}}{{{add1|}}}{{{add2n|}}}{{{add2|}}}{{{add3n|}}}{{{add3|}}}|Æндæр информаци}} |заголовок40 = {{#if:{{{add1|}}}||{{{add1n|}}}}} |метка40 = {{{add1n|}}} |текст40 = {{{add1|}}} |заголовок41 = {{#if:{{{add2|}}}||{{{add2n|}}}}} |метка41 = {{{add2n|}}} |текст41 = {{{add2|}}} |заголовок42 = {{#if:{{{add3|}}}||{{{add3n|}}}}} |метка42 = {{{add3n|}}} |текст42 = {{{add3|}}} |текст43 = {{#if:{{{Сайт|}}}|<hr>}} |класс43 = nomobile |текст44 = {{#if:{{{Сайт|}}}|<span style="word-break:break-word;"><!-- Костыль для Хрома, чтобы адрес сайта переносился, а язык — нет -->{{URL|{{{Сайт}}}}}</span>{{#if:{{{Сайты æвзаг|}}}|{{#if:{{{Сайты æвзаг 2|}}}|<br>}}&#32;<span style="margin-left:-0.25em;">{{ref-{{{Сайты æвзаг}}}}}|}}{{#if:{{{Сайты æвзаг 2|}}}|{{ref-{{{Сайты æвзаг 2}}}}}|}}{{#if:{{{Сайты æвзаг 3|}}}|{{ref-{{{Сайты æвзаг 3}}}}}|}}{{#if:{{{Сайты æвзаг 4|}}}|{{ref-{{{Сайты æвзаг 4}}}}}|}}{{#if:{{{Сайты æвзаг 5|}}}|{{ref-{{{Сайты æвзаг 5}}}}}|}}{{#if:{{{Сайты æвзаг|}}}|</span>}}}} |викиданные44 = p856 |текст45 = {{#if: {{{lat_deg|}}}{{wikidata|p625|plain=true|from={{{from|}}}}} | {{#ifeq: {{{карта страны|}}}{{{карта региона|}}}{{{карта района|}}}| 000 || }}{{#if:{{{основные НП на карте|}}}|{{wikidata-coords|НП/ПозКартæ+ |Ирон ном = {{къопп/ном|{{{Ирон ном|}}}}} |coord = {{{координаты|}}} |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |Паддзахад = {{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property: p17|from={{{from|}}} }} }} |территория в таблице = {{{территория в таблице|}}} |карта страны = {{{карта страны|}}} |в страну = {{{в страну|}}} |A в страну = {{{A в страну|}}} |B в страну = {{{B в страну|}}} |C в страну = {{{C в страну|}}} |D в страну = {{{D в страну|}}} |Регион = {{{Регион|}}} |Регион таблицæйы = {{{Регион таблицæйы|}}} |карта региона = {{{карта региона|}}} |в регион = {{{в регион|}}} |A в регион = {{{A в регион|}}} |B в регион = {{{B в регион|}}} |C в регион = {{{C в регион|}}} |D в регион = {{{D в регион|}}} |район = {{{Район|}}} |район в таблице = {{ucfirst: {{{Район таблицæйы|}}} }} |карта района = {{{карта района|}}} |в район = {{{в район|}}} |A в район = {{{A в район|}}} |B в район = {{{B в район|}}} |C в район = {{{C в район|}}} |D в район = {{{D в район|}}} |метка A = {{{метка A|}}} |ссылка A = {{{ссылка A|}}} |lat_deg A = {{{lat_deg A|}}} |lat_min A = {{{lat_min A|}}} |lat_sec A = {{{lat_sec A|}}} |lon_deg A = {{{lon_deg A|}}} |lon_min A = {{{lon_min A|}}} |lon_sec A = {{{lon_sec A|}}} |метка B = {{{метка B|}}} |ссылка B = {{{ссылка B|}}} |lat_deg B = {{{lat_deg B|}}} |lat_min B = {{{lat_min B|}}} |lat_sec B = {{{lat_sec B|}}} |lon_deg B = {{{lon_deg B|}}} |lon_min B = {{{lon_min B|}}} |lon_sec B = {{{lon_sec B|}}} |метка C = {{{метка C|}}} |ссылка C = {{{ссылка C|}}} |lat_deg C = {{{lat_deg C|}}} |lat_min C = {{{lat_min C|}}} |lat_sec C = {{{lat_sec C|}}} |lon_deg C = {{{lon_deg C|}}} |lon_min C = {{{lon_min C|}}} |lon_sec C = {{{lon_sec C|}}} |метка D = {{{метка D|}}} |ссылка D = {{{ссылка D|}}} |lat_deg D = {{{lat_deg D|}}} |lat_min D = {{{lat_min D|}}} |lat_sec D = {{{lat_sec D|}}} |lon_deg D = {{{lon_deg D|}}} |lon_min D = {{{lon_min D|}}} |lon_sec D = {{{lon_sec D|}}} }}|{{wikidata-coords|НП/ПозКартæ-3|coord |Ирон ном = {{къопп/ном|{{{Ирон ном|}}}}} |lat_deg = {{{lat_deg|}}} |lat_min = {{{lat_min|}}} |lat_sec = {{{lat_sec|}}} |lat_dir = {{{lat_dir|}}} |lon_deg = {{{lon_deg|}}} |lon_min = {{{lon_min|}}} |lon_sec = {{{lon_sec|}}} |lon_dir = {{{lon_dir|}}} |Паддзахад = {{#if: {{{Паддзахад|}}} | {{{Паддзахад}}} | {{#property:p17|from={{{from|}}} }} }} |Паддзахады картæ = {{{Паддзахады картæ|}}} |название странакарта = {{{название странакарта|}}} |регионкарта = {{{регионкарта|}}} |название регионкарта = {{{название регионкарта|}}} |странакарта position = {{{странакарта position|}}} |регионкарта position = {{{регионкарта position|}}} |районкарта position = {{{районкарта position|}}} |карта страны = {{{карта страны|}}} |регион = {{{Регион|}}} |карта региона = {{{карта региона|}}} |район = {{{Район|}}} |карта района = {{{карта района|}}} }}}}{{#ifeq: {{{карта страны|}}}{{{карта региона|}}}{{{карта района|}}}| 000 || {{#ifexpr: {{REVISIONSIZE}} < 10240 | </div></div> }}}}}} |стиль_текста45 = padding: 0 1px 1px 0; |внизу = {{къопп/Викикъæбиц|{{{ВикиКъæбицы категори|}}}|nocat={{{nocat|}}}}} |стиль_внизу = {{#ifexist:{{{Паддзахад|}}} | background:{{хуыз|{{{хуыз|{{{Паддзахад|}}}}}} | {{#cfe3ff}}}}}}; text-align: center; }}<!-- -->{{#if:{{NAMESPACE}}{{{nocat|}}}||<!-- -->[[Категори:Цæрæнрæттæ алфавитмæ гæсгæ]]<!-- -->{{#if:{{{дата основания|}}}|{{#invoke:math/tonumber|year|{{{дата основания|}}}|cat=Населённые пункты, основанные в }}}}<!-- -->{{#if:{{wikidata|p281|{{{почтовый индекс|}}}{{{почтовые индексы|}}}|plain=true}}||[[Категори:Посты индекс кæмæн нæй, ахæм цæрæнрæттæ]]}}<!-- -->{{#if:{{{lat_deg|}}}{{{lon_deg|}}}{{wikidata|p625|plain=true}}||[[Категори:Википеди:Географион координатæтæ кæмæн нæй, ахæм цæрæнрæттæ]]}}<!-- -->{{#if:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|{{#ifeq:{{wikidata|p1082|{{{Цæрджытæ|}}}|plain=true}}|0|[[Категори:Цæрджытæ кæмæн нæй, ахæм цæрæнрæттæ]]}}|[[Категори:Цæрæнрæттæ æнæ бæлвырдгонд цæрджыты нымæц]]}}<!-- -->{{#if:{{wikidata|p373|{{{ВикиКъæбицы категори|}}}|plain=true}}||[[Категори:Цæрæнуаты тыххæй ВикиКъæбицы категори кæмæн нæй, ахæм статьятæ]]}}<!-- -->}}<!-- -->{{#ifeq:{{{Ном|}}}|{{PAGENAME}}|[[Категори:Шаблоны на основе шаблона НП]]}}<noinclude>{{doc}}</noinclude> n4zjl01kb0jserarp24253bswx83lii Хуызæг:НП/ПозКартæ-3 10 58509 594547 594536 2026-05-02T14:17:14Z Taamu 795 594547 wikitext text/x-wiki {{#if:{{{lat_deg|}}}{{{coord|}}}|{{#ifeq:{{{карта страны|}}}|0|| {{ПозКартæ |{{#if:{{{Паддзахады картæ|}}}|{{#ifexist:Хуызæг:ПозКартæ_{{{Паддзахады картæ}}}|{{{Паддзахады картæ}}}|Зæхх}}|{{#ifexist:Шаблон:ПозКартæ_{{#if:{{{Паддзахад|}}}|{{{Паддзахад}}}|ħ1Ъ}}|{{{Паддзахад|}}}|Зæхх}}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{странакарта position|auto}}} |caption= |alt={{#if:{{{карта страны|}}}|{{{карта страны}}}}} |markalt={{{Ирон ном|}}} }} }}{{#ifeq:{{{карта региона|}}}|0||{{#if:{{{Паддзахады картæ|}}}{{{регионкарта|}}}|{{#ifexist:Шаблон:ПозКартæ_{{#if:{{{Паддзахады картæ|}}}|{{{Паддзахады картæ}}}|ħ 1Ъ}}_{{#if:{{{регионкарта|}}}|{{{регионкарта}}}|ħ 1Ъ}}| {{^|2px}} {{ПозКартæ |{{{Паддзахады картæ}}}_{{{регионкарта}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{регионкарта position|auto}}} |caption= |marksize={{#if:{{{marksize|}}}|{{{marksize|}}}|6}} |АльтернативнаяКарта = {{#if:{{{карта региона|}}}|{{{карта региона}}}}} }} }}|{{#if:{{{Паддзахад|}}}{{{регион|}}}|{{#ifexist:Хуызæг:ПозКартæ_{{#if:{{{Паддзахад|}}}|{{{Паддзахад}}}|ħ1Ъ}}_{{#if:{{{регион|}}}|{{{регион}}}|ħ1Ъ}}| {{^|2px}} {{ПозКартæ |{{{Паддзахад|}}}_{{{регион}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{регионкарта position|auto}}} |caption= |alt = {{{карта региона|}}} |markalt = {{{Ирон ном|}}} }} }}}}}}}}{{#ifeq:{{{карта района|}}}|0||{{#if:{{{Паддзахад|}}}{{{регион|}}}{{{район|}}}|{{#ifexist:Хуызæг:ПозКартæ_{{#if:{{{Паддзахад|}}}|{{{Паддзахад}}}|ħ1Ъ}}_{{#if:{{{регион|}}}|{{{регион}}}|ħ1Ъ}}_{{#if:{{{район|}}}|{{{район}}}|ħ1Ъ}}| {{^|2px}} {{ПозКартæ |{{{Паддзахад|}}}_{{{регион}}}_{{{район}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{районкарта position|auto}}} |caption= |alt={{{карта района|}}} |markalt={{{Ирон ном|}}} }} }}}}}}}}<noinclude>{{doc}}</noinclude> n59cy0oo4px5dua1vy40lm2uc4ftzcx 594548 594547 2026-05-02T14:17:39Z Taamu 795 594548 wikitext text/x-wiki {{#if:{{{lat_deg|}}}{{{coord|}}}|{{#ifeq:{{{карта страны|}}}|0|| {{ПозКартæ |{{#if:{{{Паддзахады картæ|}}}|{{#ifexist:Хуызæг:ПозКартæ_{{{Паддзахады картæ}}}|{{{Паддзахады картæ}}}|Зæхх}}|{{#ifexist:Шаблон:ПозКартæ_{{#if:{{{Паддзахад|}}}|{{{Паддзахад}}}|ħ1Ъ}}|{{{Паддзахад|}}}|Зæхх}}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{странакарта position|auto}}} |caption= |alt={{#if:{{{карта страны|}}}|{{{карта страны}}}}} |markalt={{{Ирон ном|}}} }} }}{{#ifeq:{{{карта региона|}}}|0||{{#if:{{{Паддзахады картæ|}}}{{{регионкарта|}}}|{{#ifexist:Хуызæг:ПозКартæ_{{#if:{{{Паддзахады картæ|}}}|{{{Паддзахады картæ}}}|ħ 1Ъ}}_{{#if:{{{регионкарта|}}}|{{{регионкарта}}}|ħ 1Ъ}}| {{^|2px}} {{ПозКартæ |{{{Паддзахады картæ}}}_{{{регионкарта}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{регионкарта position|auto}}} |caption= |marksize={{#if:{{{marksize|}}}|{{{marksize|}}}|6}} |АльтернативнаяКарта = {{#if:{{{карта региона|}}}|{{{карта региона}}}}} }} }}|{{#if:{{{Паддзахад|}}}{{{регион|}}}|{{#ifexist:Хуызæг:ПозКартæ_{{#if:{{{Паддзахад|}}}|{{{Паддзахад}}}|ħ1Ъ}}_{{#if:{{{регион|}}}|{{{регион}}}|ħ1Ъ}}| {{^|2px}} {{ПозКартæ |{{{Паддзахад|}}}_{{{регион}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{регионкарта position|auto}}} |caption= |alt = {{{карта региона|}}} |markalt = {{{Ирон ном|}}} }} }}}}}}}}{{#ifeq:{{{карта района|}}}|0||{{#if:{{{Паддзахад|}}}{{{регион|}}}{{{район|}}}|{{#ifexist:Хуызæг:ПозКартæ_{{#if:{{{Паддзахад|}}}|{{{Паддзахад}}}|ħ1Ъ}}_{{#if:{{{регион|}}}|{{{регион}}}|ħ1Ъ}}_{{#if:{{{район|}}}|{{{район}}}|ħ1Ъ}}| {{^|2px}} {{ПозКартæ |{{{Паддзахад|}}}_{{{регион}}}_{{{район}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{районкарта position|auto}}} |caption= |alt={{{карта района|}}} |markalt={{{Ирон ном|}}} }} }}}}}}}}<noinclude>{{doc}}</noinclude> r0l4lqbpa48vzuhrreynmgow95y5s9j 594560 594548 2026-05-02T17:58:19Z Taamu 795 594560 wikitext text/x-wiki {{#if:{{{lat_deg|}}}{{{coord|}}}|{{#ifeq:{{{карта страны|}}}|0|| {{ПозКартæ |{{#if:{{{Паддзахады картæ|}}}|{{#ifexist:Хуызæг:ПозКартæ_{{{Паддзахады картæ}}}|{{{Паддзахады картæ}}}|Зæхх}}|{{#ifexist:Хуызæг:ПозКартæ_{{#if:{{{Паддзахад|}}}|{{{Паддзахад}}}|ħ1Ъ}}|{{{Паддзахад|}}}|Зæхх}}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{странакарта position|auto}}} |caption= |alt={{#if:{{{карта страны|}}}|{{{карта страны}}}}} |markalt={{{Ирон ном|}}} }} }}{{#ifeq:{{{карта региона|}}}|0||{{#if:{{{Паддзахады картæ|}}}{{{регионкарта|}}}|{{#ifexist:Хуызæг:ПозКартæ_{{#if:{{{Паддзахады картæ|}}}|{{{Паддзахады картæ}}}|ħ 1Ъ}}_{{#if:{{{регионкарта|}}}|{{{регионкарта}}}|ħ 1Ъ}}| {{^|2px}} {{ПозКартæ |{{{Паддзахады картæ}}}_{{{регионкарта}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{регионкарта position|auto}}} |caption= |marksize={{#if:{{{marksize|}}}|{{{marksize|}}}|6}} |АльтернативнаяКарта = {{#if:{{{карта региона|}}}|{{{карта региона}}}}} }} }}|{{#if:{{{Паддзахад|}}}{{{регион|}}}|{{#ifexist:Хуызæг:ПозКартæ_{{#if:{{{Паддзахад|}}}|{{{Паддзахад}}}|ħ1Ъ}}_{{#if:{{{регион|}}}|{{{регион}}}|ħ1Ъ}}| {{^|2px}} {{ПозКартæ |{{{Паддзахад|}}}_{{{регион}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{регионкарта position|auto}}} |caption= |alt = {{{карта региона|}}} |markalt = {{{Ирон ном|}}} }} }}}}}}}}{{#ifeq:{{{карта района|}}}|0||{{#if:{{{Паддзахад|}}}{{{регион|}}}{{{район|}}}|{{#ifexist:Хуызæг:ПозКартæ_{{#if:{{{Паддзахад|}}}|{{{Паддзахад}}}|ħ1Ъ}}_{{#if:{{{регион|}}}|{{{регион}}}|ħ1Ъ}}_{{#if:{{{район|}}}|{{{район}}}|ħ1Ъ}}| {{^|2px}} {{ПозКартæ |{{{Паддзахад|}}}_{{{регион}}}_{{{район}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{районкарта position|auto}}} |caption= |alt={{{карта района|}}} |markalt={{{Ирон ном|}}} }} }}}}}}}}<noinclude>{{doc}}</noinclude> a2v6djz59470i0u7uss8f5gaija1khb 594561 594560 2026-05-02T18:02:51Z Taamu 795 594561 wikitext text/x-wiki {{#if:{{{lat_deg|}}}{{{coord|}}}|{{#ifeq:{{{карта страны|}}}|0|| {{ПозКартæ |{{#if:{{{Паддзахады картæ|}}}|{{#ifexist:Хуызæг:ПозКартæ_{{{Паддзахады картæ}}}|{{{Паддзахады картæ}}}|Зæхх}}|{{#ifexist:Хуызæг:ПозКартæ_{{#if:{{{Паддзахад|}}}|{{{Паддзахад}}}|ħ1Ъ}}|{{{Паддзахад|}}}|Зæхх}}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{Паддзахады картæ position|auto}}} |caption= |alt={{#if:{{{карта страны|}}}|{{{карта страны}}}}} |markalt={{{Ирон ном|}}} }} }}{{#ifeq:{{{карта региона|}}}|0||{{#if:{{{Паддзахады картæ|}}}{{{регионкарта|}}}|{{#ifexist:Хуызæг:ПозКартæ_{{#if:{{{Паддзахады картæ|}}}|{{{Паддзахады картæ}}}|ħ 1Ъ}}_{{#if:{{{регионкарта|}}}|{{{регионкарта}}}|ħ 1Ъ}}| {{^|2px}} {{ПозКартæ |{{{Паддзахады картæ}}}_{{{регионкарта}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{регионкарта position|auto}}} |caption= |marksize={{#if:{{{marksize|}}}|{{{marksize|}}}|6}} |АльтернативнаяКарта = {{#if:{{{карта региона|}}}|{{{карта региона}}}}} }} }}|{{#if:{{{Паддзахад|}}}{{{регион|}}}|{{#ifexist:Хуызæг:ПозКартæ_{{#if:{{{Паддзахад|}}}|{{{Паддзахад}}}|ħ1Ъ}}_{{#if:{{{регион|}}}|{{{регион}}}|ħ1Ъ}}| {{^|2px}} {{ПозКартæ |{{{Паддзахад|}}}_{{{регион}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{регионкарта position|auto}}} |caption= |alt = {{{карта региона|}}} |markalt = {{{Ирон ном|}}} }} }}}}}}}}{{#ifeq:{{{карта района|}}}|0||{{#if:{{{Паддзахад|}}}{{{регион|}}}{{{район|}}}|{{#ifexist:Хуызæг:ПозКартæ_{{#if:{{{Паддзахад|}}}|{{{Паддзахад}}}|ħ1Ъ}}_{{#if:{{{регион|}}}|{{{регион}}}|ħ1Ъ}}_{{#if:{{{район|}}}|{{{район}}}|ħ1Ъ}}| {{^|2px}} {{ПозКартæ |{{{Паддзахад|}}}_{{{регион}}}_{{{район}}} |width=290 |coord={{{coord|}}} |lat_deg={{{lat_deg}}}|lat_min={{{lat_min}}}|lat_sec={{{lat_sec}}}|lat_dir={{{lat_dir}}} |lon_deg={{{lon_deg}}}|lon_min={{{lon_min}}}|lon_sec={{{lon_sec}}}|lon_dir={{{lon_dir}}} |float=center |position={{{районкарта position|auto}}} |caption= |alt={{{карта района|}}} |markalt={{{Ирон ном|}}} }} }}}}}}}}<noinclude>{{doc}}</noinclude> tttgs2tzzh3219kg8yv9alxdo1lipyp Бути (Цæцæн) 0 83376 594542 2026-05-02T13:48:23Z Taamu 795 Ног фарс, йæ код райдайы афтæ: «{{ЦР |Статус = Хъæу |Ирон ном = Бути |Оригиналон ном = {{lang-ce|Бутӏи}} |Ныв = |Ном = |Паддзахад = Уæрæсе |Герб = |Тырыса = |Гербы уæрх = |Тырысайы уæрх = |lat_deg = |lat_...» 594542 wikitext text/x-wiki {{ЦР |Статус = Хъæу |Ирон ном = Бути |Оригиналон ном = {{lang-ce|Бутӏи}} |Ныв = |Ном = |Паддзахад = Уæрæсе |Герб = |Тырыса = |Гербы уæрх = |Тырысайы уæрх = |lat_deg = |lat_min = |lat_sec = |lon_deg = |lon_min = |lon_sec = |CoordAddon = |CoordScale = |Паддзахады картæйы ас = 300 |Регионы картæйы ас = 300 |Районы картæйы ас = 300 |Регионы тип = Уæрæсейы федеративон арæзт{{!}}Федерацийы субъект |Регион = Цæцæн |Регион таблицæйы = Цæцæн |Районы тип = Муниципалон район (Уæрæсе){{!}}Муниципалон район |Район = Шаройы район |Район таблицæйы = Шаройы район |Æмбалады тип = |Æмбалад = |Сæргълæууæджы тип = |Сæргълæууæг = |Бындурæвæрд = |Раздæры нæмттæ = |Статус кæдæй = |Фыццаг кой = |Фæзуат = |Бæрзæнды тип = |Центры бæрзæнд = |Бæстыхъæд = |Официалон æвзаг = |Официалон æвзаг-ref = |Цæрджытæ = {{ Цæрджытæ | Бути (Чечня) | тс }} |Сфысты аз = {{ Цæрджытæ | Бути (Чечня) | г }} |Æнгомдзинад = |Агломераци = |Националон сконд = |Динон сконд = |Сахатон таг = +3 |DST = |Телефонон код = |Посты индекстæ = |Автомобилон код = |Идентификаторы тип = |Цифрон идентификатор = |ВикиКъæбицы категори = |Сайт = |Сайты æвзаг = }} '''Бу́ти''' ({{lang-ce|Бутӏи}}) у хъæу [[Цæцæн]]ы [[Шаройы район]]ы. == Фиппаинæгтæ == {{фиппаинæгтæ}} {{къæртт-Цæцæн}} {{Шаройы районы цæрæнрæттæ}} [[Категори:Шаройы районы цæрæнрæттæ]] povnjsl16qh7gopxtbmhv27y9y2j9p4 Хуызæг:Ref-bn 10 83377 594552 2026-05-02T14:30:21Z Taamu 795 Ног фарс, йæ код райдайы афтæ: «{{ref-lang|бенг.|бенгайлаг|}}<noinclude> [[Категори:Википеди:Шаблонтæ:Æддæмæ æрвитæнтæ|bn]] </noinclude>» 594552 wikitext text/x-wiki {{ref-lang|бенг.|бенгайлаг|}}<noinclude> [[Категори:Википеди:Шаблонтæ:Æддæмæ æрвитæнтæ|bn]] </noinclude> n2kenvkwutftew0cfpllwewiqdfsplq Хуызæг:Potd/2026-05-08 10 83378 594564 2026-05-02T18:08:23Z Ymblanter 6212 Ног фарс, йæ код райдайы афтæ: «Hoverfly May 2008-8.jpg» 594564 wikitext text/x-wiki Hoverfly May 2008-8.jpg m43prte9esign7e8fbhy2vv45zlxui3 Хуызæг:Potd/2026-05-08 (os) 10 83379 594565 2026-05-02T18:08:54Z Ymblanter 6212 Ног фарс, йæ код райдайы афтæ: «Муха-журчалка Episyrphus balteatus в полёте» 594565 wikitext text/x-wiki Муха-журчалка Episyrphus balteatus в полёте 71xfxg7dn1hoyzvzb8utinqpsv80pjg