diff --git a/Cleanup.osc b/Cleanup.osc deleted file mode 100644 index 8216e09ff..000000000 --- a/Cleanup.osc +++ /dev/null @@ -1,1122 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/layers/address/address.json b/assets/layers/address/address.json index d1f48c6f5..c980e2d5a 100644 --- a/assets/layers/address/address.json +++ b/assets/layers/address/address.json @@ -22,7 +22,8 @@ "pt_BR": "Endereços conhecidos no OSM", "eu": "OSMko helbide ezagunak", "pl": "Znane adresy w OSM", - "it": "Indirizzo presente su OSM" + "it": "Indirizzo presente su OSM", + "uk": "Відомі адреси в OSM" }, "description": { "en": "Addresses", @@ -47,7 +48,8 @@ "pt_BR": "Endereços", "he": "כתובות", "eu": "Helbideak", - "it": "Indirizzi" + "it": "Indirizzi", + "uk": "Адреси" }, "source": { "osmTags": { @@ -85,7 +87,8 @@ "he": "כתובת ידועה", "eu": "Helbide ezaguna", "it": "Indirizzo conosciuto", - "zh_Hant": "已知的地址" + "zh_Hant": "已知的地址", + "uk": "Відома адреса" } }, "pointRendering": [ @@ -172,7 +175,8 @@ "he": "מספר הבית הוא {addr:housenumber}", "eu": "Etxearen zenbakia {addr:housenumber} da", "it": "Il numero civico della casa è {addr:housenumber}", - "zh_Hant": "門牌號碼是 {addr:housenumber}" + "zh_Hant": "門牌號碼是 {addr:housenumber}", + "uk": "Номер будинку {addr:housenumber}" }, "question": { "en": "What is the number of this house?", @@ -194,7 +198,8 @@ "he": "מה המספר של הבית הזה?", "eu": "Zein da etxe honen zenbakia?", "it": "Qual è il numero civico di questa casa?", - "zh_Hant": "這間房子的門牌號碼是多少?" + "zh_Hant": "這間房子的門牌號碼是多少?", + "uk": "Який номер цього будинку?" }, "freeform": { "key": "addr:housenumber", @@ -232,7 +237,8 @@ "pt_BR": "Este prédio não tem número", "he": "למבנה זה אין מספר בית", "eu": "Eraikin honek ez du etxe zenbakirik", - "it": "Questo edificio non ha indirizzo" + "it": "Questo edificio non ha indirizzo", + "uk": "Ця будівля не має номера будинку" } } ] @@ -257,7 +263,8 @@ "he": "כתובת זו נמצאת ברחוב {addr:street}", "eu": "Helbide hau {addr:street} kalean dago", "it": "L’indirizzo è in via {addr:street}", - "zh_Hant": "此地址位於街道 {addr:street}" + "zh_Hant": "此地址位於街道 {addr:street}", + "uk": "Ця адреса знаходиться на вулиці {addr:street}" }, "question": { "en": "What street is this address located in?", @@ -278,7 +285,8 @@ "he": "באיזה רחוב נמצאת הכתובת הזו?", "eu": "Zein kaletan dago helbide hori?", "it": "Qual è la via in cui si trova?", - "zh_Hant": "地址所在的道路是?" + "zh_Hant": "地址所在的道路是?", + "uk": "На якій вулиці знаходиться ця адреса?" }, "freeform": { "key": "addr:street" @@ -329,7 +337,8 @@ "he": "מה צריך לתקן כאן? אנא הסבר", "eu": "Zer konpondu behar da hemen? Azaldu mesedez", "it": "Indica cosa deve essere corretto qui", - "ru": "Что исправить? Пожалуйста, предложите" + "ru": "Что исправить? Пожалуйста, предложите", + "uk": "Що тут треба виправити? Поясніть, будь ласка" }, "freeform": { "key": "fixme" diff --git a/assets/layers/advertising/advertising.json b/assets/layers/advertising/advertising.json index dc5be8404..6faf8ef35 100644 --- a/assets/layers/advertising/advertising.json +++ b/assets/layers/advertising/advertising.json @@ -16,7 +16,8 @@ "it": "Pubblicità", "zh_Hant": "廣告", "fr": "Publicité", - "ru": "Реклама" + "ru": "Реклама", + "uk": "Оголошення" }, "description": { "ca": "Completarem les dades dels elements publicitaris amb referència, operador i il·luminació", @@ -29,7 +30,8 @@ "pl": "Uzupełnimy dane z obiektów reklamowych o referencję, operatora i oświetlenie", "pt_BR": "Completaremos os dados das características de publicidade com referência, operador e iluminação", "it": "Completeremo i dati da caratteristiche pubblicitarie, con referenza, operatore e illuminazione", - "fr": "Nous allons compléter les information sur la publicité avec la référence, l'opérateur et l'éclairage" + "fr": "Nous allons compléter les information sur la publicité avec la référence, l'opérateur et l'éclairage", + "uk": "Ми доповнимо дані з рекламних об'єктів посиланням, оператором та освітленням" }, "source": { "osmTags": { @@ -437,7 +439,8 @@ "zh_Hans": "一块广告牌", "it": "un cartellone", "zh_Hant": "一塊告示牌", - "ru": "билборд" + "ru": "билборд", + "uk": "білборд" }, "description": { "en": "A large outdoor advertising structure, typically found in high-traffic areas such as alongside busy roads", @@ -451,7 +454,8 @@ "eu": "Atari zabaleko publizitate-egitura handia, trafiko handiko eremuetan egon ohi dena, adibidez errepideen ondoan", "pl": "Duża struktura reklamowa na dworze, zwykle znajdująca się w obszarach z dużym ruchem, np. w pobliżu ruchliwych dróg", "pt_BR": "Uma grande estrutura de publicidade outdoor, geralmente encontrada em áreas com alto tráfego, como ao longo de estradas movimentadas", - "it": "Grande struttura pubblicitaria all'aperto, trovata normalmente in aree ad alto traffico come accanto a strade molto trafficate" + "it": "Grande struttura pubblicitaria all'aperto, trovata normalmente in aree ad alto traffico come accanto a strade molto trafficate", + "uk": "Велика зовнішня рекламна конструкція, зазвичай розташована в місцях з високим трафіком, наприклад, уздовж жвавих доріг" }, "exampleImages": [ "./assets/themes/advertising/KFC_Billboard.jpg", @@ -471,7 +475,8 @@ "de": "Eine an einer Wand montierte Werbetafel", "cs": "billboard připevněný na stěnu", "ca": "un cartell muntat a una paret", - "es": "una valla publicitaria montada en un muro" + "es": "una valla publicitaria montada en un muro", + "uk": "білборд, прикріплений до стіни" }, "description": { "en": "A large outdoor advertising structure, typically found in high-traffic areas such as alongside busy roads mounted on a wall", @@ -479,7 +484,8 @@ "cs": "Velká venkovní reklamní konstrukce, která se obvykle nachází na frekventovaných místech, například podél frekventovaných silnic, umístěná na zdi", "pl": "Duży obiekt reklamowy na zewnątrz, zazwyczaj znajduje się w obszarach z dużym ruchem, np. obok ruchliwych dróg na ścianie", "ca": "Una gran estructura publicitària exterior, que normalment es troba en zones de gran trànsit, com ara al costat de carreteres transitades muntades a una paret", - "es": "Una gran estructura de publicidad exterior, que suele encontrarse en zonas de mucho tráfico, por ejemplo, junto a carreteras muy transitadas" + "es": "Una gran estructura de publicidad exterior, que suele encontrarse en zonas de mucho tráfico, por ejemplo, junto a carreteras muy transitadas", + "uk": "Велика зовнішня рекламна конструкція, зазвичай розташована в місцях з високим трафіком, наприклад, уздовж жвавих доріг, встановлена на стіні" }, "exampleImages": [ "./assets/themes/advertising/billboard_wall.jpg" @@ -500,7 +506,8 @@ "pl": "wolnostojąca skrzynka plakatowa", "pt_BR": "uma caixa expositora independente", "it": "un cartellone pubblicitario fissato a terra", - "zh_Hant": "獨自設立的海報框" + "zh_Hant": "獨自設立的海報框", + "uk": "окремо стояча коробка для плакатів" }, "exampleImages": [ "./assets/themes/advertising/Mupi_spain.jpg", @@ -522,7 +529,8 @@ "pl": "skrzynka plakatowa montowana na ścianie", "pt_BR": "uma caixa de pôster montada em uma parede", "zh_Hans": "安装在墙上的海报盒子", - "it": "un cartellone pubblicitario fissato al muro" + "it": "un cartellone pubblicitario fissato al muro", + "uk": "коробка для плакатів, що кріпиться на стіну" }, "snapToLayer": [ "walls_and_buildings" @@ -540,7 +548,8 @@ "it": "un contenitore di poster pubblicitari di una pensilina del trasporto pubblico", "es": "una caja de carteles que forma parte de una marquesina de transporte público", "cs": "plakátovací skříňka, která je součástí přístřešku veřejné dopravy", - "ca": "un mupi que forma part d'un refugi de transport públic" + "ca": "un mupi que forma part d'un refugi de transport públic", + "uk": "афішна скринька, що є частиною зупинки громадського транспорту" }, "snapToLayer": [ "shelter" @@ -561,7 +570,8 @@ "pt": "a bordo", "pl": "tablica", "pt_BR": "um painel publicitário", - "it": "un piccolo pannello" + "it": "un piccolo pannello", + "uk": "дошка" }, "description": { "en": "Small billboard for neighbourhood advertising, generally intended for pedestrians", @@ -574,7 +584,8 @@ "pt": "Pequeno outdoor para publicidade de bairro, geralmente destinado a pedestres", "pl": "Mały bilbord dla reklam lokalnych, przeznaczony głównie dla pieszych", "pt_BR": "Pequeno outdoor para publicidade local, geralmente destinado a pedestres", - "it": "PIccolo pannello per la pubblicità di vicinanza, generalmente destinato ai pedoni" + "it": "PIccolo pannello per la pubblicità di vicinanza, generalmente destinato ai pedoni", + "uk": "Невеликий білборд для місцевої реклами, в основному призначений для пішоходів" }, "exampleImages": [ "./assets/themes/advertising/local_Board.jpg", @@ -598,7 +609,8 @@ "pl": "kolumna", "pt_BR": "uma coluna", "it": "una colonna", - "ru": "столбец" + "ru": "столбец", + "uk": "стовпчик" }, "description": { "en": "A cylindrical outdoor structure which shows advertisements", @@ -611,7 +623,8 @@ "pt": "Uma estrutura exterior cilíndrica que mostra anúncios", "pl": "Cylindryczna konstrukcja zewnętrzna, na której pokazywane są reklamy", "pt_BR": "Uma estrutura cilíndrica ao ar livre que exibe anúncios", - "it": "Una struttura cilindrica all'esterno con affissa della pubblicità" + "it": "Una struttura cilindrica all'esterno con affissa della pubblicità", + "uk": "Циліндрична зовнішня конструкція, що показує рекламу" }, "exampleImages": [ "./assets/themes/advertising/AdvertisingColumn_001.jpg", @@ -635,7 +648,8 @@ "pl": "flaga", "pt_BR": "uma bandeira", "zh_Hans": "一个旗子", - "it": "una bandiera" + "it": "una bandiera", + "uk": "прапор" }, "exampleImages": [ "./assets/themes/advertising/Advertising_flag.jpg", @@ -658,7 +672,8 @@ "pl": "ekran", "pt_BR": "uma tela", "zh_Hans": "一块屏幕", - "it": "uno schermo" + "it": "uno schermo", + "uk": "екран" }, "exampleImages": [ "./assets/themes/advertising/Screen_poster_box.jpg", @@ -681,7 +696,8 @@ "pl": "ekran zamontowany na ścianie", "pt_BR": "uma tela montada em uma parede", "zh_Hans": "一块挂在墙上的屏幕", - "it": "uno schermo fissato al muro" + "it": "uno schermo fissato al muro", + "uk": "екран, встановлений на стіні" }, "exampleImages": [ "./assets/themes/advertising/Subway_screen.jpg", @@ -705,7 +721,8 @@ "it": "uno schermo montato su una pensilina del traporto pubblico", "es": "una pantalla montada en una marquesina de tránsito", "cs": "obrazovka namontovaná na dopravním přístřešku", - "ca": "una pantalla muntada en una marquesina" + "ca": "una pantalla muntada en una marquesina", + "uk": "екран, встановлений на тимчасовому укритті" }, "snapToLayer": [ "shelter" @@ -728,7 +745,8 @@ "pl": "plandeka", "pt_BR": "uma lona", "zh_Hans": "防水布", - "it": "un telone" + "it": "un telone", + "uk": "брезент" }, "description": { "en": "A piece of waterproof textile with a printed message, permanently anchored on a wall", @@ -741,7 +759,8 @@ "fr": "Une pièce de textile imperméable avec un message imprimé, ancrée de façon permanente sur un mur.", "pl": "Kawałek wodoodpornej tkaniny z nadrukowanym przesłaniem, trwale przymocowany do ściany", "pt_BR": "Um pedaço de tecido impermeável com uma mensagem impressa, permanentemente fixado a uma parede", - "it": "Un telo impermeabile con un messaggio stampato, fissato in modo permanente al muro" + "it": "Un telo impermeabile con un messaggio stampato, fissato in modo permanente al muro", + "uk": "Шматок водонепроникного текстилю з надрукованим повідомленням, постійно закріплений на стіні" }, "exampleImages": [ "./assets/themes/advertising/tarp_feder.jpg", @@ -767,7 +786,8 @@ "pl": "totem", "pt_BR": "um totem", "zh_Hans": "图腾", - "it": "un totem" + "it": "un totem", + "uk": "тотем" }, "exampleImages": [ "./assets/themes/advertising/AdvertisingTotem_004.jpg", @@ -791,7 +811,8 @@ "eu": "letrero bat", "pl": "znak", "zh_Hans": "标志", - "it": "un'insegna" + "it": "un'insegna", + "uk": "знак" }, "description": { "en": "Used for advertising signs, neon signs, logos & institutional entrance signs", @@ -804,7 +825,8 @@ "eu": "Iragarki publizitarioetarako, neon-karteletarako, logotipoetarako eta erakundeen sarrera-seinaleetarako erabiltzen da", "pl": "Używany do znaków reklamowych, neonów, logo i znaków wejściowych do instytucji", "pt_BR": "Usado para placas de publicidade, letreiros de neon, logotipos e placas de entrada institucionais", - "it": "Utilizzato per insegna pubblicitaria, un'insegna al neon, i loghi o le indicazioni d'entrata" + "it": "Utilizzato per insegna pubblicitaria, un'insegna al neon, i loghi o le indicazioni d'entrata", + "uk": "Використовується для рекламних вивісок, неонових вивісок, логотипів та вхідних табличок установ" }, "exampleImages": [ "./assets/themes/advertising/Waitrose_sign.jpg", @@ -832,7 +854,8 @@ "pl": "rzeźba", "pt_BR": "uma escultura", "zh_Hans": "雕像", - "it": "una scultura" + "it": "una scultura", + "uk": "скульптура" }, "exampleImages": [ "./assets/themes/advertising/Aircraft_Sculpture.jpg", @@ -857,7 +880,8 @@ "pl": "mural ścienny", "pt_BR": "uma pintura mural", "zh_Hans": "墙上的画", - "it": "un murales" + "it": "un murales", + "uk": "настінний розпис" }, "exampleImages": [ "./assets/themes/advertising/Capitol_wall.jpg", @@ -916,7 +940,8 @@ "he": "זה שלט חוצות", "pl": "To jest bilbord", "pt_BR": "Isso é um outdoor", - "zh_Hans": "这是一个广告牌" + "zh_Hans": "这是一个广告牌", + "uk": "Це білборд" }, "icon": { "path": "./assets/themes/advertising/billboard.svg", @@ -935,7 +960,8 @@ "pt": "Isso é uma placa", "pl": "To jest tablica", "pt_BR": "Isso é uma placa", - "zh_Hans": "这是一块板" + "zh_Hans": "这是一块板", + "uk": "Це дошка" }, "icon": { "path": "./assets/themes/advertising/board.svg", @@ -1109,7 +1135,8 @@ "pl": "To jest mural ścienny", "pt_BR": "Isso é uma pintura mural", "zh_Hans": "这是一幅壁画", - "pt": "Isto é uma pintura mural" + "pt": "Isto é uma pintura mural", + "uk": "Це настінний розпис" }, "icon": { "path": "./assets/themes/advertising/wall_painting.svg", @@ -1122,7 +1149,8 @@ "en": "This is tilework - the advertisement is painted on tiles", "de": "Dies ist eine Kachelarbeit - die Werbung ist auf Fliesen gemalt", "cs": "Jedná se o dlaždice - reklama je namalovaná na dlaždicích", - "es": "Esto es un azulejería - la publicidad está pintada en azulejos" + "es": "Esto es un azulejería - la publicidad está pintada en azulejos", + "uk": "Це кахельна плитка - реклама намальована на плитці" } }, { @@ -1148,7 +1176,8 @@ "pt": "Este anúncio percorre várias mensagens?", "pl": "Czy ta reklama przechodzi przez wiele różnych wiadomości?", "pt_BR": "Este anúncio passa por várias mensagens em sequência?", - "zh_Hans": "该广告是否会在多条消息中循环播放?" + "zh_Hans": "该广告是否会在多条消息中循环播放?", + "uk": "Чи циркулює ця реклама через кілька повідомлень?" }, "condition": { "#": "Screens are _always_ animated; flags, tarps, and wall_paintings cannot be animated; signs can be anything so we don't make guesses", @@ -1174,7 +1203,8 @@ "pt": " Static, mostra sempre a mesma mensagem", "pl": "Statyczne, zawsze pokazuje tą samą wiadomość", "pt_BR": "Estático, mostra sempre a mesma mensagem", - "zh_Hans": "静态,始终显示相同的消息" + "zh_Hans": "静态,始终显示相同的消息", + "uk": "Статичний, завжди показує одне й те саме повідомлення" } }, { @@ -1189,7 +1219,8 @@ "pt": "Este objeto possui um digital display embutido para mostrar preços ou alguma outra mensagem", "pl": "Ten obiekt ma wbudowany cyfrowy wyświetlacz do pokazywania cen lub innych informacji", "pt_BR": "Este objeto possui um display digital incorporado para mostrar preços ou alguma outra mensagem", - "zh_Hans": "该对象有一个内置的数字显示器来显示价格或其他一些消息" + "zh_Hans": "该对象有一个内置的数字显示器来显示价格或其他一些消息", + "uk": "Цей об'єкт має вбудований цифровий дисплей для відображення цін або іншого повідомлення" }, "hideInAnswer": { "and": [ @@ -1211,7 +1242,8 @@ "fr": "Trivision - le panneau est constitué de lames triangulaires qui tournent régulièrement", "pt": "Trivision - o outdoor consiste em muitos prismas triangulares que giram regularmente", "pt_BR": "Trivision - o outdoor consiste em muitos prismas triangulares que giram regularmente", - "zh_Hans": "Trivision - 广告牌由许多有规律旋转的三棱柱组成" + "zh_Hans": "Trivision - 广告牌由许多有规律旋转的三棱柱组成", + "uk": "Поділ - білборд складається з багатьох трикутних призм, які регулярно обертаються" }, "icon": { "class": "large", @@ -1231,7 +1263,8 @@ "fr": "Affiches défilantes", "pt": "Pôsteres de rolagem", "pt_BR": "Pôsteres deslizantes", - "zh_Hans": "滚动海报" + "zh_Hans": "滚动海报", + "uk": "Прокрутка постерів" }, "hideInAnswer": { "and": [ @@ -1252,7 +1285,8 @@ "fr": "Tourne sur elle-même", "pt": "Gira sobre si mesmo", "pt_BR": "Gira sobre si mesmo", - "zh_Hans": "自行旋转" + "zh_Hans": "自行旋转", + "uk": "Обертається на себе" }, "hideInAnswer": { "and": [ @@ -1283,7 +1317,8 @@ "he": "זהו תאורת ניאון", "pl": "To jest lampa neonowa", "pt_BR": "Isso é uma luz de neon", - "zh_Hans": "这是霓虹灯管" + "zh_Hans": "这是霓虹灯管", + "uk": "Це неонова лампа" }, "hideInAnswer": "advertising!=sign", "addExtraTags": [ @@ -1313,7 +1348,8 @@ "pt_BR": "Operado por {operator}", "he": "מופעל על ידי {operator}", "pl": "Obsługiwane przez {operator}", - "zh_Hans": "由{operator}运营" + "zh_Hans": "由{operator}运营", + "uk": "Управляється {operator}" }, "question": { "ca": "Qui opera aquest element?", @@ -1327,7 +1363,8 @@ "he": "מי מפעיל את התכונה הזו?", "pl": "Kto obsługuje ten obiekt?", "pt_BR": "Quem opera este recurso?", - "zh_Hans": "谁操作此物件?" + "zh_Hans": "谁操作此物件?", + "uk": "Хто керує цим об'єктом?" }, "freeform": { "addExtraTags": [], @@ -1348,7 +1385,8 @@ "he": "איזה סוג הודעה מוצגת?", "pl": "Jaki rodzaj wiadomości jest pokazany?", "pt_BR": "Que tipo de mensagem é exibido?", - "zh_Hans": "显示什么样的消息?" + "zh_Hans": "显示什么样的消息?", + "uk": "Яке повідомлення відображається?" }, "mappings": [ { @@ -1366,7 +1404,8 @@ "he": "מסר מסחרי", "nl": "Commerciële boodschap", "pl": "Wiadomość komercyjna", - "zh_Hans": "商业留言" + "zh_Hans": "商业留言", + "uk": "Комерційне повідомлення" } }, { @@ -1384,7 +1423,8 @@ "nl": "Lokale informatie", "pl": "Informacja lokalna", "pt_BR": "Informações locais", - "zh_Hans": "本地信息" + "zh_Hans": "本地信息", + "uk": "Місцева інформація" } }, { @@ -1401,7 +1441,8 @@ "he": "מידע אבטחה", "pl": "Informacje dotyczące bezpieczeństwa", "pt_BR": "Informações de segurança", - "zh_Hans": "安全信息" + "zh_Hans": "安全信息", + "uk": "Інформація про безпеку" }, "hideInAnswer": { "and": [ @@ -1423,7 +1464,8 @@ "he": "פרסום בחירות", "pl": "Reklamy wyborcze", "pt_BR": "Propaganda eleitoral", - "zh_Hans": "选举广告" + "zh_Hans": "选举广告", + "uk": "Передвиборча реклама" } }, { @@ -1442,7 +1484,8 @@ "eu": "Antzerkiari, kontzertuei eta abarri buruzko informazioa", "pl": "Informacje dotyczące teatru, koncertów, …", "pt_BR": "Informações relacionadas a teatro, concertos, …", - "zh_Hans": "与戏剧、音乐会等相关的信息……" + "zh_Hans": "与戏剧、音乐会等相关的信息……", + "uk": "Інформація, пов'язана з театром, концертами, …" }, "hideInAnswer": { "and": [ @@ -1464,7 +1507,8 @@ "pt": "Mensagem de organizações sem fins lucrativos", "pl": "Wiadomość od organizacji non-profit", "pt_BR": "Mensagens de organizações sem fins lucrativos", - "zh_Hans": "来自非营利组织的消息" + "zh_Hans": "来自非营利组织的消息", + "uk": "Повідомлення від неприбуткових організацій" } }, { @@ -1480,7 +1524,8 @@ "pt": "Para expressar sua opinião", "pl": "Żeby wyrazić swoją opinię", "pt_BR": "Para expressar sua opinião", - "zh_Hans": "表达您的意见" + "zh_Hans": "表达您的意见", + "uk": "Щоб висловити свою думку" }, "hideInAnswer": { "or": [ @@ -1504,7 +1549,8 @@ "pt_BR": "Mensagem religiosa", "he": "מסר דתי", "pl": "Przekaz religijny", - "zh_Hans": "宗教讯息" + "zh_Hans": "宗教讯息", + "uk": "Релігійне послання" } }, { @@ -1519,7 +1565,8 @@ "pt": "sinal de financiamento", "pl": "Znak finansowania", "pt_BR": "Placa de financiamento", - "zh_Hans": "资助标志" + "zh_Hans": "资助标志", + "uk": "Ознака фінансування" }, "hideInAnswer": { "or": [ @@ -1542,7 +1589,8 @@ "pt": "Um mapa", "pt_BR": "Um mapa", "pl": "Mapa", - "zh_Hans": "地图" + "zh_Hans": "地图", + "uk": "Карта" } } ], @@ -1573,7 +1621,8 @@ "eu": "Zenbat aldetatik ikus dezakezu publizitatea?", "pl": "Z ilu stron można oglądać reklamy?", "pt_BR": "De quantos lados você consegue visualizar os anúncios?", - "zh_Hans": "您可以从几个侧面观看广告?" + "zh_Hans": "您可以从几个侧面观看广告?", + "uk": "Зі скількох сторін можна дивитися рекламу?" }, "mappings": [ { @@ -1590,7 +1639,8 @@ "pl": "Ten obiekt ma reklamy po jednej stronie", "pt_BR": "Este objeto tem anúncios em um único lado", "zh_Hans": "该物体单面有广告", - "it": "Questo oggetto ha la pubblicità solo da un lato" + "it": "Questo oggetto ha la pubblicità solo da un lato", + "uk": "Цей об'єкт має рекламу з одного боку" } }, { @@ -1606,7 +1656,8 @@ "eu": "Objektu honek iragarkiak ditu bi aldeetan", "pl": "Ten obiekt ma reklamy po dwóch stronach", "pt_BR": "Este objeto tem anúncios em ambos os lados", - "zh_Hans": "该物体双面有广告" + "zh_Hans": "该物体双面有广告", + "uk": "Цей об'єкт має рекламу з обох боків" } } ] @@ -1624,7 +1675,8 @@ "pt": "O número de referência é {ref}", "pt_BR": "O número de referência é {ref}", "pl": "Numer referencyjny to {ref}", - "zh_Hans": "编号是{ref}" + "zh_Hans": "编号是{ref}", + "uk": "Номер посилання: {ref}" }, "question": { "ca": "Quin és el número de refèrencia?", @@ -1637,7 +1689,8 @@ "pt": "Qual é o número de referência?", "pl": "Jaki jest numer referencyjny?", "pt_BR": "Qual é o número de referência?", - "zh_Hans": "编号是多少?" + "zh_Hans": "编号是多少?", + "uk": "Який номер посилання?" }, "freeform": { "key": "ref" @@ -1654,7 +1707,8 @@ "en": "Is this sign for a business that no longer exists or no longer being maintained?", "de": "Ist dieses Schild für ein Geschäft, das nicht mehr existiert oder nicht mehr gepflegt wird?", "es": "¿Es este cartel de un negocio que ya no existe o que ya no se mantiene?", - "cs": "Je tato značka určena pro již neexistující nebo neudržovaný podnik?" + "cs": "Je tato značka určena pro již neexistující nebo neudržovaný podnik?", + "uk": "Це знак для бізнесу, який більше не існує або більше не підтримується?" }, "mappings": [ { @@ -1664,7 +1718,8 @@ "en": "This is a historic advertisement sign (an advertisement for a business that no longer exists or a very old sign with heritage value)", "de": "Es handelt sich um ein historisches Werbeschild (eine Werbung für ein Unternehmen, das nicht mehr existiert, oder ein sehr altes Schild mit historischem Wert)", "cs": "Jedná se o historický reklamní nápis (reklama na již neexistující podnik nebo velmi starý nápis s památkovou hodnotou)", - "es": "Esto es un cartel publicitario histórico (un anuncio para un negocio que ya no existe o un cartel con un gran valor patrimonial)" + "es": "Esto es un cartel publicitario histórico (un anuncio para un negocio que ya no existe o un cartel con un gran valor patrimonial)", + "uk": "Це історична рекламна вивіска (реклама підприємства, яке більше не існує, або дуже стара вивіска, що має історичну цінність)" } }, { @@ -1673,7 +1728,8 @@ "en": "This advertisement sign has no historic value (the business still exists and has no heritage value)", "de": "Dieses Werbeschild hat keinen historischen Wert (das Unternehmen existiert noch und hat keinen denkmalpflegerischen Wert)", "cs": "Tento reklamní nápis nemá žádnou historickou hodnotu (podnik stále existuje a nemá žádnou památkovou hodnotu)", - "es": "Este cartel publicitario no tiene valor histórico (el negocio todavía existe y no tiene valor patrimonial)" + "es": "Este cartel publicitario no tiene valor histórico (el negocio todavía existe y no tiene valor patrimonial)", + "uk": "Ця рекламна вивіска не має історичної цінності (бізнес все ще існує і не має історичної цінності)" } } ] diff --git a/assets/layers/animal_shelter/animal_shelter.json b/assets/layers/animal_shelter/animal_shelter.json index 2cacd3259..12e870409 100644 --- a/assets/layers/animal_shelter/animal_shelter.json +++ b/assets/layers/animal_shelter/animal_shelter.json @@ -9,7 +9,8 @@ "ca": "Refugis d'animals", "pl": "Schroniska dla zwierząt", "fr": "Abri pour animaux", - "cs": "Útulky pro zvířata" + "cs": "Útulky pro zvířata", + "ru": "Приюты для животных" }, "description": { "en": "An animal shelter is a facility where animals in trouble are brought and facility's staff (volunteers or not) feeds them and cares of them, rehabilitating and healing them if necessary. This definition includes kennels for abandoned dogs, catteries for abandoned cats, shelters for other abandoned pets and wildlife recovery centres. ", diff --git a/assets/layers/artwork/artwork.json b/assets/layers/artwork/artwork.json index 25055f1a3..15a761912 100644 --- a/assets/layers/artwork/artwork.json +++ b/assets/layers/artwork/artwork.json @@ -45,7 +45,8 @@ "zgh": "ⵢⴰⵜ ⵜⴽⴰⵕⴹⴰ ⵉⵕⵥⵎⵏ ⵅⴼ ⵉⵙⴼⵔⵉⵙⵏ, ⵉⵖⵔⴰⵙⵏ ⴷ ⵜⵡⵓⵔⵉⵡⵉⵏ ⵜⵉⵏⴰⵥⵓⵕⵉⵏ ⵢⴰⴹⵏⵉⵏ ⴳ ⵓⵎⴰⴹⴰⵍ", "eu": "Estatuen, bustoen, graffitien eta mundu osoko beste artelan batzuen mapa irekia", "pl": "Otwarta mapa posągów, popiersi, graffiti i innych dzieł sztuki z całego świata", - "pt_BR": "Um mapa aberto de estátuas, bustos, grafites e outras obras de arte em todo o mundo" + "pt_BR": "Um mapa aberto de estátuas, bustos, grafites e outras obras de arte em todo o mundo", + "uk": "Відкрита карта статуй, бюстів, графіті та інших творів мистецтва по всьому світу" }, "source": { "osmTags": "tourism=artwork" @@ -814,11 +815,8 @@ "if": "historic=", "alsoShowIf": "historic!=memorial", "then": { - "en": "This artwork does not serve as a bench", - "de": "Dieses Kunstwerk dient nicht als Sitzbank", - "fr": "Cette œuvre ne sert pas de banc", - "cs": "Toto dílo neslouží jako lavička", - "es": "Esta obra de arte no sirve como banco" + "en": "This artwork does not serve as a memorial", + "de": "Dieses Kunstwerk dient nicht als Denkmal" } } ] diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json index cf0db46ef..808bf10a1 100644 --- a/assets/layers/charging_station/charging_station.json +++ b/assets/layers/charging_station/charging_station.json @@ -21,9 +21,13 @@ ] } }, - "keywords": {"nl": [ - "oplaadstations","oplaad stations","oplaad punten" - ]}, + "keywords": { + "nl": [ + "oplaadstations", + "oplaad stations", + "oplaad punten" + ] + }, "title": { "render": { "en": "Charging station", diff --git a/assets/layers/dogpark/dogpark.json b/assets/layers/dogpark/dogpark.json index 4aa930489..ecd2ac0bd 100644 --- a/assets/layers/dogpark/dogpark.json +++ b/assets/layers/dogpark/dogpark.json @@ -7,7 +7,8 @@ "es": "parques de perros", "nl": "hondenweides", "ca": "parcs de gossos", - "cs": "psí parky" + "cs": "psí parky", + "ru": "парки для собак" }, "description": "A layer showing dogparks, which are areas where dog are allowed to run without a leash", "source": { diff --git a/assets/layers/food/food.json b/assets/layers/food/food.json index f54a878fc..61725d677 100644 --- a/assets/layers/food/food.json +++ b/assets/layers/food/food.json @@ -750,8 +750,8 @@ { "if": "delivery=yes", "then": { - "en": "This business does home delivery (eventually via a third party)", - "de": "Dieses Unternehmen liefert nach Hause (eventuell über eine dritte Partei)", + "en": "This business does home delivery (possibly via a third party)", + "de": "Dieses Unternehmen liefert nach Hause (möglicherweise über eine dritte Partei)", "fr": "Ce restaurant effectue la livraison à domicile (éventuellement via un tiers)", "nl": "Deze zaak levert aan huis (eventueel via een derde partij)", "ca": "Aquest negoci fa lliuraments a domicili (eventualment a través d'un tercer)", @@ -1044,7 +1044,8 @@ { "if": "diet:vegetarian=only", "then": { - "en": "Serves only vegetarian snacks and burgers" + "en": "Serves only vegetarian snacks and burgers", + "de": "Nur vegetarische Snacks und Burger erhältlich" } }, { @@ -1097,7 +1098,8 @@ { "if": "diet:vegan=only", "then": { - "en": "Serves only vegan snacks and burgers" + "en": "Serves only vegan snacks and burgers", + "de": "Nur vegane Snacks und Burger erhältlich" } }, { diff --git a/assets/layers/gps_track/gps_track.json b/assets/layers/gps_track/gps_track.json index 3f7f771a2..6c2b7b8a7 100644 --- a/assets/layers/gps_track/gps_track.json +++ b/assets/layers/gps_track/gps_track.json @@ -7,7 +7,8 @@ "fr": "Votre chemin parcouru", "da": "Dit tilbagelagte spor", "ca": "La teva traça recorreguda", - "cs": "Vaše procestovaná trasa" + "cs": "Vaše procestovaná trasa", + "ru": "Ваш пройденный путь" }, "description": "Meta layer showing the previous locations of the user as single line with controls, e.g. to erase, upload or download this track. Add this to your theme and override the maprendering to change the appearance of the travelled track.", "source": "special", diff --git a/assets/layers/icons/icons.json b/assets/layers/icons/icons.json index 08f36855b..85abbe9c4 100644 --- a/assets/layers/icons/icons.json +++ b/assets/layers/icons/icons.json @@ -127,7 +127,8 @@ "en": "phone", "nl": "Telefoneer", "de": "Telefon", - "pl": "telefon" + "pl": "telefon", + "cs": "telefon" } } }, @@ -144,7 +145,8 @@ "en": "phone", "nl": "Telefoneer", "de": "Telefon", - "pl": "telefon" + "pl": "telefon", + "cs": "telefon" } } } @@ -329,7 +331,8 @@ "nl": "Bekijk op openstreetmap.org", "de": "Auf openstreetmap.org öffnen", "pl": "Otwórz na openstreetmap.org", - "da": "Åbn på openstreetmap.org" + "da": "Åbn på openstreetmap.org", + "cs": "Otevřít na openstreetmap.org" } } }, @@ -352,7 +355,8 @@ "nl": "Bekijk op openstreetmap.org", "de": "Auf openstreetmap.org öffnen", "pl": "Otwórz na openstreetmap.org", - "da": "Åbn på openstreetmap.org" + "da": "Åbn på openstreetmap.org", + "cs": "Otevřít na openstreetmap.org" } } } @@ -370,7 +374,8 @@ "nl": "Bekijk op openstreetmap.org", "de": "Auf openstreetmap.org öffnen", "pl": "Otwórz na openstreetmap.org", - "da": "Åbn på openstreetmap.org" + "da": "Åbn på openstreetmap.org", + "cs": "Otevřít na openstreetmap.org" } } } diff --git a/assets/layers/maxspeed/maxspeed.json b/assets/layers/maxspeed/maxspeed.json index 46e54b11d..feecc2bf0 100644 --- a/assets/layers/maxspeed/maxspeed.json +++ b/assets/layers/maxspeed/maxspeed.json @@ -128,7 +128,8 @@ "nl": "Wat is de legale maximumsnelheid voor deze weg?", "fr": "Quelle est la vitesse maximum autorisée sur cette route ?", "cs": "Jaká je zákonná maximální povolená rychlost na této silnici?", - "pl": "Jaka jest maksymalna prawnie dopuszczona prędkość na tej drodze?" + "pl": "Jaka jest maksymalna prawnie dopuszczona prędkość na tej drodze?", + "ru": "С какой максимальной скоростью разрешено ездить по этой дороге?" }, "freeform": { "key": "maxspeed", diff --git a/assets/layers/note/note.json b/assets/layers/note/note.json index 61df64781..ad6e9cf29 100644 --- a/assets/layers/note/note.json +++ b/assets/layers/note/note.json @@ -63,7 +63,8 @@ "nl": "Bekijk op OpenStreetMap.org", "de": "Auf OpenStreetMap.org ansehen", "da": "Se på OpenStreetMap.org", - "fr": "Voir sur OpenStreetMap.org" + "fr": "Voir sur OpenStreetMap.org", + "cs": "Zobrazit na OpenStreetMap.org" }, "render": "" } diff --git a/assets/layers/search/search.json b/assets/layers/search/search.json index 3beeb12c1..307e1cc5e 100644 --- a/assets/layers/search/search.json +++ b/assets/layers/search/search.json @@ -2,7 +2,8 @@ "id": "search", "description": { "en": "Priviliged layer showing the search results", - "de": "Priorisierte Ebene, die Suchergebnissen anzeigt" + "de": "Priorisierte Ebene, die Suchergebnissen anzeigt", + "cs": "Soukromá vrstva zobrazující výsledky hledání" }, "source": "special", "title": "{display_name}", @@ -11,7 +12,8 @@ "id": "intro", "render": { "en": "Search result", - "de": "Suchergebnis" + "de": "Suchergebnis", + "cs": "Výsledek hledání" } }, { diff --git a/assets/layers/summary/summary.json b/assets/layers/summary/summary.json index 3300de733..6b8c2f984 100644 --- a/assets/layers/summary/summary.json +++ b/assets/layers/summary/summary.json @@ -6,7 +6,8 @@ "render": { "en": "Summary", "de": "Übersicht", - "nl": "Samenvatting" + "nl": "Samenvatting", + "cs": "Souhrn" } }, "pointRendering": [ diff --git a/assets/layers/toilet/toilet.json b/assets/layers/toilet/toilet.json index abb9901d3..d6c92d4b0 100644 --- a/assets/layers/toilet/toilet.json +++ b/assets/layers/toilet/toilet.json @@ -606,12 +606,14 @@ "en": "Are these toilets gender-segregated?", "nl": "Zijn deze toiletten gescheiden op basis van geslacht?", "de": "Sind diese Toiletten geschlechtergetrennt?", - "ca": "Aquests lavabos estan separats per gènere?" + "ca": "Aquests lavabos estan separats per gènere?", + "cs": "Jsou tyto toalety rozděleny podle pohlaví?" }, "questionHint": { "en": "Are there separate stalls or separate areas for men and women and are they signposted as such?", "nl": "Is er een aparte ruimte voor mannen en vrouwen en zijn deze ruimtes ook expliciet aangegeven?", - "de": "Gibt es getrennte Kabinen oder getrennte Bereiche für Männer und Frauen, und sind sie als solche ausgeschildert?" + "de": "Gibt es getrennte Kabinen oder getrennte Bereiche für Männer und Frauen, und sind sie als solche ausgeschildert?", + "cs": "Existují samostatné stánky nebo oddělené prostory pro muže a ženy a jsou jako takové označeny?" }, "mappings": [ { @@ -620,7 +622,8 @@ "en": "There is a separate, signposted area for men and women", "nl": "Er zijn aparte ruimtes of toiletten voor mannen en vrouwen", "de": "Es gibt einen separaten, ausgeschilderten Bereich für Männer und Frauen", - "ca": "Hi ha una zona separada, senyalitzada per a homes i dones" + "ca": "Hi ha una zona separada, senyalitzada per a homes i dones", + "cs": "K dispozici je oddělený, označený prostor pro muže a ženy" } }, { @@ -628,7 +631,8 @@ "then": { "en": "There is no separate, signposted area for men and women", "nl": "Mannen en vrouwen gebruiken dezelfde ruimtes en toiletten", - "de": "Es gibt keinen getrennten, ausgeschilderten Bereich für Männer und Frauen" + "de": "Es gibt keinen getrennten, ausgeschilderten Bereich für Männer und Frauen", + "cs": "Neexistuje žádný oddělený, označený prostor pro muže a ženy" } } ] diff --git a/assets/layers/transit_routes/transit_routes.json b/assets/layers/transit_routes/transit_routes.json index 963fd131e..631cf66b0 100644 --- a/assets/layers/transit_routes/transit_routes.json +++ b/assets/layers/transit_routes/transit_routes.json @@ -138,7 +138,8 @@ "en": "What is the via point for this bus line?", "de": "Über welchen Zwischenhalt fährt die Buslinie?", "nl": "Via welk punt gaat deze buslijn?", - "cs": "Jaký je průjezdní bod této autobusové linky?" + "cs": "Jaký je průjezdní bod této autobusové linky?", + "ru": "Где находится конечный пункт этого автобусного маршрута?" } }, { diff --git a/assets/layers/usersettings/usersettings.json b/assets/layers/usersettings/usersettings.json index fd54a5fda..6f191926c 100644 --- a/assets/layers/usersettings/usersettings.json +++ b/assets/layers/usersettings/usersettings.json @@ -6,7 +6,8 @@ "nl": "Een speciale lag die niet getoond wordt op de kaart, maar die de instellingen van de gebruiker weergeeft", "pt": "Uma camada especial que não deve ser mostrada em um mapa, mas que é usada para definir as configurações do usuário", "ca": "Una capa especial que no està pensada per mostrar-se en un mapa, però que s'utilitza per configurar la configuració de l'usuari", - "cs": "Speciální vrstva, která není určena k zobrazení na mapě, ale slouží k nastavení uživatelských nastavení" + "cs": "Speciální vrstva, která není určena k zobrazení na mapě, ale slouží k nastavení uživatelských nastavení", + "uk": "Спеціальний шар, який не призначений для відображення на карті, але використовується для встановлення користувацьких налаштувань" }, "source": "special", "calculatedTags": [ @@ -28,7 +29,8 @@ "cs": "Nastavení", "fi": "Asetukset", "zh_Hant": "設定", - "sl": "Nastavitve" + "sl": "Nastavitve", + "ru": "Настройки" } }, "pointRendering": null, @@ -319,7 +321,8 @@ "en": "What accessibility features should be applied?", "nl": "Wanneer moet de toegankelijkheidsmode ingeschakeld worden?", "de": "Welche Barrierefrei-Funktionen sollen angewendet werden?", - "da": "Hvilke tilgængelighedsfunktioner skal anvendes?" + "da": "Hvilke tilgængelighedsfunktioner skal anvendes?", + "uk": "Які елементи доступності слід застосовувати?" }, "mappings": [ { @@ -330,7 +333,9 @@ "ca": "Activar les funcions d'accessibilitat quan s'utilitzen les tecles de fletxa per navegar pel mapa", "nl": "Schakel toegankelijkheidsmode aan wanneer op de pijltjestoetsen wordt geduwd om de kaart te bewegen", "de": "Barrierefrei-Modus aktivieren, wenn Pfeiltasten zum Navigieren in der Karte verwendet werden", - "da": "Aktiver tilgængelighedsfunktioner, når piletaster anvendes til at navigere i kortet" + "da": "Aktiver tilgængelighedsfunktioner, når piletaster anvendes til at navigere i kortet", + "cs": "Povolení funkcí přístupnosti při použití kláves se šipkami k navigaci na mapě", + "uk": "Увімкніть функції доступності, коли для навігації по карті використовуються клавіші зі стрілками" } }, { @@ -340,7 +345,8 @@ "ca": "Sempre habilita les característiques d'accessibilitat", "nl": "Schakel de toegankelijkheidsmode altijd aan", "de": "Barrierefrei-Modus immer aktivieren", - "da": "Aktiver altid tilgængelighedsfunktioner" + "da": "Aktiver altid tilgængelighedsfunktioner", + "uk": "Завжди вмикайте функції доступності" } }, { @@ -349,7 +355,8 @@ "en": "Never enable accessibility features", "nl": "Gebruik geen toegankelijkheidsmode", "de": "Barrierefrei-Modus niemals aktivieren", - "da": "Aktiver aldrig tilgængelighedsfunktioner" + "da": "Aktiver aldrig tilgængelighedsfunktioner", + "uk": "Ніколи не вмикайте функції доступності" } } ] @@ -400,7 +407,8 @@ "cs": "Použití výchozí vrstvu pozadí", "nl": "Gebruik de standaard achtergrondlaag", "fr": "Utiliser le fond par défaut", - "da": "Vis standardbaggrundslaget" + "da": "Vis standardbaggrundslaget", + "uk": "Використовуйте фоновий шар за замовчуванням" } }, { @@ -415,7 +423,8 @@ "cs": "Použít OpenStreetMap-carto jako výchozí vrstvu", "nl": "Gebruik OpenStreetMap-carto altijd als achtergrondlaag", "fr": "Utiliser le fond OpenStreetMap-carto par défaut", - "da": "Brug OpenStreetMap-carto som standardlag" + "da": "Brug OpenStreetMap-carto som standardlag", + "uk": "Використовувати OpenStreetMap-carto як шар за замовчуванням" } }, { @@ -428,7 +437,8 @@ "cs": "Použít letecké snímky jako výchozí pozadí", "nl": "Gebruik luchtfoto's als standaard achtergrondlaag", "fr": "Utiliser le fond imagerie aérienne par défaut", - "da": "Brug luftfoto som standardbaggrund" + "da": "Brug luftfoto som standardbaggrund", + "uk": "Використовувати аерофотознімки як фон за замовчуванням" } }, { @@ -441,7 +451,8 @@ "cs": "Použití mapy, která není založena na mapě openstreetmap, jako výchozího pozadí", "nl": "Gebruik altijd een kaart die niet op OpenStreetMap gebaseerd is als achtergrond", "fr": "Utiliser un fond non basé sur OpenStreetMap par défaut", - "da": "Brug et ikke-OpenSreetMap-baseret kort som standardbaggrund" + "da": "Brug et ikke-OpenSreetMap-baseret kort som standardbaggrund", + "uk": "Використовувати мапу на основі не-openstreetmap як фон за замовчуванням" } }, { @@ -453,7 +464,8 @@ "cs": "Použít aktuální vrstvu pozadí ({__current_background}) jako výchozí pozadí", "nl": "Gebruik altijd {__current_background} als achtergrondlaag. Dit is de huidige achtergrond.", "fr": "Utiliser le fond actuel ({__current_background}) par défaut", - "da": "Brug det nuværende baggrundslag ({__current_background}) som standardbaggrund" + "da": "Brug det nuværende baggrundslag ({__current_background}) som standardbaggrund", + "uk": "Використовувати поточний фоновий шар ({__current_background}) як фон за замовчуванням" }, "hideInAnswer": { "or": [ @@ -472,7 +484,8 @@ "cs": "Použít vrstvu pozadí {mapcomplete-preferred-background-layer} jako výchozí pozadí", "nl": "Gebruik {mapcomplete-preferred-background-layer} altijd als achtergrondlaag", "fr": "Utiliser le fond ({mapcomplete-preferred-background-layer})par défaut", - "da": "Brug baggrundslaget {mapcomplete-preferred-background-layer} som standardbaggrund" + "da": "Brug baggrundslaget {mapcomplete-preferred-background-layer} som standardbaggrund", + "uk": "Використовувати фоновий шар {mapcomplete-preferred-background-layer} як фон за замовчуванням" }, "hideInAnswer": true } @@ -558,7 +571,8 @@ "question": { "en": "Should a scale bar be shown on the map?", "nl": "Moet er een schaalbalk weergegeven worden?", - "de": "Kartenmaßstab anzeigen?" + "de": "Kartenmaßstab anzeigen?", + "cs": "Má být na mapě zobrazeno měřítko?" }, "mappings": [ { @@ -575,7 +589,8 @@ "then": { "en": "Hide the scalebar", "nl": "Verberg de schaalbalk", - "de": "Maßstab ausblenden" + "de": "Maßstab ausblenden", + "cs": "Skrytí panelu měřítka" } } ] @@ -584,7 +599,8 @@ "id": "title-editing", "render": { "en": "

Editing settings

", - "de": "

Einstellungen bearbeiten

" + "de": "

Einstellungen bearbeiten

", + "cs": "

Úprava nastavení

" } }, { @@ -597,7 +613,8 @@ "ca": "Les preguntes amb camps de dades desconeguts haurien d'aparèixer una per una o juntes?", "nl": "Moeten onbeantwoorde vragen om beurt of allemaal samen getoond worden?", "cs": "Mají se otázky pro neznámá datová pole zobrazovat jednotlivě, nebo společně?", - "da": "Skal spørgsmål for ukendte oplysninger vises ét ad gangen eller alle på én gang?" + "da": "Skal spørgsmål for ukendte oplysninger vises ét ad gangen eller alle på én gang?", + "uk": "Чи повинні питання для невідомих полів даних з'являтися по одному або разом?" }, "mappings": [ { @@ -610,7 +627,8 @@ "pt": "Mostrar todas as perguntas na caixa de informações juntas", "nl": "Toon alle onbeantwoorde vragen", "cs": "Zobrazit všechny otázky v infoboxu dohromady", - "da": "Vis alle spørgsmål i infoboksen på én gang" + "da": "Vis alle spørgsmål i infoboksen på én gang", + "uk": "Показати всі питання в інфобокс разом" } }, { @@ -623,7 +641,8 @@ "pt": "Mostrar perguntas uma a uma", "nl": "Toon de vragen één per één", "cs": "Zobrazit otázky jednu po druhé", - "da": "Vis spørgsmål ét ad gangen" + "da": "Vis spørgsmål ét ad gangen", + "uk": "Показувати питання по черзі" } } ] @@ -697,14 +716,16 @@ "id": "add-new-feature", "question": { "en": "How should the menu to add a new feature be opened?", - "de": "Wie soll das Menü zum Hinzufügen eines neuen Objekts geöffnet werden?" + "de": "Wie soll das Menü zum Hinzufügen eines neuen Objekts geöffnet werden?", + "uk": "Як має відкриватися меню для додавання нового об'єкту?" }, "mappings": [ { "if": "mapcomplete-preferences-add-new-mode=button", "then": { "en": "Adding a new feature is done with the button at the bottom left. Clicking the map does nothing", - "de": "Das Hinzufügen eines neuen Objekts erfolgt über die Schaltfläche unten links. Ein Klick auf die Karte bewirkt nichts" + "de": "Das Hinzufügen eines neuen Objekts erfolgt über die Schaltfläche unten links. Ein Klick auf die Karte bewirkt nichts", + "uk": "Додавання нового об'єкта здійснюється за допомогою кнопки внизу ліворуч. Клацання по карті нічого не робить" } }, { @@ -712,28 +733,33 @@ "then": { "en": "When clicking or tapping the map, a marker pops up where a new feature is added", "de": "Wenn Sie auf die Karte klicken oder tippen, wird eine Markierung eingeblendet, an der ein neues Objekt hinzugefügt wird", - "ca": "En fer clic o tocar el mapa, apareix un marcador on s'afegeix un element nou" + "ca": "En fer clic o tocar el mapa, apareix un marcador on s'afegeix un element nou", + "uk": "При натисканні або торканні мапи з'являється маркер, де додається новий об'єкт" } }, { "if": "mapcomplete-preferences-add-new-mode=click_right", "then": { "en": "When right-clicking or long-pressing the map, a marker pops up where a new feature can be added", - "de": "Beim Rechtsklick oder einem langen Druck auf die Karte erscheint eine Markierung, mit der ein neues Objekt hinzugefügt werden kann" + "de": "Beim Rechtsklick oder einem langen Druck auf die Karte erscheint eine Markierung, mit der ein neues Objekt hinzugefügt werden kann", + "uk": "При натисканні правою кнопкою миші або тривалому утриманні мапи з'являється маркер, де можна додати новий об'єкт" } }, { "if": "mapcomplete-preferences-add-new-mode=button_click", "then": { "en": "When clicking or tapping the map, a marker pops up where a new feature can be added. Additionally, a button at the bottom left is shown", - "de": "Beim Klicken oder Tippen auf die Karte wird eine Markierung eingeblendet, an der ein neues Objekt hinzugefügt werden kann. Zusätzlich wird unten links eine Schaltfläche angezeigt" + "de": "Beim Klicken oder Tippen auf die Karte wird eine Markierung eingeblendet, an der ein neues Objekt hinzugefügt werden kann. Zusätzlich wird unten links eine Schaltfläche angezeigt", + "uk": "При натисканні або торканні мапи з'являється маркер, де можна додати новий об'єкт. Крім того, внизу ліворуч відображається кнопка" } }, { "if": "mapcomplete-preferences-add-new-mode=button_click_right", "then": { "en": "When right-clicking or long-pressing the map, a marker pops up where a new feature can be added. Additionally, a button at the bottom left is shown", - "de": "Beim Rechtsklick oder einem langen Druck auf die Karte erscheint eine Markierung, an der ein neues Objekt hinzugefügt werden kann. Zusätzlich wird unten links eine Schaltfläche angezeigt" + "de": "Beim Rechtsklick oder einem langen Druck auf die Karte erscheint eine Markierung, an der ein neues Objekt hinzugefügt werden kann. Zusätzlich wird unten links eine Schaltfläche angezeigt", + "cs": "Po kliknutí pravým tlačítkem myši nebo dlouhém stisknutí mapy se zobrazí značka, kam lze přidat nový prvek. Kromě toho se vlevo dole zobrazí tlačítko", + "uk": "При натисканні правою кнопкою миші або тривалому утриманні на мапі з'являється маркер, куди можна додати новий об'єкт. Крім того, внизу ліворуч відображається кнопка" } } ] @@ -742,7 +768,8 @@ "id": "title-privacy-legal", "render": { "en": "

Privacy and legal

", - "de": "

Datenschutz und Rechtliches

" + "de": "

Datenschutz und Rechtliches

", + "cs": "

Soukromí a právní záležitosti

" } }, { @@ -777,7 +804,8 @@ "then": { "en": "When making changes to OpenStreetMap, do not indicate how far away you were from the changed objects.", "de": "Wenn du Änderungen an OpenStreetMap vornimmst, gibst du nicht an, wie weit du von den geänderten Objekten entfernt warst.", - "nl": "Geef niet aan hoever je je van de gewijzigde objecten bevindt wanneer je wijzigingen maakt met MapComplete." + "nl": "Geef niet aan hoever je je van de gewijzigde objecten bevindt wanneer je wijzigingen maakt met MapComplete.", + "cs": "Při provádění změn v OpenStreetMap neuvádějte, jak daleko jste byli od změněných objektů." } }, { @@ -786,7 +814,8 @@ "then": { "en": "When making changes to OpenStreetMap, roughly indicate how far away you were from the changed objects. This helps other contributors to understand how you made the change", "de": "Gebe bei Änderungen an OpenStreetMap an, wie weit du ungefähr von den geänderten Objekten entfernt warst. Das hilft anderen Mitwirkenden zu verstehen, wie du die Änderung vorgenommen hast", - "nl": "Geef aan hoever je je ongeveer bevindt ten opzichte van objecten die je wijzigt in OpenStreetMap. Dit helpt andere bijdagers te begrijpen welke wijzigingen je waarom maakt." + "nl": "Geef aan hoever je je ongeveer bevindt ten opzichte van objecten die je wijzigt in OpenStreetMap. Dit helpt andere bijdagers te begrijpen welke wijzigingen je waarom maakt.", + "cs": "Při provádění změn v OpenStreetMap zhruba uveďte, jak daleko jste byli od změněných objektů. To pomůže ostatním přispěvatelům pochopit, jak jste změnu provedli" } } ] @@ -876,7 +905,8 @@ "alsoShowIf": "mapcomplete-preference-theme-history=", "then": { "en": "Save the visited thematic maps and sync them via openstreetmap.org. OpenStreetMap and all apps you use can see this history", - "de": "Besuchte Themenkarten speichern und über opentreetmap.org synchronisieren. OpenStreetMap und alle verwendeten Programme können diesen Verlauf sehen" + "de": "Besuchte Themenkarten speichern und über opentreetmap.org synchronisieren. OpenStreetMap und alle verwendeten Programme können diesen Verlauf sehen", + "cs": "Uložit navštívené tematické mapy a synchronizovat je prostřednictvím openstreetmap.org. OpenStreetMap a všechny aplikace, které používáte, mohou tuto historii vidět" } }, { diff --git a/assets/layers/veterinary/veterinary.json b/assets/layers/veterinary/veterinary.json index 0da22a88d..635ba0fab 100644 --- a/assets/layers/veterinary/veterinary.json +++ b/assets/layers/veterinary/veterinary.json @@ -9,7 +9,8 @@ "fr": "vétérinaire", "ca": "Veterinari", "cs": "veterinář", - "pl": "weterynaryjny" + "pl": "weterynaryjny", + "ru": "ветеринария" }, "description": "A layer showing veterinarians", "source": { diff --git a/assets/layers/waste_basket/waste_basket.json b/assets/layers/waste_basket/waste_basket.json index 8d4a11277..581ba25f6 100644 --- a/assets/layers/waste_basket/waste_basket.json +++ b/assets/layers/waste_basket/waste_basket.json @@ -133,7 +133,8 @@ "da": "En affaldskurv til almindeligt affald", "fr": "Une poubelle pour tout type d'ordures", "ca": "Una paperera per a residus generals", - "cs": "Odpadkový koš na běžný odpad" + "cs": "Odpadkový koš na běžný odpad", + "ru": "Корзина для общих отходов" } }, { @@ -147,7 +148,8 @@ "da": "En affaldskurv til hundeekskrementer", "fr": "Une poubelle pour déjections canines", "ca": "Una paperera per a excrements de gossos", - "cs": "Odpadkový koš na psí exkrementy" + "cs": "Odpadkový koš na psí exkrementy", + "ru": "Корзина для собачьих экскрементов" } }, { @@ -161,7 +163,8 @@ "da": "En affaldskurv til cigaretter", "fr": "Une poubelle pour mégots", "ca": "Una paperera per a cigarrets", - "cs": "Odpadkový koš na cigarety" + "cs": "Odpadkový koš na cigarety", + "ru": "Корзина для сигарет" } }, { @@ -175,7 +178,8 @@ "da": "En affaldskurv til stoffer", "ca": "Una paperera per a medicaments", "fr": "Une poubelle pour médicaments", - "cs": "Odpadkový koš na léky" + "cs": "Odpadkový koš na léky", + "ru": "Корзина для наркотиков" } }, { @@ -189,7 +193,8 @@ "da": "En affaldskurv til nåle og andre skarpe genstande", "fr": "Une poubelle pour aiguilles et autres objets tranchants", "ca": "Una paperera per a agulles i altres objectes punxants", - "cs": "Odpadkový koš na jehly a jiné ostré předměty" + "cs": "Odpadkový koš na jehly a jiné ostré předměty", + "ru": "Корзина для иголок и других острых предметов" } }, { @@ -203,7 +208,8 @@ "da": "En affaldskurv til plast", "fr": "Une poubelle pour plastiques", "ca": "Una paperera per a plàstic", - "cs": "Odpadkový koš na plasty" + "cs": "Odpadkový koš na plasty", + "ru": "Корзина для пластика" } }, { @@ -211,7 +217,8 @@ "then": { "en": "A waste basket for plastic packaging, metal packaging and drink cartons (PMD)", "nl": "Een vuilnisbak voor plastic verpakkingen, metalen verpakkingen en drankpakken (PMD)", - "de": "Ein Papierkorb für Kunststoffverpackungen, Metallverpackungen und Getränkekartons (Tetrapak)" + "de": "Ein Papierkorb für Kunststoffverpackungen, Metallverpackungen und Getränkekartons (Tetrapak)", + "ru": "Корзина для пластиковой упаковки, металлической упаковки и картонной упаковки из-под напитков (PMD)" } }, { @@ -225,7 +232,8 @@ "da": "En affaldskurv til papir", "fr": "Une poubelle pour papier", "ca": "Una paperera per a paper", - "cs": "Odpadový koš na papír" + "cs": "Odpadový koš na papír", + "ru": "Корзина для бумаг" } } ] @@ -438,7 +446,8 @@ "da": "Affaldskurv med dispenser til poser til (hunde)ekskrementer", "ca": "Papereres amb dispensador de bosses d'excrements (per a gossos)", "fr": "Poubelle avec distributeur de sacs pour ramasser les déjections canines", - "cs": "Odpadkový koš se zásobníkem na sáčky na (psí) exkrementy" + "cs": "Odpadkový koš se zásobníkem na sáčky na (psí) exkrementy", + "ru": "Корзина для мусора с дозатором для пакетов (собачьих) экскрементов" }, "osmTags": "vending=dog_excrement_bag" } diff --git a/assets/themes/advertising/advertising.json b/assets/themes/advertising/advertising.json index 979dc9448..840978c9a 100644 --- a/assets/themes/advertising/advertising.json +++ b/assets/themes/advertising/advertising.json @@ -13,7 +13,9 @@ "pl": "Reklamy", "it": "Pubblicità", "da": "Reklamer", - "zh_Hans": "广告" + "zh_Hans": "广告", + "ru": "Реклама", + "uk": "Реклама" }, "description": { "ca": "Alguna vegada t'has preguntat quanta publictat hi ha als nostres carrers i carreteres? Amb aquest mapa podràs trobar i afegir informació de tots els elements publictaris que t'hi trobes pel carrer", @@ -29,7 +31,8 @@ "pl": "Czy zastanawiałeś się kiedyś, ile reklam jest na naszych ulicach i drogach? Dzięki tej mapie możesz znaleźć i dodać informacje o wszystkich funkcjach reklamowych, które możesz znaleźć na ulicy", "pt": "Já se perguntou quantas propagandas existem nas nossas ruas e estradas? Com este mapa pode encontrar e adicionar informações sobre todos os recursos de publicidade que pode encontrar na rua", "it": "Vi siete mai chiesti quante pubblicità ci sono nelle nostre strade e strade? Con questa mappa è possibile trovare e aggiungere informazioni su tutte le caratteristiche pubblicitarie che si possono trovare sulla strada", - "zh_Hans": "你是否曾经想过我们的街道和道路上有多少广告?通过这张地图,你可以查找并添加有关街道上所有广告特征的信息" + "zh_Hans": "你是否曾经想过我们的街道和道路上有多少广告?通过这张地图,你可以查找并添加有关街道上所有广告特征的信息", + "uk": "Ви коли-небудь замислювалися над тим, скільки реклами знаходиться на наших вулицях і дорогах? За допомогою цієї карти ви можете знайти та додати інформацію про всі рекламні об'єкти, які ви можете знайти на вулиці" }, "shortDescription": { "ca": "On puc trobar elements publicitaris?", @@ -42,7 +45,8 @@ "zh_Hant": "我能夠在那裡找到廣告物件?", "eu": "Non aurki ditzaket publizitate ezaugarriak?", "pl": "Gdzie mogę znaleźć obiekty reklamowe?", - "zh_Hans": "我可以在哪里找到广告功能?" + "zh_Hans": "我可以在哪里找到广告功能?", + "uk": "Де я можу знайти рекламні об'єкти?" }, "icon": "./assets/themes/advertising/icon.svg", "credits": [ diff --git a/assets/themes/aed/aed.json b/assets/themes/aed/aed.json index ba4f7f76b..f7775f7b1 100644 --- a/assets/themes/aed/aed.json +++ b/assets/themes/aed/aed.json @@ -23,7 +23,8 @@ "da": "Hjertestartere", "cs": "Defibrilátory", "zgh": "ⴽⵛⵎ ⵖⵔ ⵜⴽⴰⵕⴹⴰ ⵏ AED", - "eu": "Desfibriladoreak" + "eu": "Desfibriladoreak", + "uk": "Дефібрилятори" }, "description": { "en": "On this map, one can find and mark nearby defibrillators", @@ -49,7 +50,8 @@ "cs": "Na této mapě lze najít a označit defibrilátory v okolí", "zgh": "ⴳ ⵜⴽⴰⵕⴹⴰ ⴰⴷ, ⵉⵣⵎⵔⵏ ⵓⴼⴳⴰⵏ ⴰⴷ ⵢⴰⴼ ⵓⵎⵍⴰⵏ ⵅⴼ ⵡⴰⵍⵍⴰⵍⵏ ⵏ ⵜⵓⴽⴽⵙⴰ ⵏ ⵜⵔⴳⴰⴳⴰⵢⵜ", "eu": "Mapa honetan, hurbileko desfibriladoreak aurkitu eta marka daitezke", - "pt": "Neste mapa, pode-se encontrar e marcar desfibriladores próximos" + "pt": "Neste mapa, pode-se encontrar e marcar desfibriladores próximos", + "uk": "На цій карті можна знайти та позначити найближчі дефібрилятори" }, "icon": "./assets/themes/aed/aed.svg", "startZoom": 12, diff --git a/assets/themes/artwork/artwork.json b/assets/themes/artwork/artwork.json index 3188a1bdd..03b0e777b 100644 --- a/assets/themes/artwork/artwork.json +++ b/assets/themes/artwork/artwork.json @@ -22,7 +22,8 @@ "pa_PK": "آزاد کلاکاری نقشہ", "zgh": "ⵕⵥⵎ ⵜⴰⴽⴰⵕⴹⴰ ⵏ ⵜⵡⵓⵔⵉ ⵜⴰⵏⴰⵥⵓⵕⵜ", "es": "Obras de arte", - "eu": "Artelanak" + "eu": "Artelanak", + "uk": "Витвір мистецтва" }, "description": { "en": "An open map of statues, busts, graffitis and other artwork all over the world", @@ -46,7 +47,8 @@ "zgh": "ⵢⴰⵜ ⵜⴽⴰⵕⴹⴰ ⵉⵕⵥⵎⵏ ⵅⴼ ⵉⵙⴼⵔⵉⵙⵏ, ⵉⵖⵔⴰⵙⵏ ⴷ ⵜⵡⵓⵔⵉⵡⵉⵏ ⵜⵉⵏⴰⵥⵓⵕⵉⵏ ⵢⴰⴹⵏⵉⵏ ⴳ ⵓⵎⴰⴹⴰⵍ", "eu": "Estatuen, bustoen, graffitien eta mundu osoko beste artelan batzuen mapa irekia", "pt_BR": "Um mapa aberto de estátuas, bustos, grafites e outras obras de arte em todo o mundo", - "pt": "Um mapa aberto de estátuas, bustos, grafites e outras obras de arte em todo o mundo" + "pt": "Um mapa aberto de estátuas, bustos, grafites e outras obras de arte em todo o mundo", + "uk": "Відкрита карта статуй, бюстів, графіті та інших творів мистецтва по всьому світу" }, "icon": "./assets/themes/artwork/artwork.svg", "startZoom": 12, diff --git a/assets/themes/atm/atm.json b/assets/themes/atm/atm.json index 9b82fae42..7b4695fcb 100644 --- a/assets/themes/atm/atm.json +++ b/assets/themes/atm/atm.json @@ -16,7 +16,8 @@ "it": "Sportelli bancomat", "pl": "Bankomaty", "da": "Hæveautomater", - "zh_Hans": "自动取款机" + "zh_Hans": "自动取款机", + "uk": "Банкомати" }, "description": { "en": "This map shows ATMs to withdraw or deposit money", @@ -33,7 +34,8 @@ "it": "Questa mappa mostra gli sportelli Bancomat per ritirare o depositare del denaro", "pl": "Ta mapa pokazuje bankomaty, w których można wypłacać lub wpłacać pieniądze", "da": "Dette kort viser hæveautomater, hvor du kan hæve og indsætte kontanter", - "zh_Hans": "这张地图显示了可以取款或存款的自动取款机" + "zh_Hans": "这张地图显示了可以取款或存款的自动取款机", + "uk": "На цій карті показані банкомати, де можна зняти або поповнити рахунок" }, "icon": "./assets/themes/atm/logo.svg", "layers": [ @@ -102,7 +104,8 @@ "pl": "Importuj ten bankomat", "cs": "Importovat tento bankomat", "da": "Importer denne hæveautomat", - "zh_Hans": "导入这个ATM" + "zh_Hans": "导入这个ATM", + "uk": "Імпортувати цей банкомат" }, "icon": "./assets/svg/addSmall.svg" } @@ -120,7 +123,8 @@ "pl": "OpenStreetMap wie o bankomacie oddalonym o {_closest_osm_poi_distance} metry. ", "nl": "OpenStreetMap kent een geldautomaat die {_closest_osm_poi_distance} meter weg is ", "da": "OpenStreetMap kender en hæveautomatet, som ligger {_closest_osm_poi_distance} meter væk. ", - "zh_Hans": "OpenStreetMap 知道有一个自动取款机,它距离你 {_closest_osm_poi_distance} 米。 " + "zh_Hans": "OpenStreetMap 知道有一个自动取款机,它距离你 {_closest_osm_poi_distance} 米。 ", + "uk": "OpenStreetMap знає про банкомат, що знаходиться за {_closest_osm_poi_distance} метрів від нього. " } }, { @@ -142,7 +146,8 @@ "cs": "Přidání všech navrhovaných značek do nejbližšího bankomatu", "nl": "Voeg alle gesuggereerde tags toe aan de dichtstbijzijnde geldautomaat", "da": "Tilføj alle foreslåede tags til den nærmeste hæveautomat", - "zh_Hans": "将所有建议的标签添加到距离最近的自动取款机" + "zh_Hans": "将所有建议的标签添加到距离最近的自动取款机", + "uk": "Додайте всі запропоновані теги до найближчого банкомату" }, "image": "./assets/svg/addSmall.svg", "maproulette_id": "mr_taskId" diff --git a/assets/themes/bag/bag.json b/assets/themes/bag/bag.json index 274f86d13..0af44dc15 100644 --- a/assets/themes/bag/bag.json +++ b/assets/themes/bag/bag.json @@ -11,7 +11,8 @@ "cs": "Pomocník pro import BAG", "zh_Hant": "BAG 匯入助手", "pl": "Pomocnik importowy BAG", - "zh_Hans": "BAG 导入助手" + "zh_Hans": "BAG 导入助手", + "uk": "Помічник з імпорту BAG" }, "description": { "nl": "Dit thema helpt het importeren van BAG data", @@ -24,7 +25,8 @@ "es": "Este tema ayuda a importar datos de BAG", "eu": "Gai honek BAGeko datuak inportatzen laguntzen du", "pl": "Motyw ten pomaga w importowaniu danych z BAG", - "zh_Hans": "这个主题帮助导入来自BAG的数据" + "zh_Hans": "这个主题帮助导入来自BAG的数据", + "uk": "Ця тема допомагає імпортувати дані з BAG" }, "shortDescription": { "nl": "BAG import helper tool", @@ -36,7 +38,8 @@ "cs": "Pomocný nástroj pro import BAG", "eu": "BAGak inportatzen laguntzeko tresna", "pl": "Narzędzie wspomagające import BAG", - "zh_Hans": "BAG 导入辅助工具" + "zh_Hans": "BAG 导入辅助工具", + "uk": "Допоміжний інструмент для імпорту BAG" }, "icon": "./assets/themes/bag/logo.svg", "startZoom": 9, @@ -74,7 +77,8 @@ "cs": "Reference v BAG je {ref:bag}", "pl": "Numer referencyjny w BAG to {ref:bag}", "zh_Hans": "在 BAG 中的参考是 {ref:bag}", - "fil": "Ang sanggunian sa BAG ay {ref:bag}" + "fil": "Ang sanggunian sa BAG ay {ref:bag}", + "uk": "Посилання у BAG має вигляд {ref:bag}" }, "mappings": [ { @@ -90,7 +94,8 @@ "es": "Este edificio no tiene referencia en el BAG", "pl": "Budynek ten nie ma odniesienia w BAG", "zh_Hans": "这栋建筑在BAG中没有参考信息", - "fil": "Walang sanggunian ang gusaling ito sa BAG" + "fil": "Walang sanggunian ang gusaling ito sa BAG", + "uk": "Ця будівля не має жодної згадки в Базі даних" } } ] @@ -208,7 +213,8 @@ "cs": "Budovy z registru BAG", "pl": "Budynki z rejestru BAG", "zh_Hans": "BAG 注册中的建筑物", - "fil": "Mga gusali mula sa rehistro ng BAG" + "fil": "Mga gusali mula sa rehistro ng BAG", + "uk": "Будівлі з реєстру BAG" }, "source": { "geoJson": "https://service.pdok.nl/lv/bag/wfs/v2_0?request=GetFeature&service=WFS&version=2.0.0&outputFormat=application%2Fjson%3B%20subtype%3Dgeojson&typeName=bag%3Apand&bbox={x_min}%2C{y_min}%2C{x_max}%2C{y_max}%2CCRS84&srsName=EPSG%3A4326", @@ -264,7 +270,8 @@ "nb_NO": "Har ikke regnet ut riktige verdier enda. Gjenoppfrisk siden.", "es": "Aún no se han calculado los valores correctos. Actualice esta página", "pl": "Jeszcze nie obliczono poprawnych wartości. Odśwież tę stronę", - "zh_Hans": "尚未计算出正确的值。请刷新此页面" + "zh_Hans": "尚未计算出正确的值。请刷新此页面", + "uk": "Ще не розрахували правильні значення. Оновіть цю сторінку" } }, { @@ -295,7 +302,8 @@ "cs": "Reference v BAG je {_bag_obj:ref:bag}", "pl": "Odniesienie w BAG to {_bag_obj:ref:bag}", "zh_Hans": "在 BAG 中的参考文献是 {_bag_obj:ref:bag}", - "fil": "Ang sanggunian sa BAG ay {_bag_obj:ref:bag}" + "fil": "Ang sanggunian sa BAG ay {_bag_obj:ref:bag}", + "uk": "Посилання у BAG має вигляд {_bag_obj:ref:bag}" } }, { @@ -313,7 +321,8 @@ "pl": "Ten budynek zbudowano w {_bag_obj:start_date}", "pt": "Esta construção é de {_bag_obj:start_date}", "zh_Hans": "这座建筑建于 {_bag_obj:start_date}", - "fil": "Ang gusaling ito ay itinayo noong {_bag_obj:start_date}" + "fil": "Ang gusaling ito ay itinayo noong {_bag_obj:start_date}", + "uk": "Ця будівля була побудована у {_bag_obj:start_date}" }, "mappings": [ { @@ -329,7 +338,8 @@ "es": "Este edificio se empezó a construir en {_bag_obj:start_date}", "pl": "Budynek został zbudowany w {_bag_obj:start_date}", "zh_Hans": "该建筑始建于 {_bag_obj:start_date}", - "fil": "Sinimulan ang gusali noong {_bag_obj:start_date}" + "fil": "Sinimulan ang gusali noong {_bag_obj:start_date}", + "uk": "Будівництво було розпочато у {_bag_obj:start_date}" } } ] @@ -347,7 +357,8 @@ "es": "El edificio es de tipo {_bag_obj:building}", "pl": "Rodzaj budynku to {_bag_obj:building}", "zh_Hans": "建筑类型是 {_bag_obj:building}", - "fil": "Ang uri ng gusali ay {_bag_obj:building}" + "fil": "Ang uri ng gusali ay {_bag_obj:building}", + "uk": "Тип будівлі - {_bag_obj:building}" }, "mappings": [ { @@ -362,7 +373,8 @@ "es": "El tipo de edificio será un {_bag_obj:construction}", "pl": "Budynek będzie o typie {_bag_obj:construction}", "zh_Hans": "建筑类型将是 {_bag_obj:construction}", - "fil": "Ang uri ng gusali ay magiging {_bag_obj:construction}" + "fil": "Ang uri ng gusali ay magiging {_bag_obj:construction}", + "uk": "Типом будівлі буде {_bag_obj:construction}" } } ] diff --git a/assets/themes/benches/benches.json b/assets/themes/benches/benches.json index f3e45b8d1..e517e748f 100644 --- a/assets/themes/benches/benches.json +++ b/assets/themes/benches/benches.json @@ -22,7 +22,8 @@ "eu": "Eserlekuak", "pl": "Ławki", "pt": "Bancadas", - "fil": "Mga upuan" + "fil": "Mga upuan", + "uk": "Лавки" }, "description": { "en": "This map shows all benches that are recorded in OpenStreetMap: Individual benches, and benches belonging to public transport stops or shelters.", @@ -41,7 +42,8 @@ "cs": "Tato mapa zobrazuje všechny lavičky, které jsou zaznamenány v OpenStreetMap: samostatné lavičky a lavičky patřící k zastávkám veřejné dopravy nebo přístřeškům.", "eu": "OpenStreetMap-en erregistratzen diren banku guztiak erakusten ditu mapa honek: garraio publikoko geralekuetako edo babeslekuetako banakako bankuak eta bankuak.", "pl": "Mapa ta pokazuje wszystkie ławki zarejestrowane w OpenStreetMap: ławki indywidualne oraz ławki należące do przystanków komunikacji miejskiej lub wiat.", - "zh_Hans": "这张地图显示了所有记录在 OpenStreetMap 中的长椅:包括独立长椅和属于公共交通站点或候车亭的长椅。" + "zh_Hans": "这张地图显示了所有记录在 OpenStreetMap 中的长椅:包括独立长椅和属于公共交通站点或候车亭的长椅。", + "uk": "На цій карті показані всі лавки, які зафіксовані в OpenStreetMap: Окремі лавки та лавки, що належать до зупинок громадського транспорту або притулків." }, "shortDescription": { "en": "A map of benches", @@ -64,7 +66,8 @@ "eu": "Eserleku mapa bat", "pl": "Mapa ławek", "pt": "Um mapa de bancadas", - "fil": "Mapa ng upuan" + "fil": "Mapa ng upuan", + "uk": "Карта лавок" }, "icon": "./assets/themes/benches/bench_poi.svg", "credits": [ diff --git a/assets/themes/bicycle_parkings/bicycle_parkings.json b/assets/themes/bicycle_parkings/bicycle_parkings.json index 0368d82c4..d2be5e3e5 100644 --- a/assets/themes/bicycle_parkings/bicycle_parkings.json +++ b/assets/themes/bicycle_parkings/bicycle_parkings.json @@ -11,7 +11,9 @@ "zh_Hans": "自行车停车场", "it": "Parcheggi per biciclette", "fil": "Mga paradahan ng bisikleta", - "cs": "Parkování jízdních kol" + "cs": "Parkování jízdních kol", + "ru": "Велопарковки", + "uk": "Велопарковки" }, "description": { "en": "A map showing all types of bicycle parkings", @@ -21,7 +23,8 @@ "it": "Una mappa che mostra tutti i tipi di parcheggi per biciclette", "fil": "Mapa na nagpapakita ng lahat ng uri ng paradahan ng bisikleta", "ca": "Un mapa que mostra tots els tipus d'aparcaments de bicicletes", - "cs": "Mapa všech typů parkovišť pro jízdní kola" + "cs": "Mapa všech typů parkovišť pro jízdní kola", + "uk": "Карта, що показує всі типи велосипедних парковок" }, "icon": "./assets/themes/bicycle_parkings/logo.svg", "layers": [ diff --git a/assets/themes/bicycle_rental/bicycle_rental.json b/assets/themes/bicycle_rental/bicycle_rental.json index a567c8d79..308bb11e9 100644 --- a/assets/themes/bicycle_rental/bicycle_rental.json +++ b/assets/themes/bicycle_rental/bicycle_rental.json @@ -16,7 +16,9 @@ "eu": "Bizikleta alokairua", "pl": "Wypożyczanie rowerów", "zh_Hans": "自行车租赁", - "it": "Noleggio biciclette" + "it": "Noleggio biciclette", + "ru": "Прокат велосипедов", + "uk": "Прокат велосипедів" }, "description": { "en": "On this map, you'll find the many bicycle rental stations as they are known by OpenStreetMap", @@ -31,7 +33,8 @@ "eu": "Mapa honetan aurkituko dituzu bizikletak alokatzeko OpenStreetMap-ek ezagutzen dituen estazio ugari", "it": "In questa mappa trovi i luoghi conosciuti da OpenStreetMap dove puoi noleggiare delle biciclette", "pl": "Na tej mapie znajdziesz wiele stacji wynajmu rowerów, znanych w OpenStreetMap", - "zh_Hans": "在这张地图上,你可以找到许多由 OpenStreetMap 记录的自行车租赁站点" + "zh_Hans": "在这张地图上,你可以找到许多由 OpenStreetMap 记录的自行车租赁站点", + "uk": "На цій карті ви знайдете багато станцій прокату велосипедів, що є на OpenStreetMap" }, "shortDescription": { "en": "A map with bicycle rental stations and bicycle rental shops", @@ -47,7 +50,8 @@ "eu": "Bizikletak alokatzeko estazioen eta bizikletak alokatzeko denden mapa", "pl": "Mapa ze stacjami wypożyczania rowerów i wypożyczalniami rowerów", "zh_Hans": "一张包含自行车租赁站点和自行车租赁商店的地图", - "it": "Una mappa con le stazioni e i negozi per il noleggio delle biciclette" + "it": "Una mappa con le stazioni e i negozi per il noleggio delle biciclette", + "uk": "Карта зі станціями та пунктами прокату велосипедів" }, "icon": "./assets/themes/bicycle_rental/logo.svg", "layers": [ diff --git a/assets/themes/bicyclelib/bicyclelib.json b/assets/themes/bicyclelib/bicyclelib.json index 7184d3612..bb9d6a212 100644 --- a/assets/themes/bicyclelib/bicyclelib.json +++ b/assets/themes/bicyclelib/bicyclelib.json @@ -21,7 +21,8 @@ "es": "Bibliotecas de bicicletas", "eu": "Bizikleta liburutegia", "pt": "Bibliotecas de bicicletas", - "zh_Hans": "自行车图书馆" + "zh_Hans": "自行车图书馆", + "uk": "Велобібліотеки" }, "description": { "nl": "Een fietsbibliotheek is een plaats waar men een fiets kan lenen, vaak voor een klein bedrag per jaar. Een typisch voorbeeld zijn kinderfietsbibliotheken, waar men een fiets op maat van het kind kan lenen. Is het kind de fiets ontgroeid, dan kan het te kleine fietsje omgeruild worden voor een grotere.", @@ -40,7 +41,8 @@ "es": "Una biblioteca de bicicletas es un lugar donde se prestan bicicletas, a menudo por una pequeña cuota anual. Un caso de uso notable son las bibliotecas de bicicletas para niños, que les permiten cambiar por una bicicleta más grande cuando les queda pequeña", "eu": "Bizikletak uzteko lekua da bizikleta-liburutegia, askotan urteko kuota txiki baten truke. Kasu aipagarri bat haurrentzako bizikleta-liburutegiak dira, egungo bizikleta gainditu dutenean bizikleta handiago baterako aldatzeko aukera ematen dietenak", "pl": "Biblioteka rowerowa to miejsce, w którym można wypożyczyć rowery, często za niewielką opłatą roczną. Godnym uwagi przypadkiem zastosowania są biblioteki rowerowe dla dzieci, które pozwalają im zmienić rower na większy, gdy wyrosną z obecnego roweru", - "zh_Hans": "自行车图书馆是一个可以借用自行车的地方,通常需要支付小额的年度费用。一个显著的使用场景是儿童自行车图书馆,这允许孩子们在长大后更换成更大的自行车" + "zh_Hans": "自行车图书馆是一个可以借用自行车的地方,通常需要支付小额的年度费用。一个显著的使用场景是儿童自行车图书馆,这允许孩子们在长大后更换成更大的自行车", + "uk": "Велобібліотека - це місце, де можна взяти велосипед напрокат, часто за невелику річну плату. Особливий випадок використання - велосипедні бібліотеки для дітей, які дозволяють їм пересісти на більший велосипед, коли вони виростуть зі свого нинішнього" }, "icon": "./assets/themes/bicyclelib/logo.svg", "layers": [ diff --git a/assets/themes/binoculars/binoculars.json b/assets/themes/binoculars/binoculars.json index de754ea26..95e5d7422 100644 --- a/assets/themes/binoculars/binoculars.json +++ b/assets/themes/binoculars/binoculars.json @@ -16,7 +16,9 @@ "cs": "Dalekohledy", "eu": "Binokularrak", "pl": "Lornetki", - "zh_Hans": "望远镜" + "zh_Hans": "望远镜", + "ru": "Бинокли", + "uk": "Біноклі" }, "description": { "en": "A map with binoculars fixed in place with a pole. It can typically be found on touristic locations, viewpoints, on top of panoramic towers or occasionally on a nature reserve.", @@ -33,7 +35,8 @@ "cs": "Mapa s dalekohledem upevněným na místě pomocí tyče. Obvykle se nachází na turistických místech, rozhlednách, vrcholech panoramatických věží nebo příležitostně v přírodních rezervacích.", "eu": "Zutoin batean prismatiko finkoak dituen mapa. Leku turistikoetan, begiratokietan, dorre panoramikoen gainean edo, batzuetan, erreserba natural batean egoten da.", "pl": "Mapa z lornetkami zamocowanymi na słupku. Zwykle można je odnaleźć w lokalizacjach turystycznych, punktach widokowych, na szczytach wież panoramicznych lub czasami w rezerwacie przyrody.", - "zh_Hans": "一张显示固定在杆子上的望远镜的地图。这种望远镜通常可以在旅游景点、观景点、全景塔顶部或偶尔在自然保护区找到。" + "zh_Hans": "一张显示固定在杆子上的望远镜的地图。这种望远镜通常可以在旅游景点、观景点、全景塔顶部或偶尔在自然保护区找到。", + "uk": "Карта з біноклем, закріплена на місці за допомогою жердини. Зазвичай її можна знайти в туристичних місцях, на оглядових майданчиках, на вершинах панорамних веж або іноді в природних заповідниках." }, "shortDescription": { "en": "A map with fixed binoculars", @@ -50,7 +53,8 @@ "cs": "Mapa s pevnými dalekohledy", "eu": "Prismatiko finkoak dituen mapa", "pl": "Mapa ze stałymi lornetkami", - "zh_Hans": "一张显示固定望远镜的地图" + "zh_Hans": "一张显示固定望远镜的地图", + "uk": "Карта з фіксованими біноклями" }, "icon": "./assets/layers/binocular/telescope.svg", "layers": [ diff --git a/assets/themes/blind_osm/blind_osm.json b/assets/themes/blind_osm/blind_osm.json index 859aa5dec..5c0393f3e 100644 --- a/assets/themes/blind_osm/blind_osm.json +++ b/assets/themes/blind_osm/blind_osm.json @@ -15,7 +15,8 @@ "pl": "OSM dla niewidomych", "da": "OSM for blinde", "zh_Hans": "为盲人设计的OSM", - "fil": "OSM para sa mga bulag" + "fil": "OSM para sa mga bulag", + "uk": "OSM для незрячих" }, "description": { "en": "Help to map features relevant for the blind", @@ -29,7 +30,8 @@ "eu": "Itsuentzako elementu garrantzitsuak kartografiatzeko laguntza", "it": "Aiuta a mappare le caratteristiche importanti per i non vedenti", "pl": "Pomóż umieszczać na mapie obiekty ważne dla niewidomych", - "zh_Hans": "帮助绘制与盲人相关的设施" + "zh_Hans": "帮助绘制与盲人相关的设施", + "uk": "Допоможіть нанести на карту об'єкти, важливі для незрячих" }, "icon": "./assets/themes/blind_osm/Blindicon.svg", "startZoom": 20, diff --git a/assets/themes/bookcases/bookcases.json b/assets/themes/bookcases/bookcases.json index d2a923292..728703a7f 100644 --- a/assets/themes/bookcases/bookcases.json +++ b/assets/themes/bookcases/bookcases.json @@ -19,7 +19,8 @@ "eu": "Apalategi publikoak", "pl": "Publiczne regały na książki", "da": "Bogbytteskabe", - "zh_Hans": "公共书柜" + "zh_Hans": "公共书柜", + "uk": "Публічні книжкові шафи" }, "description": { "en": "A public bookcase is a small streetside cabinet, box, old phone booth or some other objects where books are stored. Everyone can place or take a book. This map aims to collect all these bookcases.", @@ -37,7 +38,8 @@ "cs": "Veřejná knihovna je malá pouliční skříňka, krabice, stará telefonní budka nebo jiný předmět, ve kterém jsou uloženy knihy. Kdokoliv do ní může umístit, nebo si z ní vzít knihu. Cílem této mapy je shromáždit všechny tyto knihovny.", "eu": "Kale-liburutegi publiko bat kale-armairu txiki bat da, kaxa, telefono-kabina zaharra edo liburuak gordetzeko beste objektu batzuk. Guztiek jar edo har dezakete liburu bat. Koaderno horiek guztiak biltzea da mapa honen helburua.", "pl": "Publiczny regał na książki to mała przyuliczna szafka, pudełko, stara budka telefoniczna lub inne przedmioty, w których przechowywane są książki. Każdy może w nich zostawić lub zabrać książkę. Celem tej mapy jest zebranie wszystkich tych regałów.", - "zh_Hans": "公共书柜是一个小型街边橱柜、盒子、旧电话亭或其他储存书籍的物品。任何人都可以放置或取走一本书。这张地图旨在收集所有这些书柜。" + "zh_Hans": "公共书柜是一个小型街边橱柜、盒子、旧电话亭或其他储存书籍的物品。任何人都可以放置或取走一本书。这张地图旨在收集所有这些书柜。", + "uk": "Публічна книжкова шафа - це невелика вулична шафа, ящик, стара телефонна будка або інший об'єкт, де зберігаються книги. Будь-хто може покласти або взяти книгу. Ця мапа має на меті зібрати всі ці книжкові шафи." }, "icon": "./assets/themes/bookcases/bookcase.svg", "layers": [ diff --git a/assets/themes/cafes_and_pubs/cafes_and_pubs.json b/assets/themes/cafes_and_pubs/cafes_and_pubs.json index 46d05775f..5b9e10d5b 100644 --- a/assets/themes/cafes_and_pubs/cafes_and_pubs.json +++ b/assets/themes/cafes_and_pubs/cafes_and_pubs.json @@ -18,7 +18,8 @@ "cs": "Kavárny a hospody", "eu": "Kafetegiak eta pubak", "pl": "Kawiarnie i puby", - "zh_Hans": "咖啡馆和酒吧" + "zh_Hans": "咖啡馆和酒吧", + "uk": "Кафе та паби" }, "description": { "en": "Coffeehouses, pubs and bars", @@ -35,7 +36,8 @@ "zh_Hant": "咖啡廳、俱樂部與酒吧", "eu": "Kafetegiak, pubak eta tabernak", "pl": "Kawiarnie, puby i bary", - "zh_Hans": "咖啡馆、酒吧和酒吧" + "zh_Hans": "咖啡馆、酒吧和酒吧", + "uk": "Кав'ярні, паби та бари" }, "icon": "./assets/layers/cafe_pub/pub.svg", "layers": [ diff --git a/assets/themes/campersite/campersite.json b/assets/themes/campersite/campersite.json index c9749e3b8..8fe316bcb 100644 --- a/assets/themes/campersite/campersite.json +++ b/assets/themes/campersite/campersite.json @@ -17,7 +17,8 @@ "pa_PK": "کیمپ‌سایٹاں", "cs": "Kempovací místa", "eu": "Kanpinak", - "pl": "Miejsca dla kamperów" + "pl": "Miejsca dla kamperów", + "uk": "Кемпінги" }, "description": { "en": "This site collects all official camper stopover places and places where you can dump grey and black water. You can add details about the services provided and the cost. Add pictures and reviews.", @@ -35,7 +36,8 @@ "cs": "Na této stránce jsou shromážděna všechna oficiální místa pro zastavení karavanů a místa, kde můžete vypouštět šedou a černou vodu. Můžete přidat podrobnosti o poskytovaných službách a cenách. Přidávejte fotografie a recenze.", "eu": "Karabanak gelditzeko leku ofizial guztiak eta ur gris eta beltzak botatzeko lekuak biltzen ditu. Emandako zerbitzuei eta kostuari buruzko xehetasunak gehitu ditzakezu. Erantsi argazkiak eta aipamenak.", "pl": "Na tej stronie zebrano wszystkie oficjalne miejsca postoju kamperów oraz miejsca, w których można wylać zanieczyszczoną wodę. Możesz dodać szczegóły dotyczące świadczonych usług i kosztów. Dodaj zdjęcia i recenzje.", - "zh_Hans": "该网站汇总了所有官方的露营车停留点以及可以倾倒灰水和黑水的地点。你可以添加有关提供的服务和费用的详细信息,并且可以上传图片和撰写评论。" + "zh_Hans": "该网站汇总了所有官方的露营车停留点以及可以倾倒灰水和黑水的地点。你可以添加有关提供的服务和费用的详细信息,并且可以上传图片和撰写评论。", + "uk": "На цьому сайті зібрані всі офіційні місця зупинки автокемперів та місця, де можна здати сірі та чорні води. Ви можете додати детальну інформацію про послуги, що надаються, та вартість. Додавайте фотографії та відгуки." }, "shortDescription": { "en": "Find sites to spend the night with your camper", @@ -53,7 +55,8 @@ "ca": "Troba llocs on passar la nit amb la teua caravana", "cs": "Najděte místa, kde můžete strávit noc se svým karavanem", "pl": "Znajdź miejsca, w których możesz spędzić noc w kamperze", - "pt": "Encontre locais para passar a noite com o seu campista" + "pt": "Encontre locais para passar a noite com o seu campista", + "uk": "Знайдіть місця для ночівлі з вашим кемпером" }, "icon": "./assets/themes/campersite/caravan.svg", "socialImage": "./assets/themes/campersite/social_image.jpg", @@ -85,7 +88,8 @@ "ca": "Aquest lloc és operat per {operator}", "cs": "Toto místo je provozováno {operator}", "eu": "Leku hau {operator}k operatzen du", - "pl": "To miejsce jest obsługiwane przez {operator}" + "pl": "To miejsce jest obsługiwane przez {operator}", + "uk": "Цим закладом керує {operator}" }, "question": { "en": "Who operates this place?", @@ -100,7 +104,8 @@ "nb_NO": "Hvem driver dette stedet?", "ca": "Qui opera aquest lloc?", "cs": "Kdo toto místo provozuje?", - "pl": "Kto obsługuje to miejsce?" + "pl": "Kto obsługuje to miejsce?", + "uk": "Хто керує цим місцем?" }, "freeform": { "key": "operator" @@ -121,7 +126,8 @@ "da": "Har dette sted en strømforsyning?", "ca": "Aquest lloc té subministrament elèctric?", "cs": "Má toto místo napájecí zdroj?", - "pl": "Czy to miejsce ma dostęp do prądu?" + "pl": "Czy to miejsce ma dostęp do prądu?", + "uk": "Чи є тут електропостачання?" }, "mappings": [ { @@ -144,7 +150,8 @@ "ca": "Aquest lloc té subministrament elèctric", "cs": "Toto místo má napájecí zdroj", "eu": "Leku honek hornidura elektrikoa du", - "pl": "To miejsce ma dostęp do prądu" + "pl": "To miejsce ma dostęp do prądu", + "uk": "У цьому місці є електропостачання" } }, { @@ -166,7 +173,8 @@ "da": "Dette sted har ikke strømforsyning", "ca": "Aquest lloc no té subministrament elèctric", "cs": "Toto místo nemá napájecí zdroj", - "pl": "To miejsce nie ma dostępu do prądu" + "pl": "To miejsce nie ma dostępu do prądu", + "uk": "Це місце не має електропостачання" } } ] diff --git a/assets/themes/charging_stations/charging_stations.json b/assets/themes/charging_stations/charging_stations.json index 38631084f..36b1c0d4b 100644 --- a/assets/themes/charging_stations/charging_stations.json +++ b/assets/themes/charging_stations/charging_stations.json @@ -17,7 +17,8 @@ "da": "Ladestationer", "pa_PK": "چارج سٹیشن", "cs": "Nabíjecí stanice", - "pl": "Stacje ładowania" + "pl": "Stacje ładowania", + "uk": "Зарядні станції" }, "description": { "en": "On this open map, one can find and mark information about charging stations", @@ -34,7 +35,8 @@ "da": "På dette åbne kort kan man finde og markere oplysninger om ladestandere", "ca": "A aquest mapa, un pot trobar i marcar informació sobre punts de càrrega", "cs": "Na této otevřené mapě lze vyhledávat a označovat informace o nabíjecích stanicích", - "pl": "Na tej otwartej mapie można znaleźć i zaznaczyć informacje o stacjach ładowania" + "pl": "Na tej otwartej mapie można znaleźć i zaznaczyć informacje o stacjach ładowania", + "uk": "На цій відкритій карті можна знайти та позначити інформацію про зарядні станції" }, "shortDescription": { "en": "A worldwide map of charging stations", @@ -52,7 +54,8 @@ "ca": "Un mapa mundial d'estacions de càrrega", "cs": "Celosvětová mapa nabíjecích stanic", "eu": "Karga-estazioen munduko mapa", - "pl": "Światowa mapa stacji ładowania" + "pl": "Światowa mapa stacji ładowania", + "uk": "Карта зарядних станцій по всьому світу" }, "icon": "./assets/themes/charging_stations/logo.svg", "layers": [ diff --git a/assets/themes/circular_economy/circular_economy.json b/assets/themes/circular_economy/circular_economy.json index 35a08d003..77b6cd7dc 100644 --- a/assets/themes/circular_economy/circular_economy.json +++ b/assets/themes/circular_economy/circular_economy.json @@ -5,14 +5,16 @@ "es": "Economía circular", "de": "Kreislaufwirtschaft", "ca": "Economia circular", - "cs": "Cirkulární ekonomika" + "cs": "Cirkulární ekonomika", + "uk": "Переробна економіка" }, "description": { "en": "Various items which help people to share, reuse or recycle.", "es": "Varios elementos que ayudan a la gente a compartir, reutilizar o reciclar.", "de": "Verschiedene Gegenstände, die den Menschen helfen, zu teilen, wiederzuverwenden oder zu recyceln.", "ca": "Varios elements que ajuden a la gent a compartir, reutilitzar o reciclar.", - "cs": "Různé předměty, které pomáhají lidem sdílet, znovu používat nebo recyklovat." + "cs": "Různé předměty, které pomáhají lidem sdílet, znovu používat nebo recyklovat.", + "uk": "Різноманітні предмети, які допомагають людям ділитися, повторно використовувати або переробляти." }, "icon": "./assets/themes/circular_economy/circular.svg", "layers": [ @@ -43,7 +45,8 @@ "es": "Tiendas de segunda mano", "de": "Second-Hand-Läden", "ca": "Tendes de segona mà", - "cs": "Obchody s použitým zbožím" + "cs": "Obchody s použitým zbožím", + "uk": "Магазини секонд-хенду" }, "filter": null, "source": { diff --git a/assets/themes/climbing/climbing.json b/assets/themes/climbing/climbing.json index 012eb1bc4..29fa0b882 100644 --- a/assets/themes/climbing/climbing.json +++ b/assets/themes/climbing/climbing.json @@ -15,7 +15,8 @@ "da": "Åbn klatrekort", "cs": "Lezecké tělocvičny, kluby a místa", "es": "Gimnasios de escalada, clubes y lugares", - "pl": "Siłownie, kluby i miejsca wspinaczkowe" + "pl": "Siłownie, kluby i miejsca wspinaczkowe", + "uk": "Скелелазні тренажерні зали, клуби та місця" }, "description": { "nl": "Op deze kaart vind je verschillende klimgelegenheden, zoals klimzalen, bolderzalen en klimmen in de natuur", @@ -32,7 +33,8 @@ "cs": "Na této mapě najdete nejrůznější možnosti lezení, jako lezecké tělocvičny, boulderingové haly a skály v přírodě.", "ca": "A aquest mapa trobaràs varies oportunitats d'escalada, como gimnasos d'escalada, sales d'escalada en bloc i roques a la natura.", "es": "En este mapa encontrará diversas posibilidades de escalada, como rocódromos, salas de búlder y rocas en la naturaleza.", - "pl": "Na tej mapie znajdziesz różne możliwości wspinaczki, takie jak sale wspinaczkowe, hale do boulderingu i skały w przyrodzie." + "pl": "Na tej mapie znajdziesz różne możliwości wspinaczki, takie jak sale wspinaczkowe, hale do boulderingu i skały w przyrodzie.", + "uk": "На цій карті ви знайдете різні можливості для скелелазіння, такі як скелелазні зали, боулдерингові зали та скелі на природі." }, "descriptionTail": { "nl": "De klimkaart is oorspronkelijk gemaakt door Christian Neumann op kletterspots.de.", @@ -47,7 +49,8 @@ "cs": "Horolezeckou mapu původně vytvořil Christian Neumann. V případě připomínek nebo dotazů ho prosím kontaktujte.

Projekt využívá data projektu OpenStreetMap.

", "es": "El mapa de escalada fue realizado originalmente por Christian Neumann. Por favor, ponte en contacto si tienes comentarios o preguntas.

El proyecto utiliza datos del proyecto OpenStreetMap.

", "ca": "El mapa d'escalada va ser creat originalment per Christian Neumann. Contacteu-vos si teniu comentaris o preguntes.

< p>El projecte utilitza dades del projecte OpenStreetMap.

", - "pl": "Mapa wspinaczkowa została pierwotnie stworzona przez Christiana Neumanna. Jeśli masz uwagi lub pytania, skontaktuj się z nim.

< p>Projekt wykorzystuje dane projektu OpenStreetMap.

" + "pl": "Mapa wspinaczkowa została pierwotnie stworzona przez Christiana Neumanna. Jeśli masz uwagi lub pytania, skontaktuj się z nim.

< p>Projekt wykorzystuje dane projektu OpenStreetMap.

", + "uk": "Карту сходження спочатку склав Крістіан Нойманн. Будь ласка, зв'яжіться, якщо у вас є відгуки чи запитання.

< p>Проект використовує дані проекту OpenStreetMap.

" }, "icon": "./assets/themes/climbing/climbing_icon.svg", "credits": [ @@ -155,7 +158,8 @@ "es": "La característica que lo contiene indica que es de acceso público
{_embedding_feature:access:description}", "ca": "Lal'element que el contéindica que és d'accés públic
{_embedding_feature:access:description}", "cs": "V obsahující funkci je uvedeno, že toto je veřejně dostupné
{_embedding_feature:access:description}", - "pl": "Obiekt zawarty stwierdza, że jest on publicznie dostępny
{_embedding_feature:access:description}" + "pl": "Obiekt zawarty stwierdza, że jest on publicznie dostępny
{_embedding_feature:access:description}", + "uk": "У що містить об'єкт зазначено, що це загальнодоступне
{_embedding_feature:access:description}" } }, { @@ -170,7 +174,8 @@ "es": "Lacaracterística que lo contiene indica que se necesita un permiso para acceder a él
{_embedding_feature:access:description}", "ca": "Lal'element que el conté indica que es necessita un permís per a accedir-hi
{_embedding_feature:access:description}", "cs": "V obsahující funkci je uvedeno, že je k přístupu potřeba povolení
{_embedding_feature:access:description}", - "pl": "Obiekt zawarty stwierdza, że potrzebne jest pozwolenie, aby do niego wejść
{_embedding_feature:access:description}" + "pl": "Obiekt zawarty stwierdza, że potrzebne jest pozwolenie, aby do niego wejść
{_embedding_feature:access:description}", + "uk": "У функції зазначено, що потрібен дозвіл для доступу
{_embedding_feature:access:description}" } }, { @@ -185,7 +190,8 @@ "es": "La característica que lo contiene indica que sólo es accesible para los clientes
{_embedding_feature:access:description}", "cs": "V obsahující funkci je uvedeno, že toto je dostupné pouze zákazníkům
{_embedding_feature:access:description}", "ca": "Lacaracterística que ho conté indica que sols és accessible per als clients
{_embedding_feature:access:description}", - "pl": "Obiekt zawarty stwierdza, że jest on dostępny tylko dla jego klientów
{_embedding_feature:access:description}" + "pl": "Obiekt zawarty stwierdza, że jest on dostępny tylko dla jego klientów
{_embedding_feature:access:description}", + "uk": "У що містить об'єкт зазначено, що вона доступна лише клієнтам
{_embedding_feature:access:description}" } }, { @@ -200,7 +206,8 @@ "es": "La característica que lo contiene indica que sólo es accesible para los socios del club
{_embedding_feature:access:description}", "cs": "V obsahující funkci je uvedeno, že toto je dostupné pouze členům klubu
{_embedding_feature:access:description}", "ca": "Lacaracterística que ho conté indica que sols és accessible per als socis del club
{_embedding_feature:access:description}", - "pl": "Obiekt zawarty stwierdza, że jest on dostępny tylko dla członków klubu
{_embedding_feature:access:description}" + "pl": "Obiekt zawarty stwierdza, że jest on dostępny tylko dla członków klubu
{_embedding_feature:access:description}", + "uk": "У що містить функцію зазначено, що вона доступна лише для членів клубу
{_embedding_feature:access:description}" } }, { @@ -222,7 +229,8 @@ "ca": "Qui pot accedir aquí?", "da": "Hvem kan få adgang her?", "cs": "Kdo sem má přístup?", - "pl": "Kto ma tutaj dostęp?" + "pl": "Kto ma tutaj dostęp?", + "uk": "Хто може сюди потрапити?" }, "mappings": [ { @@ -238,7 +246,8 @@ "da": "Offentligt tilgængelig for alle", "cs": "Veřejně přístupné komukoli", "ca": "Accessible públicament a qualsevol", - "pl": "Publicznie dostępne dla każdego" + "pl": "Publicznie dostępne dla każdego", + "uk": "Загальнодоступний для всіх" } }, { @@ -253,7 +262,8 @@ "da": "Du skal have en tilladelse for at få adgang her", "ca": "Necesites un permís per a accedir ací", "cs": "K přístupu je potřeba povolení", - "pl": "Potrzebujesz pozwolenia, żeby tu wejść" + "pl": "Potrzebujesz pozwolenia, żeby tu wejść", + "uk": "Для доступу сюди потрібен дозвіл" } }, { @@ -270,7 +280,8 @@ "da": "Kun for kunder", "pa_PK": "صرف گاہک", "cs": "Pouze zákazníci", - "pl": "Tylko klienci" + "pl": "Tylko klienci", + "uk": "Тільки клієнти" } }, { @@ -288,7 +299,8 @@ "da": "Kun klubmedlemmer", "pa_PK": "صرف کلب دے میمبر", "cs": "Pouze členové klubu", - "pl": "Tylko członkowie klubu" + "pl": "Tylko członkowie klubu", + "uk": "Тільки члени клубу" } }, { @@ -346,7 +358,8 @@ "cs": "Opravuje tato opravna obuvy horolezecké boty?", "pl": "Czy ten warsztat szewski naprawia buty wspinaczkowe?", "da": "Reparerer denne butik klatresko?", - "it": "Questo negozio ripara scarpe da arrampicata?" + "it": "Questo negozio ripara scarpe da arrampicata?", + "uk": "Чи ремонтує ця майстерня альпіністське взуття?" }, "mappings": [ { @@ -360,7 +373,8 @@ "cs": "Tento obchod opravuje lezeckou obuv", "pl": "Ten warsztat naprawia buty wspinaczkowe", "da": "Denne butik reparerer klatresko", - "it": "Questo negozio ripara scarpe da arrampicata" + "it": "Questo negozio ripara scarpe da arrampicata", + "uk": "У цій майстерні ремонтують альпіністське взуття" } }, { @@ -374,7 +388,8 @@ "cs": "Tento obchod neopravuje lezeckou obuv", "pl": "Ten warsztat nie naprawia butów wspinaczkowych", "da": "Denne butik reparerer ikke klatresko", - "it": "Questo negozio non ripara scarpe da arrampicata" + "it": "Questo negozio non ripara scarpe da arrampicata", + "uk": "Цей магазин не займається ремонтом альпіністського взуття" } } ] @@ -408,7 +423,8 @@ "cs": "Opravuje tato opravna obuvy také lezeckou obuv?", "pl": "Czy ten warsztat obuwniczy naprawia również buty wspinaczkowe?", "da": "Reparerer denne skomager klatresko?", - "it": "Questo negozio ripara scarpe da arrampicata?" + "it": "Questo negozio ripara scarpe da arrampicata?", + "uk": "Чи ремонтує ця майстерня також альпіністське взуття?" }, "mappings": [ { @@ -422,7 +438,8 @@ "cs": "Tento obchod opravuje lezeckou obuv", "pl": "Ten warsztat naprawia buty wspinaczkowe", "da": "Denne butik reparerer klatresko", - "it": "Questo negozio ripara scarpe da arrampicata" + "it": "Questo negozio ripara scarpe da arrampicata", + "uk": "У цій майстерні ремонтують альпіністське взуття" } }, { @@ -436,7 +453,8 @@ "cs": "Tento obchod neopravuje lezeckou obuv", "pl": "Ten warsztat nie naprawia butów wspinaczkowych", "da": "Denne butik reparerer ikke klatresko", - "it": "Questo negozio non ripara scarpe da arrampicata" + "it": "Questo negozio non ripara scarpe da arrampicata", + "uk": "Цей магазин не займається ремонтом альпіністського взуття" } } ] @@ -456,7 +474,8 @@ "cs": "opravna bot", "pl": "warsztat szewski", "da": "en skomager", - "it": "un calzolaio" + "it": "un calzolaio", + "uk": "майстерня по ремонту взуття" } } ] diff --git a/assets/themes/clock/clock.json b/assets/themes/clock/clock.json index 46e473b6e..a00899f4c 100644 --- a/assets/themes/clock/clock.json +++ b/assets/themes/clock/clock.json @@ -11,7 +11,9 @@ "eu": "Erlojuak", "pl": "Zegary", "da": "Ure", - "it": "Orologi" + "it": "Orologi", + "ru": "Часы", + "uk": "Годинники" }, "description": { "en": "Map showing all public clocks", @@ -23,7 +25,8 @@ "fr": "Carte affichant toutes les horloges publiques", "pl": "Mapa pokazująca wszystkie zegary publiczne", "da": "Kort over alle ure i det offentlige rum", - "it": "Mappa di tutti gli orologi pubblici" + "it": "Mappa di tutti gli orologi pubblici", + "uk": "Карта з усіма громадськими годинниками" }, "icon": "./assets/layers/clock/clock.svg", "layers": [ diff --git a/assets/themes/cycle_highways/cycle_highways.json b/assets/themes/cycle_highways/cycle_highways.json index 3d58409f2..50e9e59fc 100644 --- a/assets/themes/cycle_highways/cycle_highways.json +++ b/assets/themes/cycle_highways/cycle_highways.json @@ -13,7 +13,8 @@ "pa_PK": "سائیکل‌وے", "cs": "Cyklodálnice", "pl": "Ścieżki rowerowe", - "zh_Hant": "單車高速公路" + "zh_Hant": "單車高速公路", + "uk": "Велосипедні доріжки" }, "description": { "en": "This map shows cycle highways", @@ -26,7 +27,8 @@ "ca": "Aquest mapa mostra carrils bici", "da": "Dette kort viser cykelmotorveje", "cs": "Tato mapa zobrazuje cyklostezky", - "pl": "Ta mapa pokazuje ścieżki rowerowe" + "pl": "Ta mapa pokazuje ścieżki rowerowe", + "uk": "На цій карті показані велодоріжки" }, "icon": "./assets/themes/cycle_highways/fietssnelwegen-logo.svg", "startZoom": 7, diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json index c6e32eeee..d76465476 100644 --- a/assets/themes/cycle_infra/cycle_infra.json +++ b/assets/themes/cycle_infra/cycle_infra.json @@ -15,7 +15,8 @@ "da": "Cykelinfrastruktur", "pa_PK": "سائیکل ڈھانچا", "cs": "Cyklistická infrastruktura", - "pl": "Infrastruktura rowerowa" + "pl": "Infrastruktura rowerowa", + "uk": "Велосипедна інфраструктура" }, "description": { "en": "A map where you can view and edit things related to the bicycle infrastructure. Made during #osoc21.", @@ -29,7 +30,8 @@ "ca": "Un mapa on es poden veure i editar coses relacionades amb la infraestructura ciclista. Fet durant #osoc21.", "da": "Et kort, hvor du kan se og redigere ting relateret til cykelinfrastrukturen. Lavet under #osoc21.", "cs": "Mapa, kde můžete prohlížet a upravovat věci související s cyklistickou infrastrukturou. Vytvořeno během #osoc21.", - "pl": "Mapa, na której możesz przeglądać i edytować rzeczy związane z infrastrukturą rowerową. Wykonane podczas #osoc21." + "pl": "Mapa, na której możesz przeglądać i edytować rzeczy związane z infrastrukturą rowerową. Wykonane podczas #osoc21.", + "uk": "Карта, на якій можна переглядати та редагувати речі, пов'язані з велосипедною інфраструктурою. Зроблено під час #osoc21." }, "shortDescription": { "en": "A map where you can view and edit things related to the bicycle infrastructure.", @@ -44,7 +46,8 @@ "ca": "Un mapa on es poden veure i editar coses relacionades amb la infraestructura ciclista.", "da": "Et kort, hvor du kan se og redigere ting relateret til cykelinfrastrukturen.", "cs": "Mapa, kde můžete prohlížet a upravovat věci související s cyklistickou infrastrukturou.", - "pl": "Mapa, na której możesz przeglądać i edytować rzeczy związane z infrastrukturą rowerową." + "pl": "Mapa, na której możesz przeglądać i edytować rzeczy związane z infrastrukturą rowerową.", + "uk": "Карта, на якій ви можете переглядати та редагувати речі, пов'язані з велосипедною інфраструктурою." }, "icon": "./assets/themes/cycle_infra/cycle-infra.svg", "socialImage": "./assets/themes/cycle_infra/cycle-infra.svg", diff --git a/assets/themes/cyclenodes/cyclenodes.json b/assets/themes/cyclenodes/cyclenodes.json index 65e3c022e..41b99eb7c 100644 --- a/assets/themes/cyclenodes/cyclenodes.json +++ b/assets/themes/cyclenodes/cyclenodes.json @@ -41,7 +41,8 @@ "fr": "liens noeud à noeud", "ca": "Enllaços node a node", "cs": "Propojení mezi uzly", - "pl": "łącza węzeł do węzła" + "pl": "łącza węzeł do węzła", + "uk": "Зв'язки між точками" }, "source": { "osmTags": { @@ -92,7 +93,8 @@ "fr": "Quand cette liaison de nœud à nœud a-t-elle été contrôlée sur le terrain pour la dernière fois ?", "ca": "Quan es va comprovar per última vegada aquest enllaç node a node presencialment?", "cs": "Kdy bylo toto propojení mezi uzly naposledy zkontrolováno?", - "pl": "Kiedy ostatnio badano to połączenie węzła z węzłem?" + "pl": "Kiedy ostatnio badano to połączenie węzła z węzłem?", + "uk": "Коли цей зв'язок між точками досліджувався востаннє?" }, "render": { "en": "This node to node link was last surveyed on {survey:date}", diff --git a/assets/themes/cyclestreets/cyclestreets.json b/assets/themes/cyclestreets/cyclestreets.json index 7bf579ea6..22d3bc5b9 100644 --- a/assets/themes/cyclestreets/cyclestreets.json +++ b/assets/themes/cyclestreets/cyclestreets.json @@ -16,7 +16,8 @@ "pa_PK": "سائیکل سڑکاں", "cs": "Cyklostezky", "eu": "Bidegorriak", - "pl": "Ulice rowerowe" + "pl": "Ulice rowerowe", + "ru": "Велосипедные дорожки" }, "description": { "nl": "Een fietsstraat is een straat waar

Op deze open kaart kan je alle gekende fietsstraten zien en kan je ontbrekende fietsstraten aanduiden. Fietszones worden aangeduid door elke straat apart als fietsstraat te markeren.
Om de kaart aan te passen, moet je je aanmelden met OpenStreetMap en helemaal inzoomen tot straatniveau. ", diff --git a/assets/themes/disaster_response/disaster_response.json b/assets/themes/disaster_response/disaster_response.json index fbda6f45c..e111ab76e 100644 --- a/assets/themes/disaster_response/disaster_response.json +++ b/assets/themes/disaster_response/disaster_response.json @@ -7,7 +7,8 @@ "es": "Respuesta a catástrofes y servicios de emergencia", "ca": "Resposta davant de desastres i serveis d'emergència", "da": "Beredskab", - "cs": "Reakce na katastrofy a záchranné služby" + "cs": "Reakce na katastrofy a záchranné služby", + "ru": "Ликвидация последствий стихийных бедствий и аварийные службы" }, "description": { "en": "This map contains elements meant for disaster preparedness and response.", diff --git a/assets/themes/education/education.json b/assets/themes/education/education.json index 536fc1272..8620fea4f 100644 --- a/assets/themes/education/education.json +++ b/assets/themes/education/education.json @@ -14,7 +14,8 @@ "eu": "Hezkuntza", "pl": "Edukacja", "zh_Hant": "教育", - "it": "Istruzione" + "it": "Istruzione", + "ru": "Образование" }, "description": { "en": "On this map, you'll find information about all types of schools and education and can easily add more information", diff --git a/assets/themes/etymology/etymology.json b/assets/themes/etymology/etymology.json index 337b7e039..f95d69efe 100644 --- a/assets/themes/etymology/etymology.json +++ b/assets/themes/etymology/etymology.json @@ -42,7 +42,8 @@ "ca": "Quin és l'origen d'un topònim?", "da": "Hvad er oprindelsen af et stednavn?", "cs": "Jaký je původ toponyma?", - "pl": "Jakie jest pochodzenie toponimów?" + "pl": "Jakie jest pochodzenie toponimów?", + "ru": "Каково происхождение топонима?" }, "icon": "./assets/layers/etymology/logo.svg", "hideFromOverview": false, diff --git a/assets/themes/facadegardens/facadegardens.json b/assets/themes/facadegardens/facadegardens.json index c7b2ee42c..e8c8bfaa7 100644 --- a/assets/themes/facadegardens/facadegardens.json +++ b/assets/themes/facadegardens/facadegardens.json @@ -13,7 +13,8 @@ "es": "Jardines de fachada", "da": "Facadehaver", "cs": "Fasádní zahrady", - "pl": "Ogrody fasadowe" + "pl": "Ogrody fasadowe", + "ru": "Фасадные сады" }, "description": { "nl": "Ontharde voortuintjes, groene gevels en bomen ín de stad brengen naast rust ook een mooiere stad, een grotere biodiversiteit, een verkoelend effect en een betere luchtkwaliteit.
Klimaan VZW en 'Mechelen Klimaatneutraal' willen met het project Klim(t)aan je Gevel bestaande en nieuwe geveltuintjes in kaart brengen als voorbeeld voor mensen zelf een tuintje willen aanleggen of voor stadwandelaars die houden van de natuur.
Meer info over het project op klimaan.be.", diff --git a/assets/themes/glutenfree/glutenfree.json b/assets/themes/glutenfree/glutenfree.json index 134ec8102..76e11c951 100644 --- a/assets/themes/glutenfree/glutenfree.json +++ b/assets/themes/glutenfree/glutenfree.json @@ -6,7 +6,8 @@ "it": "Senza glutine", "es": "Sin gluten", "ca": "Sense gluten", - "cs": "Bez lepku" + "cs": "Bez lepku", + "ru": "Без глютена" }, "description": { "en": "A crowdsourced map with glutenfree items", diff --git a/assets/themes/guideposts/guideposts.json b/assets/themes/guideposts/guideposts.json index d59671e63..afebd78d9 100644 --- a/assets/themes/guideposts/guideposts.json +++ b/assets/themes/guideposts/guideposts.json @@ -6,7 +6,8 @@ "de": "Wegweiser", "es": "Poste guía", "pl": "Drogowskazy", - "ca": "Pal guia" + "ca": "Pal guia", + "ru": "Указатели" }, "description": { "en": "Guideposts (also known as fingerposts or finger posts) are often found along official hiking, cycling, skiing or horseback riding routes to indicate the directions to different destinations. Additionally, they are often named after a region or place and show the altitude.\n\nThe position of a signpost can be used by a hiker/biker/rider/skier as a confirmation of the current position, especially if they use a printed map without a GPS receiver. ", diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json index d57485476..505bda243 100644 --- a/assets/themes/hailhydrant/hailhydrant.json +++ b/assets/themes/hailhydrant/hailhydrant.json @@ -64,4 +64,4 @@ "ambulancestation" ], "widenFactor": 3 -} \ No newline at end of file +} diff --git a/assets/themes/hotels/hotels.json b/assets/themes/hotels/hotels.json index 5f883cb1a..d0898f465 100644 --- a/assets/themes/hotels/hotels.json +++ b/assets/themes/hotels/hotels.json @@ -14,7 +14,8 @@ "eu": "Hotelak", "pl": "Hotele", "zh_Hant": "飯店", - "it": "Hotel" + "it": "Hotel", + "ru": "Гостиницы" }, "description": { "en": "On this map, you'll find hotels in your area", diff --git a/assets/themes/icecream/icecream.json b/assets/themes/icecream/icecream.json index 4f9d48b31..57431f1a7 100644 --- a/assets/themes/icecream/icecream.json +++ b/assets/themes/icecream/icecream.json @@ -7,7 +7,8 @@ "ca": "Gelat", "es": "Helado", "da": "Is", - "it": "Gelato" + "it": "Gelato", + "ru": "Мороженое" }, "description": { "en": "A map showing ice cream parlors and ice cream vending machines", diff --git a/assets/themes/indoors/indoors.json b/assets/themes/indoors/indoors.json index 21a78f89b..375c6b05f 100644 --- a/assets/themes/indoors/indoors.json +++ b/assets/themes/indoors/indoors.json @@ -14,7 +14,8 @@ "eu": "Barnealdean", "pl": "Wewnątrz", "zh_Hant": "室內", - "it": "Al chiuso" + "it": "Al chiuso", + "ru": "Внутри помещений" }, "description": { "en": "On this map, publicly accessible indoor places are shown", diff --git a/assets/themes/maps/maps.json b/assets/themes/maps/maps.json index 6743b2244..3b3319fda 100644 --- a/assets/themes/maps/maps.json +++ b/assets/themes/maps/maps.json @@ -42,7 +42,8 @@ "da": "Dette tema viser alle (turisme) kort, som OpenStreetMap kender til", "cs": "Toto téma zobrazuje všechny (turistické) mapy, které zná OpenStreetMap", "ca": "Aquest tema mostra tots els mapes (turístics) que OpenStreetMap coneix", - "pl": "Ten motyw pokazuje wszystkie mapy (turystyczne), które zna OpenStreetMap" + "pl": "Ten motyw pokazuje wszystkie mapy (turystyczne), które zna OpenStreetMap", + "ru": "Эта тема показывает все (туристические) карты, известные OpenStreetMap" }, "icon": "./assets/themes/maps/logo.svg", "defaultBackgroundId": "protomaps.white", diff --git a/assets/themes/maxspeed/maxspeed.json b/assets/themes/maxspeed/maxspeed.json index db6f21a4a..586dd4ace 100644 --- a/assets/themes/maxspeed/maxspeed.json +++ b/assets/themes/maxspeed/maxspeed.json @@ -37,7 +37,8 @@ "es": "Este mapa muestra la velocidad máxima permitida legalmente en cada carretera.", "ca": "Aquest mapa mostra la velocitat màxima permesa legalment a cada carretera.", "zh_Hant": "這份地圖顯示每一條道路的法定允許的最高速限。", - "pl": "Ta mapa pokazuje prawnie dozwoloną maksymalną prędkość na każdej drodze." + "pl": "Ta mapa pokazuje prawnie dozwoloną maksymalną prędkość na każdej drodze.", + "ru": "На этой карте показана разрешенная законом максимальная скорость на каждой дороге." }, "icon": "./assets/themes/maxspeed/maxspeed_logo.svg", "layers": [ diff --git a/assets/themes/memorials/memorials.json b/assets/themes/memorials/memorials.json index bd9cbdd8e..57f081a43 100644 --- a/assets/themes/memorials/memorials.json +++ b/assets/themes/memorials/memorials.json @@ -8,7 +8,8 @@ "da": "Mindesmærker", "sl": "Spomeniki", "es": "Memoriales", - "cs": "Památníky" + "cs": "Památníky", + "ru": "Памятники" }, "description": { "en": "Memorials are physical objects permantently placed in the public space to remember a person or event. They can be a wide range of objects, such as statues, plaques, paintings, military objects (such as tanks), ...", diff --git a/assets/themes/nature/nature.json b/assets/themes/nature/nature.json index 785c1e266..eb1a8a1aa 100644 --- a/assets/themes/nature/nature.json +++ b/assets/themes/nature/nature.json @@ -11,7 +11,8 @@ "cs": "Do přírody", "es": "En la naturaleza", "zh_Hant": "投入自然懷抱", - "pl": "W naturze" + "pl": "W naturze", + "ru": "На природе" }, "description": { "en": "On this map, one can find interesting information for tourists and nature lovers.", @@ -37,7 +38,8 @@ "ca": "Un mapa per als amants de la natura, amb PDI interessants", "zh_Hant": "為了自然愛好者,以及有趣的興趣點的地圖", "pl": "Mapa dla miłośników przyrody z ciekawymi punktami POI", - "it": "Una mappa per amanti della natura con interessanti POI" + "it": "Una mappa per amanti della natura con interessanti POI", + "ru": "Карта для любителей природы, с интересными POI" }, "icon": "./assets/themes/nature/logo.svg", "startZoom": 12, diff --git a/assets/themes/notes/notes.json b/assets/themes/notes/notes.json index c27ee0195..3f70f2ed2 100644 --- a/assets/themes/notes/notes.json +++ b/assets/themes/notes/notes.json @@ -12,7 +12,8 @@ "da": "Noter på OpenStreetMap", "cs": "Poznámky k OpenStreetMap", "zh_Hant": "開放街圖上的註解", - "pl": "Notatki na OpenStreetMap" + "pl": "Notatki na OpenStreetMap", + "ru": "Заметки в OpenStreetMap" }, "description": { "en": "A note is a pin on the map with some text to indicate something wrong.

Make sure to checkout the filter view to search for users and text.", diff --git a/assets/themes/observation_towers/observation_towers.json b/assets/themes/observation_towers/observation_towers.json index 49f0a7fa1..58497233f 100644 --- a/assets/themes/observation_towers/observation_towers.json +++ b/assets/themes/observation_towers/observation_towers.json @@ -44,7 +44,8 @@ "da": "Offentligt tilgængelige tårne for at nyde udsigten", "cs": "Veřejně přístupné věže s výhledem", "ca": "Torres accesibles públicament per a disfrutar de la vista", - "pl": "Publicznie dostępne wieże do podziwiania widoku" + "pl": "Publicznie dostępne wieże do podziwiania widoku", + "ru": "Общедоступные башни, с которых можно любоваться видами" }, "icon": "./assets/layers/observation_tower/Tower_observation.svg", "layers": [ diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 6cdf2f514..7d7f1f759 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -11,7 +11,8 @@ "es": "Sobre ruedas", "cs": "Na kolečkách", "eu": "Gurpil gainean", - "pl": "Na kółkach" + "pl": "Na kółkach", + "ru": "Коляски" }, "description": { "en": "On this map, publicly weelchair accessible places are shown and can be easily added", diff --git a/assets/themes/personal/personal.json b/assets/themes/personal/personal.json index 38937002d..34a25f503 100644 --- a/assets/themes/personal/personal.json +++ b/assets/themes/personal/personal.json @@ -16,7 +16,8 @@ "da": "Personligt tema", "pa_PK": "چݨی تھیم", "cs": "Osobní téma", - "pl": "Temat osobisty" + "pl": "Temat osobisty", + "ru": "Собственная тема" }, "description": { "en": "Create a personal theme based on all the available layers of all themes. In order to show some data, open layer selection", diff --git a/assets/themes/pets/pets.json b/assets/themes/pets/pets.json index 5846015cc..8d3e8fc6b 100644 --- a/assets/themes/pets/pets.json +++ b/assets/themes/pets/pets.json @@ -11,7 +11,8 @@ "cs": "Veterináři, psí parky a další služby pro domácí zvířata", "zh_Hant": "獸醫院、寵物公園以及其他寵物設施", "pl": "Kliniki weterynaryjne, parki dla psów i inne obiekty dla zwierząt", - "it": "Veterinari, parchi accessibili ai cani e altri servizi per animali domestici" + "it": "Veterinari, parchi accessibili ai cani e altri servizi per animali domestici", + "ru": "Ветеринары, парки для собак и другие удобства для домашних животных" }, "description": { "en": "On this map, you'll find various interesting places for you pets: veterinarians, dog parks, pet shops, dog-friendly restaurants, ...", @@ -22,7 +23,8 @@ "ca": "A aquest mapa, trobaràs diferents llocs interesants per a les teves mascotes: veterinaris, parcs per a gossos, botigues d'animals, restaurants amables amb gossos, ...", "es": "En este mapa, encontrarás varios lugares interesantes para tus mascotas: veterinarios, parques para perros, tiendas de mascotas, restaurantes aptos para perros, ...", "cs": "Na této mapě najdete různá zajímavá místa pro vaše domácí mazlíčky: veterináře, psí parky, obchody pro zvířata, restaurace pro psy, ...", - "pl": "Na tej mapie znajdziesz różne ciekawe miejsca dla swoich zwierząt: weterynarze, wybiegi dla psów, sklepy zoologiczne, restauracje przyjazne psom, ..." + "pl": "Na tej mapie znajdziesz różne ciekawe miejsca dla swoich zwierząt: weterynarze, wybiegi dla psów, sklepy zoologiczne, restauracje przyjazne psom, ...", + "ru": "На этой карте вы найдете различные интересные места для ваших питомцев: ветеринарные клиники, парки для собак, зоомагазины, рестораны для собак, ..." }, "icon": "./assets/layers/dogpark/dog-park.svg", "startZoom": 10, @@ -49,7 +51,8 @@ "cs": "Restaurace vhodné pro vstup se psy", "zh_Hant": "寵物友善餐廳", "pl": "Restauracje przyjazne psom", - "it": "Ristoranti che accettano i cani" + "it": "Ristoranti che accettano i cani", + "ru": "Заведения, где можно поесть с собаками" }, "pointRendering": [ { diff --git a/assets/themes/shops/shops.json b/assets/themes/shops/shops.json index 3e733c223..0706c0432 100644 --- a/assets/themes/shops/shops.json +++ b/assets/themes/shops/shops.json @@ -46,7 +46,8 @@ "ca": "Un mapa editable amb informació bàsica sobre botigues", "cs": "Upravitelná mapa se základními informacemi o obchodech", "zh_Hant": "有基本商家資訊的可編輯性的地圖", - "pl": "Edytowalna mapa z podstawowymi informacjami o sklepach" + "pl": "Edytowalna mapa z podstawowymi informacjami o sklepach", + "ru": "Редактируемая карта с основной информацией о магазине" }, "icon": "./assets/themes/shops/shop.svg", "layers": [ diff --git a/assets/themes/sports/sports.json b/assets/themes/sports/sports.json index 0cb224f39..27b26cd97 100644 --- a/assets/themes/sports/sports.json +++ b/assets/themes/sports/sports.json @@ -12,7 +12,8 @@ "zh_Hant": "運動", "eu": "Kirolak", "pl": "Sporty", - "it": "Sport" + "it": "Sport", + "ru": "Спортивные объекты" }, "description": { "en": "All about sports, find sport pitches, fitness centres and more.", diff --git a/assets/themes/surveillance/surveillance.json b/assets/themes/surveillance/surveillance.json index 83fd347e5..d048d2219 100644 --- a/assets/themes/surveillance/surveillance.json +++ b/assets/themes/surveillance/surveillance.json @@ -15,7 +15,8 @@ "es": "Vigilancia bajo vigilancia", "cs": "Dohled pod dohledem", "pl": "Monitoring monitoringu", - "sl": "Nadzor nadzora" + "sl": "Nadzor nadzora", + "ru": "Наблюдение под наблюдением" }, "description": { "en": "On this open map, you can find surveillance cameras.", diff --git a/assets/themes/transit/transit.json b/assets/themes/transit/transit.json index 5676d6802..cf9bab9c1 100644 --- a/assets/themes/transit/transit.json +++ b/assets/themes/transit/transit.json @@ -12,7 +12,8 @@ "es": "Rutas de autobús", "cs": "Autobusové linky", "zh_Hant": "公車路線", - "pl": "Trasy autobusowe" + "pl": "Trasy autobusowe", + "ru": "Автобусные маршруты" }, "description": { "en": "Plan your trip with the help of the public transport system.", diff --git a/assets/themes/vending_machine/vending_machine.json b/assets/themes/vending_machine/vending_machine.json index 2dd0bd3b4..3c9b99fc9 100644 --- a/assets/themes/vending_machine/vending_machine.json +++ b/assets/themes/vending_machine/vending_machine.json @@ -11,7 +11,8 @@ "pl": "Automaty sprzedające", "zh_Hant": "自動販賣機", "da": "Salgsautomater", - "it": "Distributori automatici" + "it": "Distributori automatici", + "ru": "Торговые автоматы" }, "description": { "en": "Find vending machines for everything", diff --git a/assets/themes/waste_basket/waste_basket.json b/assets/themes/waste_basket/waste_basket.json index d4762139f..09dfeb9c2 100644 --- a/assets/themes/waste_basket/waste_basket.json +++ b/assets/themes/waste_basket/waste_basket.json @@ -15,7 +15,8 @@ "pa_PK": "کوڑے دی ٹوکری", "es": "Papeleras", "cs": "Odpadkové koše", - "pl": "Kosz na śmieci" + "pl": "Kosz na śmieci", + "ru": "Корзины для мусора" }, "description": { "en": "On this map, you'll find waste baskets near you. If a waste basket is missing on this map, you can add it yourself.", diff --git a/langs/de.json b/langs/de.json index 86a568fba..87c1ac50a 100644 --- a/langs/de.json +++ b/langs/de.json @@ -206,6 +206,7 @@ "openPanoramax": "Panoramax öffnen", "openThemeDocumentation": "Dokumentation zur Themenkarte {name} anzeigen", "panoramaxHelp": "Panoramax ist ein Online-Service, der Straßenbilder sammelt und sie unter einer kostenlosen Lizenz anbietet. Mitwirkende dürfen diese Bilder nutzen, um OpenStreetMap zu verbessern", + "panoramaxLicenseCCBYSA": "Ihre Bilder werden unter CC-BY-SA veröffentlicht - jeder kann Ihr Bild weiterverwenden, wenn er Ihren Namen erwähnt", "seeOnMapillary": "Dieses Bild auf Mapillary ansehen", "themeBy": "Dieses Thema wurde erstellt von {author}", "title": "Copyright und Urheberrechtsangabe", @@ -309,6 +310,7 @@ "aboutMapComplete": "Über MapComplete", "filter": "Daten filtern", "moreUtilsTitle": "Mehr entdecken", + "openHereDifferentApp": "Aktuellen Standort in anderen Anwendungen öffnen", "showIntroduction": "Einführung anzeigen", "title": "Menü" }, diff --git a/langs/es.json b/langs/es.json index 12f368827..d9427e6c1 100644 --- a/langs/es.json +++ b/langs/es.json @@ -206,6 +206,7 @@ "openPanoramax": "Abrir Panoramax aquí", "openThemeDocumentation": "Abrir la documentación para el mapa temático {name}", "panoramaxHelp": "Panoramax es un servicio en línea que recoge imágenes a pie de calle y las ofrece bajo una licencia libre. Los colaboradores pueden utilizar estas imágenes para mejorar OpenStreetMap", + "panoramaxLicenseCCBYSA": "Tus fotos son publicadas bajo CC-BY-SA - todos pueden reutilizar tu imagen si mencionan tu nombre", "seeOnMapillary": "Vea esta imagen en Mapillary", "themeBy": "Tema mantenido por {author}", "title": "Derechos de autor y atribución", @@ -309,6 +310,7 @@ "aboutMapComplete": "Sobre MapComplete", "filter": "Filtrar datos", "moreUtilsTitle": "Descubrir más", + "openHereDifferentApp": "Abrir la ubicación actual en otras aplicaciones", "showIntroduction": "Mostrar introducción", "title": "Menú" }, @@ -571,6 +573,10 @@ "selectItem": "Seleccione el PDI más cercano al centro del mapa (cruz). Solo cuando se utiliza la navegación por teclado", "selectItem2": "Seleccione el PDI que es el segundo elemento más cercano al centro del mapa (cruz). Solo cuando se utiliza la navegación mediante el teclado", "selectItem3": "Seleccione el PDI que es el tercer elemento más cercano al centro del mapa (cruz). Solo cuando se utiliza la navegación mediante el teclado", + "selectItemI": "Seleccione el PDI que es el {i}o elemento más cercano al centro del mapa (cruz). Solo cuando se utiliza en la navegación por teclado", + "selectMap": "Establecer el fondo de un mapa desde fuentes externas. Alterna entre las dos mejores capas disponibles", + "selectMapnik": "Establecer la capa de fondo a OpenStreetMap-carto", + "selectOsmbasedmap": "Establecer la capa de fondo en el mapa basado en OpenStreetMap (o desactivar la capa de fondo)", "selectSearch": "Selecciona la barra de búsqueda para buscar ubicaciones", "shakePhone": "Agitar tu teléfono", "title": "Atajos de teclado", @@ -587,7 +593,8 @@ "failed": "Ha fallado la búsqueda de imágenes de {service}", "link": "Esta imagen muestra el objeto", "noNearbyImages": "No se han encontrado imágenes cercanas", - "seeNearby": "Explorar fotos cercanas" + "seeNearby": "Explorar fotos cercanas", + "title": "Imágenes de streetview cercanas" }, "pleaseLogin": "Accede para cargar una imagen", "processing": "El servidor está procesando tu imagen", @@ -795,8 +802,10 @@ }, "unknown": { "clear": "Borrar respuesta", + "explanation": "Borrar esta información si la respuesta actual es incorrecta pero el valor real no se conoce. No se eliminará ninguna otra información.", "keep": "Mantener respuesta", "markUnknown": "Marcar como desconocido", + "removedKeys": "Se eliminarán las siguientes claves:", "title": "¿Marcar como desconocido?" }, "userinfo": { @@ -824,6 +833,8 @@ "noAt": "Una dirección de correo electrónico debe de contener un @" }, "fediverse": { + "description": "Un identificador fediverse, a menudo @username@server.tld", + "feedback": "Un identificador fediverse consiste en @username@server.tld o es un enlace a un perfil", "invalidHost": "{host} es un nombre de host no válido", "onYourServer": "Ver y seguir en tu servidor" }, @@ -881,7 +892,9 @@ "spamSite": "{host} es considerado un sitio web de baja calidad. No se permite usar este sitio web." }, "wikidata": { - "description": "Un identificador de Wikidata" + "description": "Un identificador de Wikidata", + "empty": "Por favor, introduzca algunas entradas en wikidata", + "startsWithQ": "Un identificador wikidata comienza con Q y es seguido por un número" } } } \ No newline at end of file diff --git a/langs/hu.json b/langs/hu.json index 94287046c..98f1aaaf5 100644 --- a/langs/hu.json +++ b/langs/hu.json @@ -1,69 +1,176 @@ { + "advanced": { + "title": "Speciális funkciók" + }, "centerMessage": { + "allFilteredAway": "A nézetben egyetlen objektum sem felel meg az összes szűrőnek", "loadingData": "Adatok betöltése folyamatban…", + "noData": "Az aktuális nézetben nincs megfelelő objektum", "ready": "Kész!", "retrying": "Nem sikerült betölteni az adatokat. Újrapróbálkozás {count} másodperc múlva…", "zoomIn": "Közelíts az adatok megtekintéséhez és szerkesztéséhez" }, + "communityIndex": { + "available": "Ez a közösség {native} nyelven beszél", + "intro": "Lépj kapcsolatba másokkal, hogy megismerd őket, és tanulj tőlük…", + "notAvailable": "Ez a közösség nem beszél {native} nyelven", + "title": "Lépj kapcsolatba másokkal" + }, "delete": { "cancel": "Mégse", - "cannotBeDeleted": "Ez a térkpelem nem törölhető", + "cannotBeDeleted": "Ez az objektum nem törölhető", "delete": "Törlés", + "deletedTitle": "Törölt objektum", "explanations": { - "hardDelete": "Ez a térképelem törlődik az OpenStreetMapről. Csak tapasztalt szerkesztő tudja visszaállítani", - "selectReason": "Kérjük, jelöld meg, miért kellene ezt a térképelemet törölni", - "softDelete": "Ez a térképelem frissülni fog és ebben az alkalmazásban nem fog látszani. {reason}" + "hardDelete": "Ez az objektum törlődik az OpenStreetMapről. Csak tapasztalt szerkesztő tudja visszaállítani", + "retagNoOtherThemes": "Ez az objektum át lesz minősítve és eltűnik ebből az alkalmazásból", + "retagOtherThemes": "Ez az objektum át lesz címkézve és látható lesz itt: {otherThemes}", + "selectReason": "Kérjük, add meg, miért kellene ezt az objektumot törölni", + "softDelete": "Ez az objektum frissülni fog és ebben az alkalmazásban nem fog látszani. {reason}" }, - "isDeleted": "Ez a térképelem törlődött", - "isntAPoint": "Csak pontot lehet törölni, a kiválasztott térképelem viszont vonal, terület vagy kapcsolat.", - "loading": "Tulajdonságok megvizsgálása annak ellenőrzéséhez, hogy a térképelem törölhető-e.", - "loginToDelete": "Térképelem törléséhez be kell jelentkezni", - "notEnoughExperience": "Ezt a térképelemet valaki más készítette.", - "onlyEditedByLoggedInUser": "Ezt a térképelemet csak te magad szerkesztetted, így nyugodtan törölheted.", + "isChanged": "Ez az objektum megváltozott, és már nem felel meg ennek a rétegnek", + "isDeleted": "Ez az objektum törlődött", + "isntAPoint": "Csak pontot lehet törölni, a kijelölt objektum viszont vonal, terület vagy kapcsolat.", + "loading": "Tulajdonságok megvizsgálása annak ellenőrzéséhez, hogy az objektum törölhető-e.", + "loginToDelete": "Objektum törléséhez be kell jelentkezni", + "notEnoughExperience": "Ezt az objektumot valaki más készítette.", + "onlyEditedByLoggedInUser": "Ezt az objektumot csak te magad szerkesztetted, így nyugodtan törölheted.", "partOfOthers": "Ez a pont egy vonal vagy kapcsolat része, ezért közvetlenül nem törölhető.", - "readMessages": "Olvasatlan üzeneteid vannak. Olvasd el őket, mielőtt törölnél egy térképelemet – lehet, hogy valaki épp erről írt", + "readMessages": "Olvasatlan üzeneteid vannak. Olvasd el őket, mielőtt törölnél egy objektumot – lehet, hogy valaki épp erről írt", "reasons": { - "disused": "Ez a térképelem használaton kívüli vagy el lett távolítva", - "duplicate": "Ez a térképelem egy másik térképelem megkettőzése", - "notFound": "Ezt a térképelemet nem sikerült megtalálni", - "test": "Ez egy tesztelésre szolgáló térképelem volt: az általa jelölt objektum valójában soha nem létezett" + "disused": "Ez az objektum használaton kívüli vagy el lett távolítva", + "duplicate": "Ez az objektum egy másik objektum megkettőzése", + "notFound": "Ezt az objektumot nem sikerült megtalálni", + "test": "Ez egy tesztobjektum volt: az általa jelölt objektum a valóságban soha nem létezett" }, - "safeDelete": "Ez a térképelem nyugodtan törölhető.", + "safeDelete": "Ez az objektum nyugodtan törölhető.", "useSomethingElse": "A törléséhez használj egy másik OpenStreetMap-szerkesztőt", - "whyDelete": "Miért kellene törölni ezt a térképelemet?" + "whyDelete": "Miért kellene törölni ezt az objektumot?" + }, + "external": { + "allAreApplied": "Az összes hiányzó, külső érték átmásoltatott az OpenStreetMap-re", + "allIncluded": "A {source} forrásból betöltött adatokat az OpenStreetMap tartalmazza", + "apply": "Alkalmazás", + "applyAll": "Az összes hiányzó érték alkalmazása", + "conflicting": { + "intro": "Az OpenStreetMap a következő értékeknél más értéket ad, mint a forrás weboldal.", + "title": "Egymásnak ellentmondó elemek" + }, + "currentInOsmIs": "Jelenleg az OpenStreetMapen a következő érték van rögzítve:", + "done": "Kész", + "error": "Nem sikerült betölteni a belinkelt adatokat a webhelyről", + "lastModified": "A külső adatok utolsó módosítása: {date}", + "loadedFrom": "A következő adatok a {source} oldalról töltődnek be a beágyazott JSON-LD segítségével", + "missing": { + "intro": "Az OpenStreetMapen nincs adat a következő tulajdonságokról", + "title": "Hiányzó elemek" + }, + "noDataLoaded": "A külső weboldalon nincs olyan belinkelt adat, amelyet be lehetne tölteni", + "overwrite": "Felülírás az OpenStreetMapen", + "title": "A külső weboldalról betöltött strukturált adatok" }, "favourite": { "loginNeeded": "

Jelentkezz be

A személyes elrendezés csak OpenStreetMap-felhasználóknak érhető el", "panelIntro": "

A személyes témád

Aktiváld a kedvenc rétegeidet az összes hivatalos téma közül", "reload": "Adatok újratöltése" }, + "favouritePoi": { + "button": { + "isFavourite": "Ez a hely jelenleg kedvencnek van jelölve, és megjelenik a MapComplete összes olyan tematikus térképén, amelyet megnézel.", + "isMarkedShort": "Kedvenc helyként megjelölve", + "isNotMarkedShort": "Nincs kedvenc helyként megjelölve", + "markAsFavouriteTitle": "Hely megjelölése kedvenc helyként", + "markDescription": "Add hozzá ezt a helyet a saját kedvenclistádhoz", + "unmark": "Eltávolítás a személyes kedvencek listájáról", + "unmarkNotDeleted": "A pont nem törlődik, és a megfelelő térképen továbbra is látható marad" + }, + "downloadGeojson": "Kedvencek letöltése GeoJSON-formátumban", + "downloadGpx": "Kedvencek letöltése GPX-formátumban", + "intro": "Megjelölte {length} helyszínt kedvenc helyként.", + "introPrivacy": "Ezt a listát csak te látod", + "loginToSeeList": "Jelentkezz be a kedvencként megjelölt helyeid listájának megtekintéséhez", + "tab": "Kedvenceid és értékeléseid", + "title": "Kedvenc helyeid" + }, + "flyer": { + "aerial": "Ez a térkép más hátteret használ, mégpedig az Agentschap Informatie Vlaanderen (Flamand Informatikai Ügynökség) légifelvételeit", + "callToAction": "Próbáld ki mapcomplete.org-on", + "cyclofix": "Kerékpárpumpák, javítóállomások, ivóvíz és kerékpárboltok a CycloFixen vannak", + "description": "Fektetett A4 alakú szórólap a MapComplete népszerűsítésére", + "editing": { + "ex": "Az alábbiakban látható egy leegyszerűsített példa arra, hogy ez hogyan néz ki egy természetvédelmi területnél.", + "intro": "A felhasználót egy objektumokat tartalmazó térkép köszönti. Ha kijelöl egy objektumot, megjelennek az adatai.", + "title": "Hogyan néz ki a kezelőfelület?" + }, + "examples": "Nagyon sok tematikus térkép áll rendelkezésre, amelyek közül itt csak néhányat mutatunk be.\n\nAz interneten még sok más tematikus térkép is fellelhető: az egészségügyről, a beltéri navigációról, a kerekesszékes akadálymentességről, hulladékkezelő létesítményekről, nyilvános könyvszekrényekről, szivárványfestéssel ellátott gyalogátkelőhelyekről… Fedezd fel mindet a mapcomplete.org oldalon", + "fakeui": { + "add_images": "Kép hozzáadása néhány kattintással", + "attributes": "Barátságos módon jelenít meg tulajdonságokat", + "edit": "Téves vagy elavult az információ? A szerkesztés gomb ott van!", + "question": "Ha egy tulajdonság még nem ismert, a MapComplete feldob egy kérdést", + "see_images": "Megjelenít képeket korábbi szerkesztőktől, a Wikipédiáról, a Mapillaryről stb.", + "wikipedia": "Láthatók a belinkelt Wikipédia-szócikkek" + }, + "frontParagraph": "A MapComplete egy könnyen használható webes alkalmazás OpenStreetMap geoadatok gyűjtésére, amellyel nyílt, tömeges és újrafelhasználható módon gyűjthetők és kezelhetők a megfelelő adatok.\n\nKérésre új kategóriák és tulajdonságok is felvehetők.", + "lines_too": "Vonalak és sokszögek is megjelennek. Az objektumokhoz tulajdonságok és képek kapcsolhatók, és ezeket frissíteni is lehet.", + "mapcomplete": { + "customize": "A MapComplete a saját igényeidhez igazítható, új térképrétegekkel, új funkciókkal, vagy a saját szervezeted színeivel és betűtípusával.\nVan tapasztalatunk geoadatok crowdsource-kampányainak indításában is.\nÁrajánlatért írj a pietervdvn@posteo.net címre.", + "intro": "A MapComplete olyan weboldal, amelyen {mapCount} interaktív térkép található. Minden egyes térképen lehet adatokat felvinni vagy frissíteni. Számos funkcióval rendelkezik:", + "li0": "Megmutatja, hol van érdekes pont (POI)", + "li1": "Új pont hozzáadása és a meglévők adatainak frissítése", + "li2": "Kapcsolattartási adatok és nyitvatartási idő egyszerű hozzáadása", + "li3": "iFrame-mel más weboldalakon is elhelyezhető", + "li4": "Az OpenStreetMap-ökoszisztémába ágyazva, amely számos eszközzel rendelkezik", + "li5": "Meglévő adatkészletek importálásának lehetősége", + "li6": "Számos speciális funkció, például fák felismerése és speciális beviteli módszerek", + "li7": "Copylefted szabad szoftver (GPL licenc) és ingyenesen használható", + "title": "Mi a MapComplete?" + }, + "onwheels": "Kerekesszékeseknek beltéri térképek is rendelkezésre állnak.", + "osm": "Az OpenStreetMap egy olyan online térkép, amelyet bárki szerkeszthet és újra felhasználhat bármilyen célra, feltéve, hogy az adatokat továbbra is nyíltan hozzáférhetővé teszi.\n\nEz a világ legnagyobb térinformatikai adatbázisa, amelyet alkalmazások és weboldalak ezrei hasznosítanak.", + "tagline": "Geoadatok gyűjtése az OpenStreetMappel", + "title": "mapcomplete.org", + "toerisme_vlaanderen": "A Pin your point egy a flamand turisztikai ügynökséggel (Visit Flanders) közös projekt keretében jött létre. Több mint 160 szerkesztő több ezer padot és piknikezőasztalt, valamint 100 kerékpártöltő állomást rajzolt fel.", + "whatIsOsm": "Mi az OpenStreetMap?" + }, "general": { - "about": "Egy adott téma esetében az OpenStreetMap egyszerű szerkesztése és hozzáadása", + "404": "Ez az oldal nem létezik", + "about": "Tematikus OpenStreetMap-objektumok egyszerű felrajzolása és szerkesztése", + "aboutMapComplete": { + "intro": "A MapComplete segítségével egyetlen témában fehetsz fel OpenStreetMap-adatokat. Válaszolj a kérdésekre, és a szerkesztésed perceken belül mindenhol láthatóvá válik. A legtöbb témához képeket is adhatsz, vagy akár véleményt is írhatsz. Az elemeket, a kérdéseket és a nyelveket tematikus térkép gazdája határozza meg." + }, "add": { - "addNew": "Új {category} hozzáadása", - "confirmButton": "{category} hozzáadása.
A hozzáadott objektum mindenki számára látható lesz
", + "addNew": "Új {category} felvétele", + "backToSelect": "Másik kategória kijelölése", + "confirmButton": "{category} felvétele.
A felvett objektumot mindenki látni fogja
", + "confirmLocation": "Hely megerősítése", + "confirmTitle": "Adsz hozzá {title} szöveget is?", + "confirmWarning": "Az itt létrehozott objektumot mindenki látni fogja. Csak akkor rajzolj valamit a térképre, ha az valóban létezik. Sok alkalmazás használja ezeket az adatokat.", + "creating": "Új pont létrehozása…", "disableFilters": "Minden szűrő kikapcsolása", - "disableFiltersExplanation": "Lehet, hogy a szűrő miatt egyes térképelemek nem látszanak", - "hasBeenImported": "Ezt a térképelemet már importálták", + "disableFiltersExplanation": "A szűrő elrejthet bizonyos objektumokat", + "enableLayer": "{name} réteg engedélyezése", + "hasBeenImported": "Ez az objektum már importáltatott", "import": { "hasBeenImported": "Ez az objektum importáltatott", "howToTest": "A teszteléshez add hozzá az URL-hez a test=true vagy a backend=osm-test szöveget. A módosításkészlet a konzolra lesz nyomtatva. Ha hivatalossá szeretnéd tenni ezt a témát (és szeretnéd engedélyezni az importálás gombot), akkor nyiss egy lekéréses kérelmet (pull request).", "importTags": "Az elem a következő címkéket fogja kapni: {tags}", "officialThemesOnly": "A balesetek elkerülése érdekében a nem hivatalos témáknál ki van kapcsolva az importálás gomb", - "wrongType": "Ez a térképelem nem pont vagy vonal, ezért nem importálható", - "zoomInMore": "Nagyíts tovább a térképelem importálásához" + "wrongType": "Ez az objektum nem pont vagy vonal, ezért nem importálható", + "wrongTypeToConflate": "Ez az objektum nem pont vagy vonal, ezért nem lehet összevonni", + "zoomInMore": "Nagyíts tovább az objektum importálásához" }, "importTags": "Az elem {tags} címkéket fog kapni", "intro": "Olyan helyre kattintottál, ahol még nincs ismert adat.
", - "layerNotEnabled": "A {layer} réteg nincs engedélyezve. Térképelem hozzáadásához engedélyezd ezt a réteget", + "layerNotEnabled": "A {layer} réteg nincs engedélyezve. Objektum felrajzolásához engedélyezd ezt a réteget", "openLayerControl": "Rétegvezérlő-doboz megnyitása", - "pleaseLogin": "Új térképelem hozzáadásához be kell jelentkezned", + "pleaseLogin": "Új objektum felvételéhez be kell jelentkezned", "presetInfo": "Az új érdekes pont (POI) címkéi: {tags}", - "stillLoading": "Az adatok betöltése folyamatban van. Kérjük, várj egy kicsit mielőtt elhelyezel egy új térképelemet.", - "title": "Hozzáadsz egy új térképelemet?", + "stillLoading": "Az adatok betöltése folyamatban van. Kérjük, várj egy kicsit mielőtt felviszel egy új objektumot.", + "title": "Új objektum felvétele", "warnVisibleForEveryone": "A kiegészítésed mindenki számára látható lesz", "wrongType": "Ez az elem nem pont vagy vonal, ezért nem importálható", - "zoomInFurther": "Térképelem hozzáadásához közelíts jobban.", + "zoomInFurther": "Objektum felvételéhez közelíts jobban", "zoomInMore": "Nagyíts tovább az elem importálásához" }, "apply_button": { @@ -71,12 +178,15 @@ "isApplied": "A módosítások alkalmazva lettek" }, "attribution": { - "attributionContent": "

Az összes adatot az OpenStreetMap biztosítja, és szabadon újrafelhasználható az Open DataBase License alapján.

", + "attributionBackgroundLayer": "A jelenlegi háttérréteg: {name}", + "attributionBackgroundLayerWithCopyright": "A jelenlegi háttérréteg: {name} ({copyright})", + "attributionContent": "

Az összes adatot az OpenStreetMap biztosítja; szabadon újrafelhasználhatók az Open DataBase License alapján.

", "attributionTitle": "Szerzők", "codeContributionsBy": "A MapComplete-et {contributors} és további {hiddenCount} közreműködő fejleszti", "donate": "A MapComplete pénzügyi támogatása", "editId": "Az OpenStreetMap online szerkesztőjének megnyitása itt", "editJosm": "Szerkesztés itt JOSM-mal", + "emailCreators": "E-mail küldése az alkotóknak", "followOnMastodon": "Kövesse a MapComplete-et a Mastodonon", "iconAttribution": { "title": "Felhasznált ikonok" @@ -91,10 +201,10 @@ "themeBy": "A téma karbantartója: {author}" }, "back": "Vissza", - "backgroundMap": "Háttértérkép", + "backgroundMap": "Jelölj ki egy háttérréteget", "cancel": "Mégse", "confirm": "Megerősítés", - "customThemeIntro": "

Egyéni témák

Ezek korábban megnézett, felhasználó által létrehozott témák.", + "customThemeIntro": "Ezek korábban megnézett, felhasználó által létrehozott témák.", "download": { "downloadAsPdf": "A jelenlegi térkép letöltése PDF-ként", "downloadAsPdfHelper": "Eszményi a jelenlegi térkép kinyomtatásához", @@ -109,15 +219,15 @@ "downloadGpxHelper": "A GPX-fájlok a legtöbb navigációs eszközzel és alkalmazással használhatók", "exporting": "Exportálás…", "includeMetaData": "Metaadatokat is tartalmazzon (legutóbbi szerkesztő, számított értékek stb.)", - "licenseInfo": "

Szerzői jogi nyilatkozat

A megadott adatok az ODbL licenc szerint érhetők el. Újrafelhasználásuk bármilyen célra ingyenes, de A részletekért kérjük, olvassa el a teljes szerzői jogi nyilatkozatot.", + "licenseInfo": "

Szerzői jogi nyilatkozat

A megadott adatok az ODbL licenc szerint érhetők el. Újrafelhasználásuk bármilyen célra ingyenes, de A részletekért kérjük, olvasd el a teljes szerzői jogi nyilatkozatot.", "noDataLoaded": "Még nincs betöltött adat. A letöltés hamarosan elérhető lesz", - "title": "A látható adatok letöltése", + "title": "Letöltés", "uploadGpx": "Töltsd fel a nyomvonalaidat az OpenStreetMapre" }, "error": "Valami rosszul sült el", "example": "Példa", "examples": "Példák", - "fewChangesBefore": "Kérjük, válaszolj néhány meglévő térképelemekre vonatkozó kérdésre, mielőtt új elemet adnál hozzá.", + "fewChangesBefore": "Kérjük, válaszolj néhány meglévő objektumokra vonatkozó kérdésre, mielőtt felvennél egy újat.", "getStartedLogin": "A kezdéshez jelentkezz be az OpenStreetMap-fiókoddal,", "getStartedNewAccount": " vagy hozz létre új fiókot", "goToInbox": "Beérkezett üzenetek megnyitása", @@ -131,7 +241,7 @@ "loading": "Betöltés…", "loadingTheme": "{theme} betöltése…", "loginFailed": "Az OpenStreetMap-be való bejelentkezés nem sikerült", - "loginOnlyNeededToEdit": "ha szerkeszteni szeretnéd a térképet", + "loginOnlyNeededToEdit": "ha módosítani szeretnél", "loginToStart": "A kérdés megválaszolásához be kell jelentkezni", "loginWithOpenStreetMap": "Bejelentkezés OpenStreetMap-fiókkal", "logout": "Kijelentkezés", @@ -159,7 +269,7 @@ "not_all_rules_parsed": "Ez a nyitva tartás bonyolult. A beviteli elemben a következő szabályok nem vétetnek figyelembe:", "openTill": "eddig:", "open_24_7": "Éjjel-nappal nyitva", - "open_during_ph": "Munkaszüneti napokon ez", + "open_during_ph": "Munkaszüneti napokon", "opensAt": "ettől:", "ph_closed": "zárva", "ph_not_known": " ", @@ -173,7 +283,7 @@ "generatedWith": "Létrehozva a mapcomplete.org/{layoutid} segítségével", "versionInfo": "{version} verzió – létrehozva: {date}" }, - "pickLanguage": "Nyelv kiválasztása: ", + "pickLanguage": "Nyelv kiválasztása", "poweredByOsm": "Motor: OpenStreetMap", "questions": { "emailIs": "Ezen {category} e-mail-címe: {email}", @@ -183,7 +293,7 @@ "websiteIs": "Weboldal: {website}", "websiteOf": "Mi a weboldala ennek ({category})?" }, - "readYourMessages": "Kérjük, új térképelem hozzáadása előtt olvasd el az összes OpenStreetMap-üzeneted.", + "readYourMessages": "Kérjük, új objektum felvétele előtt olvasd el az összes OpenStreetMap-üzeneted.", "removeLocationHistory": "Helyelőzmények törlése", "returnToTheMap": "Vissza a térképhez", "save": "Mentés", @@ -196,9 +306,9 @@ "sharescreen": { "copiedToClipboard": "Link a vágólapra másolva", "embedIntro": "

Beágyazás egy weboldalon

Kérjük, illeszd be ezt a térképet a weboldalba.
Biztatunk, tedd meg – még engedélyt sem kell kérned.
Ingyenes, és az is marad. Minél többen használják, annál értékesebbé válik. A pipákra kattintva módosíthatod a paramétereket:", - "fsUserbadge": "Bejelentkezési gomb engedélyezése", + "fsUserbadge": "Engedélyezze a bejelentkezés gombot és így a módosítás lehetőségét", "fsWelcomeMessage": "Felugró üdvözlő üzenet és kapcsolódó fülek megjelenítése", - "intro": "

Térkép megosztása

Oszd meg ezt a térképet! Másold ki az alábbi linket, és küldd el a barátaidnak és a családodnak:", + "intro": "Oszd meg ezt a térképet! Másold ki az alábbi linket, és küldd el barátaidnak és családodnak:", "thanksForSharing": "Köszönjük a megosztást!" }, "skip": "Kérdés kihagyása", @@ -221,7 +331,7 @@ "tuesday": "Kedd", "wednesday": "Szerda" }, - "welcomeBack": "Be vagy jelentkezve, üdv ismét!", + "welcomeBack": "Isten hozott ismét!", "wikipedia": { "createNewWikidata": "Új Wikidata-elem létrehozása", "doSearch": "Keress fent az eredmények megtekintéséhez", @@ -239,7 +349,7 @@ "dontDelete": "Mégse", "isDeleted": "Törölve", "pleaseLogin": "Kép hozzáadásához be kell jelentkezni", - "respectPrivacy": "Ne készíts fényképet emberekről és rendszámtáblákról. Ne tölts fel képet a Google Mapsről, a Google Streetview-ról (utcaképről) és egyéb szerzői jog által védett forrásokból.", + "respectPrivacy": "Ne tölts fel képet a Google térképről, a Google Streetview-ról (utcaképről) és egyéb szerzői jog által védett forrásokból.", "toBig": "A kép túl nagy ({actual_size}). Kérjük, legfeljebb {max_size} méretű képeket használj", "uploadDone": "A kép hozzá lett adva. Köszönjük a segítséged!", "uploadFailed": "Nem sikerült feltölteni a képet. Van-e internetkapcsolatod, és engedélyezted-e a harmadik féltől származó API-kat? A Brave böngésző vagy a uMatrix bővítmény blokkolhatja őket.", @@ -250,14 +360,14 @@ "index": { "#": "Ezek a szövegek akkor jelennek meg a témagombok felett, ha nincs betöltve téma", "featuredThemeTitle": "Kiemelt ezen a héten", - "intro": "A MapComplete egy OpenStreetMap-nézegető és -szerkesztő program, amely egy adott témához kapcsolódó objektumokról jelenít meg információkat, és lehetővé teszi ezek frissítését.", + "intro": "Tematikus térképek, amelyeket te is szerkeszthetsz", "logIn": "A korábban megnézett témák megtekintéséhez be kell jelentkezned", "pickTheme": "Válassz egy témát lent a kezdéshez.", - "title": "Isten hozott a MapComplete-en" + "title": "MapComplete" }, "move": { - "cancel": "Áthelyezés megszakítása", - "cannotBeMoved": "Ez a térképelem nem mozdítható el.", + "cancel": "Válassz másik okot", + "cannotBeMoved": "Ez az objektum nem mozdítható el.", "confirmMove": "Áthelyezés ide", "inviteToMove": { "generic": "Pont áthelyezése", @@ -265,15 +375,15 @@ "reasonRelocation": "Objektum áthelyezése mert a valóságban is áthelyezték" }, "inviteToMoveAgain": "Pont áthelyezése ismét", - "isRelation": "Ez a térképelem egy kapcsolat, amely nem mozdítható el", - "isWay": "Ez a térképelem egy vonal, amelyet csak egy másik OpenStreetMap-szerkesztővel lehet áthelyezni.", + "isRelation": "Ez az objektum egy kapcsolat, amely nem mozdítható el", + "isWay": "Ez a objektum egy vonal, amelyet csak egy másik OpenStreetMap-szerkesztővel lehet áthelyezni.", "loginToMove": "Pont áthelyezéséhez be kell jelentkezned", "moveTitle": "Pont áthelyezése", - "partOfAWay": "Ez a térképelem egy másik vonal része; csak egy másik szerkesztő használatával lehet elmozdítani.", - "partOfRelation": "Ez a térképelem egy kapcsolat része; csak egy másik szerkesztő használatával mozdítható el.", + "partOfAWay": "Ez az objektum egy másik vonal része; csak egy másik szerkesztővel lehet elmozdítani.", + "partOfRelation": "Ez az objektum egy kapcsolat része; csak egy másik szerkesztővel mozdítható el.", "pointIsMoved": "A pont áthelyeződött", "reasons": { - "reasonInaccurate": "Az objektum helye pontatlan a térképen, ezért néhány méterrel arrébb kell tenni", + "reasonInaccurate": "Az objektum helye pontatlan, pár méterrel odébb van", "reasonRelocation": "Az objektumot áthelyezték egy teljesen más helyre" }, "selectReason": "Miért szeretnéd áthelyezni ezt az objektumot?", @@ -293,11 +403,11 @@ }, "reviews": { "affiliated_reviewer_warning": "(Kapcsolódó személy véleménye)", - "attribution": "A véleményeket Mangrove Reviews tárolja, és a CC-BY 4.0 licenc szerint érhetők el.", - "i_am_affiliated": "Kapcsolatban állok ezzel a létesítménnyel
Ellenőrizd, hogy tulajdonos, alkotó, alkalmazott vagy hasonló vagy-e.", + "attribution": "A Mangrove Reviews", + "i_am_affiliated": "Kapcsolatban állok ezzel a létesítménnyel", "name_required": "Vélemények megjelenítéséhez és létrehozásához névre van szükség", - "no_reviews_yet": "Még nincs vélemény. Légy Te az első, aki ír, és ezzel támogasd a nyílt adatokat és az üzletet!", - "saved": "Vélemény elmentve. Köszönjük a megosztást!", + "no_reviews_yet": "Még nincs vélemény. Légy Te az első!", + "saved": "Vélemény elmentve. Köszönjük a megosztást!", "saving_review": "Mentés…", "title": "{count} vélemény", "title_singular": "Egy vélemény", @@ -310,6 +420,6 @@ "inviteToSplit": "Út szétvágása rövidebb szakaszokra. Ez lehetővé teszi, hogy az út egyes részei különböző tulajdonságokkal rendelkezzenek.", "loginToSplit": "Egy út szétvágásához be kell jelentkezni", "split": "Szétvágás", - "splitTitle": "Válaszd ki a térképen, hogy az út hol legyen elvágva" + "splitTitle": "Válaszd ki a térképen, hol változnak az út tulajdonságai" } } \ No newline at end of file diff --git a/langs/layers/ca.json b/langs/layers/ca.json index 1212ae08a..15373e975 100644 --- a/langs/layers/ca.json +++ b/langs/layers/ca.json @@ -4315,13 +4315,13 @@ }, "friture-vegan": { "mappings": { - "0": { + "1": { "then": "Hi han snacks vegans disponibles" }, - "1": { + "2": { "then": "Hi ha una petita selecció de snacks vegans disponibles" }, - "2": { + "3": { "then": "No hi ha snacks vegans disponibles" } }, @@ -4329,13 +4329,13 @@ }, "friture-vegetarian": { "mappings": { - "0": { + "1": { "then": "Hi ha snacks vegetarians disponibles" }, - "1": { + "2": { "then": "Només una petita selecció de snacks son vegetarians" }, - "2": { + "3": { "then": "No hi han sacks disponibles" } }, diff --git a/langs/layers/cs.json b/langs/layers/cs.json index 406b9f8cd..1934d402a 100644 --- a/langs/layers/cs.json +++ b/langs/layers/cs.json @@ -541,9 +541,6 @@ "mappings": { "0": { "then": "Toto dílo slouží také jako památník" - }, - "1": { - "then": "Toto dílo neslouží jako lavička" } }, "question": "Slouží toto dílo jako památník?" @@ -4602,13 +4599,13 @@ }, "friture-vegan": { "mappings": { - "0": { + "1": { "then": "Veganské občerstvení je k dispozici" }, - "1": { + "2": { "then": "K dispozici je malý výběr veganského občerstvení" }, - "2": { + "3": { "then": "Veganské občerstvení není k dispozici" } }, @@ -4616,13 +4613,13 @@ }, "friture-vegetarian": { "mappings": { - "0": { + "1": { "then": "Vegetariánské občerstvení je k dispozici" }, - "1": { + "2": { "then": "Pouze malý výběr občerstvení je vegetariánský" }, - "2": { + "3": { "then": "Vegetariánské občerstvení není k dispozici" } }, @@ -5005,7 +5002,48 @@ } }, "icons": { - "description": "Vrstva sloužící jako knihovna pro ikony-značky, zejména pro zobrazení jako odznak vedle bodu zájmu" + "description": "Vrstva sloužící jako knihovna pro ikony-značky, zejména pro zobrazení jako odznak vedle bodu zájmu", + "tagRenderings": { + "osmlink": { + "mappings": { + "1": { + "then": { + "special": { + "arialabel": "Otevřít na openstreetmap.org" + } + } + }, + "2": { + "then": { + "special": { + "arialabel": "Otevřít na openstreetmap.org" + } + } + } + }, + "render": { + "special": { + "arialabel": "Otevřít na openstreetmap.org" + } + } + }, + "phonelink": { + "mappings": { + "0": { + "then": { + "special": { + "arialabel": "telefon" + } + } + } + }, + "render": { + "special": { + "arialabel": "telefon" + } + } + } + } }, "indoors": { "description": "Základní mapování interiérů: zobrazuje obrysy místností", @@ -5817,6 +5855,11 @@ } }, "render": "Poznámka" + }, + "titleIcons": { + "0": { + "ariaLabel": "Zobrazit na OpenStreetMap.org" + } } }, "observation_tower": { @@ -7532,6 +7575,14 @@ "render": "Škola {name}" } }, + "search": { + "description": "Soukromá vrstva zobrazující výsledky hledání", + "tagRenderings": { + "intro": { + "render": "Výsledek hledání" + } + } + }, "selected_element": { "description": "Zvýrazní aktuálně vybraný prvek. Přepište tuto vrstvu, aby měla různé barvy" }, @@ -8299,6 +8350,11 @@ "render": "Pouliční lampa" } }, + "summary": { + "title": { + "render": "Souhrn" + } + }, "surveillance_camera": { "description": "Tato vrstva zobrazuje sledovací kamery a umožňuje přispěvateli aktualizovat informace a přidávat nové kamery", "name": "Bezpečnostní kamery", @@ -8591,6 +8647,18 @@ } }, "tagRenderings": { + "gender_segregated": { + "mappings": { + "0": { + "then": "K dispozici je oddělený, označený prostor pro muže a ženy" + }, + "1": { + "then": "Neexistuje žádný oddělený, označený prostor pro muže a ženy" + } + }, + "question": "Jsou tyto toalety rozděleny podle pohlaví?", + "questionHint": "Existují samostatné stánky nebo oddělené prostory pro muže a ženy a jsou jako takové označeny?" + }, "opening_hours_24_7": { "override": { "question": "Kdy jsou tyto toalety otevřeny?" @@ -9229,6 +9297,20 @@ "usersettings": { "description": "Speciální vrstva, která není určena k zobrazení na mapě, ale slouží k nastavení uživatelských nastavení", "tagRenderings": { + "a11y-features": { + "mappings": { + "0": { + "then": "Povolení funkcí přístupnosti při použití kláves se šipkami k navigaci na mapě" + } + } + }, + "add-new-feature": { + "mappings": { + "4": { + "then": "Po kliknutí pravým tlačítkem myši nebo dlouhém stisknutí mapy se zobrazí značka, kam lze přidat nový prvek. Kromě toho se vlevo dole zobrazí tlačítko" + } + } + }, "all-questions-at-once": { "mappings": { "0": { @@ -9331,6 +9413,16 @@ } } }, + "more_privacy": { + "mappings": { + "0": { + "then": "Při provádění změn v OpenStreetMap neuvádějte, jak daleko jste byli od změněných objektů." + }, + "1": { + "then": "Při provádění změn v OpenStreetMap zhruba uveďte, jak daleko jste byli od změněných objektů. To pomůže ostatním přispěvatelům pochopit, jak jste změnu provedli" + } + } + }, "picture-license": { "mappings": { "0": { @@ -9359,6 +9451,14 @@ } } }, + "scalebar": { + "mappings": { + "1": { + "then": "Skrytí panelu měřítka" + } + }, + "question": "Má být na mapě zobrazeno měřítko?" + }, "settings-link": { "render": { "special": { @@ -9402,6 +9502,19 @@ "question": "Zobrazit nezpracované/raw tagy OpenStreetMap?", "questionHint": "Tagy jsou atributy, které má každý element. Jedná se o technické údaje, které jsou uloženy v databázi. K úpravám pomocí MapComplete tyto informace nepotřebujete, ale pokročilí uživatelé by je mohli chtít použít jako referenci." }, + "sync-visited-themes": { + "mappings": { + "0": { + "then": "Uložit navštívené tematické mapy a synchronizovat je prostřednictvím openstreetmap.org. OpenStreetMap a všechny aplikace, které používáte, mohou tuto historii vidět" + } + } + }, + "title-editing": { + "render": "

Úprava nastavení

" + }, + "title-privacy-legal": { + "render": "

Soukromí a právní záležitosti

" + }, "translation-completeness": { "mappings": { "0": { diff --git a/langs/layers/de.json b/langs/layers/de.json index a767ad155..0032b3a16 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -543,7 +543,7 @@ "then": "Dieses Kunstwerk dient auch als Mahnmal" }, "1": { - "then": "Dieses Kunstwerk dient nicht als Sitzbank" + "then": "Dieses Kunstwerk dient nicht als Denkmal" } }, "question": "Dient dieses Kunstwerk als Mahnmal?" @@ -5397,7 +5397,7 @@ "delivery": { "mappings": { "0": { - "then": "Dieses Unternehmen liefert nach Hause (eventuell über eine dritte Partei)" + "then": "Dieses Unternehmen liefert nach Hause (möglicherweise über eine dritte Partei)" }, "1": { "then": "Dieses Unternehmen liefert nicht nach Hause" @@ -5447,12 +5447,15 @@ "friture-vegan": { "mappings": { "0": { - "then": "Vegane Snacks sind erhältlich" + "then": "Nur vegane Snacks und Burger erhältlich" }, "1": { - "then": "Nur eine kleine Auswahl an veganen Snacks ist erhältlich" + "then": "Vegane Snacks sind erhältlich" }, "2": { + "then": "Nur eine kleine Auswahl an veganen Snacks ist erhältlich" + }, + "3": { "then": "Es sind keine veganen Snacks verfügbar" } }, @@ -5461,12 +5464,15 @@ "friture-vegetarian": { "mappings": { "0": { - "then": "Vegetarische Snacks sind erhältlich" + "then": "Nur vegetarische Snacks und Burger erhältlich" }, "1": { - "then": "Nur eine kleine Auswahl an vegetarischen Snacks ist erhältlich" + "then": "Vegetarische Snacks sind erhältlich" }, "2": { + "then": "Nur eine kleine Auswahl an vegetarischen Snacks ist erhältlich" + }, + "3": { "then": "Es sind keine vegetarischen Snacks erhältlich" } }, diff --git a/langs/layers/en.json b/langs/layers/en.json index 864b1c041..1fa369943 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -543,7 +543,7 @@ "then": "This artwork also serves as a memorial" }, "1": { - "then": "This artwork does not serve as a bench" + "then": "This artwork does not serve as a memorial" } }, "question": "Does this artwork serve as a memorial?" @@ -5397,7 +5397,7 @@ "delivery": { "mappings": { "0": { - "then": "This business does home delivery (eventually via a third party)" + "then": "This business does home delivery (possibly via a third party)" }, "1": { "then": "This business does not deliver at home" @@ -5447,12 +5447,15 @@ "friture-vegan": { "mappings": { "0": { - "then": "Vegan snacks are available" + "then": "Serves only vegan snacks and burgers" }, "1": { - "then": "A small selection of vegan snacks are available" + "then": "Vegan snacks are available" }, "2": { + "then": "A small selection of vegan snacks are available" + }, + "3": { "then": "No vegan snacks are available" } }, @@ -5461,12 +5464,15 @@ "friture-vegetarian": { "mappings": { "0": { - "then": "Vegetarian snacks are available" + "then": "Serves only vegetarian snacks and burgers" }, "1": { - "then": "Only a small selection of snacks are vegetarian" + "then": "Vegetarian snacks are available" }, "2": { + "then": "Only a small selection of snacks are vegetarian" + }, + "3": { "then": "No vegetarian snacks are available" } }, diff --git a/langs/layers/es.json b/langs/layers/es.json index e1b22ea91..a97819acd 100644 --- a/langs/layers/es.json +++ b/langs/layers/es.json @@ -485,9 +485,6 @@ "mappings": { "0": { "then": "Esta obra de arte también sirve como monumento conmemorativo" - }, - "1": { - "then": "Esta obra de arte no sirve como banco" } }, "question": "¿Sirve esta obra de arte como monumento conmemorativo?" diff --git a/langs/layers/fr.json b/langs/layers/fr.json index 0889b7172..9f93f048a 100644 --- a/langs/layers/fr.json +++ b/langs/layers/fr.json @@ -425,9 +425,6 @@ "mappings": { "0": { "then": "Cette œuvre est un mémorial" - }, - "1": { - "then": "Cette œuvre ne sert pas de banc" } }, "question": "Cet œuvre a-t-elle un rôle de mémorial ?" @@ -3737,13 +3734,13 @@ }, "friture-vegan": { "mappings": { - "0": { + "1": { "then": "Des collations végétaliens sont disponibles" }, - "1": { + "2": { "then": "Quelques snacks végétaliens seulement" }, - "2": { + "3": { "then": "Pas d'en-cas végétaliens disponibles" } }, @@ -3751,13 +3748,13 @@ }, "friture-vegetarian": { "mappings": { - "0": { + "1": { "then": "Des collations végétariens sont disponibles" }, - "1": { + "2": { "then": "Quelques snacks végétariens seulement" }, - "2": { + "3": { "then": "Pas d'en-cas végétariens disponibles" } }, diff --git a/langs/layers/nl.json b/langs/layers/nl.json index 3208a2e5a..b23b74540 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -4497,13 +4497,13 @@ }, "friture-vegan": { "mappings": { - "0": { + "1": { "then": "Er zijn veganistische snacks aanwezig" }, - "1": { + "2": { "then": "Slechts enkele veganistische snacks" }, - "2": { + "3": { "then": "Geen veganistische snacks beschikbaar" } }, @@ -4511,13 +4511,13 @@ }, "friture-vegetarian": { "mappings": { - "0": { + "1": { "then": "Er zijn vegetarische snacks aanwezig" }, - "1": { + "2": { "then": "Slechts enkele vegetarische snacks" }, - "2": { + "3": { "then": "Geen vegetarische snacks beschikbaar" } }, diff --git a/langs/layers/ru.json b/langs/layers/ru.json index 7202e84a3..7c4873e57 100644 --- a/langs/layers/ru.json +++ b/langs/layers/ru.json @@ -74,6 +74,9 @@ "render": "Станция скорой помощи" } }, + "animal_shelter": { + "name": "Приюты для животных" + }, "artwork": { "description": "Разнообразные произведения искусства", "name": "Произведения искусства", @@ -859,6 +862,9 @@ "description": "Этот слой визуализирует направление", "name": "Визуализация направления" }, + "dogpark": { + "name": "парки для собак" + }, "drinking_water": { "name": "Питьевая вода", "presets": { @@ -1066,6 +1072,9 @@ "render": "Велосипед Ghost" } }, + "gps_track": { + "name": "Ваш пройденный путь" + }, "hackerspace": { "description": "Хакерспейс", "name": "Хакерспейс", @@ -1304,6 +1313,13 @@ "render": "Карта" } }, + "maxspeed": { + "tagRenderings": { + "maxspeed-maxspeed": { + "question": "С какой максимальной скоростью разрешено ездить по этой дороге?" + } + } + }, "memorial": { "tagRenderings": { "start_date": { @@ -1976,6 +1992,13 @@ "render": "Тропа" } }, + "transit_routes": { + "tagRenderings": { + "via": { + "question": "Где находится конечный пункт этого автобусного маршрута?" + } + } + }, "tree_node": { "name": "Дерево", "presets": { @@ -2072,6 +2095,9 @@ } } } + }, + "title": { + "render": "Настройки" } }, "vending_machine": { @@ -2095,6 +2121,9 @@ } } }, + "veterinary": { + "name": "ветеринария" + }, "viewpoint": { "name": "Смотровая площадка", "presets": { @@ -2122,12 +2151,51 @@ } }, "waste_basket": { + "filter": { + "1": { + "options": { + "0": { + "question": "Корзина для мусора с дозатором для пакетов (собачьих) экскрементов" + } + } + } + }, "name": "Контейнер для мусора", "presets": { "0": { "title": "Контейнер для мусора" } }, + "tagRenderings": { + "waste-basket-waste-types": { + "mappings": { + "1": { + "then": "Корзина для общих отходов" + }, + "2": { + "then": "Корзина для собачьих экскрементов" + }, + "3": { + "then": "Корзина для сигарет" + }, + "4": { + "then": "Корзина для наркотиков" + }, + "5": { + "then": "Корзина для иголок и других острых предметов" + }, + "6": { + "then": "Корзина для пластика" + }, + "7": { + "then": "Корзина для пластиковой упаковки, металлической упаковки и картонной упаковки из-под напитков (PMD)" + }, + "8": { + "then": "Корзина для бумаг" + } + } + } + }, "title": { "render": "Контейнер для мусора" } diff --git a/langs/layers/uk.json b/langs/layers/uk.json new file mode 100644 index 000000000..e25e13aae --- /dev/null +++ b/langs/layers/uk.json @@ -0,0 +1,274 @@ +{ + "address": { + "description": "Адреси", + "name": "Відомі адреси в OSM", + "tagRenderings": { + "fixme": { + "question": "Що тут треба виправити? Поясніть, будь ласка" + }, + "housenumber": { + "mappings": { + "0": { + "then": "Ця будівля не має номера будинку" + } + }, + "question": "Який номер цього будинку?", + "render": "Номер будинку {addr:housenumber}" + }, + "street": { + "question": "На якій вулиці знаходиться ця адреса?", + "render": "Ця адреса знаходиться на вулиці {addr:street}" + } + }, + "title": { + "render": "Відома адреса" + } + }, + "advertising": { + "description": "Ми доповнимо дані з рекламних об'єктів посиланням, оператором та освітленням", + "name": "Оголошення", + "presets": { + "0": { + "description": "Велика зовнішня рекламна конструкція, зазвичай розташована в місцях з високим трафіком, наприклад, уздовж жвавих доріг", + "title": "білборд" + }, + "1": { + "description": "Велика зовнішня рекламна конструкція, зазвичай розташована в місцях з високим трафіком, наприклад, уздовж жвавих доріг, встановлена на стіні", + "title": "білборд, прикріплений до стіни" + }, + "10": { + "title": "екран, встановлений на тимчасовому укритті" + }, + "11": { + "description": "Шматок водонепроникного текстилю з надрукованим повідомленням, постійно закріплений на стіні", + "title": "брезент" + }, + "12": { + "title": "тотем" + }, + "13": { + "description": "Використовується для рекламних вивісок, неонових вивісок, логотипів та вхідних табличок установ", + "title": "знак" + }, + "14": { + "title": "скульптура" + }, + "15": { + "title": "настінний розпис" + }, + "2": { + "title": "окремо стояча коробка для плакатів" + }, + "3": { + "title": "коробка для плакатів, що кріпиться на стіну" + }, + "4": { + "title": "афішна скринька, що є частиною зупинки громадського транспорту" + }, + "5": { + "description": "Невеликий білборд для місцевої реклами, в основному призначений для пішоходів", + "title": "дошка" + }, + "6": { + "description": "Циліндрична зовнішня конструкція, що показує рекламу", + "title": "стовпчик" + }, + "7": { + "title": "прапор" + }, + "8": { + "title": "екран" + }, + "9": { + "title": "екран, встановлений на стіні" + } + }, + "tagRenderings": { + "Sides": { + "mappings": { + "0": { + "then": "Цей об'єкт має рекламу з одного боку" + }, + "1": { + "then": "Цей об'єкт має рекламу з обох боків" + } + }, + "question": "Зі скількох сторін можна дивитися рекламу?" + }, + "animated": { + "mappings": { + "0": { + "then": "Статичний, завжди показує одне й те саме повідомлення" + }, + "1": { + "then": "Цей об'єкт має вбудований цифровий дисплей для відображення цін або іншого повідомлення" + }, + "2": { + "then": "Поділ - білборд складається з багатьох трикутних призм, які регулярно обертаються" + }, + "3": { + "then": "Прокрутка постерів" + }, + "4": { + "then": "Обертається на себе" + } + }, + "question": "Чи циркулює ця реклама через кілька повідомлень?" + }, + "historic": { + "mappings": { + "0": { + "then": "Це історична рекламна вивіска (реклама підприємства, яке більше не існує, або дуже стара вивіска, що має історичну цінність)" + }, + "1": { + "then": "Ця рекламна вивіска не має історичної цінності (бізнес все ще існує і не має історичної цінності)" + } + }, + "question": "Це знак для бізнесу, який більше не існує або більше не підтримується?" + }, + "luminous_or_lit_advertising": { + "override": { + "+mappings": { + "0": { + "then": "Це неонова лампа" + } + } + } + }, + "message_type": { + "mappings": { + "0": { + "then": "Комерційне повідомлення" + }, + "1": { + "then": "Місцева інформація" + }, + "2": { + "then": "Інформація про безпеку" + }, + "3": { + "then": "Передвиборча реклама" + }, + "4": { + "then": "Інформація, пов'язана з театром, концертами, …" + }, + "5": { + "then": "Повідомлення від неприбуткових організацій" + }, + "6": { + "then": "Щоб висловити свою думку" + }, + "7": { + "then": "Релігійне послання" + }, + "8": { + "then": "Ознака фінансування" + }, + "9": { + "then": "Карта" + } + }, + "question": "Яке повідомлення відображається?" + }, + "operator": { + "question": "Хто керує цим об'єктом?", + "render": "Управляється {operator}" + }, + "ref": { + "question": "Який номер посилання?", + "render": "Номер посилання: {ref}" + }, + "type": { + "mappings": { + "0": { + "then": "Це білборд" + }, + "1": { + "then": "Це дошка" + }, + "10": { + "then": "Це настінний розпис" + }, + "11": { + "then": "Це кахельна плитка - реклама намальована на плитці" + } + } + } + } + }, + "artwork": { + "description": "Відкрита карта статуй, бюстів, графіті та інших творів мистецтва по всьому світу" + }, + "usersettings": { + "description": "Спеціальний шар, який не призначений для відображення на карті, але використовується для встановлення користувацьких налаштувань", + "tagRenderings": { + "a11y-features": { + "mappings": { + "0": { + "then": "Увімкніть функції доступності, коли для навігації по карті використовуються клавіші зі стрілками" + }, + "1": { + "then": "Завжди вмикайте функції доступності" + }, + "2": { + "then": "Ніколи не вмикайте функції доступності" + } + }, + "question": "Які елементи доступності слід застосовувати?" + }, + "add-new-feature": { + "mappings": { + "0": { + "then": "Додавання нового об'єкта здійснюється за допомогою кнопки внизу ліворуч. Клацання по карті нічого не робить" + }, + "1": { + "then": "При натисканні або торканні мапи з'являється маркер, де додається новий об'єкт" + }, + "2": { + "then": "При натисканні правою кнопкою миші або тривалому утриманні мапи з'являється маркер, де можна додати новий об'єкт" + }, + "3": { + "then": "При натисканні або торканні мапи з'являється маркер, де можна додати новий об'єкт. Крім того, внизу ліворуч відображається кнопка" + }, + "4": { + "then": "При натисканні правою кнопкою миші або тривалому утриманні на мапі з'являється маркер, куди можна додати новий об'єкт. Крім того, внизу ліворуч відображається кнопка" + } + }, + "question": "Як має відкриватися меню для додавання нового об'єкту?" + }, + "all-questions-at-once": { + "mappings": { + "0": { + "then": "Показати всі питання в інфобокс разом" + }, + "1": { + "then": "Показувати питання по черзі" + } + }, + "question": "Чи повинні питання для невідомих полів даних з'являтися по одному або разом?" + }, + "background-layer": { + "mappings": { + "0": { + "then": "Використовуйте фоновий шар за замовчуванням" + }, + "1": { + "then": "Використовувати OpenStreetMap-carto як шар за замовчуванням" + }, + "2": { + "then": "Використовувати аерофотознімки як фон за замовчуванням" + }, + "3": { + "then": "Використовувати мапу на основі не-openstreetmap як фон за замовчуванням" + }, + "4": { + "then": "Використовувати поточний фоновий шар ({__current_background}) як фон за замовчуванням" + }, + "5": { + "then": "Використовувати фоновий шар {mapcomplete-preferred-background-layer} як фон за замовчуванням" + } + } + } + } + } +} \ No newline at end of file diff --git a/langs/ru.json b/langs/ru.json index 5084c1959..6346cb98d 100644 --- a/langs/ru.json +++ b/langs/ru.json @@ -27,8 +27,18 @@ "panelIntro": "

Ваша личная тема

Активируйте свои любимые слои из официальных тем", "reload": "Обновить данные" }, + "favouritePoi": { + "button": { + "markAsFavouriteTitle": "Отметьте это место как любимое", + "unmarkNotDeleted": "Эта точка не будет удалена и по-прежнему будет видна на соответствующей карте для вас и других людей" + }, + "tab": "Ваши избранные и отзывы" + }, "general": { "about": "С лёгкостью редактируйте и дополняйте OpenStreetMap на определённую тему", + "aboutMapComplete": { + "intro": "Используйте MapComplete для добавления информации OpenStreetMap в отдельную тему. Отвечайте на вопросы, и через несколько минут ваши вклады будут доступны везде. В большинстве тем вы можете добавлять изображения или даже оставлять отзывы. Сопровождающий тему определяет элементы, вопросы и языки для нее." + }, "add": { "addNew": "Добавить новую {category} здесь", "confirmButton": "Добавить {category} сюда.
Ваш вклад будет виден каждому
", @@ -50,17 +60,26 @@ }, "mapContributionsBy": "Текущие видимые данные имеют правки, сделанные {contributors}", "mapContributionsByAndHidden": "Текущие видимые данные имеют правки, сделанные {contributors} и ещё {hiddenCount} пользователями", + "openOsmcha": "Посмотреть последние изменения, сделанные с помощью {theme}", + "openOsmchaLastWeek": "Просмотр правок за последние 7 дней", + "openThemeDocumentation": "Открыть документацию для тематической карты {name}", "themeBy": "Тема поддерживается {author}" }, "back": "Назад", + "backToIndex": "Посмотреть все тематические карты", "backgroundMap": "Фоновая карта", "cancel": "Отмена", "customThemeIntro": "

Пользовательские темы

Это ранее просмотренные темы, созданные пользователями.", "download": { - "downloadGpx": "Скачать файл GPX" + "downloadGpx": "Скачать файл GPX", + "title": "Скачать" }, "error": "Что-то пошло не так", "fewChangesBefore": "Пожалуйста, ответьте на несколько вопросов о существующих точках, прежде чем добавить новую точку.", + "filterPanel": { + "disableAll": "Отключить все", + "enableAll": "Включить все" + }, "getStartedLogin": "Войти с помощью OpenStreetMap, чтобы начать работу", "getStartedNewAccount": " или создать новую учетную запись", "goToInbox": "Открыть входящие сообщения", @@ -70,8 +89,17 @@ }, "loginToStart": "Войдите, чтобы ответить на этот вопрос", "loginWithOpenStreetMap": "Войти с помощью OpenStreetMap", + "logout": "Выйти из системы", + "menu": { + "aboutCurrentThemeTitle": "Об этой карте", + "filter": "Фильтр данных", + "showIntroduction": "Показать введение", + "title": "Меню" + }, "morescreen": { "createYourOwnTheme": "Создать собственную тему MapComplete с чистого листа", + "hiddenExplanation": "Эти темы доступны только тем, у кого есть ссылка. Вы обнаружили {hidden_discovered} из {total_hidden} скрытых тем.", + "noSearch": "Показать все темы", "requestATheme": "Если вам нужен особенный квест, запросите его в issue-трекере", "streetcomplete": "Другое, похожее приложение — StreetComplete." }, @@ -108,7 +136,10 @@ "save": "Сохранить", "search": { "error": "Что-то пошло не так…", + "instructions": "Используйте строку поиска выше, чтобы найти местоположение, фильтры или другие тематические карты", "nothing": "Ничего не найдено…", + "recentThemes": "Недавно посещенные карты", + "recents": "Недавно увиденные места", "search": "Найти место", "searching": "Поиск…" }, @@ -118,7 +149,8 @@ "fsUserbadge": "Включить кнопку входа в систему", "fsWelcomeMessage": "Показать всплывающее окно с приветствием и соответствующие вкладки", "intro": "

Поделиться этой картой

Поделитесь этой картой, скопировав ссылку ниже и отправив её друзьям и близким:", - "thanksForSharing": "Спасибо, что поделились!" + "thanksForSharing": "Спасибо, что поделились!", + "title": "Поделитесь этой картой" }, "skip": "Пропустить вопрос", "weekdays": { @@ -139,7 +171,14 @@ "tuesday": "Вторник", "wednesday": "Среда" }, - "welcomeBack": "Вы вошли, с возвращением!" + "welcomeBack": "Вы вошли, с возвращением!", + "welcomeExplanation": { + "addNew": "Какой-то объект отсутствует? Используйте кнопку в левом нижнем углу, чтобы добавить новую точку интереса.", + "general": "На этой карте вы можете видеть, редактировать и добавлять точки интереса. Увеличьте масштаб, чтобы увидеть POI, нажмите на одну из них, чтобы просмотреть или отредактировать информацию. Все данные получены и сохранены в OpenStreetMap, которые можно свободно использовать повторно." + }, + "wikipedia": { + "readMore": "Прочитать остальную часть статьи" + } }, "hotkeyDocumentation": { "title": "Горячие клавиши" @@ -150,6 +189,10 @@ "doDelete": "Удалить изображение", "dontDelete": "Отмена", "isDeleted": "Удалено", + "nearby": { + "noNearbyImages": "Близлежащих изображений не найдено", + "seeNearby": "Просмотреть соседние фотографии" + }, "pleaseLogin": "Пожалуйста, войдите в систему, чтобы добавить изображение", "respectPrivacy": "Не фотографируйте людей и номерные знаки. Не загружайте снимки из Google Maps, Google Street View или из других источников с закрытой лицензией.", "uploadDone": "Ваше изображение добавлено. Спасибо за помощь!", @@ -162,6 +205,7 @@ "#": "Эти надписи отображаются над кнопками тем, когда тема не загружена", "featuredThemeTitle": "Интересное на этой неделе", "intro": "MapComplete - это редактор OpenStreetMap, который показывает информацию с разделением по темам.", + "learnMore": "Узнать больше", "logIn": "Войдите чтобы увидеть другие посещённые темы", "pickTheme": "Выберите тему ниже, чтобы начать.", "title": "Добро пожаловать в MapComplete" @@ -186,7 +230,7 @@ "split": { "cancel": "Отмена", "hasBeenSplit": "Этот путь был разделён", - "inviteToSplit": "Разделите эту дорогу на маленькие части. Это позволит дпть больше информации частей дороги.", + "inviteToSplit": "Разделите дорогу на небольшие сегменты. Это позволит придать частям дороги разные свойства.", "loginToSplit": "Вы должны войти в профиль, чтобы разделить дорогу", "split": "Разделить", "splitTitle": "Выберите карту на которой хотите разделить дорогу" diff --git a/langs/themes/ru.json b/langs/themes/ru.json index 84fac43dc..45a603a39 100644 --- a/langs/themes/ru.json +++ b/langs/themes/ru.json @@ -1,4 +1,7 @@ { + "advertising": { + "title": "Реклама" + }, "aed": { "description": "На этой карте вы можете найти и отметить ближайшие дефибрилляторы", "title": "Открытая карта АВД (Автоматизированных внешних дефибрилляторов)" @@ -12,10 +15,19 @@ "shortDescription": "Карта скамеек", "title": "Скамейки" }, + "bicycle_parkings": { + "title": "Велопарковки" + }, + "bicycle_rental": { + "title": "Прокат велосипедов" + }, "bicyclelib": { "description": "Велосипедная библиотека - это место, где велосипеды можно взять на время, часто за небольшую ежегодную плату. Примером использования являются библиотеки велосипедов для детей, что позволяет им сменить велосипед на больший, когда они перерастают свой нынешний велосипед", "title": "Велосипедные библиотеки" }, + "binoculars": { + "title": "Бинокли" + }, "blind_osm": { "title": "OSM для слепых и слабовидящих" }, @@ -56,6 +68,9 @@ }, "title": "Открытая карта скалолазания" }, + "clock": { + "title": "Часы" + }, "cycle_infra": { "title": "Велосипедная инфраструктура" }, @@ -70,16 +85,24 @@ "render": "Улица" } } - } + }, + "title": "Велосипедные дорожки" }, "cyclofix": { "title": "Cyclofix - открытая карта для велосипедистов" }, + "disaster_response": { + "title": "Ликвидация последствий стихийных бедствий и аварийные службы" + }, "drinking_water": { "description": "На этой карте показываются и могут быть легко добавлены общедоступные точки питьевой воды", "title": "Питьевая вода" }, + "education": { + "title": "Образование" + }, "etymology": { + "shortDescription": "Каково происхождение топонима?", "title": "Открытая этимологическая карта" }, "facadegardens": { @@ -111,7 +134,8 @@ } } } - } + }, + "title": "Фасадные сады" }, "food": { "title": "Общественное питание" @@ -119,6 +143,12 @@ "ghostbikes": { "title": "Призрачные велосипеды" }, + "glutenfree": { + "title": "Без глютена" + }, + "guideposts": { + "title": "Указатели" + }, "hackerspaces": { "title": "Хакерспейсы" }, @@ -130,18 +160,43 @@ "healthcare": { "title": "Здравоохранение" }, + "hotels": { + "title": "Гостиницы" + }, + "icecream": { + "title": "Мороженое" + }, + "indoors": { + "title": "Внутри помещений" + }, "kerbs_and_crossings": { "title": "Бордюры и пешеходные переходы" }, "maps": { + "shortDescription": "Эта тема показывает все (туристические) карты, известные OpenStreetMap", "title": "Карта карт" }, "maxspeed": { + "shortDescription": "На этой карте показана разрешенная законом максимальная скорость на каждой дороге.", "title": "Ограничения скорости" }, + "memorials": { + "title": "Памятники" + }, + "nature": { + "shortDescription": "Карта для любителей природы, с интересными POI", + "title": "На природе" + }, + "notes": { + "title": "Заметки в OpenStreetMap" + }, "observation_towers": { + "shortDescription": "Общедоступные башни, с которых можно любоваться видами", "title": "Смотровые башни" }, + "onwheels": { + "title": "Коляски" + }, "openwindpowermap": { "title": "Открытая карта ветроэнергетики" }, @@ -149,7 +204,19 @@ "title": "Парковка" }, "personal": { - "description": "Создать персональную тему на основе доступных слоёв тем. Чтобы отобразить некоторые данные, откройте выбор слоя" + "description": "Создать персональную тему на основе доступных слоёв тем. Чтобы отобразить некоторые данные, откройте выбор слоя", + "title": "Собственная тема" + }, + "pets": { + "description": "На этой карте вы найдете различные интересные места для ваших питомцев: ветеринарные клиники, парки для собак, зоомагазины, рестораны для собак, ...", + "layers": { + "1": { + "override": { + "name": "Заведения, где можно поесть с собаками" + } + } + }, + "title": "Ветеринары, парки для собак и другие удобства для домашних животных" }, "playgrounds": { "description": "На этой карте можно найти игровые площадки и добавить дополнительную информацию", @@ -160,6 +227,7 @@ "title": "Радужные пешеходные переходы" }, "shops": { + "shortDescription": "Редактируемая карта с основной информацией о магазине", "title": "Открытая карта магазинов" }, "sport_pitches": { @@ -167,6 +235,9 @@ "shortDescription": "Карта, отображающая спортивные площадки", "title": "Спортивные площадки" }, + "sports": { + "title": "Спортивные объекты" + }, "street_lighting": { "layers": { "2": { @@ -179,18 +250,28 @@ "title": "Уличное освещение" }, "surveillance": { - "description": "На этой открытой карте можно найти камеры слежения." + "description": "На этой открытой карте можно найти камеры слежения.", + "title": "Наблюдение под наблюдением" }, "toilets": { "description": "Карта общественных туалетов", "title": "Открытая карта туалетов" }, + "transit": { + "title": "Автобусные маршруты" + }, "trees": { "description": "Нанесите все деревья на карту!", "shortDescription": "Карта деревьев", "title": "Деревья" }, + "vending_machine": { + "title": "Торговые автоматы" + }, "waste": { "title": "Мусор" + }, + "waste_basket": { + "title": "Корзины для мусора" } } \ No newline at end of file diff --git a/langs/themes/uk.json b/langs/themes/uk.json new file mode 100644 index 000000000..f9072856a --- /dev/null +++ b/langs/themes/uk.json @@ -0,0 +1,281 @@ +{ + "advertising": { + "description": "Ви коли-небудь замислювалися над тим, скільки реклами знаходиться на наших вулицях і дорогах? За допомогою цієї карти ви можете знайти та додати інформацію про всі рекламні об'єкти, які ви можете знайти на вулиці", + "shortDescription": "Де я можу знайти рекламні об'єкти?", + "title": "Реклама" + }, + "aed": { + "description": "На цій карті можна знайти та позначити найближчі дефібрилятори", + "title": "Дефібрилятори" + }, + "artwork": { + "description": "Відкрита карта статуй, бюстів, графіті та інших творів мистецтва по всьому світу", + "title": "Витвір мистецтва" + }, + "atm": { + "description": "На цій карті показані банкомати, де можна зняти або поповнити рахунок", + "layers": { + "3": { + "override": { + "=tagRenderings": { + "0": { + "render": { + "special": { + "text": "Імпортувати цей банкомат" + } + } + }, + "1": { + "render": "OpenStreetMap знає про банкомат, що знаходиться за {_closest_osm_poi_distance} метрів від нього. " + }, + "2": { + "render": { + "special": { + "message": "Додайте всі запропоновані теги до найближчого банкомату" + } + } + } + } + } + } + }, + "title": "Банкомати" + }, + "bag": { + "description": "Ця тема допомагає імпортувати дані з BAG", + "layers": { + "0": { + "tagRenderings": { + "Reference": { + "mappings": { + "0": { + "then": "Ця будівля не має жодної згадки в Базі даних" + } + }, + "render": "Посилання у BAG має вигляд {ref:bag}" + } + } + }, + "2": { + "description": "Будівлі з реєстру BAG", + "tagRenderings": { + "Build year": { + "mappings": { + "0": { + "then": "Будівництво було розпочато у {_bag_obj:start_date}" + } + }, + "render": "Ця будівля була побудована у {_bag_obj:start_date}" + }, + "Building type": { + "mappings": { + "0": { + "then": "Типом будівлі буде {_bag_obj:construction}" + } + }, + "render": "Тип будівлі - {_bag_obj:building}" + }, + "Import button": { + "mappings": { + "0": { + "then": "Ще не розрахували правильні значення. Оновіть цю сторінку" + } + } + }, + "Reference": { + "render": "Посилання у BAG має вигляд {_bag_obj:ref:bag}" + } + } + } + }, + "shortDescription": "Допоміжний інструмент для імпорту BAG", + "title": "Помічник з імпорту BAG" + }, + "benches": { + "description": "На цій карті показані всі лавки, які зафіксовані в OpenStreetMap: Окремі лавки та лавки, що належать до зупинок громадського транспорту або притулків.", + "shortDescription": "Карта лавок", + "title": "Лавки" + }, + "bicycle_parkings": { + "description": "Карта, що показує всі типи велосипедних парковок", + "title": "Велопарковки" + }, + "bicycle_rental": { + "description": "На цій карті ви знайдете багато станцій прокату велосипедів, що є на OpenStreetMap", + "shortDescription": "Карта зі станціями та пунктами прокату велосипедів", + "title": "Прокат велосипедів" + }, + "bicyclelib": { + "description": "Велобібліотека - це місце, де можна взяти велосипед напрокат, часто за невелику річну плату. Особливий випадок використання - велосипедні бібліотеки для дітей, які дозволяють їм пересісти на більший велосипед, коли вони виростуть зі свого нинішнього", + "title": "Велобібліотеки" + }, + "binoculars": { + "description": "Карта з біноклем, закріплена на місці за допомогою жердини. Зазвичай її можна знайти в туристичних місцях, на оглядових майданчиках, на вершинах панорамних веж або іноді в природних заповідниках.", + "shortDescription": "Карта з фіксованими біноклями", + "title": "Біноклі" + }, + "blind_osm": { + "description": "Допоможіть нанести на карту об'єкти, важливі для незрячих", + "title": "OSM для незрячих" + }, + "bookcases": { + "description": "Публічна книжкова шафа - це невелика вулична шафа, ящик, стара телефонна будка або інший об'єкт, де зберігаються книги. Будь-хто може покласти або взяти книгу. Ця мапа має на меті зібрати всі ці книжкові шафи.", + "title": "Публічні книжкові шафи" + }, + "cafes_and_pubs": { + "description": "Кав'ярні, паби та бари", + "title": "Кафе та паби" + }, + "campersite": { + "description": "На цьому сайті зібрані всі офіційні місця зупинки автокемперів та місця, де можна здати сірі та чорні води. Ви можете додати детальну інформацію про послуги, що надаються, та вартість. Додавайте фотографії та відгуки.", + "overrideAll": { + "tagRenderings+": { + "0": { + "question": "Хто керує цим місцем?", + "render": "Цим закладом керує {operator}" + }, + "1": { + "mappings": { + "0": { + "then": "У цьому місці є електропостачання" + }, + "1": { + "then": "Це місце не має електропостачання" + } + }, + "question": "Чи є тут електропостачання?" + } + } + }, + "shortDescription": "Знайдіть місця для ночівлі з вашим кемпером", + "title": "Кемпінги" + }, + "charging_stations": { + "description": "На цій відкритій карті можна знайти та позначити інформацію про зарядні станції", + "shortDescription": "Карта зарядних станцій по всьому світу", + "title": "Зарядні станції" + }, + "circular_economy": { + "description": "Різноманітні предмети, які допомагають людям ділитися, повторно використовувати або переробляти.", + "layers": { + "5": { + "override": { + "=name": "Магазини секонд-хенду" + } + } + }, + "title": "Переробна економіка" + }, + "climbing": { + "description": "На цій карті ви знайдете різні можливості для скелелазіння, такі як скелелазні зали, боулдерингові зали та скелі на природі.", + "descriptionTail": "Карту сходження спочатку склав Крістіан Нойманн. Будь ласка, зв'яжіться, якщо у вас є відгуки чи запитання.

< p>Проект використовує дані проекту OpenStreetMap.

", + "layers": { + "0": { + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "У що містить об'єкт зазначено, що це загальнодоступне
{_embedding_feature:access:description}" + }, + "1": { + "then": "У функції зазначено, що потрібен дозвіл для доступу
{_embedding_feature:access:description}" + }, + "2": { + "then": "У що містить об'єкт зазначено, що вона доступна лише клієнтам
{_embedding_feature:access:description}" + }, + "3": { + "then": "У що містить функцію зазначено, що вона доступна лише для членів клубу
{_embedding_feature:access:description}" + } + } + }, + "1": { + "mappings": { + "0": { + "then": "Загальнодоступний для всіх" + }, + "1": { + "then": "Для доступу сюди потрібен дозвіл" + }, + "2": { + "then": "Тільки клієнти" + }, + "3": { + "then": "Тільки члени клубу" + } + }, + "question": "Хто може сюди потрапити?" + } + } + } + }, + "1": { + "override": { + "+tagRenderings": { + "0": { + "mappings": { + "0": { + "then": "У цій майстерні ремонтують альпіністське взуття" + }, + "1": { + "then": "Цей магазин не займається ремонтом альпіністського взуття" + } + }, + "question": "Чи ремонтує ця майстерня альпіністське взуття?" + } + } + } + }, + "2": { + "override": { + "+tagRenderings": { + "0": { + "mappings": { + "0": { + "then": "У цій майстерні ремонтують альпіністське взуття" + }, + "1": { + "then": "Цей магазин не займається ремонтом альпіністського взуття" + } + }, + "question": "Чи ремонтує ця майстерня також альпіністське взуття?" + } + }, + "=presets": { + "0": { + "title": "майстерня по ремонту взуття" + } + } + } + } + }, + "title": "Скелелазні тренажерні зали, клуби та місця" + }, + "clock": { + "description": "Карта з усіма громадськими годинниками", + "title": "Годинники" + }, + "cycle_highways": { + "description": "На цій карті показані велодоріжки", + "title": "Велосипедні доріжки" + }, + "cycle_infra": { + "description": "Карта, на якій можна переглядати та редагувати речі, пов'язані з велосипедною інфраструктурою. Зроблено під час #osoc21.", + "shortDescription": "Карта, на якій ви можете переглядати та редагувати речі, пов'язані з велосипедною інфраструктурою.", + "title": "Велосипедна інфраструктура" + }, + "cyclenodes": { + "layers": { + "0": { + "name": "Зв'язки між точками", + "tagRenderings": { + "node2node-survey:date": { + "override": { + "question": "Коли цей зв'язок між точками досліджувався востаннє?" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/langs/uk.json b/langs/uk.json new file mode 100644 index 000000000..1c16f26f5 --- /dev/null +++ b/langs/uk.json @@ -0,0 +1,106 @@ +{ + "advanced": { + "title": "Розширені можливості" + }, + "centerMessage": { + "allFilteredAway": "Жоден з об'єктів не відповідає всім фільтрам", + "loadingData": "Завантаження даних…", + "noData": "У поточному поданні немає відповідних функцій", + "ready": "Готово!", + "retrying": "Не вдалося завантажити дані. Повторна спроба через {count} секунд…", + "zoomIn": "Збільшити масштаб для перегляду або редагування даних" + }, + "communityIndex": { + "available": "Ця спільнота розмовляє {native}", + "intro": "Контактуйте з іншими людьми, щоб познайомитися з ними, вчитися у них, …", + "notAvailable": "Ця спільнота не розмовляє {native}", + "title": "Зв'яжіться з іншими" + }, + "delete": { + "cancel": "Скасувати", + "cannotBeDeleted": "Цей елемент не можна видалити", + "delete": "Видалити", + "deletedTitle": "Видалений елемент", + "explanations": { + "hardDelete": "Цей елемент буде видалено з OpenStreetMap. Його може відновити досвідчений дописувач", + "retagNoOtherThemes": "Ця функція буде перекласифікована і прихована з цієї програми", + "retagOtherThemes": "Цей елемент буде позначений повторно і буде видимий в {otherThemes}", + "selectReason": "Будь ласка, виберіть, чому цей елемент слід видалити", + "softDelete": "Цей елемент буде оновлено та приховано з цієї програми. {reason}" + }, + "isChanged": "Цей елемент був змінений і більше не відповідає цьому шару", + "isDeleted": "Цей елемент видалено", + "isntAPoint": "Видаляти можна лише точки, вибраний об'єкт - це лінія, полігон або зв'язок.", + "loading": "Перегляд властивостей, щоб перевірити, чи можна видалити цей елемент.", + "loginToDelete": "Ви повинні увійти в систему, щоб видалити елемент", + "notEnoughExperience": "Цей елемент був зроблений кимось іншим.", + "onlyEditedByLoggedInUser": "Цей елемент був відредагований тільки вами, ви можете сміливо видалити його.", + "partOfOthers": "Ця точка є частиною деякої лінії або зв'язку і не може бути видалена безпосередньо.", + "readMessages": "У вас є непрочитані повідомлення. Прочитайте їх, перш ніж видаляти елемент - можливо, хтось має відгук", + "reasons": { + "disused": "Цей елемент вимкнений або видалений", + "duplicate": "Цей елемент дублює інший елемент", + "notFound": "Цей елемент не вдалося знайти", + "test": "Це був тестовий елемент - насправді його ніколи не було" + }, + "safeDelete": "Цей елемент можна безпечно видалити.", + "useSomethingElse": "Використовуйте інший OpenStreetMap-редактор, щоб видалити його замість цього", + "whyDelete": "Чому цей елемент слід видалити?" + }, + "external": { + "allAreApplied": "Всі відсутні, зовнішні значення були скопійовані в OpenStreetMap", + "allIncluded": "Дані, завантажені з {source}, містяться в OpenStreetMap", + "apply": "Застосувати", + "applyAll": "Застосувати всі відсутні значення", + "conflicting": { + "intro": "OpenStreetMap має інші значення, ніж веб-сайт з джерелом, для наступних значень.", + "title": "Конфліктуючі елементи" + }, + "currentInOsmIs": "На даний момент OpenStreetMap має наступне значення:", + "done": "Зроблено", + "error": "Не вдалося завантажити пов'язані дані з веб-сайту", + "lastModified": "Зовнішні дані востаннє були змінені {date}", + "loadedFrom": "Наступні дані завантажуються з {source} за допомогою вбудованого JSON-LD", + "missing": { + "intro": "OpenStreetMap не має інформації про наступні атрибути", + "title": "Відсутні елементи" + }, + "noDataLoaded": "Зовнішній веб-сайт не має посилань на дані, які можна було б завантажити", + "overwrite": "Перезапис у OpenStreetMap", + "title": "Структуровані дані завантажуються із зовнішнього веб-сайту" + }, + "favourite": { + "loginNeeded": "

Увійти

Персональний макет доступний лише для користувачів OpenStreetMap", + "reload": "Перезавантажте дані" + }, + "favouritePoi": { + "button": { + "isFavourite": "Наразі це місце позначено як обране і буде відображатися на всіх тематичних мапах MapComplete, які ви відвідаєте.", + "isMarkedShort": "Позначено як улюблену локацію", + "isNotMarkedShort": "Не позначено як обране", + "markAsFavouriteTitle": "Позначте цю локацію як обрану", + "markDescription": "Додайте цю локацію до особистого списку обраних", + "unmark": "Видалити з особистого списку обраних", + "unmarkNotDeleted": "Ця точка не буде видалена і залишиться видимою на відповідній карті для вас та інших користувачів" + }, + "downloadGeojson": "Завантажте обрані у форматі geojson", + "downloadGpx": "Завантажуйте обрані у форматі GPX", + "intro": "Ви позначили {length} локацій як обрані.", + "introPrivacy": "Цей список бачите тільки ви", + "loginToSeeList": "Увійдіть, щоб переглянути список місць, які ви позначили як обрані", + "tab": "Ваші обрані та відгуки", + "title": "Ваші обрані локації" + }, + "general": { + "backToIndex": "Переглянути всі тематичні карти", + "enableGeolocationForSafariLink": "Дізнайтеся, як увімкнути дозвіл на геолокацію в налаштуваннях", + "search": { + "editSearchSyncSettings": "Редагування налаштувань синхронізації", + "editThemeSync": "Редагування налаштувань синхронізації" + }, + "seeIndex": "Дивіться огляд з усіма тематичними картами" + }, + "userinfo": { + "gotoSettings": "Перейдіть до своїх налаштувань на OpenStreetMap.org" + } +} \ No newline at end of file diff --git a/scripts/downloadEli.ts b/scripts/downloadEli.ts index 8a56dd982..2fa15f362 100644 --- a/scripts/downloadEli.ts +++ b/scripts/downloadEli.ts @@ -13,10 +13,13 @@ class DownloadEli extends Script { const url = "https://osmlab.github.io/editor-layer-index/imagery.geojson" // Target should use '.json' instead of '.geojson', as the latter cannot be imported by the build systems const target = args[0] ?? "public/assets/data/editor-layer-index.json" + const targetGlobal = args[1] ?? "src/assets/generated/editor-layer-index-global.json" + const targetBing = args[0] ?? "src/assets/bing.json" const eli: Eli = await Utils.downloadJson(url) const keptLayers: EliEntry[] = [] + const keptGlobalLayers: EliEntry[] = [] console.log("Got", eli.features.length, "ELI-entries") for (let layer of eli.features) { const props = layer.properties @@ -95,18 +98,26 @@ class DownloadEli extends Script { } layer = { properties: layer.properties, type: layer.type, geometry: layer.geometry } - keptLayers.push(layer) + if(layer.geometry === null){ + keptGlobalLayers.push(layer) + }else{ + keptLayers.push(layer) + } } const contents = '{"type":"FeatureCollection",\n "features": [\n' + keptLayers - .filter((l) => l.properties.id !== "Bing") .map((l) => JSON.stringify(l)) .join(",\n") + "\n]}" - const bing = keptLayers.find((l) => l.properties.id === "Bing") + const contentsGlobal = + keptGlobalLayers + .filter((l) => l.properties.id !== "Bing") + .map(l => l.properties) + + const bing = keptGlobalLayers.find((l) => l.properties.id === "Bing") if (bing) { fs.writeFileSync(targetBing, JSON.stringify(bing), { encoding: "utf8" }) console.log("Written", targetBing) @@ -115,6 +126,9 @@ class DownloadEli extends Script { } fs.writeFileSync(target, contents, { encoding: "utf8" }) console.log("Written", keptLayers.length + ", entries to the ELI") + fs.writeFileSync(targetGlobal, JSON.stringify(contentsGlobal,null, " "), { encoding: "utf8" }) + console.log("Written", keptGlobalLayers.length + ", entries to the global ELI") + } } diff --git a/scripts/generateTranslations.ts b/scripts/generateTranslations.ts index 0bde6e9ee..23097aaa6 100644 --- a/scripts/generateTranslations.ts +++ b/scripts/generateTranslations.ts @@ -49,6 +49,9 @@ class TranslationPart { } for (const translationsKey in translations) { const v = translations[translationsKey] + if(Array.isArray(v) && context .endsWith("keywords")){ + continue + } if (typeof v != "string") { console.error( `Non-string object at ${context} in translation while trying to add the translation ` + diff --git a/src/Logic/ImageProviders/ImageUploadManager.ts b/src/Logic/ImageProviders/ImageUploadManager.ts index 311226dd3..ed4ba8b50 100644 --- a/src/Logic/ImageProviders/ImageUploadManager.ts +++ b/src/Logic/ImageProviders/ImageUploadManager.ts @@ -28,6 +28,7 @@ export class ImageUploadManager { private readonly _osmConnection: OsmConnection private readonly _changes: Changes public readonly isUploading: Store + private readonly _reportError: (message: (string | Error | XMLHttpRequest), extramessage?: string) => Promise constructor( layout: LayoutConfig, @@ -37,6 +38,7 @@ export class ImageUploadManager { changes: Changes, gpsLocation: Store, allFeatures: IndexedFeatureSource, + reportError: (message: string | Error | XMLHttpRequest, extramessage?: string ) => Promise ) { this._uploader = uploader this._featureProperties = featureProperties @@ -45,6 +47,7 @@ export class ImageUploadManager { this._changes = changes this._indexedFeatures = allFeatures this._gps = gpsLocation + this._reportError = reportError const failed = this.getCounterFor(this._uploadFailed, "*") const done = this.getCounterFor(this._uploadFinished, "*") @@ -165,6 +168,7 @@ export class ImageUploadManager { } catch (e) { console.error("Could again not upload image due to", e) this.increaseCountFor(this._uploadFailed, featureId) + await this._reportError(e, JSON.stringify({ctx:"While uploading an image in the Image Upload Manager", featureId, author, targetKey})) return undefined } } diff --git a/src/Logic/ImageProviders/Panoramax.ts b/src/Logic/ImageProviders/Panoramax.ts index 96112dce6..71d2a72a0 100644 --- a/src/Logic/ImageProviders/Panoramax.ts +++ b/src/Logic/ImageProviders/Panoramax.ts @@ -23,11 +23,14 @@ export default class PanoramaxImageProvider extends ImageProvider { private static knownMeta: Record = {} - public SourceIcon(img?: { id: string, url: string, host?: string }, location?: { lon: number; lat: number; }): BaseUIElement { + public SourceIcon(img?: { id: string, url: string, host?: string }, location?: { + lon: number; + lat: number; + }): BaseUIElement { const p = new Panoramax(img.host) return new Link(new SvelteUIElement(Panoramax_bw), p.createViewLink({ imageId: img?.id, - location + location, }), true) } @@ -162,6 +165,7 @@ export default class PanoramaxImageProvider extends ImageProvider { export class PanoramaxUploader implements ImageUploader { private readonly _panoramax: AuthorizedPanoramax + maxFileSizeInMegabytes = 100 * 1000 * 1000 // 100MB constructor(url: string, token: string) { this._panoramax = new AuthorizedPanoramax(url, token) @@ -173,15 +177,25 @@ export class PanoramaxUploader implements ImageUploader { absoluteUrl: string }> { // https://panoramax.openstreetmap.fr/api/docs/swagger#/ - const tags = await ExifReader.load(blob) - const hasDate = tags.DateTime !== undefined - const hasGPS = tags.GPSLatitude !== undefined && tags.GPSLongitude !== undefined - const [lon, lat] = currentGps + let tags: ExifReader.Tags = undefined + let hasDate = false + let hasGPS = false + try { + const tags = await ExifReader.load(blob) + hasDate = tags?.DateTime !== undefined + hasGPS = tags?.GPSLatitude !== undefined && tags?.GPSLongitude !== undefined + } catch (e) { + console.error("Could not read EXIF-tags") + } + + let [lon, lat] = currentGps const p = this._panoramax const defaultSequence = (await p.mySequences())[0] const img = await p.addImage(blob, defaultSequence, { + // It might seem odd that we set 'undefined' here - keep in mind that, by default, panoramax will use the EXIF-data + // We only pass variables as fallback! lat: !hasGPS ? lat : undefined, lon: !hasGPS ? lon : undefined, isBlurred: noblur, diff --git a/src/Logic/Osm/Changes.ts b/src/Logic/Osm/Changes.ts index c84fa9b18..a44aa4a02 100644 --- a/src/Logic/Osm/Changes.ts +++ b/src/Logic/Osm/Changes.ts @@ -72,7 +72,7 @@ export class Changes { this.backend = state.osmConnection.Backend() this._reportError = reportError this._changesetHandler = new ChangesetHandler( - state.featureSwitches.featureSwitchIsTesting, + state.featureSwitches?.featureSwitchIsTesting ?? new ImmutableStore(false), state.osmConnection, state.featureProperties, this, @@ -837,7 +837,12 @@ export class Changes { ) // We keep all the refused changes to try them again - this.pendingChanges.setData(refusedChanges.flatMap((c) => c)) + this.pendingChanges.setData(refusedChanges.flatMap((c) => c).filter(c => { + if(c.id === null || c.id === undefined){ + return false + } + return true + })) } catch (e) { console.error( "Could not handle changes - probably an old, pending changeset in localstorage with an invalid format; erasing those", diff --git a/src/Models/RasterLayers.ts b/src/Models/RasterLayers.ts index cde3dddf3..c05d34bb8 100644 --- a/src/Models/RasterLayers.ts +++ b/src/Models/RasterLayers.ts @@ -1,5 +1,7 @@ import { Feature, Polygon } from "geojson" import * as globallayers from "../assets/global-raster-layers.json" +import * as globallayersEli from "../assets/generated/editor-layer-index-global.json" + import * as bingJson from "../assets/bing.json" import { BBox } from "../Logic/BBox" @@ -21,26 +23,37 @@ export class AvailableRasterLayers { } console.debug("Downloading ELI") const eli = await Utils.downloadJson<{ features: EditorLayerIndex }>( - "./assets/data/editor-layer-index.json" + "./assets/data/editor-layer-index.json", ) this._editorLayerIndex = eli.features?.filter((l) => l.properties.id !== "Bing") ?? [] this._editorLayerIndexStore.set(this._editorLayerIndex) return this._editorLayerIndex } - public static globalLayers: ReadonlyArray = globallayers.layers - .filter( - (properties) => - properties.id !== "osm.carto" && properties.id !== "Bing" /*Added separately*/ - ) - .map( + public static readonly globalLayers: ReadonlyArray = AvailableRasterLayers.initGlobalLayers() + + private static initGlobalLayers(): RasterLayerPolygon[] { + const gl: RasterLayerProperties[] = (globallayers["default"] ?? globallayers ).layers + .filter( + (properties) => + properties.id !== "osm.carto" && properties.id !== "Bing", /*Added separately*/ + ) + const glEli: RasterLayerProperties[] = globallayersEli["default"] ?? globallayersEli + const joined = gl.concat(glEli) + if (joined.some(j => !j.id)) { + console.log("Invalid layers:", JSON.stringify(joined .filter(l => !l.id))) + throw "Detected invalid global layer with invalid id" + } + return joined.map( (properties) => { type: "Feature", properties, geometry: BBox.global.asGeometry(), - } + }, ) + } + public static bing = bingJson public static readonly osmCartoProperties: RasterLayerProperties = { id: "osm", @@ -72,18 +85,18 @@ export class AvailableRasterLayers { public static layersAvailableAt( location: Store<{ lon: number; lat: number }>, - enableBing?: Store + enableBing?: Store, ): { store: Store } { const store = { store: undefined } Utils.AddLazyProperty(store, "store", () => - AvailableRasterLayers._layersAvailableAt(location, enableBing) + AvailableRasterLayers._layersAvailableAt(location, enableBing), ) return store } private static _layersAvailableAt( location: Store<{ lon: number; lat: number }>, - enableBing?: Store + enableBing?: Store, ): Store { this.editorLayerIndex() // start the download const availableLayersBboxes = Stores.ListStabilized( @@ -96,8 +109,8 @@ export class AvailableRasterLayers { const lonlat: [number, number] = [loc.lon, loc.lat] return eli.filter((eliPolygon) => BBox.get(eliPolygon).contains(lonlat)) }, - [AvailableRasterLayers._editorLayerIndexStore] - ) + [AvailableRasterLayers._editorLayerIndexStore], + ), ) return Stores.ListStabilized( availableLayersBboxes.map( @@ -119,15 +132,15 @@ export class AvailableRasterLayers { if ( !matching.some( (l) => - l.id === AvailableRasterLayers.defaultBackgroundLayer.properties.id + l.id === AvailableRasterLayers.defaultBackgroundLayer.properties.id, ) ) { matching.push(AvailableRasterLayers.defaultBackgroundLayer) } return matching }, - [enableBing] - ) + [enableBing], + ), ) } } @@ -146,7 +159,7 @@ export class RasterLayerUtils { available: RasterLayerPolygon[], preferredCategory: string, ignoreLayer?: RasterLayerPolygon, - skipLayers: number = 0 + skipLayers: number = 0, ): RasterLayerPolygon { const inCategory = available.filter((l) => l.properties.category === preferredCategory) const best: RasterLayerPolygon[] = inCategory.filter((l) => l.properties.best) @@ -154,7 +167,7 @@ export class RasterLayerUtils { let all = best.concat(others) console.log( "Selected layers are:", - all.map((l) => l.properties.id) + all.map((l) => l.properties.id), ) if (others.length > skipLayers) { all = all.slice(skipLayers) diff --git a/src/Models/ThemeConfig/Conversion/ConversionContext.ts b/src/Models/ThemeConfig/Conversion/ConversionContext.ts index ee38c8c62..3f31103eb 100644 --- a/src/Models/ThemeConfig/Conversion/ConversionContext.ts +++ b/src/Models/ThemeConfig/Conversion/ConversionContext.ts @@ -120,11 +120,11 @@ export class ConversionContext { return new ConversionContext(this.messages, this.path, [...this.operation, key]) } - warn(message: string) { - this.messages.push({ context: this, level: "warning", message }) + warn(...message: (string | number)[]) { + this.messages.push({ context: this, level: "warning", message: message.join(" ") }) } - err(...message: string[]) { + err(...message: (string | number)[]) { this._hasErrors = true this.messages.push({ context: this, level: "error", message: message.join(" ") }) } diff --git a/src/Models/ThemeConfig/Conversion/PrepareLayer.ts b/src/Models/ThemeConfig/Conversion/PrepareLayer.ts index c179d7a18..470bbdd93 100644 --- a/src/Models/ThemeConfig/Conversion/PrepareLayer.ts +++ b/src/Models/ThemeConfig/Conversion/PrepareLayer.ts @@ -596,7 +596,12 @@ class DetectInline extends DesugaringStep { return json } - if(!Object.values(json.render).some(render => render !== "{"+json.freeform.key+"}")){ + if(json.render === undefined){ + context.err("No 'render' defined") + return json + } + + if(!Object.values(json?.render)?.some(render => render !== "{"+json.freeform.key+"}")){ // We only render the current value, without anything more. Not worth inlining return json } diff --git a/src/Models/ThemeConfig/Conversion/Validation.ts b/src/Models/ThemeConfig/Conversion/Validation.ts index 84f0463d4..6309d0866 100644 --- a/src/Models/ThemeConfig/Conversion/Validation.ts +++ b/src/Models/ThemeConfig/Conversion/Validation.ts @@ -20,6 +20,8 @@ import { Translatable } from "../Json/Translatable" import { ConversionContext } from "./ConversionContext" import PointRenderingConfigJson from "../Json/PointRenderingConfigJson" import { PrevalidateLayer } from "./PrevalidateLayer" +import { AvailableRasterLayers } from "../../RasterLayers" +import { eliCategory } from "../../RasterLayerProperties" export class ValidateLanguageCompleteness extends DesugaringStep { private readonly _languages: string[] @@ -28,7 +30,7 @@ export class ValidateLanguageCompleteness extends DesugaringStep { super( "Checks that the given object is fully translated in the specified languages", [], - "ValidateLanguageCompleteness" + "ValidateLanguageCompleteness", ) this._languages = languages ?? ["en"] } @@ -42,18 +44,18 @@ export class ValidateLanguageCompleteness extends DesugaringStep { .filter( (t) => t.tr.translations[neededLanguage] === undefined && - t.tr.translations["*"] === undefined + t.tr.translations["*"] === undefined, ) .forEach((missing) => { context .enter(missing.context.split(".")) .err( `The theme ${obj.id} should be translation-complete for ` + - neededLanguage + - ", but it lacks a translation for " + - missing.context + - ".\n\tThe known translation is " + - missing.tr.textFor("en") + neededLanguage + + ", but it lacks a translation for " + + missing.context + + ".\n\tThe known translation is " + + missing.tr.textFor("en"), ) }) } @@ -70,7 +72,7 @@ export class DoesImageExist extends DesugaringStep { constructor( knownImagePaths: Set, checkExistsSync: (path: string) => boolean = undefined, - ignore?: Set + ignore?: Set, ) { super("Checks if an image exists", [], "DoesImageExist") this._ignore = ignore @@ -103,22 +105,22 @@ export class DoesImageExist extends DesugaringStep { return image } - if(Utils.isEmoji(image)){ + if (Utils.isEmoji(image)) { return image } if (!this._knownImagePaths.has(image)) { if (this.doesPathExist === undefined) { context.err( - `Image with path ${image} not found or not attributed; it is used in ${context}` + `Image with path ${image} not found or not attributed; it is used in ${context}`, ) } else if (!this.doesPathExist(image)) { context.err( - `Image with path ${image} does not exist.\n Check for typo's and missing directories in the path.` + `Image with path ${image} does not exist.\n Check for typo's and missing directories in the path.`, ) } else { context.err( - `Image with path ${image} is not attributed (but it exists); execute 'npm run query:licenses' to add the license information and/or run 'npm run generate:licenses' to compile all the license info` + `Image with path ${image} is not attributed (but it exists); execute 'npm run query:licenses' to add the license information and/or run 'npm run generate:licenses' to compile all the license info`, ) } } @@ -131,7 +133,7 @@ class OverrideShadowingCheck extends DesugaringStep { super( "Checks that an 'overrideAll' does not override a single override", [], - "OverrideShadowingCheck" + "OverrideShadowingCheck", ) } @@ -181,7 +183,7 @@ class MiscThemeChecks extends DesugaringStep { context .enter("layers") .err( - "The 'layers'-field should be an array, but it is not. Did you pase a layer identifier and forget to add the '[' and ']'?" + "The 'layers'-field should be an array, but it is not. Did you pase a layer identifier and forget to add the '[' and ']'?", ) } if (json.socialImage === "") { @@ -215,9 +217,25 @@ class MiscThemeChecks extends DesugaringStep { context .enter("overideAll") .err( - "'overrideAll' is spelled with _two_ `r`s. You only wrote a single one of them." + "'overrideAll' is spelled with _two_ `r`s. You only wrote a single one of them.", ) } + + if (json.defaultBackgroundId + && ![AvailableRasterLayers.osmCartoProperties.id, ...eliCategory ] + .find(l => l === json.defaultBackgroundId) ) { + const background = json.defaultBackgroundId + const match = AvailableRasterLayers.globalLayers.find(l => l.properties.id === background) + if (!match) { + const suggestions = Utils.sortedByLevenshteinDistance(background, + AvailableRasterLayers.globalLayers, l => l.properties.id) + context.enter("defaultBackgroundId") + .warn("The default background layer with id", background, "does not exist or is not a global layer. Perhaps you meant one of:", + suggestions.slice(0, 5).map(l => l.properties.id).join(", "), + "If you want to use a certain category of background image, use", AvailableRasterLayers.globalLayers.join(", ") + ) + } + } return json } } @@ -227,7 +245,7 @@ export class PrevalidateTheme extends Fuse { super( "Various consistency checks on the raw JSON", new MiscThemeChecks(), - new OverrideShadowingCheck() + new OverrideShadowingCheck(), ) } } @@ -237,7 +255,7 @@ export class DetectConflictingAddExtraTags extends DesugaringStep ["_abc"] */ private static extractCalculatedTagNames( - layerConfig?: LayerConfigJson | { calculatedTags: string[] } + layerConfig?: LayerConfigJson | { calculatedTags: string[] }, ) { return ( layerConfig?.calculatedTags?.map((ct) => { @@ -537,16 +555,16 @@ export class DetectShadowedMappings extends DesugaringStep does have `rel='noopener'` set", [], - "ValidatePossibleLinks" + "ValidatePossibleLinks", ) } @@ -601,21 +619,21 @@ export class ValidatePossibleLinks extends DesugaringStep, - context: ConversionContext + context: ConversionContext, ): string | Record { if (typeof json === "string") { if (this.isTabnabbingProne(json)) { context.err( "The string " + - json + - " has a link targeting `_blank`, but it doesn't have `rel='noopener'` set. This gives rise to reverse tabnapping" + json + + " has a link targeting `_blank`, but it doesn't have `rel='noopener'` set. This gives rise to reverse tabnapping", ) } } else { for (const k in json) { if (this.isTabnabbingProne(json[k])) { context.err( - `The translation for ${k} '${json[k]}' has a link targeting \`_blank\`, but it doesn't have \`rel='noopener'\` set. This gives rise to reverse tabnapping` + `The translation for ${k} '${json[k]}' has a link targeting \`_blank\`, but it doesn't have \`rel='noopener'\` set. This gives rise to reverse tabnapping`, ) } } @@ -633,7 +651,7 @@ export class CheckTranslation extends DesugaringStep { super( "Checks that a translation is valid and internally consistent", ["*"], - "CheckTranslation" + "CheckTranslation", ) this._allowUndefined = allowUndefined } @@ -680,7 +698,7 @@ export class ValidateLayerConfig extends DesugaringStep { isBuiltin: boolean, doesImageExist: DoesImageExist, studioValidations: boolean = false, - skipDefaultLayers: boolean = false + skipDefaultLayers: boolean = false, ) { super("Thin wrapper around 'ValidateLayer", [], "ValidateLayerConfig") this.validator = new ValidateLayer( @@ -688,7 +706,7 @@ export class ValidateLayerConfig extends DesugaringStep { isBuiltin, doesImageExist, studioValidations, - skipDefaultLayers + skipDefaultLayers, ) } @@ -716,7 +734,7 @@ export class ValidatePointRendering extends DesugaringStep { .enters("fields", i) .err( `Invalid filter: ${type} is not a valid textfield type.\n\tTry one of ${Array.from( - Validators.availableTypes - ).join(",")}` + Validators.availableTypes, + ).join(",")}`, ) } } @@ -893,13 +911,13 @@ export class DetectDuplicateFilters extends DesugaringStep<{ super( "Tries to detect layers where a shared filter can be used (or where similar filters occur)", [], - "DetectDuplicateFilters" + "DetectDuplicateFilters", ) } convert( json: { layers: LayerConfigJson[]; themes: LayoutConfigJson[] }, - context: ConversionContext + context: ConversionContext, ): { layers: LayerConfigJson[]; themes: LayoutConfigJson[] } { const { layers, themes } = json const perOsmTag = new Map< @@ -963,7 +981,7 @@ export class DetectDuplicateFilters extends DesugaringStep<{ filter: FilterConfigJson }[] >, - layout?: LayoutConfigJson | undefined + layout?: LayoutConfigJson | undefined, ): void { if (layer.filter === undefined || layer.filter === null) { return @@ -1003,7 +1021,7 @@ export class DetectDuplicatePresets extends DesugaringStep { super( "Detects mappings which have identical (english) names or identical mappings.", ["presets"], - "DetectDuplicatePresets" + "DetectDuplicatePresets", ) } @@ -1014,13 +1032,13 @@ export class DetectDuplicatePresets extends DesugaringStep { if (new Set(enNames).size != enNames.length) { const dups = Utils.Duplicates(enNames) const layersWithDup = json.layers.filter((l) => - l.presets.some((p) => dups.indexOf(p.title.textFor("en")) >= 0) + l.presets.some((p) => dups.indexOf(p.title.textFor("en")) >= 0), ) const layerIds = layersWithDup.map((l) => l.id) context.err( `This theme has multiple presets which are named:${dups}, namely layers ${layerIds.join( - ", " - )} this is confusing for contributors and is probably the result of reusing the same layer multiple times. Use \`{"override": {"=presets": []}}\` to remove some presets` + ", ", + )} this is confusing for contributors and is probably the result of reusing the same layer multiple times. Use \`{"override": {"=presets": []}}\` to remove some presets`, ) } @@ -1035,17 +1053,17 @@ export class DetectDuplicatePresets extends DesugaringStep { Utils.SameObject(presetATags, presetBTags) && Utils.sameList( presetA.preciseInput.snapToLayers, - presetB.preciseInput.snapToLayers + presetB.preciseInput.snapToLayers, ) ) { context.err( `This theme has multiple presets with the same tags: ${presetATags.asHumanString( false, false, - {} + {}, )}, namely the preset '${presets[i].title.textFor("en")}' and '${presets[ j - ].title.textFor("en")}'` + ].title.textFor("en")}'`, ) } } @@ -1070,13 +1088,13 @@ export class ValidateThemeEnsemble extends Conversion< super( "Validates that all themes together are logical, i.e. no duplicate ids exists within (overriden) themes", [], - "ValidateThemeEnsemble" + "ValidateThemeEnsemble", ) } convert( json: LayoutConfig[], - context: ConversionContext + context: ConversionContext, ): Map< string, { @@ -1127,11 +1145,11 @@ export class ValidateThemeEnsemble extends Conversion< context.err( [ "The layer with id '" + - id + - "' is found in multiple themes with different tag definitions:", + id + + "' is found in multiple themes with different tag definitions:", "\t In theme " + oldTheme + ":\t" + oldTags.asHumanString(false, false, {}), "\tIn theme " + theme.id + ":\t" + tags.asHumanString(false, false, {}), - ].join("\n") + ].join("\n"), ) } } diff --git a/src/Models/ThemeViewState.ts b/src/Models/ThemeViewState.ts index 1b947ff0a..6ce86801d 100644 --- a/src/Models/ThemeViewState.ts +++ b/src/Models/ThemeViewState.ts @@ -369,7 +369,8 @@ export default class ThemeViewState implements SpecialVisualizationState { this.osmConnection, this.changes, this.geolocation.geolocationState.currentGPSLocation, - this.indexedFeatures + this.indexedFeatures, + this.reportError ) this.favourites = new FavouritesFeatureSource(this) const longAgo = new Date() @@ -1002,7 +1003,7 @@ export default class ThemeViewState implements SpecialVisualizationState { console.error("Got (in themeViewSTate.reportError):", message, extramessage) return } - const isTesting = this.featureSwitchIsTesting.data + const isTesting = this.featureSwitchIsTesting?.data console.log( isTesting ? ">>> _Not_ reporting error to report server as testmode is on" @@ -1032,7 +1033,7 @@ export default class ThemeViewState implements SpecialVisualizationState { } if (extramessage) { - message += "(" + extramessage + ")" + message += " (" + extramessage + ")" } const stacktrace: string = new Error().stack diff --git a/src/UI/Image/UploadImage.svelte b/src/UI/Image/UploadImage.svelte index d6dbe367e..ed8431ea6 100644 --- a/src/UI/Image/UploadImage.svelte +++ b/src/UI/Image/UploadImage.svelte @@ -63,7 +63,7 @@ return } - await state?.imageUploadManager.uploadImageAndApply(file, tags, targetKey, noBlur) + await state?.imageUploadManager?.uploadImageAndApply(file, tags, targetKey, noBlur) } catch (e) { console.error(e) state.reportError(e, "Could not upload image") diff --git a/src/UI/OpeningHours/OpeningHoursState.ts b/src/UI/OpeningHours/OpeningHoursState.ts index 1d5dccc6c..5e8b68d15 100644 --- a/src/UI/OpeningHours/OpeningHoursState.ts +++ b/src/UI/OpeningHours/OpeningHoursState.ts @@ -93,10 +93,10 @@ export default class OpeningHoursState { let str = OH.ToString(rules) + ";" const ph = this.phSelectorValue.data if (ph) { - str += ph + ";" + str += " " + ph + ";" // There must be a space after every ";" } - str += this.leftoverRules.data.join(";") + ";" + str += this.leftoverRules.data.join("; ") + ";" str = str.trim() while (str.endsWith(";")) { diff --git a/src/UI/Studio/SchemaBasedArray.svelte b/src/UI/Studio/SchemaBasedArray.svelte index f61b15495..9767baea0 100644 --- a/src/UI/Studio/SchemaBasedArray.svelte +++ b/src/UI/Studio/SchemaBasedArray.svelte @@ -56,7 +56,7 @@ currentValue.ping() if (isTagRenderingBlock) { - state.highlightedItem.setData({ path: [...path, currentValue.data.length - 1], schema }) + state.highlightedItem?.setData({ path: [...path, currentValue.data.length - 1], schema }) } } diff --git a/src/assets/bing.json b/src/assets/bing.json index 0a75c21a3..e1f8ccaef 100644 --- a/src/assets/bing.json +++ b/src/assets/bing.json @@ -1 +1 @@ -{"properties":{"name":"Bing Maps Aerial","id":"Bing","url":"https://ecn.t3.tiles.virtualearth.net/tiles/a{quadkey}.jpeg?g=14634&pr=odbl&n=f","type":"bing","category":"photo","min_zoom":1,"max_zoom":22},"type":"Feature","geometry":null} \ No newline at end of file +{"properties":{"name":"Bing Maps Aerial","id":"Bing","url":"https://ecn.t3.tiles.virtualearth.net/tiles/a{quadkey}.jpeg?g=14738&pr=odbl&n=f","type":"bing","category":"photo","min_zoom":1,"max_zoom":22},"type":"Feature","geometry":null} \ No newline at end of file diff --git a/src/assets/generated/editor-layer-index-global.json b/src/assets/generated/editor-layer-index-global.json new file mode 100644 index 000000000..f6818d833 --- /dev/null +++ b/src/assets/generated/editor-layer-index-global.json @@ -0,0 +1,131 @@ +[ + { + "name": "CyclOSM", + "id": "cyclosm", + "url": "https://{switch:a,b,c}.tile-cyclosm.openstreetmap.fr/cyclosm/{zoom}/{x}/{y}.png", + "attribution": { + "text": "Rendering: CyclOSM (hosted by OpenStreetMap France) © Map data OpenStreetMap contributors", + "url": "https://www.cyclosm.org/" + }, + "type": "tms", + "category": "osmbasedmap", + "max_zoom": 20 + }, + { + "name": "Esri World Imagery", + "id": "EsriWorldImagery", + "url": "https://{switch:services,server}.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/tile/{zoom}/{y}/{x}", + "attribution": { + "required": true, + "text": "Terms & Feedback", + "url": "https://wiki.openstreetmap.org/wiki/Esri" + }, + "type": "tms", + "category": "photo", + "max_zoom": 22, + "default": true + }, + { + "name": "Esri World Imagery (Clarity) Beta", + "id": "EsriWorldImageryClarity", + "url": "https://clarity.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/MapServer/tile/{zoom}/{y}/{x}", + "attribution": { + "required": true, + "text": "Terms & Feedback", + "url": "https://wiki.openstreetmap.org/wiki/Esri" + }, + "type": "tms", + "category": "photo", + "max_zoom": 22, + "default": true + }, + { + "name": "Mapbox Satellite", + "id": "Mapbox", + "url": "https://{switch:a,b,c,d}.tiles.mapbox.com/v4/mapbox.satellite/{zoom}/{x}/{y}.jpg?access_token=pk.eyJ1Ijoib3BlbnN0cmVldG1hcCIsImEiOiJjbGZkempiNDkyandvM3lwY3M4MndpdWdzIn0.QnvRv52n3qffVEKmQa9vJA", + "attribution": { + "required": true, + "text": "Terms & Feedback", + "url": "https://www.mapbox.com/about/maps" + }, + "type": "tms", + "category": "photo", + "max_zoom": 22, + "default": true + }, + { + "name": "OpenAerialMap Mosaic, by Kontur.io", + "id": "OpenAerialMapMosaic", + "url": "https://apps.kontur.io/raster-tiler/oam/mosaic/{zoom}/{x}/{y}.png", + "type": "tms", + "category": "photo", + "min_zoom": 1, + "max_zoom": 31, + "default": true + }, + { + "name": "OpenStreetMap (Basque Style)", + "id": "osmfr-basque", + "url": "https://tile.openstreetmap.bzh/eu/{zoom}/{x}/{y}.png", + "attribution": { + "required": true, + "text": "Tiles © OpenStreetMap France, data © OpenStreetMap contributors, ODbL", + "url": "https://www.openstreetmap.org/" + }, + "type": "tms", + "category": "osmbasedmap", + "max_zoom": 20 + }, + { + "name": "OpenStreetMap (Breton Style)", + "id": "osmfr-breton", + "url": "https://tile.openstreetmap.bzh/br/{zoom}/{x}/{y}.png", + "attribution": { + "required": true, + "text": "Tiles © OpenStreetMap France, data © OpenStreetMap contributors, ODbL", + "url": "https://www.openstreetmap.org/" + }, + "type": "tms", + "category": "osmbasedmap", + "max_zoom": 20 + }, + { + "name": "OpenStreetMap (French Style)", + "id": "osmfr", + "url": "https://{switch:a,b,c}.tile.openstreetmap.fr/osmfr/{zoom}/{x}/{y}.png", + "attribution": { + "required": true, + "text": "Tiles © cquest@Openstreetmap France, data © OpenStreetMap contributors, ODBL", + "url": "https://www.openstreetmap.org/" + }, + "type": "tms", + "category": "osmbasedmap", + "max_zoom": 20 + }, + { + "name": "OpenStreetMap (HOT Style)", + "id": "HDM_HOT", + "url": "https://{switch:a,b,c}.tile.openstreetmap.fr/hot/{zoom}/{x}/{y}.png", + "attribution": { + "required": true, + "text": "© OpenStreetMap contributors, tiles courtesy of Humanitarian OpenStreetMap Team", + "url": "https://www.hotosm.org/" + }, + "type": "tms", + "category": "osmbasedmap", + "max_zoom": 20 + }, + { + "name": "OpenStreetMap (Occitan Style)", + "id": "osmfr-occitan", + "url": "https://tile.openstreetmap.bzh/oc/{zoom}/{x}/{y}.png", + "attribution": { + "required": true, + "text": "Tiles © OpenStreetMap France, data © OpenStreetMap contributors, ODbL", + "url": "https://www.openstreetmap.org/" + }, + "type": "tms", + "category": "osmbasedmap", + "max_zoom": 20 + } +] \ No newline at end of file diff --git a/src/assets/used_languages.json b/src/assets/used_languages.json index d8e4d9444..e4163a517 100644 --- a/src/assets/used_languages.json +++ b/src/assets/used_languages.json @@ -1 +1 @@ -{"languages":["ca","cs","da","de","en","eo","es","eu","fi","fil","fr","gl","he","hu","id","it","ja","nb_NO","nl","pa_PK","pl","pt","pt_BR","ru","sl","sv","zgh","zh_Hans","zh_Hant"]} \ No newline at end of file +{"languages":["ca","cs","da","de","en","eo","es","eu","fi","fil","fr","gl","he","hu","id","it","ja","nb_NO","nl","pa_PK","pl","pt","pt_BR","ru","sl","sv","uk","zgh","zh_Hans","zh_Hant"]} \ No newline at end of file