Википеди
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]]</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 = ', ',
conjunction = ' æмæ ',
},
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 = ', ',
},
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 = ' ',
conjunction = ' ',
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 = ', ',
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 = ' кæнæ ',
},
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="менее чем"><</span> ',
Q54418095 = '<span style="border-bottom: 1px dotted; cursor: help;" title="более чем">></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:{{{Статус|Цæрæнран}}}}}|Сахарæнгæс посёлок|Сахарæнгæс посёлок=Сахарæнгæс посёлок кæдæй|{{ucfirst:{{{Статус|Цæрæнран}}}}} кæдæй}}
|текст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={{{Цæрджытæ|}}} {{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:{{{Æнгомад|}}}|{{{Æнгомад}}} ад./км²}}
|метка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>}} <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:{{{Статус|Цæрæнран}}}}}|Сахарæнгæс посёлок|Сахарæнгæс посёлок=Сахарæнгæс посёлок кæдæй|{{ucfirst:{{{Статус|Цæрæнран}}}}} кæдæй}}
|текст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={{{Цæрджытæ|}}} {{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:{{{Æнгомад|}}}|{{{Æнгомад}}} ад./км²}}
|метка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>}} <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:{{{Статус|Цæрæнран}}}}}|Сахарæнгæс посёлок|Сахарæнгæс посёлок=Сахарæнгæс посёлок кæдæй|{{ucfirst:{{{Статус|Цæрæнран}}}}} кæдæй}}
|текст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={{{Цæрджытæ|}}} {{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:{{{Æнгомад|}}}|{{{Æнгомад}}} ад./км²}}
|метка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>}} <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:{{{Статус|Цæрæнран}}}}}|Сахарæнгæс посёлок|Сахарæнгæс посёлок=Сахарæнгæс посёлок кæдæй|{{ucfirst:{{{Статус|Цæрæнран}}}}} кæдæй}}
|текст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={{{Цæрджытæ|}}} {{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:{{{Æнгомад|}}}|{{{Æнгомад}}} ад./км²}}
|метка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>}} <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:{{{Статус|Цæрæнран}}}}}|Сахарæнгæс посёлок|Сахарæнгæс посёлок=Сахарæнгæс посёлок кæдæй|{{ucfirst:{{{Статус|Цæрæнран}}}}} кæдæй}}
|текст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={{{Цæрджытæ|}}} {{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:{{{Æнгомад|}}}|{{{Æнгомад}}} ад./км²}}
|метка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>}} <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:{{{Статус|Цæрæнран}}}}}|Сахарæнгæс посёлок|Сахарæнгæс посёлок=Сахарæнгæс посёлок кæдæй|{{ucfirst:{{{Статус|Цæрæнран}}}}} кæдæй}}
|текст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={{{Цæрджытæ|}}} {{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:{{{Æнгомад|}}}|{{{Æнгомад}}} ад./км²}}
|метка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>}} <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