Вікіпедія ruewiki https://rue.wikipedia.org/wiki/%D0%93%D0%BE%D0%BB%D0%BE%D0%B2%D0%BD%D0%B0_%D1%81%D1%82%D0%BE%D1%80%D1%96%D0%BD%D0%BA%D0%B0 MediaWiki 1.47.0-wmf.19 first-letter Медіа Шпеціална Діскузія Хоснователь Діскузія з хоснователём Вікіпедія Діскузія ку Вікіпедії Файл Діскузія ку файлу MediaWiki Діскузія ку MediaWiki Шаблона Діскузія ку шаблонї Поміч Діскузія ку помочі Катеґорія Діскузія ку катеґорії TimedText TimedText talk Модуль Обговорення модуля Подія Обговорення події Няґів 0 2620 169547 168992 2026-09-13T22:40:52Z Flipdot 23893 169547 wikitext text/x-wiki {{Не поплетьте|Добрянске (Закарпатска область)|за=село на Словеньску}} {{Діалект|Пряшівскый діалект русиньского языка|пряшівскым діалектом|пряшівскый}} {{Локалита |статус = [[Село]] [[Словакия|Словакии]] |руська назва = Няґів (Нягов) |оригинална назва = {{ref-sk}} Ňagov |застава = Nagov-medzilaborce-flag.svg |опис заставы = |ширина заставы = 120 |герб = <!-- назва файла, нп.: Herb.jpg --> |опис герба = <!-- появить ся над фотков --> |ширина герба = <!-- в пикселах, нп.: 100 --> |вид крайны = [[Держава]]<!--2.гарадича администрации --> |крайна = Словакия |lat_dir = N |lat_deg =49 |lat_min =15 |lat_sec =13 <!-- землеписна ширка--> |lon_dir = E |lon_deg =21 |lon_min =56 |lon_sec =14 <!-- землеписна довжка--> |CoordAddon = |CoordScale = 300000 <!-- мапы укажуть ся в маштабѣ (скалѣ) 3 км/цм --> |размер карты страны = 200 <!-- 0 затлумить выдачу мапы под рамов --> |давны назвы = |вид региона = Регион |регион = [[Земплин]] |вид района = [[Край (Словакия)|Край]] |район = [[Пряшовскый край|Пряшовскый]] |вид общины = Окрес |община = [[Окрес Міджілабірцї|Меджилаборце]] |площа = 9,64<ref name="ІС">Іванна Стракошова.</ref> |вид высоты = Надморска вышка <!-- або: Найвысша точка, Высота центра …--> |высота = 355<!-- в метрах --><ref name="Oficiál">Oficiálna stránka</ref> |население = 390<ref>{{Cite web |url= http://datacube.statistics.sk/#!/view/sk/VBD_DEM/om7101rr/v_om7101rr_00_00_00_sk |title= Počet obyvateľov podľa pohlavia - obce (ročne) |date= 2022-03-31 |publisher= Bratislava: Štatistický úrad SR |accessdate= 2023-01-31}}{{ref-sk}}</ref> |год переписи = 2021 |часовый пояс = +1 |глава= Vladimír Roháč |вид главы= Староста |DST = перевод годинкы <!—пусто значить, же час не переводять --> |телефонный код = +421-57 |почтовый индекс = 068 01 (pošta Medzilaborce) |вид идентификатора = ŠÚJ |цифровой идентификатор = 520519 |категория в Commons = Ňagov |сайт = http://www.nagov.sk |язык сайта = словац. }} [[File:Ňagov (kostol) 1.jpg|thumb|262px|{{center|Грекокатолицка церква Успіня пресвятой Богородицї}}]] '''Ня́ґів''' ({{lang-sk|Ňagov}})&nbsp;— [[село]] на [[Словеньско|Словеньску]] в [[окрес Меджілабірцї|окресї Меджілабірцї]]. Лежыть в оддалїню 5&nbsp;км од [[Меджілабірцї|Меджілаборцёх]] и мать статус русиньского села.<ref name="Oficiál"/> == Ґеоґрафія == Село ся находить в Низкых Бескидах в горскім масіві Лабірьска Верьховина, в долинї Няґівского потока в басейнї рїкы [[Лаборець]], прямо за граніцями Охраненой краєвой области Выходны Карпаты, недалеко од штатной граніцї з [[Польско|Польском]]в. Центер села лежыть в надморскій вышцї 374&nbsp;м&nbsp;н.&nbsp;м. і од Меджілабірцїв є оддаленый на&nbsp;5&nbsp;км. Сусїднї села суть [[Меджілабірцї]] (окресы [[Окрес Меджілабірцї|Меджілабірцї]] і Выдрань) на северозападї і северї, [[Полата]] на северовыходї і выходї, [[Чабалівцї]] на юговыходї і [[Красный Брід]] на югу, югозападї і западї. == Історія == Первый письмовый споминок ся датує роком&nbsp;1543, в документах родины Друґетів, і втогды належало Гуменьскому панству; іщі є спомянуто в&nbsp;1557.&nbsp;роцї. Селяне ся занимали земледїлством, скотарством, роботами в лїсї, фурманков. В&nbsp;роцї&nbsp;1793 высвячена барокова церква. Перед заложіням самостатной [[Чеськословеньско|Чехословакії]] в&nbsp;роцї&nbsp;1918 Няґів быв частёв Земпліньской жупы в рамках [[Мадярске кральовство|Мадярьского кралёвства]]. В&nbsp;роцї&nbsp;1935 была выставлена закладна школа, што фунґовала до&nbsp;року&nbsp;1992, коли скончила свою функцію через недостаток дїтей. В роках 1939–1944 Няґів быв частёв Словацькой републікы. Дня 29.&nbsp;октобра 1944 Червена армада вытїснила Вермахт з Няґова, і село знову стало частёв Чехословакії.<ref name="ІС" /> Дале зостають в селї бібліотека, културный дім, фолклорна ґрупа „Заруба“.<ref name="ІС" /> == Обывательство == {{SK|pop}} {| class="wikitable" |+Обывательство подля народности (2011):<ref>[https://web.archive.org/web/20201008015433/https://slovak.statistics.sk/wps/wcm/connect/9c5ad996-02f4-4c1f-b33c-5baba2af317f/Tab_2_Obyvatelstvo_trvalo_byvajuce_v_obciach_SR_podla_narodnosti_SODB_2011.pdf?MOD=AJPERES&CVID=knLIczO&CVID=knLIczO Народностне зложіня обывательства подля списованя людей з 2011 р.] (по словеньскы). Штатістічный уряд Словеньской републікы. Одказ перевіреный 2020-08-26.</ref> !Народность !чол. !% |- |Русины |245 |56,2 |- |Словаци |157 |36,0 |- |Ромы |9 |2,1 |- |Українцї |1 |0,2 |- |''Остатнї'' |1 |0,2 |- |''Нестановлены'' |23 |5,3 |- |''Цїлково'' |436 | |} [[Русиньскый язык]] за материньскый означіли 348&nbsp;жытелїв (79,8%).<ref>[https://web.archive.org/web/20201026101340/https://slovak.statistics.sk/wps/wcm/connect/e285abec-6b1c-46ea-93de-0507fc844183/Tab_5_Obyv_trvalo_byvajuce_v_obciach_SR_podla_materinskeho_jazyka_SODB_2011.pdf?MOD=AJPERES&CVID=kKC5u9T&CVID=kKC5u9T Материньскый язык обывательства подля списованя людей з 2011 р.] (по словеньскы). Штатістічный уряд Словеньской републікы. Одказ перевіреный 2020-08-26.</ref> == Вызначны родаци == * [[Василь Караман]] (1903–1961), русиньскый політік [[Русофил|русофільской]] орьєнтації.<ref name="ІС"/> * [[Михайло Кудзей]] (1923–1973), сполоченьскый дїятель.<ref name="ІС"/> == Жрїдла == * Іванна Стракошова: Няґів – Ňagov //{{КСРУ}} С.&nbsp;454. == Одказы == * {{Cite web |url=http://www.nagov.sk |title=''Oficiálna stránka'' |accessdate=2023-01-31 }}{{ref-sk}} == Референції == {{reflist}} {{Окрес Міджілабірцї}}{{Русиньскы села на Словеньску}} [[Катеґорія:Населены пункты Словакии]] p3mc1iaj32jppnrxskbfeitimcqhd9j 169549 169547 2026-09-13T22:42:42Z Flipdot 23893 169549 wikitext text/x-wiki {{Не поплетьте|текст=Няґовом у Закарпатьскій области, котре ся теперь кличе [[Добряньске|Добрянске (Закарпатска область)]]}} {{Діалект|Пряшівскый діалект русиньского языка|пряшівскым діалектом|пряшівскый}} {{Локалита |статус = [[Село]] [[Словакия|Словакии]] |руська назва = Няґів (Нягов) |оригинална назва = {{ref-sk}} Ňagov |застава = Nagov-medzilaborce-flag.svg |опис заставы = |ширина заставы = 120 |герб = <!-- назва файла, нп.: Herb.jpg --> |опис герба = <!-- появить ся над фотков --> |ширина герба = <!-- в пикселах, нп.: 100 --> |вид крайны = [[Держава]]<!--2.гарадича администрации --> |крайна = Словакия |lat_dir = N |lat_deg =49 |lat_min =15 |lat_sec =13 <!-- землеписна ширка--> |lon_dir = E |lon_deg =21 |lon_min =56 |lon_sec =14 <!-- землеписна довжка--> |CoordAddon = |CoordScale = 300000 <!-- мапы укажуть ся в маштабѣ (скалѣ) 3 км/цм --> |размер карты страны = 200 <!-- 0 затлумить выдачу мапы под рамов --> |давны назвы = |вид региона = Регион |регион = [[Земплин]] |вид района = [[Край (Словакия)|Край]] |район = [[Пряшовскый край|Пряшовскый]] |вид общины = Окрес |община = [[Окрес Міджілабірцї|Меджилаборце]] |площа = 9,64<ref name="ІС">Іванна Стракошова.</ref> |вид высоты = Надморска вышка <!-- або: Найвысша точка, Высота центра …--> |высота = 355<!-- в метрах --><ref name="Oficiál">Oficiálna stránka</ref> |население = 390<ref>{{Cite web |url= http://datacube.statistics.sk/#!/view/sk/VBD_DEM/om7101rr/v_om7101rr_00_00_00_sk |title= Počet obyvateľov podľa pohlavia - obce (ročne) |date= 2022-03-31 |publisher= Bratislava: Štatistický úrad SR |accessdate= 2023-01-31}}{{ref-sk}}</ref> |год переписи = 2021 |часовый пояс = +1 |глава= Vladimír Roháč |вид главы= Староста |DST = перевод годинкы <!—пусто значить, же час не переводять --> |телефонный код = +421-57 |почтовый индекс = 068 01 (pošta Medzilaborce) |вид идентификатора = ŠÚJ |цифровой идентификатор = 520519 |категория в Commons = Ňagov |сайт = http://www.nagov.sk |язык сайта = словац. }} [[File:Ňagov (kostol) 1.jpg|thumb|262px|{{center|Грекокатолицка церква Успіня пресвятой Богородицї}}]] '''Ня́ґів''' ({{lang-sk|Ňagov}})&nbsp;— [[село]] на [[Словеньско|Словеньску]] в [[окрес Меджілабірцї|окресї Меджілабірцї]]. Лежыть в оддалїню 5&nbsp;км од [[Меджілабірцї|Меджілаборцёх]] и мать статус русиньского села.<ref name="Oficiál"/> == Ґеоґрафія == Село ся находить в Низкых Бескидах в горскім масіві Лабірьска Верьховина, в долинї Няґівского потока в басейнї рїкы [[Лаборець]], прямо за граніцями Охраненой краєвой области Выходны Карпаты, недалеко од штатной граніцї з [[Польско|Польском]]в. Центер села лежыть в надморскій вышцї 374&nbsp;м&nbsp;н.&nbsp;м. і од Меджілабірцїв є оддаленый на&nbsp;5&nbsp;км. Сусїднї села суть [[Меджілабірцї]] (окресы [[Окрес Меджілабірцї|Меджілабірцї]] і Выдрань) на северозападї і северї, [[Полата]] на северовыходї і выходї, [[Чабалівцї]] на юговыходї і [[Красный Брід]] на югу, югозападї і западї. == Історія == Первый письмовый споминок ся датує роком&nbsp;1543, в документах родины Друґетів, і втогды належало Гуменьскому панству; іщі є спомянуто в&nbsp;1557.&nbsp;роцї. Селяне ся занимали земледїлством, скотарством, роботами в лїсї, фурманков. В&nbsp;роцї&nbsp;1793 высвячена барокова церква. Перед заложіням самостатной [[Чеськословеньско|Чехословакії]] в&nbsp;роцї&nbsp;1918 Няґів быв частёв Земпліньской жупы в рамках [[Мадярске кральовство|Мадярьского кралёвства]]. В&nbsp;роцї&nbsp;1935 была выставлена закладна школа, што фунґовала до&nbsp;року&nbsp;1992, коли скончила свою функцію через недостаток дїтей. В роках 1939–1944 Няґів быв частёв Словацькой републікы. Дня 29.&nbsp;октобра 1944 Червена армада вытїснила Вермахт з Няґова, і село знову стало частёв Чехословакії.<ref name="ІС" /> Дале зостають в селї бібліотека, културный дім, фолклорна ґрупа „Заруба“.<ref name="ІС" /> == Обывательство == {{SK|pop}} {| class="wikitable" |+Обывательство подля народности (2011):<ref>[https://web.archive.org/web/20201008015433/https://slovak.statistics.sk/wps/wcm/connect/9c5ad996-02f4-4c1f-b33c-5baba2af317f/Tab_2_Obyvatelstvo_trvalo_byvajuce_v_obciach_SR_podla_narodnosti_SODB_2011.pdf?MOD=AJPERES&CVID=knLIczO&CVID=knLIczO Народностне зложіня обывательства подля списованя людей з 2011 р.] (по словеньскы). Штатістічный уряд Словеньской републікы. Одказ перевіреный 2020-08-26.</ref> !Народность !чол. !% |- |Русины |245 |56,2 |- |Словаци |157 |36,0 |- |Ромы |9 |2,1 |- |Українцї |1 |0,2 |- |''Остатнї'' |1 |0,2 |- |''Нестановлены'' |23 |5,3 |- |''Цїлково'' |436 | |} [[Русиньскый язык]] за материньскый означіли 348&nbsp;жытелїв (79,8%).<ref>[https://web.archive.org/web/20201026101340/https://slovak.statistics.sk/wps/wcm/connect/e285abec-6b1c-46ea-93de-0507fc844183/Tab_5_Obyv_trvalo_byvajuce_v_obciach_SR_podla_materinskeho_jazyka_SODB_2011.pdf?MOD=AJPERES&CVID=kKC5u9T&CVID=kKC5u9T Материньскый язык обывательства подля списованя людей з 2011 р.] (по словеньскы). Штатістічный уряд Словеньской републікы. Одказ перевіреный 2020-08-26.</ref> == Вызначны родаци == * [[Василь Караман]] (1903–1961), русиньскый політік [[Русофил|русофільской]] орьєнтації.<ref name="ІС"/> * [[Михайло Кудзей]] (1923–1973), сполоченьскый дїятель.<ref name="ІС"/> == Жрїдла == * Іванна Стракошова: Няґів – Ňagov //{{КСРУ}} С.&nbsp;454. == Одказы == * {{Cite web |url=http://www.nagov.sk |title=''Oficiálna stránka'' |accessdate=2023-01-31 }}{{ref-sk}} == Референції == {{reflist}} {{Окрес Міджілабірцї}}{{Русиньскы села на Словеньску}} [[Катеґорія:Населены пункты Словакии]] ppsw80r21jrvah9ks109kwi6pi2joju 169550 169549 2026-09-13T22:43:00Z Flipdot 23893 169550 wikitext text/x-wiki {{Не поплетьте|текст=Няґовом у Закарпатьскій области, котре ся теперь кличе [[Добрянске (Закарпатска область)|Добряньске]]}} {{Діалект|Пряшівскый діалект русиньского языка|пряшівскым діалектом|пряшівскый}} {{Локалита |статус = [[Село]] [[Словакия|Словакии]] |руська назва = Няґів (Нягов) |оригинална назва = {{ref-sk}} Ňagov |застава = Nagov-medzilaborce-flag.svg |опис заставы = |ширина заставы = 120 |герб = <!-- назва файла, нп.: Herb.jpg --> |опис герба = <!-- появить ся над фотков --> |ширина герба = <!-- в пикселах, нп.: 100 --> |вид крайны = [[Держава]]<!--2.гарадича администрации --> |крайна = Словакия |lat_dir = N |lat_deg =49 |lat_min =15 |lat_sec =13 <!-- землеписна ширка--> |lon_dir = E |lon_deg =21 |lon_min =56 |lon_sec =14 <!-- землеписна довжка--> |CoordAddon = |CoordScale = 300000 <!-- мапы укажуть ся в маштабѣ (скалѣ) 3 км/цм --> |размер карты страны = 200 <!-- 0 затлумить выдачу мапы под рамов --> |давны назвы = |вид региона = Регион |регион = [[Земплин]] |вид района = [[Край (Словакия)|Край]] |район = [[Пряшовскый край|Пряшовскый]] |вид общины = Окрес |община = [[Окрес Міджілабірцї|Меджилаборце]] |площа = 9,64<ref name="ІС">Іванна Стракошова.</ref> |вид высоты = Надморска вышка <!-- або: Найвысша точка, Высота центра …--> |высота = 355<!-- в метрах --><ref name="Oficiál">Oficiálna stránka</ref> |население = 390<ref>{{Cite web |url= http://datacube.statistics.sk/#!/view/sk/VBD_DEM/om7101rr/v_om7101rr_00_00_00_sk |title= Počet obyvateľov podľa pohlavia - obce (ročne) |date= 2022-03-31 |publisher= Bratislava: Štatistický úrad SR |accessdate= 2023-01-31}}{{ref-sk}}</ref> |год переписи = 2021 |часовый пояс = +1 |глава= Vladimír Roháč |вид главы= Староста |DST = перевод годинкы <!—пусто значить, же час не переводять --> |телефонный код = +421-57 |почтовый индекс = 068 01 (pošta Medzilaborce) |вид идентификатора = ŠÚJ |цифровой идентификатор = 520519 |категория в Commons = Ňagov |сайт = http://www.nagov.sk |язык сайта = словац. }} [[File:Ňagov (kostol) 1.jpg|thumb|262px|{{center|Грекокатолицка церква Успіня пресвятой Богородицї}}]] '''Ня́ґів''' ({{lang-sk|Ňagov}})&nbsp;— [[село]] на [[Словеньско|Словеньску]] в [[окрес Меджілабірцї|окресї Меджілабірцї]]. Лежыть в оддалїню 5&nbsp;км од [[Меджілабірцї|Меджілаборцёх]] и мать статус русиньского села.<ref name="Oficiál"/> == Ґеоґрафія == Село ся находить в Низкых Бескидах в горскім масіві Лабірьска Верьховина, в долинї Няґівского потока в басейнї рїкы [[Лаборець]], прямо за граніцями Охраненой краєвой области Выходны Карпаты, недалеко од штатной граніцї з [[Польско|Польском]]в. Центер села лежыть в надморскій вышцї 374&nbsp;м&nbsp;н.&nbsp;м. і од Меджілабірцїв є оддаленый на&nbsp;5&nbsp;км. Сусїднї села суть [[Меджілабірцї]] (окресы [[Окрес Меджілабірцї|Меджілабірцї]] і Выдрань) на северозападї і северї, [[Полата]] на северовыходї і выходї, [[Чабалівцї]] на юговыходї і [[Красный Брід]] на югу, югозападї і западї. == Історія == Первый письмовый споминок ся датує роком&nbsp;1543, в документах родины Друґетів, і втогды належало Гуменьскому панству; іщі є спомянуто в&nbsp;1557.&nbsp;роцї. Селяне ся занимали земледїлством, скотарством, роботами в лїсї, фурманков. В&nbsp;роцї&nbsp;1793 высвячена барокова церква. Перед заложіням самостатной [[Чеськословеньско|Чехословакії]] в&nbsp;роцї&nbsp;1918 Няґів быв частёв Земпліньской жупы в рамках [[Мадярске кральовство|Мадярьского кралёвства]]. В&nbsp;роцї&nbsp;1935 была выставлена закладна школа, што фунґовала до&nbsp;року&nbsp;1992, коли скончила свою функцію через недостаток дїтей. В роках 1939–1944 Няґів быв частёв Словацькой републікы. Дня 29.&nbsp;октобра 1944 Червена армада вытїснила Вермахт з Няґова, і село знову стало частёв Чехословакії.<ref name="ІС" /> Дале зостають в селї бібліотека, културный дім, фолклорна ґрупа „Заруба“.<ref name="ІС" /> == Обывательство == {{SK|pop}} {| class="wikitable" |+Обывательство подля народности (2011):<ref>[https://web.archive.org/web/20201008015433/https://slovak.statistics.sk/wps/wcm/connect/9c5ad996-02f4-4c1f-b33c-5baba2af317f/Tab_2_Obyvatelstvo_trvalo_byvajuce_v_obciach_SR_podla_narodnosti_SODB_2011.pdf?MOD=AJPERES&CVID=knLIczO&CVID=knLIczO Народностне зложіня обывательства подля списованя людей з 2011 р.] (по словеньскы). Штатістічный уряд Словеньской републікы. Одказ перевіреный 2020-08-26.</ref> !Народность !чол. !% |- |Русины |245 |56,2 |- |Словаци |157 |36,0 |- |Ромы |9 |2,1 |- |Українцї |1 |0,2 |- |''Остатнї'' |1 |0,2 |- |''Нестановлены'' |23 |5,3 |- |''Цїлково'' |436 | |} [[Русиньскый язык]] за материньскый означіли 348&nbsp;жытелїв (79,8%).<ref>[https://web.archive.org/web/20201026101340/https://slovak.statistics.sk/wps/wcm/connect/e285abec-6b1c-46ea-93de-0507fc844183/Tab_5_Obyv_trvalo_byvajuce_v_obciach_SR_podla_materinskeho_jazyka_SODB_2011.pdf?MOD=AJPERES&CVID=kKC5u9T&CVID=kKC5u9T Материньскый язык обывательства подля списованя людей з 2011 р.] (по словеньскы). Штатістічный уряд Словеньской републікы. Одказ перевіреный 2020-08-26.</ref> == Вызначны родаци == * [[Василь Караман]] (1903–1961), русиньскый політік [[Русофил|русофільской]] орьєнтації.<ref name="ІС"/> * [[Михайло Кудзей]] (1923–1973), сполоченьскый дїятель.<ref name="ІС"/> == Жрїдла == * Іванна Стракошова: Няґів – Ňagov //{{КСРУ}} С.&nbsp;454. == Одказы == * {{Cite web |url=http://www.nagov.sk |title=''Oficiálna stránka'' |accessdate=2023-01-31 }}{{ref-sk}} == Референції == {{reflist}} {{Окрес Міджілабірцї}}{{Русиньскы села на Словеньску}} [[Катеґорія:Населены пункты Словакии]] rccta7nglznz9li4tsvs7a3z8ttjid6 Ріхвалд 0 3534 169557 160330 2026-09-13T23:09:03Z Flipdot 23893 169557 wikitext text/x-wiki {{Не поплетьте|текст=[[Рыхвалд|Рыхвалдом]], селом у Польску}} {{Інфобокс Словеньска обец |URL знаку = Erb chýba.jpg |URL пологы = Mapa nie je.png |Образок = Richvald Village 2 (Slovakia).jpg |Край = [[Пряшівскый край|Пряшівскый]] |Окрес = [[Окрес Бардеёв|Бардеёв]] |Реґіон = [[Шаріш]] |Северна шырка = 49° 17' |Выходна довжка = 21° 11' |Надморьска вышка = 375 |Розлога = 21,88 |Чісло жытелїв = 983 |Статус ку = 31.12.2004 |Густота жытельства = 45 |Перша писемна змінка = [[1325]] |Код = 519766 |ЕЧВ = BJ |ПСЧ = 085 01 (пошта [[Бардеёв]] 1) |Передвольба = 0 54 |Адреса = Richvald 179 |Website = |Імейл = |Телефон = |Факс = |Староста = Ing. Анна Фольтова<ref>{{Список старостів і пріматорів 2010|Ing. Анна Фольтова}}</ref> |Політічна партія = [[СМЕР – соціална демокрація|СМЕР]], [[HZD]] |}} '''Ріхвалд''' (по {{язык+sk|Richvald}} ) є [[село]] в [[окрес Бардеёв|окресї Бардеёв]] в [[Пряшівскый край|Пряшівскім краю]] на северовыходї [[Словакія|Словеньска]]. == Історія == == Ґеоґрафія == == Обывательство == {{SK|pop}} == Етніціта == == Реліґія == == Памяткы == == Вызначны родаци і жытелї == == Референції == <references/> {{Окрес Бардеёв}} {{Стыржень}} o13q6ah9o2k0tph7wohxshufkbza4gz Закарпатска область 0 3725 169545 155075 2026-09-13T22:39:38Z Flipdot 23893 169545 wikitext text/x-wiki {{Регион |статус=[[Область]] [[Україна|Украины]] |регион=Закарпатска область |регион оригинал={{lang-uk|Закарпатська область}} |образчик=[[Файл:Coat of arms of Zakarpattia Oblast.svg|80px]] |подпис=[[Герб Закарпатської области|Герб Закарпатськой области]] |розлога=12 777 км<sup>2</sup> |обывательство=1 244 476 особ (2022)<ref>{{Cite web |title= Чисельність наявного населення України на 1 січня 2022 / Number of Present Population of Ukraine, as of January 1, 2022 (PDF) |location= Київ / Kyiv 2022 |publisher= Державна служба статистики України / State Statistics Service of Ukraine |url= https://ukrstat.gov.ua/druk/publicat/kat_u/2022/zb/05/zb_Сhuselnist.pdf |accessdate= 2022-12-14}}{{ref-uk}}{{ref-en}}</ref> |центер=[[Ужгород]]<br/>{{Coord|48.62|||N|22.3|||E|format=dms}} |зложѣня=11 мѣст, 6 районох |язык=[[Україньскый язык|україньскый]]<ref>{{Cite web |url=https://zakon.rada.gov.ua/laws/show/2704-19 |title=Про забезпечення функціону... {{!}} від 25.04.2019 № 2704-VIII<!-- Заголовок добавлен ботом --> |accessdate=2022-12-14 |archivedate=2020-05-02 |archiveurl=https://web.archive.org/web/20200502182619/https://zakon.rada.gov.ua/laws/show/2704-19 |deadlink=no }}</ref>, [[Мадярскый язык|мадярскый]]<ref>Переважно в Ужгородском и Береговском районах.</ref> |пост ведучого=Губернатор<ref>Официална назва поста: Голова Обласної Державної Адміністрації (ОДА) ''укр.''</ref> |имя ведучого=Виктор Ф. Микита<ref>{{Cite web |title=Про призначення В.Микити головою Закарпатської обласної державної адміністрації|url= https://www.president.gov.ua/documents/6352021-40877}}</ref> |интернет-сайт=http://www.carpathia.gov.ua/ ''укр.'' |категория склада=Zakarpattia Oblast }} {{Не поплетьте|Карпатьска Русь}} [[File:Zakarpattia Oblast 2020 subdivisions.jpg|thumb|250px|{{center|Районы Закарпатской области ([[2020]]—)}}]] [[File:Закарпатская область.png|257px|thumb|{{center|Карта Закарпатской области}}]] [[File:ZakarpatOblOutlined.png|thumb|250px|{{center|Районы Закарпатской области<br>([[1946]]–[[2020]])}}]] '''Закарпатска область''' ({{lang-uk|Закарпатська область}}) — область на крайном югозападѣ [[Україна|Украины]], в верхном току [[Ріка|рѣкы]] [[Тиса]] з центром в [[Ужгород|Ужгородѣ]]. На [[сѣвер]]ѣ граничить з [[Львовска область|Львовсков]], на [[выход]]ѣ з [[Ивано-Франковска область|Ивано-Франковсков областями]] [[Україна|Украины]]. Область уникатна своев пологов: мать границѣ з четырма сосѣдныма державами: [[Польско|Польща]], [[Словеньско|Словакия]], [[Мадярьско|Мадярщина]] и [[Румуньско|Румыния]]. Мать розлогу 12 777 км² и 1 244 476 жительох ([[2022]]). == Створѣня области == До октобра 1944 территория теперѣшной области выше 1000 роков была частьов [[Мадярске кральовство|Мадярщины]], окрем рокох 1919—1939, коли была частьов [[Чеськословеньско|Чехословакии]]. По приходѣ Червеной Армады, 26. октобра 1944 Первый зъѣзд Народных комитетов Закарпатской Украины в [[Мукачово|Мукачовѣ]] выголосив републику [[Закарпатска Украина]] и просив найвысшы органы [[УССР]] и [[СССР]] прияти ю в состав [[УССР]].<ref>Тронько П., с. 60</ref> Тота просьба была удоволена. Народна Рада Закарпатской Украины докончила величезну роботу организации житя новоствореной републики. Але република мала куртый живот. 22. януара 1946 указом Президиума Найвысшой Рады [[СССР]] она была перетворена в Закарпатску область в составѣ Украины з двома городами и 13 округами, а 25. януара в Закарпатской области были введены законы [[УССР]].<ref>Пушкаш А., с.437</ref> {{Цитат 3|О створѣню републикы Закарпатска Украина|На съезде делегатов народных комитетов в Мукачеве 26 ноября 1944 года было провозглашено государственное образование Закарпатская Украина с единствен­ным заданием — осуществить воссоединение края с Советской Украиной.| А. Пушкаш. Цивилизация или варварство<ref>Пушкаш А., с. 430</ref>|60%}} == Административне дѣлѣня == [[Файл:Flag of Zakarpattia Oblast.svg|thumb|250px|Застава области, прията 27.02.2009]] Область административно дѣлить ся на 13 районов и два городы областного подряджѣня: [[Ужгород]] и [[Мукачово]]. Районы Закарпатской области (1946–2020): * [[Берегівскый район|Береговскый район]] * [[Великоберезняньскый район|Великоберезнянскый район]] * [[Виноградівскый район|Виноградовскый район]] * [[Воловецкый район]] * [[Иршавскый район]] * [[Межгорскый район]] * [[Мукачівскый район|Мукачовскый район]] * [[Перечинскый район]] * [[Раховскый район]] * [[Свалявскый район]] * [[Тячовскый район]] * [[Ужгородскый район]] * [[Хустскый район]] Административна реформа 2020 зоставила 6 районы згруба путьом инкорпорации сосѣдных: * [[Берегівскый район|Береговскый район]] * [[Мукачовськый район|Мукачовскый район]] * [[Раховскый район]] * [[Тячовскый район]] * [[Ужгородскый район]] * [[Хустськый район|Хустскый район]] == Застава области == Архивны документы свѣдчать, же много раз чехословацкы власти пробовали въедно з мѣстными политиками Подкарпатской Руси створити прапор края, удоволяючый розличны политичны ориентации. Але вшиткы пробы натыкали ся на нерѣшимость вопроса: якый прапор мать быти в основѣ: славянскый триколор або украинскый сино-жовтый.<ref>Філіппов О., с. 60</ref> Року 2006 быв выголошеный конкурс на проект заставы, але и тот не дав резултат. Наконець, под тиском политичных обстоянь, перед грядущым визитом в область Президента В. Ющенка, Областна Рада 27.02.2009 прияла нову заставу области, яка символизуе входжѣня области в Украину.<ref>Флаг Закарпатской области</ref> == Обывательство == В [[Трианонскый мирный договор|дотрианонской]] добѣ найвекшы етничны групы обывательства были Русины/Украинцѣ, Мадяре, Румыны. По [[Трианонскый мирный договор|Трианонѣ]] поступно майже половка Мадярох выемигровала. Од року 1944 были вшыткы Русины без их згоды евидованы як Украинцѣ, так же не знати, што было едных, а што другых, а поствоенны совѣтскы репресии пережила лем третина Мадярох.<ref>Molnár József, Molnár D. István, с. 9.</ref> {| class="wikitable" |- ! rowspan="2" |Рок!! rowspan="2" |Обывательство !! colspan="2" |Русины/Украинцѣ !! colspan="2" |Мадяре !! colspan="2" |Иншы |- ! Число ! % ! Число ! % ! Число ! % |- align="right" | 1910 || 598&nbsp;863 || 331&nbsp;625 || 55,4 || 184&nbsp;287 || 30,8 || 82&nbsp;951 || 13,9 |- align="right" | 1921 || 612&nbsp;442 || 372&nbsp;523 || 60,8 || 111&nbsp;052 || 18,1 || 128&nbsp;867 || 21,0 |- align="right" | 1930 || 733&nbsp;956 || 447&nbsp;127 || 60,9 || 116&nbsp;548 || 15,9 || 170&nbsp;281 || 23,2 |- align="right" | 1941 || 854&nbsp;772 || 502&nbsp;329 || 58,8 || 233&nbsp;840 || 27,4 || 118&nbsp;603 || 13,9 |- align="right" | 1946 || 758&nbsp;700 || 624&nbsp;400 || 82,3 || 66&nbsp;000 || 8,7 || 68&nbsp;300 || 9,0 |- align="right" | 2001 || 1&nbsp;254&nbsp;614 || 1&nbsp;010&nbsp;127 || 80,5 || 151&nbsp;516 || 12,1 || 92&nbsp;971 || 7,4 |} == Жерела и одказы == * Пушкаш А. Цивилизация или варварство. Закарпатье 1918–1945. Институт славяноведения РАН. М. Изд. «Европа», 2006. * Тронько П. и др. (ред.). Історія міст і сіл України. Закарпатська область. К. 1969. * Філіппов О. Питання створення прапора Підкарпатської Русі. - Ужгород: "Ліра", 2008. * [https://geraldika.ru/symbols/23130 Флаг Закарпатской области] * [http://konyvbirodalom.at.ua/term_tud/Molnar_Jozsef_-_Karpatalja_nepessege.pdf Molnár József, Molnár D. István. Kárpátalja népessége és magyarsága a népszámlálási és népmozgalmi adatok tükrében. Beregszász, 2005] == См. тыж == * [[Карпатьска Русь|Карпатска Русь]] * [[Підкарпатьска Русь|Подкарпатска Русь]] * [[Карпатьска Україна|Карпатска Украина]] * [[Закарпатска Украина]] * [[Русиньскый язык|Русинскый язык]] == Референции == {{Reflist}} {{Области Украины}}{{Закарпатска область}} [[Катеґорія:Закарпатьска область]] [[Катеґорія:Области Україны]] [[Катеґорія:Підкарпатьска Русь]] 5iqvpcxzj4zzsxdt7l73waflf3as10g Рыхвалд 0 4492 169558 158152 2026-09-13T23:09:43Z Flipdot 23893 169558 wikitext text/x-wiki {{Не поплетьте|текст=[[Ріхвалд]]ом, селом на Словеньску}} {{НП}} '''Рыхвалд''' ({{lang-pl|Owczary}}) є [[село]] на юговыходї [[Польско|Польска]], котре было до [[акція Вісла|акції Вісла]] [[Лемкы|лемківске]]<ref>{{cite web |url=http://lemko.org/lih/lihchp23.html |title=Села в Польщи де до 1945 року пережывали Лемкы |publisher=lemko.org |accessdate=2011-09-01}}</ref>. == Референції == <references/> {{Стыржень}} [[Катеґорія:Лемківскы села в Польску]] [[Катеґорія:Малопольске воеводство]] fiyum62s7w34cm6cc4e5sa7rje19yhm Підкарпатьска Русь 0 5879 169553 163915 2026-09-13T22:45:28Z Flipdot 23893 169553 wikitext text/x-wiki {{Не поплетьте|текст=автономнов земльов і пізнїше независлым штатом [[Карпатьска Україна]]}} {{Регион |статус=Земля в складї [[Чеськословеньско|Чеськословеньска]]<br>Автономна земля у складї Чеськословеньска (од 1938) |регион=Підкарпатьска Русь |регион оригинал=<small>{{lang2|sk|cs|Podkarpatská Rus}}<small/> |образчик=[[Файл:Coat of arms of Rusyns in Slovakia.svg|125px]] |подпис=[[Герб русинів|Герб Підкарпатьской Руси]] |розлога= 12 097 км<sup>2</sup><!--<ref name="srgov"/>--> (1921) |обывательство= 592 044 (1921) |центер=[[Ужгород]],<br>з новембра 1938 — [[Хуст]] |зложѣня=12 окресів |язык=[[Чеськый язык|чеськый]], [[україньскый язык|україньскый]] ([[Русиньскый язык|русиньскый]]) |пост ведучого= |имя ведучого= |интернет-сайт= |категория склада=Podkarpatská Rus (1919-1938) }} [[File:Medium coat of arms of Czechoslovakia (1918-1938 and 1945-1961).svg|thumb|Середнїй ерб Чехословакії з полями Чеська (в центрї), Словакії, Русинії, Шлезії і Моравії (1920)]] [[Image:Czechoslovakia01.png|thumb|right|220px|{{center|Землї Чехословакії}}]] '''Підкарпа́тьска Русь'''<ref> Preclík, Vratislav. Masaryk a legie (Masaryk and legions), váz. kniha, 219 pages, first issue vydalo nakladatelství Paris Karviná, Žižkova 2379 (734 01 Karvina, Czech Republic) ve spolupráci s Masarykovým demokratickým hnutím (Masaryk Democratic Movement, Prague), 2019, {{ISBN| 978-80-87173-47-3}}, pages 35 – 53, 106 - 107, 111-112, 124–125, 128, 129, 132, 140–148, 184–199. </ref> або '''Руси́нія'''<ref>Вегеш М. М.</ref> ({{lang2|sk|cs|Podkarpatská Rus}}; до рока 1918 познавана як '''''[[Угорска Русь|Угорьска Русь]]''''') є назва, означуюча історичну теріторію, на котрій ся теперь находить днешня [[Україна|україньска]] [[Закарпатьска область]], з чісто історично документованого никаня є то означіня єдной зо штирёх самосправованых земель [[Чеськословеньско|Чеськословеньска]] в роках [[1919]]–[[1939]] і курто по скончіню [[Друга світова война|Другой світовой войны]] до 29.&nbsp;юна 1945, котрой теріторія мала дакус іншы граніцї (загорнёвала наприклад і днесь [[Словеньско|словеньске]] село [[Лїкаровцї]], а навспак не загорнёвала узку смугу земель на югозападї з містом [[Чоп]], яке было в тій добі частёв Словеньска). Єй головным містом быв [[Ужгород]]; в новембрі [[1938]] по [[Перша віденьска арбітраж|Першій віденьскій арбітражі]], котра причленила южны области, враховано [[Ужгород]]а і [[Мукачово|Мукачова]], населены передовшыткым Мадярами ку [[Мадярске кральовство|Мадярьскому кралёвству]], єй центром справованя стало місто [[Хуст]]. 30 децембра 1938 (платність од 1. 1. 1939) автономнов владов перейменована на [[Карпатьска Україна|Карпатьску Україну]] — як автономный край у складї „другой“ Чеськословеньской Републікы.<ref>Я. Рихлік: Підкарпатьска Русь в історії Чеськословеньска 1918-1946, Вішеград {{ISBN| 978-80-7429-556-0}}</ref> == Обывательство == В року 1930 мала Підкарпатьска Русь 725.357 тісяч жытелїв. == Штатны сімболы == Законом ч.&nbsp;252 з дня [[30. марца]] [[1920]] для Підкарпатской Руси (Русинії) установленый герб, якый одображав ся в общім державнім ербі [[Чеськословеньско|Чехословацкой републікы]], а тыж в президентьскім ербі. Окремой заставы про Русинію не было, прото ся хосновала єдина штатна застава.<ref>Філіппов, Олексій, с. 46.</ref> == Ґубернаторы == {|class="wikitable" |+ ! № ! Ґубернатор ! Рокы ґубернаторства ! Рокы жывота |- | 1 | [[Ґріґорій Жатковіч]] | 26. апріля 1920 — марец 1921 | 1886 — 1967 |- | 2 | [[Антоній Бескид]] | 14. децембра 1923 — 16. юна 1933 | 1855 — 1933 |- | | [[Антонин Розсыпал]] | 16. юна 1933 — 15 фебруар 1935 | 1866 — 1937 |- | 3 | [[Константин Грабарь]] | 15. фебруар 1935 — 9. октобер 1938 | 1877 — 1938 |- | 4 | [[Иван Парканий]] | 9. октобер 1938 — 4. новембер 1938 | 1896 — 1996 |} == См. тыж == * [[Генералный штатут про Подкарпатску Русь]] * [[Карпатьска Україна]] * [[Район]] == Жерела == * Pop, Ivan. Malé dejíny Rusínov. Vydalo Združenie inteligencie Rusínov Slovenska. Bratislava, 2011. {{ISBN| 978-80-970354-4-0}}. * Філіппов, Олексій. Таємниця герба Підкарпатської Русі. — Ужгород: Карпати, 2006. {{ISBN| 966-671-115-Х}}. * Вегеш М. М. [http://resource.history.org.ua/cgi-bin/eiu/history.exe?Z21ID=&I21DBN=EIU&P21DBN=EIU&S21STN=1&S21REF=10&S21FMT=eiu_all&C21COM=S&S21CNR=20&S21P01=0&S21P02=0&S21P03=TRN=&S21COLORTERMS=0&S21STR=Gen_statut Генеральний статут про організацію і адміністрацію Підкарпатської Русі 1919 // Енциклопедія історії України / редкол.: В. А. Смолій та ін. ; Інститут історії України НАН України. — К. : Наукова думка, 2004. — Т. 2] * Магочій, Павло Роберт. Формування національної самосвідомості: Підкарпатська Русь /1848–1948/. Поличка "Карпатського Краю" №3-6 (18). Ужгород. 1994. ISSN 0869–0782. Сс.&nbsp;118-119. == Референції == <references/> {{Переклад|cs|Podkarpatská Rus|7498543}} [[Катеґорія:Підкарпатьска Русь]] [[Катеґорія:Землї Чеськословеньска]] [[Катеґорія:Закарпатьска область]] [[Катеґорія:Русины]] [[Катеґорія:Штаты і теріторії, котры основаны 1919]] 177b1oh23wutw5tt2kz4bh6yc687j3s Великдень 0 6123 169554 156846 2026-09-13T22:46:43Z Flipdot 23893 169554 wikitext text/x-wiki {{Не поплетьте|текст=[[Паска|пасков]], пасхалным їдлом}} [[Файл:UkiePysanky2006.jpg|thumb|right|[[Писанкы]]]] [[Файл:Паска пасxa Закарпаття.jpg|альт=Паска з Підкарпатя, Пряшов|міні|[[Паска]] з [[Підкарпатя]]]] '''Вели́кдень'''&nbsp;— день, в якый [[Хрістіанство|хрістіане]] ославують [[Воскресїня]] [[Ісус Хрістос|Ісуса Хріста]], што ся стало на третїй день по ёго смерти, причім за день смерти ся бере день першый. Свято называють тыж '''Пасха''' або '''Паска'''. Є найважливішым [[хрістіанство|хрістіяньским]] святом, котре выказує радость з поводу перемогы Божого сына над [[Смерть|Смертёв]] тай вічным Забытём. У Воскресїню хрістіане видять потверджіня жывота по смерти, што є головным обсягом святкованя. == Датум святкованя<ref>[https://risu.ua/pashalniy-kalendar-na-2001-2050-rr_n33998 Пасхальний календар на 2001-2050 рр.]</ref> == {| class="wikitable floatright" style="margin: 0 0 1em 1em;" |- |+ Датум святкованя Великодня у 2000—2050 |- ! Рік !! ґрегоріаньскый кал. !! юліаньскый кал. |- ! 2000 | [[23. апріль]] || [[30. апріль]] |- ! 2001 |colspan=2 align=center| [[15. апріль]] |- ! 2002 | [[31. марец]] || [[5. май]] |- ! 2003 | [[20. апріль]] || [[27. апріль]] |- ! 2004 |colspan=2 align=center| [[11. апріль]] |- ! 2005 | [[27. марец]] || [[1. май]] |- ! 2006 | [[16. апріль]] || [[23. апріль]] |- ! 2007 |colspan=2 align=center| [[8. апріль]] |- ! 2008 | [[23. марец]] || [[27. марец]] |- ! 2009 | [[12. апріль]] || [[19. апріль]] |- ! 2010 |colspan=2 align=center| [[4. апріль]] |- ! 2011 |colspan=2 align=center| [[24. апріль]] |- ! 2012 | [[8. апріль]] || [[15. апріль]] |- ! 2013 | [[31. марец]] || [[5. май]] |- ! 2014 |colspan=2 align=center| [[20. апріль]] |- ! 2015 | [[5. апріль]] || [[12. апріль]] |- ! 2016 | [[27. марец]] || [[1. май]] |- ! 2017 |colspan=2 align=center| [[16. апріль]] |- ! 2018 | [[1. апріль]] || [[8. апріль]] |- ! 2019 | [[21. апріль]] || [[28. апріль]] |- ! 2020 | [[12. апріль]] || [[19. апріль]] |- ! 2021 | [[4. апріль]] || [[2. май]] |- ! 2022 | [[17. апріль]] || [[24. апріль]] |- ! 2023 | [[9. апріль]] || [[16. апріль]] |- ! 2024 | [[31. марец]] || [[5. май]] |- ! 2025 |colspan=2 align=center| [[20. апріль]] |- ! 2026 | [[5. апріль]] || [[12. апріль]] |- ! 2027 | [[28. марец]] || [[2. май]] |- ! 2028 | colspan=2 align=center| [[16. апріль]] |- ! 2029 | [[1. апріль]] || [[8. апріль]] |- ! 2030 | [[21. апріль]] || [[28. апріль]] |- ! 2031 | colspan=2 align=center| [[13. апріль]] |- ! 2032 | [[28. марец]] || [[2. май]] |- ! 2033 | [[17. апріль]] || [[24. апріль]] |- ! 2034 | colspan=2 align=center| [[9. апріль]] |- ! 2035 | [[25. марец]] || [[29. апріль]] |- ! 2036 | [[13. апріль]] || [[20. апріль]] |- ! 2037 | colspan=2 align=center| [[5. апріль]] |- ! 2038 | colspan=2 align=center| [[25. апріль]] |- ! 2039 | [[10. апріль]] || [[17. апріль]] |- ! 2040 | [[1. апріль]] || [[6. май]] |- ! 2041 | colspan=2 align=center| [[21. апріль]] |- ! 2042 | [[6. апріль]] || [[13. апріль]] |- ! 2043 | [[29. марец]] || [[3. май]] |- ! 2044 | [[17. апріль]] || [[24. апріль]] |- ! 2045 | colspan=2 align=center| [[9. апріль]] |- ! 2046 | [[25. марец]] || [[29. апріль]] |- ! 2047 | [[14. апріль]] || [[21. апріль]] |- ! 2048 | colspan=2 align=center| [[5. апріль]] |- ! 2049 | [[18. апріль]] || [[25. апріль]] |- ! 2050 | [[10. апріль]] || [[17. апріль]] |} == Референції == {{Переклад|uk|Великдень|9203883}} {{reflist}} {{Стыржень}} [[Катеґорія:Посувны святкы]] a2v3b44vfj64gz13v1pbkbpci94088w Руска Бурса 0 10188 169539 137701 2026-09-13T14:45:37Z Igor Kercsa 5504 актуализация 169539 wikitext text/x-wiki {{Организация | název = Стоваришѣня Руска Бурса в Горлицях | obrázek = | velikost obrázku = | popisek =Stowarzyszenie „Ruska Bursa” {{ref-pl}} | mapa = | velikost mapy = | popisek mapy = | mapa2 = | zkratka = Руска Бурса | motto = | předchůdce = | nástupce = | zakladatel = | vznik = [[1908]] | zánik = | typ = културна организация | forma = | účel = | sídlo = Stowarzyszenie „Ruska Bursa”,<br>ul. Sienkiewicza 28,<br>38-300 Gorlice | místo = [[Польща]] | působnost = | členové = | jazyk = {{ref-rue}}, {{ref-pl}} | generální tajemník = | lídr titul = Ведуча | lídr jméno = Наталия Малецка-Новак | lídr2 titul = | lídr2 jméno = | lídr3 titul = | lídr3 jméno = | lídr4 titul = | lídr4 jméno = | lídr5 titul = | lídr5 jméno = | klíčové osoby = | hlavní orgán = | předsednictví = | mateřská organizace = | přidružení = | rozpočet = | počet zaměstnanců = | počet dobrovolníků = | web = http://www.lem.fm/ruska-bursa/ | poznámky = | dřívější název = | ičo = }} '''Стоваришѣня Руска Бурса в Горлицях''', курто '''Руска Бурса''', — найстарша доживша до днесь [[Лемковина|лемковска]] сполоченска организация, основана в року 1908 в [[Горлицѣ|Горлицях]]. ==Иншы бурсы== Взором про [[Горлицѣ|горлицку]] бурсу были иншы подобны организации, котры были створены пару рокы скорше в [[Новый Сонч|Новом Сончу]]: бурса руска (1898) и украинска (1901). [[Русофил]]ска Руска бурса в [[Новый Сонч|Новом Сончу]] была в року 1914 закрыта австрийсков владов за ей пророссийскы симпатии, а не было ей допущено обновлѣня ани по роспадѣ [[Австро-Мадярщина|Австро-Мадярщины]]. В року 1908 были отворены еще двѣ рускы бурсы в [[Санок]]у, една про 30 дѣвчат, друга про 15 хлопцьох, але в зачатку [[Перва свѣтова война|войны]] закрыли ся и нигда ся уж не обновили.<ref name="Горбаль">Богдан Горбаль.</ref> ==Перипетии горлицкой бурсы== На основаню Руской Бурсы в [[Горлицѣ|Горлицях]] найвекшу заслугу мав [[Грекокатолицка Церковь|грекокатолицкый]] [[священик]] [[Василь Курилло]]. Была она замѣрена на убытованя 40 штудентох. Руска (лемковска) Бурса мала властный штоковый будинок на улици Сенкевича 28, зоз садом и пару гектарами землѣ. Главнов задачов тогды была опѣка над русков молодежов, котра ся учила на [[Горлицѣ|горлицкой]] [[Гимназия|гимназии]]: ту мали недороге або и задарне бываня. На зачатку [[Перва свѣтова война|войны]] так исто была закрыта, а ей штуденты и працовници заарештованы. Але по тырвалых судовых процесах зась отворила ся в року 1930 и фунговала до зачатку [[Друга світова война|Другой свѣтовой войны]] под веджѣньом Володимира Кордасевича, а пак Романа Максимовича. Од року 1939 через цѣлу войну под [[Нацистична Германия|нацистами]], а пак и комунистами жадны бурсы не были дозволены.<ref name="Горбаль"/> [[27. фебруара]] [[1950]] политично-сполоченскый оддѣл воеводского уряду в [[Жешов]]ѣ своим рѣшѣньом зликвидовав Руску Бурсу в [[Горлицѣ|Горлицях]], а окружный ликвидачный уряд в [[Краков]]ѣ рѣшѣньом з дня [[14. децембра]] [[1950]] вшиток ей маеток передав ерару под претекстом, же то зохабленый маеток по [[Лемкы|Лемках]], выселеных на западны землѣ и до [[СССР]]. ==Оброджѣня== По политичных перемѣнах року 1989 Руска Бурса в року 1991 обновила свое дѣятельство. Головне сѣдлиско организации ся находить и надале в [[Горлицѣ|Горлицях]], в старом будинку, але дѣятельство ей ся реализуе так на територии цѣлой [[Лемковина|Лемковины]], як и в иншых мѣстах [[Полща|Польщѣ]] ([[Краков]], [[Варшава]], [[Лигниця]] ), але и поза границями польской [[Держава|державы]] там, де жиють [[Русины]] — напримѣр на [[Пряшовскый край|Пряшовской Руси]], в [[Украина|Украинѣ]], [[США]] тай инде. ==Днешность организации== Днешна Руска Бурса в [[Горлицѣ|Горлицях]] не е конвиктом про штуденты, але културно-сполоченсков организациев широкого спектра дѣяня:<ref name="РуБур">РУСКА БУРСА.</ref> * '''освѣтового''' (научны одчиты, прелекции, языковы курзы, едукачный табор про дѣти в Лемковской Едукачной Загородѣ в Гладышовѣ); * '''културового''' (концерты, выставкы, варштаты лемковскых традиций, звыкох, ремесел); * '''выховного''' (ославы зачатку и конця школного року, выѣзды до театрох, музейох, сканзенох); * '''выдавательского''' (научный часопис „Річник Руской Бурсы”, едиция „Бібліотека Лемківской Клясикы” — Петра Полянского, Владимира Хыляка тай иншых, выдаваня платен з лемковсков музиков); * '''памятникового''' (библиотека, архив, Изба Памяти Ивана Русенка); * '''масмедиалного''' (лемковске радио ЛЕМ.фм, информачный портал ЛЕМ.фм+, тыжденник ЛЕМ.фм+); * '''умѣлецкого''' (дѣточо-молодежный музичный ансамбел ''Терочка'' и театралный ''Терка''). ==Жерела и одказы== * <big>Богдан Горбаль</big>: Руска бурса. //Енциклопедія історії та культури карпатських русинів. Укладачі Маґочій П.Р., Поп І. — Ужгород: Вид-во В.Падяка, 2010. — 856 c.+ХХХІІ с. {{ISBN| 978-966-387-044-1}} {{Реф-инфо|[[Украинскый язык|укр.]]}} Сс.&nbsp;661–662. * {{Cite web |url=http://www.lem.fm/ruska-bursa/ |title=РУСКА БУРСА |publisher=Портал ЛЕМ.фм |accessdate=2019-10-19}} == Референции == {{reflist}} {{Переклад|pl|Stowarzyszenie Ruska Bursa w Gorlicach|44268230}} [[Катеґорія:Русиньскы орґанізації]] [[Катеґорія:Организации в Польщи]] i76gdsgufggkxr09yfimkqmbay9irh1 169541 169539 2026-09-13T19:18:22Z Flipdot 23893 169541 wikitext text/x-wiki {{Организация | název = Стоваришѣня Руска Бурса в Горлицях | obrázek = | velikost obrázku = | popisek =Stowarzyszenie „Ruska Bursa” {{ref-pl}} | mapa = | velikost mapy = | popisek mapy = | mapa2 = | zkratka = Руска Бурса | motto = | předchůdce = | nástupce = | zakladatel = | vznik = [[1908]] | zánik = | typ = културна организация | forma = | účel = | sídlo = Stowarzyszenie „Ruska Bursa”,<br>ul. Sienkiewicza 28,<br>38-300 Gorlice | místo = [[Польща]] | působnost = | členové = | jazyk = {{ref-rue}}, {{ref-pl}} | generální tajemník = | lídr titul = Ведуча | lídr jméno = Наталия Малецка-Новак | lídr2 titul = | lídr2 jméno = | lídr3 titul = | lídr3 jméno = | lídr4 titul = | lídr4 jméno = | lídr5 titul = | lídr5 jméno = | klíčové osoby = | hlavní orgán = | předsednictví = | mateřská organizace = | přidružení = | rozpočet = | počet zaměstnanců = | počet dobrovolníků = | web = http://www.lem.fm/ruska-bursa/ | poznámky = | dřívější název = | ičo = }} '''Стоваришѣня Руска Бурса в Горлицях''', курто '''Руска Бурса''', — найстарша доживша до днесь [[Лемковина|лемковска]] сполоченска организация, основана в року 1908 в [[Горлицѣ|Горлицях]]. ==Иншы бурсы== Взором про [[Горлицѣ|горлицку]] бурсу были иншы подобны организации, котры были створены пару рокы скорше в [[Новый Сонч|Новом Сончу]]: бурса руска (1898) и украинска (1901). [[Русофил]]ска Руска бурса в [[Новый Сонч|Новом Сончу]] была в року 1914 закрыта австрийсков владов за ей пророссийскы симпатии, а не было ей допущено обновлѣня ани по роспадѣ [[Австро-Мадярщина|Австро-Мадярщины]]. В року 1908 были отворены еще двѣ рускы бурсы в [[Санок]]у, една про 30 дѣвчат, друга про 15 хлопцьох, але в зачатку [[Перва свѣтова война|войны]] закрыли ся и нигда ся уж не обновили.<ref name="Горбаль">Богдан Горбаль.</ref> ==Перипетии горлицкой бурсы== На основаню Руской Бурсы в [[Горлицѣ|Горлицях]] найвекшу заслугу мав [[Грекокатолицка Церковь|грекокатолицкый]] [[священик]] [[Василь Курилло]]. Была она замѣрена на убытованя 40 штудентох. Руска (лемковска) Бурса мала властный штоковый будинок на улици Сенкевича 28, зоз садом и пару гектарами землѣ. Главнов задачов тогды была опѣка над русков молодежов, котра ся учила на [[Горлицѣ|горлицкой]] [[Гимназия|гимназии]]: ту мали недороге або и задарне бываня. На зачатку [[Перва свѣтова война|войны]] так исто была закрыта, а ей штуденты и працовници заарештованы. Але по тырвалых судовых процесах зась отворила ся в року 1930 и фунговала до зачатку [[Друга світова война|Другой свѣтовой войны]] под веджѣньом Володимира Кордасевича, а пак Романа Максимовича. Од року 1939 через цѣлу войну под [[Нацистична Германия|нацистами]], а пак и комунистами жадны бурсы не были дозволены.<ref name="Горбаль"/> [[27. фебруара]] [[1950]] политично-сполоченскый оддѣл воеводского уряду в [[Жешов]]ѣ своим рѣшѣньом зликвидовав Руску Бурсу в [[Горлицѣ|Горлицях]], а окружный ликвидачный уряд в [[Краков]]ѣ рѣшѣньом з дня [[14. децембра]] [[1950]] вшиток ей маеток передав ерару под претекстом, же то зохабленый маеток по [[Лемкы|Лемках]], выселеных на западны землѣ и до [[СССР]]. ==Оброджѣня== По политичных перемѣнах року 1989 Руска Бурса в року 1991 обновила свое дѣятельство. Головне сѣдлиско организации ся находить и надале в [[Горлицѣ|Горлицях]], в старом будинку, але дѣятельство ей ся реализуе так на територии цѣлой [[Лемковина|Лемковины]], як и в иншых мѣстах [[Полща|Польщѣ]] ([[Краков]], [[Варшава]], [[Лигниця]] ), але и поза границями польской [[Держава|державы]] там, де жиють [[Русины]] — напримѣр на [[Пряшовскый край|Пряшовской Руси]], в [[Украина|Украинѣ]], [[США]] тай инде. ==Днешность организации== Днешна Руска Бурса в [[Горлицѣ|Горлицях]] не е конвиктом про штуденты, але културно-сполоченсков организациев широкого спектра дѣяня:<ref name="РуБур">РУСКА БУРСА.</ref> * '''освѣтового''' (научны одчиты, прелекции, языковы курзы, едукачный табор про дѣти в Лемковской Едукачной Загородѣ в Гладышовѣ); * '''културового''' (концерты, выставкы, варштаты лемковскых традиций, звыкох, ремесел); * '''выховного''' (ославы зачатку и конця школного року, выѣзды до театрох, музейох, сканзенох); * '''выдавательского''' (научный часопис „Річник Руской Бурсы”, едиция „Бібліотека Лемківской Клясикы” — Петра Полянского, Владимира Хыляка тай иншых, выдаваня платен з лемковсков музиков); * '''памятникового''' (библиотека, архив, Изба Памяти Ивана Русенка); * '''масмедиалного''' (лемковске радио ЛЕМ.фм, информачный портал ЛЕМ.фм+, тыжденник ЛЕМ.фм+); * '''умѣлецкого''' (дѣточо-молодежный музичный ансамбел ''Терочка'' и театралный ''Терка''). ==Жерела и одказы== * Богдан Горбаль: Руска бурса. //Енциклопедія історії та культури карпатських русинів. Укладачі Маґочій П.Р., Поп І. — Ужгород: Вид-во В.Падяка, 2010. — 856 c.+ХХХІІ с. {{ISBN| 978-966-387-044-1}} {{Реф-инфо|[[Украинскый язык|укр.]]}} Сс.&nbsp;661–662. * {{Cite web |url=http://www.lem.fm/ruska-bursa/ |title=РУСКА БУРСА |publisher=Портал ЛЕМ.фм |accessdate=2019-10-19}} == Референции == {{reflist}} {{Переклад|pl|Stowarzyszenie Ruska Bursa w Gorlicach|44268230}} [[Катеґорія:Русиньскы орґанізації]] [[Катеґорія:Организации в Польщи]] 83bqqi3ujyqy23s5ytomig4wvmrjh7x Доналд Трамп 0 10764 169540 169494 2026-09-13T18:20:13Z Flipdot 23893 169540 wikitext text/x-wiki {{Особа проста |Имя=Доналд Трамп |Чинность=45. и 47. [[Презіденты США|президент США]] |Образчик=[[File:Official Presidential Portrait of President Donald J. Trump (2025).jpg|200px]] |Категория_склада=Donald Trump |Уроджѣня={{birth date and age|1946|6|14}} |Мѣсто_роджѣня=[[Ню Йорк (місто)|Ню Йорк]] }} '''Доналд Джон Трамп''' ({{lang-en|Donald John Trump}}; [[14. юна]] [[1946]], [[Ню Йорк (місто)|Ню Йорк]], [[Споєны Штаты Америцькы|США]]) — 45. [[Презіденты США|презідент Споєных штатів америцькы]] (з [[20. януара]] [[2017]] по 20 януара 2021) і (ізбраный наново у [[2024]] році, вступив у чин [[Презіденты США|презідента]] [[20. януар|20. януара]] [[2025]]). І быв ізбраный 47. презідентом уд [[Републіканьска партія Зъединеных Штатӯв Америкы|Републіканьскої партії]]. До ізбраня презідентом быв [[Подузятник|бізнісменом]]. == Референції == <references /> {{Презіденты США}} {{стыржень}} {{DEFAULTSORT:Трамп, Доналд}} [[Катеґорія:Политици США]] [[Катеґорія:Презіденты США]] [[Катеґорія:Політічны лідеры]] 7a6jkmvblo5uw1ypymm1pjq85jusbnr Шаблона:Статья в роботѣ 10 11116 169564 163701 2026-09-14T01:34:12Z Halajkovič 33393 +доповнѣня 169564 wikitext text/x-wiki <includeonly>{{ambox | type = notice | style = border-left-color:#A98 | image = [[File:Document-edit.svg|40px]] | text = '''{{#if:{{{section|}}}|Секция|Сторона}} в данном часѣ е активно редагована участником {{{1|<span style="color:red;">Не указаный редагуючый участник!</span>}}}.''' | text-small = Будьте добры, не пробуйте ту жадны змѣны, покля не выгасне тото варованя.<br />В иншом припадѣ можуть настати конфликты редагованя.<br/>Варованя не мать держати {{#if:{{{section|}}}|секцию|сторону}} веце як {{{2|2}}} {{PLURAL:{{{2|2}}} | {{#switch:{{{3|d}}} | w = тыждень | m = мѣсяць | #default = день }} | {{#switch:{{{3|d}}} | w = тыжднѣ | m = мѣсяцѣ | #default = днѣ }} | {{#switch:{{{3|d}}} | w = тыждньох| m = мѣсяцьох| #default = дньох }} }}.{{#if:{{{date|{{{датум|}}}}}} | <br/>''Шаблона придана: {{{date|{{{датум}}}}}}.''}} {{#if:{{{details|}}}|<br/> ---- '''Подробности:''' {{{details|}}} }} }}[[Катеґорія:Статї в роботї]]</includeonly><noinclude> {{doc-inline}} == Опис == Тота шаблона служить на предохрану од конфликтох редагованя. Мать быти покладена в зачаток статьи або секции, котру активно редагуете и хочете варовати иншых участникох, жебы не робили там змѣны в том часѣ. Шаблона автоматично информуе о том, хто редагуе, як довго то мать тырвати и (кедь е задано) датум. По законченю редагованя не забудьте одстранити шаблону. Кедь натрафите дагде на подобну шаблону застарѣлого датума, таку шаблону без ваганя зотрѣть. == Хоснованя == Найпростшый вариант (на 2 днѣ): : {{tlx|Статья в роботѣ|<nowiki>~~~~</nowiki>|датум{{=}}14. септембра 2026}} З наставлѣньом часу (напримѣр, 3 тыжднѣ): : {{tlx|Статья в роботѣ|<nowiki>~~~~</nowiki>|3|w|датум{{=}}14. септембра 2026}} О окремой секции з высвѣтлѣньом: : {{tlx|Статья в роботѣ|<nowiki>~~~~</nowiki>|section{{=}}yes|details{{=}}Перекладаю текст з англицкой Википедии}} == Параметры == {| class="wikitable" ! Параметер ! Опис ! Тип ! Примѣр |- | '''1''' | Мено хоснователя (редактора). '''Повинный параметер'''. | Текст | <nowiki>~~~~</nowiki> |- | '''2''' | Число дньох, почас котрых плануете редаговати (Штандартно: 2). | Число | <nowiki>4</nowiki> |- | '''3''' | Единкы часу: * '''d''' — днѣ (штандартно) * '''w''' — тыжднѣ * '''m''' — мѣсяцѣ | Код | <nowiki>w</nowiki> |- | '''section''' | Кедь хочете означити лем секцию, а не цѣлу сторонку. Напиште ''yes'' або хотькотре инше значѣня. | Текст | <nowiki>yes</nowiki> |- | '''датум''' або '''date''' | Датум, коли была шаблона придана, жебы иншы знали, од коли рахуеться час. | Текст | <nowiki>14. септембра 2026</nowiki> |- | '''details''' | Додаточный текст з подробностями (напр. причина або план роботы). | Текст | <nowiki>Овѣрѣня фактох</nowiki> |} {{doc-end}} [[Катеґорія:Варованя]] </noinclude> fvi3btwie3rq63rcszno0co6kw8gx97 169565 169564 2026-09-14T01:35:51Z Halajkovič 33393 169565 wikitext text/x-wiki <includeonly>{{ambox | type = notice | style = border-left-color:#A98 | image = [[File:Document-edit.svg|40px]] | text = '''{{#if:{{{section|}}}|Секция|Сторона}} в данном часѣ е активно редагована участником {{{1|<span style="color:red;">Не указаный редагуючый участник!</span>}}}.''' | text-small = Будьте добры, не пробуйте ту жадны змѣны, покля не выгасне тото варованя.<br />В иншом припадѣ можуть настати конфликты редагованя.<br/>Варованя не мать держати {{#if:{{{section|}}}|секцию|сторону}} веце як {{{2|2}}} {{PLURAL:{{{2|2}}} | {{#switch:{{{3|d}}} | w = тыждень | m = мѣсяць | #default = день }} | {{#switch:{{{3|d}}} | w = тыжднѣ | m = мѣсяцѣ | #default = днѣ }} | {{#switch:{{{3|d}}} | w = тыждньох| m = мѣсяцьох| #default = дньох }} }}.{{#if:{{{date|{{{датум|}}}}}} | <br/>''Шаблона придана: {{{date|{{{датум}}}}}}.''}} {{#if:{{{details|}}}|<br/> ---- '''Подробности:''' {{{details|}}} }} }}[[Катеґорія:Статї в роботї]]</includeonly><noinclude> {{doc-inline}} == Опис == Тота шаблона служить на предохрану од конфликтох редагованя. Мать быти покладена в зачаток статьи або секции, котру активно редагуете и хочете варовати иншых участникох, жебы не робили там змѣны в том часѣ. Шаблона автоматично информуе о том, хто редагуе, як довго то мать тырвати а (кедь е заданый) датум. По законченю редагованя не забудьте одстранити шаблону. Кедь натрафите дагде на подобну шаблону застарѣлого датума, таку шаблону без ваганя зотрѣть. == Хоснованя == Найпростшый вариант (на 2 днѣ): : {{tlx|Статья в роботѣ|<nowiki>~~~~</nowiki>|датум{{=}}14. септембра 2026}} З наставлѣньом часу (напримѣр, 3 тыжднѣ): : {{tlx|Статья в роботѣ|<nowiki>~~~~</nowiki>|3|w|датум{{=}}14. септембра 2026}} О окремой секции з высвѣтлѣньом: : {{tlx|Статья в роботѣ|<nowiki>~~~~</nowiki>|section{{=}}yes|details{{=}}Перекладаю текст з англицкой Википедии}} == Параметры == {| class="wikitable" ! Параметер ! Опис ! Тип ! Примѣр |- | '''1''' | Мено хоснователя (редактора). '''Повинный параметер'''. | Текст | <nowiki>~~~~</nowiki> |- | '''2''' | Число дньох, почас котрых плануете редаговати (Штандартно: 2). | Число | <nowiki>4</nowiki> |- | '''3''' | Единкы часу: * '''d''' — днѣ (штандартно) * '''w''' — тыжднѣ * '''m''' — мѣсяцѣ | Код | <nowiki>w</nowiki> |- | '''section''' | Кедь хочете означити лем секцию, а не цѣлу сторонку. Напиште ''yes'' або хотькотре инше значѣня. | Текст | <nowiki>yes</nowiki> |- | '''датум''' або '''date''' | Датум, коли была шаблона придана, жебы иншы знали, од коли рахуеться час. | Текст | <nowiki>14. септембра 2026</nowiki> |- | '''details''' | Додаточный текст з подробностями (напр. причина або план роботы). | Текст | <nowiki>Овѣрѣня фактох</nowiki> |} {{doc-end}} [[Катеґорія:Варованя]] </noinclude> di419u68yml450a0vaakckqxsybi85c 169566 169565 2026-09-14T01:42:08Z Halajkovič 33393 169566 wikitext text/x-wiki <includeonly>{{ambox | type = notice | style = border-left-color:#A98 | image = [[File:OOjs UI icon clock.svg|40px]] | text = '''{{#if:{{{section|}}}|Секция|Сторона}} в данном часѣ е активно редагована участником {{{1|<span style="color:red;">Не указаный редагуючый участник!</span>}}}.''' | text-small = Будьте добры, не пробуйте ту жадны змѣны, покля не выгасне тото варованя.<br />В иншом припадѣ можуть настати конфликты редагованя.<br/>Варованя не мать держати {{#if:{{{section|}}}|секцию|сторону}} веце як {{{2|2}}} {{PLURAL:{{{2|2}}} | {{#switch:{{{3|d}}} | w = тыждень | m = мѣсяць | #default = день }} | {{#switch:{{{3|d}}} | w = тыжднѣ | m = мѣсяцѣ | #default = днѣ }} | {{#switch:{{{3|d}}} | w = тыждньох| m = мѣсяцьох| #default = дньох }} }}.{{#if:{{{date|{{{датум|}}}}}} | <br/>''Шаблона придана: {{{date|{{{датум}}}}}}.''}} {{#if:{{{details|}}}|<br/> ---- '''Подробности:''' {{{details|}}} }} }}[[Катеґорія:Статї в роботї]]</includeonly><noinclude> {{doc-inline}} == Опис == Тота шаблона служить на предохрану од конфликтох редагованя. Мать быти покладена в зачаток статьи або секции, котру активно редагуете и хочете варовати иншых участникох, жебы не робили там змѣны в том часѣ. Шаблона автоматично информуе о том, хто редагуе, як довго то мать тырвати а (кедь е заданый) датум. По законченю редагованя не забудьте одстранити шаблону. Кедь натрафите дагде на подобну шаблону застарѣлого датума, таку шаблону без ваганя зотрѣть. == Хоснованя == Найпростшый вариант (на 2 днѣ): : {{tlx|Статья в роботѣ|<nowiki>~~~~</nowiki>|датум{{=}}14. септембра 2026}} З наставлѣньом часу (напримѣр, 3 тыжднѣ): : {{tlx|Статья в роботѣ|<nowiki>~~~~</nowiki>|3|w|датум{{=}}14. септембра 2026}} О окремой секции з высвѣтлѣньом: : {{tlx|Статья в роботѣ|<nowiki>~~~~</nowiki>|section{{=}}yes|details{{=}}Перекладаю текст з англицкой Википедии}} == Параметры == {| class="wikitable" ! Параметер ! Опис ! Тип ! Примѣр |- | '''1''' | Мено хоснователя (редактора). '''Повинный параметер'''. | Текст | <nowiki>~~~~</nowiki> |- | '''2''' | Число дньох, почас котрых плануете редаговати (Штандартно: 2). | Число | <nowiki>4</nowiki> |- | '''3''' | Единкы часу: * '''d''' — днѣ (штандартно) * '''w''' — тыжднѣ * '''m''' — мѣсяцѣ | Код | <nowiki>w</nowiki> |- | '''section''' | Кедь хочете означити лем секцию, а не цѣлу сторонку. Напиште ''yes'' або хотькотре инше значѣня. | Текст | <nowiki>yes</nowiki> |- | '''датум''' або '''date''' | Датум, коли была шаблона придана, жебы иншы знали, од коли рахуеться час. | Текст | <nowiki>14. септембра 2026</nowiki> |- | '''details''' | Додаточный текст з подробностями (напр. причина або план роботы). | Текст | <nowiki>Овѣрѣня фактох</nowiki> |} {{doc-end}} [[Катеґорія:Варованя]] </noinclude> 0q04uaztsnpnj2bwar9dxvl26lzj8nu 169568 169566 2026-09-14T01:49:55Z Halajkovič 33393 169568 wikitext text/x-wiki <includeonly>{{ambox | type = notice | style = border-left-color:#A98 | image = [[File:OOjs UI icon clock.svg|40px]] | text = '''{{#if:{{{section|}}}|Секция|Сторона}} в данном часѣ е активно редагована участником {{{1|<span style="color:red;">Не указаный редагуючый участник!</span>}}}.''' | text-small = Будьте добры, не пробуйте ту жадны змѣны, покля не выгасне тото варованя.<br />В иншом припадѣ можуть настати конфликты редагованя.<br/>Варованя не мать держати {{#if:{{{section|}}}|секцию|сторону}} веце як {{{2|2}}} {{PLURAL:{{{2|2}}} | {{#switch:{{{3|d}}} | w = тыждень | m = мѣсяць | #default = день }} | {{#switch:{{{3|d}}} | w = тыжднѣ | m = мѣсяцѣ | #default = днѣ }} | {{#switch:{{{3|d}}} | w = тыждньох| m = мѣсяцьох| #default = дньох }} }}.{{#if:{{{date|{{{датум|}}}}}} | <br/>''Шаблона придана: {{{date|{{{датум}}}}}}.''}} {{#if:{{{details|}}}|<br/> ---- '''Подробности:''' {{{details|}}} }} }}[[Катеґорія:Статї в роботї]]</includeonly><noinclude> {{doc-inline}} == Опис == Тота шаблона служить на предохрану од конфликтох редагованя. Мать быти покладена в зачаток статьи або секции, котру активно редагуете и хочете варовати иншых участникох, жебы не робили там змѣны в том часѣ. Шаблона автоматично информуе о том, хто редагуе, як довго то мать тырвати а (кедь е заданый) датум. По законченю редагованя не забудьте одстранити шаблону. Кедь натрафите дагде на подобну шаблону застарѣлого датума, таку шаблону без ваганя зотрѣть. == Хоснованя == Найпростшый вариант (на 2 днѣ): : {{tlx|Статья в роботѣ|<nowiki>~~~</nowiki>|датум{{=}}<nowiki>~~~~~</nowiki>}} З наставлѣньом часу (напримѣр, 3 тыжднѣ): : {{tlx|Статья в роботѣ|<nowiki>~~~</nowiki>|3|w|датум{{=}}<nowiki>~~~~~</nowiki>}} О окремой секции з высвѣтлѣньом: : {{tlx|Статья в роботѣ|<nowiki>~~~</nowiki>|section{{=}}yes|датум{{=}}<nowiki>~~~~~</nowiki>|details{{=}}Перекладаю текст з англицкой Википедии}} == Параметры == {| class="wikitable" ! Параметер ! Опис ! Тип ! Примѣр |- | '''1''' | Мено хоснователя (редактора). '''Повинный параметер'''. Хоснуйте '''<nowiki>~~~</nowiki>''' (3 тилды), жебы ся вписало лем мено без часу. | Текст | <nowiki>~~~</nowiki> |- | '''2''' | Число дньох, почас котрых плануете редаговати (Штандартно: 2). | Число | <nowiki>4</nowiki> |- | '''3''' | Единкы часу: * '''d''' — днѣ (штандартно) * '''w''' — тыжднѣ * '''m''' — мѣсяцѣ | Код | <nowiki>w</nowiki> |- | '''section''' | Кедь хочете означити лем секцию, а не цѣлу сторонку. Напиште ''yes'' або хотькотре инше значѣня. | Текст | <nowiki>yes</nowiki> |- | '''датум''' або '''date''' | Датум, коли была шаблона придана. Хоснуйте '''<nowiki>~~~~~</nowiki>''' (5 тилд), жебы ся автоматично вписав точный час. | Текст | <nowiki>~~~~~</nowiki> |- | '''details''' | Додаточный текст з подробностями (напр. причина або план роботы). | Текст | <nowiki>Овѣрѣня фактох</nowiki> |} {{doc-end}} [[Катеґорія:Варованя]] </noinclude> rbidfnltlhpd84bup3zw7l13ry7f86n 169570 169568 2026-09-14T01:53:52Z Halajkovič 33393 169570 wikitext text/x-wiki <includeonly>{{ambox | type = notice | style = border-left-color:#A98 | image = [[File:OOjs UI icon clock.svg|40px]] | text = '''{{#if:{{{section|}}}|Секция|Сторона}} в данном часѣ е активно редагована участником {{{1|<span style="color:red;">Не указаный редагуючый участник!</span>}}}.''' | text-small = Будьте добры, не пробуйте ту жадны змѣны, покля не выгасне тото варованя.<br />В иншом припадѣ можуть настати конфликты редагованя.<br/>Варованя не мать держати {{#if:{{{section|}}}|секцию|сторону}} веце як {{{2|2}}} {{PLURAL:{{{2|2}}} | {{#switch:{{{3|d}}} | w = тыждень | m = мѣсяць | #default = день }} | {{#switch:{{{3|d}}} | w = тыжднѣ | m = мѣсяцѣ | #default = днѣ }} | {{#switch:{{{3|d}}} | w = тыждньох| m = мѣсяцьох| #default = дньох }} }}.{{#if:{{{date|{{{датум|}}}}}} | <br/>''Шаблона придана: {{{date|{{{датум}}}}}}.''}} {{#if:{{{details|}}}|<br/> ---- '''Подробности:''' {{{details|}}} }} }}[[Катеґорія:Статьи в роботѣ]]</includeonly><noinclude> {{doc-inline}} == Опис == Тота шаблона служить на предохрану од конфликтох редагованя. Мать быти покладена в зачаток статьи або секции, котру активно редагуете и хочете варовати иншых участникох, жебы не робили там змѣны в том часѣ. Шаблона автоматично информуе о том, хто редагуе, як довго то мать тырвати а (кедь е заданый) датум. По законченю редагованя не забудьте одстранити шаблону. Кедь натрафите дагде на подобну шаблону застарѣлого датума, таку шаблону без ваганя зотрѣть. == Хоснованя == Найпростшый вариант (на 2 днѣ): : {{tlx|Статья в роботѣ|<nowiki>~~~</nowiki>|датум{{=}}<nowiki>~~~~~</nowiki>}} З наставлѣньом часу (напримѣр, 3 тыжднѣ): : {{tlx|Статья в роботѣ|<nowiki>~~~</nowiki>|3|w|датум{{=}}<nowiki>~~~~~</nowiki>}} О окремой секции з высвѣтлѣньом: : {{tlx|Статья в роботѣ|<nowiki>~~~</nowiki>|section{{=}}yes|датум{{=}}<nowiki>~~~~~</nowiki>|details{{=}}Перекладаю текст з англицкой Википедии}} == Параметры == {| class="wikitable" ! Параметер ! Опис ! Тип ! Примѣр |- | '''1''' | Мено хоснователя (редактора). '''Повинный параметер'''. Хоснуйте '''<nowiki>~~~</nowiki>''' (3 тилды), жебы ся вписало лем мено без часу. | Текст | <nowiki>~~~</nowiki> |- | '''2''' | Число дньох, почас котрых плануете редаговати (Штандартно: 2). | Число | <nowiki>4</nowiki> |- | '''3''' | Единкы часу: * '''d''' — днѣ (штандартно) * '''w''' — тыжднѣ * '''m''' — мѣсяцѣ | Код | <nowiki>w</nowiki> |- | '''section''' | Кедь хочете означити лем секцию, а не цѣлу сторонку. Напиште ''yes'' або хотькотре инше значѣня. | Текст | <nowiki>yes</nowiki> |- | '''датум''' або '''date''' | Датум, коли была шаблона придана. Хоснуйте '''<nowiki>~~~~~</nowiki>''' (5 тилд), жебы ся автоматично вписав точный час. | Текст | <nowiki>~~~~~</nowiki> |- | '''details''' | Додаточный текст з подробностями (напр. причина або план роботы). | Текст | <nowiki>Овѣрѣня фактох</nowiki> |} {{doc-end}} [[Катеґорія:Варованя]] </noinclude> 6qwk5f2190bvbie9ek90w5msmln980f Шаблона:Заникла держава 10 12127 169562 165235 2026-09-14T01:11:30Z Halajkovič 33393 169562 wikitext text/x-wiki <!-- Шаблона адаптована зо словацкой Infobox zaniknutý štát --> <includeonly>{| class="infobox" cellpadding="0" style="border-collapse: collapse; border: 1px solid var(--border-color-base, #CCC); float: right; margin: 0 0 1em 1em; width: 300px;font-size:89%;" | colspan="3" style="background-color: var(--background-color-neutral, #eaeaea); text-align: center" | <span style="font-size:125%">'''{{{názov}}}{{#if: {{{originálny názov|}}}|<br />''{{{originálny názov}}}''}}{{#if: {{{originálny názov arabsky|}}}|<br /><big>{{{originálny názov arabsky}}}</big>}}'''</span> {| cellpadding="4" width=100% style="background-color: var(--background-color-base, #fff); border-top: 1px solid var(--border-color-base, #CCC); font-size:111%" | width=33% style="text-align: left;vertical-align:top" | {{#ifeq: {{{viac pred|}}} | áno | [[#pred-po|↓]] |{{#if:{{{pred 1|}}}|[[{{{pred 1}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 1 vlajka|}}}|{{{pred 1 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 1}}}{{!}}{{{pred 1}}}]]}} {{#if:{{{pred 2|}}}|<br />[[{{{pred 2}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 2 vlajka|}}}|{{{pred 2 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 2}}}{{!}}{{{pred 2}}}]]}} {{#if:{{{pred 3|}}}|<br />[[{{{pred 3}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 3 vlajka|}}}|{{{pred 3 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 3}}}{{!}}{{{pred 3}}}]]}} {{#if:{{{pred 4|}}}|<br />[[{{{pred 4}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 4 vlajka|}}}|{{{pred 4 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 4}}}{{!}}{{{pred 4}}}]]}} {{#if:{{{pred 5|}}}|<br />[[{{{pred 5}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 5 vlajka|}}}|{{{pred 5 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 5}}}{{!}}{{{pred 5}}}]]}} {{#if:{{{pred 6|}}}|<br />[[{{{pred 6}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 6 vlajka|}}}|{{{pred 6 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 6}}}{{!}}{{{pred 6}}}]]}} {{#if:{{{pred 7|}}}|<br />[[{{{pred 7}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 7 vlajka|}}}|{{{pred 7 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 7}}}{{!}}{{{pred 7}}}]]}} {{#if:{{{pred 8|}}}|<br />[[{{{pred 8}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 8 vlajka|}}}|{{{pred 8 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 8}}}{{!}}{{{pred 8}}}]]}} {{#if:{{{pred 9|}}}|<br />[[{{{pred 9}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 9 vlajka|}}}|{{{pred 9 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 9}}}{{!}}{{{pred 9}}}]]}} {{#if:{{{pred 10|}}}|<br />[[{{{pred 10}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 10 vlajka|}}}|{{{pred 10 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 10}}}{{!}}{{{pred 10}}}]]}} {{#if:{{{pred 11|}}}|<br />[[{{{pred 11}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 11 vlajka|}}}|{{{pred 11 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 11}}}{{!}}{{{pred 11}}}]]}} {{#if:{{{pred 12|}}}|<br />[[{{{pred 12}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 12 vlajka|}}}|{{{pred 12 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 12}}}{{!}}{{{pred 12}}}]]</span>}} {{#if:{{{pred 13|}}}|<br />[[{{{pred 13}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 13 vlajka|}}}|{{{pred 13 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 13}}}{{!}}{{{pred 13}}}]]}} {{#if:{{{pred 14|}}}|<br />[[{{{pred 14}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 14 vlajka|}}}|{{{pred 14 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 14}}}{{!}}{{{pred 14}}}]]}} {{#if:{{{pred 15|}}}|<br />[[{{{pred 15}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 15 vlajka|}}}|{{{pred 15 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 15}}}{{!}}{{{pred 15}}}]]}} {{#if:{{{pred 16|}}}|<br />[[{{{pred 16}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 16 vlajka|}}}|{{{pred 16 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 16}}}{{!}}{{{pred 16}}}]]}} {{#if:{{{pred 17|}}}|<br />[[{{{pred 17}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 17 vlajka|}}}|{{{pred 17 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 17}}}{{!}}{{{pred 17}}}]]}} {{#if:{{{pred 18|}}}|<br />[[{{{pred 18}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 18 vlajka|}}}|{{{pred 18 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 18}}}{{!}}{{{pred 18}}}]]}} }} | width=33% style="background-color: var(--background-color-neutral-subtle, #f9f9f9); text-align: center;vertical-align:top" | '''{{{rok vzniku}}} – {{{rok zániku}}}'''{{#if:{{{rok vzniku 2|}}}|<br />'''{{{rok vzniku 2}}} – {{{rok zániku 2}}}'''}}{{#if:{{{rok vzniku 3|}}}|<br />'''{{{rok vzniku 3}}} – {{{rok zániku 3}}}'''}} | width=33% style="text-align: right;vertical-align:top" | {{#ifeq: {{{viac po|}}} | áno | [[#pred-po|↓]] | [[Файл:{{#if:{{{po 1 vlajka|}}}|{{{po 1 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 1}}}{{!}}{{{po 1}}}]]&nbsp;[[{{{po 1}}}{{!}}→]] {{#if:{{{po 2|}}}|<br />[[Файл:{{#if:{{{po 2 vlajka|}}}|{{{po 2 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 2}}}{{!}}{{{po 2}}}]]&nbsp;[[{{{po 2}}}{{!}}→]]}} {{#if:{{{po 3|}}}|<br />[[Файл:{{#if:{{{po 3 vlajka|}}}|{{{po 3 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 3}}}{{!}}{{{po 3}}}]]&nbsp;[[{{{po 3}}}{{!}}→]]}} {{#if:{{{po 4|}}}|<br />[[Файл:{{#if:{{{po 4 vlajka|}}}|{{{po 4 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 4}}}{{!}}{{{po 4}}}]]&nbsp;[[{{{po 4}}}{{!}}→]]}} {{#if:{{{po 5|}}}|<br />[[Файл:{{#if:{{{po 5 vlajka|}}}|{{{po 5 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 5}}}{{!}}{{{po 5}}}]]&nbsp;[[{{{po 5}}}{{!}}→]]}} {{#if:{{{po 6|}}}|<br />[[Файл:{{#if:{{{po 6 vlajka|}}}|{{{po 6 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 6}}}{{!}}{{{po 6}}}]]&nbsp;[[{{{po 6}}}{{!}}→]]}} {{#if:{{{po 7|}}}|<br />[[Файл:{{#if:{{{po 7 vlajka|}}}|{{{po 7 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 7}}}{{!}}{{{po 7}}}]]&nbsp;[[{{{po 7}}}{{!}}→]]}} {{#if:{{{po 8|}}}|<br />[[Файл:{{#if:{{{po 8 vlajka|}}}|{{{po 8 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 8}}}{{!}}{{{po 8}}}]]&nbsp;[[{{{po 8}}}{{!}}→]]}} {{#if:{{{po 9|}}}|<br />[[Файл:{{#if:{{{po 9 vlajka|}}}|{{{po 9 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 9}}}{{!}}{{{po 9}}}]]&nbsp;[[{{{po 9}}}{{!}}→]]}} {{#if:{{{po 10|}}}|<br />[[Файл:{{#if:{{{po 10 vlajka|}}}|{{{po 10 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 10}}}{{!}}{{{po 10}}}]]&nbsp;[[{{{po 10}}}{{!}}→]]}} {{#if:{{{po 11|}}}|<br />[[Файл:{{#if:{{{po 11 vlajka|}}}|{{{po 11 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 11}}}{{!}}{{{po 11}}}]]&nbsp;[[{{{po 11}}}{{!}}→]]}} {{#if:{{{po 12|}}}|<br />[[Файл:{{#if:{{{po 12 vlajka|}}}|{{{po 12 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 12}}}{{!}}{{{po 12}}}]]&nbsp;[[{{{po 12}}}{{!}}→]]}} {{#if:{{{po 13|}}}|<br />[[Файл:{{#if:{{{po 13 vlajka|}}}|{{{po 13 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 13}}}{{!}}{{{po 13}}}]]&nbsp;[[{{{po 13}}}{{!}}→]]}} {{#if:{{{po 14|}}}|<br />[[Файл:{{#if:{{{po 14 vlajka|}}}|{{{po 14 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 14}}}{{!}}{{{po 14}}}]]&nbsp;[[{{{po 14}}}{{!}}→]]}} {{#if:{{{po 15|}}}|<br />[[Файл:{{#if:{{{po 15 vlajka|}}}|{{{po 15 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 15}}}{{!}}{{{po 15}}}]]&nbsp;[[{{{po 15}}}{{!}}→]]}} {{#if:{{{po 16|}}}|<br />[[Файл:{{#if:{{{po 16 vlajka|}}}|{{{po 16 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 16}}}{{!}}{{{po 16}}}]]&nbsp;[[{{{po 16}}}{{!}}→]]}} {{#if:{{{po 17|}}}|<br />[[Файл:{{#if:{{{po 17 vlajka|}}}|{{{po 17 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 17}}}{{!}}{{{po 17}}}]]&nbsp;[[{{{po 17}}}{{!}}→]]}} {{#if:{{{po 18|}}}|<br />[[Файл:{{#if:{{{po 18 vlajka|}}}|{{{po 18 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 18}}}{{!}}{{{po 18}}}]]&nbsp;[[{{{po 18}}}{{!}}→]]}} }} |} {{#if: {{{vlajka|}}}{{{znak|}}} | {{{!}} cellpadding="4" width=100% style="background-color: var(--background-color-base, #fff); border-top: 1px solid var(--border-color-base, #CCC);" {{#if:{{{vlajka|}}} | {{!}} width=50% style="text-align: center" {{!}} [[Файл:{{{vlajka}}}{{!}}{{#if:{{{vlajka veľkosť|}}}|{{{vlajka veľkosť}}}|125px}}{{!}}Застава державы|border]]<br />{{#if:{{{článok o vlajke|}}}|{{{článok o vlajke}}}|застава}}}} {{#if:{{{znak|}}} | {{!}} width=50% style="text-align: center" {{!}} [[Файл:{{{znak}}}{{!}}{{#if:{{{znak veľkosť|}}}|{{{znak veľkosť}}}|85px}}{{!}} {{#ifeq:{{{rámček znak|}}}|áno|border{{!}}}} Герб державы]]<br />{{#if:{{{článok o znaku|}}}|{{{článok o znaku}}}|герб}}}} {{!}}} }} |- {{#if: {{{hymna|}}} | {{!}} colspan="3" style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border-top: 1px solid var(--border-color-base, #CCC); text-align: center;" {{!}} '''[[Народна гімна|Гимна]]:''' ''{{#if: {{{článok o hymne|}}} | [[{{{článok o hymne}}}|{{{hymna}}}]] | {{{hymna}}} }}'' {{!}}- }} {{#if: {{{motto|}}} | {{!}} colspan="3" style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border-top: 1px solid var(--border-color-base, #CCC); text-align: center;" {{!}} '''[[Девіза|Гесло]]:''' ''{{#if: {{{článok o mottu|}}} | [[{{{článok o mottu}}}|{{{motto}}}]] | {{{motto}}} }}'' {{#if:{{{motto preklad|}}}|<br />({{{motto preklad}}}) }} {{!}}- }} | colspan="3" style="background-color: var(--background-color-neutral, #eaeaea); border-top: 1px solid var(--border-color-base, #CCC); text-align: center;" | '''География''' {{#if: {{{mapa|}}} | {{{!}} width=100% style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border-top: 1px solid var(--border-color-base, #CCC);padding-bottom:0;" {{!}} colspan="2" {{!}} [[Файл:{{{mapa}}}{{!}}{{#if:{{{mapa veľkosť|}}}|{{{mapa veľkosť}}}|290px}}{{!}}Mapa štátu]] {{#if: {{{mapa poznámka|}}} | <br />{{{mapa poznámka}}} }} {{!}}} }} |- | width=35% style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" | <div style="margin-left:.2em">[[Головне місто|Главный город]]</div> | style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" | <div style="margin-left:.2em">{{{hlavné mesto}}}</div> |- {{#if: {{{rozloha|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Розлога</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{rozloha}}} km² {{#if: {{{rozloha poznámka|}}}|<small>{{{rozloha poznámka}}}</small>}}</div> {{!}}- }} {{#if: {{{najvyšší bod|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Найвысша точка</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{najvyšší bod}}} {{#if: {{{najvyšší bod poznámka|}}}|<small>{{{najvyšší bod poznámka}}}</small>}}</div> {{!}}- }} {{#if: {{{najdlhšia rieka|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Найдовгша рѣка</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{najdlhšia rieka}}} {{#if: {{{najdlhšia rieka poznámka|}}}|<small>{{{najdlhšia rieka poznámka}}}</small>}}</div> {{!}}- }} | colspan="3" style="background-color: var(--background-color-neutral, #eaeaea); border-top: 1px solid var(--border-color-base, #CCC); border-bottom: 1px solid var(--border-color-base, #CCC); text-align: center;" | '''Обывательство''' |- {{#if: {{{počet obyvateľov|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Число</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{počet obyvateľov}}} {{#if: {{{počet obyvateľov poznámka|}}}|<small>{{{počet obyvateľov poznámka}}}</small>}}</div> {{!}}- }} {{#if: {{{národnostné zloženie|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Народностне зложѣня</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{národnostné zloženie}}}</div> {{!}}- }} {{#if: {{{jazyky|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">[[Язык]]ы</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{jazyky}}}</div> {{!}}- }} {{#if: {{{náboženstvo|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">[[Набоженство]]</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{náboženstvo}}}</div> {{!}}- }} | colspan="3" style="background-color: var(--background-color-neutral, #eaeaea); border-top: 1px solid var(--border-color-base, #CCC); border-bottom: 1px solid var(--border-color-base, #CCC); text-align: center;" | '''Державна организация''' |- | style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" | <div style="margin-left:.2em">Форма влады</div> | style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" | <div style="margin-left:.2em">{{{štátne zriadenie}}}</div> |- {{#if: {{{materský štát|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Материнскый штат</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);margin: 1em" {{!}} <div style="margin-left:.2em">{{{materský štát}}}</div> {{!}}- }} {{#if: {{{mena|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">[[Валута]]</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{mena}}}</div> {{!}}- }} {{#if: {{{predstaviteľ|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{titul predstavitelia|'''Predstaviteľ'''}}}</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{predstaviteľ}}}</div> {{!}}- }} {{#if: {{{predstaviteľ 2|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{titul predstavitelia 2|'''Predstaviteľ 2'''}}}</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{predstaviteľ 2}}}</div> {{!}}- }} {{#if: {{{vznik|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Взник</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);margin: 1em" {{!}} <div style="margin-left:.2em">{{{vznik}}}</div> {{!}}- }} {{#if: {{{zánik|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Заник</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{zánik}}}</div> {{!}}- }} | colspan="2" | {| width=99% style="background-color: var(--background-color-neutral-subtle, #f9f9f9); text-align:left; margin:0 auto;" | {{#if: {{{širka 1. stĺpca|}}}|width={{{šírka 1. stĺpca}}}%|width=50% }} valign="top" | <span id="pred-po"></span>'''Предходникы:''' {| style="background-color: var(--background-color-neutral-subtle, #f9f9f9); margin-right:.5em;margin-left:-3px" {{#if: {{{pred info|}}} | <br />{{{pred info}}} }} {{#if:{{{pred 1|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 1 vlajka|}}}|{{{pred 1 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 1}}}]]</span> {{!}}{{!}} [[{{{pred 1}}}]] {{!}}- }} {{#if:{{{pred 2|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 2 vlajka|}}}|{{{pred 2 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 2}}}]]</span> {{!}}{{!}} [[{{{pred 2}}}]] {{!}}- }} {{#if:{{{pred 3|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 3 vlajka|}}}|{{{pred 3 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 3}}}]]</span> {{!}}{{!}} [[{{{pred 3}}}]] {{!}}- }} {{#if:{{{pred 4|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 4 vlajka|}}}|{{{pred 4 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 4}}}]]</span> {{!}}{{!}} [[{{{pred 4}}}]] {{!}}- }} {{#if:{{{pred 5|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 5 vlajka|}}}|{{{pred 5 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 5}}}]]</span> {{!}}{{!}} [[{{{pred 5}}}]] {{!}}- }} {{#if:{{{pred 6|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 6 vlajka|}}}|{{{pred 6 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 6}}}]]</span> {{!}}{{!}} [[{{{pred 6}}}]] {{!}}- }} {{#if:{{{pred 7|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 7 vlajka|}}}|{{{pred 7 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 7}}}]]</span> {{!}}{{!}} [[{{{pred 7}}}]] {{!}}- }} {{#if:{{{pred 8|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 8 vlajka|}}}|{{{pred 8 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 8}}}]]</span> {{!}}{{!}} [[{{{pred 8}}}]] {{!}}- }} {{#if:{{{pred 9|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 9 vlajka|}}}|{{{pred 9 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 9}}}]]</span> {{!}}{{!}} [[{{{pred 9}}}]] {{!}}- }} {{#if:{{{pred 10|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 10 vlajka|}}}|{{{pred 10 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 10}}}]]</span> {{!}}{{!}} [[{{{pred 10}}}]] {{!}}- }} {{#if:{{{pred 11|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 11 vlajka|}}}|{{{pred 11 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 11}}}]]</span> {{!}}{{!}} [[{{{pred 11}}}]] {{!}}- }} {{#if:{{{pred 12|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 12 vlajka|}}}|{{{pred 12 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 12}}}]]</span> {{!}}{{!}} [[{{{pred 12}}}]] {{!}}- }} {{#if:{{{pred 13|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 13 vlajka|}}}|{{{pred 13 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 13}}}]]</span> {{!}}{{!}} [[{{{pred 13}}}]] {{!}}- }} {{#if:{{{pred 14|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 14 vlajka|}}}|{{{pred 14 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 14}}}]]</span> {{!}}{{!}} [[{{{pred 14}}}]] {{!}}- }} {{#if:{{{pred 15|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 15 vlajka|}}}|{{{pred 15 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 15}}}]]</span> {{!}}{{!}} [[{{{pred 15}}}]] {{!}}- }} {{#if:{{{pred 16|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 16 vlajka|}}}|{{{pred 16 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 16}}}]]</span> {{!}}{{!}} [[{{{pred 16}}}]] {{!}}- }} {{#if:{{{pred 17|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 17 vlajka|}}}|{{{pred 17 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 17}}}]]</span> {{!}}{{!}} [[{{{pred 17}}}]] {{!}}- }} {{#if:{{{pred 18|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 18 vlajka|}}}|{{{pred 18 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 18}}}]]</span> {{!}}{{!}} [[{{{pred 18}}}]] {{!}}- }} |} | valign="top" | '''Наступникы:''' {| style="background-color: var(--background-color-neutral-subtle, #f9f9f9); margin-left:-3px" | <span class="framedpicture">[[Файл:{{#if:{{{po 1 vlajka|}}}|{{{po 1 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 1}}}]]</span> || [[{{{po 1}}}]] |- {{#if:{{{po 2|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 2 vlajka|}}}|{{{po 2 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 2}}}]]</span> {{!}}{{!}} [[{{{po 2}}}]] {{!}}- }} {{#if:{{{po 3|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 3 vlajka|}}}|{{{po 3 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 3}}}]]</span> {{!}}{{!}} [[{{{po 3}}}]] {{!}}- }} {{#if:{{{po 4|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 4 vlajka|}}}|{{{po 4 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 4}}}]]</span> {{!}}{{!}} [[{{{po 4}}}]] {{!}}- }} {{#if:{{{po 5|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 5 vlajka|}}}|{{{po 5 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 5}}}]]</span> {{!}}{{!}} [[{{{po 5}}}]] {{!}}- }} {{#if:{{{po 6|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 6 vlajka|}}}|{{{po 6 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 6}}}]]</span> {{!}}{{!}} [[{{{po 6}}}]] {{!}}- }} {{#if:{{{po 7|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 7 vlajka|}}}|{{{po 7 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 7}}}]]</span> {{!}}{{!}} [[{{{po 7}}}]] {{!}}- }} {{#if:{{{po 8|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 8 vlajka|}}}|{{{po 8 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 8}}}]]</span> {{!}}{{!}} [[{{{po 8}}}]] {{!}}- }} {{#if:{{{po 9|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 9 vlajka|}}}|{{{po 9 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 9}}}]]</span> {{!}}{{!}} [[{{{po 9}}}]] {{!}}- }} {{#if:{{{po 10|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 10 vlajka|}}}|{{{po 10 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 10}}}]]</span> {{!}}{{!}} [[{{{po 10}}}]] {{!}}- }} {{#if:{{{po 11|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 11 vlajka|}}}|{{{po 11 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 11}}}]]</span> {{!}}{{!}} [[{{{po 11}}}]] {{!}}- }} {{#if:{{{po 12|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 12 vlajka|}}}|{{{po 12 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 12}}}]]</span> {{!}}{{!}} [[{{{po 12}}}]] {{!}}- }} {{#if:{{{po 13|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 13 vlajka|}}}|{{{po 13 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 13}}}]]</span> {{!}}{{!}} [[{{{po 13}}}]] {{!}}- }} {{#if:{{{po 14|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 14 vlajka|}}}|{{{po 14 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 14}}}]]</span> {{!}}{{!}} [[{{{po 14}}}]] {{!}}- }} {{#if:{{{po 15|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 15 vlajka|}}}|{{{po 15 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 15}}}]]</span> {{!}}{{!}} [[{{{po 15}}}]] {{!}}- }} {{#if:{{{po 16|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 16 vlajka|}}}|{{{po 16 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 16}}}]]</span> {{!}}{{!}} [[{{{po 16}}}]] {{!}}- }} {{#if:{{{po 17|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 17 vlajka|}}}|{{{po 17 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 17}}}]]</span> {{!}}{{!}} [[{{{po 17}}}]] {{!}}- }} {{#if:{{{po 18|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 18 vlajka|}}}|{{{po 18 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 18}}}]]</span> {{!}}{{!}} [[{{{po 18}}}]] {{!}}- }} |} |} |}</includeonly><noinclude> {{Documentation}} </noinclude> rj9ptuoc8tjqp5tyzho56s4o2ak1mdi 169563 169562 2026-09-14T01:15:20Z Halajkovič 33393 169563 wikitext text/x-wiki <!-- Шаблона адаптована зо словацкой Infobox zaniknutý štát --> <includeonly>{| class="infobox" cellpadding="0" style="border-collapse: collapse; border: 1px solid var(--border-color-base, #CCC); float: right; margin: 0 0 1em 1em; width: 300px;font-size:89%; color: var(--color-base, #202122);" | colspan="3" style="background-color: var(--background-color-neutral, #eaeaea); color: var(--color-base, #202122); text-align: center" | <span style="font-size:125%">'''{{{názov}}}{{#if: {{{originálny názov|}}}|<br />''{{{originálny názov}}}''}}{{#if: {{{originálny názov arabsky|}}}|<br /><big>{{{originálny názov arabsky}}}</big>}}'''</span> {| cellpadding="4" width=100% style="background-color: var(--background-color-base, #fff); color: var(--color-base, #202122); border-top: 1px solid var(--border-color-base, #CCC); font-size:111%" | width=33% style="text-align: left;vertical-align:top" | {{#ifeq: {{{viac pred|}}} | áno | [[#pred-po|↓]] |{{#if:{{{pred 1|}}}|[[{{{pred 1}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 1 vlajka|}}}|{{{pred 1 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 1}}}{{!}}{{{pred 1}}}]]}} {{#if:{{{pred 2|}}}|<br />[[{{{pred 2}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 2 vlajka|}}}|{{{pred 2 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 2}}}{{!}}{{{pred 2}}}]]}} {{#if:{{{pred 3|}}}|<br />[[{{{pred 3}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 3 vlajka|}}}|{{{pred 3 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 3}}}{{!}}{{{pred 3}}}]]}} {{#if:{{{pred 4|}}}|<br />[[{{{pred 4}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 4 vlajka|}}}|{{{pred 4 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 4}}}{{!}}{{{pred 4}}}]]}} {{#if:{{{pred 5|}}}|<br />[[{{{pred 5}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 5 vlajka|}}}|{{{pred 5 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 5}}}{{!}}{{{pred 5}}}]]}} {{#if:{{{pred 6|}}}|<br />[[{{{pred 6}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 6 vlajka|}}}|{{{pred 6 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 6}}}{{!}}{{{pred 6}}}]]}} {{#if:{{{pred 7|}}}|<br />[[{{{pred 7}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 7 vlajka|}}}|{{{pred 7 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 7}}}{{!}}{{{pred 7}}}]]}} {{#if:{{{pred 8|}}}|<br />[[{{{pred 8}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 8 vlajka|}}}|{{{pred 8 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 8}}}{{!}}{{{pred 8}}}]]}} {{#if:{{{pred 9|}}}|<br />[[{{{pred 9}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 9 vlajka|}}}|{{{pred 9 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 9}}}{{!}}{{{pred 9}}}]]}} {{#if:{{{pred 10|}}}|<br />[[{{{pred 10}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 10 vlajka|}}}|{{{pred 10 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 10}}}{{!}}{{{pred 10}}}]]}} {{#if:{{{pred 11|}}}|<br />[[{{{pred 11}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 11 vlajka|}}}|{{{pred 11 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 11}}}{{!}}{{{pred 11}}}]]}} {{#if:{{{pred 12|}}}|<br />[[{{{pred 12}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 12 vlajka|}}}|{{{pred 12 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 12}}}{{!}}{{{pred 12}}}]]</span>}} {{#if:{{{pred 13|}}}|<br />[[{{{pred 13}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 13 vlajka|}}}|{{{pred 13 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 13}}}{{!}}{{{pred 13}}}]]}} {{#if:{{{pred 14|}}}|<br />[[{{{pred 14}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 14 vlajka|}}}|{{{pred 14 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 14}}}{{!}}{{{pred 14}}}]]}} {{#if:{{{pred 15|}}}|<br />[[{{{pred 15}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 15 vlajka|}}}|{{{pred 15 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 15}}}{{!}}{{{pred 15}}}]]}} {{#if:{{{pred 16|}}}|<br />[[{{{pred 16}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 16 vlajka|}}}|{{{pred 16 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 16}}}{{!}}{{{pred 16}}}]]}} {{#if:{{{pred 17|}}}|<br />[[{{{pred 17}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 17 vlajka|}}}|{{{pred 17 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 17}}}{{!}}{{{pred 17}}}]]}} {{#if:{{{pred 18|}}}|<br />[[{{{pred 18}}}{{!}}←]]&nbsp;[[Файл:{{#if:{{{pred 18 vlajka|}}}|{{{pred 18 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{pred 18}}}{{!}}{{{pred 18}}}]]}} }} | width=33% style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); text-align: center;vertical-align:top" | '''{{{rok vzniku}}} – {{{rok zániku}}}'''{{#if:{{{rok vzniku 2|}}}|<br />'''{{{rok vzniku 2}}} – {{{rok zániku 2}}}'''}}{{#if:{{{rok vzniku 3|}}}|<br />'''{{{rok vzniku 3}}} – {{{rok zániku 3}}}'''}} | width=33% style="text-align: right;vertical-align:top" | {{#ifeq: {{{viac po|}}} | áno | [[#pred-po|↓]] | [[Файл:{{#if:{{{po 1 vlajka|}}}|{{{po 1 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 1}}}{{!}}{{{po 1}}}]]&nbsp;[[{{{po 1}}}{{!}}→]] {{#if:{{{po 2|}}}|<br />[[Файл:{{#if:{{{po 2 vlajka|}}}|{{{po 2 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 2}}}{{!}}{{{po 2}}}]]&nbsp;[[{{{po 2}}}{{!}}→]]}} {{#if:{{{po 3|}}}|<br />[[Файл:{{#if:{{{po 3 vlajka|}}}|{{{po 3 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 3}}}{{!}}{{{po 3}}}]]&nbsp;[[{{{po 3}}}{{!}}→]]}} {{#if:{{{po 4|}}}|<br />[[Файл:{{#if:{{{po 4 vlajka|}}}|{{{po 4 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 4}}}{{!}}{{{po 4}}}]]&nbsp;[[{{{po 4}}}{{!}}→]]}} {{#if:{{{po 5|}}}|<br />[[Файл:{{#if:{{{po 5 vlajka|}}}|{{{po 5 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 5}}}{{!}}{{{po 5}}}]]&nbsp;[[{{{po 5}}}{{!}}→]]}} {{#if:{{{po 6|}}}|<br />[[Файл:{{#if:{{{po 6 vlajka|}}}|{{{po 6 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 6}}}{{!}}{{{po 6}}}]]&nbsp;[[{{{po 6}}}{{!}}→]]}} {{#if:{{{po 7|}}}|<br />[[Файл:{{#if:{{{po 7 vlajka|}}}|{{{po 7 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 7}}}{{!}}{{{po 7}}}]]&nbsp;[[{{{po 7}}}{{!}}→]]}} {{#if:{{{po 8|}}}|<br />[[Файл:{{#if:{{{po 8 vlajka|}}}|{{{po 8 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 8}}}{{!}}{{{po 8}}}]]&nbsp;[[{{{po 8}}}{{!}}→]]}} {{#if:{{{po 9|}}}|<br />[[Файл:{{#if:{{{po 9 vlajka|}}}|{{{po 9 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 9}}}{{!}}{{{po 9}}}]]&nbsp;[[{{{po 9}}}{{!}}→]]}} {{#if:{{{po 10|}}}|<br />[[Файл:{{#if:{{{po 10 vlajka|}}}|{{{po 10 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 10}}}{{!}}{{{po 10}}}]]&nbsp;[[{{{po 10}}}{{!}}→]]}} {{#if:{{{po 11|}}}|<br />[[Файл:{{#if:{{{po 11 vlajka|}}}|{{{po 11 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 11}}}{{!}}{{{po 11}}}]]&nbsp;[[{{{po 11}}}{{!}}→]]}} {{#if:{{{po 12|}}}|<br />[[Файл:{{#if:{{{po 12 vlajka|}}}|{{{po 12 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 12}}}{{!}}{{{po 12}}}]]&nbsp;[[{{{po 12}}}{{!}}→]]}} {{#if:{{{po 13|}}}|<br />[[Файл:{{#if:{{{po 13 vlajka|}}}|{{{po 13 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 13}}}{{!}}{{{po 13}}}]]&nbsp;[[{{{po 13}}}{{!}}→]]}} {{#if:{{{po 14|}}}|<br />[[Файл:{{#if:{{{po 14 vlajka|}}}|{{{po 14 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 14}}}{{!}}{{{po 14}}}]]&nbsp;[[{{{po 14}}}{{!}}→]]}} {{#if:{{{po 15|}}}|<br />[[Файл:{{#if:{{{po 15 vlajka|}}}|{{{po 15 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 15}}}{{!}}{{{po 15}}}]]&nbsp;[[{{{po 15}}}{{!}}→]]}} {{#if:{{{po 16|}}}|<br />[[Файл:{{#if:{{{po 16 vlajka|}}}|{{{po 16 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 16}}}{{!}}{{{po 16}}}]]&nbsp;[[{{{po 16}}}{{!}}→]]}} {{#if:{{{po 17|}}}|<br />[[Файл:{{#if:{{{po 17 vlajka|}}}|{{{po 17 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 17}}}{{!}}{{{po 17}}}]]&nbsp;[[{{{po 17}}}{{!}}→]]}} {{#if:{{{po 18|}}}|<br />[[Файл:{{#if:{{{po 18 vlajka|}}}|{{{po 18 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}link={{{po 18}}}{{!}}{{{po 18}}}]]&nbsp;[[{{{po 18}}}{{!}}→]]}} }} |} {{#if: {{{vlajka|}}}{{{znak|}}} | {{{!}} cellpadding="4" width=100% style="background-color: var(--background-color-base, #fff); color: var(--color-base, #202122); border-top: 1px solid var(--border-color-base, #CCC);" {{#if:{{{vlajka|}}} | {{!}} width=50% style="text-align: center" {{!}} [[Файл:{{{vlajka}}}{{!}}{{#if:{{{vlajka veľkosť|}}}|{{{vlajka veľkosť}}}|125px}}{{!}}Застава державы|border]]<br />{{#if:{{{článok o vlajke|}}}|{{{článok o vlajke}}}|застава}}}} {{#if:{{{znak|}}} | {{!}} width=50% style="text-align: center" {{!}} [[Файл:{{{znak}}}{{!}}{{#if:{{{znak veľkosť|}}}|{{{znak veľkosť}}}|85px}}{{!}} {{#ifeq:{{{rámček znak|}}}|áno|border{{!}}}} Герб державы]]<br />{{#if:{{{článok o znaku|}}}|{{{článok o znaku}}}|герб}}}} {{!}}} }} |- {{#if: {{{hymna|}}} | {{!}} colspan="3" style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border-top: 1px solid var(--border-color-base, #CCC); text-align: center;" {{!}} '''[[Народна гімна|Гимна]]:''' ''{{#if: {{{článok o hymne|}}} | [[{{{článok o hymne}}}|{{{hymna}}}]] | {{{hymna}}} }}'' {{!}}- }} {{#if: {{{motto|}}} | {{!}} colspan="3" style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border-top: 1px solid var(--border-color-base, #CCC); text-align: center;" {{!}} '''[[Девіза|Гесло]]:''' ''{{#if: {{{článok o mottu|}}} | [[{{{článok o mottu}}}|{{{motto}}}]] | {{{motto}}} }}'' {{#if:{{{motto preklad|}}}|<br />({{{motto preklad}}}) }} {{!}}- }} | colspan="3" style="background-color: var(--background-color-neutral, #eaeaea); color: var(--color-base, #202122); border-top: 1px solid var(--border-color-base, #CCC); text-align: center;" | '''География''' {{#if: {{{mapa|}}} | {{{!}} width=100% style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border-top: 1px solid var(--border-color-base, #CCC);padding-bottom:0;" {{!}} colspan="2" {{!}} [[Файл:{{{mapa}}}{{!}}{{#if:{{{mapa veľkosť|}}}|{{{mapa veľkosť}}}|290px}}{{!}}Mapa štátu]] {{#if: {{{mapa poznámka|}}} | <br />{{{mapa poznámka}}} }} {{!}}} }} |- | width=35% style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" | <div style="margin-left:.2em">[[Головне місто|Главный город]]</div> | style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" | <div style="margin-left:.2em">{{{hlavné mesto}}}</div> |- {{#if: {{{rozloha|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Розлога</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{rozloha}}} km² {{#if: {{{rozloha poznámka|}}}|<small>{{{rozloha poznámka}}}</small>}}</div> {{!}}- }} {{#if: {{{najvyšší bod|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Найвысша точка</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{najvyšší bod}}} {{#if: {{{najvyšší bod poznámka|}}}|<small>{{{najvyšší bod poznámka}}}</small>}}</div> {{!}}- }} {{#if: {{{najdlhšia rieka|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Найдовгша рѣка</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{najdlhšia rieka}}} {{#if: {{{najdlhšia rieka poznámka|}}}|<small>{{{najdlhšia rieka poznámka}}}</small>}}</div> {{!}}- }} | colspan="3" style="background-color: var(--background-color-neutral, #eaeaea); color: var(--color-base, #202122); border-top: 1px solid var(--border-color-base, #CCC); border-bottom: 1px solid var(--border-color-base, #CCC); text-align: center;" | '''Обывательство''' |- {{#if: {{{počet obyvateľov|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Число</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{počet obyvateľov}}} {{#if: {{{počet obyvateľov poznámka|}}}|<small>{{{počet obyvateľov poznámka}}}</small>}}</div> {{!}}- }} {{#if: {{{národnostné zloženie|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Народностне зложѣня</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{národnostné zloženie}}}</div> {{!}}- }} {{#if: {{{jazyky|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">[[Язык]]ы</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{jazyky}}}</div> {{!}}- }} {{#if: {{{náboženstvo|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">[[Набоженство]]</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{náboženstvo}}}</div> {{!}}- }} | colspan="3" style="background-color: var(--background-color-neutral, #eaeaea); color: var(--color-base, #202122); border-top: 1px solid var(--border-color-base, #CCC); border-bottom: 1px solid var(--border-color-base, #CCC); text-align: center;" | '''Державна организация''' |- | style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" | <div style="margin-left:.2em">Форма влады</div> | style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" | <div style="margin-left:.2em">{{{štátne zriadenie}}}</div> |- {{#if: {{{materský štát|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Материнскый штат</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);margin: 1em" {{!}} <div style="margin-left:.2em">{{{materský štát}}}</div> {{!}}- }} {{#if: {{{mena|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">[[Валута]]</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{mena}}}</div> {{!}}- }} {{#if: {{{predstaviteľ|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{titul predstavitelia|'''Predstaviteľ'''}}}</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{predstaviteľ}}}</div> {{!}}- }} {{#if: {{{predstaviteľ 2|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{titul predstavitelia 2|'''Predstaviteľ 2'''}}}</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{predstaviteľ 2}}}</div> {{!}}- }} {{#if: {{{vznik|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Взник</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);margin: 1em" {{!}} <div style="margin-left:.2em">{{{vznik}}}</div> {{!}}- }} {{#if: {{{zánik|}}} | {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">Заник</div> {{!}} style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); border: 1px solid var(--border-color-base, #CCC);" {{!}} <div style="margin-left:.2em">{{{zánik}}}</div> {{!}}- }} | colspan="2" | {| width=99% style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); text-align:left; margin:0 auto;" | {{#if: {{{širka 1. stĺpca|}}}|width={{{šírka 1. stĺpca}}}%|width=50% }} valign="top" | <span id="pred-po"></span>'''Предходникы:''' {| style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); margin-right:.5em;margin-left:-3px" {{#if: {{{pred info|}}} | <br />{{{pred info}}} }} {{#if:{{{pred 1|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 1 vlajka|}}}|{{{pred 1 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 1}}}]]</span> {{!}}{{!}} [[{{{pred 1}}}]] {{!}}- }} {{#if:{{{pred 2|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 2 vlajka|}}}|{{{pred 2 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 2}}}]]</span> {{!}}{{!}} [[{{{pred 2}}}]] {{!}}- }} {{#if:{{{pred 3|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 3 vlajka|}}}|{{{pred 3 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 3}}}]]</span> {{!}}{{!}} [[{{{pred 3}}}]] {{!}}- }} {{#if:{{{pred 4|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 4 vlajka|}}}|{{{pred 4 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 4}}}]]</span> {{!}}{{!}} [[{{{pred 4}}}]] {{!}}- }} {{#if:{{{pred 5|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 5 vlajka|}}}|{{{pred 5 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 5}}}]]</span> {{!}}{{!}} [[{{{pred 5}}}]] {{!}}- }} {{#if:{{{pred 6|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 6 vlajka|}}}|{{{pred 6 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 6}}}]]</span> {{!}}{{!}} [[{{{pred 6}}}]] {{!}}- }} {{#if:{{{pred 7|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 7 vlajka|}}}|{{{pred 7 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 7}}}]]</span> {{!}}{{!}} [[{{{pred 7}}}]] {{!}}- }} {{#if:{{{pred 8|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 8 vlajka|}}}|{{{pred 8 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 8}}}]]</span> {{!}}{{!}} [[{{{pred 8}}}]] {{!}}- }} {{#if:{{{pred 9|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 9 vlajka|}}}|{{{pred 9 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 9}}}]]</span> {{!}}{{!}} [[{{{pred 9}}}]] {{!}}- }} {{#if:{{{pred 10|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 10 vlajka|}}}|{{{pred 10 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 10}}}]]</span> {{!}}{{!}} [[{{{pred 10}}}]] {{!}}- }} {{#if:{{{pred 11|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 11 vlajka|}}}|{{{pred 11 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 11}}}]]</span> {{!}}{{!}} [[{{{pred 11}}}]] {{!}}- }} {{#if:{{{pred 12|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 12 vlajka|}}}|{{{pred 12 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 12}}}]]</span> {{!}}{{!}} [[{{{pred 12}}}]] {{!}}- }} {{#if:{{{pred 13|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 13 vlajka|}}}|{{{pred 13 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 13}}}]]</span> {{!}}{{!}} [[{{{pred 13}}}]] {{!}}- }} {{#if:{{{pred 14|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 14 vlajka|}}}|{{{pred 14 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 14}}}]]</span> {{!}}{{!}} [[{{{pred 14}}}]] {{!}}- }} {{#if:{{{pred 15|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 15 vlajka|}}}|{{{pred 15 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 15}}}]]</span> {{!}}{{!}} [[{{{pred 15}}}]] {{!}}- }} {{#if:{{{pred 16|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 16 vlajka|}}}|{{{pred 16 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 16}}}]]</span> {{!}}{{!}} [[{{{pred 16}}}]] {{!}}- }} {{#if:{{{pred 17|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 17 vlajka|}}}|{{{pred 17 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 17}}}]]</span> {{!}}{{!}} [[{{{pred 17}}}]] {{!}}- }} {{#if:{{{pred 18|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{pred 18 vlajka|}}}|{{{pred 18 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{pred 18}}}]]</span> {{!}}{{!}} [[{{{pred 18}}}]] {{!}}- }} |} | valign="top" | '''Наступникы:''' {| style="background-color: var(--background-color-neutral-subtle, #f9f9f9); color: var(--color-base, #202122); margin-left:-3px" | <span class="framedpicture">[[Файл:{{#if:{{{po 1 vlajka|}}}|{{{po 1 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 1}}}]]</span> || [[{{{po 1}}}]] |- {{#if:{{{po 2|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 2 vlajka|}}}|{{{po 2 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 2}}}]]</span> {{!}}{{!}} [[{{{po 2}}}]] {{!}}- }} {{#if:{{{po 3|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 3 vlajka|}}}|{{{po 3 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 3}}}]]</span> {{!}}{{!}} [[{{{po 3}}}]] {{!}}- }} {{#if:{{{po 4|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 4 vlajka|}}}|{{{po 4 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 4}}}]]</span> {{!}}{{!}} [[{{{po 4}}}]] {{!}}- }} {{#if:{{{po 5|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 5 vlajka|}}}|{{{po 5 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 5}}}]]</span> {{!}}{{!}} [[{{{po 5}}}]] {{!}}- }} {{#if:{{{po 6|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 6 vlajka|}}}|{{{po 6 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 6}}}]]</span> {{!}}{{!}} [[{{{po 6}}}]] {{!}}- }} {{#if:{{{po 7|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 7 vlajka|}}}|{{{po 7 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 7}}}]]</span> {{!}}{{!}} [[{{{po 7}}}]] {{!}}- }} {{#if:{{{po 8|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 8 vlajka|}}}|{{{po 8 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 8}}}]]</span> {{!}}{{!}} [[{{{po 8}}}]] {{!}}- }} {{#if:{{{po 9|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 9 vlajka|}}}|{{{po 9 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 9}}}]]</span> {{!}}{{!}} [[{{{po 9}}}]] {{!}}- }} {{#if:{{{po 10|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 10 vlajka|}}}|{{{po 10 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 10}}}]]</span> {{!}}{{!}} [[{{{po 10}}}]] {{!}}- }} {{#if:{{{po 11|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 11 vlajka|}}}|{{{po 11 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 11}}}]]</span> {{!}}{{!}} [[{{{po 11}}}]] {{!}}- }} {{#if:{{{po 12|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 12 vlajka|}}}|{{{po 12 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 12}}}]]</span> {{!}}{{!}} [[{{{po 12}}}]] {{!}}- }} {{#if:{{{po 13|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 13 vlajka|}}}|{{{po 13 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 13}}}]]</span> {{!}}{{!}} [[{{{po 13}}}]] {{!}}- }} {{#if:{{{po 14|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 14 vlajka|}}}|{{{po 14 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 14}}}]]</span> {{!}}{{!}} [[{{{po 14}}}]] {{!}}- }} {{#if:{{{po 15|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 15 vlajka|}}}|{{{po 15 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 15}}}]]</span> {{!}}{{!}} [[{{{po 15}}}]] {{!}}- }} {{#if:{{{po 16|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 16 vlajka|}}}|{{{po 16 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 16}}}]]</span> {{!}}{{!}} [[{{{po 16}}}]] {{!}}- }} {{#if:{{{po 17|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 17 vlajka|}}}|{{{po 17 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 17}}}]]</span> {{!}}{{!}} [[{{{po 17}}}]] {{!}}- }} {{#if:{{{po 18|}}} | {{!}}<span class="framedpicture">[[Файл:{{#if:{{{po 18 vlajka|}}}|{{{po 18 vlajka}}}|Flag of None.svg}}{{!}}25px{{!}}border{{!}}{{{po 18}}}]]</span> {{!}}{{!}} [[{{{po 18}}}]] {{!}}- }} |} |} |}</includeonly><noinclude> {{Documentation}} </noinclude> lpldb1jemb7ivk95vxdww1qsyuua5zj Шаблона:Не поплетьте 10 14085 169544 156950 2026-09-13T22:34:03Z Flipdot 23893 169544 wikitext text/x-wiki :''{{#if:{{{за|}}}|Тото статя за {{{3|}}}.&#32;}}Не поплетьте з {{#if:{{{text|}}}|{{{text|}}}.|[[{{{1|<noinclude>Назва статі</noinclude>}}}]]{{#if:{{{2|}}}|&nbsp;або [[{{{2|}}}]].|.}}''}} <noinclude> {{documentation}} <templatedata> { "params": { "1": { "aliases": [ "друга статя" ], "description": "Назывка другої статі, на котру ся буде удкликовати шаблон", "required": true }, "2": { "aliases": [ "третя статя" ], "description": "Назывка щи єдної статі, на котру ся буде удкликовати шаблон." }, "текст": { "aliases": [ "text" ], "description": "Свуй текст умісто удкликовань" }, "за": { "description": "Кідь сесь параметер зазначеный, на зачаткови шаблона буде текст „Тото статя за {{{значіня}}}“. Жадат акузатив." } }, "paramOrder": [ "1", "2", "текст", "за" ] } </templatedata></noinclude> tq9qzihfhii4ut18j0ghdamb0kw1ibh 169546 169544 2026-09-13T22:40:46Z Flipdot 23893 169546 wikitext text/x-wiki :''{{#if:{{{за|}}}|Тото статя за {{{за|}}}.&#32;}}Не поплетьте з {{#if:{{{text|}}}|{{{text|}}}.|[[{{{1|<noinclude>Назва статі</noinclude>}}}]]{{#if:{{{2|}}}|&nbsp;або [[{{{2|}}}]].|.}}''}} <noinclude> {{documentation}} <templatedata> { "params": { "1": { "aliases": [ "друга статя" ], "description": "Назывка другої статі, на котру ся буде удкликовати шаблон", "required": true }, "2": { "aliases": [ "третя статя" ], "description": "Назывка щи єдної статі, на котру ся буде удкликовати шаблон." }, "текст": { "aliases": [ "text" ], "description": "Свуй текст умісто удкликовань" }, "за": { "description": "Кідь сесь параметер зазначеный, на зачаткови шаблона буде текст „Тото статя за {{{значіня}}}“. Жадат акузатив." } }, "paramOrder": [ "1", "2", "текст", "за" ] } </templatedata></noinclude> dcf34d25j6p3b6xehjo1rkzzu66t96e 169548 169546 2026-09-13T22:42:37Z Flipdot 23893 169548 wikitext text/x-wiki :''{{#if:{{{за|}}}|Тото статя за {{{за|}}}.&#32;}}Не поплетьте з {{#if:{{{текст|}}}|{{{текст|}}}.|[[{{{1|<noinclude>Назва статі</noinclude>}}}]]{{#if:{{{2|}}}|&nbsp;або [[{{{2|}}}]].|.}}''}} <noinclude> {{documentation}} <templatedata> { "params": { "1": { "aliases": [ "друга статя" ], "description": "Назывка другої статі, на котру ся буде удкликовати шаблон", "required": true }, "2": { "aliases": [ "третя статя" ], "description": "Назывка щи єдної статі, на котру ся буде удкликовати шаблон." }, "текст": { "aliases": [ "text" ], "description": "Свуй текст умісто удкликовань" }, "за": { "description": "Кідь сесь параметер зазначеный, на зачаткови шаблона буде текст „Тото статя за {{{значіня}}}“. Жадат акузатив." } }, "paramOrder": [ "1", "2", "текст", "за" ] } </templatedata></noinclude> 2i0x0ovfmxc47wsibmscjng0e37ebby Александер Зозуляк 0 15927 169559 168561 2026-09-13T23:58:42Z InternetArchiveBot 22034 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 169559 wikitext text/x-wiki {{Особа проста |Имя= Александер Зозуляк |Имя_оригиналне= Alexander Zozuľák {{ref-sk}} |Образчик= {{Фоторамка|Увидьте фото|ширина=100|полога=center|pos=top|капча=http://www.rusynacademy.sk/image/zozulak.gif}} |Чинность= [[новинарь]], выдаватель, русинскый културный працовник, [[малярь]] |Уроджѣня= {{Birth date and age|1953|04|06}} |Мѣсто_роджѣня= [[Пряшов]], [[Чехословакия]] |Упокоеня= <!-- {{Death date and age|20ХХ|ММ|ДД|1963|04|06}} --> |Мѣсто_смерти= |Причина_смерти= |Мѣсто_погребу= }} '''Александер Зозуляк''', {{ref-sk}} ''Alexander Zozuľák'', *[[6. апріль|6. апрѣль]] [[1953]], [[Пряшов]] — [[новинарь]], выдаватель, русинскый културный працовник, [[малярь]]. З його йменом звязане выданя понад 100 титулох в русинском языку (учебникы, красна литература, фаховы книгы).<ref>{{Cite web |author= Táňa Rundesová |title= Rusínske kalendárium |url= https://www.rusyn.sk/11192-sk/rusinske-kalendarium/ |accessdate= 2023-04-06}}{{ref-sk}}</ref> Сын [[Василь Зозуляк|Василя Зозуляка]], украинского [[Писатель|писателя]] выходной [[Словакия|Словакии]], выштудовав украинску середню школу (1971) ай [[ Универзита Павла Йозефа Шафарика|Шафарикову Универзиту]] в [[Пряшов]]ѣ (1976). Працовав яко редактор, од року 1989 шефредактор украинскоязычного тыжденника ''Нове життя'', де ся поступно родив русинскоязычный додаток ''Голос Русинів'' (регуларно зачав выходити на двох сторонах в рамках ''Нового життя'' од януара 1990). По падѣ комунистичного режима, в новембрѣ 1989 А.&nbsp;Зозуляк заложив новы периодикы — ''Русин'' (1990) и ''[[Народны новинкы]]'' (1991) и зачав формовати нову редакцию з тимом бывшых редакторок украинскых выдань: [[Анна Кузмякова|Аннов Кузмяковов]], [[Марія Мальцовска|Маріёв Мальцовсков]], [[Анна Плїшкова|Аннов Плїшковов]] и [[Кветослава Копорова|Кветославов Копоровов]].<ref name="Magocsi">Paul Robert Magocsi</ref> В року 2005 зоз канадскым [[меценаш]]ом [[Стивен Чепа|Стивеном Чепом]] заложив интернетовый сайт ''Академія русиньской културы'' (www.rusynacademy.sk).<ref name="Koporova">Кветослава Копорова</ref> Одтогды вельо русинскых медий заникли, але тоты жиють доднесь. В сполупраци з [[Василь Турок-Гетеш|Васильом Турком]] и Русинами споза границь А.&nbsp;Зозуляк быв инициатором, сполузакладательом и активным членом [[Русиньска оброда|Русиньской оброды]], Свѣтового конгресу Русинох, инициатором Першого [[Конгрес русинского языка|конгресу русинского языка]], быв и активным участником и организатором процесу кодификации [[Русиньскый язык|русинского языка]]. В области вытварного уменя ся записав до истории, окрем иншого, як организатор Першого меджинародного биенале русинскых малярьох, на котром выставльовав ай свои образы. Фактично одограв вызначну роль як во вшиткых аспектах роботы Русинох Словакии в 90-ых роках минулого стороча, так и в популаризации руху в иншых краинах, кедь быв на функциях предсѣдника и выконного секретаря Свѣтового конгресу Русинох.<ref name="Magocsi2023">Павел Роберт МАҐОЧІЙ</ref> == Жерела и одказы == * {{Cite book |editor= Paul Robert Magocsi, Ivan Pop |author= '''Paul Robert Magocsi''' |chapter= Zozuliak, Aleksander / Zozuľák, Alexander |title= //Encyclopedia of Rusyn History and Culture |year= 2002 |url= https://archive.org/details/encyclopediaofru0000mago |location= Toronto Buffalo London |publisher= University of Toronto Press, 2005 |edition= Revised and expanded |pages= |doi= 10.3138/9781442674431 |isbn= 0-8020-3566-3 |page= 554 }}{{ref-en}} * '''Зозуляк А.''': [https://web.archive.org/web/20090717080604/http://www.rusynacademy.sk/rusynski/zozulak.htm Акцептація норматівности в русиньскій публіцістіцї в Словакії]. Ін: Русиньскый язык меджі двома конґресами. Зборник рефератів з ІІІ. Меджінародного конґресу русиньского языка, Краків, 13. – 16. 9. 2007. Aнна Плїшкова, едіторка. Пряшів: Світовый конґрес Русинів, Інштітут русиньского языка і културы ПУ, 2008, с. 103-112, {{ISBN| 978-80-8068-896-7}} * {{Cite web |author= '''Кветослава Копорова''' |url= http://rusynlit.sk/index.php/2019/04/15/935/#_ftn7 |title= Народный будитель Русинів – Александер Зозуляк (Ід 65-ым народенинам єдной з найвыразнїшых особностей русиньского руху на переломі 20. і 21. стороча) |accessdate= 2023-04-06}} * {{Cite web |author= '''Павел Роберт МАҐОЧІЙ''' |url= http://www.cms3.rusynacademy.sk/?4-4-2023-Жыва-леґенда&fbclid=IwAR0FKK2RSp-rnuoJfmkHdDxlMtepC9ZZu4LFqC0BbB5luYEOnIJBbZ1jJMw |title= Жыва леґенда |accessdate= 2023-04-06}} == Референції == {{reflist}} {{Lifetime|1953||Зозуляк, Александер}} [[Катеґорія:Русиньскы новинаре]] sdezjrxqysnbw0l5zfxn10cc059hci9 Польска гімна 0 19034 169574 165954 2026-09-14T02:16:20Z Halajkovič 33393 169574 wikitext text/x-wiki [[Файл:Piesn Legionow - Jeszcze Polska nie zginela (76123473) (cropped).jpg|thumb|right|200px]] '''Польска гімна''', знама ай як '''Домбровского мазурка''' ({{lang-pl|Mazurek Dąbrowskiego}} {{IPA|[maˈzurɛk dɔmbrɔfˈskjɛɡɔ]}}) є штатна гімна [[Польско|Польской републікы]], поменована по польскім народнім ґероёви Янови Генрикови Домбровскім. === Історія піснї === Оріґінална назва была „Пісня польскых леґій в Таліаньску“ ({{lang-pl|Pieśń Legionów Polskich we Włoszech}}). Юзеф Выбіцкый написав текст в роцї 1797 – т. є. два рокы по тім, што [[Польско-литовска уния (1569–1795)#История|третє роздїлїня Польска]] привело конець Польско-литовской шляхтічной републікы – в североталіаньскім містї Реджо Емілія, котре в тім часї належало до новозаложеной Цізалпіньской републікы, наполеоньскому сателітному штату. Выбіцкый там еміґровав по роздїлїнях Польска, таксамо як дакотры далшы повсталцї з Косьцюшкового повстаня. Меджі нима быв ай Ян Генрик Домбровскый, котрый дав гімнї єй днешню назву. Із згодов Наполеона зорґанізовав в роцї 1797 воєньскы зъєдинїня польскых добровольників на ослободжіня отцюзнины. То є ясне ай з гімны, коли ся в нїй споминать, же Домбровскый мать вести свої войска з Таліаньска до Польска. Найперше єднак они боёвали проти Ракушан в севернім Таліаньску на охрану новой републікы. Екзістовала надїя, же Наполеон на знак вдякы підпорить обновлїня польского штату. Намісто того в роцї 1807 заложыв Варшавске князївство, котре было лем далшым сателітним штатом Франції. Походжіня мелодії не є знаме. Предпокладать ся, же Выбіцкый підложыв свій текст мелодіёв мазуркы, котра была популарна уж в 18. сторочу. Композіція была даякый час приписована Міхалови Клеофасови Оґіньскому, протоже ся в нїй предпокладала ёго ''Marche pour les Légions polonaises''. Одколи єднак были в роцї 1938 найджены ноты той композіції, є ясне, же іде о іншу мелодію. В роцї 1830 ся пісня співала почас новембрового повстаня, в роцї 1863 почас януарового повстаня, меджі польскыма еміґрантами, в роцї 1905 почас російской револуції, як ай почас [[Перша світова война|першой]] і [[Друга світова война|другой світовой войны]]. ''Mazurek Dąbrowskiego'' быв переложеный і співаный в 17 языках поетами, котры ся солідарно стотожнили з боюючім Польском. Почас яри народів в роцї 1848 ся ''Mazurek Dąbrowskiego'' співав на уліцях [[Відень|Відня]], [[Берлін]]а і [[Прага|Прагы]], де ся тїшив великій популарности. Служыла як взір (мелодія і текст) про словацького поета [[Само Томашік|Сама Томашіка]], котрый в роцї 1834 написав пісню ''Hej Sloveni'' („[[Гей, Славяне]]“). В роцї 1848 ся в Празї одбыв Славяньскый конґрес, де была пісня ''Hej Sloveni'' прията за гімну вшыткых Славян. По роцї 1945 ся пісня стала ай штатнов гімнов [[Социалистична Федеративна Република Югославия|Югославії]], дарьмо з одлишностями в темпі і на концї. Од 26. фебруара 1927 є ''Mazurek Dąbrowskiego'' офіціално штатнов гімнов Польска. Текст ся мірно одлишать од оріґіналной „Піснї польскых леґій в Таліаньску“. l4lim6dfsrss4lxlf4rcvcbvud47xcm 169575 169574 2026-09-14T02:38:53Z Halajkovič 33393 169575 wikitext text/x-wiki {{Діалект|Пряшівскый діалект русиньского языка|пряшівскым діалектом|пряшівскый}} '''Польска гімна''', знама ай як '''Домбровского мазурка''' ({{lang-pl|Mazurek Dąbrowskiego}} {{IPA|[maˈzurɛk dɔmbrɔfˈskjɛɡɔ]}}) є штатна гімна [[Польско|Польской републікы]], поменована по польскім народнім ґероёви Янови Генрикови Домбровскім. === Історія піснї === [[File:Piesn Legionow - Jeszcze Polska nie zginela (76123473) (cropped).jpg|thumb|Єдна з серії поглядніць, котру предложыв Юліуш Коссак і котра зображує текст „Домбровского мазуркы“]] Оріґінална назва была „Пісня польскых леґій в Таліаньску“ ({{lang-pl|Pieśń Legionów Polskich we Włoszech}}). Юзеф Выбіцкый написав текст в роцї [[1797]] – т. є. два рокы по тім, што [[Польско-литовска уния (1569–1795)#История|третє роздїлїня Польска]] привело конець Польско-литовской шляхтічной републікы – в североталіаньскім містї Реджо Емілія, котре в тім часї належало до новозаложеной Цізалпіньской републікы, наполеоньскому сателітному штату.<ref name="Muzeum">{{cite web |url=https://muzhp.pl/wiedza-on-line/mazurek-dabrowskiego |title=Mazurek Dąbrowskiego |publisher=Muzeum Historii Polski |language=pl |accessdate=2026-09-14}}</ref> Выбіцкый там еміґровав по роздїлїнях Польска, таксамо як дакотры далшы повсталцї з Косьцюшкового повстаня. Меджі нима быв ай Ян Генрик Домбровскый, котрый дав гімнї єй днешню назву. Із згодов Наполеона зорґанізовав в роцї 1797 воєньскы зъєдинїня польскых добровольників на ослободжіня отцюзнины. То є ясне ай з гімны, коли ся в нїй споминать, же Домбровскый мать вести свої войска з Таліаньска до Польска. Найперше єднак они боёвали проти Ракушан в севернім Таліаньску на охрану новой републікы. Екзістовала надїя, же Наполеон на знак вдякы підпорить обновлїня польского штату. Намісто того в роцї 1807 заложыв Варшавске князївство, котре было лем далшым сателітним штатом Франції. Походжіня мелодії не є знаме. Предпокладать ся, же Выбіцкый підложыв свій текст мелодіёв мазуркы, котра была популарна уж в [[XVIII. стороча|18. сторочу]]. Композіція была даякый час приписована Міхалови Клеофасови Оґіньскому, протоже ся в нїй предпокладала ёго „Marche pour les Légions polonaises“. Одколи єднак были в роцї 1938 найджены ноты той композіції, є ясне, же іде о іншу мелодію. В роцї [[1830]] ся пісня співала почас новембрового повстаня, в роцї [[1863]] почас януарового повстаня, меджі польскыма еміґрантами, в роцї [[1905]] почас російской револуції, як ай почас [[Перша світова война|Першой]] і [[Друга світова война|Другой світовой войны]]. „Mazurek Dąbrowskiego“ быв переложеный і співаный в 17 языках поетами, котры ся солідарно стотожнили з боюючім Польском. Почас яри народів в роцї 1848 ся ''Mazurek Dąbrowskiego'' співав на уліцях [[Відень|Відня]], [[Берлін]]а і [[Прага|Прагы]], де ся тїшив великій популарности.<ref name="Muzeum"/> Служыла як взір (мелодія і текст) про словацького поета [[Само Томашік|Сама Томашіка]], котрый в роцї 1834 написав пісню „Hej Sloveni“ (<nowiki>„</nowiki>[[Гей, Славяне]]<nowiki>“</nowiki>).<ref>{{cite web |url=https://culture.pl/pl/artykul/szcze-ne-wmerla-ukrajina-historia-ukrainskiego-hymnu |title=„Szcze ne wmerła Ukrajina...”. Historia ukraińskiego hymnu |author=Wojciech Tworek |publisher=Culture.pl |language=pl |date=2022-03-17 |accessdate=2026-09-14}}</ref> В роцї [[1848]] ся в Празї одбыв Славяньскый конґрес, де была пісня „Hej Sloveni“ прията за гімну вшыткых [[Славяне|Славян]]. По роцї 1945 ся пісня стала ай штатнов гімнов [[Социалистична Федеративна Република Югославия|Югославії]], дарьмо з одлишностями в темпі і на концї. Од [[26. фебруара]] [[1927]] є „Mazurek Dąbrowskiego“ офіціално штатнов гімнов [[Рѣчь Посполита II.|Польска]].<ref>{{cite web |url=https://dzieje.pl/aktualnosci/90-lat-temu-mazurek-dabrowskiego-stal-sie-hymnem-polski |title=90 lat temu „Mazurek Dąbrowskiego” stał się hymnem Polski |publisher=Dzieje.pl (Polska Agencja Prasowa) |language=pl |date=2017-02-26 |accessdate=2026-09-14}}</ref> Текст ся мірно одлишать од оріґіналной „Піснї польскых леґій в Таліаньску“. == Референції == {{референції}} 2p66tc5x3jz4kd0oe8cocqa3ylkzx1s 169576 169575 2026-09-14T11:56:34Z Halajkovič 33393 /* Історія піснї */ 169576 wikitext text/x-wiki {{Діалект|Пряшівскый діалект русиньского языка|пряшівскым діалектом|пряшівскый}} '''Польска гімна''', знама ай як '''Домбровского мазурка''' ({{lang-pl|Mazurek Dąbrowskiego}} {{IPA|[maˈzurɛk dɔmbrɔfˈskjɛɡɔ]}}) є штатна гімна [[Польско|Польской републікы]], поменована по польскім народнім ґероёви Янови Генрикови Домбровскім. == Історія піснї == [[File:Piesn Legionow - Jeszcze Polska nie zginela (76123473) (cropped).jpg|thumb|Єдна з серії поглядніць, котру предложыв Юліуш Коссак і котра зображує текст „Домбровского мазуркы“]] Оріґінална назва была „Пісня польскых леґій в Таліаньску“ ({{lang-pl|Pieśń Legionów Polskich we Włoszech}}). Юзеф Выбіцкый написав текст в роцї [[1797]] – т. є. два рокы по тім, што [[Польско-литовска уния (1569–1795)#История|третє роздїлїня Польска]] привело конець Польско-литовской шляхтічной републікы – в североталіаньскім містї Реджо Емілія, котре в тім часї належало до новозаложеной Цізалпіньской републікы, наполеоньскому сателітному штату.<ref name="Muzeum">{{cite web |url=https://muzhp.pl/wiedza-on-line/mazurek-dabrowskiego |title=Mazurek Dąbrowskiego |publisher=Muzeum Historii Polski |language=pl |accessdate=2026-09-14}}</ref> Выбіцкый там еміґровав по роздїлїнях Польска, таксамо як дакотры далшы повсталцї з Косьцюшкового повстаня. Меджі нима быв ай Ян Генрик Домбровскый, котрый дав гімнї єй днешню назву. Із згодов Наполеона зорґанізовав в роцї 1797 воєньскы зъєдинїня польскых добровольників на ослободжіня отцюзнины. То є ясне ай з гімны, коли ся в нїй споминать, же Домбровскый мать вести свої войска з Таліаньска до Польска. Найперше єднак они боёвали проти Ракушан в севернім Таліаньску на охрану новой републікы. Екзістовала надїя, же Наполеон на знак вдякы підпорить обновлїня польского штату. Намісто того в роцї 1807 заложыв Варшавске князївство, котре было лем далшым сателітним штатом Франції. Походжіня мелодії не є знаме. Предпокладать ся, же Выбіцкый підложыв свій текст мелодіёв мазуркы, котра была популарна уж в [[XVIII. стороча|18. сторочу]]. Композіція была даякый час приписована Міхалови Клеофасови Оґіньскому, протоже ся в нїй предпокладала ёго „Marche pour les Légions polonaises“. Одколи єднак были в роцї 1938 найджены ноты той композіції, є ясне, же іде о іншу мелодію. В роцї [[1830]] ся пісня співала почас новембрового повстаня, в роцї [[1863]] почас януарового повстаня, меджі польскыма еміґрантами, в роцї [[1905]] почас російской револуції, як ай почас [[Перша світова война|Першой]] і [[Друга світова война|Другой світовой войны]]. „Mazurek Dąbrowskiego“ быв переложеный і співаный в 17 языках поетами, котры ся солідарно стотожнили з боюючім Польском. Почас яри народів в роцї 1848 ся ''Mazurek Dąbrowskiego'' співав на уліцях [[Відень|Відня]], [[Берлін]]а і [[Прага|Прагы]], де ся тїшив великій популарности.<ref name="Muzeum"/> Служыла як взір (мелодія і текст) про словацького поета [[Само Томашік|Сама Томашіка]], котрый в роцї 1834 написав пісню „Hej Sloveni“ (<nowiki>„</nowiki>[[Гей, Славяне]]<nowiki>“</nowiki>).<ref>{{cite web |url=https://culture.pl/pl/artykul/szcze-ne-wmerla-ukrajina-historia-ukrainskiego-hymnu |title=„Szcze ne wmerła Ukrajina...”. Historia ukraińskiego hymnu |author=Wojciech Tworek |publisher=Culture.pl |language=pl |date=2022-03-17 |accessdate=2026-09-14}}</ref> В роцї [[1848]] ся в Празї одбыв Славяньскый конґрес, де была пісня „Hej Sloveni“ прията за гімну вшыткых [[Славяне|Славян]]. По роцї 1945 ся пісня стала ай штатнов гімнов [[Социалистична Федеративна Република Югославия|Югославії]], дарьмо з одлишностями в темпі і на концї. Од [[26. фебруара]] [[1927]] є „Mazurek Dąbrowskiego“ офіціално штатнов гімнов [[Рѣчь Посполита II.|Польска]].<ref>{{cite web |url=https://dzieje.pl/aktualnosci/90-lat-temu-mazurek-dabrowskiego-stal-sie-hymnem-polski |title=90 lat temu „Mazurek Dąbrowskiego” stał się hymnem Polski |publisher=Dzieje.pl (Polska Agencja Prasowa) |language=pl |date=2017-02-26 |accessdate=2026-09-14}}</ref> Текст ся мірно одлишать од оріґіналной „Піснї польскых леґій в Таліаньску“. == Референції == {{референції}} m8w9nwo4fyggcjlk3l689zznfhp9tci Иван Туряниця (биохемик) 0 19463 169542 168501 2026-09-13T22:20:12Z Flipdot 23893 169542 wikitext text/x-wiki {{Не поплетьте|Иван Туряниця (комунистичный дѣяч)}} {{Особа проста |Имя= Иван Туряниця |Имя_оригиналне= Іван Михайлович Туряниця{{ref-uk}} |Категория_склада= |Образчик= {{Фоторамка|Увидьте фото|align=center|width=90|pos=top |link=https://www.uzhnu.edu.ua/uploads/news/20230410_1902_turyanitsya_Im_(foto).JPG}} |Образчика_подпис= |Чинность= професор УжНУ (биохемия), сполоченскый дѣятель |Уроджѣня= {{Birth date|1943|01|16}} |Мѣсто_роджѣня= [[Микуловцѣ]], [[Мадярске кральовство]] (дн. Украина) |Упокоеня= {{Death date and age|2023|04|09|1943|01|16}} |Мѣсто_смерти= [[Нѣтра]], [[Словакия]] |Причина_смерти= |Мѣсто_погребу=<!-- [[теметов Калвария]], [[Ужгород]] --> }} '''Иван Туряниця''' ({{ref-uk}} ''Іван Михайлович Туряниця''; *[[16. януар]] [[1943]], [[Микуловцѣ]], [[Мадярске кральовство]] (дн. [[Украина]])&nbsp;– †[[9. апріль|9. апрѣль]] [[2023]], [[Нѣтра]], [[Словакия]])&nbsp;— [[професор]] [[Ужгородска народна универзита|УжНУ]] ([[биохемия]]), [[Русины|русинскый]] [[Сполоченство|сполоченскый]] дѣятель.<ref name="Magocsi">Paul Robert Magocsi</ref><ref name="Veselov158">Веселов Всеволод Игоревич, с. 158</ref><ref name="Obituary">Пам’яті професора Івана Михайловича Туряниці</ref> == Педагогична и научна робота == === В Украинѣ === По скончѣню середньой школы в [[Мукачово|Мукачовѣ]] (1959) абсолвовав Черкасскый педагогичный инштитут (1959–1964) и затым выучовав [[Биология|биологию]] и [[хемия|хемию]] в [[школа]]х [[Закарпатска область|Закарпатской области]]. В року 1968 наступив до ашпирантуры медицинской факулты [[Ужгородска народна универзита|Ужгородской державной универзиты]] и наступно зыскав мѣсто старшого научного сотрудника. В року 1971 оборонив кандидатску дизертацию з [[Биохемия|биохемии]], а в року 1988 дизертачну роботу доктора филозофии (Ph.D., на Универзитѣ приятельства народох в Москвѣ). Понад 30&nbsp;рокы преподавав биохемию на медицинской факултѣ [[Ужгородска народна универзита|Ужгородской универзиты]] в статусѣ старшого научного сотрудника (1968), доцента (1988) и професора (1990–2000).<ref name="Magocsi"/><ref name="Veselov158"/> Опубликовав серию робот в области [[Биохемия|биохемии]] и е автором вецерох фармацевтичных патентох.<ref name="Magocsi"/> === В Словакии === В року 2000 быв покликаный до [[Нѣтра|Нѣтры]] професором катедры живлѣня чоловѣка на Словацкой польногосподарской универзитѣ, де працовав до року 2018. Под його веджѣньом 4 ашпиранты здобыли докторат. Опубликовав понад 40 научных робот.<ref name="Obituary"/> === Бечельованя === Резултатами научно-зглядовательской роботы професора Туряницѣ суть понад 400 научных публикаций и 25 патентох. В року 2004 Свѣтовый научный комитет в [[Кембриджска универзита|Кембриджу]] признав його выникаючы здобытя в области биохемии ай вызнаменав го ''дипломов Славы'', а в штудийном року 2008–2009 быв названый ''Чоловѣком року''.<ref name="Obituary"/> == Сполоченска чинность == Иван Туряниця в постсовѣтской добѣ припоив ся ку русинскому руху од самого его зачатку. Отворено выступовав за [[Автономия|автономию]] [[Подкарпатска Русь|Подкарпатской Руси]] в [[Украина|Украинѣ]] и вызнаня [[Русины|Русинох]] за окрему народность. Пропаговав свою позицию в часѣ визитох до [[Европска унія|европскых штатох]] и [[США]], а вдну [[Украина|Украины]] як выбраный репрезентант [[Русины|Русинох]].<ref name="Magocsi"/> 15. фебруара 1992 быв выбраный за предсѣдника ''Общества Карпатскых Русинох'' намѣсто [[Василь Сочка-Боржавин|В.&nbsp;Сочкы-Боржавина]].<ref name="Veselov158" /> В роках 1993–2001 быв членом выконного заряду ''Свѣтовой Рады Русинох''.<ref name="Magocsi" /> В року 1993 створив ''Дочасну владу републикы Подкарпатска Русь'' и став на ей челѣ. В роках 1994–1998 быв посланцьом Областной рады. В року 1999 году „Дочасну владу“ розвязав. В року 2000 одступив з роботы в Ужгородской универзитѣ и выемигровав до словацкой [[Нѣтра|Нѣтры]]. Од {{nowrap|2000-х рокох}} фактично одстранив ся од участи в русинскых акциях.<ref name="Veselov158"/> == Литературна чинность == Иван Туряниця выдав властну поетичну зберьку ''Рудна земле пудкарпатська'' (1999).<ref name="Magocsi"/> == Жерела и одказы == * {{Cite book |editor= Paul Robert Magocsi, Ivan Pop |author=Paul Robert Magocsi |chapter= Turianytsia, Ivan M. |title= //Encyclopedia of Rusyn History and Culture |year= 2002 |url= https://archive.org/details/encyclopediaofru0000mago |location= Toronto Buffalo London |publisher= University of Toronto Press, 2005 |edition= Revised and expanded |pages= |doi= 10.3138/9781442674431 |isbn= 0-8020-3566-3 |page= [https://archive.org/details/encyclopediaofru0000mago/page/503 503] }}{{ref-en}} * {{Cite book |author= Веселов Всеволод Игоревич |title= Русины Закарпатской области Украины: институализация и функционирование общественных организаций в&nbsp;1989–2001&nbsp;гг. |url= https://www.hist.msu.ru/Science/Disser/Veselov.pdf |publisher= Московский государственный университет имени М.&nbsp;В.&nbsp;Ломоносова, исторический факультет, 2016 |location= Москва }}{{ref-ru}} * {{Cite web |title= Пам’яті професора Івана Михайловича Туряниці |url= https://www.uzhnu.edu.ua/uk/news/pamyati-profesora-Ivana-mihajlovicha-turyanitsi.htm |publisher= УжНУ, кафедра біохімії та фармакології |accessdate= 2023-04-11}}{{ref-uk}} == Референции == {{reflist}} {{Lifetime|1943|2023|Туряниця, Иван Михайлов}} [[Катеґорія:Русиньскы народны дїятелї]] bvl5eqtums39gsetn9as144watyyocg Иван Туряниця (комунистичный дѣяч) 0 19495 169538 169535 2026-09-13T13:38:12Z Igor Kercsa 5504 фото 169538 wikitext text/x-wiki {{Везирь | имя = Иван Иванович Туряниця | жена = <!-- Хотьяке значѣня, кедь жена --> | образок = Blank.jpg<!-- Имя файла --> | величина_образка = 1px | подпис_под_образком ={{Фоторамка|Увидьте фото|align=center|pos=top|width=90 |link= https://esu.com.ua/images/article_images/6879084fbcada_1752762447.jpg}} | пост = 1. секретарь [[Комунистична партия Закарпатской Украины|Комунистичной партии Закарпатской Украины]] | монарх = | президент = | вице-президент = | премьер = | предходник = новый пост | наступник = Иван Компанець | меживлада = <!-- хотьяке значѣня, кедь еще не зайняв пост --> | зачаток_термина = 1944 | конець_термина = 1948<ref>Од року 1946 Закарпатского обкома КП(б) Украины.</ref> | герб = | подпис_герба = | пост2 = Предсѣдник Народной Рады Закарпатской Украины | монарх2 = | президент2 = | премьер2 = | зачаток_термина2 = 26. новембер 1944 | конець_термина2 = 22. новембер 1946 | предходник2 = новый уряд | наступник2 = уряд ликвидованый <!-- Дале так само з номерами 3-9 --> |пост3 = Предсѣдник выконного комитета Закарпатской областной рады | зачаток_термина3 = 1946 | конець_термина3 = 1951 | предходник3 = новый пост | наступник3 = Иван Ваш |пост4 = Предсѣдник выконного комитета Закарпатской областной рады | зачаток_термина4 = 1952 | конець_термина4 = 1955 | предходник4 = Иван Ваш | наступник4 = Иван Гарагонич | датум_уроджѣня = {{Birth date|1901|05|25}} | мѣсто_уроджѣня = [[Быстриця (Мукачовскый район)|Ряпидь]], [[Жупа Берег]], [[Мадярске кральовство]] | датум_смерти = {{Death date and age|1955|03|27|1901|05|25}} | мѣсто_смерти = [[Ужгород]], [[УССР]] | назывка = | alma_mater = | едукация = | горожанство = | народность = | партия = | династия = | род = <!-- алтернатива параметру «династия» --> | мати = | отець = | супруга = | супруг = | дѣти = | своина = | профессия = | шаржа = <!-- про военных --> | вѣра = | награды = | премии = | честна титула = | сайт = | категория в Commons = <!-- Назва категории на Викискладѣ --> }} '''Ива́н Ива́нович Туряни́ця''', {{ref-uk}} ''Іва́н Іва́нович Туряни́ця''; *[[25. май]] [[1901]], [[Быстриця (Мукачовскый район)|Ряпидь]], [[Жупа Берег]], [[Мадярске кральовство]] (днесь [[Быстриця (Мукачовскый район)|Быстриця]], [[Мукачовскый район]] [[Закарпатска область|Закарпатской области]] [[Украина|Украины]]) – †[[27. марец]] [[1955]], [[Ужгород]], [[Украинска ССР]] — совѣтскый партийный и штатный дѣятель; первый секретарь [[Комунистична партия Закарпатской Украины|Комунистичной партии Закарпатской Украины]] (днесь [[Закарпатска область]] [[Украина|Украины]]).<ref name="Spravocnik">Справочник по истории Коммунистической партии и Советского Союза 1898–1991</ref><ref name="Magocsi">Маґочій, Павло-Роберт</ref><ref name="Fedaka"/> == Биография == === Походжѣня === Походив з родины желѣзничаря.<ref name="Magocsi"/> Учив ся в [[Народна школа (Мадярске кралевство)|народной школѣ]], пак зачавши од 14 рокы быв майстерчуком у замочника, роботником на фиресѣ, коминарьом, ковачиком. В року 1917 мобилизованый до австро-мадярского войска, де служив вояком до конця [[Перва свѣтова война|войны]]. По войнѣ — коминарь в [[Мукачово|Мукачовѣ]].<ref name="Dovhanic">Довганич О. Д.</ref><ref name="Fedaka">Сергій Федака</ref> === В медживойню === В року 1919 ([[Мадярска Людова Република (1918-1919)]], [[Мадярска Совѣтска Република]]) — вояк Руськой дивизии Мадярской Червеной армады. За тото по поражцѣ мадярской револуции и приходѣ Чехох быв арештованый и вышорованый до [[Концентрачный лагер|концентраку]] в [[Пряшов]]. Выпущеный в децембрѣ того ж року, працовав яко роботник на ставбах и коминарь. В октобрѣ року 1924 поволаный до чешского войска, демобилизованый в року 1925 и того ж року вступив до [[Комунистична партия Чехословакии|Комунистичной партии Чехословакии]], од року 1926 — член окружного комитету КПЧ и предсѣдник роботницкого здружѣня мукачовскых ставбарьох. В роках 1928–1929 секретарь мукачовского комитету КПЧ.<ref name="Fedaka"/><ref name="Spravocnik"/><ref name="Dovhanic"/> В року 1929 ещи раз трафив до арешту. В фебруарѣ 1930 став на челѣ ужгородского окружного комитету КПЧ. Од партии быв посланый до СССР, де яко партийный функционер достав выуку в Харьковском комунистичном инштитутѣ журналистикы (1930–1933). В роках 1933–1939 быв секретарьом Подкарпатской крайовой рады Червеных професийных здружѣнь, организатором штрайкох и протестох, в року 1936 знова перебывав в арештѣ.<ref name="Pop">Ivan Pop</ref><ref name="Spravocnik"/> === На емиграции === В марцу 1939, у переддень мадярской окупации края, через [[Румыния|Румынию]] емигровав до [[СССР]], де достав статус политичного емигранта, членство в ''Меджинародной организации помочи бойовникам револуции'' ([[МОПР]]) и быв на лѣченю в санаторию ЦК МОПР в селѣ Опалиха Московской области (1939–1940).<ref name="Dovhanic"/> В роках 1940–1941 быв плановач-економиста на локомотивной фабрицѣ имени Октобровой Револуции во [[Ворошиловград]]ѣ, в роках 1941–1943 на росполаганю ''Народного комисариата обороны СССР''.<ref name="Spravocnik"/> В року 1943 представляв [[Подкарпатска Русь|Подкарпатску Русь]] во ''Всеславянском антифашистичном комитетѣ'' в [[Москва|Москвѣ]] и быв членом Рады той организации.<ref name="Magocsi"/> В роках 1943–1944 комисарь (офицер политичной едукации) Третьой окремой бригады Чехословацкого армадного корпуса, участник [[Дуклянска операция|Дуклянской операции]].<ref name="Dovhanic"/> === Закладательом Закарпатской Украины === В октобрѣ 1944, подля догварькы совѣтсых верхностей з генералом [[Лудвик Свобода|Лудвиком Свободом]], велительом Чехословацкого армадного корпуса, Иван Туряниця быв одрядженый за члена Чехословацкой администрации Подкарпатской Руси, котрой шефом быв Франтишек Ньемец.<ref name="Pop"/> [[File:Могила діяча робітничого руху на Закарпатті Туряниці І. І. зображення 1.JPG|thumb|270px|{{center|Гроб И. Туряницѣ на [[Теметов Калвария|теметовѣ Калвария]]}}]] И. Туряниця спочатку подтримовав идею належности [[Подкарпатска Русь|Подкарпатской Руси]] ку обновленой [[Чехословакия|Чехословакии]], але неодовго зачав пропаговати «возъединѣня» зоз [[УССР|Совѣтсков Украинов]].<ref name="Magocsi"/> 31. октобра 1944 Туряниця организовав первы легалны за вельо рокы зборы комунистох [[Мукачово|Мукачова]] и створив-обновив на них городску партийну организацию, котрой став на челѣ. За немногы дны скликав {{nowrap|І. конференцию}} [[Комунистична партия Закарпатской Украины|Комунистичной партии Закарпатской Украины]], котра ся одбыла 19. новембра, и быв выбраный за первого секретаря партии. 26. новембра 1944 выступив на {{nowrap|І. зъѣздѣ}} Народных комитетох Закарпатской Украины з головным рапортом, в котром обгрунтовав доцѣльность и необходность приеднаня ку УССР. Став на челѣ выбраной на зъѣздѣ ''Народной Рады Закарпатской Украины''. До 27. януара 1948 быв на челѣ Закарпатского обкома КП(б)У.<ref name="Fedaka"/> На том найвысшом урядѣ, подля совѣтской политикы, не мог быти незмѣнный,<ref name="Pop"/> але и надале повнив вельо важных функций в штатном и партийном апаратѣ: посланець Найвысшой Рады СССР (1946) и УССР (1947), член ЦК КПУ (1946–1954), голова Закарпатской рады людовых посланцьох (1946–1948) и др. За заслугы у приеднаню [[Подкарпатска Русь|Подкарпатской Руси]] ку [[СССР]] быв погребеный в Ужгородѣ на «Грунку Славы» [[Теметов Калвария|теметова Калвария]], мемориалном погребищу совѣтскых воякох, котры упали в бою за выслободжѣня краю в року 1944.<ref name="Magocsi"/> == Жерела и одказы == * {{Cite book |editor= Paul Robert Magocsi, Ivan Pop |author= '''Ivan Pop''' |chapter= Turianytsia, Ivan I |title= //Encyclopedia of Rusyn History and Culture |year= 2002 |url= https://archive.org/details/encyclopediaofru0000mago |location= Toronto Buffalo London |publisher= University of Toronto Press, 2005 |edition= Revised and expanded |pages= 502–503 |doi= 10.3138/9781442674431 |isbn= 0-8020-3566-3 |page= }}{{ref-en}} * '''Довганич О. Д.''': Туряниця Іван Іванович // {{ЕЗВО20}}, с.&nbsp;331 * {{Cite book |author= '''Маґочій, Павло-Роберт''' |title= Підкарпатська Русь: формування національної самосвідомості (1848–1948) — Друге перероблене і доповнене видання |location= Ужгород |publisher= Видавництво Валерія Падяка, 2021 |isbn= 978-966-387-127-1}}{{ref-uk}} * {{Cite book |author= '''Сергій Федака''' |chapter= Голови облвиконкому та обласної ради Закарпаття |title= // Закарпаття / Хто є хто |url= http://who-is-who.ua/makets/zakautent/info/zakarpattya3.pdf |format= PDF |location= Київ |publisher= УКРАЇНСЬКА АКАДЕМІЯ ГЕРАЛЬДИКИ, ТОВАРНОГО ЗНАКУ ТА ЛОГОТИПУ, 2007 |at= Стор.&nbsp;9 |accessdate= 2023-01-16}}{{ref-uk}} * [http://www.knowbysight.info/TTT/04818.asp Справочник по истории Коммунистической партии и Советского Союза 1898–1991]{{ref-ru}} == Референции == {{reflist}} {{Lifetime|1901|1955|Туряниця, Иван Иванов}} [[Катеґорія:УССР]] [[Катеґорія:Комунизм]] [[Катеґорія:Політічны лідеры]] lpxxn17br1as5eea040dlkdeygwocn1 169543 169538 2026-09-13T22:20:41Z Flipdot 23893 169543 wikitext text/x-wiki {{Не поплетьте|Иван Туряниця (биохемик)}} {{Везирь | имя = Иван Иванович Туряниця | жена = <!-- Хотьяке значѣня, кедь жена --> | образок = Blank.jpg<!-- Имя файла --> | величина_образка = 1px | подпис_под_образком ={{Фоторамка|Увидьте фото|align=center|pos=top|width=90 |link= https://esu.com.ua/images/article_images/6879084fbcada_1752762447.jpg}} | пост = 1. секретарь [[Комунистична партия Закарпатской Украины|Комунистичной партии Закарпатской Украины]] | монарх = | президент = | вице-президент = | премьер = | предходник = новый пост | наступник = Иван Компанець | меживлада = <!-- хотьяке значѣня, кедь еще не зайняв пост --> | зачаток_термина = 1944 | конець_термина = 1948<ref>Од року 1946 Закарпатского обкома КП(б) Украины.</ref> | герб = | подпис_герба = | пост2 = Предсѣдник Народной Рады Закарпатской Украины | монарх2 = | президент2 = | премьер2 = | зачаток_термина2 = 26. новембер 1944 | конець_термина2 = 22. новембер 1946 | предходник2 = новый уряд | наступник2 = уряд ликвидованый <!-- Дале так само з номерами 3-9 --> |пост3 = Предсѣдник выконного комитета Закарпатской областной рады | зачаток_термина3 = 1946 | конець_термина3 = 1951 | предходник3 = новый пост | наступник3 = Иван Ваш |пост4 = Предсѣдник выконного комитета Закарпатской областной рады | зачаток_термина4 = 1952 | конець_термина4 = 1955 | предходник4 = Иван Ваш | наступник4 = Иван Гарагонич | датум_уроджѣня = {{Birth date|1901|05|25}} | мѣсто_уроджѣня = [[Быстриця (Мукачовскый район)|Ряпидь]], [[Жупа Берег]], [[Мадярске кральовство]] | датум_смерти = {{Death date and age|1955|03|27|1901|05|25}} | мѣсто_смерти = [[Ужгород]], [[УССР]] | назывка = | alma_mater = | едукация = | горожанство = | народность = | партия = | династия = | род = <!-- алтернатива параметру «династия» --> | мати = | отець = | супруга = | супруг = | дѣти = | своина = | профессия = | шаржа = <!-- про военных --> | вѣра = | награды = | премии = | честна титула = | сайт = | категория в Commons = <!-- Назва категории на Викискладѣ --> }} '''Ива́н Ива́нович Туряни́ця''', {{ref-uk}} ''Іва́н Іва́нович Туряни́ця''; *[[25. май]] [[1901]], [[Быстриця (Мукачовскый район)|Ряпидь]], [[Жупа Берег]], [[Мадярске кральовство]] (днесь [[Быстриця (Мукачовскый район)|Быстриця]], [[Мукачовскый район]] [[Закарпатска область|Закарпатской области]] [[Украина|Украины]]) – †[[27. марец]] [[1955]], [[Ужгород]], [[Украинска ССР]] — совѣтскый партийный и штатный дѣятель; первый секретарь [[Комунистична партия Закарпатской Украины|Комунистичной партии Закарпатской Украины]] (днесь [[Закарпатска область]] [[Украина|Украины]]).<ref name="Spravocnik">Справочник по истории Коммунистической партии и Советского Союза 1898–1991</ref><ref name="Magocsi">Маґочій, Павло-Роберт</ref><ref name="Fedaka"/> == Биография == === Походжѣня === Походив з родины желѣзничаря.<ref name="Magocsi"/> Учив ся в [[Народна школа (Мадярске кралевство)|народной школѣ]], пак зачавши од 14 рокы быв майстерчуком у замочника, роботником на фиресѣ, коминарьом, ковачиком. В року 1917 мобилизованый до австро-мадярского войска, де служив вояком до конця [[Перва свѣтова война|войны]]. По войнѣ — коминарь в [[Мукачово|Мукачовѣ]].<ref name="Dovhanic">Довганич О. Д.</ref><ref name="Fedaka">Сергій Федака</ref> === В медживойню === В року 1919 ([[Мадярска Людова Република (1918-1919)]], [[Мадярска Совѣтска Република]]) — вояк Руськой дивизии Мадярской Червеной армады. За тото по поражцѣ мадярской револуции и приходѣ Чехох быв арештованый и вышорованый до [[Концентрачный лагер|концентраку]] в [[Пряшов]]. Выпущеный в децембрѣ того ж року, працовав яко роботник на ставбах и коминарь. В октобрѣ року 1924 поволаный до чешского войска, демобилизованый в року 1925 и того ж року вступив до [[Комунистична партия Чехословакии|Комунистичной партии Чехословакии]], од року 1926 — член окружного комитету КПЧ и предсѣдник роботницкого здружѣня мукачовскых ставбарьох. В роках 1928–1929 секретарь мукачовского комитету КПЧ.<ref name="Fedaka"/><ref name="Spravocnik"/><ref name="Dovhanic"/> В року 1929 ещи раз трафив до арешту. В фебруарѣ 1930 став на челѣ ужгородского окружного комитету КПЧ. Од партии быв посланый до СССР, де яко партийный функционер достав выуку в Харьковском комунистичном инштитутѣ журналистикы (1930–1933). В роках 1933–1939 быв секретарьом Подкарпатской крайовой рады Червеных професийных здружѣнь, организатором штрайкох и протестох, в року 1936 знова перебывав в арештѣ.<ref name="Pop">Ivan Pop</ref><ref name="Spravocnik"/> === На емиграции === В марцу 1939, у переддень мадярской окупации края, через [[Румыния|Румынию]] емигровав до [[СССР]], де достав статус политичного емигранта, членство в ''Меджинародной организации помочи бойовникам револуции'' ([[МОПР]]) и быв на лѣченю в санаторию ЦК МОПР в селѣ Опалиха Московской области (1939–1940).<ref name="Dovhanic"/> В роках 1940–1941 быв плановач-економиста на локомотивной фабрицѣ имени Октобровой Револуции во [[Ворошиловград]]ѣ, в роках 1941–1943 на росполаганю ''Народного комисариата обороны СССР''.<ref name="Spravocnik"/> В року 1943 представляв [[Подкарпатска Русь|Подкарпатску Русь]] во ''Всеславянском антифашистичном комитетѣ'' в [[Москва|Москвѣ]] и быв членом Рады той организации.<ref name="Magocsi"/> В роках 1943–1944 комисарь (офицер политичной едукации) Третьой окремой бригады Чехословацкого армадного корпуса, участник [[Дуклянска операция|Дуклянской операции]].<ref name="Dovhanic"/> === Закладательом Закарпатской Украины === В октобрѣ 1944, подля догварькы совѣтсых верхностей з генералом [[Лудвик Свобода|Лудвиком Свободом]], велительом Чехословацкого армадного корпуса, Иван Туряниця быв одрядженый за члена Чехословацкой администрации Подкарпатской Руси, котрой шефом быв Франтишек Ньемец.<ref name="Pop"/> [[File:Могила діяча робітничого руху на Закарпатті Туряниці І. І. зображення 1.JPG|thumb|270px|{{center|Гроб И. Туряницѣ на [[Теметов Калвария|теметовѣ Калвария]]}}]] И. Туряниця спочатку подтримовав идею належности [[Подкарпатска Русь|Подкарпатской Руси]] ку обновленой [[Чехословакия|Чехословакии]], але неодовго зачав пропаговати «возъединѣня» зоз [[УССР|Совѣтсков Украинов]].<ref name="Magocsi"/> 31. октобра 1944 Туряниця организовав первы легалны за вельо рокы зборы комунистох [[Мукачово|Мукачова]] и створив-обновив на них городску партийну организацию, котрой став на челѣ. За немногы дны скликав {{nowrap|І. конференцию}} [[Комунистична партия Закарпатской Украины|Комунистичной партии Закарпатской Украины]], котра ся одбыла 19. новембра, и быв выбраный за первого секретаря партии. 26. новембра 1944 выступив на {{nowrap|І. зъѣздѣ}} Народных комитетох Закарпатской Украины з головным рапортом, в котром обгрунтовав доцѣльность и необходность приеднаня ку УССР. Став на челѣ выбраной на зъѣздѣ ''Народной Рады Закарпатской Украины''. До 27. януара 1948 быв на челѣ Закарпатского обкома КП(б)У.<ref name="Fedaka"/> На том найвысшом урядѣ, подля совѣтской политикы, не мог быти незмѣнный,<ref name="Pop"/> але и надале повнив вельо важных функций в штатном и партийном апаратѣ: посланець Найвысшой Рады СССР (1946) и УССР (1947), член ЦК КПУ (1946–1954), голова Закарпатской рады людовых посланцьох (1946–1948) и др. За заслугы у приеднаню [[Подкарпатска Русь|Подкарпатской Руси]] ку [[СССР]] быв погребеный в Ужгородѣ на «Грунку Славы» [[Теметов Калвария|теметова Калвария]], мемориалном погребищу совѣтскых воякох, котры упали в бою за выслободжѣня краю в року 1944.<ref name="Magocsi"/> == Жерела и одказы == * {{Cite book |editor= Paul Robert Magocsi, Ivan Pop |author= '''Ivan Pop''' |chapter= Turianytsia, Ivan I |title= //Encyclopedia of Rusyn History and Culture |year= 2002 |url= https://archive.org/details/encyclopediaofru0000mago |location= Toronto Buffalo London |publisher= University of Toronto Press, 2005 |edition= Revised and expanded |pages= 502–503 |doi= 10.3138/9781442674431 |isbn= 0-8020-3566-3 |page= }}{{ref-en}} * '''Довганич О. Д.''': Туряниця Іван Іванович // {{ЕЗВО20}}, с.&nbsp;331 * {{Cite book |author= '''Маґочій, Павло-Роберт''' |title= Підкарпатська Русь: формування національної самосвідомості (1848–1948) — Друге перероблене і доповнене видання |location= Ужгород |publisher= Видавництво Валерія Падяка, 2021 |isbn= 978-966-387-127-1}}{{ref-uk}} * {{Cite book |author= '''Сергій Федака''' |chapter= Голови облвиконкому та обласної ради Закарпаття |title= // Закарпаття / Хто є хто |url= http://who-is-who.ua/makets/zakautent/info/zakarpattya3.pdf |format= PDF |location= Київ |publisher= УКРАЇНСЬКА АКАДЕМІЯ ГЕРАЛЬДИКИ, ТОВАРНОГО ЗНАКУ ТА ЛОГОТИПУ, 2007 |at= Стор.&nbsp;9 |accessdate= 2023-01-16}}{{ref-uk}} * [http://www.knowbysight.info/TTT/04818.asp Справочник по истории Коммунистической партии и Советского Союза 1898–1991]{{ref-ru}} == Референции == {{reflist}} {{Lifetime|1901|1955|Туряниця, Иван Иванов}} [[Катеґорія:УССР]] [[Катеґорія:Комунизм]] [[Катеґорія:Політічны лідеры]] qo17tj2trw2zh9f6hu9hlxjn9f6jdan Добрянске (Закарпатска область) 0 19616 169555 168867 2026-09-13T22:47:44Z Flipdot 23893 169555 wikitext text/x-wiki {{Не поплетьте|текст=[[Няґів|Няґовом]], селом у Словакії}} {{Локалита |статус = [[Село]] [[Украина|Украины]] |руська назва = Добрянске<!-- обычайно як назва статьи --> |оригинална назва = Добрянське {{ref-uk}}<!-- словацка, мадярска и т.п. --> |застава = Dobrianske.jpg<!-- назва файла, нп.: Zastava.png --> |опис заставы = Выгляд од выходу, од [[Тересва (рѣка)|Тересвы]]<!-- появить ся над фотков --> |ширина заставы = 300<!-- в пикселах, нп.: 150 --> |герб = <!-- назва файла, нп.: Herb.jpg --> |опис герба = <!-- появить ся над фотков --> |ширина герба = <!-- в пикселах, нп.: 100 --> |вид крайны = <!--2.гарадича администрации --> |крайна = Украина <!-- Do not put link here for the location map accuracy (if used)!--> |lat_dir = N |lat_deg =48 |lat_min =04 |lat_sec =03 <!-- землеписна ширка--> |lon_dir = E |lon_deg =23 |lon_min =42 |lon_sec =35 <!-- землеписна довжка--> |CoordAddon = |CoordScale = 300000 <!-- мапы укажуть ся в маштабѣ (скалѣ) 3 км/цм --> |карта страны = <!-- локачна мапа штату (имплицитно дасть мапу свѣта) --> |размер карты страны = 250 <!-- 0 затлумить выдачу мапы под рамов --> |давны назвы = |вид региона = Область<!--3.гарадича администрации--> |регион = [[Закарпатска область|Закарпатска]] |вид района = <!--4.гарадича администрации, предволено: Район --> |район = [[Тячовскый район|Тячовскый]] |вид общины = Громада<!--5.гарадича администрации ПОВИННЫЙ ПАРАМЕТЕР!--> |община = Вульховецка териториална |площа = <!-- в квадр. км --> |вид высоты = Надморска вышка <!-- або: Найвысша точка, Высота центра …--> |высота = 272<ref>[http://weather.in.ua/ua/zakarpatskaja/7003 Інформер: Добрянське (Закарпатська область)]</ref><!-- в метрах --> |население = 2714<!-- лем само число --> |год переписи = 2001 |часовый пояс = +2 |DST = перевод годинкы <!—пусто значить, же час не переводять --> |телефонный код = +380 3134 |почтовый индекс = 90560 |вид идентификатора = КОАТУУ<!-- локална система кодованя територии--> |цифровой идентификатор = 2124482501 |категория в Commons = Villages in Zakarpattia Oblast |сайт = |язык сайта = }} '''Добрянске''' (до року 1946 '''Нягово'''),<ref>Указ Президії Верховної Ради УРСР від 25.6.1946</ref> {{ref-uk}} ''Добрянське''&nbsp;— [[село]] в [[Тячовскый район|Тячовском районѣ]] [[Закарпатска область|Закарпатской области]] [[Украина|Украины]]. Административно належить ку Вульховецкой териториалной громадѣ (од року 2020, перед тым в роках 1946–1977&nbsp;— ку Вульховецкой сельской радѣ, од року 1977 достало властну сельску раду).<ref>Тронько П.Т.</ref><ref name="Fedaka">Сергій Федака</ref> == Полога == Лежить на правом березѣ [[Тересва (рѣка)|Тересвы]] о 14&nbsp;[[км]] од [[Тячово|Тячова]] и 8&nbsp;[[км]] од желѣзничной штации Тересва. Через село тече рѣка Млиновиця, в нижньом току котрой справлены рыбникы, вода ку ним тече водопадами.<ref name="Fedaka"/> == История == Перва исторична споминка задокументована под роком 1415 (Negova).<ref name="Sebestyén">Sebestyén Zsolt</ref><ref name="Fedaka"/> Од року 1751 ся споминать деревяна Михайловска, а в року 1902 высвячена мурована грекокатолицка Воздвиженска церква.<ref name="Fedaka"/> В року 1910 в селѣ были 1162&nbsp;обывателе, з них 1012&nbsp;[[Русины]], 139&nbsp;[[Нѣмцѣ]], 11&nbsp;[[Мадяре]]; подля вѣры 1023&nbsp;грекокатолици, 138&nbsp;юдаисты. До [[Трианонскый мирный договор|Трианона]] Нягово належало ку Тересвянскому округу, {{ref-hu}} ''Taracvizi járás'', жупы [[Жупа Мараморош|Мараморош]].<ref>A történelmi Magyarország</ref> В року 1924 в селѣ створили православну громаду, а 1928 — тутешны майстры выставили з дуба Вознесенску церкву.<ref name="Fedaka"/> В року 1930 село мало 1279 обывательох, з них 1164&nbsp;[[Русины]], 110&nbsp;[[Евреи]], 5&nbsp;[[Чехы]] и [[Словаци]], подля вѣры 811&nbsp;грекокатолици, 345&nbsp;православны. В селѣ была русинска школа (5 клас).<ref name="Dostal">Достал, Ярослав</ref> В року 1989 завершена выставба восямрочной школы, 1992&nbsp;— отворили дѣтску школку, 2008&nbsp;— учинили протиповодьову гать, 2011&nbsp;— капитално одремонтовали двѣ найвекшы улицѣ, Садову и Борканюкову.<ref name="Fedaka"/> == Вызнамны родаци == * [[Юрий Думнич]] (1924–2017), [[Медик|дохтор]], организатор [[Медицина|медицины]], сполоченскый активиста, [[Публицистика|публициста]] * [[Гавриил Мирошай]] (1923–2007), [[диригент]] и [[хормайстер]] Старославянского грекокатолицкого катедралного хору св.&nbsp;Йоанна Хрестителя в [[Пряшов]]ѣ. == Жерела и одказы == * {{Cite book |title= A történelmi Magyarország atlasza és adattára 1914 |isbn= 963 85683 3 X |url= https://books.google.com.ua/books/about/A_történelmi_Magyarország_atlasza_és.html?id=y_QNYAAACAAJ&redir_esc=y}}{{ref-hu}} * {{Cite book |author= Sebestyén Zsolt |title= //Máramaros megye helységneveinek etimológiai szótára |location= Nyíregyháza |publisher= Bessenyei könyvkiadó, 2012 |isbn= 978-615-5097-53-9 |at= Old.&nbsp;101 |url= http://mek.oszk.hu/13200/13208/index.phtml }}{{ref-hu}} * {{Cite book |author= Достал, Ярослав |chapter= Ňagovo (Nyágova) |title= //Підкарпатська Русь (Закарпаття періоду Чехословацької республіки: 1919–1938) |location= Ужгород |publisher= Карпати, 2014 |isbn= 978-966-671-374-5 |at= С.&nbsp;234 }}{{ref-uk}} [http://www.twirpx.com/file/1775048/ Доступне онлайн] * {{Cite book |chapter= Вільхівці |editor= Тронько П.Т. та ін. |title= //Історія міст і сіл України. Закарпатська область |location= Київ, 1969 |at= С.&nbsp;644 |url= http://ukrssr.com.ua/zakarp/tyachivskiy/vilhivtsi-tyachivskiy-rayon-zakarpatska-oblast }}{{ref-uk}} * [https://uk.wikisource.org/wiki/%D0%A3%D0%BA%D0%B0%D0%B7_%D0%9F%D1%80%D0%B5%D0%B7%D0%B8%D0%B4%D1%96%D1%97_%D0%92%D0%B5%D1%80%D1%85%D0%BE%D0%B2%D0%BD%D0%BE%D1%97_%D0%A0%D0%B0%D0%B4%D0%B8_%D0%A3%D0%A0%D0%A1%D0%A0_%D0%B2%D1%96%D0%B4_25.6.1946_%C2%AB%D0%9F%D1%80%D0%BE_%D0%B7%D0%B1%D0%B5%D1%80%D0%B5%D0%B6%D0%B5%D0%BD%D0%BD%D1%8F_%D1%96%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%87%D0%BD%D0%B8%D1%85_%D0%BD%D0%B0%D0%B9%D0%BC%D0%B5%D0%BD%D1%83%D0%B2%D0%B0%D0%BD%D1%8C_%D1%82%D0%B0_%D1%83%D1%82%D0%BE%D1%87%D0%BD%D0%B5%D0%BD%D0%BD%D1%8F_%E2%80%A6_%D0%BD%D0%B0%D0%B7%D0%B2_%E2%80%A6_%D0%97%D0%B0%D0%BA%D0%B0%D1%80%D0%BF%D0%B0%D1%82%D1%81%D1%8C%D0%BA%D0%BE%D1%97_%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%96%C2%BB Указ Президії Верховної Ради УРСР від 25.6.1946 «Про збереження історичних найменувань та уточнення … назв … Закарпатської області» — Вікіджерела uk.wikisource.org] {{ref-uk}} * {{Cite book |author=Сергій Федака |title=Населені пункти і райони Закарпаття |language= |edition= |volume= |chapter= Добрянське |quote= |location=Ужгород |publisher=Поліграфцентр «Ліра», 2014 |series= |at=cc.&nbsp;74–75 |isbn=978-617-596-158-2}} {{ref-uk}} [https://books.google.com.ua/books?id=w4xGBAAAQBAJ&pg=PA74&lpg=PA74&dq=Добрянське+Тячівського+району+Федака&source=bl&ots=gEOzSzUGW2&sig=ACfU3U0ZHWImGbFwGMp4XeIxlc9KaSOgLQ&hl=uk&sa=X&ved=2ahUKEwjZguaB_vT8AhWN6CoKHSOYCz84ChDoAXoECAcQAw#v=onepage&q=Добрянське%20Тячівського%20району%20Федака&f=false Доступне онлайн] == Референции == {{reflist}} {{Тячовскый район}}{{Закарпатска область}} [[Катеґорія:Населены пункты Украины]] [[Катеґорія:Села Україны]] [[Катеґорія:Населены пункты Закарпатской области]] 5ywwktvmf92vk90omkptq7axc90u1py Модуль:Citation/CS1/Date validation 828 20719 169551 141659 2026-09-13T22:43:12Z Asorev 36569 169551 Scribunto text/plain --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local add_prop_cat, is_set, in_array, set_message, substitute, wrap_style; -- imported functions from selected Module:Citation/CS1/Utilities local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration --[[--------------------------< F I L E - S C O P E D E C L A R A T I O N S >-------------------------------- File-scope variables are declared here ]] local lang_object = mw.getContentLanguage(); -- used by is_valid_accessdate(), is_valid_year(), date_name_xlate(); TODO: move to ~/Configuration? local year_limit; -- used by is_valid_year() --[=[-------------------------< I S _ V A L I D _ A C C E S S D A T E >---------------------------------------- returns true if: Wikipedia start date <= accessdate < today + 2 days Wikipedia start date is 2001-01-15T00:00:00 UTC which is 979516800 seconds after 1970-01-01T00:00:00 UTC (the start of Unix time) accessdate is the date provided in |access-date= at time 00:00:00 UTC today is the current date at time 00:00:00 UTC plus 48 hours if today is 2015-01-01T00:00:00 then adding 24 hours gives 2015-01-02T00:00:00 – one second more than today adding 24 hours gives 2015-01-03T00:00:00 – one second more than tomorrow This function does not work if it is fed month names for languages other than English. Wikimedia #time: parser apparently doesn't understand non-English date month names. This function will always return false when the date contains a non-English month name because good1 is false after the call to lang.formatDate(). To get around that call this function with YYYY-MM-DD format dates. ]=] local function is_valid_accessdate (accessdate) local good1, good2; local access_ts, tomorrow_ts; -- to hold Unix time stamps representing the dates good1, access_ts = pcall (lang_object.formatDate, lang_object, 'U', accessdate ); -- convert accessdate value to Unix timestamp good2, tomorrow_ts = pcall (lang_object.formatDate, lang_object, 'U', 'today + 2 days' ); -- today midnight + 2 days is one second more than all day tomorrow if good1 and good2 then -- lang.formatDate() returns a timestamp in the local script which which tonumber() may not understand access_ts = tonumber (access_ts) or lang_object:parseFormattedNumber (access_ts); -- convert to numbers for the comparison; tomorrow_ts = tonumber (tomorrow_ts) or lang_object:parseFormattedNumber (tomorrow_ts); else return false; -- one or both failed to convert to Unix time stamp end if 979516800 <= access_ts and access_ts < tomorrow_ts then -- Wikipedia start date <= accessdate < tomorrow's date return true; else return false; -- accessdate out of range end end --[[--------------------------< G E T _ M O N T H _ N U M B E R >---------------------------------------------- returns a number according to the month in a date: 1 for January, etc. Capitalization and spelling must be correct. If not a valid month, returns 0 ]] local function get_month_number (month) return cfg.date_names['local'].long[month] or cfg.date_names['local'].short[month] or -- look for local names first cfg.date_names['en'].long[month] or cfg.date_names['en'].short[month] or -- failing that, look for English names 0; -- not a recognized month name end --[[--------------------------< G E T _ S E A S O N _ N U M B E R >-------------------------------------------- returns a number according to the sequence of seasons in a year: 21 for Spring, etc. Capitalization and spelling must be correct. If not a valid season, returns 0. 21-24 = Spring, Summer, Autumn, Winter, independent of “Hemisphere” returns 0 when <param> is not |date= Season numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. cs1|2 only supports generic seasons. EDTF does support the distinction between north and south hemisphere seasons but cs1|2 has no way to make that distinction. These additional divisions not currently supported: 25-28 = Spring - Northern Hemisphere, Summer- Northern Hemisphere, Autumn - Northern Hemisphere, Winter - Northern Hemisphere 29-32 = Spring – Southern Hemisphere, Summer– Southern Hemisphere, Autumn – Southern Hemisphere, Winter - Southern Hemisphere 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) 37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each) 40-41 = Semestral 1, Semestral-2 (6 months each) ]] local function get_season_number (season, param) if 'date' ~= param then return 0; -- season dates only supported by |date= end return cfg.date_names['local'].season[season] or -- look for local names first cfg.date_names['en'].season[season] or -- failing that, look for English names 0; -- not a recognized season name end --[[--------------------------< G E T _ Q U A R T E R _ N U M B E R >------------------------------------------ returns a number according to the sequence of quarters in a year: 33 for first quarter, etc. Capitalization and spelling must be correct. If not a valid quarter, returns 0. 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) returns 0 when <param> is not |date= Quarter numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. cs1|2 only supports generic seasons and quarters. These additional divisions not currently supported: 37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each) 40-41 = Semestral 1, Semestral-2 (6 months each) ]] local function get_quarter_number (quarter, param) if 'date' ~= param then return 0; -- quarter dates only supported by |date= end quarter = mw.ustring.gsub (quarter, ' +', ' '); -- special case replace multiple space chars with a single space char return cfg.date_names['local'].quarter[quarter] or -- look for local names first cfg.date_names['en'].quarter[quarter] or -- failing that, look for English names 0; -- not a recognized quarter name end --[[--------------------------< G E T _ P R O P E R _ N A M E _ N U M B E R >---------------------------------- returns a non-zero number if date contains a recognized proper-name. Capitalization and spelling must be correct. returns 0 when <param> is not |date= ]] local function get_proper_name_number (name, param) if 'date' ~= param then return 0; -- proper-name dates only supported by |date= end return cfg.date_names['local'].named[name] or -- look for local names dates first cfg.date_names['en'].named[name] or -- failing that, look for English names 0; -- not a recognized named date end --[[--------------------------< G E T _ E L E M E N T _ N U M B E R <------------------------------------------ returns true if month or season or quarter or proper name is valid (properly spelled, capitalized, abbreviated) ]] local function get_element_number (element, param) local num; local funcs = {get_month_number, get_season_number, get_quarter_number, get_proper_name_number}; -- list of functions to execute in order for _, func in ipairs (funcs) do -- spin through the function list num = func (element, param); -- call the function and get the returned number if 0 ~= num then -- non-zero when valid month season quarter return num; -- return that number end end return nil; -- not valid end --[[--------------------------< I S _ V A L I D _ Y E A R >---------------------------------------------------- Function gets current year from the server and compares it to year from a citation parameter. Years more than one year in the future are not acceptable. Special case for |pmc-embargo-date=: years more than two years in the future are not acceptable ]] local function is_valid_year (year, param) if not is_set (year_limit) then year_limit = tonumber(os.date("%Y"))+1; -- global variable so we only have to fetch it once end year = tonumber (year) or lang_object:parseFormattedNumber (year); -- convert to number for the comparison if year and (100 > year) then -- years less than 100 not supported return false; end if 'pmc-embargo-date' == param then -- special case for |pmc-embargo-date= return year and (year <= tonumber(os.date("%Y"))+2) or false; -- years more than two years in the future are not accepted end return year and (year <= year_limit) or false; end --[[--------------------------< I S _ V A L I D _ D A T E >---------------------------------------------------- Returns true if day is less than or equal to the number of days in month and year is no farther into the future than next year; else returns false. Assumes Julian calendar prior to year 1582 and Gregorian calendar thereafter. Accounts for Julian calendar leap years before 1582 and Gregorian leap years after 1582. Where the two calendars overlap (1582 to approximately 1923) dates are assumed to be Gregorian. ]] local function is_valid_date (year, month, day, param) local days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; local month_length; if not is_valid_year (year, param) then -- no farther into the future than next year except |pmc-embargo-date= no more than two years in the future return false; end month = tonumber (month); -- required for YYYY-MM-DD dates if (2 == month) then -- if February month_length = 28; -- then 28 days unless if 1582 > tonumber(year) then -- Julian calendar if 0 == (year%4) then -- is a leap year? month_length = 29; -- if leap year then 29 days in February end else -- Gregorian calendar if (0 == (year%4) and (0 ~= (year%100) or 0 == (year%400))) then -- is a leap year? month_length = 29; -- if leap year then 29 days in February end end else month_length = days_in_month[month]; end if tonumber (day) > month_length then return false; end return true; end --[[--------------------------< I S _ V A L I D _ M O N T H _ R A N G E _ S T Y L E >-------------------------- Months in a range are expected to have the same style: Jan–Mar or October–December but not February–Mar or Jul–August. This function looks in cfg.date_names{} to see if both month names are listed in the long subtable or both are listed in the short subtable. When both have the same style (both are listed in the same table), returns true; false else ]] local function is_valid_month_range_style (month1, month2) if (cfg.date_names.en.long[month1] and cfg.date_names.en.long[month2]) or -- are both English names listed in the long subtable? (cfg.date_names.en.short[month1] and cfg.date_names.en.short[month2]) or -- are both English names listed in the short subtable? (cfg.date_names['local'].long[month1] and cfg.date_names['local'].long[month2]) or -- are both local names listed in the long subtable? (cfg.date_names['local'].short[month1] and cfg.date_names['local'].short[month2]) then -- are both local names listed in the short subtable? return true; end return false; -- names are mixed end --[[--------------------------< I S _ V A L I D _ M O N T H _ S E A S O N _ R A N G E >------------------------ Check a pair of months or seasons to see if both are valid members of a month or season pair. Month pairs are expected to be left to right, earliest to latest in time. All season ranges are accepted as valid because there are publishers out there who have published a Summer–Spring YYYY issue, hence treat as ok ]] local function is_valid_month_season_range(range_start, range_end, param) local range_start_number = get_month_number (range_start); local range_end_number; if 0 == range_start_number then -- is this a month range? range_start_number = get_season_number (range_start, param); -- not a month; is it a season? get start season number range_end_number = get_season_number (range_end, param); -- get end season number if (0 ~= range_start_number) and (0 ~= range_end_number) and (range_start_number ~= range_end_number) then return true; -- any season pairing is accepted except when both are the same end return false; -- range_start and/or range_end is not a season end -- here when range_start is a month range_end_number = get_month_number (range_end); -- get end month number if range_start_number < range_end_number and -- range_start is a month; does range_start precede range_end? is_valid_month_range_style (range_start, range_end) then -- do months have the same style? return true; -- proper order and same style end return false; -- range_start month number is greater than or equal to range end number; or range end isn't a month end --[[--------------------------< M A K E _ C O I N S _ D A T E >------------------------------------------------ This function receives a table of date parts for one or two dates and an empty table reference declared in Module:Citation/CS1. The function is called only for |date= parameters and only if the |date=<value> is determined to be a valid date format. The question of what to do with invalid date formats is not answered here. The date parts in the input table are converted to an ISO 8601 conforming date string: single whole dates: yyyy-mm-dd month and year dates: yyyy-mm year dates: yyyy ranges: yyyy-mm-dd/yyyy-mm-dd yyyy-mm/yyyy-mm yyyy/yyyy Dates in the Julian calendar are reduced to year or year/year so that we don't have to do calendar conversion from Julian to Proleptic Gregorian. The input table has: year, year2 – always present; if before 1582, ignore months and days if present month, month2 – 0 if not provided, 1-12 for months, 21-24 for seasons; 99 Christmas day, day2 – 0 if not provided, 1-31 for days the output table receives: rftdate: an ISO 8601 formatted date rftchron: a free-form version of the date, usually without year which is in rftdate (season ranges and proper-name dates) rftssn: one of four season keywords: winter, spring, summer, fall (lowercase) rftquarter: one of four values: 1, 2, 3, 4 ]] local function make_COinS_date (input, tCOinS_date) local date; -- one date or first date in a range local date2 = ''; -- end of range date input.year = tonumber (input.year) or lang_object:parseFormattedNumber (input.year); -- language-aware tonumber() input.year2 = tonumber (input.year2) or lang_object:parseFormattedNumber (input.year2); -- COinS dates are pseudo-ISO 8601 so convert to Arabic numerals -- start temporary Julian / Gregorian calendar uncertainty detection local year = input.year; -- this temporary code to determine the extent of sources dated to the Julian/Gregorian local month = tonumber(input.month); -- interstice 1 October 1582 – 1 January 1926 local day = tonumber (input.day); if (0 ~= day) and -- day must have a value for this to be a whole date (((1582 == year) and (10 <= month) and (12 >= month)) or -- any whole 1582 date from 1 October to 31 December or ((1926 == year) and (1 == month) and (1 == input.day)) or -- 1 January 1926 or ((1582 < year) and (1925 >= year))) then -- any date 1 January 1583 – 31 December 1925 tCOinS_date.inter_cal_cat = true; -- set category flag true end -- end temporary Julian / Gregorian calendar uncertainty detection if ((1582 == year) and (10 > month)) or (1582 > year) then -- if a Julian calendar date tCOinS_date.rftdate = tostring (input.year); -- &rft.date gets year only return; -- done end -- here for all forms of Gregorian dates if 20 < tonumber (input.month) then -- if season, quarter, or proper-name date date = input.year; -- &rft.date gets year only if 0 ~= input.year2 and input.year ~= input.year2 then -- if a range, only the second year portion when not the same as range start year date = string.format ('%.4d/%.4d', input.year, input.year2) -- assemble the date range end local season = {[24] = 'winter', [21] = 'spring', [22] = 'summer', [23] = 'fall', [33] = '1', [34] = '2', [35] = '3', [36] = '4', [98] = 'Easter', [99] = 'Christmas'}; -- seasons lowercase, no autumn; proper-names use title case if 0 == input.month2 then -- single season, quarter, or proper-name date if 40 < tonumber(input.month) then tCOinS_date.rftchron = season[input.month]; -- proper-name date; used in journal metadata only elseif 30 < tonumber(input.month) then tCOinS_date.rftquarter = season[input.month]; -- quarter date; used in journal metadata only else tCOinS_date.rftssn = season[input.month]; -- season date; used in journal metadata only end else -- season ranges are lumped into &rft.chron; &rft.ssn and &rft.quarter are left blank if input.year ~= input.year2 then -- season year – season year range or season year–year if 0 ~= input.month2 then tCOinS_date.rftchron = string.format ('%s %s – %s %s', season[input.month], input.year, season[input.month2], input.year2); -- used in journal metadata only end else -- season–season year range tCOinS_date.rftchron = season[input.month] .. '–' .. season[input.month2]; -- season–season year range; used in journal metadata only end end tCOinS_date.rftdate = tostring (date); return; -- done end -- here for gregorian calendar dates if 0 ~= input.day then date = string.format ('%s-%.2d-%.2d', input.year, tonumber(input.month), tonumber(input.day)); -- whole date elseif 0 ~= input.month then date = string.format ('%s-%.2d', input.year, tonumber(input.month)); -- year and month else date = string.format ('%s', input.year); -- just year end if 0 ~= input.year2 then if 0 ~= input.day2 then date2 = string.format ('/%s-%.2d-%.2d', input.year2, tonumber(input.month2), tonumber(input.day2)); -- whole date elseif 0 ~= input.month2 then date2 = string.format ('/%s-%.2d', input.year2, tonumber(input.month2)); -- year and month else date2 = string.format ('/%s', input.year2); -- just year end end tCOinS_date.rftdate = date .. date2; -- date2 has the '/' separator return; end --[[--------------------------< P A T T E R N S >-------------------------------------------------------------- this is the list of patterns for date formats that this module recognizes. Approximately the first half of these patterns represent formats that might be reformatted into another format. Those that might be reformatted have 'indicator' letters that identify the content of the matching capture: 'd' (day), 'm' (month), 'a' (anchor year), 'y' (year); second day, month, year have a '2' suffix. These patterns are used for both date validation and for reformatting. This table should not be moved to ~/Configuration because changes to this table require changes to check_date() and to reformatter() and reformat_date() ]] local patterns = { -- year-initial numerical year-month-day ['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'}, -- month-initial: month day, year ['Mdy'] = {'^(%D-) +([1-9]%d?), +((%d%d%d%d?)%a?)$', 'm', 'd', 'a', 'y'}, -- month-initial day range: month day–day, year; days are separated by endash ['Md-dy'] = {'^(%D-) +([1-9]%d?)[%-–]([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'd2', 'a', 'y'}, -- day-initial: day month year ['dMy'] = {'^([1-9]%d?) +(%D-) +((%d%d%d%d?)%a?)$', 'd', 'm', 'a', 'y'}, -- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed; not supported at en.wiki -- ['yMd'] = {'^((%d%d%d%d?)%a?) +(%D-) +(%d%d?)$', 'a', 'y', 'm', 'd'}, -- day-range-initial: day–day month year; days are separated by endash ['d-dMy'] = {'^([1-9]%d?)[%-–]([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'd2', 'm', 'a', 'y'}, -- day initial month-day-range: day month - day month year; uses spaced endash ['dM-dMy'] = {'^([1-9]%d?) +(%D-) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'd2', 'm2', 'a', 'y'}, -- month initial month-day-range: month day – month day, year; uses spaced endash ['Md-Mdy'] = {'^(%D-) +([1-9]%d?) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$','m', 'd', 'm2', 'd2', 'a', 'y'}, -- day initial month-day-year-range: day month year - day month year; uses spaced endash ['dMy-dMy'] = {'^([1-9]%d?) +(%D-) +(%d%d%d%d) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'y', 'd2', 'm2', 'a', 'y2'}, -- month initial month-day-year-range: month day, year – month day, year; uses spaced endash ['Mdy-Mdy'] = {'^(%D-) +([1-9]%d?), +(%d%d%d%d) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'y', 'm2', 'd2', 'a', 'y2'}, -- these date formats cannot be converted, per se, but month name can be rendered short or long -- month/season year - month/season year; separated by spaced endash ['My-My'] = {'^(%D-) +(%d%d%d%d) +[%-–] +(%D-) +((%d%d%d%d)%a?)$', 'm', 'y', 'm2', 'a', 'y2'}, -- month/season range year; months separated by endash ['M-My'] = {'^(%D-)[%-–](%D-) +((%d%d%d%d)%a?)$', 'm', 'm2', 'a', 'y'}, -- month/season year or proper-name year; quarter year when First Quarter YYYY etc. ['My'] = {'^([^%d–]-) +((%d%d%d%d)%a?)$', 'm', 'a', 'y'}, -- this way because endash is a member of %D; %D- will match January–March 2019 when it shouldn't -- these date formats cannot be converted ['Sy4-y2'] = {'^(%D-) +((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash ['Sy-y'] = {'^(%D-) +(%d%d%d%d)[%-–]((%d%d%d%d)%a?)$'}, -- special case Winter/Summer year-year; year separated with unspaced endash ['y-y'] = {'^(%d%d%d%d?)[%-–]((%d%d%d%d?)%a?)$'}, -- year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999 ['y4-y2'] = {'^((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- year range: YYYY–YY; separated by unspaced endash ['y'] = {'^((%d%d%d%d?)%a?)$'}, -- year; here accept either YYY or YYYY } --[[--------------------------< I S _ V A L I D _ E M B A R G O _ D A T E >------------------------------------ returns true and date value if that value has proper dmy, mdy, ymd format. returns false and 9999 (embargoed forever) when date value is not proper format; assumes that when |pmc-embargo-date= is set, the editor intended to embargo a PMC but |pmc-embargo-date= does not hold a single date. ]] local function is_valid_embargo_date (v) if v:match (patterns['ymd'][1]) or -- ymd v:match (patterns['Mdy'][1]) or -- dmy v:match (patterns['dMy'][1]) then -- mdy return true, v; end return false, '9999'; -- if here not good date so return false and set embargo date to long time in future end --[[--------------------------< C H E C K _ D A T E >---------------------------------------------------------- Check date format to see that it is one of the formats approved by WP:DATESNO or WP:DATERANGE. Exception: only allowed range separator is endash. Additionally, check the date to see that it is a real date: no 31 in 30-day months; no 29 February when not a leap year. Months, both long-form and three character abbreviations, and seasons must be spelled correctly. Future years beyond next year are not allowed. If the date fails the format tests, this function returns false and does not return values for anchor_year and COinS_date. When this happens, the date parameter is (DEBUG: not?) used in the COinS metadata and the CITEREF identifier gets its year from the year parameter if present otherwise CITEREF does not get a date value. Inputs: date_string - date string from date-holding parameters (date, year, publication-date, access-date, pmc-embargo-date, archive-date, lay-date) Returns: false if date string is not a real date; else true, anchor_year, COinS_date anchor_year can be used in CITEREF anchors COinS_date is ISO 8601 format date; see make_COInS_date() ]] local function check_date (date_string, param, tCOinS_date) local year; -- assume that year2, months, and days are not used; local year2 = 0; -- second year in a year range local month = 0; local month2 = 0; -- second month in a month range local day = 0; local day2 = 0; -- second day in a day range local anchor_year; local coins_date; if date_string:match (patterns['ymd'][1]) then -- year-initial numerical year month day format year, month, day = date_string:match (patterns['ymd'][1]); if 12 < tonumber(month) or 1 > tonumber(month) or 1582 > tonumber(year) or 0 == tonumber(day) then return false; end -- month or day number not valid or not Gregorian calendar anchor_year = year; elseif mw.ustring.match(date_string, patterns['Mdy'][1]) then -- month-initial: month day, year month, day, anchor_year, year = mw.ustring.match(date_string, patterns['Mdy'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months elseif mw.ustring.match(date_string, patterns['Md-dy'][1]) then -- month-initial day range: month day–day, year; days are separated by endash month, day, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-dy'][1]); if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same; month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months month2=month; -- for metadata year2 = year; elseif mw.ustring.match(date_string, patterns['dMy'][1]) then -- day-initial: day month year day, month, anchor_year, year = mw.ustring.match(date_string, patterns['dMy'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months --[[ NOT supported at en.wiki elseif mw.ustring.match(date_string, patterns['yMd'][1]) then -- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed anchor_year, year, month, day = mw.ustring.match(date_string, patterns['yMd'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months -- end NOT supported at en.wiki ]] elseif mw.ustring.match(date_string, patterns['d-dMy'][1]) then -- day-range-initial: day–day month year; days are separated by endash day, day2, month, anchor_year, year = mw.ustring.match(date_string, patterns['d-dMy'][1]); if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same; month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months month2 = month; -- for metadata year2 = year; elseif mw.ustring.match(date_string, patterns['dM-dMy'][1]) then -- day initial month-day-range: day month - day month year; uses spaced endash day, month, day2, month2, anchor_year, year = mw.ustring.match(date_string, patterns['dM-dMy'][1]); if (not is_valid_month_season_range(month, month2)) or not is_valid_year(year) then return false; end -- date range order is left to right: earlier to later; month = get_month_number (month); -- for metadata month2 = get_month_number (month2); year2 = year; elseif mw.ustring.match(date_string, patterns['Md-Mdy'][1]) then -- month initial month-day-range: month day – month day, year; uses spaced endash month, day, month2, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-Mdy'][1]); if (not is_valid_month_season_range(month, month2, param)) or not is_valid_year(year) then return false; end month = get_month_number (month); -- for metadata month2 = get_month_number (month2); year2 = year; elseif mw.ustring.match(date_string, patterns['dMy-dMy'][1]) then -- day initial month-day-year-range: day month year - day month year; uses spaced endash day, month, year, day2, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['dMy-dMy'][1]); if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style month = get_month_number (month); -- for metadata month2 = get_month_number (month2); if 0 == month or 0 == month2 then return false; end -- both must be valid elseif mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]) then -- month initial month-day-year-range: month day, year – month day, year; uses spaced endash month, day, year, month2, day2, anchor_year, year2 = mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]); if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style month = get_month_number (month); -- for metadata month2 = get_month_number(month2); if 0 == month or 0 == month2 then return false; end -- both must be valid elseif mw.ustring.match(date_string, patterns['Sy4-y2'][1]) then -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash local century; month, year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy4-y2'][1]); if 'Winter' ~= month and 'Summer' ~= month then return false end; -- 'month' can only be Winter or Summer anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years year2 = century..year2; -- add the century to year2 for comparisons if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) then return false; end -- no year farther in the future than next year month = get_season_number(month, param); elseif mw.ustring.match(date_string, patterns['Sy-y'][1]) then -- special case Winter/Summer year-year; year separated with unspaced endash month, year, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy-y'][1]); month = get_season_number (month, param); -- <month> can only be winter or summer; also for metadata if (month ~= cfg.date_names['en'].season['Winter']) and (month ~= cfg.date_names['en'].season['Summer']) then return false; -- not Summer or Winter; abandon end anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) then return false; end -- no year farther in the future than next year elseif mw.ustring.match(date_string, patterns['My-My'][1]) then -- month/season year - month/season year; separated by spaced endash month, year, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['My-My'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year if 0 ~= get_month_number(month) and 0 ~= get_month_number(month2) and is_valid_month_range_style(month, month2) then -- both must be month year, same month style month = get_month_number(month); month2 = get_month_number(month2); elseif 0 ~= get_season_number(month, param) and 0 ~= get_season_number(month2, param) then -- both must be season year, not mixed month = get_season_number(month, param); month2 = get_season_number(month2, param); else return false; end elseif mw.ustring.match(date_string, patterns['M-My'][1]) then -- month/season range year; months separated by endash month, month2, anchor_year, year = mw.ustring.match(date_string, patterns['M-My'][1]); if (not is_valid_month_season_range(month, month2, param)) or (not is_valid_year(year)) then return false; end if 0 ~= get_month_number(month) then -- determined to be a valid range so just check this one to know if month or season month = get_month_number(month); month2 = get_month_number(month2); if 0 == month or 0 == month2 then return false; end else month = get_season_number(month, param); month2 = get_season_number(month2, param); end year2 = year; elseif mw.ustring.match(date_string, patterns['My'][1]) then -- month/season/quarter/proper-name year month, anchor_year, year = mw.ustring.match(date_string, patterns['My'][1]); if not is_valid_year(year) then return false; end month = get_element_number(month, param); -- get month season quarter proper-name number or nil if not month then return false; end -- not valid whatever it is elseif mw.ustring.match(date_string, patterns['y-y'][1]) then -- Year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999 year, anchor_year, year2 = mw.ustring.match(date_string, patterns['y-y'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year elseif mw.ustring.match(date_string, patterns['y4-y2'][1]) then -- Year range: YYYY–YY; separated by unspaced endash local century; year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['y4-y2'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years if 13 > tonumber(year2) then return false; end -- don't allow 2003-05 which might be May 2003 year2 = century .. year2; -- add the century to year2 for comparisons if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year if in_array (param, {'date', 'publication-date', 'year'}) then -- here when 'valid' abbreviated year range; if one of these parameters add_prop_cat ('year-range-abbreviated'); -- add properties cat end elseif mw.ustring.match(date_string, patterns['y'][1]) then -- year; here accept either YYY or YYYY anchor_year, year = mw.ustring.match(date_string, patterns['y'][1]); if false == is_valid_year(year) then return false; end else return false; -- date format not one of the MOS:DATE approved formats end if param ~= 'date' then -- CITEREF disambiguation only allowed in |date=; |year= & |publication-date= promote to date if anchor_year:match ('%l$') then return false; end end if 'access-date' == param then -- test access-date here because we have numerical date parts if 0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required 0 == year2 and 0 == month2 and 0 == day2 then -- none of these; access-date must not be a range if not is_valid_accessdate(year .. '-' .. month .. '-' .. day) then return false; -- return false when access-date out of bounds end else return false; -- return false when access-date is a range of two dates end end if 'archive-date' == param then -- test archive-date here because we have numerical date parts if not (0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required 0 == year2 and 0 == month2 and 0 == day2) then -- none of these; archive-date must not be a range return false; -- return false when archive-date is a range of two dates end end local result=true; -- check whole dates for validity; assume true because not all dates will go through this test if 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 == day2 then -- YMD (simple whole date) result = is_valid_date (year, month, day, param); -- <param> for |pmc-embargo-date= elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 ~= day2 then -- YMD-d (day range) result = is_valid_date (year, month, day); result = result and is_valid_date (year, month, day2); elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-md (day month range) result = is_valid_date (year, month, day); result = result and is_valid_date (year, month2, day2); elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 ~= year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-ymd (day month year range) result = is_valid_date(year, month, day); result = result and is_valid_date(year2, month2, day2); end if false == result then return false; end if nil ~= tCOinS_date then -- this table only passed into this function when testing |date= parameter values make_COinS_date ({year = year, month = month, day = day, year2 = year2, month2 = month2, day2 = day2}, tCOinS_date); -- make an ISO 8601 date string for COinS end return true, anchor_year; -- format is good and date string represents a real date end --[[--------------------------< D A T E S >-------------------------------------------------------------------- Cycle the date-holding parameters in passed table date_parameters_list through check_date() to check compliance with MOS:DATE. For all valid dates, check_date() returns true. The |date= parameter test is unique, it is the only date holding parameter from which values for anchor_year (used in CITEREF identifiers) and COinS_date (used in the COinS metadata) are derived. The |date= parameter is the only date-holding parameter that is allowed to contain the no-date keywords "n.d." or "nd" (without quotes). Unlike most error messages created in this module, only one error message is created by this function. Because all of the date holding parameters are processed serially, parameters with errors are added to the <error_list> sequence table as the dates are tested. ]] local function dates(date_parameters_list, tCOinS_date, error_list) local anchor_year; -- will return as nil if the date being tested is not |date= local COinS_date; -- will return as nil if the date being tested is not |date= local embargo_date; -- if embargo date is a good dmy, mdy, ymd date then holds original value else reset to 9999 local good_date = false; for k, v in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set(v.val) then -- if the parameter has a value v.val = mw.ustring.gsub(v.val, '%d', cfg.date_names.local_digits); -- translate 'local' digits to Western 0-9 if v.val:match("^c%. [1-9]%d%d%d?%a?$") then -- special case for c. year or with or without CITEREF disambiguator - only |date= and |year= local year = v.val:match("c%. ([1-9]%d%d%d?)%a?"); -- get the year portion so it can be tested if 'date' == k then anchor_year, COinS_date = v.val:match("((c%. [1-9]%d%d%d?)%a?)"); -- anchor year and COinS_date only from |date= parameter good_date = is_valid_year(year); elseif 'year' == k then good_date = is_valid_year(year); end elseif 'date' == k then -- if the parameter is |date= if v.val:match("^n%.d%.%a?$") then -- ToDo: I18N -- if |date=n.d. with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((n%.d%.)%a?)"); -- ToDo: I18N -- "n.d."; no error when date parameter is set to no date elseif v.val:match("^nd%a?$") then -- ToDo: I18N -- if |date=nd with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((nd)%a?)"); -- ToDo: I18N -- "nd"; no error when date parameter is set to no date else good_date, anchor_year, COinS_date = check_date (v.val, k, tCOinS_date); -- go test the date end elseif 'year' == k then -- if the parameter is |year= it should hold only a year value if v.val:match("^[1-9]%d%d%d?%a?$") then -- if |year = 3 or 4 digits only with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((%d+)%a?)"); end elseif 'pmc-embargo-date' == k then -- if the parameter is |pmc-embargo-date= good_date = check_date (v.val, k); -- go test the date if true == good_date then -- if the date is a valid date good_date, embargo_date = is_valid_embargo_date (v.val); -- is |pmc-embargo-date= date a single dmy, mdy, or ymd formatted date? yes: returns embargo date; no: returns 9999 end else -- any other date-holding parameter good_date = check_date (v.val, k); -- go test the date end if false == good_date then -- assemble one error message so we don't add the tracking category multiple times table.insert (error_list, wrap_style ('parameter', v.name)); -- make parameter name suitable for error message list end end end return anchor_year, embargo_date; -- and done end --[[--------------------------< Y E A R _ D A T E _ C H E C K >------------------------------------------------ Compare the value provided in |year= with the year value(s) provided in |date=. This function sets a local numeric value: 0 - year value does not match the year value in date 1 - (default) year value matches the year value in date or one of the year values when date contains two years 2 - year value matches the year value in date when date is in the form YYYY-MM-DD and year is disambiguated (|year=YYYYx) the numeric value in <result> determines the 'output' if any from this function: 0 – adds error message to error_list sequence table 1 – adds maint cat 2 – does nothing ]] local function year_date_check (year_string, year_origin, date_string, date_origin, error_list) local year; local date1; local date2; local result = 1; -- result of the test; assume that the test passes year = year_string:match ('(%d%d%d%d?)'); if date_string:match ('%d%d%d%d%-%d%d%-%d%d') and year_string:match ('%d%d%d%d%a') then --special case where both date and year are required YYYY-MM-DD and YYYYx date1 = date_string:match ('(%d%d%d%d)'); year = year_string:match ('(%d%d%d%d)'); if year ~= date1 then result = 0; -- years don't match else result = 2; -- years match; but because disambiguated, don't add to maint cat end elseif date_string:match ("%d%d%d%d?.-%d%d%d%d?") then -- any of the standard range formats of date with two three- or four-digit years date1, date2 = date_string:match ("(%d%d%d%d?).-(%d%d%d%d?)"); if year ~= date1 and year ~= date2 then result = 0; end elseif mw.ustring.match(date_string, "%d%d%d%d[%-–]%d%d") then -- YYYY-YY date ranges local century; date1, century, date2 = mw.ustring.match(date_string, "((%d%d)%d%d)[%-–]+(%d%d)"); date2 = century..date2; -- convert YY to YYYY if year ~= date1 and year ~= date2 then result = 0; end elseif date_string:match ("%d%d%d%d?") then -- any of the standard formats of date with one year date1 = date_string:match ("(%d%d%d%d?)"); if year ~= date1 then result = 0; end else -- should never get here; this function called only when no other date errors result = 0; -- no recognizable year in date end if 0 == result then -- year / date mismatch table.insert (error_list, substitute (cfg.messages['mismatch'], {year_origin, date_origin})); -- add error message to error_list sequence table elseif 1 == result then -- redundant year / date set_message ('maint_date_year'); -- add a maint cat end end --[[--------------------------< Y E A R _ C H E C K >---------------------------------------------------------- Temporary function to test |year= for acceptable values: YYY, YYYY, year-only ranges, their circa forms, with or without CITEREF disambiguators. When |year= holds some form of date that is not one of these year-only dates, emit a maintenance message. This function necessary because many non-cs1|2 templates have a |year= parameter so cirrus searches are more-or- less useless ]] local function year_check (year) year = year:gsub ('c%. *', ''); -- remove circa annotation (if present) before testing <year> for _, index in ipairs ({'y-y', 'y'}) do -- РУВИКИ: убираем нерабочую пару 'y4-y2' / spin through these indexes into patterns_t if mw.ustring.match (year, patterns_t[index][1]) then return; -- if a match then |year= holds a valid 'year' end end set_message ('maint_year'); -- if here, |year= value is not an accepted value; add a maint cat end --[[--------------------------< R E F O R M A T T E R >-------------------------------------------------------- reformat 'date' into new format specified by format_param if pattern_idx (the current format of 'date') can be reformatted. Does the grunt work for reformat_dates(). The table re_formats maps pattern_idx (current format) and format_param (desired format) to a table that holds: format string used by string.format() identifier letters ('d', 'm', 'y', 'd2', 'm2', 'y2') that serve as indexes into a table t{} that holds captures from mw.ustring.match() for the various date parts specified by patterns[pattern_idx][1] Items in patterns{} have the general form: ['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'}, where: ['ymd'] is pattern_idx patterns['ymd'][1] is the match pattern with captures for mw.ustring.match() patterns['ymd'][2] is an indicator letter identifying the content of the first capture patterns['ymd'][3] ... the second capture etc. when a pattern matches a date, the captures are loaded into table t{} in capture order using the idemtifier characters as indexes into t{} For the above, a ymd date is in t{} as: t.y = first capture (year), t.m = second capture (month), t.d = third capture (day) To reformat, this function is called with the pattern_idx that matches the current format of the date and with format_param set to the desired format. This function loads table t{} as described and then calls string.format() with the format string specified by re_format[pattern_idx][format_param][1] using values taken from t{} according to the capture identifier letters specified by patterns[pattern_idx][format_param][n] where n is 2.. ]] local re_formats = { ['ymd'] = { -- date format is ymd; reformat to: ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['Mdy'] = { -- date format is Mdy; reformat to: ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- for long/short reformatting ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['dMy'] = { -- date format is dMy; reformat to: ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['Md-dy'] = { -- date format is Md-dy; reformat to: ['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- for long/short reformatting ['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- |df=dmy -> d-dMy }, ['d-dMy'] = { -- date format is d-d>y; reformat to: ['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- |df=mdy -> Md-dy }, ['dM-dMy'] = { -- date format is dM-dMy; reformat to: ['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- |df=mdy -> Md-Mdy }, ['Md-Mdy'] = { -- date format is Md-Mdy; reformat to: ['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- for long/short reformatting ['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- |df=dmy -> dM-dMy }, ['dMy-dMy'] = { -- date format is dMy-dMy; reformat to: ['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- for long/short reformatting ['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- |df=mdy -> Mdy-Mdy }, ['Mdy-Mdy'] = { -- date format is Mdy-Mdy; reformat to: ['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- for long/short reformatting ['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- |df=dmy -> dMy-dMy }, ['My-My'] = { -- these for long/short reformatting ['any'] = {'%s %s – %s %s', 'm', 'y', 'm2', 'y2'}, -- dmy/mdy agnostic }, ['M-My'] = { -- these for long/short reformatting ['any'] = {'%s–%s %s', 'm', 'm2', 'y'}, -- dmy/mdy agnostic }, ['My'] = { -- these for long/short reformatting ['any'] = {'%s %s', 'm', 'y'}, -- dmy/mdy agnostic }, -- ['yMd'] = { -- not supported at en.wiki -- ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy -- ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy -- ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- }, } local function reformatter (date, pattern_idx, format_param, mon_len) if not in_array (pattern_idx, {'ymd', 'Mdy', 'Md-dy', 'dMy', 'yMd', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then return; -- not in this set of date format patterns then not a reformattable date end if 'ymd' == format_param and in_array (pattern_idx, {'ymd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then return; -- ymd date ranges not supported at en.wiki; no point in reformatting ymd to ymd end if in_array (pattern_idx, {'My', 'M-My', 'My-My'}) then -- these are not dmy/mdy so can't be 'reformatted' into either format_param = 'any'; -- so format-agnostic end -- yMd is not supported at en.wiki; when yMd is supported at your wiki, uncomment the next line -- if 'yMd' == format_param and in_array (pattern_idx, {'yMd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy'}) then -- these formats not convertable; yMd not supported at en.wiki if 'yMd' == format_param then -- yMd not supported at en.wiki; when yMd is supported at your wiki, remove or comment-out this line return; -- not a reformattable date end local c1, c2, c3, c4, c5, c6, c7; -- these hold the captures specified in patterns[pattern_idx][1] c1, c2, c3, c4, c5, c6, c7 = mw.ustring.match (date, patterns[pattern_idx][1]); -- get the captures local t = { -- table that holds k/v pairs of date parts from the captures and patterns[pattern_idx][2..] [patterns[pattern_idx][2]] = c1; -- at minimum there is always one capture with a matching indicator letter [patterns[pattern_idx][3] or 'x'] = c2; -- patterns can have a variable number of captures; each capture requires an indicator letter; [patterns[pattern_idx][4] or 'x'] = c3; -- where there is no capture, there is no indicator letter so n in patterns[pattern_idx][n] will be nil; [patterns[pattern_idx][5] or 'x'] = c4; -- the 'x' here spoofs an indicator letter to prevent 'table index is nil' error [patterns[pattern_idx][6] or 'x'] = c5; [patterns[pattern_idx][7] or 'x'] = c6; [patterns[pattern_idx][8] or 'x'] = c7; }; if t.a then -- if this date has an anchor year capture (all convertable date formats except ymd) if t.y2 then -- for year range date formats t.y2 = t.a; -- use the anchor year capture when reassembling the date else -- here for single date formats (except ymd) t.y = t.a; -- use the anchor year capture when reassembling the date end end if tonumber(t.m) then -- if raw month is a number (converting from ymd) if 's' == mon_len then -- if we are to use abbreviated month names t.m = cfg.date_names['inv_local_short'][tonumber(t.m)]; -- convert it to a month name else t.m = cfg.date_names['inv_local_long'][tonumber(t.m)]; -- convert it to a month name end t.d = t.d:gsub ('0(%d)', '%1'); -- strip leading '0' from day if present elseif 'ymd' == format_param then -- when converting to ymd t.y = t.y:gsub ('%a', ''); -- strip CITREF disambiguator if present; anchor year already known so process can proceed; TODO: maint message? if 1582 > tonumber (t.y) then -- ymd format dates not allowed before 1582 return; end t.m = string.format ('%02d', get_month_number (t.m)); -- make sure that month and day are two digits t.d = string.format ('%02d', t.d); elseif mon_len then -- if mon_len is set to either 'short' or 'long' for _, mon in ipairs ({'m', 'm2'}) do -- because there can be two month names, check both if t[mon] then t[mon] = get_month_number (t[mon]); -- get the month number for this month (is length agnostic) if 0 == t[mon] then return; end -- seasons and named dates can't be converted t[mon] = (('s' == mon_len) and cfg.date_names['inv_local_short'][t[mon]]) or cfg.date_names['inv_local_long'][t[mon]]; -- fetch month name according to length end end end local new_date = string.format (re_formats[pattern_idx][format_param][1], -- format string t[re_formats[pattern_idx][format_param][2]], -- named captures from t{} t[re_formats[pattern_idx][format_param][3]], t[re_formats[pattern_idx][format_param][4]], t[re_formats[pattern_idx][format_param][5]], t[re_formats[pattern_idx][format_param][6]], t[re_formats[pattern_idx][format_param][7]], t[re_formats[pattern_idx][format_param][8]] ); return new_date; end --[[-------------------------< R E F O R M A T _ D A T E S >-------------------------------------------------- Reformats existing dates into the format specified by format. format is one of several manual keywords: dmy, dmy-all, mdy, mdy-all, ymd, ymd-all. The -all version includes access- and archive-dates; otherwise these dates are not reformatted. This function allows automatic date formatting. In ~/Configuration, the article source is searched for one of the {{use xxx dates}} templates. If found, xxx becomes the global date format as xxx-all. If |cs1-dates= in {{use xxx dates}} has legitimate value then that value determines how cs1|2 dates will be rendered. Legitimate values for |cs1-dates= are: l - all dates are rendered with long month names ls - publication dates use long month names; access-/archive-dates use abbreviated month names ly - publication dates use long month names; access-/archive-dates rendered in ymd format s - all dates are rendered with abbreviated (short) month names sy - publication dates use abbreviated month names; access-/archive-dates rendered in ymd format y - all dates are rendered in ymd format the format argument for automatic date formatting will be the format specified by {{use xxx dates}} with the value supplied by |cs1-dates so one of: xxx-l, xxx-ls, xxx-ly, xxx-s, xxx-sy, xxx-y, or simply xxx (|cs1-dates= empty, omitted, or invalid) where xxx shall be either of dmy or mdy. dates are extracted from date_parameters_list, reformatted (if appropriate), and then written back into the list in the new format. Dates in date_parameters_list are presumed here to be valid (no errors). This function returns true when a date has been reformatted, false else. Actual reformatting is done by reformatter(). ]] local function reformat_dates (date_parameters_list, format) local all = false; -- set to false to skip access- and archive-dates local len_p = 'l'; -- default publication date length shall be long local len_a = 'l'; -- default access-/archive-date length shall be long local result = false; local new_date; if format:match('%a+%-all') then -- manual df keyword; auto df keyword when length not specified in {{use xxx dates}}; format = format:match('(%a+)%-all'); -- extract the format all = true; -- all dates are long format dates because this keyword doesn't specify length elseif format:match('%a+%-[lsy][sy]?') then -- auto df keywords; internal only all = true; -- auto df applies to all dates; use length specified by capture len_p for all dates format, len_p, len_a = format:match('(%a+)%-([lsy])([sy]?)'); -- extract the format and length keywords if 'y' == len_p then -- because allowed by MOS:DATEUNIFY (sort of) range dates and My dates not reformatted format = 'ymd'; -- override {{use xxx dates}} elseif (not is_set(len_a)) or (len_p == len_a) then -- no access-/archive-date length specified or same length as publication dates then len_a = len_p; -- in case len_a not set end end -- else only publication dates and they are long for param_name, param_val in pairs (date_parameters_list) do -- for each date-holding parameter in the list if is_set (param_val.val) then -- if the parameter has a value if not (not all and in_array (param_name, {'access-date', 'archive-date'})) then -- skip access- or archive-date unless format is xxx-all; yeah, ugly; TODO: find a better way for pattern_idx, pattern in pairs (patterns) do if mw.ustring.match (param_val.val, pattern[1]) then if all and in_array (param_name, {'access-date', 'archive-date'}) then -- if this date is an access- or archive-date new_date = reformatter (param_val.val, pattern_idx, (('y' == len_a) and 'ymd') or format, len_a); -- choose ymd or dmy/mdy according to len_a setting else -- all other dates new_date = reformatter (param_val.val, pattern_idx, format, len_p); end if new_date then -- set when date was reformatted date_parameters_list[param_name].val = new_date; -- update date in date list result = true; -- and announce that changes have been made break; end end -- if end -- for end -- if end -- if end -- for return result; -- declare boolean result and done end --[[--------------------------< D A T E _ H Y P H E N _ T O _ D A S H >---------------------------------------- Loops through the list of date-holding parameters and converts any hyphen to an ndash. Not called if the cs1|2 template has any date errors. Modifies the date_parameters_list and returns true if hyphens are replaced, else returns false. ]] local function date_hyphen_to_dash (date_parameters_list) local result = false; local n; for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set (param_val.val) and not mw.ustring.match (param_val.val, patterns.ymd[1]) then -- for those that are not ymd dates (ustring because here digits may not be Western) param_val.val, n = param_val.val:gsub ('%-', '–'); -- replace any hyphen with ndash if 0 ~= n then date_parameters_list[param_name].val = param_val.val; -- update the list result = true; end end end return result; -- so we know if any hyphens were replaced end --[[-------------------------< D A T E _ N A M E _ X L A T E >------------------------------------------------ Attempts to translate English date names to local-language date names using names supplied by MediaWiki's date parser function. This is simple name-for-name replacement and may not work for all languages. if xlat_dig is true, this function will also translate Western (English) digits to the local language's digits. This will also translate ymd dates. ]] local function date_name_xlate (date_parameters_list, xlt_dig) local xlate; local mode; -- long or short month names local modified = false; local date; local sources_t = { {cfg.date_names.en.long, cfg.date_names.inv_local_long}, -- for translating long English month names to long local month names {cfg.date_names.en.short, cfg.date_names.inv_local_short}, -- short month names {cfg.date_names.en.quarter, cfg.date_names.inv_local_quarter}, -- quarter date names {cfg.date_names.en.season, cfg.date_names.inv_local_season}, -- season date nam {cfg.date_names.en.named, cfg.date_names.inv_local_named}, -- named dates } local function is_xlateable (month) -- local function to get local date name that replaces existing English-language date name for _, date_names_t in ipairs (sources_t) do -- for each sequence table in date_names_t if date_names_t[1][month] then -- if date name is English month (long or short), quarter, season or named and if date_names_t[2][date_names_t[1][month]] then -- if there is a matching local date name return date_names_t[2][date_names_t[1][month]]; -- return the local date name end end end end for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set(param_val.val) then -- if the parameter has a value date = param_val.val; for month in mw.ustring.gmatch (date, '[%a ]+') do -- iterate through all date names in the date (single date or date range) month = mw.text.trim (month); -- this because quarterly dates contain whitespace xlate = is_xlateable (month); -- get translate <month>; returns translation or nil if xlate then date = mw.ustring.gsub (date, month, xlate); -- replace the English with the translation date_parameters_list[param_name].val = date; -- save the translated date modified = true; end end if xlt_dig then -- shall we also translate digits? date = date:gsub ('%d', cfg.date_names.xlate_digits); -- translate digits from Western to 'local digits' date_parameters_list[param_name].val = date; -- save the translated date modified = true; end end end return modified; end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local imported functions table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr, utilities_page_ptr) add_prop_cat = utilities_page_ptr.add_prop_cat ; -- import functions from selected Module:Citation/CS1/Utilities module is_set = utilities_page_ptr.is_set; in_array = utilities_page_ptr.in_array; set_message = utilities_page_ptr.set_message; substitute = utilities_page_ptr.substitute; wrap_style = utilities_page_ptr.wrap_style; cfg = cfg_table_ptr; -- import tables from selected Module:Citation/CS1/Configuration end --[[--------------------------< A R C H I V E _ D A T E _ C H E C K >------------------------------------------ Compare value in |archive-date= with the timestamp in Wayback machine urls. Emits an error message with suggested date from the |archive-url= timestamp in an appropriate format when the value in |archive-date= does not match the timestamp. this function never called when any date in a cs1|2 template has errors error message suggests new |archive-date= value in an appropriate format specified by <df>. <df> is either |df= or cfg.global_df in that order. If <df> is nil, suggested date has format from |archive-date=. There is a caveat: when |df=dmy or |df=mdy, the reformatter leaves |access-date= and |archive-date= formats as they are. The error message suggested date is passed to the formatter as YYYY-MM-DD so when |df=dmy or |df=mdy, the format is not changed. ]] local function archive_date_check (archive_date, archive_url_timestamp, df) local archive_date_format = 'dmy-y'; -- holds the date format of date in |archive-date; default to ymd; 'dmy' used here to spoof reformat_dates() for _, v_t in ipairs ({{'dMy', 'dmy-all'}, {'Mdy', 'mdy-all'}}) do -- is |archive-date= format dmy or mdy? if archive_date:match (patterns[v_t[1]][1]) then -- does the pattern match? archive_date_format = cfg.keywords_xlate[v_t[2]]; -- get appropriate |df= supported keyword from the i18n translator table break; end end local dates_t = {}; dates_t['archive-date'] = {val=archive_date, name=''}; -- setup to call reformat_dates(); never called when errors so <name> unset as not needed reformat_dates (dates_t, 'dmy-y'); -- reformat |archive-date= to ymd; 'dmy' used here to spoof reformat_dates() local archive_url_date = archive_url_timestamp:gsub ('(%d%d%d%d)(%d%d)(%d%d)%d*', '%1-%2-%3'); -- make ymd format date from timestamp if dates_t['archive-date'].val == archive_url_date then -- are the two dates the same return; -- yes, done else dates_t['archive-date'] = {val=archive_url_date, name=''}; -- setup to call reformat_dates() with the timestamp date reformat_dates (dates_t, df or archive_date_format); -- reformat timestamp to format specified by <df> or format used in |archive-date= archive_url_date = dates_t['archive-date'].val; set_message ('err_archive_date_url_ts_mismatch', archive_url_date); -- emit an error message end end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { -- return exported functions archive_date_check = archive_date_check, date_hyphen_to_dash = date_hyphen_to_dash, date_name_xlate = date_name_xlate, dates = dates, reformat_dates = reformat_dates, set_selected_modules = set_selected_modules, year_date_check = year_date_check, } 7jskw8tv8uf190okxha8lqwml3ne07p 169552 169551 2026-09-13T22:44:38Z Asorev 36569 169552 Scribunto text/plain --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local add_prop_cat, is_set, in_array, set_message, substitute, wrap_style; -- imported functions from selected Module:Citation/CS1/Utilities local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration --[[--------------------------< F I L E - S C O P E D E C L A R A T I O N S >-------------------------------- File-scope variables are declared here ]] local lang_object = mw.getContentLanguage(); -- used by is_valid_accessdate(), is_valid_year(), date_name_xlate(); TODO: move to ~/Configuration? local year_limit; -- used by is_valid_year() --[=[-------------------------< I S _ V A L I D _ A C C E S S D A T E >---------------------------------------- returns true if: Wikipedia start date <= accessdate < today + 2 days Wikipedia start date is 2001-01-15T00:00:00 UTC which is 979516800 seconds after 1970-01-01T00:00:00 UTC (the start of Unix time) accessdate is the date provided in |access-date= at time 00:00:00 UTC today is the current date at time 00:00:00 UTC plus 48 hours if today is 2015-01-01T00:00:00 then adding 24 hours gives 2015-01-02T00:00:00 – one second more than today adding 24 hours gives 2015-01-03T00:00:00 – one second more than tomorrow This function does not work if it is fed month names for languages other than English. Wikimedia #time: parser apparently doesn't understand non-English date month names. This function will always return false when the date contains a non-English month name because good1 is false after the call to lang.formatDate(). To get around that call this function with YYYY-MM-DD format dates. ]=] local function is_valid_accessdate (accessdate) local good1, good2; local access_ts, tomorrow_ts; -- to hold Unix time stamps representing the dates good1, access_ts = pcall (lang_object.formatDate, lang_object, 'U', accessdate ); -- convert accessdate value to Unix timestamp good2, tomorrow_ts = pcall (lang_object.formatDate, lang_object, 'U', 'today + 2 days' ); -- today midnight + 2 days is one second more than all day tomorrow if good1 and good2 then -- lang.formatDate() returns a timestamp in the local script which which tonumber() may not understand access_ts = tonumber (access_ts) or lang_object:parseFormattedNumber (access_ts); -- convert to numbers for the comparison; tomorrow_ts = tonumber (tomorrow_ts) or lang_object:parseFormattedNumber (tomorrow_ts); else return false; -- one or both failed to convert to Unix time stamp end if 979516800 <= access_ts and access_ts < tomorrow_ts then -- Wikipedia start date <= accessdate < tomorrow's date return true; else return false; -- accessdate out of range end end --[[--------------------------< G E T _ M O N T H _ N U M B E R >---------------------------------------------- returns a number according to the month in a date: 1 for January, etc. Capitalization and spelling must be correct. If not a valid month, returns 0 ]] local function get_month_number (month) return cfg.date_names['local'].long[month] or cfg.date_names['local'].short[month] or -- look for local names first cfg.date_names['en'].long[month] or cfg.date_names['en'].short[month] or -- failing that, look for English names 0; -- not a recognized month name end --[[--------------------------< G E T _ S E A S O N _ N U M B E R >-------------------------------------------- returns a number according to the sequence of seasons in a year: 21 for Spring, etc. Capitalization and spelling must be correct. If not a valid season, returns 0. 21-24 = Spring, Summer, Autumn, Winter, independent of “Hemisphere” returns 0 when <param> is not |date= Season numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. cs1|2 only supports generic seasons. EDTF does support the distinction between north and south hemisphere seasons but cs1|2 has no way to make that distinction. These additional divisions not currently supported: 25-28 = Spring - Northern Hemisphere, Summer- Northern Hemisphere, Autumn - Northern Hemisphere, Winter - Northern Hemisphere 29-32 = Spring – Southern Hemisphere, Summer– Southern Hemisphere, Autumn – Southern Hemisphere, Winter - Southern Hemisphere 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) 37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each) 40-41 = Semestral 1, Semestral-2 (6 months each) ]] local function get_season_number (season, param) if 'date' ~= param then return 0; -- season dates only supported by |date= end return cfg.date_names['local'].season[season] or -- look for local names first cfg.date_names['en'].season[season] or -- failing that, look for English names 0; -- not a recognized season name end --[[--------------------------< G E T _ Q U A R T E R _ N U M B E R >------------------------------------------ returns a number according to the sequence of quarters in a year: 33 for first quarter, etc. Capitalization and spelling must be correct. If not a valid quarter, returns 0. 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) returns 0 when <param> is not |date= Quarter numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. cs1|2 only supports generic seasons and quarters. These additional divisions not currently supported: 37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each) 40-41 = Semestral 1, Semestral-2 (6 months each) ]] local function get_quarter_number (quarter, param) if 'date' ~= param then return 0; -- quarter dates only supported by |date= end quarter = mw.ustring.gsub (quarter, ' +', ' '); -- special case replace multiple space chars with a single space char return cfg.date_names['local'].quarter[quarter] or -- look for local names first cfg.date_names['en'].quarter[quarter] or -- failing that, look for English names 0; -- not a recognized quarter name end --[[--------------------------< G E T _ P R O P E R _ N A M E _ N U M B E R >---------------------------------- returns a non-zero number if date contains a recognized proper-name. Capitalization and spelling must be correct. returns 0 when <param> is not |date= ]] local function get_proper_name_number (name, param) if 'date' ~= param then return 0; -- proper-name dates only supported by |date= end return cfg.date_names['local'].named[name] or -- look for local names dates first cfg.date_names['en'].named[name] or -- failing that, look for English names 0; -- not a recognized named date end --[[--------------------------< G E T _ E L E M E N T _ N U M B E R <------------------------------------------ returns true if month or season or quarter or proper name is valid (properly spelled, capitalized, abbreviated) ]] local function get_element_number (element, param) local num; local funcs = {get_month_number, get_season_number, get_quarter_number, get_proper_name_number}; -- list of functions to execute in order for _, func in ipairs (funcs) do -- spin through the function list num = func (element, param); -- call the function and get the returned number if 0 ~= num then -- non-zero when valid month season quarter return num; -- return that number end end return nil; -- not valid end --[[--------------------------< I S _ V A L I D _ Y E A R >---------------------------------------------------- Function gets current year from the server and compares it to year from a citation parameter. Years more than one year in the future are not acceptable. Special case for |pmc-embargo-date=: years more than two years in the future are not acceptable ]] local function is_valid_year (year, param) if not is_set (year_limit) then year_limit = tonumber(os.date("%Y"))+1; -- global variable so we only have to fetch it once end year = tonumber (year) or lang_object:parseFormattedNumber (year); -- convert to number for the comparison if year and (100 > year) then -- years less than 100 not supported return false; end if 'pmc-embargo-date' == param then -- special case for |pmc-embargo-date= return year and (year <= tonumber(os.date("%Y"))+2) or false; -- years more than two years in the future are not accepted end return year and (year <= year_limit) or false; end --[[--------------------------< I S _ V A L I D _ D A T E >---------------------------------------------------- Returns true if day is less than or equal to the number of days in month and year is no farther into the future than next year; else returns false. Assumes Julian calendar prior to year 1582 and Gregorian calendar thereafter. Accounts for Julian calendar leap years before 1582 and Gregorian leap years after 1582. Where the two calendars overlap (1582 to approximately 1923) dates are assumed to be Gregorian. ]] local function is_valid_date (year, month, day, param) local days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; local month_length; if not is_valid_year (year, param) then -- no farther into the future than next year except |pmc-embargo-date= no more than two years in the future return false; end month = tonumber (month); -- required for YYYY-MM-DD dates if (2 == month) then -- if February month_length = 28; -- then 28 days unless if 1582 > tonumber(year) then -- Julian calendar if 0 == (year%4) then -- is a leap year? month_length = 29; -- if leap year then 29 days in February end else -- Gregorian calendar if (0 == (year%4) and (0 ~= (year%100) or 0 == (year%400))) then -- is a leap year? month_length = 29; -- if leap year then 29 days in February end end else month_length = days_in_month[month]; end if tonumber (day) > month_length then return false; end return true; end --[[--------------------------< I S _ V A L I D _ M O N T H _ R A N G E _ S T Y L E >-------------------------- Months in a range are expected to have the same style: Jan–Mar or October–December but not February–Mar or Jul–August. This function looks in cfg.date_names{} to see if both month names are listed in the long subtable or both are listed in the short subtable. When both have the same style (both are listed in the same table), returns true; false else ]] local function is_valid_month_range_style (month1, month2) if (cfg.date_names.en.long[month1] and cfg.date_names.en.long[month2]) or -- are both English names listed in the long subtable? (cfg.date_names.en.short[month1] and cfg.date_names.en.short[month2]) or -- are both English names listed in the short subtable? (cfg.date_names['local'].long[month1] and cfg.date_names['local'].long[month2]) or -- are both local names listed in the long subtable? (cfg.date_names['local'].short[month1] and cfg.date_names['local'].short[month2]) then -- are both local names listed in the short subtable? return true; end return false; -- names are mixed end --[[--------------------------< I S _ V A L I D _ M O N T H _ S E A S O N _ R A N G E >------------------------ Check a pair of months or seasons to see if both are valid members of a month or season pair. Month pairs are expected to be left to right, earliest to latest in time. All season ranges are accepted as valid because there are publishers out there who have published a Summer–Spring YYYY issue, hence treat as ok ]] local function is_valid_month_season_range(range_start, range_end, param) local range_start_number = get_month_number (range_start); local range_end_number; if 0 == range_start_number then -- is this a month range? range_start_number = get_season_number (range_start, param); -- not a month; is it a season? get start season number range_end_number = get_season_number (range_end, param); -- get end season number if (0 ~= range_start_number) and (0 ~= range_end_number) and (range_start_number ~= range_end_number) then return true; -- any season pairing is accepted except when both are the same end return false; -- range_start and/or range_end is not a season end -- here when range_start is a month range_end_number = get_month_number (range_end); -- get end month number if range_start_number < range_end_number and -- range_start is a month; does range_start precede range_end? is_valid_month_range_style (range_start, range_end) then -- do months have the same style? return true; -- proper order and same style end return false; -- range_start month number is greater than or equal to range end number; or range end isn't a month end --[[--------------------------< M A K E _ C O I N S _ D A T E >------------------------------------------------ This function receives a table of date parts for one or two dates and an empty table reference declared in Module:Citation/CS1. The function is called only for |date= parameters and only if the |date=<value> is determined to be a valid date format. The question of what to do with invalid date formats is not answered here. The date parts in the input table are converted to an ISO 8601 conforming date string: single whole dates: yyyy-mm-dd month and year dates: yyyy-mm year dates: yyyy ranges: yyyy-mm-dd/yyyy-mm-dd yyyy-mm/yyyy-mm yyyy/yyyy Dates in the Julian calendar are reduced to year or year/year so that we don't have to do calendar conversion from Julian to Proleptic Gregorian. The input table has: year, year2 – always present; if before 1582, ignore months and days if present month, month2 – 0 if not provided, 1-12 for months, 21-24 for seasons; 99 Christmas day, day2 – 0 if not provided, 1-31 for days the output table receives: rftdate: an ISO 8601 formatted date rftchron: a free-form version of the date, usually without year which is in rftdate (season ranges and proper-name dates) rftssn: one of four season keywords: winter, spring, summer, fall (lowercase) rftquarter: one of four values: 1, 2, 3, 4 ]] local function make_COinS_date (input, tCOinS_date) local date; -- one date or first date in a range local date2 = ''; -- end of range date input.year = tonumber (input.year) or lang_object:parseFormattedNumber (input.year); -- language-aware tonumber() input.year2 = tonumber (input.year2) or lang_object:parseFormattedNumber (input.year2); -- COinS dates are pseudo-ISO 8601 so convert to Arabic numerals -- start temporary Julian / Gregorian calendar uncertainty detection local year = input.year; -- this temporary code to determine the extent of sources dated to the Julian/Gregorian local month = tonumber(input.month); -- interstice 1 October 1582 – 1 January 1926 local day = tonumber (input.day); if (0 ~= day) and -- day must have a value for this to be a whole date (((1582 == year) and (10 <= month) and (12 >= month)) or -- any whole 1582 date from 1 October to 31 December or ((1926 == year) and (1 == month) and (1 == input.day)) or -- 1 January 1926 or ((1582 < year) and (1925 >= year))) then -- any date 1 January 1583 – 31 December 1925 tCOinS_date.inter_cal_cat = true; -- set category flag true end -- end temporary Julian / Gregorian calendar uncertainty detection if ((1582 == year) and (10 > month)) or (1582 > year) then -- if a Julian calendar date tCOinS_date.rftdate = tostring (input.year); -- &rft.date gets year only return; -- done end -- here for all forms of Gregorian dates if 20 < tonumber (input.month) then -- if season, quarter, or proper-name date date = input.year; -- &rft.date gets year only if 0 ~= input.year2 and input.year ~= input.year2 then -- if a range, only the second year portion when not the same as range start year date = string.format ('%.4d/%.4d', input.year, input.year2) -- assemble the date range end local season = {[24] = 'winter', [21] = 'spring', [22] = 'summer', [23] = 'fall', [33] = '1', [34] = '2', [35] = '3', [36] = '4', [98] = 'Easter', [99] = 'Christmas'}; -- seasons lowercase, no autumn; proper-names use title case if 0 == input.month2 then -- single season, quarter, or proper-name date if 40 < tonumber(input.month) then tCOinS_date.rftchron = season[input.month]; -- proper-name date; used in journal metadata only elseif 30 < tonumber(input.month) then tCOinS_date.rftquarter = season[input.month]; -- quarter date; used in journal metadata only else tCOinS_date.rftssn = season[input.month]; -- season date; used in journal metadata only end else -- season ranges are lumped into &rft.chron; &rft.ssn and &rft.quarter are left blank if input.year ~= input.year2 then -- season year – season year range or season year–year if 0 ~= input.month2 then tCOinS_date.rftchron = string.format ('%s %s – %s %s', season[input.month], input.year, season[input.month2], input.year2); -- used in journal metadata only end else -- season–season year range tCOinS_date.rftchron = season[input.month] .. '–' .. season[input.month2]; -- season–season year range; used in journal metadata only end end tCOinS_date.rftdate = tostring (date); return; -- done end -- here for gregorian calendar dates if 0 ~= input.day then date = string.format ('%s-%.2d-%.2d', input.year, tonumber(input.month), tonumber(input.day)); -- whole date elseif 0 ~= input.month then date = string.format ('%s-%.2d', input.year, tonumber(input.month)); -- year and month else date = string.format ('%s', input.year); -- just year end if 0 ~= input.year2 then if 0 ~= input.day2 then date2 = string.format ('/%s-%.2d-%.2d', input.year2, tonumber(input.month2), tonumber(input.day2)); -- whole date elseif 0 ~= input.month2 then date2 = string.format ('/%s-%.2d', input.year2, tonumber(input.month2)); -- year and month else date2 = string.format ('/%s', input.year2); -- just year end end tCOinS_date.rftdate = date .. date2; -- date2 has the '/' separator return; end --[[--------------------------< P A T T E R N S >-------------------------------------------------------------- this is the list of patterns for date formats that this module recognizes. Approximately the first half of these patterns represent formats that might be reformatted into another format. Those that might be reformatted have 'indicator' letters that identify the content of the matching capture: 'd' (day), 'm' (month), 'a' (anchor year), 'y' (year); second day, month, year have a '2' suffix. These patterns are used for both date validation and for reformatting. This table should not be moved to ~/Configuration because changes to this table require changes to check_date() and to reformatter() and reformat_date() ]] local patterns = { -- year-initial numerical year-month-day ['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'}, -- month-initial: month day, year ['Mdy'] = {'^(%D-) +([1-9]%d?), +((%d%d%d%d?)%a?)$', 'm', 'd', 'a', 'y'}, -- month-initial day range: month day–day, year; days are separated by endash ['Md-dy'] = {'^(%D-) +([1-9]%d?)[%-–]([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'd2', 'a', 'y'}, -- day-initial: day month year ['dMy'] = {'^([1-9]%d?) +(%D-) +((%d%d%d%d?)%a?)$', 'd', 'm', 'a', 'y'}, -- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed; not supported at en.wiki -- ['yMd'] = {'^((%d%d%d%d?)%a?) +(%D-) +(%d%d?)$', 'a', 'y', 'm', 'd'}, -- day-range-initial: day–day month year; days are separated by endash ['d-dMy'] = {'^([1-9]%d?)[%-–]([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'd2', 'm', 'a', 'y'}, -- day initial month-day-range: day month - day month year; uses spaced endash ['dM-dMy'] = {'^([1-9]%d?) +(%D-) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'd2', 'm2', 'a', 'y'}, -- month initial month-day-range: month day – month day, year; uses spaced endash ['Md-Mdy'] = {'^(%D-) +([1-9]%d?) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$','m', 'd', 'm2', 'd2', 'a', 'y'}, -- day initial month-day-year-range: day month year - day month year; uses spaced endash ['dMy-dMy'] = {'^([1-9]%d?) +(%D-) +(%d%d%d%d) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'y', 'd2', 'm2', 'a', 'y2'}, -- month initial month-day-year-range: month day, year – month day, year; uses spaced endash ['Mdy-Mdy'] = {'^(%D-) +([1-9]%d?), +(%d%d%d%d) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'y', 'm2', 'd2', 'a', 'y2'}, -- these date formats cannot be converted, per se, but month name can be rendered short or long -- month/season year - month/season year; separated by spaced endash ['My-My'] = {'^(%D-) +(%d%d%d%d) +[%-–] +(%D-) +((%d%d%d%d)%a?)$', 'm', 'y', 'm2', 'a', 'y2'}, -- month/season range year; months separated by endash ['M-My'] = {'^(%D-)[%-–](%D-) +((%d%d%d%d)%a?)$', 'm', 'm2', 'a', 'y'}, -- month/season year or proper-name year; quarter year when First Quarter YYYY etc. ['My'] = {'^([^%d–]-) +((%d%d%d%d)%a?)$', 'm', 'a', 'y'}, -- this way because endash is a member of %D; %D- will match January–March 2019 when it shouldn't -- these date formats cannot be converted ['Sy4-y2'] = {'^(%D-) +((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash ['Sy-y'] = {'^(%D-) +(%d%d%d%d)[%-–]((%d%d%d%d)%a?)$'}, -- special case Winter/Summer year-year; year separated with unspaced endash ['y-y'] = {'^(%d%d%d%d?)[%-–]((%d%d%d%d?)%a?)$'}, -- year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999 ['y4-y2'] = {'^((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- year range: YYYY–YY; separated by unspaced endash ['y'] = {'^((%d%d%d%d?)%a?)$'}, -- year; here accept either YYY or YYYY } --[[--------------------------< I S _ V A L I D _ E M B A R G O _ D A T E >------------------------------------ returns true and date value if that value has proper dmy, mdy, ymd format. returns false and 9999 (embargoed forever) when date value is not proper format; assumes that when |pmc-embargo-date= is set, the editor intended to embargo a PMC but |pmc-embargo-date= does not hold a single date. ]] local function is_valid_embargo_date (v) if v:match (patterns['ymd'][1]) or -- ymd v:match (patterns['Mdy'][1]) or -- dmy v:match (patterns['dMy'][1]) then -- mdy return true, v; end return false, '9999'; -- if here not good date so return false and set embargo date to long time in future end --[[--------------------------< C H E C K _ D A T E >---------------------------------------------------------- Check date format to see that it is one of the formats approved by WP:DATESNO or WP:DATERANGE. Exception: only allowed range separator is endash. Additionally, check the date to see that it is a real date: no 31 in 30-day months; no 29 February when not a leap year. Months, both long-form and three character abbreviations, and seasons must be spelled correctly. Future years beyond next year are not allowed. If the date fails the format tests, this function returns false and does not return values for anchor_year and COinS_date. When this happens, the date parameter is (DEBUG: not?) used in the COinS metadata and the CITEREF identifier gets its year from the year parameter if present otherwise CITEREF does not get a date value. Inputs: date_string - date string from date-holding parameters (date, year, publication-date, access-date, pmc-embargo-date, archive-date, lay-date) Returns: false if date string is not a real date; else true, anchor_year, COinS_date anchor_year can be used in CITEREF anchors COinS_date is ISO 8601 format date; see make_COInS_date() ]] local function check_date (date_string, param, tCOinS_date) local year; -- assume that year2, months, and days are not used; local year2 = 0; -- second year in a year range local month = 0; local month2 = 0; -- second month in a month range local day = 0; local day2 = 0; -- second day in a day range local anchor_year; local coins_date; if date_string:match (patterns['ymd'][1]) then -- year-initial numerical year month day format year, month, day = date_string:match (patterns['ymd'][1]); if 12 < tonumber(month) or 1 > tonumber(month) or 1582 > tonumber(year) or 0 == tonumber(day) then return false; end -- month or day number not valid or not Gregorian calendar anchor_year = year; elseif mw.ustring.match(date_string, patterns['Mdy'][1]) then -- month-initial: month day, year month, day, anchor_year, year = mw.ustring.match(date_string, patterns['Mdy'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months elseif mw.ustring.match(date_string, patterns['Md-dy'][1]) then -- month-initial day range: month day–day, year; days are separated by endash month, day, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-dy'][1]); if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same; month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months month2=month; -- for metadata year2 = year; elseif mw.ustring.match(date_string, patterns['dMy'][1]) then -- day-initial: day month year day, month, anchor_year, year = mw.ustring.match(date_string, patterns['dMy'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months --[[ NOT supported at en.wiki elseif mw.ustring.match(date_string, patterns['yMd'][1]) then -- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed anchor_year, year, month, day = mw.ustring.match(date_string, patterns['yMd'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months -- end NOT supported at en.wiki ]] elseif mw.ustring.match(date_string, patterns['d-dMy'][1]) then -- day-range-initial: day–day month year; days are separated by endash day, day2, month, anchor_year, year = mw.ustring.match(date_string, patterns['d-dMy'][1]); if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same; month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months month2 = month; -- for metadata year2 = year; elseif mw.ustring.match(date_string, patterns['dM-dMy'][1]) then -- day initial month-day-range: day month - day month year; uses spaced endash day, month, day2, month2, anchor_year, year = mw.ustring.match(date_string, patterns['dM-dMy'][1]); if (not is_valid_month_season_range(month, month2)) or not is_valid_year(year) then return false; end -- date range order is left to right: earlier to later; month = get_month_number (month); -- for metadata month2 = get_month_number (month2); year2 = year; elseif mw.ustring.match(date_string, patterns['Md-Mdy'][1]) then -- month initial month-day-range: month day – month day, year; uses spaced endash month, day, month2, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-Mdy'][1]); if (not is_valid_month_season_range(month, month2, param)) or not is_valid_year(year) then return false; end month = get_month_number (month); -- for metadata month2 = get_month_number (month2); year2 = year; elseif mw.ustring.match(date_string, patterns['dMy-dMy'][1]) then -- day initial month-day-year-range: day month year - day month year; uses spaced endash day, month, year, day2, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['dMy-dMy'][1]); if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style month = get_month_number (month); -- for metadata month2 = get_month_number (month2); if 0 == month or 0 == month2 then return false; end -- both must be valid elseif mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]) then -- month initial month-day-year-range: month day, year – month day, year; uses spaced endash month, day, year, month2, day2, anchor_year, year2 = mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]); if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style month = get_month_number (month); -- for metadata month2 = get_month_number(month2); if 0 == month or 0 == month2 then return false; end -- both must be valid elseif mw.ustring.match(date_string, patterns['Sy4-y2'][1]) then -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash local century; month, year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy4-y2'][1]); if 'Winter' ~= month and 'Summer' ~= month then return false end; -- 'month' can only be Winter or Summer anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years year2 = century..year2; -- add the century to year2 for comparisons if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) then return false; end -- no year farther in the future than next year month = get_season_number(month, param); elseif mw.ustring.match(date_string, patterns['Sy-y'][1]) then -- special case Winter/Summer year-year; year separated with unspaced endash month, year, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy-y'][1]); month = get_season_number (month, param); -- <month> can only be winter or summer; also for metadata if (month ~= cfg.date_names['en'].season['Winter']) and (month ~= cfg.date_names['en'].season['Summer']) then return false; -- not Summer or Winter; abandon end anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) then return false; end -- no year farther in the future than next year elseif mw.ustring.match(date_string, patterns['My-My'][1]) then -- month/season year - month/season year; separated by spaced endash month, year, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['My-My'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year if 0 ~= get_month_number(month) and 0 ~= get_month_number(month2) and is_valid_month_range_style(month, month2) then -- both must be month year, same month style month = get_month_number(month); month2 = get_month_number(month2); elseif 0 ~= get_season_number(month, param) and 0 ~= get_season_number(month2, param) then -- both must be season year, not mixed month = get_season_number(month, param); month2 = get_season_number(month2, param); else return false; end elseif mw.ustring.match(date_string, patterns['M-My'][1]) then -- month/season range year; months separated by endash month, month2, anchor_year, year = mw.ustring.match(date_string, patterns['M-My'][1]); if (not is_valid_month_season_range(month, month2, param)) or (not is_valid_year(year)) then return false; end if 0 ~= get_month_number(month) then -- determined to be a valid range so just check this one to know if month or season month = get_month_number(month); month2 = get_month_number(month2); if 0 == month or 0 == month2 then return false; end else month = get_season_number(month, param); month2 = get_season_number(month2, param); end year2 = year; elseif mw.ustring.match(date_string, patterns['My'][1]) then -- month/season/quarter/proper-name year month, anchor_year, year = mw.ustring.match(date_string, patterns['My'][1]); if not is_valid_year(year) then return false; end month = get_element_number(month, param); -- get month season quarter proper-name number or nil if not month then return false; end -- not valid whatever it is elseif mw.ustring.match(date_string, patterns['y-y'][1]) then -- Year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999 year, anchor_year, year2 = mw.ustring.match(date_string, patterns['y-y'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year elseif mw.ustring.match(date_string, patterns['y4-y2'][1]) then -- Year range: YYYY–YY; separated by unspaced endash local century; year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['y4-y2'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years if 13 > tonumber(year2) then return false; end -- don't allow 2003-05 which might be May 2003 year2 = century .. year2; -- add the century to year2 for comparisons if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year if in_array (param, {'date', 'publication-date', 'year'}) then -- here when 'valid' abbreviated year range; if one of these parameters add_prop_cat ('year-range-abbreviated'); -- add properties cat end elseif mw.ustring.match(date_string, patterns['y'][1]) then -- year; here accept either YYY or YYYY anchor_year, year = mw.ustring.match(date_string, patterns['y'][1]); if false == is_valid_year(year) then return false; end else return false; -- date format not one of the MOS:DATE approved formats end if param ~= 'date' then -- CITEREF disambiguation only allowed in |date=; |year= & |publication-date= promote to date if anchor_year:match ('%l$') then return false; end end if 'access-date' == param then -- test access-date here because we have numerical date parts if 0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required 0 == year2 and 0 == month2 and 0 == day2 then -- none of these; access-date must not be a range if not is_valid_accessdate(year .. '-' .. month .. '-' .. day) then return false; -- return false when access-date out of bounds end else return false; -- return false when access-date is a range of two dates end end if 'archive-date' == param then -- test archive-date here because we have numerical date parts if not (0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required 0 == year2 and 0 == month2 and 0 == day2) then -- none of these; archive-date must not be a range return false; -- return false when archive-date is a range of two dates end end local result=true; -- check whole dates for validity; assume true because not all dates will go through this test if 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 == day2 then -- YMD (simple whole date) result = is_valid_date (year, month, day, param); -- <param> for |pmc-embargo-date= elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 ~= day2 then -- YMD-d (day range) result = is_valid_date (year, month, day); result = result and is_valid_date (year, month, day2); elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-md (day month range) result = is_valid_date (year, month, day); result = result and is_valid_date (year, month2, day2); elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 ~= year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-ymd (day month year range) result = is_valid_date(year, month, day); result = result and is_valid_date(year2, month2, day2); end if false == result then return false; end if nil ~= tCOinS_date then -- this table only passed into this function when testing |date= parameter values make_COinS_date ({year = year, month = month, day = day, year2 = year2, month2 = month2, day2 = day2}, tCOinS_date); -- make an ISO 8601 date string for COinS end return true, anchor_year; -- format is good and date string represents a real date end --[[--------------------------< D A T E S >-------------------------------------------------------------------- Cycle the date-holding parameters in passed table date_parameters_list through check_date() to check compliance with MOS:DATE. For all valid dates, check_date() returns true. The |date= parameter test is unique, it is the only date holding parameter from which values for anchor_year (used in CITEREF identifiers) and COinS_date (used in the COinS metadata) are derived. The |date= parameter is the only date-holding parameter that is allowed to contain the no-date keywords "n.d." or "nd" (without quotes). Unlike most error messages created in this module, only one error message is created by this function. Because all of the date holding parameters are processed serially, parameters with errors are added to the <error_list> sequence table as the dates are tested. ]] local function dates(date_parameters_list, tCOinS_date, error_list) local anchor_year; -- will return as nil if the date being tested is not |date= local COinS_date; -- will return as nil if the date being tested is not |date= local embargo_date; -- if embargo date is a good dmy, mdy, ymd date then holds original value else reset to 9999 local good_date = false; for k, v in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set(v.val) then -- if the parameter has a value v.val = mw.ustring.gsub(v.val, '%d', cfg.date_names.local_digits); -- translate 'local' digits to Western 0-9 if v.val:match("^c%. [1-9]%d%d%d?%a?$") then -- special case for c. year or with or without CITEREF disambiguator - only |date= and |year= local year = v.val:match("c%. ([1-9]%d%d%d?)%a?"); -- get the year portion so it can be tested if 'date' == k then anchor_year, COinS_date = v.val:match("((c%. [1-9]%d%d%d?)%a?)"); -- anchor year and COinS_date only from |date= parameter good_date = is_valid_year(year); elseif 'year' == k then good_date = is_valid_year(year); end elseif 'date' == k then -- if the parameter is |date= if v.val:match("^n%.d%.%a?$") then -- ToDo: I18N -- if |date=n.d. with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((n%.d%.)%a?)"); -- ToDo: I18N -- "n.d."; no error when date parameter is set to no date elseif v.val:match("^nd%a?$") then -- ToDo: I18N -- if |date=nd with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((nd)%a?)"); -- ToDo: I18N -- "nd"; no error when date parameter is set to no date else good_date, anchor_year, COinS_date = check_date (v.val, k, tCOinS_date); -- go test the date end elseif 'year' == k then -- if the parameter is |year= it should hold only a year value if v.val:match("^[1-9]%d%d%d?%a?$") then -- if |year = 3 or 4 digits only with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((%d+)%a?)"); end elseif 'pmc-embargo-date' == k then -- if the parameter is |pmc-embargo-date= good_date = check_date (v.val, k); -- go test the date if true == good_date then -- if the date is a valid date good_date, embargo_date = is_valid_embargo_date (v.val); -- is |pmc-embargo-date= date a single dmy, mdy, or ymd formatted date? yes: returns embargo date; no: returns 9999 end else -- any other date-holding parameter good_date = check_date (v.val, k); -- go test the date end if false == good_date then -- assemble one error message so we don't add the tracking category multiple times table.insert (error_list, wrap_style ('parameter', v.name)); -- make parameter name suitable for error message list end end end return anchor_year, embargo_date; -- and done end --[[--------------------------< Y E A R _ D A T E _ C H E C K >------------------------------------------------ Compare the value provided in |year= with the year value(s) provided in |date=. This function sets a local numeric value: 0 - year value does not match the year value in date 1 - (default) year value matches the year value in date or one of the year values when date contains two years 2 - year value matches the year value in date when date is in the form YYYY-MM-DD and year is disambiguated (|year=YYYYx) the numeric value in <result> determines the 'output' if any from this function: 0 – adds error message to error_list sequence table 1 – adds maint cat 2 – does nothing ]] local function year_date_check (year_string, year_origin, date_string, date_origin, error_list) local year; local date1; local date2; local result = 1; -- result of the test; assume that the test passes year = year_string:match ('(%d%d%d%d?)'); if date_string:match ('%d%d%d%d%-%d%d%-%d%d') and year_string:match ('%d%d%d%d%a') then --special case where both date and year are required YYYY-MM-DD and YYYYx date1 = date_string:match ('(%d%d%d%d)'); year = year_string:match ('(%d%d%d%d)'); if year ~= date1 then result = 0; -- years don't match else result = 2; -- years match; but because disambiguated, don't add to maint cat end elseif date_string:match ("%d%d%d%d?.-%d%d%d%d?") then -- any of the standard range formats of date with two three- or four-digit years date1, date2 = date_string:match ("(%d%d%d%d?).-(%d%d%d%d?)"); if year ~= date1 and year ~= date2 then result = 0; end elseif mw.ustring.match(date_string, "%d%d%d%d[%-–]%d%d") then -- YYYY-YY date ranges local century; date1, century, date2 = mw.ustring.match(date_string, "((%d%d)%d%d)[%-–]+(%d%d)"); date2 = century..date2; -- convert YY to YYYY if year ~= date1 and year ~= date2 then result = 0; end elseif date_string:match ("%d%d%d%d?") then -- any of the standard formats of date with one year date1 = date_string:match ("(%d%d%d%d?)"); if year ~= date1 then result = 0; end else -- should never get here; this function called only when no other date errors result = 0; -- no recognizable year in date end if 0 == result then -- year / date mismatch table.insert (error_list, substitute (cfg.messages['mismatch'], {year_origin, date_origin})); -- add error message to error_list sequence table elseif 1 == result then -- redundant year / date set_message ('maint_date_year'); -- add a maint cat end end --[[--------------------------< Y E A R _ C H E C K >---------------------------------------------------------- Temporary function to test |year= for acceptable values: YYY, YYYY, year-only ranges, their circa forms, with or without CITEREF disambiguators. When |year= holds some form of date that is not one of these year-only dates, emit a maintenance message. This function necessary because many non-cs1|2 templates have a |year= parameter so cirrus searches are more-or- less useless ]] local function year_check (year) year = year:gsub ('c%. *', ''); -- remove circa annotation (if present) before testing <year> for _, index in ipairs ({'y-y', 'y'}) do -- РУВИКИ: убираем нерабочую пару 'y4-y2' / spin through these indexes into patterns if mw.ustring.match (year, patterns[index][1]) then return; -- if a match then |year= holds a valid 'year' end end set_message ('maint_year'); -- if here, |year= value is not an accepted value; add a maint cat end --[[--------------------------< R E F O R M A T T E R >-------------------------------------------------------- reformat 'date' into new format specified by format_param if pattern_idx (the current format of 'date') can be reformatted. Does the grunt work for reformat_dates(). The table re_formats maps pattern_idx (current format) and format_param (desired format) to a table that holds: format string used by string.format() identifier letters ('d', 'm', 'y', 'd2', 'm2', 'y2') that serve as indexes into a table t{} that holds captures from mw.ustring.match() for the various date parts specified by patterns[pattern_idx][1] Items in patterns{} have the general form: ['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'}, where: ['ymd'] is pattern_idx patterns['ymd'][1] is the match pattern with captures for mw.ustring.match() patterns['ymd'][2] is an indicator letter identifying the content of the first capture patterns['ymd'][3] ... the second capture etc. when a pattern matches a date, the captures are loaded into table t{} in capture order using the idemtifier characters as indexes into t{} For the above, a ymd date is in t{} as: t.y = first capture (year), t.m = second capture (month), t.d = third capture (day) To reformat, this function is called with the pattern_idx that matches the current format of the date and with format_param set to the desired format. This function loads table t{} as described and then calls string.format() with the format string specified by re_format[pattern_idx][format_param][1] using values taken from t{} according to the capture identifier letters specified by patterns[pattern_idx][format_param][n] where n is 2.. ]] local re_formats = { ['ymd'] = { -- date format is ymd; reformat to: ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['Mdy'] = { -- date format is Mdy; reformat to: ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- for long/short reformatting ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['dMy'] = { -- date format is dMy; reformat to: ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['Md-dy'] = { -- date format is Md-dy; reformat to: ['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- for long/short reformatting ['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- |df=dmy -> d-dMy }, ['d-dMy'] = { -- date format is d-d>y; reformat to: ['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- |df=mdy -> Md-dy }, ['dM-dMy'] = { -- date format is dM-dMy; reformat to: ['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- |df=mdy -> Md-Mdy }, ['Md-Mdy'] = { -- date format is Md-Mdy; reformat to: ['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- for long/short reformatting ['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- |df=dmy -> dM-dMy }, ['dMy-dMy'] = { -- date format is dMy-dMy; reformat to: ['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- for long/short reformatting ['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- |df=mdy -> Mdy-Mdy }, ['Mdy-Mdy'] = { -- date format is Mdy-Mdy; reformat to: ['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- for long/short reformatting ['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- |df=dmy -> dMy-dMy }, ['My-My'] = { -- these for long/short reformatting ['any'] = {'%s %s – %s %s', 'm', 'y', 'm2', 'y2'}, -- dmy/mdy agnostic }, ['M-My'] = { -- these for long/short reformatting ['any'] = {'%s–%s %s', 'm', 'm2', 'y'}, -- dmy/mdy agnostic }, ['My'] = { -- these for long/short reformatting ['any'] = {'%s %s', 'm', 'y'}, -- dmy/mdy agnostic }, -- ['yMd'] = { -- not supported at en.wiki -- ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy -- ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy -- ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- }, } local function reformatter (date, pattern_idx, format_param, mon_len) if not in_array (pattern_idx, {'ymd', 'Mdy', 'Md-dy', 'dMy', 'yMd', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then return; -- not in this set of date format patterns then not a reformattable date end if 'ymd' == format_param and in_array (pattern_idx, {'ymd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then return; -- ymd date ranges not supported at en.wiki; no point in reformatting ymd to ymd end if in_array (pattern_idx, {'My', 'M-My', 'My-My'}) then -- these are not dmy/mdy so can't be 'reformatted' into either format_param = 'any'; -- so format-agnostic end -- yMd is not supported at en.wiki; when yMd is supported at your wiki, uncomment the next line -- if 'yMd' == format_param and in_array (pattern_idx, {'yMd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy'}) then -- these formats not convertable; yMd not supported at en.wiki if 'yMd' == format_param then -- yMd not supported at en.wiki; when yMd is supported at your wiki, remove or comment-out this line return; -- not a reformattable date end local c1, c2, c3, c4, c5, c6, c7; -- these hold the captures specified in patterns[pattern_idx][1] c1, c2, c3, c4, c5, c6, c7 = mw.ustring.match (date, patterns[pattern_idx][1]); -- get the captures local t = { -- table that holds k/v pairs of date parts from the captures and patterns[pattern_idx][2..] [patterns[pattern_idx][2]] = c1; -- at minimum there is always one capture with a matching indicator letter [patterns[pattern_idx][3] or 'x'] = c2; -- patterns can have a variable number of captures; each capture requires an indicator letter; [patterns[pattern_idx][4] or 'x'] = c3; -- where there is no capture, there is no indicator letter so n in patterns[pattern_idx][n] will be nil; [patterns[pattern_idx][5] or 'x'] = c4; -- the 'x' here spoofs an indicator letter to prevent 'table index is nil' error [patterns[pattern_idx][6] or 'x'] = c5; [patterns[pattern_idx][7] or 'x'] = c6; [patterns[pattern_idx][8] or 'x'] = c7; }; if t.a then -- if this date has an anchor year capture (all convertable date formats except ymd) if t.y2 then -- for year range date formats t.y2 = t.a; -- use the anchor year capture when reassembling the date else -- here for single date formats (except ymd) t.y = t.a; -- use the anchor year capture when reassembling the date end end if tonumber(t.m) then -- if raw month is a number (converting from ymd) if 's' == mon_len then -- if we are to use abbreviated month names t.m = cfg.date_names['inv_local_short'][tonumber(t.m)]; -- convert it to a month name else t.m = cfg.date_names['inv_local_long'][tonumber(t.m)]; -- convert it to a month name end t.d = t.d:gsub ('0(%d)', '%1'); -- strip leading '0' from day if present elseif 'ymd' == format_param then -- when converting to ymd t.y = t.y:gsub ('%a', ''); -- strip CITREF disambiguator if present; anchor year already known so process can proceed; TODO: maint message? if 1582 > tonumber (t.y) then -- ymd format dates not allowed before 1582 return; end t.m = string.format ('%02d', get_month_number (t.m)); -- make sure that month and day are two digits t.d = string.format ('%02d', t.d); elseif mon_len then -- if mon_len is set to either 'short' or 'long' for _, mon in ipairs ({'m', 'm2'}) do -- because there can be two month names, check both if t[mon] then t[mon] = get_month_number (t[mon]); -- get the month number for this month (is length agnostic) if 0 == t[mon] then return; end -- seasons and named dates can't be converted t[mon] = (('s' == mon_len) and cfg.date_names['inv_local_short'][t[mon]]) or cfg.date_names['inv_local_long'][t[mon]]; -- fetch month name according to length end end end local new_date = string.format (re_formats[pattern_idx][format_param][1], -- format string t[re_formats[pattern_idx][format_param][2]], -- named captures from t{} t[re_formats[pattern_idx][format_param][3]], t[re_formats[pattern_idx][format_param][4]], t[re_formats[pattern_idx][format_param][5]], t[re_formats[pattern_idx][format_param][6]], t[re_formats[pattern_idx][format_param][7]], t[re_formats[pattern_idx][format_param][8]] ); return new_date; end --[[-------------------------< R E F O R M A T _ D A T E S >-------------------------------------------------- Reformats existing dates into the format specified by format. format is one of several manual keywords: dmy, dmy-all, mdy, mdy-all, ymd, ymd-all. The -all version includes access- and archive-dates; otherwise these dates are not reformatted. This function allows automatic date formatting. In ~/Configuration, the article source is searched for one of the {{use xxx dates}} templates. If found, xxx becomes the global date format as xxx-all. If |cs1-dates= in {{use xxx dates}} has legitimate value then that value determines how cs1|2 dates will be rendered. Legitimate values for |cs1-dates= are: l - all dates are rendered with long month names ls - publication dates use long month names; access-/archive-dates use abbreviated month names ly - publication dates use long month names; access-/archive-dates rendered in ymd format s - all dates are rendered with abbreviated (short) month names sy - publication dates use abbreviated month names; access-/archive-dates rendered in ymd format y - all dates are rendered in ymd format the format argument for automatic date formatting will be the format specified by {{use xxx dates}} with the value supplied by |cs1-dates so one of: xxx-l, xxx-ls, xxx-ly, xxx-s, xxx-sy, xxx-y, or simply xxx (|cs1-dates= empty, omitted, or invalid) where xxx shall be either of dmy or mdy. dates are extracted from date_parameters_list, reformatted (if appropriate), and then written back into the list in the new format. Dates in date_parameters_list are presumed here to be valid (no errors). This function returns true when a date has been reformatted, false else. Actual reformatting is done by reformatter(). ]] local function reformat_dates (date_parameters_list, format) local all = false; -- set to false to skip access- and archive-dates local len_p = 'l'; -- default publication date length shall be long local len_a = 'l'; -- default access-/archive-date length shall be long local result = false; local new_date; if format:match('%a+%-all') then -- manual df keyword; auto df keyword when length not specified in {{use xxx dates}}; format = format:match('(%a+)%-all'); -- extract the format all = true; -- all dates are long format dates because this keyword doesn't specify length elseif format:match('%a+%-[lsy][sy]?') then -- auto df keywords; internal only all = true; -- auto df applies to all dates; use length specified by capture len_p for all dates format, len_p, len_a = format:match('(%a+)%-([lsy])([sy]?)'); -- extract the format and length keywords if 'y' == len_p then -- because allowed by MOS:DATEUNIFY (sort of) range dates and My dates not reformatted format = 'ymd'; -- override {{use xxx dates}} elseif (not is_set(len_a)) or (len_p == len_a) then -- no access-/archive-date length specified or same length as publication dates then len_a = len_p; -- in case len_a not set end end -- else only publication dates and they are long for param_name, param_val in pairs (date_parameters_list) do -- for each date-holding parameter in the list if is_set (param_val.val) then -- if the parameter has a value if not (not all and in_array (param_name, {'access-date', 'archive-date'})) then -- skip access- or archive-date unless format is xxx-all; yeah, ugly; TODO: find a better way for pattern_idx, pattern in pairs (patterns) do if mw.ustring.match (param_val.val, pattern[1]) then if all and in_array (param_name, {'access-date', 'archive-date'}) then -- if this date is an access- or archive-date new_date = reformatter (param_val.val, pattern_idx, (('y' == len_a) and 'ymd') or format, len_a); -- choose ymd or dmy/mdy according to len_a setting else -- all other dates new_date = reformatter (param_val.val, pattern_idx, format, len_p); end if new_date then -- set when date was reformatted date_parameters_list[param_name].val = new_date; -- update date in date list result = true; -- and announce that changes have been made break; end end -- if end -- for end -- if end -- if end -- for return result; -- declare boolean result and done end --[[--------------------------< D A T E _ H Y P H E N _ T O _ D A S H >---------------------------------------- Loops through the list of date-holding parameters and converts any hyphen to an ndash. Not called if the cs1|2 template has any date errors. Modifies the date_parameters_list and returns true if hyphens are replaced, else returns false. ]] local function date_hyphen_to_dash (date_parameters_list) local result = false; local n; for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set (param_val.val) and not mw.ustring.match (param_val.val, patterns.ymd[1]) then -- for those that are not ymd dates (ustring because here digits may not be Western) param_val.val, n = param_val.val:gsub ('%-', '–'); -- replace any hyphen with ndash if 0 ~= n then date_parameters_list[param_name].val = param_val.val; -- update the list result = true; end end end return result; -- so we know if any hyphens were replaced end --[[-------------------------< D A T E _ N A M E _ X L A T E >------------------------------------------------ Attempts to translate English date names to local-language date names using names supplied by MediaWiki's date parser function. This is simple name-for-name replacement and may not work for all languages. if xlat_dig is true, this function will also translate Western (English) digits to the local language's digits. This will also translate ymd dates. ]] local function date_name_xlate (date_parameters_list, xlt_dig) local xlate; local mode; -- long or short month names local modified = false; local date; local sources_t = { {cfg.date_names.en.long, cfg.date_names.inv_local_long}, -- for translating long English month names to long local month names {cfg.date_names.en.short, cfg.date_names.inv_local_short}, -- short month names {cfg.date_names.en.quarter, cfg.date_names.inv_local_quarter}, -- quarter date names {cfg.date_names.en.season, cfg.date_names.inv_local_season}, -- season date nam {cfg.date_names.en.named, cfg.date_names.inv_local_named}, -- named dates } local function is_xlateable (month) -- local function to get local date name that replaces existing English-language date name for _, date_names_t in ipairs (sources_t) do -- for each sequence table in date_names_t if date_names_t[1][month] then -- if date name is English month (long or short), quarter, season or named and if date_names_t[2][date_names_t[1][month]] then -- if there is a matching local date name return date_names_t[2][date_names_t[1][month]]; -- return the local date name end end end end for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set(param_val.val) then -- if the parameter has a value date = param_val.val; for month in mw.ustring.gmatch (date, '[%a ]+') do -- iterate through all date names in the date (single date or date range) month = mw.text.trim (month); -- this because quarterly dates contain whitespace xlate = is_xlateable (month); -- get translate <month>; returns translation or nil if xlate then date = mw.ustring.gsub (date, month, xlate); -- replace the English with the translation date_parameters_list[param_name].val = date; -- save the translated date modified = true; end end if xlt_dig then -- shall we also translate digits? date = date:gsub ('%d', cfg.date_names.xlate_digits); -- translate digits from Western to 'local digits' date_parameters_list[param_name].val = date; -- save the translated date modified = true; end end end return modified; end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local imported functions table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr, utilities_page_ptr) add_prop_cat = utilities_page_ptr.add_prop_cat ; -- import functions from selected Module:Citation/CS1/Utilities module is_set = utilities_page_ptr.is_set; in_array = utilities_page_ptr.in_array; set_message = utilities_page_ptr.set_message; substitute = utilities_page_ptr.substitute; wrap_style = utilities_page_ptr.wrap_style; cfg = cfg_table_ptr; -- import tables from selected Module:Citation/CS1/Configuration end --[[--------------------------< A R C H I V E _ D A T E _ C H E C K >------------------------------------------ Compare value in |archive-date= with the timestamp in Wayback machine urls. Emits an error message with suggested date from the |archive-url= timestamp in an appropriate format when the value in |archive-date= does not match the timestamp. this function never called when any date in a cs1|2 template has errors error message suggests new |archive-date= value in an appropriate format specified by <df>. <df> is either |df= or cfg.global_df in that order. If <df> is nil, suggested date has format from |archive-date=. There is a caveat: when |df=dmy or |df=mdy, the reformatter leaves |access-date= and |archive-date= formats as they are. The error message suggested date is passed to the formatter as YYYY-MM-DD so when |df=dmy or |df=mdy, the format is not changed. ]] local function archive_date_check (archive_date, archive_url_timestamp, df) local archive_date_format = 'dmy-y'; -- holds the date format of date in |archive-date; default to ymd; 'dmy' used here to spoof reformat_dates() for _, v_t in ipairs ({{'dMy', 'dmy-all'}, {'Mdy', 'mdy-all'}}) do -- is |archive-date= format dmy or mdy? if archive_date:match (patterns[v_t[1]][1]) then -- does the pattern match? archive_date_format = cfg.keywords_xlate[v_t[2]]; -- get appropriate |df= supported keyword from the i18n translator table break; end end local dates_t = {}; dates_t['archive-date'] = {val=archive_date, name=''}; -- setup to call reformat_dates(); never called when errors so <name> unset as not needed reformat_dates (dates_t, 'dmy-y'); -- reformat |archive-date= to ymd; 'dmy' used here to spoof reformat_dates() local archive_url_date = archive_url_timestamp:gsub ('(%d%d%d%d)(%d%d)(%d%d)%d*', '%1-%2-%3'); -- make ymd format date from timestamp if dates_t['archive-date'].val == archive_url_date then -- are the two dates the same return; -- yes, done else dates_t['archive-date'] = {val=archive_url_date, name=''}; -- setup to call reformat_dates() with the timestamp date reformat_dates (dates_t, df or archive_date_format); -- reformat timestamp to format specified by <df> or format used in |archive-date= archive_url_date = dates_t['archive-date'].val; set_message ('err_archive_date_url_ts_mismatch', archive_url_date); -- emit an error message end end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { -- return exported functions archive_date_check = archive_date_check, date_hyphen_to_dash = date_hyphen_to_dash, date_name_xlate = date_name_xlate, dates = dates, reformat_dates = reformat_dates, set_selected_modules = set_selected_modules, year_date_check = year_date_check, } 1n3kro3ollyskc2r22g3idns6qbt542 169556 169552 2026-09-13T22:49:49Z Asorev 36569 169556 Scribunto text/plain --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local add_prop_cat, is_set, in_array, set_message, substitute, wrap_style; -- imported functions from selected Module:Citation/CS1/Utilities local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration --[[--------------------------< F I L E - S C O P E D E C L A R A T I O N S >-------------------------------- File-scope variables are declared here ]] local lang_object = mw.getContentLanguage(); -- used by is_valid_accessdate(), is_valid_year(), date_name_xlate(); TODO: move to ~/Configuration? local year_limit; -- used by is_valid_year() --[=[-------------------------< I S _ V A L I D _ A C C E S S D A T E >---------------------------------------- returns true if: Wikipedia start date <= accessdate < today + 2 days Wikipedia start date is 2001-01-15T00:00:00 UTC which is 979516800 seconds after 1970-01-01T00:00:00 UTC (the start of Unix time) accessdate is the date provided in |access-date= at time 00:00:00 UTC today is the current date at time 00:00:00 UTC plus 48 hours if today is 2015-01-01T00:00:00 then adding 24 hours gives 2015-01-02T00:00:00 – one second more than today adding 24 hours gives 2015-01-03T00:00:00 – one second more than tomorrow This function does not work if it is fed month names for languages other than English. Wikimedia #time: parser apparently doesn't understand non-English date month names. This function will always return false when the date contains a non-English month name because good1 is false after the call to lang.formatDate(). To get around that call this function with YYYY-MM-DD format dates. ]=] local function is_valid_accessdate (accessdate) local good1, good2; local access_ts, tomorrow_ts; -- to hold Unix time stamps representing the dates good1, access_ts = pcall (lang_object.formatDate, lang_object, 'U', accessdate ); -- convert accessdate value to Unix timestamp good2, tomorrow_ts = pcall (lang_object.formatDate, lang_object, 'U', 'today + 2 days' ); -- today midnight + 2 days is one second more than all day tomorrow if good1 and good2 then -- lang.formatDate() returns a timestamp in the local script which which tonumber() may not understand access_ts = tonumber (access_ts) or lang_object:parseFormattedNumber (access_ts); -- convert to numbers for the comparison; tomorrow_ts = tonumber (tomorrow_ts) or lang_object:parseFormattedNumber (tomorrow_ts); else return false; -- one or both failed to convert to Unix time stamp end if 979516800 <= access_ts and access_ts < tomorrow_ts then -- Wikipedia start date <= accessdate < tomorrow's date return true; else return false; -- accessdate out of range end end --[[--------------------------< G E T _ M O N T H _ N U M B E R >---------------------------------------------- returns a number according to the month in a date: 1 for January, etc. Capitalization and spelling must be correct. If not a valid month, returns 0 ]] local function get_month_number (month) return cfg.date_names['local'].long[month] or cfg.date_names['local'].short[month] or -- look for local names first cfg.date_names['en'].long[month] or cfg.date_names['en'].short[month] or -- failing that, look for English names 0; -- not a recognized month name end --[[--------------------------< G E T _ S E A S O N _ N U M B E R >-------------------------------------------- returns a number according to the sequence of seasons in a year: 21 for Spring, etc. Capitalization and spelling must be correct. If not a valid season, returns 0. 21-24 = Spring, Summer, Autumn, Winter, independent of “Hemisphere” returns 0 when <param> is not |date= Season numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. cs1|2 only supports generic seasons. EDTF does support the distinction between north and south hemisphere seasons but cs1|2 has no way to make that distinction. These additional divisions not currently supported: 25-28 = Spring - Northern Hemisphere, Summer- Northern Hemisphere, Autumn - Northern Hemisphere, Winter - Northern Hemisphere 29-32 = Spring – Southern Hemisphere, Summer– Southern Hemisphere, Autumn – Southern Hemisphere, Winter - Southern Hemisphere 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) 37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each) 40-41 = Semestral 1, Semestral-2 (6 months each) ]] local function get_season_number (season, param) if 'date' ~= param then return 0; -- season dates only supported by |date= end return cfg.date_names['local'].season[season] or -- look for local names first cfg.date_names['en'].season[season] or -- failing that, look for English names 0; -- not a recognized season name end --[[--------------------------< G E T _ Q U A R T E R _ N U M B E R >------------------------------------------ returns a number according to the sequence of quarters in a year: 33 for first quarter, etc. Capitalization and spelling must be correct. If not a valid quarter, returns 0. 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) returns 0 when <param> is not |date= Quarter numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. cs1|2 only supports generic seasons and quarters. These additional divisions not currently supported: 37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each) 40-41 = Semestral 1, Semestral-2 (6 months each) ]] local function get_quarter_number (quarter, param) if 'date' ~= param then return 0; -- quarter dates only supported by |date= end quarter = mw.ustring.gsub (quarter, ' +', ' '); -- special case replace multiple space chars with a single space char return cfg.date_names['local'].quarter[quarter] or -- look for local names first cfg.date_names['en'].quarter[quarter] or -- failing that, look for English names 0; -- not a recognized quarter name end --[[--------------------------< G E T _ P R O P E R _ N A M E _ N U M B E R >---------------------------------- returns a non-zero number if date contains a recognized proper-name. Capitalization and spelling must be correct. returns 0 when <param> is not |date= ]] local function get_proper_name_number (name, param) if 'date' ~= param then return 0; -- proper-name dates only supported by |date= end return cfg.date_names['local'].named[name] or -- look for local names dates first cfg.date_names['en'].named[name] or -- failing that, look for English names 0; -- not a recognized named date end --[[--------------------------< G E T _ E L E M E N T _ N U M B E R <------------------------------------------ returns true if month or season or quarter or proper name is valid (properly spelled, capitalized, abbreviated) ]] local function get_element_number (element, param) local num; local funcs = {get_month_number, get_season_number, get_quarter_number, get_proper_name_number}; -- list of functions to execute in order for _, func in ipairs (funcs) do -- spin through the function list num = func (element, param); -- call the function and get the returned number if 0 ~= num then -- non-zero when valid month season quarter return num; -- return that number end end return nil; -- not valid end --[[--------------------------< I S _ V A L I D _ Y E A R >---------------------------------------------------- Function gets current year from the server and compares it to year from a citation parameter. Years more than one year in the future are not acceptable. Special case for |pmc-embargo-date=: years more than two years in the future are not acceptable ]] local function is_valid_year (year, param) if not is_set (year_limit) then year_limit = tonumber(os.date("%Y"))+1; -- global variable so we only have to fetch it once end year = tonumber (year) or lang_object:parseFormattedNumber (year); -- convert to number for the comparison if year and (100 > year) then -- years less than 100 not supported return false; end if 'pmc-embargo-date' == param then -- special case for |pmc-embargo-date= return year and (year <= tonumber(os.date("%Y"))+2) or false; -- years more than two years in the future are not accepted end return year and (year <= year_limit) or false; end --[[--------------------------< I S _ V A L I D _ D A T E >---------------------------------------------------- Returns true if day is less than or equal to the number of days in month and year is no farther into the future than next year; else returns false. Assumes Julian calendar prior to year 1582 and Gregorian calendar thereafter. Accounts for Julian calendar leap years before 1582 and Gregorian leap years after 1582. Where the two calendars overlap (1582 to approximately 1923) dates are assumed to be Gregorian. ]] local function is_valid_date (year, month, day, param) local days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; local month_length; if not is_valid_year (year, param) then -- no farther into the future than next year except |pmc-embargo-date= no more than two years in the future return false; end month = tonumber (month); -- required for YYYY-MM-DD dates if (2 == month) then -- if February month_length = 28; -- then 28 days unless if 1582 > tonumber(year) then -- Julian calendar if 0 == (year%4) then -- is a leap year? month_length = 29; -- if leap year then 29 days in February end else -- Gregorian calendar if (0 == (year%4) and (0 ~= (year%100) or 0 == (year%400))) then -- is a leap year? month_length = 29; -- if leap year then 29 days in February end end else month_length = days_in_month[month]; end if tonumber (day) > month_length then return false; end return true; end --[[--------------------------< I S _ V A L I D _ M O N T H _ R A N G E _ S T Y L E >-------------------------- Months in a range are expected to have the same style: Jan–Mar or October–December but not February–Mar or Jul–August. This function looks in cfg.date_names{} to see if both month names are listed in the long subtable or both are listed in the short subtable. When both have the same style (both are listed in the same table), returns true; false else ]] local function is_valid_month_range_style (month1, month2) if (cfg.date_names.en.long[month1] and cfg.date_names.en.long[month2]) or -- are both English names listed in the long subtable? (cfg.date_names.en.short[month1] and cfg.date_names.en.short[month2]) or -- are both English names listed in the short subtable? (cfg.date_names['local'].long[month1] and cfg.date_names['local'].long[month2]) or -- are both local names listed in the long subtable? (cfg.date_names['local'].short[month1] and cfg.date_names['local'].short[month2]) then -- are both local names listed in the short subtable? return true; end return false; -- names are mixed end --[[--------------------------< I S _ V A L I D _ M O N T H _ S E A S O N _ R A N G E >------------------------ Check a pair of months or seasons to see if both are valid members of a month or season pair. Month pairs are expected to be left to right, earliest to latest in time. All season ranges are accepted as valid because there are publishers out there who have published a Summer–Spring YYYY issue, hence treat as ok ]] local function is_valid_month_season_range(range_start, range_end, param) local range_start_number = get_month_number (range_start); local range_end_number; if 0 == range_start_number then -- is this a month range? range_start_number = get_season_number (range_start, param); -- not a month; is it a season? get start season number range_end_number = get_season_number (range_end, param); -- get end season number if (0 ~= range_start_number) and (0 ~= range_end_number) and (range_start_number ~= range_end_number) then return true; -- any season pairing is accepted except when both are the same end return false; -- range_start and/or range_end is not a season end -- here when range_start is a month range_end_number = get_month_number (range_end); -- get end month number if range_start_number < range_end_number and -- range_start is a month; does range_start precede range_end? is_valid_month_range_style (range_start, range_end) then -- do months have the same style? return true; -- proper order and same style end return false; -- range_start month number is greater than or equal to range end number; or range end isn't a month end --[[--------------------------< M A K E _ C O I N S _ D A T E >------------------------------------------------ This function receives a table of date parts for one or two dates and an empty table reference declared in Module:Citation/CS1. The function is called only for |date= parameters and only if the |date=<value> is determined to be a valid date format. The question of what to do with invalid date formats is not answered here. The date parts in the input table are converted to an ISO 8601 conforming date string: single whole dates: yyyy-mm-dd month and year dates: yyyy-mm year dates: yyyy ranges: yyyy-mm-dd/yyyy-mm-dd yyyy-mm/yyyy-mm yyyy/yyyy Dates in the Julian calendar are reduced to year or year/year so that we don't have to do calendar conversion from Julian to Proleptic Gregorian. The input table has: year, year2 – always present; if before 1582, ignore months and days if present month, month2 – 0 if not provided, 1-12 for months, 21-24 for seasons; 99 Christmas day, day2 – 0 if not provided, 1-31 for days the output table receives: rftdate: an ISO 8601 formatted date rftchron: a free-form version of the date, usually without year which is in rftdate (season ranges and proper-name dates) rftssn: one of four season keywords: winter, spring, summer, fall (lowercase) rftquarter: one of four values: 1, 2, 3, 4 ]] local function make_COinS_date (input, tCOinS_date) local date; -- one date or first date in a range local date2 = ''; -- end of range date input.year = tonumber (input.year) or lang_object:parseFormattedNumber (input.year); -- language-aware tonumber() input.year2 = tonumber (input.year2) or lang_object:parseFormattedNumber (input.year2); -- COinS dates are pseudo-ISO 8601 so convert to Arabic numerals -- start temporary Julian / Gregorian calendar uncertainty detection local year = input.year; -- this temporary code to determine the extent of sources dated to the Julian/Gregorian local month = tonumber(input.month); -- interstice 1 October 1582 – 1 January 1926 local day = tonumber (input.day); if (0 ~= day) and -- day must have a value for this to be a whole date (((1582 == year) and (10 <= month) and (12 >= month)) or -- any whole 1582 date from 1 October to 31 December or ((1926 == year) and (1 == month) and (1 == input.day)) or -- 1 January 1926 or ((1582 < year) and (1925 >= year))) then -- any date 1 January 1583 – 31 December 1925 tCOinS_date.inter_cal_cat = true; -- set category flag true end -- end temporary Julian / Gregorian calendar uncertainty detection if ((1582 == year) and (10 > month)) or (1582 > year) then -- if a Julian calendar date tCOinS_date.rftdate = tostring (input.year); -- &rft.date gets year only return; -- done end -- here for all forms of Gregorian dates if 20 < tonumber (input.month) then -- if season, quarter, or proper-name date date = input.year; -- &rft.date gets year only if 0 ~= input.year2 and input.year ~= input.year2 then -- if a range, only the second year portion when not the same as range start year date = string.format ('%.4d/%.4d', input.year, input.year2) -- assemble the date range end local season = {[24] = 'winter', [21] = 'spring', [22] = 'summer', [23] = 'fall', [33] = '1', [34] = '2', [35] = '3', [36] = '4', [98] = 'Easter', [99] = 'Christmas'}; -- seasons lowercase, no autumn; proper-names use title case if 0 == input.month2 then -- single season, quarter, or proper-name date if 40 < tonumber(input.month) then tCOinS_date.rftchron = season[input.month]; -- proper-name date; used in journal metadata only elseif 30 < tonumber(input.month) then tCOinS_date.rftquarter = season[input.month]; -- quarter date; used in journal metadata only else tCOinS_date.rftssn = season[input.month]; -- season date; used in journal metadata only end else -- season ranges are lumped into &rft.chron; &rft.ssn and &rft.quarter are left blank if input.year ~= input.year2 then -- season year – season year range or season year–year if 0 ~= input.month2 then tCOinS_date.rftchron = string.format ('%s %s – %s %s', season[input.month], input.year, season[input.month2], input.year2); -- used in journal metadata only end else -- season–season year range tCOinS_date.rftchron = season[input.month] .. '–' .. season[input.month2]; -- season–season year range; used in journal metadata only end end tCOinS_date.rftdate = tostring (date); return; -- done end -- here for gregorian calendar dates if 0 ~= input.day then date = string.format ('%s-%.2d-%.2d', input.year, tonumber(input.month), tonumber(input.day)); -- whole date elseif 0 ~= input.month then date = string.format ('%s-%.2d', input.year, tonumber(input.month)); -- year and month else date = string.format ('%s', input.year); -- just year end if 0 ~= input.year2 then if 0 ~= input.day2 then date2 = string.format ('/%s-%.2d-%.2d', input.year2, tonumber(input.month2), tonumber(input.day2)); -- whole date elseif 0 ~= input.month2 then date2 = string.format ('/%s-%.2d', input.year2, tonumber(input.month2)); -- year and month else date2 = string.format ('/%s', input.year2); -- just year end end tCOinS_date.rftdate = date .. date2; -- date2 has the '/' separator return; end --[[--------------------------< P A T T E R N S >-------------------------------------------------------------- this is the list of patterns for date formats that this module recognizes. Approximately the first half of these patterns represent formats that might be reformatted into another format. Those that might be reformatted have 'indicator' letters that identify the content of the matching capture: 'd' (day), 'm' (month), 'a' (anchor year), 'y' (year); second day, month, year have a '2' suffix. These patterns are used for both date validation and for reformatting. This table should not be moved to ~/Configuration because changes to this table require changes to check_date() and to reformatter() and reformat_date() ]] local patterns = { -- year-initial numerical year-month-day ['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'}, -- month-initial: month day, year ['Mdy'] = {'^(%D-) +([1-9]%d?), +((%d%d%d%d?)%a?)$', 'm', 'd', 'a', 'y'}, -- month-initial day range: month day–day, year; days are separated by endash ['Md-dy'] = {'^(%D-) +([1-9]%d?)[%-–]([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'd2', 'a', 'y'}, -- day-initial: day month year ['dMy'] = {'^([1-9]%d?) +(%D-) +((%d%d%d%d?)%a?)$', 'd', 'm', 'a', 'y'}, -- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed; not supported at en.wiki -- ['yMd'] = {'^((%d%d%d%d?)%a?) +(%D-) +(%d%d?)$', 'a', 'y', 'm', 'd'}, -- day-range-initial: day–day month year; days are separated by endash ['d-dMy'] = {'^([1-9]%d?)[%-–]([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'd2', 'm', 'a', 'y'}, -- day initial month-day-range: day month - day month year; uses spaced endash ['dM-dMy'] = {'^([1-9]%d?) +(%D-) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'd2', 'm2', 'a', 'y'}, -- month initial month-day-range: month day – month day, year; uses spaced endash ['Md-Mdy'] = {'^(%D-) +([1-9]%d?) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$','m', 'd', 'm2', 'd2', 'a', 'y'}, -- day initial month-day-year-range: day month year - day month year; uses spaced endash ['dMy-dMy'] = {'^([1-9]%d?) +(%D-) +(%d%d%d%d) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'y', 'd2', 'm2', 'a', 'y2'}, -- month initial month-day-year-range: month day, year – month day, year; uses spaced endash ['Mdy-Mdy'] = {'^(%D-) +([1-9]%d?), +(%d%d%d%d) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'y', 'm2', 'd2', 'a', 'y2'}, -- these date formats cannot be converted, per se, but month name can be rendered short or long -- month/season year - month/season year; separated by spaced endash ['My-My'] = {'^(%D-) +(%d%d%d%d) +[%-–] +(%D-) +((%d%d%d%d)%a?)$', 'm', 'y', 'm2', 'a', 'y2'}, -- month/season range year; months separated by endash ['M-My'] = {'^(%D-)[%-–](%D-) +((%d%d%d%d)%a?)$', 'm', 'm2', 'a', 'y'}, -- month/season year or proper-name year; quarter year when First Quarter YYYY etc. ['My'] = {'^([^%d–]-) +((%d%d%d%d)%a?)$', 'm', 'a', 'y'}, -- this way because endash is a member of %D; %D- will match January–March 2019 when it shouldn't -- these date formats cannot be converted ['Sy4-y2'] = {'^(%D-) +((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash ['Sy-y'] = {'^(%D-) +(%d%d%d%d)[%-–]((%d%d%d%d)%a?)$'}, -- special case Winter/Summer year-year; year separated with unspaced endash ['y-y'] = {'^(%d%d%d%d?)[%-–]((%d%d%d%d?)%a?)$'}, -- year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999 ['y4-y2'] = {'^((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- year range: YYYY–YY; separated by unspaced endash ['y'] = {'^((%d%d%d%d?)%a?)$'}, -- year; here accept either YYY or YYYY } --[[--------------------------< I S _ V A L I D _ E M B A R G O _ D A T E >------------------------------------ returns true and date value if that value has proper dmy, mdy, ymd format. returns false and 9999 (embargoed forever) when date value is not proper format; assumes that when |pmc-embargo-date= is set, the editor intended to embargo a PMC but |pmc-embargo-date= does not hold a single date. ]] local function is_valid_embargo_date (v) if v:match (patterns['ymd'][1]) or -- ymd v:match (patterns['Mdy'][1]) or -- dmy v:match (patterns['dMy'][1]) then -- mdy return true, v; end return false, '9999'; -- if here not good date so return false and set embargo date to long time in future end --[[--------------------------< C H E C K _ D A T E >---------------------------------------------------------- Check date format to see that it is one of the formats approved by WP:DATESNO or WP:DATERANGE. Exception: only allowed range separator is endash. Additionally, check the date to see that it is a real date: no 31 in 30-day months; no 29 February when not a leap year. Months, both long-form and three character abbreviations, and seasons must be spelled correctly. Future years beyond next year are not allowed. If the date fails the format tests, this function returns false and does not return values for anchor_year and COinS_date. When this happens, the date parameter is (DEBUG: not?) used in the COinS metadata and the CITEREF identifier gets its year from the year parameter if present otherwise CITEREF does not get a date value. Inputs: date_string - date string from date-holding parameters (date, year, publication-date, access-date, pmc-embargo-date, archive-date, lay-date) Returns: false if date string is not a real date; else true, anchor_year, COinS_date anchor_year can be used in CITEREF anchors COinS_date is ISO 8601 format date; see make_COInS_date() ]] local function check_date (date_string, param, tCOinS_date) local year; -- assume that year2, months, and days are not used; local year2 = 0; -- second year in a year range local month = 0; local month2 = 0; -- second month in a month range local day = 0; local day2 = 0; -- second day in a day range local anchor_year; local coins_date; if date_string:match (patterns['ymd'][1]) then -- year-initial numerical year month day format year, month, day = date_string:match (patterns['ymd'][1]); if 12 < tonumber(month) or 1 > tonumber(month) or 1582 > tonumber(year) or 0 == tonumber(day) then return false; end -- month or day number not valid or not Gregorian calendar anchor_year = year; elseif mw.ustring.match(date_string, patterns['Mdy'][1]) then -- month-initial: month day, year month, day, anchor_year, year = mw.ustring.match(date_string, patterns['Mdy'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months elseif mw.ustring.match(date_string, patterns['Md-dy'][1]) then -- month-initial day range: month day–day, year; days are separated by endash month, day, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-dy'][1]); if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same; month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months month2=month; -- for metadata year2 = year; elseif mw.ustring.match(date_string, patterns['dMy'][1]) then -- day-initial: day month year day, month, anchor_year, year = mw.ustring.match(date_string, patterns['dMy'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months --[[ NOT supported at en.wiki elseif mw.ustring.match(date_string, patterns['yMd'][1]) then -- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed anchor_year, year, month, day = mw.ustring.match(date_string, patterns['yMd'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months -- end NOT supported at en.wiki ]] elseif mw.ustring.match(date_string, patterns['d-dMy'][1]) then -- day-range-initial: day–day month year; days are separated by endash day, day2, month, anchor_year, year = mw.ustring.match(date_string, patterns['d-dMy'][1]); if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same; month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months month2 = month; -- for metadata year2 = year; elseif mw.ustring.match(date_string, patterns['dM-dMy'][1]) then -- day initial month-day-range: day month - day month year; uses spaced endash day, month, day2, month2, anchor_year, year = mw.ustring.match(date_string, patterns['dM-dMy'][1]); if (not is_valid_month_season_range(month, month2)) or not is_valid_year(year) then return false; end -- date range order is left to right: earlier to later; month = get_month_number (month); -- for metadata month2 = get_month_number (month2); year2 = year; elseif mw.ustring.match(date_string, patterns['Md-Mdy'][1]) then -- month initial month-day-range: month day – month day, year; uses spaced endash month, day, month2, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-Mdy'][1]); if (not is_valid_month_season_range(month, month2, param)) or not is_valid_year(year) then return false; end month = get_month_number (month); -- for metadata month2 = get_month_number (month2); year2 = year; elseif mw.ustring.match(date_string, patterns['dMy-dMy'][1]) then -- day initial month-day-year-range: day month year - day month year; uses spaced endash day, month, year, day2, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['dMy-dMy'][1]); if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style month = get_month_number (month); -- for metadata month2 = get_month_number (month2); if 0 == month or 0 == month2 then return false; end -- both must be valid elseif mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]) then -- month initial month-day-year-range: month day, year – month day, year; uses spaced endash month, day, year, month2, day2, anchor_year, year2 = mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]); if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style month = get_month_number (month); -- for metadata month2 = get_month_number(month2); if 0 == month or 0 == month2 then return false; end -- both must be valid elseif mw.ustring.match(date_string, patterns['Sy4-y2'][1]) then -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash local century; month, year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy4-y2'][1]); if 'Winter' ~= month and 'Summer' ~= month then return false end; -- 'month' can only be Winter or Summer anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years year2 = century..year2; -- add the century to year2 for comparisons if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) then return false; end -- no year farther in the future than next year month = get_season_number(month, param); elseif mw.ustring.match(date_string, patterns['Sy-y'][1]) then -- special case Winter/Summer year-year; year separated with unspaced endash month, year, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy-y'][1]); month = get_season_number (month, param); -- <month> can only be winter or summer; also for metadata if (month ~= cfg.date_names['en'].season['Winter']) and (month ~= cfg.date_names['en'].season['Summer']) then return false; -- not Summer or Winter; abandon end anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) then return false; end -- no year farther in the future than next year elseif mw.ustring.match(date_string, patterns['My-My'][1]) then -- month/season year - month/season year; separated by spaced endash month, year, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['My-My'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year if 0 ~= get_month_number(month) and 0 ~= get_month_number(month2) and is_valid_month_range_style(month, month2) then -- both must be month year, same month style month = get_month_number(month); month2 = get_month_number(month2); elseif 0 ~= get_season_number(month, param) and 0 ~= get_season_number(month2, param) then -- both must be season year, not mixed month = get_season_number(month, param); month2 = get_season_number(month2, param); else return false; end elseif mw.ustring.match(date_string, patterns['M-My'][1]) then -- month/season range year; months separated by endash month, month2, anchor_year, year = mw.ustring.match(date_string, patterns['M-My'][1]); if (not is_valid_month_season_range(month, month2, param)) or (not is_valid_year(year)) then return false; end if 0 ~= get_month_number(month) then -- determined to be a valid range so just check this one to know if month or season month = get_month_number(month); month2 = get_month_number(month2); if 0 == month or 0 == month2 then return false; end else month = get_season_number(month, param); month2 = get_season_number(month2, param); end year2 = year; elseif mw.ustring.match(date_string, patterns['My'][1]) then -- month/season/quarter/proper-name year month, anchor_year, year = mw.ustring.match(date_string, patterns['My'][1]); if not is_valid_year(year) then return false; end month = get_element_number(month, param); -- get month season quarter proper-name number or nil if not month then return false; end -- not valid whatever it is elseif mw.ustring.match(date_string, patterns['y-y'][1]) then -- Year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999 year, anchor_year, year2 = mw.ustring.match(date_string, patterns['y-y'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year elseif mw.ustring.match(date_string, patterns['y4-y2'][1]) then -- Year range: YYYY–YY; separated by unspaced endash local century; year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['y4-y2'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years if 13 > tonumber(year2) then return false; end -- don't allow 2003-05 which might be May 2003 year2 = century .. year2; -- add the century to year2 for comparisons if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year if in_array (param, {'date', 'publication-date', 'year'}) then -- here when 'valid' abbreviated year range; if one of these parameters add_prop_cat ('year-range-abbreviated'); -- add properties cat end elseif mw.ustring.match(date_string, patterns['y'][1]) then -- year; here accept either YYY or YYYY anchor_year, year = mw.ustring.match(date_string, patterns['y'][1]); if false == is_valid_year(year) then return false; end else return false; -- date format not one of the MOS:DATE approved formats end if param ~= 'date' then -- CITEREF disambiguation only allowed in |date=; |year= & |publication-date= promote to date if anchor_year:match ('%l$') then return false; end end if 'access-date' == param then -- test access-date here because we have numerical date parts if 0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required 0 == year2 and 0 == month2 and 0 == day2 then -- none of these; access-date must not be a range if not is_valid_accessdate(year .. '-' .. month .. '-' .. day) then return false; -- return false when access-date out of bounds end else return false; -- return false when access-date is a range of two dates end end if 'archive-date' == param then -- test archive-date here because we have numerical date parts if not (0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required 0 == year2 and 0 == month2 and 0 == day2) then -- none of these; archive-date must not be a range return false; -- return false when archive-date is a range of two dates end end local result=true; -- check whole dates for validity; assume true because not all dates will go through this test if 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 == day2 then -- YMD (simple whole date) result = is_valid_date (year, month, day, param); -- <param> for |pmc-embargo-date= elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 ~= day2 then -- YMD-d (day range) result = is_valid_date (year, month, day); result = result and is_valid_date (year, month, day2); elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-md (day month range) result = is_valid_date (year, month, day); result = result and is_valid_date (year, month2, day2); elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 ~= year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-ymd (day month year range) result = is_valid_date(year, month, day); result = result and is_valid_date(year2, month2, day2); end if false == result then return false; end if nil ~= tCOinS_date then -- this table only passed into this function when testing |date= parameter values make_COinS_date ({year = year, month = month, day = day, year2 = year2, month2 = month2, day2 = day2}, tCOinS_date); -- make an ISO 8601 date string for COinS end return true, anchor_year; -- format is good and date string represents a real date end --[[--------------------------< D A T E S >-------------------------------------------------------------------- Cycle the date-holding parameters in passed table date_parameters_list through check_date() to check compliance with MOS:DATE. For all valid dates, check_date() returns true. The |date= parameter test is unique, it is the only date holding parameter from which values for anchor_year (used in CITEREF identifiers) and COinS_date (used in the COinS metadata) are derived. The |date= parameter is the only date-holding parameter that is allowed to contain the no-date keywords "n.d." or "nd" (without quotes). Unlike most error messages created in this module, only one error message is created by this function. Because all of the date holding parameters are processed serially, parameters with errors are added to the <error_list> sequence table as the dates are tested. ]] local function dates(date_parameters_list, tCOinS_date, error_list) local anchor_year; -- will return as nil if the date being tested is not |date= local COinS_date; -- will return as nil if the date being tested is not |date= local embargo_date; -- if embargo date is a good dmy, mdy, ymd date then holds original value else reset to 9999 local good_date = false; for k, v in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set(v.val) then -- if the parameter has a value v.val = mw.ustring.gsub(v.val, '%d', cfg.date_names.local_digits); -- translate 'local' digits to Western 0-9 if v.val:match("^c%. [1-9]%d%d%d?%a?$") then -- special case for c. year or with or without CITEREF disambiguator - only |date= and |year= local year = v.val:match("c%. ([1-9]%d%d%d?)%a?"); -- get the year portion so it can be tested if 'date' == k then anchor_year, COinS_date = v.val:match("((c%. [1-9]%d%d%d?)%a?)"); -- anchor year and COinS_date only from |date= parameter good_date = is_valid_year(year); elseif 'year' == k then good_date = is_valid_year(year); end elseif 'date' == k then -- if the parameter is |date= if v.val:match("^n%.d%.%a?$") then -- ToDo: I18N -- if |date=n.d. with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((n%.d%.)%a?)"); -- ToDo: I18N -- "n.d."; no error when date parameter is set to no date elseif v.val:match("^nd%a?$") then -- ToDo: I18N -- if |date=nd with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((nd)%a?)"); -- ToDo: I18N -- "nd"; no error when date parameter is set to no date else good_date, anchor_year, COinS_date = check_date (v.val, k, tCOinS_date); -- go test the date end elseif 'year' == k then -- if the parameter is |year= it should hold only a year value if v.val:match("^[1-9]%d%d%d?%a?$") then -- if |year = 3 or 4 digits only with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((%d+)%a?)"); end elseif 'pmc-embargo-date' == k then -- if the parameter is |pmc-embargo-date= good_date = check_date (v.val, k); -- go test the date if true == good_date then -- if the date is a valid date good_date, embargo_date = is_valid_embargo_date (v.val); -- is |pmc-embargo-date= date a single dmy, mdy, or ymd formatted date? yes: returns embargo date; no: returns 9999 end else -- any other date-holding parameter good_date = check_date (v.val, k); -- go test the date end if false == good_date then -- assemble one error message so we don't add the tracking category multiple times table.insert (error_list, wrap_style ('parameter', v.name)); -- make parameter name suitable for error message list end end end return anchor_year, embargo_date; -- and done end --[[--------------------------< Y E A R _ D A T E _ C H E C K >------------------------------------------------ Compare the value provided in |year= with the year value(s) provided in |date=. This function sets a local numeric value: 0 - year value does not match the year value in date 1 - (default) year value matches the year value in date or one of the year values when date contains two years 2 - year value matches the year value in date when date is in the form YYYY-MM-DD and year is disambiguated (|year=YYYYx) the numeric value in <result> determines the 'output' if any from this function: 0 – adds error message to error_list sequence table 1 – adds maint cat 2 – does nothing ]] local function year_date_check (year_string, year_origin, date_string, date_origin, error_list) local year; local date1; local date2; local result = 1; -- result of the test; assume that the test passes year = year_string:match ('(%d%d%d%d?)'); if date_string:match ('%d%d%d%d%-%d%d%-%d%d') and year_string:match ('%d%d%d%d%a') then --special case where both date and year are required YYYY-MM-DD and YYYYx date1 = date_string:match ('(%d%d%d%d)'); year = year_string:match ('(%d%d%d%d)'); if year ~= date1 then result = 0; -- years don't match else result = 2; -- years match; but because disambiguated, don't add to maint cat end elseif date_string:match ("%d%d%d%d?.-%d%d%d%d?") then -- any of the standard range formats of date with two three- or four-digit years date1, date2 = date_string:match ("(%d%d%d%d?).-(%d%d%d%d?)"); if year ~= date1 and year ~= date2 then result = 0; end elseif mw.ustring.match(date_string, "%d%d%d%d[%-–]%d%d") then -- YYYY-YY date ranges local century; date1, century, date2 = mw.ustring.match(date_string, "((%d%d)%d%d)[%-–]+(%d%d)"); date2 = century..date2; -- convert YY to YYYY if year ~= date1 and year ~= date2 then result = 0; end elseif date_string:match ("%d%d%d%d?") then -- any of the standard formats of date with one year date1 = date_string:match ("(%d%d%d%d?)"); if year ~= date1 then result = 0; end else -- should never get here; this function called only when no other date errors result = 0; -- no recognizable year in date end if 0 == result then -- year / date mismatch table.insert (error_list, substitute (cfg.messages['mismatch'], {year_origin, date_origin})); -- add error message to error_list sequence table elseif 1 == result then -- redundant year / date set_message ('maint_date_year'); -- add a maint cat end end --[[--------------------------< Y E A R _ C H E C K >---------------------------------------------------------- Temporary function to test |year= for acceptable values: YYY, YYYY, year-only ranges, their circa forms, with or without CITEREF disambiguators. When |year= holds some form of date that is not one of these year-only dates, emit a maintenance message. This function necessary because many non-cs1|2 templates have a |year= parameter so cirrus searches are more-or- less useless ]] local function year_check (year) year = year:gsub ('c%. *', ''); -- remove circa annotation (if present) before testing <year> for _, index in ipairs ({'y-y', 'y'}) do -- РУВИКИ: убираем нерабочую пару 'y4-y2' / spin through these indexes into patterns if mw.ustring.match (year, patterns[index][1]) then return; -- if a match then |year= holds a valid 'year' end end set_message ('maint_year'); -- if here, |year= value is not an accepted value; add a maint cat end --[[--------------------------< R E F O R M A T T E R >-------------------------------------------------------- reformat 'date' into new format specified by format_param if pattern_idx (the current format of 'date') can be reformatted. Does the grunt work for reformat_dates(). The table re_formats maps pattern_idx (current format) and format_param (desired format) to a table that holds: format string used by string.format() identifier letters ('d', 'm', 'y', 'd2', 'm2', 'y2') that serve as indexes into a table t{} that holds captures from mw.ustring.match() for the various date parts specified by patterns[pattern_idx][1] Items in patterns{} have the general form: ['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'}, where: ['ymd'] is pattern_idx patterns['ymd'][1] is the match pattern with captures for mw.ustring.match() patterns['ymd'][2] is an indicator letter identifying the content of the first capture patterns['ymd'][3] ... the second capture etc. when a pattern matches a date, the captures are loaded into table t{} in capture order using the idemtifier characters as indexes into t{} For the above, a ymd date is in t{} as: t.y = first capture (year), t.m = second capture (month), t.d = third capture (day) To reformat, this function is called with the pattern_idx that matches the current format of the date and with format_param set to the desired format. This function loads table t{} as described and then calls string.format() with the format string specified by re_format[pattern_idx][format_param][1] using values taken from t{} according to the capture identifier letters specified by patterns[pattern_idx][format_param][n] where n is 2.. ]] local re_formats = { ['ymd'] = { -- date format is ymd; reformat to: ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['Mdy'] = { -- date format is Mdy; reformat to: ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- for long/short reformatting ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['dMy'] = { -- date format is dMy; reformat to: ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['Md-dy'] = { -- date format is Md-dy; reformat to: ['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- for long/short reformatting ['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- |df=dmy -> d-dMy }, ['d-dMy'] = { -- date format is d-d>y; reformat to: ['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- |df=mdy -> Md-dy }, ['dM-dMy'] = { -- date format is dM-dMy; reformat to: ['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- |df=mdy -> Md-Mdy }, ['Md-Mdy'] = { -- date format is Md-Mdy; reformat to: ['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- for long/short reformatting ['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- |df=dmy -> dM-dMy }, ['dMy-dMy'] = { -- date format is dMy-dMy; reformat to: ['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- for long/short reformatting ['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- |df=mdy -> Mdy-Mdy }, ['Mdy-Mdy'] = { -- date format is Mdy-Mdy; reformat to: ['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- for long/short reformatting ['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- |df=dmy -> dMy-dMy }, ['My-My'] = { -- these for long/short reformatting ['any'] = {'%s %s – %s %s', 'm', 'y', 'm2', 'y2'}, -- dmy/mdy agnostic }, ['M-My'] = { -- these for long/short reformatting ['any'] = {'%s–%s %s', 'm', 'm2', 'y'}, -- dmy/mdy agnostic }, ['My'] = { -- these for long/short reformatting ['any'] = {'%s %s', 'm', 'y'}, -- dmy/mdy agnostic }, -- ['yMd'] = { -- not supported at en.wiki -- ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy -- ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy -- ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- }, } local function reformatter (date, pattern_idx, format_param, mon_len) if not in_array (pattern_idx, {'ymd', 'Mdy', 'Md-dy', 'dMy', 'yMd', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then return; -- not in this set of date format patterns then not a reformattable date end if 'ymd' == format_param and in_array (pattern_idx, {'ymd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then return; -- ymd date ranges not supported at en.wiki; no point in reformatting ymd to ymd end if in_array (pattern_idx, {'My', 'M-My', 'My-My'}) then -- these are not dmy/mdy so can't be 'reformatted' into either format_param = 'any'; -- so format-agnostic end -- yMd is not supported at en.wiki; when yMd is supported at your wiki, uncomment the next line -- if 'yMd' == format_param and in_array (pattern_idx, {'yMd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy'}) then -- these formats not convertable; yMd not supported at en.wiki if 'yMd' == format_param then -- yMd not supported at en.wiki; when yMd is supported at your wiki, remove or comment-out this line return; -- not a reformattable date end local c1, c2, c3, c4, c5, c6, c7; -- these hold the captures specified in patterns[pattern_idx][1] c1, c2, c3, c4, c5, c6, c7 = mw.ustring.match (date, patterns[pattern_idx][1]); -- get the captures local t = { -- table that holds k/v pairs of date parts from the captures and patterns[pattern_idx][2..] [patterns[pattern_idx][2]] = c1; -- at minimum there is always one capture with a matching indicator letter [patterns[pattern_idx][3] or 'x'] = c2; -- patterns can have a variable number of captures; each capture requires an indicator letter; [patterns[pattern_idx][4] or 'x'] = c3; -- where there is no capture, there is no indicator letter so n in patterns[pattern_idx][n] will be nil; [patterns[pattern_idx][5] or 'x'] = c4; -- the 'x' here spoofs an indicator letter to prevent 'table index is nil' error [patterns[pattern_idx][6] or 'x'] = c5; [patterns[pattern_idx][7] or 'x'] = c6; [patterns[pattern_idx][8] or 'x'] = c7; }; if t.a then -- if this date has an anchor year capture (all convertable date formats except ymd) if t.y2 then -- for year range date formats t.y2 = t.a; -- use the anchor year capture when reassembling the date else -- here for single date formats (except ymd) t.y = t.a; -- use the anchor year capture when reassembling the date end end if tonumber(t.m) then -- if raw month is a number (converting from ymd) if 's' == mon_len then -- if we are to use abbreviated month names t.m = cfg.date_names['inv_local_short'][tonumber(t.m)]; -- convert it to a month name else t.m = cfg.date_names['inv_local_long'][tonumber(t.m)]; -- convert it to a month name end t.d = t.d:gsub ('0(%d)', '%1'); -- strip leading '0' from day if present elseif 'ymd' == format_param then -- when converting to ymd t.y = t.y:gsub ('%a', ''); -- strip CITREF disambiguator if present; anchor year already known so process can proceed; TODO: maint message? if 1582 > tonumber (t.y) then -- ymd format dates not allowed before 1582 return; end t.m = string.format ('%02d', get_month_number (t.m)); -- make sure that month and day are two digits t.d = string.format ('%02d', t.d); elseif mon_len then -- if mon_len is set to either 'short' or 'long' for _, mon in ipairs ({'m', 'm2'}) do -- because there can be two month names, check both if t[mon] then t[mon] = get_month_number (t[mon]); -- get the month number for this month (is length agnostic) if 0 == t[mon] then return; end -- seasons and named dates can't be converted t[mon] = (('s' == mon_len) and cfg.date_names['inv_local_short'][t[mon]]) or cfg.date_names['inv_local_long'][t[mon]]; -- fetch month name according to length end end end local new_date = string.format (re_formats[pattern_idx][format_param][1], -- format string t[re_formats[pattern_idx][format_param][2]], -- named captures from t{} t[re_formats[pattern_idx][format_param][3]], t[re_formats[pattern_idx][format_param][4]], t[re_formats[pattern_idx][format_param][5]], t[re_formats[pattern_idx][format_param][6]], t[re_formats[pattern_idx][format_param][7]], t[re_formats[pattern_idx][format_param][8]] ); return new_date; end --[[-------------------------< R E F O R M A T _ D A T E S >-------------------------------------------------- Reformats existing dates into the format specified by format. format is one of several manual keywords: dmy, dmy-all, mdy, mdy-all, ymd, ymd-all. The -all version includes access- and archive-dates; otherwise these dates are not reformatted. This function allows automatic date formatting. In ~/Configuration, the article source is searched for one of the {{use xxx dates}} templates. If found, xxx becomes the global date format as xxx-all. If |cs1-dates= in {{use xxx dates}} has legitimate value then that value determines how cs1|2 dates will be rendered. Legitimate values for |cs1-dates= are: l - all dates are rendered with long month names ls - publication dates use long month names; access-/archive-dates use abbreviated month names ly - publication dates use long month names; access-/archive-dates rendered in ymd format s - all dates are rendered with abbreviated (short) month names sy - publication dates use abbreviated month names; access-/archive-dates rendered in ymd format y - all dates are rendered in ymd format the format argument for automatic date formatting will be the format specified by {{use xxx dates}} with the value supplied by |cs1-dates so one of: xxx-l, xxx-ls, xxx-ly, xxx-s, xxx-sy, xxx-y, or simply xxx (|cs1-dates= empty, omitted, or invalid) where xxx shall be either of dmy or mdy. dates are extracted from date_parameters_list, reformatted (if appropriate), and then written back into the list in the new format. Dates in date_parameters_list are presumed here to be valid (no errors). This function returns true when a date has been reformatted, false else. Actual reformatting is done by reformatter(). ]] local function reformat_dates (date_parameters_list, format) local all = false; -- set to false to skip access- and archive-dates local len_p = 'l'; -- default publication date length shall be long local len_a = 'l'; -- default access-/archive-date length shall be long local result = false; local new_date; if format:match('%a+%-all') then -- manual df keyword; auto df keyword when length not specified in {{use xxx dates}}; format = format:match('(%a+)%-all'); -- extract the format all = true; -- all dates are long format dates because this keyword doesn't specify length elseif format:match('%a+%-[lsy][sy]?') then -- auto df keywords; internal only all = true; -- auto df applies to all dates; use length specified by capture len_p for all dates format, len_p, len_a = format:match('(%a+)%-([lsy])([sy]?)'); -- extract the format and length keywords if 'y' == len_p then -- because allowed by MOS:DATEUNIFY (sort of) range dates and My dates not reformatted format = 'ymd'; -- override {{use xxx dates}} elseif (not is_set(len_a)) or (len_p == len_a) then -- no access-/archive-date length specified or same length as publication dates then len_a = len_p; -- in case len_a not set end end -- else only publication dates and they are long for param_name, param_val in pairs (date_parameters_list) do -- for each date-holding parameter in the list if is_set (param_val.val) then -- if the parameter has a value if not (not all and in_array (param_name, {'access-date', 'archive-date'})) then -- skip access- or archive-date unless format is xxx-all; yeah, ugly; TODO: find a better way for pattern_idx, pattern in pairs (patterns) do if mw.ustring.match (param_val.val, pattern[1]) then if all and in_array (param_name, {'access-date', 'archive-date'}) then -- if this date is an access- or archive-date new_date = reformatter (param_val.val, pattern_idx, (('y' == len_a) and 'ymd') or format, len_a); -- choose ymd or dmy/mdy according to len_a setting else -- all other dates new_date = reformatter (param_val.val, pattern_idx, format, len_p); end if new_date then -- set when date was reformatted date_parameters_list[param_name].val = new_date; -- update date in date list result = true; -- and announce that changes have been made break; end end -- if end -- for end -- if end -- if end -- for return result; -- declare boolean result and done end --[[--------------------------< D A T E _ H Y P H E N _ T O _ D A S H >---------------------------------------- Loops through the list of date-holding parameters and converts any hyphen to an ndash. Not called if the cs1|2 template has any date errors. Modifies the date_parameters_list and returns true if hyphens are replaced, else returns false. ]] local function date_hyphen_to_dash (date_parameters_list) local result = false; local n; for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set (param_val.val) and not mw.ustring.match (param_val.val, patterns.ymd[1]) then -- for those that are not ymd dates (ustring because here digits may not be Western) param_val.val, n = param_val.val:gsub ('%-', '–'); -- replace any hyphen with ndash if 0 ~= n then date_parameters_list[param_name].val = param_val.val; -- update the list result = true; end end end return result; -- so we know if any hyphens were replaced end --[[-------------------------< D A T E _ N A M E _ X L A T E >------------------------------------------------ Attempts to translate English date names to local-language date names using names supplied by MediaWiki's date parser function. This is simple name-for-name replacement and may not work for all languages. if xlat_dig is true, this function will also translate Western (English) digits to the local language's digits. This will also translate ymd dates. ]] local function date_name_xlate (date_parameters_list, xlt_dig) local xlate; local mode; -- long or short month names local modified = false; local date; local sources_t = { {cfg.date_names.en.long, cfg.date_names.inv_local_long}, -- for translating long English month names to long local month names {cfg.date_names.en.short, cfg.date_names.inv_local_short}, -- short month names {cfg.date_names.en.quarter, cfg.date_names.inv_local_quarter}, -- quarter date names {cfg.date_names.en.season, cfg.date_names.inv_local_season}, -- season date nam {cfg.date_names.en.named, cfg.date_names.inv_local_named}, -- named dates } local function is_xlateable (month) -- local function to get local date name that replaces existing English-language date name for _, date_names_t in ipairs (sources_t) do -- for each sequence table in date_names_t if date_names_t[1][month] then -- if date name is English month (long or short), quarter, season or named and if date_names_t[2][date_names_t[1][month]] then -- if there is a matching local date name return date_names_t[2][date_names_t[1][month]]; -- return the local date name end end end end for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set(param_val.val) then -- if the parameter has a value date = param_val.val; for month in mw.ustring.gmatch (date, '[%a ]+') do -- iterate through all date names in the date (single date or date range) month = mw.text.trim (month); -- this because quarterly dates contain whitespace xlate = is_xlateable (month); -- get translate <month>; returns translation or nil if xlate then date = mw.ustring.gsub (date, month, xlate); -- replace the English with the translation date_parameters_list[param_name].val = date; -- save the translated date modified = true; end end if xlt_dig then -- shall we also translate digits? date = date:gsub ('%d', cfg.date_names.xlate_digits); -- translate digits from Western to 'local digits' date_parameters_list[param_name].val = date; -- save the translated date modified = true; end end end return modified; end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local imported functions table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr, utilities_page_ptr) add_prop_cat = utilities_page_ptr.add_prop_cat ; -- import functions from selected Module:Citation/CS1/Utilities module is_set = utilities_page_ptr.is_set; in_array = utilities_page_ptr.in_array; set_message = utilities_page_ptr.set_message; substitute = utilities_page_ptr.substitute; wrap_style = utilities_page_ptr.wrap_style; cfg = cfg_table_ptr; -- import tables from selected Module:Citation/CS1/Configuration end --[[--------------------------< A R C H I V E _ D A T E _ C H E C K >------------------------------------------ Compare value in |archive-date= with the timestamp in Wayback machine urls. Emits an error message with suggested date from the |archive-url= timestamp in an appropriate format when the value in |archive-date= does not match the timestamp. this function never called when any date in a cs1|2 template has errors error message suggests new |archive-date= value in an appropriate format specified by <df>. <df> is either |df= or cfg.global_df in that order. If <df> is nil, suggested date has format from |archive-date=. There is a caveat: when |df=dmy or |df=mdy, the reformatter leaves |access-date= and |archive-date= formats as they are. The error message suggested date is passed to the formatter as YYYY-MM-DD so when |df=dmy or |df=mdy, the format is not changed. ]] local function archive_date_check (archive_date, archive_url_timestamp, df) local archive_date_format = 'dmy-y'; -- holds the date format of date in |archive-date; default to ymd; 'dmy' used here to spoof reformat_dates() for _, v_t in ipairs ({{'dMy', 'dmy-all'}, {'Mdy', 'mdy-all'}}) do -- is |archive-date= format dmy or mdy? if archive_date:match (patterns[v_t[1]][1]) then -- does the pattern match? archive_date_format = cfg.keywords_xlate[v_t[2]]; -- get appropriate |df= supported keyword from the i18n translator table break; end end local dates_t = {}; dates_t['archive-date'] = {val=archive_date, name=''}; -- setup to call reformat_dates(); never called when errors so <name> unset as not needed reformat_dates (dates_t, 'dmy-y'); -- reformat |archive-date= to ymd; 'dmy' used here to spoof reformat_dates() local archive_url_date = archive_url_timestamp:gsub ('(%d%d%d%d)(%d%d)(%d%d)%d*', '%1-%2-%3'); -- make ymd format date from timestamp if dates_t['archive-date'].val == archive_url_date then -- are the two dates the same return; -- yes, done else dates_t['archive-date'] = {val=archive_url_date, name=''}; -- setup to call reformat_dates() with the timestamp date reformat_dates (dates_t, df or archive_date_format); -- reformat timestamp to format specified by <df> or format used in |archive-date= archive_url_date = dates_t['archive-date'].val; set_message ('err_archive_date_url_ts_mismatch', archive_url_date); -- emit an error message end end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { -- return exported functions archive_date_check = archive_date_check, date_hyphen_to_dash = date_hyphen_to_dash, date_name_xlate = date_name_xlate, dates = dates, reformat_dates = reformat_dates, set_selected_modules = set_selected_modules, year_date_check = year_date_check, year_check = year_check, } 86jmx2kc9gg0nmjp0en24dur7xc9g4k Вінтертур 0 22384 169567 152247 2026-09-14T01:45:31Z Halajkovič 33393 +тест 169567 wikitext text/x-wiki {{Статья в роботѣ|[[Хоснователь:Halajkovič|<span style="color:#000">H</span><span style="color:#1a1a1a">a</span><span style="color:#333">l</span><span style="color:#4d4d4d">a</span><span style="color:#666">j</span><span style="color:#808080">k</span><span style="color:#999">o</span><span style="color:#aaa">v</span><span style="color:#b5b5b5">i</span><span style="color:#bbb">č</span>]] ([[Діскузія з хоснователём:Halajkovič|<span style="color:#bbb">д</span><span style="color:#a0a0a0">і</span><span style="color:#808080">с</span><span style="color:#606060">к</span><span style="color:#404040">у</span><span style="color:#202020">с</span><span style="color:#1a1a1a">і</span><span style="color:#000">я</span>]]) 03:45, 14 септембра 2026 (CEST)|3|w|датум=14. септембра 2026}} '''Вінтерту́р''' ([[Нїмецькый язык|нім]]. Winterthur) ([[Алеманськый язык|алем]]. Winti, Wintertuur) ([[Французькый язык|франц]]. Winterthour) — [[Місто|варош]] у комунні [[Вінтертур (комуна)|Вінтертур]], кантон [[Цюрих (кантон)|Цюрих]], [[Швайц]]. {{Місто}} == Обывательство == У [[Місто|варошови]] на [[2019]] рӯк живе 113 173 людий. == Історія == [[Місто|Варош]] первый раз ся споминать у [[919]] році. == Знамі Родаци == === Родили ся === * [[Анна Барбара Ринґарт]] ([[1730]] — [[1796]]) — [[Швайц|швайцська]] [[Математік|математикиня]]. === Умерли === * [[Йоганн Каспар Фӯсслі]] ([[1743]]—[[1786]])&nbsp;— [[Швайц|швайцськый]] [[ентомолоґ]]. == Братьскі Вароші == * [[Галль-ин-Тіроль]], [[Австрія]] * [[Івердон-ле-Бен]], [[Швайц]] * [[Ла-Шо-де-Фон]], [[Швайц]] * [[Плзень]], [[Чесько|Чисько]] == Иппен позерайте == * [[43669 Вінтертур]]&nbsp;— [[Астероид|астероід]], названый на честь [[Місто|вароша]]. == Удкликованя == {{Reflist}} * [https://web.archive.org/web/20191004060200/https://stadt.winterthur.ch/ Офіційна сторінка] {{Webarchive|url=https://web.archive.org/web/20191004060200/https://stadt.winterthur.ch/|date=4 жовтня 2019}} [[Катеґорія:Міста]] [[Катеґорія:Вароші Швайца]] [[Катеґорія:Вінтертур]] [[Катеґорія:Кантон Цюрих]] [[Катеґорія:Міста подля країны]] [[Катеґорія:Міста подля алфавіту]] [[Катеґорія:Населены пункты]] [[Катеґорія:Населены пункты подля країны]] [[Катеґорія:Населены пункты подля алфавиту]] q2akxknot5l8d3893yapbd3g9p4h2nn 169569 169567 2026-09-14T01:52:48Z Halajkovič 33393 +тест2 169569 wikitext text/x-wiki {{Статья в роботѣ|[[Хоснователь:Halajkovič|<span style="color:#000">H</span><span style="color:#1a1a1a">a</span><span style="color:#333">l</span><span style="color:#4d4d4d">a</span><span style="color:#666">j</span><span style="color:#808080">k</span><span style="color:#999">o</span><span style="color:#aaa">v</span><span style="color:#b5b5b5">i</span><span style="color:#bbb">č</span>]] ([[Діскузія з хоснователём:Halajkovič|<span style="color:#bbb">д</span><span style="color:#a0a0a0">і</span><span style="color:#808080">с</span><span style="color:#606060">к</span><span style="color:#404040">у</span><span style="color:#202020">с</span><span style="color:#1a1a1a">і</span><span style="color:#000">я</span>]])|section=yes|датум=03:52, 14 септембра 2026 (CEST)}} '''Вінтерту́р''' ([[Нїмецькый язык|нім]]. Winterthur) ([[Алеманськый язык|алем]]. Winti, Wintertuur) ([[Французькый язык|франц]]. Winterthour) — [[Місто|варош]] у комунні [[Вінтертур (комуна)|Вінтертур]], кантон [[Цюрих (кантон)|Цюрих]], [[Швайц]]. {{Місто}} == Обывательство == У [[Місто|варошови]] на [[2019]] рӯк живе 113 173 людий. == Історія == [[Місто|Варош]] первый раз ся споминать у [[919]] році. == Знамі Родаци == === Родили ся === * [[Анна Барбара Ринґарт]] ([[1730]] — [[1796]]) — [[Швайц|швайцська]] [[Математік|математикиня]]. === Умерли === * [[Йоганн Каспар Фӯсслі]] ([[1743]]—[[1786]])&nbsp;— [[Швайц|швайцськый]] [[ентомолоґ]]. == Братьскі Вароші == * [[Галль-ин-Тіроль]], [[Австрія]] * [[Івердон-ле-Бен]], [[Швайц]] * [[Ла-Шо-де-Фон]], [[Швайц]] * [[Плзень]], [[Чесько|Чисько]] == Иппен позерайте == * [[43669 Вінтертур]]&nbsp;— [[Астероид|астероід]], названый на честь [[Місто|вароша]]. == Удкликованя == {{Reflist}} * [https://web.archive.org/web/20191004060200/https://stadt.winterthur.ch/ Офіційна сторінка] {{Webarchive|url=https://web.archive.org/web/20191004060200/https://stadt.winterthur.ch/|date=4 жовтня 2019}} [[Катеґорія:Міста]] [[Катеґорія:Вароші Швайца]] [[Катеґорія:Вінтертур]] [[Катеґорія:Кантон Цюрих]] [[Катеґорія:Міста подля країны]] [[Катеґорія:Міста подля алфавіту]] [[Катеґорія:Населены пункты]] [[Катеґорія:Населены пункты подля країны]] [[Катеґорія:Населены пункты подля алфавиту]] qo6s7tdcoosnrprxzbagej24bt59iyp 169572 169569 2026-09-14T02:12:51Z Halajkovič 33393 169572 wikitext text/x-wiki {{Місто}} '''Вінтерту́р''' ({{lang-de|2|Winterthur}}, [[Алеманськый язык|алем.]] ''Winti'', ''Wintertuur'', {{lang-fr|Winterthour}}) — [[Місто|варош]] у комунні [[Вінтертур (комуна)|Вінтертур]], кантон [[Цюрих (кантон)|Цюрих]], [[Швайц]]. == Обывательство == У [[Місто|варошови]] на [[2019]] рӯк живе 113 173 людий.<ref>{{cite web |url=https://dam-api.bfs.admin.ch/hub/api/dam/assets/18644278/master |title=Junge Menschen in den Städten (Statistik der Schweizer Städte) |publisher=Bundesamt für Statistik |language=de |date=2021 |accessdate=2026-09-14}}</ref> == Історія == [[Місто|Варош]] первый раз ся споминать у [[919]] році.<ref>{{cite web |url=https://hls-dhs-dss.ch/de/articles/000157/ |title=Winterthur |author=Meinrad Suter |work=Historisches Lexikon der Schweiz (HLS) |language=de |date=2015-08-28 |accessdate=2026-09-14}}</ref> == Знамі Родаци == === Родили ся === * [[Анна Барбара Ринґарт]] ([[1730]]—[[1796]])&nbsp;— [[швайц]]ська [[Математік|математикиня]]. === Умерли === * [[Йоганн Каспар Фӯсслі]] ([[1743]]—[[1786]])&nbsp;— [[швайц]]ськый [[ентомолоґ]]. == Братьскі вароші == * [[Галль-ин-Тіроль]], [[Австрія]] * [[Івердон-ле-Бен]], [[Швайц]] * [[Ла-Шо-де-Фон]], [[Швайц]] * [[Плзень]], [[Чесько|Чисько]] == Иппен позерайте == * [[43669 Вінтертур]]&nbsp;— [[Астероид|астероід]], названый на честь [[Місто|вароша]]. == Удкликованя == {{stub}} {{Reflist}} * [https://web.archive.org/web/20191004060200/https://stadt.winterthur.ch/ Офіційна сторінка] {{Webarchive|url=https://web.archive.org/web/20191004060200/https://stadt.winterthur.ch/|date=4 жовтня 2019}} [[Катеґорія:Вароші Швайца]] [[Катеґорія:Вінтертур|*]] [[Катеґорія:Кантон Цюрих]] [[Катеґорія:Міста подля країны]] [[Катеґорія:Міста подля алфавіту]] [[Катеґорія:Населены пункты]] [[Катеґорія:Населены пункты подля країны]] [[Катеґорія:Населены пункты подля алфавиту]] cksxsax8nd3g4fh1sn1o9rwp49umivx Кучава 0 22622 169560 153408 2026-09-14T00:03:38Z Halajkovič 33393 169560 wikitext text/x-wiki {{НП|первое упоминание=XIV. стороча}} '''Ку́чава''' ({{lang-uk|Кучава}}, {{lang-hu|Németkucsova}}, {{lang-ro|Kuceava}}, {{lang-pl|Kuczawa}}) — [[село]] у [[Мукачовськый район|Мукачовськӯм районови]], [[Закарпатска область|Закарпатьской области]], [[Україна|Украйины]]. == Історія == [[Село]] первый раз ся споминать у [[XIV. стороча|XIV]] сторочови. У [[1758]] році у [[Село|селі]] поселили ся перві [[Німці]], они и по ныні є великый дараб [[Обывательство|обывательства]] [[Село|села]]. == Обывательство == У [[Село|селі]] на [[2001]] рӯк живе 292 людий, из них подля языка: {| class="standard" !Язык !Процент |- |[[Україньскый язык|украйиньскый]] | align="right" |79,18&nbsp;% |- |[[Нїмецькый язык|німицькый]] | align="right" |16,72&nbsp;% |- |[[Російскый язык|руськый]] | align="right" |3,75&nbsp;% |- |[[Мадярскый язык|мадярьскый]] | align="right" |0,34&nbsp;% |} == Туристичны міста == * у [[Северозапад|северо-западнӯв]] части Кучавы у [[1935]] році браты Затлукалы нашли розорані [[Круґан|круґаны]]. Туй было найдено два бронзовых горниці добы пӯзднёї бронзы — раннёго желіза. * [[Римокатолицька церьков|римокатолицькый]] [[Церьков (храм)|храм]] другої половины [[XIX. стороча|XIX]] стороча. == Удкликованя == {{stub}} овиныоты данороча<sup>[што?]</sup>. суть часточно або цалком основаны на [[Переклад (языконаука)|перекладі]] статі Кучава на Украйиньскӯв Вікіпедії (чісло ревізії не было становлене).{{Reflist|refs=<ref name="населення 1989">{{cite web|url=http://database.ukrcensus.gov.ua/MULT/Database/Census/databasetree_uk.asp|назва=Кількість наявного та постійного населення по кожному сільському населеному пункту, Закарпатська область (осіб) - Регіон, Рік, Категорія населення , Стать (1989(12.01))|вебсайт=database.ukrcensus.gov.ua|видавець=Банк даних [[Державна служба статистики України|Державної служби статистики України]]|дата-доступу=8 листопада 2019|archive-date=31 липня 2014|archive-url=https://web.archive.org/web/20140731182036/http://database.ukrcensus.gov.ua/Mult/Database/Census/databasetree_uk.asp}}</ref> <ref name="населення 2001">{{cite web|url=http://database.ukrcensus.gov.ua/MULT/Database/Census/databasetree_uk.asp|назва=Кількість наявного населення по кожному сільському населеному пункту, Закарпатська область (осіб) - Регіон , Рік (2001(05.12))|вебсайт=database.ukrcensus.gov.ua|видавець=Банк даних [[Державна служба статистики України|Державної служби статистики України]]|дата-доступу=8 листопада 2019|archive-date=31 липня 2014|archive-url=https://web.archive.org/web/20140731182036/http://database.ukrcensus.gov.ua/Mult/Database/Census/databasetree_uk.asp}}</ref> <ref name="населення 2001 мова">{{cite web|url=http://database.ukrcensus.gov.ua/MULT/Database/Census/databasetree_uk.asp|назва=Розподіл населення за рідною мовою, Закарпатська область (у % до загальної чисельності населення) - Регіон, Рік , Вказали у якості рідної мову (2001(05.12))|вебсайт=database.ukrcensus.gov.ua|видавець=Банк даних [[Державна служба статистики України|Державної служби статистики України]]|дата-доступу=8 листопада 2019|archive-date=31 липня 2014|archive-url=https://web.archive.org/web/20140731182036/http://database.ukrcensus.gov.ua/Mult/Database/Census/databasetree_uk.asp}}</ref>}} * [http://weather.in.ua/ua/zakarpatskaja/12932 Погода в селі] {{Webarchive|url=https://web.archive.org/web/20140714222132/http://weather.in.ua/ua/zakarpatskaja/12932|date=14 липня 2014}} [[Катеґорія:Села Закарпатьской области]] [[Катеґорія:Села]] [[Катеґорія:Села Україны]] [[Катеґорія:Села подля краины]] [[Катеґорія:Населены пункты]] [[Катеґорія:Населены пункты подля країны]] [[Катеґорія:Населены пункты подля алфавиту]] [[Катеґорія:Населены пункты Закарпатской области]] [[Катеґорія:Населены пункты Украины]] [[Катеґорія:Німицькі села на Украйині]] emj48l1gzghcimc0ys2z2a7c3pi7rrc 169561 169560 2026-09-14T00:27:30Z Flipdot 23893 169561 wikitext text/x-wiki {{Непотверджено}} {{stub}} {{НП|первое упоминание=XIV. стороча}} '''Ку́чава''' ({{lang-uk|Кучава}}, {{lang-hu|Németkucsova}}, {{lang-ro|Kuceava}}, {{lang-pl|Kuczawa}}) — [[село]] у [[Мукачовськый район|Мукачовськӯм районови]], [[Закарпатска область|Закарпатьской области]], [[Україна|Украйины]]. == Історія == [[Село]] первый раз ся споминать у [[XIV. стороча|XIV]] сторочови. У [[1758]] році у [[Село|селі]] поселили ся перві [[Німці]], они и по ныні є великый дараб [[Обывательство|обывательства]] [[Село|села]].{{Жрідло}} == Обывательство == У [[Село|селі]] на [[2001]] рӯк живе 292 людий, из них подля языка:{{Жрідло}} {| class="standard" !Язык !Процент |- |[[Україньскый язык|украйиньскый]] | align="right" |79,18&nbsp;% |- |[[Нїмецькый язык|німицькый]] | align="right" |16,72&nbsp;% |- |[[Російскый язык|руськый]] | align="right" |3,75&nbsp;% |- |[[Мадярскый язык|мадярьскый]] | align="right" |0,34&nbsp;% |} == Туристичны міста == * у [[Северозапад|северо-западнӯв]] части Кучавы у [[1935]] році браты Затлукалы нашли розорані [[Круґан|круґаны]]. Туй было найдено два бронзовых горниці добы пӯзднёї бронзы — раннёго желіза.{{Жрідло}} * [[Римокатолицька церьков|римокатолицькый]] [[Церьков (храм)|храм]] другої половины [[XIX. стороча|XIX]] стороча. == Удкликованя == Тоты даны суть часточно або цалком основаны на [[Переклад (языконаука)|перекладі]] статі Кучава на Украйиньскӯв Вікіпедії (чісло ревізії не было становлене).{{Reflist|refs=<ref name="населення 1989">{{cite web|url=http://database.ukrcensus.gov.ua/MULT/Database/Census/databasetree_uk.asp|назва=Кількість наявного та постійного населення по кожному сільському населеному пункту, Закарпатська область (осіб) - Регіон, Рік, Категорія населення , Стать (1989(12.01))|вебсайт=database.ukrcensus.gov.ua|видавець=Банк даних [[Державна служба статистики України|Державної служби статистики України]]|дата-доступу=8 листопада 2019|archive-date=31 липня 2014|archive-url=https://web.archive.org/web/20140731182036/http://database.ukrcensus.gov.ua/Mult/Database/Census/databasetree_uk.asp}}</ref> <ref name="населення 2001">{{cite web|url=http://database.ukrcensus.gov.ua/MULT/Database/Census/databasetree_uk.asp|назва=Кількість наявного населення по кожному сільському населеному пункту, Закарпатська область (осіб) - Регіон , Рік (2001(05.12))|вебсайт=database.ukrcensus.gov.ua|видавець=Банк даних [[Державна служба статистики України|Державної служби статистики України]]|дата-доступу=8 листопада 2019|archive-date=31 липня 2014|archive-url=https://web.archive.org/web/20140731182036/http://database.ukrcensus.gov.ua/Mult/Database/Census/databasetree_uk.asp}}</ref> <ref name="населення 2001 мова">{{cite web|url=http://database.ukrcensus.gov.ua/MULT/Database/Census/databasetree_uk.asp|назва=Розподіл населення за рідною мовою, Закарпатська область (у % до загальної чисельності населення) - Регіон, Рік , Вказали у якості рідної мову (2001(05.12))|вебсайт=database.ukrcensus.gov.ua|видавець=Банк даних [[Державна служба статистики України|Державної служби статистики України]]|дата-доступу=8 листопада 2019|archive-date=31 липня 2014|archive-url=https://web.archive.org/web/20140731182036/http://database.ukrcensus.gov.ua/Mult/Database/Census/databasetree_uk.asp}}</ref>}} * [http://weather.in.ua/ua/zakarpatskaja/12932 Погода в селі] {{Webarchive|url=https://web.archive.org/web/20140714222132/http://weather.in.ua/ua/zakarpatskaja/12932|date=14 липня 2014}} [[Катеґорія:Села Закарпатьской области]] [[Катеґорія:Села]] [[Катеґорія:Села Україны]] [[Катеґорія:Села подля краины]] [[Катеґорія:Населены пункты]] [[Катеґорія:Населены пункты подля країны]] [[Катеґорія:Населены пункты подля алфавиту]] [[Катеґорія:Населены пункты Закарпатской области]] [[Катеґорія:Населены пункты Украины]] [[Катеґорія:Німицькі села на Украйині]] 0osgrdj4210phs853itso1gz80uh0xc Холм (Росія) 0 24801 169573 169528 2026-09-14T02:14:08Z Halajkovič 33393 169573 wikitext text/x-wiki {{Місто}} '''Хо́лм''' ({{Lang-ru|Холм}}) — [[Місто|варош]] у [[Холмськый район|Холмському районови]], [[Новгородська область|Новгородської области]], [[Росія|Росії]]. Адміністративный центр [[Холмськый район (Росія)|Холмського района]]. == Етимолоґія == Назва происходить уд слова "холм". Первозачатково споминать ся ге ''Холмськый погост''. У [[XVI. стороча|XVI. сторочови]] споминать ся ге варош Холм, потӱм — ''Холмськый посад''; из [[1777|1777. року]] — уїздный варош Холм Псковського намістництва, пак — [[Псковська ґубернія|Псковської ґубернії]]{{Sfn|Поспелов|2008}}<ref name=":0">{{Статя|автор=Ва­силь­ев В. Л.|год=2004|выпуск=18|тип=Материалы научной конференции}}</ref>. Успенськый не удвергав и скандинавську ґіпотезу происхождіня назвы вароша. По ёго думці назва годна происходити уд слова ''холм'' — ''острӱв'', котроє удносило ся ид мысови што є на берегови Ловати, на котрому быв основаный Холм<ref name="dgsz">{{Книга |автор=Власов А. С., Элькин Г. Н |часть=Холм |год=2011 |isbn=978-5-93437-372-7 }}</ref>. == Історія == У старину по ріці Ловать через територию типирішнёго вароша проходив водный торговый путь «из варяґ в ґрекы»)<ref name="dgsz">{{Книга |автор=Власов А. С., Элькин Г. Н |часть=Холм |год=2011 |isbn=978-5-93437-372-7 }}<span class="citation no-wikidata" data-ve-ignore="" data-wikidata-property-id="P1343">''Власов А. С., Элькин Г. Н.''&#x20;<span data-wikidata-qualifier-id="P248">Холм</span>&#x20;&#x2F;&#x2F;&#x20;Древнерусские города Северо-Запада.&nbsp;— <abbr title="Санкт-Петербург">СПб.</abbr>: Паритет, 2011.&nbsp;— С.&nbsp;145—148.&nbsp;— 512&nbsp;с.&nbsp;— ISBN 978-5-93437-372-7.</span></ref>. Из історіёв Холма изъязана похыбка. У шорови книг и статиф датов первої споминкы назвы вароша у літописных жрідлах названо 1144. рӱк (уд котрого и предлагало ся вести історію вароша). При тому пудрозумівала ся Новгородська перва літопись; айбо у ньӱв пуд тым роком є запис за пожар у Новгородови, у резултатови котрого згоріли ''Холм'' (часть вароша) и цирьков пророка Иллі{{Sfn|Котов|2008}}<ref name=":0">{{Статя|автор=Ва­силь­ев В. Л.|год=2004|выпуск=18|тип=Материалы научной конференции}}</ref>. Согласно гіпотезі обоснованӱв Валеріём Васильєвым, Холм неєдноразово споминать ся у новгородськых літописях пуд назвов ''Клин'' (перва споминка пуд 1131/1132. роком у Новгородськӱв первӱв літописи). У тот час центр поселеня быв на мысови учиненому злитём Куньї и Ловати — на клинови. Изслідователі удмічавуть ож топонім «клин» про обозначіня даної містности лишив ся и до зачатка XXI. стороча{{Sfn|Котов|2008}}<ref name=":0">{{Статя|автор=Ва­силь­ев В. Л.|год=2004|выпуск=18|тип=Материалы научной конференции}}</ref>. [[Файл:Crossing the Lovat river, Kholm.jpg|слева|мини|300x330пкс|Переправа через ріку [[Ловать]]]] У XIV—XV. сторочах центр поселеня переміщать ся на высокый лівый берег Ловати што є напротив. У 1471. році первый раз ся спомнянув ''Холмовськый погост'', удносящый ся ид Новгородськӱв земли{{Sfn|Котов|2008}}. Пӱсля Московсько-новгородської войны на території Деревської пятины было образовано чотыри уїзда котрі пудчинявуть ся московському правительствови, єдным из них став ''Холмськый уїзд'', при тому усокотило ся діліня на погосты (паралелно называні на руськый манер — '''''волостя́ми'''''){{Sfn|Котов|2004}}. У 1530. рокы на ''«Татиловӱв горі»'' была построєна деривляно-зимляна Холмська кріпость<ref name=":0">{{Статя|автор=Ва­силь­ев В. Л.|год=2004|выпуск=18|тип=Материалы научной конференции}}</ref>. Согласно «Обыскнӱв книзі вароша Холма Деревської пятины 1575. року письма Т. Г. Репьєва» варош ділив ся на три части авадь ''стороны'': ''Спасську (Татилӱвську)'', ''Никольську'' и ''Клинську''<ref name=":0" />. 3. авґуста 1777. року у ходови реформ адміністративно-територіалного діліня Холмськый посад пепечиненый на уїздный варош Холм Псковського намістництва (пак Псковської ґубернії). Холм став центром Холмського уїзда<ref name=":2">{{ВТ-ЕСБЕ|Холм, уездный город Псковской губернии}}</ref>. У 1889 году в Холме образована лютеранская община как филиальная Псковского прихода Святого Иакова. Деревянный молитвенный дом устроен в 1893 году, освящён 6 января 1894 года, закрыт в 1930-е<ref>{{Книга |автор=Шкаровский М. В., Черепенина Н. Ю. |год=2004 |isbn=5-86007-443-3 }}</ref>. В конце XIX века Холм был известен кустарными промыслами, в том числе изготовлением речных барок и других лодок. Также производили и торговали льном, телегами, прялками, посудой (деревянной и глиняной)<ref name="dgsz">{{Книга |автор=Власов А. С., Элькин Г. Н |часть=Холм |год=2011 |isbn=978-5-93437-372-7 }}<span class="citation no-wikidata" data-ve-ignore="" data-wikidata-property-id="P1343">''Власов А. С., Элькин Г. Н.''&#x20;<span data-wikidata-qualifier-id="P248">Холм</span>&#x20;&#x2F;&#x2F;&#x20;Древнерусские города Северо-Запада.&nbsp;— <abbr title="Санкт-Петербург">СПб.</abbr>: Паритет, 2011.&nbsp;— С.&nbsp;145—148.&nbsp;— 512&nbsp;с.&nbsp;— ISBN 978-5-93437-372-7.</span></ref>. [[Файл:Bundesarchiv_Bild_183-B21250,_Russland,_Cholm,_Soldaten_vor_Hausruinen.jpg|ліворуч|міні|233x233пкс|Холм, 21 марта 1942]] Город очень сильно пострадал в Великую Отечественную войну. Холм был оккупирован немецко-фашистскими войсками с 3 августа 1941 по 21 февраля 1944 года. В 1942 году стал местом проведения Торопецко-Холмской операции, и бо́льшая часть исторических зданий города была полностью разрушена в ходе боев за Холм<ref name="dgsz">{{Книга |автор=Власов А. С., Элькин Г. Н |часть=Холм |год=2011 |isbn=978-5-93437-372-7 }}<span class="citation no-wikidata" data-ve-ignore="" data-wikidata-property-id="P1343">''Власов А. С., Элькин Г. Н.''&#x20;<span data-wikidata-qualifier-id="P248">Холм</span>&#x20;&#x2F;&#x2F;&#x20;Древнерусские города Северо-Запада.&nbsp;— <abbr title="Санкт-Петербург">СПб.</abbr>: Паритет, 2011.&nbsp;— С.&nbsp;145—148.&nbsp;— 512&nbsp;с.&nbsp;— ISBN 978-5-93437-372-7.</span></ref>. Исторически город состоял из четырёх районов — ''Ильинского'' и ''Никольского'' (правый берег Куньи и Ловати), ''Татиловского'' (левый берег Ловати) и ''Клинского'' (клин между реками). После войны восстановление клинской части города было признано нецелесообразным<ref name=":0">{{Статя|автор=Ва­силь­ев В. Л.|год=2004|выпуск=18|тип=Материалы научной конференции}}</ref>. В течение XX века Холмский район несколько раз менял свою административную принадлежность. В разное время район находился в составе Ленинградской, Западной, Калининской, Великолукской, [[Псковська область|Псковской]] областей, с 1958 года — в Новгородской области. В 2025 году городу присвоено почётное звание Новгородской области «Город воинской доблести»<ref>{{Cite web |url=https://novoblduma.ru/infocenter/news/gorodu-kholm-i-selu-komarovo-prisvoeny-pochyetnye-zvaniya-novgorodskoy-oblasti/ |title=Городу Холм и селу Комарово присвоены почётные звания Новгородской области |archivedate=2025-06-20 |access-date=2025-07-29 |archiveurl=https://web.archive.org/web/20250620170054/https://www.novoblduma.ru/infocenter/news/gorodu-kholm-i-selu-komarovo-prisvoeny-pochyetnye-zvaniya-novgorodskoy-oblasti/ }}</ref>. == Обывательство == '''Народовый состав''' По резултатам списованя обывательства 2020. року у Холмови проживали далші народности (нарожности менше 0,1 % и другоє, поз. у знесці ид шорови «Инні»)<ref name="ВПН2020">{{Cite web |url=https://53.rosstat.gov.ru/storage/mediabank/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0%202.%20%D0%9D%D0%B0%D1%81%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D0%BE%20%D0%BD%D0%B0%D1%86%20%D0%BF%D1%80%D0%B8%D0%BD%D0%B0%D0%B4%D0%BB%D0%B5%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8,%20%D0%B2%D0%BB%D0%B0%D0%B4%D0%B5%D0%BD%D0%B8%D1%8E%20%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%BC%20%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%BC%20%D0%BF%D0%BE%20%D0%9C%D0%9E.xlsx |title=Итоги Всероссийской переписи населения 2020 года. Том 5. Национальный состав населения Новгородской области, владение языками. Таблица 2. Население по национальной принадлежности, владению русским языком и его использованию по области, городскому округу, муниципальным округам и районам |access-date=2023-11-18 |archivedate=2023-11-18 |archiveurl=https://web.archive.org/web/20231118153235/https://53.rosstat.gov.ru/storage/mediabank/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0%202.%20%D0%9D%D0%B0%D1%81%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D0%BE%20%D0%BD%D0%B0%D1%86%20%D0%BF%D1%80%D0%B8%D0%BD%D0%B0%D0%B4%D0%BB%D0%B5%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8,%20%D0%B2%D0%BB%D0%B0%D0%B4%D0%B5%D0%BD%D0%B8%D1%8E%20%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%BC%20%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%BC%20%D0%BF%D0%BE%20%D0%9C%D0%9E.xlsx }}</ref>: {| class="standard" !Народность !Число, чол. !Доля |- |[[Русы]] | align="right" |3085 | align="right" |95,99 % |- |[[Циґане|Цигани]] | align="right" |29 | align="right" |0,90 % |- |[[Українцї|Украйинці]] | align="right" |8 | align="right" |0,25 % |- |[[Білорусы]] | align="right" |8 | align="right" |0,25 % |- |[[Узбекы]] | align="right" |5 | align="right" |0,16 % |- |[[Армяне]] | align="right" |4 | align="right" |0,12 % |- |Инні | align="right" |75 | align="right" |2,33 % |- |Усёго | align="right" |3214 | align="right" |100,00 % |} == Економіка == У варошови основу економікы изкладавуть пудприємства лісової промсловости. У окресови суть и найдища глины, піщано-шутеровых мішанок. Особенну ціну представлявуть залежи ропши. Окресы вароша занимавуть обширні мочарі из доста глубокыми слоями ропши. Розробка ропшаникӱв, до ныні лишать ся єдным из приорітетӱв економікы сёго района и вароша. == Удкликованя == {{reflist}} [[Катеґорія:Населены пункты подля алфавиту]] [[Катеґорія:Міста]] [[Катеґорія:Міста Росії]] [[Катеґорія:Населены пункты]] [[Катеґорія:Населены пункты России]] [[Катеґорія:Новгородська область]] [[Катеґорія:Сторінки з неперевіреними перекладами]] h0g41zcumu04xkssai8j5g47o10tu6l Катеґорія:Статьи в роботѣ 14 25088 169571 2026-09-14T02:01:02Z Halajkovič 33393 Створена сторінка: До той категории належать статьи, в котрых е умѣщена шаблона {{tl|Статья в роботѣ}} 169571 wikitext text/x-wiki До той категории належать статьи, в котрых е умѣщена шаблона {{tl|Статья в роботѣ}} 09oyqik7ciunzqcqnnzepu0eun3cll9