From eee9f34cbc8ccb9a20ab822b17b8c540ba3f64db Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Wed, 15 Aug 2018 08:20:21 +0200 Subject: [PATCH 01/49] =?UTF-8?q?Revert=20"Translated=20using=20Weblate=20?= =?UTF-8?q?(=C4=8Ce=C5=A1tina)"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 8826f7faf809d4db1121e094753a139955a5d65e. --- translations/OpenOrienteering_cs.ts | 108 ++++++++++++++-------------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/translations/OpenOrienteering_cs.ts b/translations/OpenOrienteering_cs.ts index 4ad7c1704..e063e6ca2 100644 --- a/translations/OpenOrienteering_cs.ts +++ b/translations/OpenOrienteering_cs.ts @@ -1459,7 +1459,7 @@ Format (%1) does not support export - Formát (%1) nepodporuje vyvádění + Formát (%1) nepodporuje export @@ -1525,7 +1525,7 @@ Import with GDAL/OGR: - Zavedení s GDAL/OGR: + Import s GDAL/OGR: @@ -1624,7 +1624,7 @@ File import and export - Zavedení a vyvedení souboru + Import a export souboru @@ -2468,7 +2468,7 @@ Format (%1) does not support import - Formát (%1) nepodporuje zavedení + Formát (%1) nepodporuje import @@ -3049,7 +3049,7 @@ Stiskněte Ne pro vyhledání jiného souborového formátu. Cannot export the map as "%1" because saving as %2 (.%3) is not supported. - Mapu nelze vyvést jako + Mapu nelze exportovat jako "%1", protože uložení jako %2 (.%3) není podporováno. @@ -3058,7 +3058,7 @@ protože uložení jako %2 (.%3) není podporováno. Cannot export the map as "%1" because the format is unknown. - Mapu nelze vyvést jako + Mapu nelze exportovat jako "%1", protože formát je neznámý. @@ -3077,7 +3077,7 @@ protože formát je neznámý. The map export generated warnings. - Při vyvádění mapy se vyskytla varovná hlášení. + Při exportu mapy se vyskytla varovná hlášení. @@ -3089,7 +3089,7 @@ protože formát je neznámý. The map import generated warnings. - Při zavádění mapy se vyskytla varovná hlášení. + Při importu mapy se vyskytla varovná hlášení. @@ -3129,7 +3129,7 @@ Soubor nelze otevřít pro čtení. Nothing to import. - Nic k zavedení. + Nic k importu. @@ -3159,14 +3159,14 @@ Změnit měřítko importovaných dat na měřítko mapy? Import... - Zavést... + Import... Symbol replacement was canceled. Import the data anyway? Nahrazení symbolů bylo zrušeno. -Zavést data tak jako tak? +Importovat data tak jako tak? @@ -3646,7 +3646,7 @@ Zavést data tak jako tak? Import... - Zavést... + Import... @@ -3761,12 +3761,12 @@ Zavést data tak jako tak? Tag editor - Editor značek + Editor tagů Show/Hide the tag editor window - Ukázat/Skrýt okno s editorem značek + Ukázat/Skrýt okno s editorem tagů @@ -3942,7 +3942,7 @@ Zavést data tak jako tak? Print / Export is not available in this program version! - Tisk/Vyvedení není v této verzi programu dostupné! + Tisk / Export není v této verzi programu dostupný! @@ -4037,7 +4037,7 @@ Zavést data tak jako tak? Tag Editor - Editor značek + Editor tagů Tag Selector @@ -4238,7 +4238,7 @@ symbolů Cannot import the selected map file because it could not be loaded. - Vybraný soubor s mapou nelze zavést, protože se jej nepodařilo nahrát. + Vybraný soubor s mapou nelze importovat, protože se jej nepodařilo nahrát. @@ -4303,7 +4303,7 @@ symbolů &Export as... - &Vyvést jako ... + &Exportovat jako ... @@ -4494,7 +4494,7 @@ symbolů Import %1, GPX, OSM or DXF file - Zavést soubor %1, GPX, OSM nebo DXF + Importovat soubor %1, GPX, OSM nebo DXF @@ -4509,7 +4509,7 @@ symbolů Cannot import the selected file because its file format is not supported. - Vybraný soubor se nepodařilo zavést, protože jeho formát není podporován. + Vybraný soubor se nepodařilo importovat, protože jeho formát není podporován. @@ -4988,12 +4988,12 @@ mapy. Změna zvětšení je možná pomocí kolečka myši. Unable to export fill pattern shift for an area object - Nelze vyvést posun vzoru výplně pro objekt plochy + Nelze exportovat posun vzoru výplně pro objekt plochy Unable to export template: file type of "%1" is not supported yet - Nelze vyvést podklad: Souborový typ "%1" není podporován + Nelze exportovat podklad: Souborový typ "%1" není podporován @@ -5024,7 +5024,7 @@ mapy. Změna zvětšení je možná pomocí kolečka myši. In line symbol "%1", cannot export the borders correctly. - V liniovém symbolu "%1" nemohou být okraje správně vyvedeny. + V liniovém symbolu "%1" nemohou být okraje správně exportovány. @@ -5078,9 +5078,9 @@ mapy. Změna zvětšení je možná pomocí kolečka myši. %n color separation(s) were skipped, reason: Import disabled. - Byla přeskočena %n barevná separace. Důvod: Zavedení zakázáno. - Byly přeskočeny %n barevné separace. Důvod: Zavedení zakázáno. - Bylo přeskočeno %n barevných separací. Důvod: Zavedení zakázáno. + Byla přeskočena %n barevná separace. Důvod: Import zakázán. + Byly přeskočeny %n barevné separace. Důvod: Import zakázán. + Bylo přeskočeno %n barevných separací. Důvod: Import zakázán. @@ -5096,12 +5096,12 @@ mapy. Změna zvětšení je možná pomocí kolečka myši. Unable to import symbol "%3" (%1.%2) - Nelze zavést symbol "%3" (%1.%2) + Nelze importovat symbol "%3" (%1.%2) OCAD import layer - Vrstva zavedení OCAD + Vrstva importu OCAD @@ -5136,32 +5136,32 @@ mapy. Změna zvětšení je možná pomocí kolečka myši. During import of text symbol %1: ignoring justified alignment - Při zavádění textového symbolu %1: přehlíží se zarovnání do bloku + Při importu textového symbolu %1: přehlíží se zarovnání do bloku During import of text symbol %1: ignoring custom weight (%2) - Při zavádění textového symbolu %1 se přehlíží vlastní tloušťka písma (%2) + Při importu textového symbolu %1 se ignoruje vlastní tloušťka písma (%2) During import of text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet - Při zavádění textového symbolu %1 jsou nastaveny vlastní rozestupy znaků. Jeho provedení zatím neodpovídá chování v OCADu + Při importu textového symbolu %1 jsou nastaveny vlastní rozestupy znaků. Jeho provedení zatím neodpovídá chování v OCADu During import of text symbol %1: ignoring custom word spacing (%2%) - Při zavádění textového symbolu %1 se přehlíží vlastní rozestupy slov (%2%) + Při importu textového symbolu %1 se přehlíží vlastní rozestupy slov (%2%) During import of text symbol %1: ignoring custom indents (%2/%3) - Při zavádění textového symbolu %1 se přehlíží vlastní odsazení (%2/%3) + Při importu textového symbolu %1 se ignoruje vlastní odsazení (%2/%3) During import of text symbol %1: ignoring text framing (mode %2) - Při zavádění textového symbolu %1 se přehlíží rámování textu (režim %2) + Při importu textového symbolu %1 se ignoruje rámování textu (režim %2) @@ -5171,7 +5171,7 @@ mapy. Změna zvětšení je možná pomocí kolečka myši. Unable to import rectangle object - Nelze zavést obdélníkový objekt + Nelze importovat obdélníkový objekt @@ -5186,12 +5186,12 @@ mapy. Změna zvětšení je možná pomocí kolečka myši. Unable to import template: background "%1" doesn't seem to be a raster image - Nelze zavést podklad: Zdá se, že "%1" není rastrovým obrázkem + Nelze importovat podklad: Zdá se, že "%1" není rastrovým obrázkem Trying to import a text object with unknown coordinate format - Pokus o zavedení textového objektu s neznámým formátem souřadnic + Pokus o import textového objektu s neznámým formátem souřadnic @@ -5282,7 +5282,7 @@ mapy. Změna zvětšení je možná pomocí kolečka myši. Unable to import symbol %1.%2 "%3": %4 - Nelze zavést symbol %1.%2 "%3": %4 + Nelze importovat symbol %1.%2 "%3": %4 @@ -5292,7 +5292,7 @@ mapy. Změna zvětšení je možná pomocí kolečka myši. Unable to import template: "%1" is not a supported template type. - Nelze zavést podklad: "%1" není podporovaný typ podkladu. + Nelze importovat podklad: "%1" není podporovaný typ podkladu. @@ -5430,7 +5430,7 @@ mapy. Změna zvětšení je možná pomocí kolečka myši. Unable to import rectangle object - Nelze zavést obdélníkový objekt + Nelze importovat obdélníkový objekt @@ -5440,7 +5440,7 @@ mapy. Změna zvětšení je možná pomocí kolečka myši. Trying to import a text object with unknown coordinate format - Pokus o zavedení textového objektu s neznámým formátem souřadnic + Pokus o import textového objektu s neznámým formátem souřadnic @@ -5833,7 +5833,7 @@ mapy. Změna zvětšení je možná pomocí kolečka myši. OpenOrienteering::PrintWidget Export to PDF or PS - Vyvést jako PDF nebo PS + Export do PDF nebo PS @@ -6024,17 +6024,17 @@ barev Export... - Vyvést... + Export... PDF export - Vyvést jako PDF + Exportovat jako PDF Image export - Vyvést jako obrázek + Exportovat jako obrázek @@ -6076,7 +6076,7 @@ barev A non-standard view mode is activated. Are you sure to print / export the map like this? - Je zapnut zvláštní režim zobrazení. Opravdu chcete mapu takto vytisknout/vyvést? + Je aktivní nestandardní režim zobrazení. Opravdu chcete mapu takto vytisknout / exportovat? @@ -6101,7 +6101,7 @@ barev Failed to prepare the PDF export. - Nepodařilo se připravit vyvedení do PDF. + Nepodařilo se připravit export do PDF. @@ -6120,7 +6120,7 @@ barev Export map ... Check original - Vyvést mapu... + Exportovat mapu... @@ -6158,7 +6158,7 @@ barev Failed to finish the PDF export. - Nepodařilo se dokončit vyvedení do PDF. + Nepodařilo se dokončit export do PDF. @@ -6263,7 +6263,7 @@ barev Import all new symbols, even if not used as replacement - Zavést všechny nové symboly, i když nejsou použity pro nahrazení + Importovat všechny nové symboly, i když nejsou použity pro nahrazení @@ -7617,7 +7617,7 @@ Pokud ovšem není vaším úmyslem na tento podklad kreslit, nejedná se o prob Import and remove - Zavést a odstranit + Importovat a odstranit @@ -7684,7 +7684,7 @@ Pokud ovšem není vaším úmyslem na tento podklad kreslit, nejedná se o prob Template import - Zavedení podkladu + Import podkladu @@ -7846,7 +7846,7 @@ Pokud ovšem není vaším úmyslem na tento podklad kreslit, nejedná se o prob The path is empty, there is nothing to import! - Trasa je prázdná. Není co zavádět! + Trasa je prázdná. Není co importovat! @@ -7861,7 +7861,7 @@ Pokud ovšem není vaším úmyslem na tento podklad kreslit, nejedná se o prob Import problems - Problémy při zavádění + Problémy při importu From 979d589ccd653bb510784c6279cef17dc7809305 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Wed, 15 Aug 2018 22:35:09 +0200 Subject: [PATCH 02/49] SymbolDropDown: Fix user data type for '- none -' entry Lookup for const Symbol* nullptr cannot find non-const Symbol* nullptr. So '- none -' wasn't properly displayed when editing combined symbols with unset subsymbols. --- src/gui/widgets/symbol_dropdown.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/widgets/symbol_dropdown.cpp b/src/gui/widgets/symbol_dropdown.cpp index a5d29ba91..6adb55d1b 100644 --- a/src/gui/widgets/symbol_dropdown.cpp +++ b/src/gui/widgets/symbol_dropdown.cpp @@ -53,7 +53,7 @@ SymbolDropDown::SymbolDropDown(const Map* map, int filter, const Symbol* initial : QComboBox(parent) { num_custom_items = 0; - addItem(tr("- none -"), QVariant::fromValue(nullptr)); + addItem(tr("- none -"), QVariant::fromValue(nullptr)); int size = map->getNumSymbols(); for (int i = 0; i < size; ++i) From fc9aa71efc838f9d8ebd26e71947363d0ed61c60 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Wed, 15 Aug 2018 22:40:53 +0200 Subject: [PATCH 03/49] Translations: Update from source --- translations/OpenOrienteering_cs.ts | 93 ++++++++++--------- translations/OpenOrienteering_da.ts | 93 ++++++++++--------- translations/OpenOrienteering_de.ts | 93 ++++++++++--------- translations/OpenOrienteering_eo.ts | 93 ++++++++++--------- translations/OpenOrienteering_es.ts | 93 ++++++++++--------- translations/OpenOrienteering_et.ts | 93 ++++++++++--------- translations/OpenOrienteering_eu.ts | 93 ++++++++++--------- translations/OpenOrienteering_fi.ts | 93 ++++++++++--------- translations/OpenOrienteering_fr.ts | 93 ++++++++++--------- translations/OpenOrienteering_he.ts | 93 ++++++++++--------- translations/OpenOrienteering_hu.ts | 93 ++++++++++--------- translations/OpenOrienteering_id.ts | 93 ++++++++++--------- translations/OpenOrienteering_it.ts | 93 ++++++++++--------- translations/OpenOrienteering_ja.ts | 93 ++++++++++--------- translations/OpenOrienteering_lv.ts | 93 ++++++++++--------- translations/OpenOrienteering_nb.ts | 93 ++++++++++--------- translations/OpenOrienteering_nl.ts | 93 ++++++++++--------- translations/OpenOrienteering_pl.ts | 93 ++++++++++--------- translations/OpenOrienteering_pt_BR.ts | 93 ++++++++++--------- translations/OpenOrienteering_pt_PT.ts | 93 ++++++++++--------- translations/OpenOrienteering_ru.ts | 93 ++++++++++--------- translations/OpenOrienteering_sv.ts | 93 ++++++++++--------- translations/OpenOrienteering_template.ts | 93 ++++++++++--------- translations/OpenOrienteering_uk.ts | 103 ++++++++++++---------- translations/OpenOrienteering_zh_CN.ts | 93 ++++++++++--------- 25 files changed, 1231 insertions(+), 1104 deletions(-) diff --git a/translations/OpenOrienteering_cs.ts b/translations/OpenOrienteering_cs.ts index e063e6ca2..8fe0657c5 100644 --- a/translations/OpenOrienteering_cs.ts +++ b/translations/OpenOrienteering_cs.ts @@ -2283,7 +2283,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2316,13 +2316,13 @@ Očekávány %1 souřadnice, nalezeno %2. - + Error while loading the printing configuration at %1:%2: %3 Chyba při načítání nastavení tisku v %1: %2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Chyba při nahrávání kroků zpět/znovu v %1: %2: %3 @@ -2399,13 +2399,13 @@ - + Invalid file format version. Neplatná verze souborového formátu. - + Unsupported old file format version. Please use an older program version to load and update the file. Nepodporovaná stará verze souborového formátu. Použijte, prosím, starší verzi programu k otevření souboru a k jeho opětovnému uložení. @@ -2456,12 +2456,12 @@ Nepodařilo se přečíst soubor: %1 - + Unsupported file format. Nepodporovaný souborový formát. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Nepodporovaná nová verze souborového formátu. Některé mapové prvky nejsou touto verzí nahrány nebo uloženy. @@ -4991,68 +4991,73 @@ mapy. Změna zvětšení je možná pomocí kolečka myši. Nelze exportovat posun vzoru výplně pro objekt plochy - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Nelze exportovat podklad: Souborový typ "%1" není podporován - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). Souřadnice jsou upraveny aby odpovídaly oblasti kresby v OCAD 8 (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. Některé souřadnice zůstávají mimo oblast kresby v OCAD 8. Mohou být v OCADu nedosažitelné. - + In line symbol "%1", cannot represent cap/join combination. V liniovém symbolu "%1" nelze znázornit kombinaci koncovek/napojení linií. - + In line symbol "%1", neglecting the dash grouping. V liniovém symbolu "%1" se přehlíží seskupení čárek. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. V liniovém symbolu "%1" je počet čárek v jedné skupině zmenšen na 2. - + In line symbol "%1", cannot export the borders correctly. V liniovém symbolu "%1" nemohou být okraje správně exportovány. - + In area symbol "%1", skipping a fill pattern. V plošném symbolu "%1" vynechávám vzor výplně. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. V plošném symbolu "%1" předpokládám bodový vzor s "posunutými řádky". To může být správně, ale také to může být chybně. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet V textovém symbolu "%1" je nastaven vlastní rozestup znaků. Jeho provedení prozatím neodpovídá chování v OCADu - + In text symbol %1: ignoring underlining V textovém symbolu %1: přehlíží se podtržení - + In text symbol %1: ignoring kerning V textovém symbolu %1: přehlíží se podřezávání - + String truncated (truncation marked with three '|'): %1 Řetězec znaků zkrácen (místo ukončení je označeno třemi '|'): %1 @@ -8174,29 +8179,29 @@ Nejvyšší podporovaná verze je %2. OpenOrienteering::UndoManager - - + + Error Chyba - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. Original diskutabel Nelze vrátit zpět, protože poslední uložený krok je neplatný. To se může stát, když například změníte symbol objektu na jiný, a potom tento starý symbol smažete. - + Confirmation Potvrzení - + Undoing this step will go beyond the point where the file was loaded. Are you sure? Tento krok zpět vede ke stavu před časovým bodem nahrání souboru. Jste si jistý? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. Nelze provést znovu, protože první obnovovací krok je neplatný. To se může stát, když například smažete symbol objektu, který jste nekreslil. @@ -8262,7 +8267,7 @@ Nejvyšší podporovaná verze je %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Starší verze Mapperu nepodporují více mapových částí. Pro uložení souboru v režimu kompatibility musíte nejprve všechny části mapy sloučit. @@ -8270,27 +8275,27 @@ Nejvyšší podporovaná verze je %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Nepodporovaný prvek: %1 (řádek %2, sloupec %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. Některé souřadnice byly mimo hranice tisku. Obsah mapy byl přizpůsoben. - + unknown neznámý - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 Části souboru nelze totuto verzí Mapperu přečíst. Nejnižší požadovaná verze: %1 - + Error at line %1 column %2: %3 Chyba na řádku %1, ve sloupci %2: %3 @@ -8299,44 +8304,44 @@ Nejvyšší podporovaná verze je %2. Mapové poznámky nebylo možné načíst. - - + + Some invalid characters had to be removed. Některé neplatné znaky musejí být odstraněny. - + Unknown error Neznámá chyba - + Unsupported or invalid georeferencing specification '%1': %2 Nepodporovaná nebo neplatná specifikace souřadnicového systému '%1': %2 - - + + Could not set knockout property of color '%1'. Nelze nastavit vlastnosti vyřezání (knockout) u barvy '%1'. - + Expected %1 colors, found %2. Očekáváno %1 barev, nalezeno %2. - + Spot color %1 not found while processing %2 (%3). Přímá barva %1 nebyla při zpracování %2 (%3) nalezena. - + Expected %1 symbols, found %2. Očekáváno %1 symbolů, nalezeno %2. - + Expected %1 map parts, found %2. Očekáváno %1 částí mapy, nalezeno %2. diff --git a/translations/OpenOrienteering_da.ts b/translations/OpenOrienteering_da.ts index 7e17ded1f..2a2c769f5 100644 --- a/translations/OpenOrienteering_da.ts +++ b/translations/OpenOrienteering_da.ts @@ -2105,7 +2105,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2134,13 +2134,13 @@ Forventede %1 koordinater, fandt %2. - + Error while loading the printing configuration at %1:%2: %3 Fejl under indlæsning af udskrivningskonfigurationen på %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Fejl under indlæsning af fortryd/gentag trin på %1:%2: %3 @@ -2212,13 +2212,13 @@ - + Invalid file format version. Ugyldig fil formatversion. - + Unsupported old file format version. Please use an older program version to load and update the file. Filformatet er gammelt og derfor ikke understøttet. Brug venligst en ældre software version til at åbne og opdatere filen. @@ -2269,12 +2269,12 @@ Kunne ikke læse filen: %1 - + Unsupported file format. Ikke-understøttet filformat. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Ikke understøttet nyt filformat. Enkelte dele af kortet vil ikke blive åbnet eller gemt af denne version af programmet. @@ -4620,68 +4620,73 @@ zoom using the mouse wheel, if available. - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. - + In line symbol "%1", cannot represent cap/join combination. - + In line symbol "%1", neglecting the dash grouping. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. - + In line symbol "%1", cannot export the borders correctly. - + In area symbol "%1", skipping a fill pattern. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet - + In text symbol %1: ignoring underlining - + In text symbol %1: ignoring kerning - + String truncated (truncation marked with three '|'): %1 @@ -7572,28 +7577,28 @@ The maximum supported version is %2. OpenOrienteering::UndoManager - - + + Error Fejl - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. - + Confirmation Bekræftelse - + Undoing this step will go beyond the point where the file was loaded. Are you sure? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. @@ -7659,7 +7664,7 @@ The maximum supported version is %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. @@ -7667,69 +7672,69 @@ The maximum supported version is %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. - + unknown - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 - + Error at line %1 column %2: %3 - - + + Some invalid characters had to be removed. - + Unknown error Ukendt fejl - + Unsupported or invalid georeferencing specification '%1': %2 - - + + Could not set knockout property of color '%1'. - + Expected %1 colors, found %2. - + Spot color %1 not found while processing %2 (%3). - + Expected %1 symbols, found %2. - + Expected %1 map parts, found %2. Forventede %1 kortdele, fandt %2. diff --git a/translations/OpenOrienteering_de.ts b/translations/OpenOrienteering_de.ts index faeee974f..de75ceaa2 100644 --- a/translations/OpenOrienteering_de.ts +++ b/translations/OpenOrienteering_de.ts @@ -2183,7 +2183,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2216,13 +2216,13 @@ %1 Koordinaten erwartet, %2 gefunden. - + Error while loading the printing configuration at %1:%2: %3 Fehler beim Laden der Druckkonfiguration bei %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Fehler beim Laden der Rückgängig-/Wiederholen-Schritte bei %1:%2: %3 @@ -2298,13 +2298,13 @@ - + Invalid file format version. Ungültige Version des Dateiformats. - + Unsupported old file format version. Please use an older program version to load and update the file. Nicht unterstützte alte Version des Dateiformats. Bitte eine ältere Programmversion verwenden, um die Datei zu öffnen und neu zu speichern. @@ -2355,12 +2355,12 @@ Kann Datei nicht lesen: %1 - + Unsupported file format. Dateiformat nicht unterstützt. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Nicht unterstützte neue Version des Dateiformats. Einige Kartenelemente werden von dieser Programmversion nicht geladen oder gespeichert. @@ -4862,68 +4862,73 @@ Zoomen ist mit dem Mausrad möglich. Kann den Versatz eines Füllmusters für ein Flächenobjekt nicht exportieren - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Kann Vorlage nicht exportieren: der Dateityp von "%1" wird noch nicht unterstützt - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). Die Koordinaten wurden angepasst, um in die OCAD-8-Zeichenfläche zu passen (-2 m…2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. Einige Koordinaten bleiben außerhalb der OCAD-8-Zeichenfläche. Sie könnten in OCAD nicht erreichbar sein. - + In line symbol "%1", cannot represent cap/join combination. Im Liniensymbol "%1" kann die Kombination der Linienenden/ecken nicht repräsentiert werden. - + In line symbol "%1", neglecting the dash grouping. Im Liniensymbol "%1" wird die Gruppierung der Strichelungen verworfen. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. Im Liniensymbol "%1" wird die Anzahl der Striche in einer Gruppe auf 2 reduziert. - + In line symbol "%1", cannot export the borders correctly. Im Liniensymbol "%1" können die Ränder nicht korrekt exportiert werden. - + In area symbol "%1", skipping a fill pattern. Im Flächensymbol "%1" wird ein Füllmuster verworfen. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. Im Flächensymbol "%1" wird ein Punktmuster mit gegeneinander versetzten Reihen angenommen. Dies könnte stimmen, aber auch falsch sein. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet Im Textsymbol "%1" ist der Zeichenabstand geändert. Dies wird von diesem Programm und OCAD verschieden interpretiert - + In text symbol %1: ignoring underlining Im Textsymbol "%1" wird das Unterstreichen verworfen - + In text symbol %1: ignoring kerning Im Textsymbol "%1" wird das Kerning verworfen - + String truncated (truncation marked with three '|'): %1 Zeichenkette verkürzt (Abbruchstelle mit drei '|' markiert): %1 @@ -7929,29 +7934,29 @@ Die höchste unterstütze Version ist %2. OpenOrienteering::UndoManager - - + + Error Fehler - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. Original diskutabel Rückgängig nicht möglich, weil der letze gespeicherte Schritt ungültig geworden ist (z.B. nachdem das Symbol des Objekts gelöscht wurde). - + Confirmation Bestätigung - + Undoing this step will go beyond the point where the file was loaded. Are you sure? Dieser Rückgängig-Schritt führt zu einem Zustand vor dem Zeitpunkt des Ladens der Datei. Sind Sie sicher? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. Wiederherstellen nicht möglich, weil der erste Wiederherstellungsschritt ungültig geworden ist (z.B. nach dem Löschen des notwendigen Symbols). @@ -8017,7 +8022,7 @@ Die höchste unterstütze Version ist %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Ältere Versionen von Mapper unterstützen nicht mehrere Kartenteile. Um die Datei im Kompatibilitätsmodus zu speichern, müssen Sie erst alle Kartenteile zusammenfügen. @@ -8025,22 +8030,22 @@ Die höchste unterstütze Version ist %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Element nicht unterstützt: %1 (Zeile %2 Spalte %3) - + unknown unbekannt - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 Teile der Datei können von dieser Version von Mapper nicht gelesen werden. Benötigte Mindestversion: %1 - + Error at line %1 column %2: %3 Fehler in Zeile %1 Spalte %2: %3 @@ -8049,49 +8054,49 @@ Die höchste unterstütze Version ist %2. Die Kartennotizen konnten nicht gelesen werden. - - + + Some invalid characters had to be removed. Einige ungültige Zeichen mussten entfernt werden. - + Unknown error Unbekannter Fehler - + Unsupported or invalid georeferencing specification '%1': %2 Nicht unterstützte oder ungültige Georeferenzierungsspezifikation '%1': %2 - - + + Could not set knockout property of color '%1'. Knockout-Attribut der Farbe '%1' konnte nicht gesetzt werden. - + Expected %1 colors, found %2. %1 Farben erwartet, %2 gefunden. - + Spot color %1 not found while processing %2 (%3). Schmuckfarbe %1 bei der Verarbeitung von %2 (%3) nicht gefunden. - + Expected %1 symbols, found %2. %1 Symbole erwartet, %2 gefunden. - + Expected %1 map parts, found %2. %1 Kartenteile erwartet, %2 gefunden. - + Some coordinates were out of bounds for printing. Map content was adjusted. Einige Koordinaten waren außerhalb des druckbaren Bereichs. Der Karteninhalt wurde korrigiert. diff --git a/translations/OpenOrienteering_eo.ts b/translations/OpenOrienteering_eo.ts index 96540c22d..406c5a6f1 100644 --- a/translations/OpenOrienteering_eo.ts +++ b/translations/OpenOrienteering_eo.ts @@ -2105,7 +2105,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2134,13 +2134,13 @@ Atendita %1 koordinatoj, %2 estis trovita. - + Error while loading the printing configuration at %1:%2: %3 Eraro dum ŝarĝo de presagordo ĉe %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Eraro dum ŝarĝo de la malfari/refari paŝoj ĉe %1:%2: %3 @@ -2212,13 +2212,13 @@ - + Invalid file format version. Nevalida versio de dosierformo. - + Unsupported old file format version. Please use an older program version to load and update the file. Nesubtenata malnova versio de dosierformo. Bonvolu uzi pli malnovan programversion por ŝargi kaj ĝisdatigi la dosieron. @@ -2269,12 +2269,12 @@ Ne povis legi dosieron: %1 - + Unsupported file format. Nesubtenata dosierformo. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. @@ -4685,68 +4685,73 @@ zoom using the mouse wheel, if available. - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Ne eblas eksporti ŝablonon: dosiertipo "%1" ankoraŭ ne estas subtenata - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. - + In line symbol "%1", cannot represent cap/join combination. - + In line symbol "%1", neglecting the dash grouping. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. - + In line symbol "%1", cannot export the borders correctly. - + In area symbol "%1", skipping a fill pattern. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet - + In text symbol %1: ignoring underlining - + In text symbol %1: ignoring kerning - + String truncated (truncation marked with three '|'): %1 @@ -7685,28 +7690,28 @@ La maksimuma subtenata versio estas %2. OpenOrienteering::UndoManager - - + + Error Eraro - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. - + Confirmation Konfirmo - + Undoing this step will go beyond the point where the file was loaded. Are you sure? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. @@ -7772,7 +7777,7 @@ La maksimuma subtenata versio estas %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Malnovaj versioj de Mapper ne subtenas plurajn mapopartojn. Por konservi la mapon en kongrueca reĝimo, vi devas kunfandi ĉiujn mapopartojn antaŭe. @@ -7780,69 +7785,69 @@ La maksimuma subtenata versio estas %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Nesubtenata elemento: %1 (linio %2 kolumno %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. - + unknown nekonata - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 Partoj de ĉi tiu dosiero ne estas legebla per tiu versio de Mapper. Minimuma postulata versio: %1 - + Error at line %1 column %2: %3 Eraro ĉe linio %1 kolumno %2: %3 - - + + Some invalid characters had to be removed. Kelkaj nevalidaj simboloj devis esti forigita. - + Unknown error Nekonata eraro - + Unsupported or invalid georeferencing specification '%1': %2 Nesubtenata aŭ nevalida specifo de georeferencado '%1': %2 - - + + Could not set knockout property of color '%1'. - + Expected %1 colors, found %2. Atendata %1 koloroj, trovita %2. - + Spot color %1 not found while processing %2 (%3). Spot-koloro %1 ne trovita dum traktado de %2 (%3). - + Expected %1 symbols, found %2. Atendata %1 simboloj, trovita %2. - + Expected %1 map parts, found %2. Atendata %1 mapopartoj, trovita %2. diff --git a/translations/OpenOrienteering_es.ts b/translations/OpenOrienteering_es.ts index 86c368864..18ad27a7c 100644 --- a/translations/OpenOrienteering_es.ts +++ b/translations/OpenOrienteering_es.ts @@ -2296,7 +2296,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2329,13 +2329,13 @@ Se esperaban %1 coordenadas, se encontraron %2. - + Error while loading the printing configuration at %1:%2: %3 Error al cargar la configuración de impresión en %1: %2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Error al cargar los pasos de deshacer/rehacer en %1: %2: %3 @@ -2411,13 +2411,13 @@ - + Invalid file format version. Versión no válida de formato de archivo. - + Unsupported old file format version. Please use an older program version to load and update the file. Versión antigua de formato de archivo no soportada. Por favor, utilice una versión más antigua del programa para cargar y actualizar el archivo. @@ -2468,12 +2468,12 @@ No se pudo leer el archivo: %1 - + Unsupported file format. Formato de archivo no soportado. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Versión moderna de formato de archivo no soportada. Algunas características del mapa no se podrán cargar o guardar con esta versión del programa. @@ -4986,68 +4986,73 @@ zoom usando la rueda del ratón, si dispone de esos elementos. Imposible exportar el desplazamiento de patrón de relleno para un objeto de tipo área - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Imposible exportar plantilla: el tipo de archivo "%1" no está soportado todavía - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). La coordenadas se ajustan para caber dentro del área de dibujo OCAD 8 (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. Algunas coordenadas permanecen fuera del área de dibujo OCAD 8. Puede que no sean alcanzables en OCAD. - + In line symbol "%1", cannot represent cap/join combination. En símbolo de línea "%1", no se puede representar la combinación tapar/unir. - + In line symbol "%1", neglecting the dash grouping. En símbolo de línea "%1", descuidar la agrupación de discontinuidades. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. En símbolo de línea "%1", el número de discontinuidades en un grupo se ha reducido a 2. - + In line symbol "%1", cannot export the borders correctly. En símbolo de línea "%1", no se pueden exportar los bordes correctamente. - + In area symbol "%1", skipping a fill pattern. En símbolo de área "%1", saltarse un patrón de relleno. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. En símbolo de área "%1", se asume un patrón de punto de "filas desplazadas". Esto puede ser tanto correcto como incorrecto. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet En símbolo de texto "%1": se ha establecido un espaciado de carácter personalizado, su implementación no coincide con el comportamiento de OCAD todavía - + In text symbol %1: ignoring underlining En símbolo de texto "%1": se ignora subrayado - + In text symbol %1: ignoring kerning En símbolo de texto "%1": se ignora kerning - + String truncated (truncation marked with three '|'): %1 Cadena truncada (el truncamiento se marca con 3 '|'): %1 @@ -8102,28 +8107,28 @@ La máxima versión soportada es %2. OpenOrienteering::UndoManager - - + + Error Error - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. No se puede deshacer porque la última acción de deshacer no fue válida. Esto puede ocurrir, por ejemplo, si cambia el símbolo de un objeto a otro y luego borra el símbolo antiguo. - + Confirmation Confirmación - + Undoing this step will go beyond the point where the file was loaded. Are you sure? Si deshace este paso se irá más allá del punto donde el archivo fue cargado. ¿Está usted seguro? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. No se puede rehacer porque la primera acción de rehacer no fue válida. Esto puede ocurrir, por ejemplo, si borra el símbolo de un objeto que ha dibujado. @@ -8189,7 +8194,7 @@ La máxima versión soportada es %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Versiones anteriores de Mapper no soportan múltiples partes de mapa. Para guardar el mapa en un modo compatible, primero debe fusionar todas las partes del mapa. @@ -8197,27 +8202,27 @@ La máxima versión soportada es %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Elemento no soportado: %1 (línea %2 columna %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. Algunas coordenadas estaban fuera de los límites de impresión. Se ha ajustado el contenido del mapa. - + unknown desconocido - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 Partes de este archivo no se pueden leer en esta versión de Mapper. Versión mínima requerida: %1 - + Error at line %1 column %2: %3 Error en línea %1 columna %2: %3 @@ -8226,44 +8231,44 @@ La máxima versión soportada es %2. Las notas del mapa no se pudieron leer. - - + + Some invalid characters had to be removed. Deben eliminarse algunos caracteres no válidos. - + Unknown error Error desconocido - + Unsupported or invalid georeferencing specification '%1': %2 Especificación de georreferencia no soportada o inválida '%1':%2 - - + + Could not set knockout property of color '%1'. No se pudo establecer la propiedad knockout del color '%1'. - + Expected %1 colors, found %2. Se esperaban %1 colores, se encontraron %2. - + Spot color %1 not found while processing %2 (%3). El color spot %1 no se ha encontrado mientras se procesaba %2 (%3). - + Expected %1 symbols, found %2. Se esperaban %1 símbolos, se encontraron %2. - + Expected %1 map parts, found %2. Se esperaban %1 partes de mapa, se encontraron %2. diff --git a/translations/OpenOrienteering_et.ts b/translations/OpenOrienteering_et.ts index 9bb81a227..9bd881b6c 100644 --- a/translations/OpenOrienteering_et.ts +++ b/translations/OpenOrienteering_et.ts @@ -2104,7 +2104,7 @@ - + OpenOrienteering Mapper @@ -2114,13 +2114,13 @@ - + Error while loading the printing configuration at %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 @@ -2215,13 +2215,13 @@ - + Invalid file format version. - + Unsupported old file format version. Please use an older program version to load and update the file. @@ -2272,12 +2272,12 @@ - + Unsupported file format. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. @@ -4606,68 +4606,73 @@ zoom using the mouse wheel, if available. - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. - + In line symbol "%1", cannot represent cap/join combination. - + In line symbol "%1", neglecting the dash grouping. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. - + In line symbol "%1", cannot export the borders correctly. - + In area symbol "%1", skipping a fill pattern. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet - + In text symbol %1: ignoring underlining - + In text symbol %1: ignoring kerning - + String truncated (truncation marked with three '|'): %1 @@ -7554,28 +7559,28 @@ The maximum supported version is %2. OpenOrienteering::UndoManager - - + + Error - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. - + Confirmation - + Undoing this step will go beyond the point where the file was loaded. Are you sure? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. @@ -7641,7 +7646,7 @@ The maximum supported version is %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. @@ -7649,69 +7654,69 @@ The maximum supported version is %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. - + unknown - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 - + Error at line %1 column %2: %3 - - + + Some invalid characters had to be removed. - + Unknown error - + Unsupported or invalid georeferencing specification '%1': %2 - - + + Could not set knockout property of color '%1'. - + Expected %1 colors, found %2. - + Spot color %1 not found while processing %2 (%3). - + Expected %1 symbols, found %2. - + Expected %1 map parts, found %2. diff --git a/translations/OpenOrienteering_eu.ts b/translations/OpenOrienteering_eu.ts index 3261db1fc..2da15d492 100644 --- a/translations/OpenOrienteering_eu.ts +++ b/translations/OpenOrienteering_eu.ts @@ -2104,7 +2104,7 @@ - + OpenOrienteering Mapper @@ -2133,13 +2133,13 @@ - + Error while loading the printing configuration at %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 @@ -2210,13 +2210,13 @@ - + Invalid file format version. - + Unsupported old file format version. Please use an older program version to load and update the file. @@ -2267,12 +2267,12 @@ - + Unsupported file format. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. @@ -4606,68 +4606,73 @@ zoom using the mouse wheel, if available. - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. - + In line symbol "%1", cannot represent cap/join combination. - + In line symbol "%1", neglecting the dash grouping. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. - + In line symbol "%1", cannot export the borders correctly. - + In area symbol "%1", skipping a fill pattern. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet - + In text symbol %1: ignoring underlining - + In text symbol %1: ignoring kerning - + String truncated (truncation marked with three '|'): %1 @@ -7554,28 +7559,28 @@ The maximum supported version is %2. OpenOrienteering::UndoManager - - + + Error - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. - + Confirmation - + Undoing this step will go beyond the point where the file was loaded. Are you sure? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. @@ -7641,7 +7646,7 @@ The maximum supported version is %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. @@ -7649,69 +7654,69 @@ The maximum supported version is %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. - + unknown - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 - + Error at line %1 column %2: %3 - - + + Some invalid characters had to be removed. - + Unknown error Errore ezezaguna - + Unsupported or invalid georeferencing specification '%1': %2 - - + + Could not set knockout property of color '%1'. - + Expected %1 colors, found %2. - + Spot color %1 not found while processing %2 (%3). - + Expected %1 symbols, found %2. - + Expected %1 map parts, found %2. diff --git a/translations/OpenOrienteering_fi.ts b/translations/OpenOrienteering_fi.ts index 7b28bc348..85d8a9c29 100644 --- a/translations/OpenOrienteering_fi.ts +++ b/translations/OpenOrienteering_fi.ts @@ -2255,7 +2255,7 @@ - + OpenOrienteering Mapper @@ -2284,13 +2284,13 @@ Vaaditaan %1 koordinaatteja, löydetty %2. - + Error while loading the printing configuration at %1:%2: %3 Virhe ladattaessa tulostus asetuksia %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Virhe ladattaessa kumoa / tee uudestaan vaiheita %1:%2: %3 @@ -2367,13 +2367,13 @@ löytääksesi taustakarttatiedoston nimen. - + Invalid file format version. Tiedostomuodon versio ei kelpaa. - + Unsupported old file format version. Please use an older program version to load and update the file. Näin vanhaa tiedostomuotoa ei tueta. Ole hyvä ja käytä vanhempaa ohjelmaa päivittääksesi tiedoston. @@ -2424,12 +2424,12 @@ löytääksesi taustakarttatiedoston nimen. Tiedostoa %1 ei voitu lukea - + Unsupported file format. Tiedostomuotoa ei tueta. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Näin uutta tiedostomuotoa ei tueta. Joitain kartan ominaisuuksia ei voida ladata tai tallentaa tällä versiolla. @@ -4924,68 +4924,73 @@ zoomaa hiiren rullalla. Täyttökuvion siirtoa ei voi viedä - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Taustakarttaa ei voi viedä: tiedostomuotoa "%1" ei vielä tueta - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). Koordinaatit ovat mukautettu sopimaan OCAD 8 piirtoalueeseen (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. Jotkut koordinaatit pysyvät OCAD 8 piirtoalueen ulkopuolella. Ne saattavat olla saavuttamattomia OCADissa. - + In line symbol "%1", cannot represent cap/join combination. Viivasymbolissa "%1", viivan pää/liitos-yhdistelmää ei voida esittää. - + In line symbol "%1", neglecting the dash grouping. Viivasymbolissa "%1",katkoviivojen ryhmiä ei huomioida. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. Viivasymbolissa "%1", katkoviivojen määrä ryhmässä vähennetään kahteen. - + In line symbol "%1", cannot export the borders correctly. Viivasymbolissa "%1", reunaviivoja ei voida viedä oikein. - + In area symbol "%1", skipping a fill pattern. Aluesymbolissa "%1", ohitetaan täyttökuvio. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. Aluesymbolissa "%1", oletetaan "siirretyt rivit"-kuvio. Voi olla oikein tai väärin. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet Tekstisymbolissa %1: käytetään muokattua merkkiväliä, OCAD ei vielä tue sen esittämistä - + In text symbol %1: ignoring underlining Tekstisymbolissa %1: ohitetaan alleviivaus - + In text symbol %1: ignoring kerning Tekstisymbolissa %1: ohitetaan välistys - + String truncated (truncation marked with three '|'): %1 Merkkijono typistetty (typisteys merkitty kolmella '|'): %1 @@ -8016,28 +8021,28 @@ Tuetaan vain versioon %2 asti. OpenOrienteering::UndoManager - - + + Error Virhe - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. Ei voi kumota koska edellinen vaihe ei enää ole mahdollinen. Tämä voi tapahtua jos esimerkiksi vaihdat kohteen symbolin ja poistat vanhan symbolin. - + Confirmation Vahvistus - + Undoing this step will go beyond the point where the file was loaded. Are you sure? Tämän vaiheen kumoaminen vie kauemmas kuin kohtaan, jossa tiedosto ladattiin. Oletko varma? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. Ei voi tehdä uudestaan koska seuraava vaihe ei enää ole mahdollinen. Tämä voi tapahtua jos vaikka poistat juuri piirretyn kohteen symbolin. @@ -8103,7 +8108,7 @@ Tuetaan vain versioon %2 asti. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Mapperin vanhemmat versiot eivät mahdollista moniosaisia karttoja. Tallentaaksesi kartan yhtensopivassa tilassa, yhdistä ensin kartan osat. @@ -8111,27 +8116,27 @@ Tuetaan vain versioon %2 asti. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Elementtiä ei tueta: %1 (rivi %2 sarake %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. Jotkin koordinaatit ovat tulostusrajojen ulkopuolella. Kartan sisältöä säädetty. - + unknown Epämääräinen - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 Osaa tiedostosta ei voida lukea tällä Mapper versiolla. Minimi vaadittu versio: %1 - + Error at line %1 column %2: %3 Virhe rivillä %1 sarakkeessa %2: %3 @@ -8140,44 +8145,44 @@ Tuetaan vain versioon %2 asti. Kartan muistiinpanoja ei voitu lukea. - - + + Some invalid characters had to be removed. Joitain virheellisiä merkkejä oli poistettava. - + Unknown error Tuntematon virhe - + Unsupported or invalid georeferencing specification '%1': %2 Georeferoinnin määrittelyä '%1' ei tueta tai ei kelpaa: %2 - - + + Could not set knockout property of color '%1'. Värin '%1' aukottavuutta (knock-out) ei voida asettaa. - + Expected %1 colors, found %2. Oletettiin %1 väriä, löydetty %2. - + Spot color %1 not found while processing %2 (%3). Spottiväriä %1 ei löytynyt käsiteltäessä %2 (%3). - + Expected %1 symbols, found %2. Oletettiin %1 symbolia, löydetty %2. - + Expected %1 map parts, found %2. Oletettiin %1 karttaosaa, löydetty %2. diff --git a/translations/OpenOrienteering_fr.ts b/translations/OpenOrienteering_fr.ts index 2a3d451bf..f2cb928aa 100644 --- a/translations/OpenOrienteering_fr.ts +++ b/translations/OpenOrienteering_fr.ts @@ -2269,7 +2269,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2298,13 +2298,13 @@ %1 coordonnées attendues, %2 trouvées. - + Error while loading the printing configuration at %1:%2: %3 Erreur lors du chargement de la configuration de l'imprimante en %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Erreur lors du chargement des scripts 'undo/redo' à %1:%2: %3 @@ -2380,13 +2380,13 @@ - + Invalid file format version. Format du fichier invalide. - + Unsupported old file format version. Please use an older program version to load and update the file. Ce fichier est plus supporté (ancien format). Veuillez utiliser le logiciel dans une version plus ancienne pour charger et remettre à jour ce fichier. @@ -2437,12 +2437,12 @@ Impossible de lire le fichier suivant: %1 - + Unsupported file format. Format de fichier non supporté. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Format de fichier trop récent. Certains éléments de la carte ne seront pas chargés ou sauvegardés avec cette version du logiciel. @@ -4928,68 +4928,73 @@ utiliser la molette de la souris pour zoomer. Impossible d'exporter un motif pour un objet surface - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Impossible d'exporter le modèle: le type du fichier (%1) n'est pas encore supporté - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). Les coordonnées sont ajustées pour être compatible avec la surface de dessin d'OCAD 8 (-2m .... 2m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. Des coordonnées sont en dehors de la surface de dessin d'OCAD8. Elles ne seront pas accessibles dans OCAD. - + In line symbol "%1", cannot represent cap/join combination. Pour le symbole ligne "%1",impossible de dessiner la combinaison entre l'extrémité et la jointure. - + In line symbol "%1", neglecting the dash grouping. Pour le symbole ligne "%1", le groupe de pointillés a été ignoré. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. Pour le symbole ligne "%1", le nombre de pointillés par groupe a été réduit à 2. - + In line symbol "%1", cannot export the borders correctly. Pour le symbole ligne "%1", impossible d'exporter correctement les bordures. - + In area symbol "%1", skipping a fill pattern. Pour le symbole surface "%1", un motif a été ignoré. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. Pour le symbole surface "%1", les motifs en rangées sont supposés être décalés. Ceci peut se révéler correct tout comme incorrect. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet Pour le symbole texte "%1": un espacement personnalisé a été choisi entre les caractères, ceci peut être incompatible avec les fonctions d'Ocad - + In text symbol %1: ignoring underlining Pour le symbole texte "%1", le soulignement a été ignoré - + In text symbol %1: ignoring kerning Pour le symbole texte "%1", le crénage a été ignoré - + String truncated (truncation marked with three '|'): %1 Chaîne de caractère tronquée (Les retraits sont marqués par trois '|'): %1 @@ -8029,28 +8034,28 @@ La version maximale supportée est la version %2. OpenOrienteering::UndoManager - - + + Error Erreur - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. Impossible d'annuler car la dernière action "Annuler" deviendrait alors invalide. Cela peut arriver par exemple lorsque vous changez le symbole d'un objet par un autre et qu'ensuite vous supprimez l'ancien symbole. - + Confirmation Confirmation - + Undoing this step will go beyond the point where the file was loaded. Are you sure? Annuler cette action vous ramènera dans l'état ANTÉRIEUR au chargement de ce fichier. Êtes vous sûr de vouloir annuler ? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. Impossible d'annuler la dernière action car elle deviendrait invalide. Cela peut arriver par exemple lorsque vous supprimez le symbole d'un objet que vous avez dessiné. @@ -8116,7 +8121,7 @@ La version maximale supportée est la version %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Les anciennes versions de Mapper ne supportent pas les cartes ayant plusieurs parties. Pour sauvegarder la carte dans un mode compatible, vous devez d'abord réunir les parties entre elles. @@ -8124,69 +8129,69 @@ La version maximale supportée est la version %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Élément non supporté: %1 (ligne %2 colonne %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. Des coordonnées étaient en dehors des limites d'impression. Le contenu de la carte a été ajusté. - + unknown inconnu - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 Les différentes parties du fichier ne peut pas être lu par cette version de Mapper. Ma version minimale requise est : %1 - + Error at line %1 column %2: %3 Erreur à la ligne %1 colonne %2: %3 - - + + Some invalid characters had to be removed. Des caractères non-valides ont été supprimés. - + Unknown error Erreur inconnu - + Unsupported or invalid georeferencing specification '%1': %2 Spécification de géoréférencement '%1' ,non supportée ou inconnue: %2 - - + + Could not set knockout property of color '%1'. Impossible de définir la propriété "knockout" pour la couleur '%1'. - + Expected %1 colors, found %2. %1 couleurs attendues, %2 trouvées. - + Spot color %1 not found while processing %2 (%3). Ton direct %1 non trouvé lors du calcul %2 (%3). - + Expected %1 symbols, found %2. %1 symboles attendus, %2 trouvés. - + Expected %1 map parts, found %2. %1 parties de carte attendues, %2 trouvées. diff --git a/translations/OpenOrienteering_he.ts b/translations/OpenOrienteering_he.ts index 8a6944270..51c797969 100644 --- a/translations/OpenOrienteering_he.ts +++ b/translations/OpenOrienteering_he.ts @@ -2104,7 +2104,7 @@ - + OpenOrienteering Mapper @@ -2133,13 +2133,13 @@ - + Error while loading the printing configuration at %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 @@ -2210,13 +2210,13 @@ - + Invalid file format version. - + Unsupported old file format version. Please use an older program version to load and update the file. @@ -2267,12 +2267,12 @@ - + Unsupported file format. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. @@ -4618,68 +4618,73 @@ zoom using the mouse wheel, if available. - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. - + In line symbol "%1", cannot represent cap/join combination. - + In line symbol "%1", neglecting the dash grouping. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. - + In line symbol "%1", cannot export the borders correctly. - + In area symbol "%1", skipping a fill pattern. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet - + In text symbol %1: ignoring underlining - + In text symbol %1: ignoring kerning - + String truncated (truncation marked with three '|'): %1 @@ -7570,28 +7575,28 @@ The maximum supported version is %2. OpenOrienteering::UndoManager - - + + Error שגיאה - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. - + Confirmation אישור - + Undoing this step will go beyond the point where the file was loaded. Are you sure? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. @@ -7657,7 +7662,7 @@ The maximum supported version is %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. @@ -7665,69 +7670,69 @@ The maximum supported version is %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. - + unknown - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 - + Error at line %1 column %2: %3 - - + + Some invalid characters had to be removed. - + Unknown error - + Unsupported or invalid georeferencing specification '%1': %2 - - + + Could not set knockout property of color '%1'. - + Expected %1 colors, found %2. - + Spot color %1 not found while processing %2 (%3). - + Expected %1 symbols, found %2. - + Expected %1 map parts, found %2. diff --git a/translations/OpenOrienteering_hu.ts b/translations/OpenOrienteering_hu.ts index cd4f3ac60..02e13833d 100644 --- a/translations/OpenOrienteering_hu.ts +++ b/translations/OpenOrienteering_hu.ts @@ -2214,7 +2214,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2247,13 +2247,13 @@ Várható %1 koordináták megtalálva %2-n. - + Error while loading the printing configuration at %1:%2: %3 Hiba történt a nyomtatási beállítások betöltésekor itt: %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Hiba történt a visszavonás/előrelépés lépéseinek betöltésekor itt: %1:%2: %3 @@ -2326,13 +2326,13 @@ - + Invalid file format version. Érvénytelen fájl formátum verzió. - + Unsupported old file format version. Please use an older program version to load and update the file. Nem támogatott régi fájl formátum verzió. Kérem, hogy használjon egy régebbi verziót a fájl betöltéséhez és aktualizálásához. @@ -2383,12 +2383,12 @@ Nem olvasható a %1 fájl - + Unsupported file format. Nem támogatott fájl formátum. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Nem támogatott új fájl formátum verzió. Néhány térkép tulajdonság nem lesz betöltve vagy mentve a program ezen verziójával. @@ -4860,68 +4860,73 @@ zoomoljon az egér görgetőgombjával, ha van ilyen lehetősége. Nem lehet exportálni a terület objektum megváltoztatott kitöltési mintáját - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Nem exportálható háttér: %1 típusú fájl jelenleg nem támogatott - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). A koordináták adaptálva lettek, hogy illeszkedjenek OCAD-8-rajz területbe (-2 m … 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. Néhány koordináta kívül esik az OCAD 8 rajzterületen. Lehet, hogy elérhetetlenek lesznek OCAD-ben. - + In line symbol "%1", cannot represent cap/join combination. A(z) "%1" vonalas szimbólumban ebben a kombinációban nem ábrázolható. - + In line symbol "%1", neglecting the dash grouping. A(z) "%1" vonalas szimbólumban a szaggatott vonalak csoportosítása kihagyva. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. A(z) "%1" vonalas szimbólumban, a szaggatott vonalak csoporton belüli száma kettőre csökkentve. - + In line symbol "%1", cannot export the borders correctly. A(z) "%1" vonalas szimbólumban a szegélyek nem exportálhatók megfelelően. - + In area symbol "%1", skipping a fill pattern. A(z) "%1" terület szimbólumban a kitöltési minta kihagyva. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. A(z) "%1" terület szimbólumban váltakozó pontsoros minta alkalmazva. Ez lehet hogy megfelelő, de az is hogy nem. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet A(z) "%1" szöveges szimbólumban: egyedi betűköz van beállítva, aminek a végrehajtása egyelőre nem illeszkedik az OCAD működéséhez - + In text symbol %1: ignoring underlining A(z) "%1" szöveges objektumban: aláhúzás figyelmen kívül hagyva - + In text symbol %1: ignoring kerning A(z) "%1" szöveges szimbólumban: alsó index figyelmen kívül hagyva - + String truncated (truncation marked with three '|'): %1 A szöveg levágva (A vágást három '|' karakter jelzi): %1 @@ -8048,28 +8053,28 @@ A legnagyobb támogatott verzió a %2. OpenOrienteering::UndoManager - - + + Error Hiba - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. Nem lehet visszavonni, mert az utolsó visszavonási lépés érvénytelenné vált. Ez például akkor történhet, ha egy objektumot egy újra cserélt és azután a régi szimbólumot törölte. - + Confirmation Megerősítés - + Undoing this step will go beyond the point where the file was loaded. Are you sure? Ennek a lépésnek a visszavonása túl menne azon a ponton, amikor a fájl be lett töltve. Biztosan ezt akarja? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. Nem lehet mégis végrehajtani, mert a "mégis" lépés érvénytelenné vált. Ez például akkor történhet, ha törölve lett a szimbólum, amivel rajzolt. @@ -8135,7 +8140,7 @@ A legnagyobb támogatott verzió a %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. A Mapper régebbi verziói nem támogatnak többszörös térképrészeket. Ahhoz, hogy kompatibilis üzemmódban mentse el a térképet, először össze kell olvasztania minden térképrészt. @@ -8143,69 +8148,69 @@ A legnagyobb támogatott verzió a %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Nem támogatott elem: %1 (%2. sor, %3. oszlop) - + Some coordinates were out of bounds for printing. Map content was adjusted. Néhány koordináta a nyomtatási határon kívülre esett. A térképtartalom korrigálva lett. - + unknown ismeretlen - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 A fájl részei nem olvashatók a Mapper ezen verziójával. Legalább %1 verzióra van szüksége - + Error at line %1 column %2: %3 Hiba a(z) %1 sor %2 oszlopnál: %3 - - + + Some invalid characters had to be removed. Néhány érvénytelen jelet el kellett távolítani. - + Unknown error Ismeretlen hiba - + Unsupported or invalid georeferencing specification '%1': %2 Nem támogatott vagy érvénytelen georeferációs leírás '%1': %2 - - + + Could not set knockout property of color '%1'. Nem lehet beállítani a színátmenetek tulajdonságait '%1'. - + Expected %1 colors, found %2. A várt %1 színből %2 megtalálva. - + Spot color %1 not found while processing %2 (%3). A %2 feldolgozása közben a %1 pont szín nem található (%3). - + Expected %1 symbols, found %2. A várt %1 szimbólumból %2 megtalálva. - + Expected %1 map parts, found %2. A várt %1 térképrészből %2 megtalálva. diff --git a/translations/OpenOrienteering_id.ts b/translations/OpenOrienteering_id.ts index 40d0b9b8f..e0a5ee4ef 100644 --- a/translations/OpenOrienteering_id.ts +++ b/translations/OpenOrienteering_id.ts @@ -2104,7 +2104,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2133,13 +2133,13 @@ Diharapkan %1 koordinat, ditemukan %2. - + Error while loading the printing configuration at %1:%2: %3 Error ketika memuat konfigurasi pencetakan pada %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Error ketika memuat undo/mengulang langkah %1:%2: %3 @@ -2210,13 +2210,13 @@ - + Invalid file format version. Versi format berkas tidak valid. - + Unsupported old file format version. Please use an older program version to load and update the file. File format versi lama tidak didukung. Silakan gunakan versi program yang lebih tua untuk memuat dan memperbarui file. @@ -2267,12 +2267,12 @@ Tidak bisa membaca file: %1 - + Unsupported file format. Format file tidak didukung. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Tidak didukung versi format file baru. Beberapa fitur peta tidak akan dimuat atau diselamatkan oleh versi program. @@ -4715,68 +4715,73 @@ zoom menggunakan roda mouse, jika tersedia. Tidak dapat mengekspor pergeseran pola mengisi sebuah objek daerah - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Tidak dapat mengekspor template: file jenis "%1" tidak didukung namun - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. - + In line symbol "%1", cannot represent cap/join combination. Dalam baris simbol "%1", tidak bisa mewakili topi bergabung-dengan kombinasi. - + In line symbol "%1", neglecting the dash grouping. Dalam baris simbol "%1", mengabaikan pengelompokan dash. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. Dalam baris simbol "%1", jumlah berlari dalam kelompok telah berkurang menjadi 2. - + In line symbol "%1", cannot export the borders correctly. Dalam baris simbol "%1", tidak dapat mengekspor perbatasan dengan benar. - + In area symbol "%1", skipping a fill pattern. Di daerah simbol "%1", melompat-lompat pola mengisi. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. Di daerah simbol "%1", dengan asumsi "bergeser baris" titik pola. Ini mungkin benar serta salah. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet Dalam teks simbol %1: spasi karakter kustom terletak, pelaksanaannya tidak sesuai perilaku OCAD yang belum - + In text symbol %1: ignoring underlining Dalam teks simbol %1: mengabaikan menggarisbawahi - + In text symbol %1: ignoring kerning Dalam teks simbol %1: mengabaikan highlight - + String truncated (truncation marked with three '|'): %1 String yang terpotong (pemotongan ditandai dengan tiga '|'): %1 @@ -7705,28 +7710,28 @@ Didukung versi maksimum adalah %2. OpenOrienteering::UndoManager - - + + Error Kesalahan - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. Tidak dapat membatalkan karena langkah undo terakhir menjadi tidak valid. Ini misalnya dapat terjadi jika Anda mengubah simbol objek lain dan kemudian menghapus simbol tua. - + Confirmation Konfirmasi - + Undoing this step will go beyond the point where the file was loaded. Are you sure? Membatalkan langkah ini akan melampaui titik dimana file yang dimuat. Kamu yakin? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. Tidak bisa mengulang karena mengulang langkah pertama menjadi tidak valid. Ini misalnya dapat terjadi jika Anda menghapus simbol objek Anda telah ditarik. @@ -7792,7 +7797,7 @@ Didukung versi maksimum adalah %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Versi Mapper tidak mendukung beberapa peta bagian. Untuk menyimpan peta dalam modus kompatibilitas, Anda harus terlebih dahulu menggabungkan seluruh peta. @@ -7800,27 +7805,27 @@ Didukung versi maksimum adalah %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Elemen tidak didukung: %1 (baris %2 kolom %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. Koordinat beberapa berada di luar batas-batas untuk pencetakan. Peta konten yang disesuaikan. - + unknown tidak diketahui - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 Bagian dari file ini tidak dapat dibaca oleh versi Mapper. Minimum versi yang diperlukan: %1 - + Error at line %1 column %2: %3 Kesalahan line %1 kolom %2: %3 @@ -7829,44 +7834,44 @@ Didukung versi maksimum adalah %2. Peta catatan tidak dapat dibaca. - - + + Some invalid characters had to be removed. - + Unknown error Kesalahan tidak diketahui - + Unsupported or invalid georeferencing specification '%1': %2 Spesifikasi georeferencing tidak didukung atau tidak valid '%1': %2 - - + + Could not set knockout property of color '%1'. Bisa tidak mengatur properti babak warna '%1'. - + Expected %1 colors, found %2. Diharapkan %1 warna, ditemukan %2. - + Spot color %1 not found while processing %2 (%3). Melihat warna %1 tidak ditemukan saat pemrosesan %2 (%3). - + Expected %1 symbols, found %2. Diharapkan %1 simbol, ditemukan %2. - + Expected %1 map parts, found %2. Diharapkan %1 bagian peta, ditemukan %2. diff --git a/translations/OpenOrienteering_it.ts b/translations/OpenOrienteering_it.ts index 6c0037819..17d2b75e4 100644 --- a/translations/OpenOrienteering_it.ts +++ b/translations/OpenOrienteering_it.ts @@ -2175,7 +2175,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2208,13 +2208,13 @@ Attese %1 coordinate, trovate %2. - + Error while loading the printing configuration at %1:%2: %3 Errore durante il caricamento della configurazione di stampa a %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 @@ -2286,13 +2286,13 @@ Il supporto per questo tipo di file verrà rimosso dal programma a breve. Per ri - + Invalid file format version. Versione del formato del file non valida. - + Unsupported old file format version. Please use an older program version to load and update the file. Versione di file vecchia non supportata. Prego usare un versione di programma più vecchia per caricare ed aggiornare il file. @@ -2343,12 +2343,12 @@ Il supporto per questo tipo di file verrà rimosso dal programma a breve. Per ri Impossibile leggere il file: %1 - + Unsupported file format. Formato file non supportato. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Versione del formato del file non supportata (più recente). Alcune caratteristiche della mappa non verranno caricate e/o salvate da questa versione del programma. @@ -4808,68 +4808,73 @@ se disponibile si può zoomare con la rotella del mouse. Impossibile esportare lo "shift" di un motivo per un oggetto di tipo area - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Impossibile esportare il template: i file di tipo "%1" non sono ancora supportati - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. - + In line symbol "%1", cannot represent cap/join combination. Nel simbolo linea "%1", impossibile rappresentare la cmbinazione di terminali e giunzioni. - + In line symbol "%1", neglecting the dash grouping. Nel simbolo linea "%1", viene ignorato il raggruppamento del tratteggio. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. Nel simbolo linea "%1", il numero di tratteggi per gruppo è stato ridotto a 2. - + In line symbol "%1", cannot export the borders correctly. Nel simbolo linea "%1", impossibile esportare i bordi correttamente. - + In area symbol "%1", skipping a fill pattern. Nel simbolo linea "%1", motivo di riempimento saltato. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. Nel simbolo area "%1", assumiamo un "shifted rows"come montivo di tipo punto. Questo può essere sia corretto che non. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet Nel simbolo testo %1: è impostata una spaziatura dei caratteri custom, questa implementazione non corrisponde ancora al comportamento di OCAD - + In text symbol %1: ignoring underlining Nel simbolo di testo %1: viene ignorata la sottolineatura - + In text symbol %1: ignoring kerning Nel simbolo testo %1: crenatura ignorata - + String truncated (truncation marked with three '|'): %1 Stringa truncata (abbreviazione marcata con tre '|'): %1 @@ -7845,28 +7850,28 @@ La versione massima supportata è %2. OpenOrienteering::UndoManager - - + + Error Errore - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. Impossibile annullare perché l'ultima mossa è diventata invalida. Capita per esempio se si cambia il simbolo di un oggetto e poi viene cancellato il vecchio simbolo. - + Confirmation Conferma - + Undoing this step will go beyond the point where the file was loaded. Are you sure? L'anullamento di questo passo andrebbe oltre il punto in cui fu caricato il file. Sei sicuro? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. Impossibile ripetere perché la mossa è diventata invalida. Può capitare se cancelli un simbolo di un oggetto che hai disegnato. @@ -7932,7 +7937,7 @@ La versione massima supportata è %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Le versioni vecchie di Mapper non supportano parts di mappa multiple. Per salvare la mappa in modalità compatibile, prima fondere assieme tutte le parts della mappa. @@ -7940,69 +7945,69 @@ La versione massima supportata è %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Elemento non supportato: %1 (linea %2 colonna %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. - + unknown sconosciuto - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 Parti di questo file non possono venir lette da questa versione di Mapper. Versione minima richiesta: %1 - + Error at line %1 column %2: %3 - - + + Some invalid characters had to be removed. - + Unknown error Errore sconosciuto - + Unsupported or invalid georeferencing specification '%1': %2 Specifica di georeferenziazione non supportata o invalida '%1': %2 - - + + Could not set knockout property of color '%1'. Impossibile impostare la proprietà di foratura del colore '%1'. - + Expected %1 colors, found %2. Attesi %1 colori, trovati %2. - + Spot color %1 not found while processing %2 (%3). Colore di calamaio %1 non trovato durante l'elaborazione %2 (%3). - + Expected %1 symbols, found %2. Attesi %1 simboli, trovati %2. - + Expected %1 map parts, found %2. Attese %1 parts di mappa, trovate %2. diff --git a/translations/OpenOrienteering_ja.ts b/translations/OpenOrienteering_ja.ts index 839d027ef..0f3d55479 100644 --- a/translations/OpenOrienteering_ja.ts +++ b/translations/OpenOrienteering_ja.ts @@ -2475,7 +2475,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2504,13 +2504,13 @@ %1 の座標が必要ですが、%2 が見つかりました。 - + Error while loading the printing configuration at %1:%2: %3 %1:%2 で、印刷の設定を読み込み中にエラー: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 %1:%2 で、ステップを元に戻す/繰り返しを読み込み中にエラー: %3 @@ -2581,13 +2581,13 @@ - + Invalid file format version. 無効なバージョンのファイル形式です。 - + Unsupported old file format version. Please use an older program version to load and update the file. サポートされていない古いファイル形式のバージョンです。ファイルの読み込みと更新には古いバージョンのプログラムを使用してください。 @@ -2638,12 +2638,12 @@ ファイルの読み込みに失敗しました: %1 - + Unsupported file format. サポートされていないファイル形式です。 - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. サポートされていない新しいファイル形式のバージョンです。このバージョンのプログラムでは、いくつかの地図機能を読み込めないか、保存されません。 @@ -5275,68 +5275,73 @@ zoom using the mouse wheel, if available. エリアオブジェクトの塗りつぶしパターンのシフトをエクスポートできません - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet "%1" 形式のテンプレートのエクスポートは、まだサポートされていません - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). 座標は、OCAD 8 描画領域に収まるように調整されます (-2 m ... 2 m)。 - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. 一部の座標が OCAD 8 描画領域外に残っています。 OCAD で到達できない可能性があります。 - + In line symbol "%1", cannot represent cap/join combination. 線の記号「%1」で、キャップ/結合の組み合わせを表すことはできません。 - + In line symbol "%1", neglecting the dash grouping. 線の記号「%1」で、ダッシュ グループを無視します。 - + In line symbol "%1", the number of dashes in a group has been reduced to 2. 線の記号「%1」で、グループの破線の数を 2 に減らしました。 - + In line symbol "%1", cannot export the borders correctly. 線の記号「%1」で、境界線を正しくエクスポートできません。 - + In area symbol "%1", skipping a fill pattern. エリア記号「%1」で、塗りつぶしパターンをスキップします。 - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. エリア記号「%1」に「シフト行」ポイントパターンを想定します。これは正しくない可能性もあります。 - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet テキスト記号 %1 で: カスタムの文字間隔を設定しました。その実装では OCAD の動作はまだ一致しません - + In text symbol %1: ignoring underlining テキスト記号 %1 で: 下線を無視しています - + In text symbol %1: ignoring kerning テキスト記号 %1 で: カーニングを無視しています - + String truncated (truncation marked with three '|'): %1 文字列を切り捨てました (切り捨てマークは 3 つの '|'): %1 @@ -8659,28 +8664,28 @@ The maximum supported version is %2. OpenOrienteering::UndoManager - - + + Error エラー - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. 直前の操作が無効なので、元に戻すことができません。これは例えば、オブジェクトの記号を変更した後で、前の記号を削除したような場合に起こります。 - + Confirmation 確認 - + Undoing this step will go beyond the point where the file was loaded. Are you sure? ファイルを開いた時点より前の操作を元に戻します。よろしいですか? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. 直後の操作が無効なので、やり直すことができません。これは例えば、描画したオブジェクトの記号を削除したような場合に起こります。 @@ -8746,7 +8751,7 @@ The maximum supported version is %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Mapper の古いバージョンでは、複数の地図の要素はサポートしていません。互換モードで地図を保存するには、最初にすべての地図の要素をマージする必要があります。 @@ -8754,27 +8759,27 @@ The maximum supported version is %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) サポートされていない要素: %1 (%2 行目 %3 列目) - + Some coordinates were out of bounds for printing. Map content was adjusted. いくつかの座標は印刷範囲外でした。地図コンテンツを調整しました。 - + unknown 不明 - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 このバージョンの Mapper では、このファイルの要素を読み取ることができません。最低限必要なバージョン: %1 - + Error at line %1 column %2: %3 %1 行目 %2 列目でエラー: %3 @@ -8783,44 +8788,44 @@ The maximum supported version is %2. ノートを読み取ることができません。 - - + + Some invalid characters had to be removed. いくつかの無効な文字を削除する必要がありました。 - + Unknown error 不明なエラー - + Unsupported or invalid georeferencing specification '%1': %2 サポートされていないか無効なジオリファレンス仕様 '%1': %2 - - + + Could not set knockout property of color '%1'. 色 '%1' のノックアウト プロパティを設定できませんでした。 - + Expected %1 colors, found %2. %1 の色が必要ですが、%2 が見つかりました。 - + Spot color %1 not found while processing %2 (%3). %2 (%3) の処理中に、スポット カラー %1 が見つかりませんでした。 - + Expected %1 symbols, found %2. %1 の記号を予期しましたが、%2 が見つかりました。 - + Expected %1 map parts, found %2. %1 の地図の要素が必要ですが、%2 が見つかりました。 diff --git a/translations/OpenOrienteering_lv.ts b/translations/OpenOrienteering_lv.ts index 7997972d5..003e244e1 100644 --- a/translations/OpenOrienteering_lv.ts +++ b/translations/OpenOrienteering_lv.ts @@ -2271,7 +2271,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2300,13 +2300,13 @@ Paredzamas %1 koordinātas, konstatēts %2. - + Error while loading the printing configuration at %1:%2: %3 Kļūda, ielādējot drukāšanas konfigurācijas %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Kļūda, ielādējot atsaukt/atkārtot darbības soļus %1: %2: %3 @@ -2383,13 +2383,13 @@ - + Invalid file format version. Nepareiza datnes formāta versija. - + Unsupported old file format version. Please use an older program version to load and update the file. Neatbalstīta veca datņu formāta versija. Lūdzu, lieto vecāku programmas versiju, lai ielasītu un aktualizētu datni. @@ -2440,12 +2440,12 @@ Nevar ielasīt datni: %1 - + Unsupported file format. Neatbalstīts datnes formāts. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Neatbalstīta jauna datnes formāta versija. Dažas kartes detaļas netiks ielasītas vai saglabātas šajā programmas versijā. @@ -4930,68 +4930,73 @@ tuvini, lietojot peles riteni, ja pieejams. Neizdevās eksportēt aizpildījuma parauga nobīdi laukuma objektam - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Nav iespējams eksportēt šablonu: datnes tips "%1" pagaidām netiek atbalstīts - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). Koordinātas tiek pielāgotas, lai ietilptu OCAD 8 zīmēšanas laukumā (-2 m... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. Dažas koordinātes paliek ārpus OCAD 8 zīmēšanas laukuma. Tās varētu būt nesasniedzamas OCAD. - + In line symbol "%1", cannot represent cap/join combination. Līnijveida simbolā "%1" nevar attēlot gala/savienojuma kombināciju. - + In line symbol "%1", neglecting the dash grouping. Līnijveida simbolā "%1" neņem vērā mezglu grupējumu. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. Līnijveida simbolā "%1" mezglu skaits grupā samazināts līdz 2. - + In line symbol "%1", cannot export the borders correctly. Līnijveida simbolā "%1" neizdevās korekti eksportēt robežas. - + In area symbol "%1", skipping a fill pattern. Laukuma simbolā "%1" izlaiž pildījuma paraugu. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. Laukuma simbolā "%1" pieņem "nobīdīto rindu" punktveida paraugu. Tas var būt gan korekti, gan nekorekti. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet Teksta simbolā "%1": tiek lietota mainīta simbolu atkāpe, tās realizācija pagaidām neatbilst OCAD lietotajai - + In text symbol %1: ignoring underlining Teksta simbolā %1: ignorē pasvītrojumu - + In text symbol %1: ignoring kerning Teksta simbolā %1: ignorē simbola nobīdi - + String truncated (truncation marked with three '|'): %1 Simbolu virkne nogriezta (marķēts ar trīs '|'): %1 @@ -8016,28 +8021,28 @@ Maksimālā atbalstītā versija ir %2. OpenOrienteering::UndoManager - - + + Error Kļūda - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. Nevar atsaukt, jo pēdējais atsaukuma solis nav korekts. Tas var notikt, piemēram, ja tiek mainīts objekta simbols uz citu, un pēc tam vecais simbols tiek dzēsts. - + Confirmation Apstiprinājums - + Undoing this step will go beyond the point where the file was loaded. Are you sure? Atsaucot šo soli, nonākam vietā, kur tika ielasīta datne. Vai esi pārliecināts? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. Nevar izdarīt atkārtoti, jo pirmais darbības solis kļuvis nekorekts. Tas, piemēram, var notikt, ja tiek dzēsts uzzīmētā objekta simbols. @@ -8103,7 +8108,7 @@ Maksimālā atbalstītā versija ir %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Vecākas Mapper versijas neatbalsta vairākas kartes daļas. Lai saglabātu karti saderīgā formātā, vispirms jāsapludina visas kartes daļas. @@ -8111,69 +8116,69 @@ Maksimālā atbalstītā versija ir %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Neatbalstīts elements: %1 (rinda %2 aile %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. Dažas koordinātes bija ārpus robežām drukāšanai. Kartes saturs tika koriģēts. - + unknown nezināms - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 Datnes daļas nevar ielasīt ar šo Mapper versiju. Minimālā nepieciešamā versija: %1 - + Error at line %1 column %2: %3 Kļūda rindā %1 ailē %2: %3 - - + + Some invalid characters had to be removed. Dažas nederīgas rakstzīmes bija jāatmet. - + Unknown error Nezināma kļūda - + Unsupported or invalid georeferencing specification '%1': %2 Neatbalstīta vai nederīga georeferenču specifikācija '%1': %2 - - + + Could not set knockout property of color '%1'. Nevarēja iestatīt bloķējošo īpašību krāsai '%1'. - + Expected %1 colors, found %2. Jābūt %1 krāsām, atrastas %2. - + Spot color %1 not found while processing %2 (%3). Speckrāsa %1 nav atrasta, apstrādājot %2 (%3). - + Expected %1 symbols, found %2. Jābūt %1 simboliem, atrasti %2. - + Expected %1 map parts, found %2. Jābūt %1 kartes daļām, atrastas %2. diff --git a/translations/OpenOrienteering_nb.ts b/translations/OpenOrienteering_nb.ts index 15b581589..552d756c8 100644 --- a/translations/OpenOrienteering_nb.ts +++ b/translations/OpenOrienteering_nb.ts @@ -2286,7 +2286,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2319,13 +2319,13 @@ Forventet %1 koordinater, fant %2. - + Error while loading the printing configuration at %1:%2: %3 Feil ved lasting av skriverkonfigurasjonen ved %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Feil ved lasting av angre/gjenta-trinn ved %1:%2: %3 @@ -2401,13 +2401,13 @@ - + Invalid file format version. Feil versjon av filformatet. - + Unsupported old file format version. Please use an older program version to load and update the file. Ikke støttet gammelt filformat. Vennligst bruk en tidligere versjon av programmet for å oppdatere filen. @@ -2458,12 +2458,12 @@ Kan ikke lese filen: %1 - + Unsupported file format. Ikke støttet filformat. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Ikke støttet nytt filformat. Noen kartegenskaper vil ikke bli lastet eller lagret med denne versjonen av programmet. @@ -4977,68 +4977,73 @@ rull musehjulet for å zoome. Ikke i stand til å eksportere fyllmønsterendring for et flateobjekt - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Klrte ikke å eksportere bakgrunnsbilde: filtypen til "%1" er ikke støttet ennå - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). Koordinater justeres for å passe i OCAD-8s tegneområde (-2 m … 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. Noen koordinater er fremdeles utenfor OCAD-8s tegneområde. De kan kanskje ikke leses i OCAD. - + In line symbol "%1", cannot represent cap/join combination. For linjesymbol "%1", kan ikke vise ende/knekk-kombinasjon. - + In line symbol "%1", neglecting the dash grouping. For linjesymbol "%1", kan ikke vise dash grouping. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. For linjesymbol "%1" har antallet styrepunkter i en gruppe blitt redusert til 2. - + In line symbol "%1", cannot export the borders correctly. For linjesymbol "%1" kan ikke kantlinjer eksporters korrekt. - + In area symbol "%1", skipping a fill pattern. For flatesymbol "%1" er et fyllmønster utelatt. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. For flatesymbol "%1" antas et "shifted rows" punktmønster. Dette kan både være korrekt og ikke korrekt. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet For tekstsymbol %1 er det angitt tegnavstand, denne funksjonen følger ikke OCADs håndtering ennå - + In text symbol %1: ignoring underlining For tekstsymbol %1: ignorerer understreking - + In text symbol %1: ignoring kerning For tekstsymbol %1: ignorerer kniping - + String truncated (truncation marked with three '|'): %1 Tekststreng forkortet (forkortelsen merket med 3 '|'): %1 @@ -8116,28 +8121,28 @@ Høyeste støttede versjon er %2. OpenOrienteering::UndoManager - - + + Error Feil - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. Kan ikke angre fordi siste angrenivå ble ugyldig. Dette kan f.eks. skje hvis du endrer et symbol for et objekt til et annet symbol og deretter sletter det gamle symbolet. - + Confirmation Bekreftelse - + Undoing this step will go beyond the point where the file was loaded. Are you sure? Angring nå vil passere filens status ved siste innlasting. Er du sikker på at du vil angre? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. Kan ikke gjøre om fordi første nivå ble ugyldig. Dette kan f.eks. skje hvis du sletter et symbol for et objekt du har tegnet. @@ -8203,7 +8208,7 @@ Høyeste støttede versjon er %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Tidligere versjoner av Mapper støtter ikke multiple kartdeler. For lagring i kompabilitetsmodus, du må først slå sammen kartdelene. @@ -8211,69 +8216,69 @@ Høyeste støttede versjon er %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Ikke støttet element: %1 (linje %2 kolonne %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. Noen koordinater var utenfor utskriftsområdet. Kartinnholdet ble justert. - + unknown ukjent - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 Deler av denne filen kan ikke leses av denne versjonen av Mapper. Det kreves minimum versjon: %1 - + Error at line %1 column %2: %3 Feil i linje %1 kolonne %2: %3 - - + + Some invalid characters had to be removed. Måtte fjerne noen ugyldige tegn. - + Unknown error Ukjent feil - + Unsupported or invalid georeferencing specification '%1': %2 Ustøttet eller ugyldig georeferansespesifikasjon '%1': %2 - - + + Could not set knockout property of color '%1'. Kunne ikke angi utslagsverdi for farge '%1'. - + Expected %1 colors, found %2. Forventet %1 farger, fant %2. - + Spot color %1 not found while processing %2 (%3). Spotfarge %1 ikke funnet under prosessering %2 (%3). - + Expected %1 symbols, found %2. Forventet %1 symboler, fant %2. - + Expected %1 map parts, found %2. Forventet %1 kartdeler, fant %2. diff --git a/translations/OpenOrienteering_nl.ts b/translations/OpenOrienteering_nl.ts index 1e07953ea..c3f50c82e 100644 --- a/translations/OpenOrienteering_nl.ts +++ b/translations/OpenOrienteering_nl.ts @@ -2358,7 +2358,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2391,13 +2391,13 @@ %1 Coördinaten verwacht, %2 gevonden. - + Error while loading the printing configuration at %1:%2: %3 Fout bij het laden van de afdrukinstellingen op %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Fout bij het laden van de herstel-stappen op %1:%2: %3 @@ -2478,13 +2478,13 @@ - + Invalid file format version. Ongeldige bestands-formaat versie. - + Unsupported old file format version. Please use an older program version to load and update the file. Niet-ondersteund oud bestands-formaat. Gebruik een oudere versie van dit programma om het bestand te openen en in een nieuw formaat op te slaan. @@ -2535,12 +2535,12 @@ Inlezen van bestand %1 niet gelukt - + Unsupported file format. Bestands-formaat niet ondersteund. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Niet-ondersteund nieuw bestands-formaat. Sommige elementen op de kaart kunnen niet worden gelezen of geschreven door deze versie van het programma. @@ -5045,68 +5045,73 @@ en gebruik -indien beschikbaar- het muiswiel om uit te vergroten/verkleinen.Het is niet mogelijk op vlak-vullings verschuiving voor een oppervlak-object te exporteren - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Het is niet mogelijk om het sjabloon te exporteren: bestanden met type "%1" worden nog niet ondersteund - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). Coördinaten zijn aangepast om binnen het OCAD 8 werkgebied te passen (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. Enkele coördinaten vallen nog buiten het OCAD 8 werkgebied. Deze zouden niet bereikbaar kunnen zijn in OCAD. - + In line symbol "%1", cannot represent cap/join combination. De combinatie van uiteinde/knikpunt van lijn-symbool "%1" kan niet worden weergegeven. - + In line symbol "%1", neglecting the dash grouping. Streep-groepering in lijn-symbool "%1" is weggelaten. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. Het aantal strepen in een groep in lijn-symbool "%1" is teruggebracht tot 2. - + In line symbol "%1", cannot export the borders correctly. De randen in lijn-symbool "%1" kunnen niet correct worden geëxporteerd. - + In area symbol "%1", skipping a fill pattern. Vulpatroon in vlak-symbool "%1" is weggelaten. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. Aangenomen werd dat een "verschoven rijen" punten-patroon werd bedoeld in vlak-symbool "%1". Dan kan wel of niet juist zijn. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet In tekst-symbool "%1" is een aangepaste letter-afstand gebuikt. De implementatie daar van komt nog niet overeen met het gedrag van OCAD - + In text symbol %1: ignoring underlining De onderstreping van tekst-symbool "%1" is achterwege gelaten - + In text symbol %1: ignoring kerning De afspatiëring in tekst-symbool "%1" is niet toegepast - + String truncated (truncation marked with three '|'): %1 Regel afgebroken (afbreekplaats is met drie '|' aangegeven): %1 @@ -8254,29 +8259,29 @@ Vorlage konnte Niet geladen werden. Existiert deze Gegevens? OpenOrienteering::UndoManager - - + + Error Fout - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. Original diskutabel Ongedaan maken is niet mogelijk, omdat de laatste herstel-stap inmiddels ongeldig is geworden (bijvoorbeeld omdat het symbool van een object is gewijzigd, en het oude symbool is verwijderd). - + Confirmation Bevestiging - + Undoing this step will go beyond the point where the file was loaded. Are you sure? Deze stap ongedaan maken gaat verder terug dan het punt waarop het bestand is geladen. Is dat de bedoeling? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. Ongedaan maken is niet mogelijk, omdat de eerste herstel-stap inmiddels ongeldig is geworden (bijvoorbeeld omdat het symbool van een zojuist getekend object is verwijderd). @@ -8342,7 +8347,7 @@ Vorlage konnte Niet geladen werden. Existiert deze Gegevens? OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Oudere versies van Mapper ondersteunen geen meerder kaartlagen. Om de kaart in voor die versies leesbaar formaat op te slaan,dien je eerst alle lagen van de kaart samen te voegen. @@ -8350,22 +8355,22 @@ Vorlage konnte Niet geladen werden. Existiert deze Gegevens? OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Element niet ondersteund: %1 (regel %2 kolom %3) - + unknown onbekend - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 Delen van dit bestand kunnen niet worden gelezen met Mapper. De minimaal vereiste versie is %1 - + Error at line %1 column %2: %3 Fout in regel %1, kolom %2: %3 @@ -8374,49 +8379,49 @@ Vorlage konnte Niet geladen werden. Existiert deze Gegevens? De aantekeningen van de kaart konden niet worden ingelezen. - - + + Some invalid characters had to be removed. Sommige ongeldige karakters zijn verwijderd. - + Unknown error Onbekende fout - + Unsupported or invalid georeferencing specification '%1': %2 Niet-ondersteunde of ongeldige geografische uitlijning '%1': %2 - - + + Could not set knockout property of color '%1'. Uitspaar-eigenschap van kleur '%1' kon niet worden ingesteld. - + Expected %1 colors, found %2. %1 kleuren veracht, maar %2 gevonden. - + Spot color %1 not found while processing %2 (%3). Steunkleur %1 niet gevonden bij bewerking van %2 (%3). - + Expected %1 symbols, found %2. %1 symbolen verwacht, maar %2 gevonden. - + Expected %1 map parts, found %2. %1 kaart-delen verwacht, %2 gevonden. - + Some coordinates were out of bounds for printing. Map content was adjusted. Sommige coördinaten vielen buiten het afdrukbereik. De inhoud van de kaart is aangepast. diff --git a/translations/OpenOrienteering_pl.ts b/translations/OpenOrienteering_pl.ts index 2a1b5250e..7c4ece1f9 100644 --- a/translations/OpenOrienteering_pl.ts +++ b/translations/OpenOrienteering_pl.ts @@ -2306,7 +2306,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2345,13 +2345,13 @@ - + Error while loading the printing configuration at %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 @@ -2431,7 +2431,7 @@ - + Unsupported old file format version. Please use an older program version to load and update the file. Nieobsługiwana, stara wersja formatu pliku. Użyj starszej wersji programu, aby załadować i uaktualnić plik. @@ -2447,17 +2447,17 @@ - + Invalid file format version. Nieprawidłowa wersja formatu pliku. - + Unsupported file format. Nieobsługiwany format pliku. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Nieobsługiwany, nowszy format wersji pliku. Niektóre właściwości mapy nie będą wszytane lub zapisane w tej wesji. @@ -4964,42 +4964,42 @@ zoom using the mouse wheel, if available. OpenOrienteering::OCAD8FileExport - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. W symbolu powierzchniowym "%1", zakładasz "przesunięcia wierszy" wzorów punktu. To może być nieprawidłowe. - + In line symbol "%1", cannot export the borders correctly. W symbolu liniowym "%1", nie można prawidłowo eksportować obramowań. - + In area symbol "%1", skipping a fill pattern. W symbolu powierzchniowym "%1", omijam wzór wypełnienia. - + String truncated (truncation marked with three '|'): %1 Linka odcięta (odcinanie oznaczone trójką '|'): %1 - + In text symbol %1: ignoring underlining W symbolu tekstowym %1: igoruję podkreślenie - + In line symbol "%1", neglecting the dash grouping. W obiekcie liniowym "%1", lekceważąc grupowanie kresek. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet W symbolu tekstowym %1: własne przerwy pomiędzy znakami są ustawione, ta implementacja nie odpowiada OCADowi - + Unable to export template: file type of "%1" is not supported yet Nie można eksportować podkładu: typ pliku "%1" nie jest jeszcze obsługiwany @@ -5009,28 +5009,33 @@ zoom using the mouse wheel, if available. Mapa zawiera więcej niż 256 kolorów, co nie jest obsługiwane przez OCADa w wersji 8. - - + + Unable to save correct position of missing template: "%1" + + + + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. - + In line symbol "%1", cannot represent cap/join combination. W obiekcie liniowym "%1", nie można odtworzyć kombinacji końcówek/połączeń. - + In text symbol %1: ignoring kerning W symbolu tekstowym %1: ignoruję kerning - + In line symbol "%1", the number of dashes in a group has been reduced to 2. W symbolu liniowym "%1", liczba kresek w grupie została zredukowana do 2. @@ -8112,28 +8117,28 @@ Not an OSM file. OpenOrienteering::UndoManager - - + + Error Błąd - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. Nie można cofnąć, bo ostatni krok jest nieprawidłowy. Może się tak dziać np. jeśli zmienisz symbol obiektu na inny, a potem usuniesz stary symbol. - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. Nie można ponowić, ponieważ następny krok jest nieprawidłowy. Dzieje się tak np. kiedy usuniesz symbol obiektu, który narysowałeś. - + Undoing this step will go beyond the point where the file was loaded. Are you sure? Cofanie tego kroku oznacza wrócenie do wersji sprzed załadowania pliku. Czy na pewno chcesz to zrobić? - + Confirmation Potwierdzenie @@ -8199,7 +8204,7 @@ Not an OSM file. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. @@ -8207,69 +8212,69 @@ Not an OSM file. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Nieobsługiwany element: %1 (wers %2 koluma %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. - + Error at line %1 column %2: %3 - - + + Could not set knockout property of color '%1'. - + Expected %1 map parts, found %2. Spodziewana %1 część mapy, znaleziona %2. - + Expected %1 symbols, found %2. Spodziewany %1 symbol, znaleziony %2. - + Spot color %1 not found while processing %2 (%3). Kolor dodatkowy %1 nie znaleziony w trakcie przetwarzania %2 (%3). - + Expected %1 colors, found %2. Spodziewane %1 kolory, znalezione %2. - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 - + unknown - - + + Some invalid characters had to be removed. - + Unknown error - + Unsupported or invalid georeferencing specification '%1': %2 diff --git a/translations/OpenOrienteering_pt_BR.ts b/translations/OpenOrienteering_pt_BR.ts index da0a91123..06c908b09 100644 --- a/translations/OpenOrienteering_pt_BR.ts +++ b/translations/OpenOrienteering_pt_BR.ts @@ -2148,7 +2148,7 @@ Tradução em Português-BR feita por João Manoel Franco. - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2177,13 +2177,13 @@ Tradução em Português-BR feita por João Manoel Franco. Esperadas %1 coordenadas, encontradas %2. - + Error while loading the printing configuration at %1:%2: %3 Erro ao carregar a configuração de impressão em %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Erro ao carregar passos de desfazer/refazer em %1:%2: %3 @@ -2259,13 +2259,13 @@ Tradução em Português-BR feita por João Manoel Franco. - + Invalid file format version. Versão de formato de arquivo inválida. - + Unsupported old file format version. Please use an older program version to load and update the file. Versão de formato de arquivo antiga sem suporte. Por favor usar um programa antigo para carregar e atualizar o arquivo. @@ -2316,12 +2316,12 @@ Tradução em Português-BR feita por João Manoel Franco. Não foi possível ler o arquivo: %1 - + Unsupported file format. Formato de arquivo sem suporte. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Versão de formato de arquivo nova sem suporte. Alguns elementos do mapa não serão carregados ou salvos nesta versão do programa. @@ -4807,69 +4807,74 @@ aproximar e afastar usando a roda do mouse, se disponível. Não é possível exportar preenchimento de padronagem para um objeto de área - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Não foi possível exportar Mapa Base: tipo de arquivo "%1" ainda não tem suporte - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. - + In line symbol "%1", cannot represent cap/join combination. Símbolo de linha "%1", não pode ter combinação juntar pontas. - + In line symbol "%1", neglecting the dash grouping. Símbolo de linha "%1", negligenciando o agrupamento de traço. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. Símbolo de linha "%1", o número de traços em um grupo foi reduzido a 2. - + In line symbol "%1", cannot export the borders correctly. Símbolo de linha "%1", não pôde exportar as bordas corretamente. - + In area symbol "%1", skipping a fill pattern. Símbolo de área "%1", pulou um preenchimento de padronagem. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. Símbolo de área "%1", assumindo um padrão de ponto "linhas deslocadas". Isso pode ser correto, bem como incorreto. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet Símbolo de texto "%1", espaçamento personalizado de caracteres foi definido, a sua aplicação ainda não coincide com o comportamento do OCAD - + In text symbol %1: ignoring underlining Símbolo de texto "%1": ignorando sublinhado - + In text symbol %1: ignoring kerning kerning: o ato de formar uma parte saliente de um tipo de letra Símbolo de texto "%1": ignorando kerning - + String truncated (truncation marked with three '|'): %1 String truncada (parte marcada com três '|'): %1 @@ -7820,28 +7825,28 @@ A versão máxima suportada é %2. OpenOrienteering::UndoManager - - + + Error Erro - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. Não pôde desfazer, porque a última etapa de desfazer tornou-se inválida. Isto pode acontecer, por exemplo, se você alterar o símbolo de um objeto para outro e, em seguida, excluir o símbolo antigo. - + Confirmation Confirmação - + Undoing this step will go beyond the point where the file was loaded. Are you sure? Desfazendo esta etapa irá além do ponto em que o arquivo foi carregado. Você tem certeza? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. Não é possível refazer porque o primeiro passo tornou-se inválido. Isto pode acontecer, por exemplo, se você excluir o símbolo de um objeto que você desenhou. @@ -7907,7 +7912,7 @@ A versão máxima suportada é %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Versões mais antigas do Mapper não suportam várias partes do mapa. Para salvar o mapa no modo de compatibilidade, você deve primeiro unir todas as partes do mapa. @@ -7915,69 +7920,69 @@ A versão máxima suportada é %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Elemento não suportado:%1 (linha%2 coluna%3) - + Some coordinates were out of bounds for printing. Map content was adjusted. Algumas coordenadas estavam fora dos limites para a impressão. O conteúdo do mapa foi ajustado. - + unknown desconhecido - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 Partes deste arquivo não podem ser lidas por esta versão do Mapper. Versão mínima exigida: %1 - + Error at line %1 column %2: %3 Erro nt linha %1 coluna %2: %3 - - + + Some invalid characters had to be removed. - + Unknown error Erro desconhecido - + Unsupported or invalid georeferencing specification '%1': %2 Especificação georreferenciamento sem suporte ou inválido '%1': %2 - - + + Could not set knockout property of color '%1'. Não foi possível definir propriedade de nocaute da cor '%1'. - + Expected %1 colors, found %2. Esperadas %1 cores, encontradas %2. - + Spot color %1 not found while processing %2 (%3). Cor padrão %1 não foi encontrada ao processar %2 (%3). - + Expected %1 symbols, found %2. Esperados %1 símbolos, encontrados %2. - + Expected %1 map parts, found %2. Esperadas %1 partes do mapa, encontradas %2. diff --git a/translations/OpenOrienteering_pt_PT.ts b/translations/OpenOrienteering_pt_PT.ts index 8118f736e..01abcfcad 100644 --- a/translations/OpenOrienteering_pt_PT.ts +++ b/translations/OpenOrienteering_pt_PT.ts @@ -2104,7 +2104,7 @@ - + OpenOrienteering Mapper @@ -2133,13 +2133,13 @@ - + Error while loading the printing configuration at %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 @@ -2210,13 +2210,13 @@ - + Invalid file format version. - + Unsupported old file format version. Please use an older program version to load and update the file. @@ -2267,12 +2267,12 @@ - + Unsupported file format. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. @@ -4607,68 +4607,73 @@ zoom using the mouse wheel, if available. - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. - + In line symbol "%1", cannot represent cap/join combination. - + In line symbol "%1", neglecting the dash grouping. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. - + In line symbol "%1", cannot export the borders correctly. - + In area symbol "%1", skipping a fill pattern. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet - + In text symbol %1: ignoring underlining - + In text symbol %1: ignoring kerning - + String truncated (truncation marked with three '|'): %1 @@ -7559,28 +7564,28 @@ The maximum supported version is %2. OpenOrienteering::UndoManager - - + + Error Erro - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. - + Confirmation - + Undoing this step will go beyond the point where the file was loaded. Are you sure? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. @@ -7646,7 +7651,7 @@ The maximum supported version is %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. @@ -7654,69 +7659,69 @@ The maximum supported version is %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. - + unknown - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 - + Error at line %1 column %2: %3 - - + + Some invalid characters had to be removed. - + Unknown error - + Unsupported or invalid georeferencing specification '%1': %2 - - + + Could not set knockout property of color '%1'. - + Expected %1 colors, found %2. - + Spot color %1 not found while processing %2 (%3). - + Expected %1 symbols, found %2. - + Expected %1 map parts, found %2. diff --git a/translations/OpenOrienteering_ru.ts b/translations/OpenOrienteering_ru.ts index c1eacd481..ccf949bea 100644 --- a/translations/OpenOrienteering_ru.ts +++ b/translations/OpenOrienteering_ru.ts @@ -2130,7 +2130,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2159,13 +2159,13 @@ Ожидалось %1 координат, найдено %2. - + Error while loading the printing configuration at %1:%2: %3 Ошибка при загрузке конфигурации печати в %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Ошибка при загрузке истории изменений в %1:%2: %3 @@ -2238,13 +2238,13 @@ - + Invalid file format version. Некорректная версия формата файла. - + Unsupported old file format version. Please use an older program version to load and update the file. Неподдерживаемая старая версия формата файла. Пожалуйста используйте предыдущие версии программы для загрузки и правки файла. @@ -2295,12 +2295,12 @@ Не удалось прочитать файл: %1 - + Unsupported file format. Неподдерживаемый формат файла. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Неподдерживаемая новая версия формата файла. Некоторые параметры карты не могут быть загружены или сохранены в данной версии программы. @@ -4766,68 +4766,73 @@ zoom using the mouse wheel, if available. Невозможно экспортировать смещение заполняющего узора для площадного объекта - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Невозможно экспортировать подложку: тип файла "%1" пока не поддерживается - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). Координаты поправлены так, чтобы вписываться в зону рисования OCAD 8 (-2 м … 2 м). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. Некоторые координаты выходят за границы зоны рисования OCAD 8. Они могут быть недоступны в OCAD. - + In line symbol "%1", cannot represent cap/join combination. Для линейного символа "%1" невозможно отразить комбинацию окончания / соединения. - + In line symbol "%1", neglecting the dash grouping. Для линейного символа "%1" не воспроизведена группировка штрихов. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. Для линейного символа "%1" количество штрихов в группе было уменьшено в 2 раза. - + In line symbol "%1", cannot export the borders correctly. Для линейного символа "%1" невозможно верно экспортировать границы. - + In area symbol "%1", skipping a fill pattern. Для площадного символа "%1" пропущен заполняющий узор. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. Для площадного символа "%1" выявлено "смещение рядов" точечного рисунка. Это может быть как верным, так и нет. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet В текстовом символе %1: установлен нестандартный межсимвольный интервал, его реализация пока не соответствует функциональности OCAD - + In text symbol %1: ignoring underlining В текстовом символе %1: проигнорировано подчёркивание - + In text symbol %1: ignoring kerning В текстовом символе %1: проигнорирован кернинг - + String truncated (truncation marked with three '|'): %1 Строка усечена (усечение отмечено тройным "|"): %1 @@ -7782,28 +7787,28 @@ The maximum supported version is %2. OpenOrienteering::UndoManager - - + + Error Ошибка - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. Отмена невозможна, потому что последний шаг отмены стал недействительным. Например, это произойдёт, если вы измените символ объекта на другой, а затем удалите старый символ. - + Confirmation Подтверждение - + Undoing this step will go beyond the point where the file was loaded. Are you sure? Отмена этого действия будет выходить за рамки состояния файла в момент загрузки. Вы уверены? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. Невозможно повторить, потому что первый шаг повтора стал недействительным. This can for example happen if you delete the symbol of an object you have drawn. @@ -7869,7 +7874,7 @@ The maximum supported version is %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Предыдущие версии Mapper не поддерживают многослойные карты. Для сохранения карты в совместимом формате Вы должны сначала объединить все слои карты. @@ -7877,27 +7882,27 @@ The maximum supported version is %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Неподдерживаемый элемент: %1 (строка %2 столбец %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. Некоторые координаты были вне границ печати. Содержания карты было скорректировано. - + unknown неизвестен - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 Части этого файла не могут быть прочитаны с помощью данной версии Mapper. Минимальная требуемая версия: %1 - + Error at line %1 column %2: %3 Ошибка в строке %1 столбце %2: %3 @@ -7906,44 +7911,44 @@ The maximum supported version is %2. Описание карты не может быть прочитано. - - + + Some invalid characters had to be removed. Некоторые недопустимые символы должны были быть удалены. - + Unknown error Неизвестная ошибка - + Unsupported or invalid georeferencing specification '%1': %2 Неподдерживаемая или некорректная спецификация геопривязки '%1': %2 - - + + Could not set knockout property of color '%1'. Невозможно установить свойства перекрытия для цвета '%1'. - + Expected %1 colors, found %2. Ожидалось %1 цвета(ов), найдено %2. - + Spot color %1 not found while processing %2 (%3). Комбинированный цвет %1 не найден при обработке %2 (%3). - + Expected %1 symbols, found %2. Ожидалось %1 символов, найдено %2. - + Expected %1 map parts, found %2. Ожидалось %1 слоя(ёв) карты, найдено %2. diff --git a/translations/OpenOrienteering_sv.ts b/translations/OpenOrienteering_sv.ts index 718328ee0..298b4cf47 100644 --- a/translations/OpenOrienteering_sv.ts +++ b/translations/OpenOrienteering_sv.ts @@ -2581,7 +2581,7 @@ Detta fönster låter dig välja en typsnittsstorlek som ger en exakt storlek f - + OpenOrienteering Mapper @@ -2614,13 +2614,13 @@ Detta fönster låter dig välja en typsnittsstorlek som ger en exakt storlek f Förväntade %1 koordinater, hittade %2 koordinater. - + Error while loading the printing configuration at %1:%2: %3 Fel vid läsning av utskriftskonfigurationen vid %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Fel vid läsning av ångra/gör om-stegen vid %1:%2: %3 @@ -2692,13 +2692,13 @@ Detta fönster låter dig välja en typsnittsstorlek som ger en exakt storlek f - + Invalid file format version. Felaktig filformatsversion. - + Unsupported old file format version. Please use an older program version to load and update the file. Filformatet är för gammalt och stöds ej. Använd en äldre version av programmet och uppdatera filen. @@ -2749,12 +2749,12 @@ Detta fönster låter dig välja en typsnittsstorlek som ger en exakt storlek f Kunde inte läsa fil: %1 - + Unsupported file format. Filformatet stöds ej. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. För ny version av filformatet. Kartan kan inte visas eller sparas korrekt av denna version. @@ -5363,68 +5363,73 @@ zooma med scrollhjulet om tillgängligt. Det gick inte att exportera fyllningsmönstrets skifte för ett ytobjekt - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Kunde inte exportera bakgrund: filtypen "%1" stöds inte än - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). Koordinaterna justerades till att passa i OCAD 8's ritarea (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. Några koordinater är fortfarande utanför ritningsytan för OCAD 8. Dessa kanske inte kan läsas av OCAD. - + In line symbol "%1", cannot represent cap/join combination. I linjesymbolen "%1", kan inte visa slut/anslutnings-kombination. - + In line symbol "%1", neglecting the dash grouping. I linjesymbolen "%1", ignorerars strecknings-grupperingen. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. I linjesymbolen "%1", har antalet streck i en grupp har minskats till 2. - + In line symbol "%1", cannot export the borders correctly. I linjesymbol "%1" kan inte kantlinjen exporteras korrekt. - + In area symbol "%1", skipping a fill pattern. I ytsymbolen "%1", hoppas ett fyllnadsmönster över. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. I ytsymbolen "%1", antas ett "bytta rader"-mönster. Detta kan vara rätt eller fel. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet I textsymbolen %1: ett eget symbolutrymme är satt, implementationen matchar inte OCAD:s beteende än - + In text symbol %1: ignoring underlining I textsymbol %1: understreck ignoreras - + In text symbol %1: ignoring kerning I textsymbol %1: kerning ignoreras - + String truncated (truncation marked with three '|'): %1 Sträng avkortad (avkortning märkt med tre '|'): %1 @@ -8702,28 +8707,28 @@ Högsta versionen som stöds är %2. OpenOrienteering::UndoManager - - + + Error Fel - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. Kan inte ångra för att det senaste ångra-steget blev ogiltigt. Detta kan hända om du t.ex. ändrar symbolen för ett objekt och sen tar bort den gamla symbolen. - + Confirmation Bekräftelse - + Undoing this step will go beyond the point where the file was loaded. Are you sure? Ångrar du detta steg går du bortanför steget där filen öppnades. Vill du göra det? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. Kan inte ångra för att det senaste ångra-steget blev ogiltigt. Detta kan hända om du t.ex. tar bort symbolen för ett objekt du har ritat. @@ -8789,7 +8794,7 @@ Högsta versionen som stöds är %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Äldre versioner av Mapper stöder inte flera kartdelar. För att spara för dessa versioner behöver du slå ihop kartdelarna. @@ -8797,69 +8802,69 @@ Högsta versionen som stöds är %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Elementet stöds ej: %1 (linje %2 kolumn %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. Vissa koordinater var utanför det aktuella området. Kartans innehåll justerades. - + unknown okänd - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 Delar av denna fil kan inte läsas av denna version av Mapper. Använd: %1 eller nyare version - + Error at line %1 column %2: %3 Fel vid linje %1 kolumn %2: %3 - - + + Some invalid characters had to be removed. Några ogiltiga tecken har tagits bort. - + Unknown error Okänt fel - + Unsupported or invalid georeferencing specification '%1': %2 Georeferensspecifikationen stöds ej eller är felaktig '%1': %2 - - + + Could not set knockout property of color '%1'. Kunde inte sätta knockout egenskap för färg '%1'. - + Expected %1 colors, found %2. Förväntade %1 färger, hittade %2. - + Spot color %1 not found while processing %2 (%3). Dekorfärg %1 hittades inte under bearbetning av %2 (%3). - + Expected %1 symbols, found %2. Förväntade %1 symboler, hittade %2. - + Expected %1 map parts, found %2. Förväntade %1 kartdelar, hittade %2. diff --git a/translations/OpenOrienteering_template.ts b/translations/OpenOrienteering_template.ts index 3e4aada84..80ecf99cf 100644 --- a/translations/OpenOrienteering_template.ts +++ b/translations/OpenOrienteering_template.ts @@ -2103,7 +2103,7 @@ - + OpenOrienteering Mapper @@ -2132,13 +2132,13 @@ - + Error while loading the printing configuration at %1:%2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 @@ -2208,13 +2208,13 @@ - + Invalid file format version. - + Unsupported old file format version. Please use an older program version to load and update the file. @@ -2265,12 +2265,12 @@ - + Unsupported file format. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. @@ -4600,68 +4600,73 @@ zoom using the mouse wheel, if available. - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. - + In line symbol "%1", cannot represent cap/join combination. - + In line symbol "%1", neglecting the dash grouping. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. - + In line symbol "%1", cannot export the borders correctly. - + In area symbol "%1", skipping a fill pattern. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet - + In text symbol %1: ignoring underlining - + In text symbol %1: ignoring kerning - + String truncated (truncation marked with three '|'): %1 @@ -7544,28 +7549,28 @@ The maximum supported version is %2. OpenOrienteering::UndoManager - - + + Error - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. - + Confirmation - + Undoing this step will go beyond the point where the file was loaded. Are you sure? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. @@ -7631,7 +7636,7 @@ The maximum supported version is %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. @@ -7639,69 +7644,69 @@ The maximum supported version is %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. - + unknown - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 - + Error at line %1 column %2: %3 - - + + Some invalid characters had to be removed. - + Unknown error - + Unsupported or invalid georeferencing specification '%1': %2 - - + + Could not set knockout property of color '%1'. - + Expected %1 colors, found %2. - + Spot color %1 not found while processing %2 (%3). - + Expected %1 symbols, found %2. - + Expected %1 map parts, found %2. diff --git a/translations/OpenOrienteering_uk.ts b/translations/OpenOrienteering_uk.ts index 428dba5a7..2f1245fe9 100644 --- a/translations/OpenOrienteering_uk.ts +++ b/translations/OpenOrienteering_uk.ts @@ -259,10 +259,12 @@ %n bytes - %n байт - %n байти - %n байтiв - + + %n байт + %n байти + %n байтiв + + File saved by the user @@ -2124,7 +2126,7 @@ - + OpenOrienteering Mapper OpenOrienteering Mapper @@ -2153,13 +2155,13 @@ Очікувані координати %1, знайдені %2. - + Error while loading the printing configuration at %1:%2: %3 Помилка при загрузці конфігурації друку у %1:%2:%3 - - + + Error while loading the undo/redo steps at %1:%2: %3 Помилка при загрузці кроків відмінити/повторити у %1:%2:%3 @@ -2232,13 +2234,13 @@ - + Invalid file format version. Недійсний формат файла. - + Unsupported old file format version. Please use an older program version to load and update the file. Непідтримуваний застарілий формат файла. Використайте старішу версію програми щоб відкрити і перезберегти цей файл. @@ -2289,12 +2291,12 @@ Неможливо прочитати файл: %1 - + Unsupported file format. Непідтримуваний формат файла. - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. Непідтримуваний новий формат файла. Деякі особливості карти неможливо обробити або зберегти цією версією програми. @@ -4763,68 +4765,73 @@ zoom using the mouse wheel, if available. Неможливо експортувати зміщення візеруноку заповнення для площадного об'єкту - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet Неможливо експортувати підложку: тип файлу "%1" поки що не підтримується - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). Координати обмежено щоб вмістити в зону креслення OCAD 8 (-2 м ... 2 м). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. Деякі координати виходять за межі зони креслення OCAD 8. Вони можуть бути недоступними в OCAD. - + In line symbol "%1", cannot represent cap/join combination. Для лінійного знаку "%1", неможливо відобразити комбінацію закінчення/з’єднання. - + In line symbol "%1", neglecting the dash grouping. Для лінійного знаку "%1", не виконано групування штрихів. - + In line symbol "%1", the number of dashes in a group has been reduced to 2. Для лінійного знаку "%1", кількість штрихів у групі зменшено в 2 рази. - + In line symbol "%1", cannot export the borders correctly. Для лінійного знаку %1, неможливо експортувати границі. - + In area symbol "%1", skipping a fill pattern. Для площинного знаку "%1", пропущено заповнення візерунком. - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. Для площинного знаку "%1", виявлено "зміщення рядків" точкового візерунку. Це може бути як добре так і погано. - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet Для текстового знаку %1: встановлений такий міжсимвольний інтервал, що покищо неможе бути збережений у форматі OCAD - + In text symbol %1: ignoring underlining Для текстового знаку %1: проігноровано підкреслення - + In text symbol %1: ignoring kerning Для текстового знаку %1: проігноровано кернінг - + String truncated (truncation marked with three '|'): %1 Рядок обрізаний (обрізання позначено з допомогою потрійного '|'): %1 @@ -7778,28 +7785,28 @@ The maximum supported version is %2. OpenOrienteering::UndoManager - - + + Error Помилка - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. Неможливо відмінити останній крок, бо він став непридатним. Це могло трапитися якщо ви змінили знак об'єкту на інший, а потім видалили старий знак. - + Confirmation Підтвердження - + Undoing this step will go beyond the point where the file was loaded. Are you sure? Відміна цього кроку призведе до стану у якому файл був відкритий. Хочете зробити це? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. Неможливо відмінити останній крок бо попередній крок став недоступним. Це могло трапитись, наприклад, якщо ви видалили знак щойно створеного об'єкту. @@ -7865,7 +7872,7 @@ The maximum supported version is %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. Старіші версії Mapper не підтримують частини карти. Для збереження карти у режимі сумісності вам доведеться об'єднати усі частини карти. @@ -7873,69 +7880,69 @@ The maximum supported version is %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) Непідтримуваний елемент: %1 (рядок %2 стовбчик %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. Деякі координати поза межами області друку. Вміст карти був підігнаний. - + unknown невідомо - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 Частина цього файлу не може бути прочитана цією версією Mapper. Мінімальна необхідна версія: %1 - + Error at line %1 column %2: %3 Помилка у рядку %1 колонка %2: %3 - - + + Some invalid characters had to be removed. Деякі помилкові текстові символи були видалені. - + Unknown error Невідома помилка - + Unsupported or invalid georeferencing specification '%1': %2 Непідтримувана або недійсна специфікація геоприв'язки '%1': %2 - - + + Could not set knockout property of color '%1'. Неможливо встановити властивості перекривання для кольору %1'. - + Expected %1 colors, found %2. Очікувався колір %1, а знайдено %2. - + Spot color %1 not found while processing %2 (%3). Планшетний колір %1 не знайдений під час обробки %2 (%3). - + Expected %1 symbols, found %2. Очікувався знак %1, а знайдено %2. - + Expected %1 map parts, found %2. Очікувалася частина карти %1, а знайдено %2. diff --git a/translations/OpenOrienteering_zh_CN.ts b/translations/OpenOrienteering_zh_CN.ts index a5bcffd2b..33a0ca6c9 100644 --- a/translations/OpenOrienteering_zh_CN.ts +++ b/translations/OpenOrienteering_zh_CN.ts @@ -2103,7 +2103,7 @@ - + OpenOrienteering Mapper OpenOrienteering 映射器 @@ -2132,13 +2132,13 @@ 预期的 %1 坐标,找到 %2。 - + Error while loading the printing configuration at %1:%2: %3 在 %1 的打印配置加载时出错: %2: %3 - - + + Error while loading the undo/redo steps at %1:%2: %3 撤消/重复加载时的错误步骤在 %1: %2: %3 @@ -2208,13 +2208,13 @@ - + Invalid file format version. 无效的文件格式版本。 - + Unsupported old file format version. Please use an older program version to load and update the file. 旧版本的文件格式不受支持。请使用较旧的程序版本加载和更新该文件。 @@ -2265,12 +2265,12 @@ 无法读取文件: %1 - + Unsupported file format. 不支持的文件格式。 - + Unsupported new file format version. Some map features will not be loaded or saved by this version of the program. 新版本的文件格式不受支持。一些地图功能将不会加载或保存此版本的程序。 @@ -4697,68 +4697,73 @@ zoom using the mouse wheel, if available. 无法导出区域对象的填充模式转变 - + + Unable to save correct position of missing template: "%1" + + + + Unable to export template: file type of "%1" is not supported yet 无法导出模板:"%1"的文件类型尚不支持 - - + + Coordinates are adjusted to fit into the OCAD 8 drawing area (-2 m ... 2 m). - + Some coordinates remain outside of the OCAD 8 drawing area. They might be unreachable in OCAD. - + In line symbol "%1", cannot represent cap/join combination. 在行的符号"%1",不能代表帽/联接组合。 - + In line symbol "%1", neglecting the dash grouping. 行中的符号"%1",忽视了短跑分组。 - + In line symbol "%1", the number of dashes in a group has been reduced to 2. 线符号"%1",在有了破折号在一群数目减少到 2。 - + In line symbol "%1", cannot export the borders correctly. 在行的符号"%1",不能正确导出边界。 - + In area symbol "%1", skipping a fill pattern. 在地区的符号"%1",跳过填充图案。 - + In area symbol "%1", assuming a "shifted rows" point pattern. This might be correct as well as incorrect. 在地区的符号"%1",假设"转移的行"点模式。这可能是正确的以及不正确。 - + In text symbol %1: custom character spacing is set, its implementation does not match OCAD's behavior yet 在文本中的符号 %1︰ 设置自定义字符间距,其执行尚未不符遗漏的行为 - + In text symbol %1: ignoring underlining 在文本中的符号 %1︰ 忽略下划线 - + In text symbol %1: ignoring kerning 在文本中的符号 %1︰ 忽略字偶间距调整 - + String truncated (truncation marked with three '|'): %1 字符串被截断 (截断标记三个 ' |'): %1 @@ -7676,28 +7681,28 @@ The maximum supported version is %2. OpenOrienteering::UndoManager - - + + Error 错误 - + Cannot undo because the last undo step became invalid. This can for example happen if you change the symbol of an object to another and then delete the old symbol. 不能撤消,因为最后撤消一步变得无效。如果你的对象将符号更改到另一个,然后删除旧的符号,例如可以发生这种情况。 - + Confirmation 确认 - + Undoing this step will go beyond the point where the file was loaded. Are you sure? 解开这一步将超越的点被加载的文件。是否确定? - + Cannot redo because the first redo step became invalid. This can for example happen if you delete the symbol of an object you have drawn. 不能重做因为重做的第一步变得无效。如果你删除了你画的是一个对象的符号,例如可以发生这种情况。 @@ -7763,7 +7768,7 @@ The maximum supported version is %2. OpenOrienteering::XMLFileExporter - + Older versions of Mapper do not support multiple map parts. To save the map in compatibility mode, you must first merge all map parts. 映射器的旧版本不支持多个地图部分。若要保存在兼容模式下的地图,必须首先将所有地图部分都合并。 @@ -7771,69 +7776,69 @@ The maximum supported version is %2. OpenOrienteering::XMLFileImporter - + Unsupported element: %1 (line %2 column %3) 不支持的元素: %1 (%2 线列 %3) - + Some coordinates were out of bounds for printing. Map content was adjusted. 一些坐标已超出界限印刷。映射内容作了调整。 - + unknown 未知 - + Parts of this file cannot be read by this version of Mapper. Minimum required version: %1 此版本的映射器无法读取这个文件的部分。所需的最低版本: %1 - + Error at line %1 column %2: %3 在列行 %1 %2 的错误: %3 - - + + Some invalid characters had to be removed. 一些无效的字符必须被去除。 - + Unknown error 未知的错误 - + Unsupported or invalid georeferencing specification '%1': %2 不支持或无效的地理参考规范“%1”:%2 - - + + Could not set knockout property of color '%1'. 无法设置颜色“%1”的淘汰赛财产。 - + Expected %1 colors, found %2. 预期找到 %2 的 %1 颜色。 - + Spot color %1 not found while processing %2 (%3). 专色处理 %(%3) 2 时找不到 %1。 - + Expected %1 symbols, found %2. 预计1%的符号,找到%2。 - + Expected %1 map parts, found %2. 预计1%的部分地图,找到%2。 From 7c9ac6e57f25f6d6b93a16bf59824d59ec00236e Mon Sep 17 00:00:00 2001 From: Yevhen Mazur Date: Fri, 17 Aug 2018 13:44:34 +0000 Subject: [PATCH 04/49] Translated using Weblate (Ukrainian) Currently translated at 36.0% (808 of 2240 strings) Translation: OpenOrienteering/Map Symbols Translate-URL: https://hosted.weblate.org/projects/openorienteering/map-symbols/uk/ --- translations/map_symbols_uk.ts | 120 ++++++++++++++++----------------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/translations/map_symbols_uk.ts b/translations/map_symbols_uk.ts index a33f33a12..8b86c80ee 100644 --- a/translations/map_symbols_uk.ts +++ b/translations/map_symbols_uk.ts @@ -41,8 +41,8 @@ Opaque Blue Color 7 - Непрозорий Синій - + Непрозорий синій + Blue Color 8 @@ -86,8 +86,8 @@ Opaque White over Green Color 16 - Непрозорий Білий поверх Зеленого - + Непрозорий білий поверх зеленого + Opaque Green 20% Color 17 @@ -106,8 +106,8 @@ Opaque Green Color 20 - Непрозорий Зелений - + Непрозорий зелений + Green 50% Color 21 @@ -126,13 +126,13 @@ Green 50% over Yellow Color 24 - Зелений 50% зверху Жовтого - + Зелений 50% поверх жовтого + White over Yellow Color 25 - Білий зверху Жовтого - + Білий поверх жовтого + Yellow Color 26 @@ -151,12 +151,12 @@ A line joining points of equal height. The standard vertical interval between contours is 5 metres. A contour interval of 2.5 metres may be used for flat terrains. The smallest bend in a contour is 0.25 mm from centre to centre of the lines. Description of symbol 101 - Лінія, що з'єднує точки однакової висоти. Стандартний вертикальний інтервал між горизонталями (перетин рельєфу) складає 5 метрів. Для плоских ділянок можливе використання перетину 2.5 метри. Найменший вигин горизонталі має становити 0,25 мм від центру до центру лінії. + Лінія, що з'єднує точки однакової висоти. Стандартний вертикальний інтервал між горизонталями (перетин рельєфу) становить 5 метрів. Для плоскої місцевості можливе використання перетину 2.5 метри. Найменший вигин горизонталі має становити 0,25 мм від центру до центру лінії. Slope line, contour Name of symbol 101.1 - Бергштрих, горизонталь + Берґштрих, горизонталь Slope lines may be drawn on the lower side of a contour line to clarify the direction of slope. When used, they should be placed in re-entrants. @@ -171,32 +171,32 @@ Every fifth contour shall be drawn with a thicker line. This is an aid to the quick assessment of height difference and the overall shape of the terrain surface. An index contour may be represented as an ordinary contour line in an area with much detail. Small contour knolls and depressions are normally not represented using index contours. Description of symbol 102 - Кожна п'ята горизонталь повинна бути потовщеною. Це сприяє швидкості оцінки різниці висот і загального сприйняття форм місцевості. При необхідності показу дрібних деталей, потовщена горизонталь може бути зображена знаком звичайної горизонталі. Для відображення маленьких пагорбів та западин потовщена горизонталь зазвичай не використовується. + Кожна п'ята горизонталь має бути зображена потовщеною лінією. Це полегшує оцінку різниці висот та сприяє уявленню про загальну форму поверхні землі. Потовщена горизонталь може бути представлена знаком звичайної горизонталі, якщо вона проходить через ділянку багату на деталі. Малі горби та западини, як правило, не зображуються потовщеними горизонталями. Contour value Name of symbol 102.1 - Підпис висоти горизонталі - + Позначка висоти + Contour values may be included to aid assessment of large height differences. They are inserted in the index contours in positions where other detail is not obscured. The figures should be orientated so that the top of the figure is on the higher side of the contour. Description of symbol 102.1 - Підписи висоти горизонталі допомагають учасникові при оцінці великої різниці висот. Їх ставлять на потовщених горизонталях у мало насичених деталями місцях. Цифри орієнтують так, щоб їх верх був розташований у верхній частині схилу. + Позначки висоти застосовують щоб допомогти учаснику оцінити великі перепади висот. Значення висоти слід наносити на потовщену горизонталь у місцях, де воно не заважатиме сприйняттю інших деталей. Верх цифр має бути зорієнтований в гору по схилу. Form line Name of symbol 103 - Лінія форми рельєфу + Допоміжна горизонталь Form lines are used where more information must be given about the shape of the ground. Form lines are added only where representation would be incomplete with ordinary contours. They shall not be used as intermediate contours. Only one form line should be used between neighbouring contours. It is very important that a form line fits logically into the contour system, so the start and end of a form line should be parallel to the neighbouring contours. The gaps between the form line dashes must be placed on reasonably straight sections of the form line. Form lines can be used to differentiate flat knolls and depressions from more distinct ones. Description of symbol 103 - Лінії форми рельєфу використовують у випадках, коли для показу форм рельєфу необхідно передати додаткову інформацію. Лінії форм рельєфу додають лише там, де зображення форм рельєфу було б неповним при використанні лише горизонталей. Між сусідніми горизонталями може бути використана тільки одна лінія форми рельєфу. Важливо, щоб лінія форми рельєфу доречно вписувалася в систему горизонталей, тому її початок і кінець мають бути паралельними суміжним горизонталям. Розриви між штрихами мають бути розміщені на достатньо прямих ділянках лінії форми рельєфу. Лінії форми рельєфу можуть бути використані, щоб відрізнити пологі горби та западини від більш чітких. + Допоміжні горизонталі використовують у випадках, коли для показу форм рельєфу необхідно передати додаткову інформацію. Допоміжні горизонталі додають тільки там, де зображення форм рельєфу було б неповним при використанні лише горизонталей. Між сусідніми горизонталями може бути проведена лише одна допоміжна горизонталь. Важливо, щоб форма допоміжної горизонталі доречно вписувалася в систему горизонталей, тому її початок і кінець мають бути паралельними суміжним горизонталям. Розриви між штрихами мають бути розміщені на достатньо прямих ділянках лінії допоміжної горизонталі. Допоміжні горизонталі можуть бути використані, щоб відрізяити пологі горби та западини від більш чітких. Slope line, formline Name of symbol 103.1 - Бергштрих лінії форми рельєфу + Берґштрих допоміжної горзонталі Slope lines may be drawn on the lower side of a contour line to clarify the direction of slope. When used, they should be placed in re-entrants. @@ -211,7 +211,7 @@ An earth bank is an abrupt change in ground level which can be clearly distinguished from its surroundings, e.g. gravel or sand pits, road and railway cuttings or embankments. Minimum height: 1 m. An earth bank may impact runnability. The tags represent the full extent of the earth bank. For long earth banks it is allowed to use tags shorter than the minimum length at the ends. If two earth banks are close together, tags may be omitted. Impassable earth banks shall be represented using symbol 201 (impassable cliff). Description of symbol 104 - Земляний обрив - це різка зміна рівня земної поверхні, що чітко вирізняється на тлі оточення, наприклад, гравійний або піщаний кар’єр, насип вздовж шосе чи залізниці, дамба. Мінімальна висота: 1 м. Земляний обрив може впливати на прохідність. Зубці обриву зображають його планові розміри. Для довгих обривів дозволяється використовувати зубці, коротші за мінімальну довжину на кінцях. Якщо обриви розташовані близько один до одного, дозволяється не показувати зубці. Непрохідні обриви мають зображуватися знаком 201 (непрохідна скеля). + Земляний обрив - це крутий земляний схил, що чітко вирізняється на тлі оточення, наприклад, гравійний або піщаний кар’єр, насип вздовж шосе чи залізниці, дамба. Мінімальна висота: 1 м. Земляний обрив може впливати на прохідність. Вуса обриву зображають його планові розміри. Для довгих обривів дозволяється використовувати вуса, коротші за мінімальну довжину на кінцях. Якщо обриви розташовані близько один до одного, дозволяється не показувати вуса. Непрохідні обриви мають зображуватися знаком 201 (непрохідна скеля). Earth bank, minimum size @@ -221,22 +221,22 @@ An earth bank is an abrupt change in ground level which can be clearly distinguished from its surroundings, e.g. gravel or sand pits, road and railway cuttings or embankments. Minimum height: 1 m. An earth bank may impact runnability. The tags represent the full extent of the earth bank. For long earth banks it is allowed to use tags shorter than the minimum length at the ends. If two earth banks are close together, tags may be omitted. Impassable earth banks shall be represented using symbol 201 (impassable cliff). Description of symbol 104.1 - Земляний обрив - це різка зміна рівня земної поверхні, що чітко вирізняється на тлі оточення, наприклад, гравійний або піщаний кар’єр, насип вздовж шосе чи залізниці, дамба. Мінімальна висота: 1 м. Земляний обрив може впливати на прохідність. Зубці обриву зображають його планові розміри. Для довгих обривів дозволяється використовувати зубці, коротші за мінімальну довжину на кінцях. Якщо обриви розташовані близько один до одного, дозволяється не показувати зубці. Непрохідні обриви мають зображуватися знаком 201 (непрохідна скеля). + Земляний обрив - це крутий земляний схил, що чітко вирізняється на тлі оточення, наприклад, гравійний або піщаний кар’єр, насип вздовж шосе чи залізниці, дамба. Мінімальна висота: 1 м. Земляний обрив може впливати на прохідність. Вуса обриву зображають його планові розміри. Для довгих обривів дозволяється використовувати вуса, коротші за мінімальну довжину на кінцях. Якщо обриви розташовані близько один до одного, дозволяється не показувати вуса. Непрохідні обриви мають зображуватися знаком 201 (непрохідна скеля). Earth bank, top line Name of symbol 104.2 - Земляний обрив, брівка + Земляний обрив, бровка An earth bank is an abrupt change in ground level which can be clearly distinguished from its surroundings, e.g. gravel or sand pits, road and railway cuttings or embankments. Minimum height: 1 m. An earth bank may impact runnability. The tags represent the full extent of the earth bank. For long earth banks it is allowed to use tags shorter than the minimum length at the ends. If two earth banks are close together, tags may be omitted. Impassable earth banks shall be represented using symbol 201 (impassable cliff). Description of symbol 104.2 - Земляний обрив - це різка зміна рівня земної поверхні, що чітко вирізняється на тлі оточення, наприклад, гравійний або піщаний кар’єр, насип вздовж шосе чи залізниці, дамба. Мінімальна висота: 1 м. Земляний обрив може впливати на прохідність. Зубці обриву зображають його планові розміри. Для довгих обривів дозволяється використовувати зубці, коротші за мінімальну довжину на кінцях. Якщо обриви розташовані близько один до одного, дозволяється не показувати зубці. Непрохідні обриви мають зображуватися знаком 201 (непрохідна скеля). + Земляний обрив - це крутий земляний схил, що чітко вирізняється на тлі оточення, наприклад, гравійний або піщаний кар’єр, насип вздовж шосе чи залізниці, дамба. Мінімальна висота: 1 м. Земляний обрив може впливати на прохідність. Вуса обриву зображають його планові розміри. Для довгих обривів дозволяється використовувати вуса, коротші за мінімальну довжину на кінцях. Якщо обриви розташовані близько один до одного, дозволяється не показувати вуса. Непрохідні обриви мають зображуватися знаком 201 (непрохідна скеля). Earth bank, tag line Name of symbol 104.3 - Земляний обрив, зубці + Земляний обрив, вуса Use this symbol to display the full extent of wide earth banks. @@ -251,7 +251,7 @@ An earth bank is an abrupt change in ground level which can be clearly distinguished from its surroundings, e.g. gravel or sand pits, road and railway cuttings or embankments. Minimum height: 1 m. An earth bank may impact runnability. The tags represent the full extent of the earth bank. For long earth banks it is allowed to use tags shorter than the minimum length at the ends. If two earth banks are close together, tags may be omitted. Impassable earth banks shall be represented using symbol 201 (impassable cliff). Description of symbol 104.9 - Земляний обрив - це різка зміна рівня земної поверхні, що чітко вирізняється на тлі оточення, наприклад, гравійний або піщаний кар’єр, насип вздовж шосе чи залізниці, дамба. Мінімальна висота: 1 м. Земляний обрив може впливати на прохідність. Зубці обриву зображають його планові розміри. Для довгих обривів дозволяється використовувати зубці, коротші за мінімальну довжину на кінцях. Якщо обриви розташовані близько один до одного, дозволяється не показувати зубці. Непрохідні обриви мають зображуватися знаком 201 (непрохідна скеля). + Земляний обрив - це крутий земляний схил, що чітко вирізняється на тлі оточення, наприклад, гравійний або піщаний кар’єр, насип вздовж шосе чи залізниці, дамба. Мінімальна висота: 1 м. Земляний обрив може впливати на прохідність. Вуса обриву зображають його планові розміри. Для довгих обривів дозволяється використовувати вуса, коротші за мінімальну довжину на кінцях. Якщо обриви розташовані близько один до одного, дозволяється не показувати вуса. Непрохідні обриви мають зображуватися знаком 201 (непрохідна скеля). Earth wall @@ -288,13 +288,13 @@ Contour lines shall not be broken around this symbol. Small erosion gully Name of symbol 108 - Маленька промоїна + Канава A small erosion gully, dry ditch or trench. Minimum depth: 0.5 m. Contour lines should be broken around this symbol. Description of symbol 108 - Невелика вимоїна, сухий рів чи траншея. Мінімальна глибина: 0,5 м. + Невелика промоїна, сухий рів чи траншея. Мінімальна глибина: 0,5 м. Горизонталі мають бути розірвані при перетині з цим знаком. @@ -342,7 +342,7 @@ Small depressions with steep sides are represented with symbol 112 (pit). The sy Pits and holes with distinct steep sides which cannot be shown to scale using symbol 104 (earth bank). Minimum depth: 1 m. Minimum width: 1 m. A pit larger than 5 m x 5 m should normally be exaggerated and drawn using symbol 104 (earth bank). Pits without steep sides are represented with symbol 111 (small depression). The symbol may not touch or overlap other brown symbols. Location is the centre of gravity of the symbol, and the symbol is orientated to north. Description of symbol 112 - Яма чи западина з чітко вираженими крутими стінками, яка не може бути показана в масштабі знаком 104 (земляний обрив). Мінімальна глибина: 1 м. Мінімальна ширина: 1 м. Воронка, більша за 5 м × 5 м, зазвичай, перебільшується та показується знаком 104 (земляний обрив). Воронки із пологими схилами показуються знаком 111 (мала западина). Знак не може торкатися чи накладатися на інші коричневі знаки. Положенню на місцевості відповідає центр ваги знаку, зорієнтованого на північ. + Ями чи западини з чітко вираженими крутими стінками, які не можуть бути показані в масштабі знаком 104 (земляний обрив). Мінімальна глибина: 1 м. Мінімальна ширина: 1 м. Воронка, більша за 5 м × 5 м, зазвичай, перебільшується та показується знаком 104 (земляний обрив). Воронки із пологими схилами показуються знаком 111 (мала западина). Знак не може торкатися чи накладатися на інші коричневі знаки. Положенню на місцевості відповідає центр ваги знаку, зорієнтованого на північ. Broken ground @@ -411,10 +411,10 @@ For vertical rock faces the tags may be omitted if space is short. Ends of the t The gap between two impassable cliffs or between impassable cliffs and other impassable feature symbols must exceed 0.3 mm on the map. When an impassable cliff drops straight into water, making it impossible to pass under the cliff along the water’s edge, the bank line is omitted or the tags shall clearly extend over the bank line. An impassable cliff should interplay with the contour lines. Description of symbol 201 - Скельна стіна, кар'єр або земляний обрив, настільки високий та крутий, що неможливо або небезпечно спуститися/піднятися. -Для вертикальних скельних стін зубчики можуть не зображуватись, якщо простір на карті обмежений. Кінець лінії бровки може бути заокругленим або прямокутним. На кінцях можуть використовуватися коротші зубчики. + Скельна стіна, кар'єр або земляний обрив, настільки високий та крутий, що неможливо або небезпечно спуститися/піднятися. +Для вертикальних скельних стін вуса можуть не зображуватись, якщо простір на карті обмежений. Кінці лінії бровки можуть бути заокругленими або прямокутними. На кінцях можуть використовуватися коротші вуса. Проміжок між двома непрохідними скелями або між скелями та іншими непрохідними знаками має перевищувати 0,3 мм. -Коли скеля входить у воду і неможливо пробігти вздовж лінії берегу, останню не малюють або ж зубчики мають ясно простягатися через контурну лінію водойми. Непрохідна скеля має узгоджуватися з горизонталями. +Коли скеля входить у воду і неможливо пробігти вздовж лінії берегу, останню не малюють або ж вуса мають ясно простягатися через контурну лінію водойми. Непрохідна скеля має узгоджуватися з горизонталями. Impassable cliff, minimum size @@ -427,10 +427,10 @@ Ends of the top line may be rounded or square. The gap between two impassable cliffs or between impassable cliffs and other impassable feature symbols must exceed 0.3 mm on the map. When an impassable cliff drops straight into water, making it impossible to pass under the cliff along the water’s edge, the bank line is omitted or the tags shall clearly extend over the bank line. An impassable cliff should interplay with the contour lines. Description of symbol 201.1 - Скельна стіна, кар'єр або земляний обрив, настільки високий та крутий, що неможливо або небезпечно спуститися/піднятися. -Кінець лінії бровки може бути заокругленим або прямокутним. + Скельна стіна, кар'єр або земляний обрив, настільки високий та крутий, що неможливо або небезпечно спуститися/піднятися. +Кінці лінії бровки можуть бути заокругленими або прямокутними. Проміжок між двома непрохідними скелями або між скелями та іншими непрохідними знаками має перевищувати 0,3 мм. -Коли скеля входить у воду і неможливо пробігти вздовж лінії берегу, останню не малюють або ж зубчики мають ясно простягатися через контурну лінію водойми. Непрохідна скеля має узгоджуватися з горизонталями. +Коли скеля входить у воду і неможливо пробігти вздовж лінії берегу, останню не малюють або ж вуса мають ясно простягатися через контурну лінію водойми. Непрохідна скеля має узгоджуватися з горизонталями. Impassable cliff, plan shape representation @@ -443,9 +443,9 @@ For vertical rock faces the tags may be omitted if space is short. <b>For The gap between two impassable cliffs or between impassable cliffs and other impassable feature symbols must exceed 0.3 mm on the map. When an impassable cliff drops straight into water, making it impossible to pass under the cliff along the water’s edge, the bank line is omitted or the tags shall clearly extend over the bank line. An impassable cliff should interplay with the contour lines. Description of symbol 201.2 - Скельна стіна, кар'єр або земляний обрив, настільки високий та крутий, що неможливо або небезпечно спуститися/піднятися. -Для вертикальних скельних стін зубчики можуть не зображуватись, якщо простір на карті обмежений. <b>Для представлення форми в плані мінімальна ширина становить 0,35 мм.</b> На кінцях можуть використовуватися коротші зубчики. -Коли скеля входить у воду і неможливо пробігти вздовж лінії берегу, останню не малюють або ж зубчики мають ясно простягатися через контурну лінію водойми. Непрохідна скеля має узгоджуватися з горизонталями. + Скельна стіна, кар'єр або земляний обрив, настільки високий та крутий, що неможливо або небезпечно спуститися/піднятися. +Для вертикальних скельних стін зубчики можуть не зображуватись, якщо простір на карті обмежений. <b>Для представлення форми в плані мінімальна ширина становить 0,35 мм.</b> На кінцях можуть використовуватися коротші вуса. +Коли скеля входить у воду і неможливо пробігти вздовж лінії берегу, останню не малюють або ж вуса мають ясно простягатися через контурну лінію водойми. Непрохідна скеля має узгоджуватися з горизонталями. Impassable cliff, top line @@ -455,12 +455,12 @@ When an impassable cliff drops straight into water, making it impossible to pass For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). Description of symbol 201.3 - Для вертикальних скельних стін зубчики можуть не зображуватись, якщо простір на карті обмежений, наприклад це вузький прохід між скелями (зображення ширини проходу має сягати 0,3 мм). + Для вертикальних скельних стін вуса можуть не зображуватись, якщо простір на карті обмежений, наприклад це вузький прохід між скелями (зображення ширини проходу має сягати 0,3 мм). Impassable cliff, tag line Name of symbol 201.4 - Непрохідна скеля, зубчики + Непрохідна скеля, вуса Use this symbol to display the full extent of a wide cliff. @@ -481,7 +481,7 @@ When an impassable cliff drops straight into water, making it impossible to pass Скельна стіна, кар'єр або земляний обрив, настільки високий та крутий, що неможливо або небезпечно спуститися/піднятися. Кінець лінії бровки може бути заокругленим або прямокутним. Проміжок між двома непрохідними скелями або між скелями та іншими непрохідними знаками має перевищувати 0,3 мм на карті. -Коли скеля входить у воду і неможливо пробігти вздовж лінії берегу, останню не малюють або ж зубчики мають ясно простягатися через контурну лінію водойми. Непрохідна скеля має узгоджуватися з горизонталями. +Коли скеля входить у воду і неможливо пробігти вздовж лінії берегу, останню не малюють або ж вуса мають ясно простягатися через контурну лінію водойми. Непрохідна скеля має узгоджуватися з горизонталями. Cliff @@ -514,7 +514,7 @@ Crossing a cliff will normally slow progress. Cliff, with tags Name of symbol 202.2 - Скеля з зубчиками + Скеля з вусами A passable cliff or quarry. Minimum height: 1 m. @@ -523,14 +523,14 @@ Ends of the top line may be rounded or square. A passage between two cliffs must Crossing a cliff will normally slow progress. Description of symbol 202.2 Прохідна скеля чи кар'єр. Мінімальна висота: 1 м. -Якщо напрям схилу стіни незрозумілий із горизонталей, або з метою покращення розбірливості, короткі зубчики мають вказувати напрямок схилу. Якщо скеля не є вертикальною, довжина зубчиків має показати ширину скелі в плані. +Якщо напрям схилу стіни незрозумілий із горизонталей, або з метою покращення розбірливості, короткі вуса мають вказувати напрямок схилу. Якщо скеля не є вертикальною, довжина вусів має показати ширину скелі в плані. Кінці лінії бровки можуть бути заокругленими або прямокутними. Прохід між двома скелями має перевищувати 0,2 мм. Скеля має узгоджуватися з горизонталями. Подолання скелі, як правило, сповільнює рух. Cliff, with tags, minimum size Name of symbol 202.3 - Скеля з зубчиками, мінімальний розмір + Скеля з вусами, мінімальний розмір A passable cliff or quarry. Minimum height: 1 m. @@ -539,14 +539,14 @@ Ends of the top line may be rounded or square. A passage between two cliffs must Crossing a cliff will normally slow progress. Description of symbol 202.3 Прохідна скеля чи кар'єр. Мінімальна висота: 1 м. -Якщо напрям схилу стіни незрозумілий із горизонталей, або з метою покращення розбірливості, короткі зубчики мають вказувати напрямок схилу. Якщо скеля не є вертикальною, довжина зубчиків має показати ширину скелі в плані. +Якщо напрям схилу стіни незрозумілий із горизонталей, або з метою покращення розбірливості, короткі вуса мають вказувати напрямок схилу. Якщо скеля не є вертикальною, довжина вусів має показати ширину скелі в плані. Кінці лінії бровки можуть бути заокругленими або прямокутними. Прохід між двома скелями має перевищувати 0,2 мм. Скеля має узгоджуватися з горизонталями. Подолання скелі, як правило, сповільнює рух. Cliff, with tags, minimum size (from ISOM2000) Name of symbol 202.9 - Скеля з зубчиками, мінімальний розмір (з ISOM2000) + Скеля з вусами, мінімальний розмір (з ISOM2000) A passable cliff or quarry. Minimum height: 1 m. @@ -555,7 +555,7 @@ Ends of the top line may be rounded or square. A passage between two cliffs must Crossing a cliff will normally slow progress. Description of symbol 202.9 Прохідна скеля чи кар'єр. Мінімальна висота: 1 м. -Якщо напрям схилу стіни незрозумілий із горизонталей, ао з метою покращення розбірливості, короткі зубчики мають вказувати напрямок схилу. Якщо скеля не є вертикальною, довжина зубчиків має показати ширину скелі в плані. +Якщо напрям схилу стіни незрозумілий із горизонталей, або з метою покращення розбірливості, короткі вуса мають вказувати напрямок схилу. Якщо скеля не є вертикальною, довжина вусів має показати ширину скелі в плані. Кінці лінії бровки можуть бути заокругленими або прямокутними. Прохід між двома скелями має перевищувати 0,2 мм. Скеля має узгоджуватися з горизонталями. Подолання скелі, як правило, сповільнює рух. @@ -569,21 +569,21 @@ Crossing a cliff will normally slow progress. Location is the centre of gravity of the symbol. Rocky pits larger than 5 m in diameter should be exaggerated and represented using cliff symbols (201, 202). Description of symbol 203.1 - Скельний отвір, яма, вхід до рудника, який може бути небезпечними для спортсмена. Мінімальна глибина: 1 м. + Скельні отвори, ями, входи до рудників, які можуть бути небезпечними для спортсмена. Мінімальна глибина: 1 м. Положенню на місцевості відповідає центр ваги знаку. Скельні ями, що перевищують 5 м у діаметрі, слід перебільшувати та зображати знаками скель (201, 202). Rocky pit or cave with distinct entrance Name of symbol 203.2 - Скельна яма чи печера з чітким входом + Скельна яма чи печера з чітким входом Rocky pits, holes, caves or mineshafts with a distinct entrance which may constitute a danger to the competitor. Minimum depth: 1 m. Location is the centre of gravity of the symbol, and the symbol should point into the cave. Rocky pits larger than 5 m in diameter should be exaggerated and represented using cliff symbols (201, 202). Description of symbol 203.2 - Скельний отвір, яма, вхід до рудника, який може бути небезпечними для спортсмена. Мінімальна глибина: 1 м. + Скельні отвори, ями, входи до рудників, які можуть бути небезпечними для спортсмена. Мінімальна глибина: 1 м. Положенню на місцевості відповідає центр ваги знаку. Скельні ями, що перевищують 5 м у діаметрі, слід перебільшувати та зображати знаками скель (201, 202). @@ -597,7 +597,7 @@ Rocky pits larger than 5 m in diameter should be exaggerated and represented usi Location is the centre of gravity of the symbol, and the symbol should point into the cave. Rocky pits larger than 5 m in diameter should be exaggerated and represented using cliff symbols (201, 202). Description of symbol 203.9 - Скельний отвір, яма, вхід до рудника, який може бути небезпечними для спортсмена. Мінімальна глибина: 1 м. + Скельні отвори, ями, входи до рудників, які можуть бути небезпечними для спортсмена. Мінімальна глибина: 1 м. Положенню на місцевості відповідає центр ваги знаку. Скельні ями, що перевищують 5 м у діаметрі, слід перебільшувати та зображати знаками скель (201, 202). @@ -3985,7 +3985,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Brown for contours Color 4 - Коричневий для контурів + Коричневий для горизонталей Black 50-65% for buildings @@ -7130,7 +7130,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming An intermediate contour line. Form lines are used where more information can be given about the shape of the ground. They are used only where representation is not possible with ordinary contours. Only one form line may be used between neighbouring contours. Description of symbol 103 - An intermediate contour line. Form lines are used where more information can be given about the shape of the ground. They are used only where representation is not possible with ordinary contours. Only one form line may be used between neighbouring contours. + An intermediate contour line. Form lines are used where more information can be given about the shape of the ground. They are used only where representation is not possible with ordinary contours. Only one form line may be used between neighbouring contours. Small earth wall @@ -7170,7 +7170,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming A small obvious elongated knoll which cannot be drawn to scale with a contour (length less than 12 m and width less than 4 m). The height of the knoll should be a minimum of 1 m from the surrounding ground. Knolls larger than this must be shown by contours. The symbol may not be drawn in free form or such that two elongated knoll symbols overlap. The symbol may not touch a contour line. Description of symbol 113 - A small obvious elongated knoll which cannot be drawn to scale with a contour (length less than 12 m and width less than 4 m). The height of the knoll should be a minimum of 1 m from the surrounding ground. Knolls larger than this must be shown by contours. The symbol may not be drawn in free form or such that two elongated knoll symbols overlap. The symbol may not touch a contour line. + A small obvious elongated knoll which cannot be drawn to scale with a contour (length less than 12 m and width less than 4 m). The height of the knoll should be a minimum of 1 m from the surrounding ground. Knolls larger than this must be shown by contours. The symbol may not be drawn in free form or such that two elongated knoll symbols overlap. The symbol may not touch a contour line. Small depression @@ -7180,7 +7180,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Small shallow natural depressions and hollows (minimum diameter 2 m) which cannot be shown to scale by contours are represented by a semicircle. Minimum depth from the surrounding ground should be 1 m. Location is the centre of gravity of the symbol, which is orientated to north. Symbol 116 is used for man-made pits. Description of symbol 115 - Small shallow natural depressions and hollows (minimum diameter 2 m) which cannot be shown to scale by contours are represented by a semicircle. Minimum depth from the surrounding ground should be 1 m. Location is the centre of gravity of the symbol, which is orientated to north. Symbol 116 is used for man-made pits. + Small shallow natural depressions and hollows (minimum diameter 2 m) which cannot be shown to scale by contours are represented by a semicircle. Minimum depth from the surrounding ground should be 1 m. Location is the centre of gravity of the symbol, which is orientated to north. Symbol 116 is used for man-made pits. Pit @@ -7230,7 +7230,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming A small vertical rock face (minimum height 1 m) may be shown without tags. If the direction of fall of the rock face is not apparent from the contours or to improve legibility, short tags should be drawn in the direction of the fall. For passable rock faces shown without tags the ends of the line may be rounded to improve legibility. Description of symbol 203 - A small vertical rock face (minimum height 1 m) may be shown without tags. If the direction of fall of the rock face is not apparent from the contours or to improve legibility, short tags should be drawn in the direction of the fall. For passable rock faces shown without tags the ends of the line may be rounded to improve legibility. + A small vertical rock face (minimum height 1 m) may be shown without tags. If the direction of fall of the rock face is not apparent from the contours or to improve legibility, short tags should be drawn in the direction of the fall. For passable rock faces shown without tags the ends of the line may be rounded to improve legibility. Passable rock face, minimum size @@ -7240,7 +7240,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming A small vertical rock face (minimum height 1 m) may be shown without tags. If the direction of fall of the rock face is not apparent from the contours or to improve legibility, short tags should be drawn in the direction of the fall. For passable rock faces shown without tags the ends of the line may be rounded to improve legibility. Description of symbol 203.0.1 - A small vertical rock face (minimum height 1 m) may be shown without tags. If the direction of fall of the rock face is not apparent from the contours or to improve legibility, short tags should be drawn in the direction of the fall. For passable rock faces shown without tags the ends of the line may be rounded to improve legibility. + A small vertical rock face (minimum height 1 m) may be shown without tags. If the direction of fall of the rock face is not apparent from the contours or to improve legibility, short tags should be drawn in the direction of the fall. For passable rock faces shown without tags the ends of the line may be rounded to improve legibility. Passable rock face, no tags @@ -7250,7 +7250,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Should be used if the direction of fall of the rock face is apparent from the contours and the legibility is good. Description of symbol 203.1 - Should be used if the direction of fall of the rock face is apparent from the contours and the legibility is good. + Should be used if the direction of fall of the rock face is apparent from the contours and the legibility is good. Passable rock face, no tags, minimum size @@ -7260,7 +7260,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Should be used if the direction of fall of the rock face is apparent from the contours and the legibility is good. Description of symbol 203.1.1 - Should be used if the direction of fall of the rock face is apparent from the contours and the legibility is good. + Should be used if the direction of fall of the rock face is apparent from the contours and the legibility is good. Passable rock face, no tags, rounded @@ -7915,7 +7915,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm A line joining points of equal height. The standard vertical interval between contours is 5 metres. The smallest bend in a contour is 0.25 mm from centre to centre of the lines. Description of symbol 101 - Лінія, що з'єднує точки однакової висоти. Стандартна відстань між двома горизонталями по висоті - 5 метрів. Найменший вигин горизонталі - 0,25 мм від центра до центра лінії. + Лінія, що з'єднує точки однакової висоти. Стандартна відстань між двома горизонталями по висоті - 5 метрів. Найменший вигин горизонталі - 0,25 мм від центра до центра лінії. Contour (narrow) @@ -7925,7 +7925,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm A line joining points of equal height. The standard vertical interval between contours is 5 metres. The smallest bend in a contour is 0.25 mm from centre to centre of the lines. Description of symbol 101.1 - Лінія, що з'єднує точки однакової висоти. Стандартна відстань між двома горизонталями по висоті - 5 метрів. Найменший вигин горизонталі - 0,25 мм від центра до центра лінії. + Лінія, що з'єднує точки однакової висоти. Стандартна відстань між двома горизонталями по висоті - 5 метрів. Найменший вигин горизонталі - 0,25 мм від центра до центра лінії. Index contour From adf593070244336269cd2c00edfe459054a7312a Mon Sep 17 00:00:00 2001 From: Yevhen Mazur Date: Tue, 21 Aug 2018 20:17:40 +0000 Subject: [PATCH 05/49] Translated using Weblate (Ukrainian) Currently translated at 36.2% (811 of 2240 strings) Translation: OpenOrienteering/Map Symbols Translate-URL: https://hosted.weblate.org/projects/openorienteering/map-symbols/uk/ --- translations/map_symbols_uk.ts | 106 ++++++++++++++++----------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/translations/map_symbols_uk.ts b/translations/map_symbols_uk.ts index 8b86c80ee..e5e02fb79 100644 --- a/translations/map_symbols_uk.ts +++ b/translations/map_symbols_uk.ts @@ -610,8 +610,8 @@ Rocky pits larger than 5 m in diameter should be exaggerated and represented usi A distinct boulder (should be higher than 1 m), which is immediately identifiable on the ground. Groups of boulders are represented using symbol 207 (boulder cluster) or a boulder field symbol (208, 209). To be able to show the distinction between neighbouring (closer than 30 metres apart) boulders with significant difference in size, it is permitted to enlarge the symbol to 0.5 mm for some of the boulders. Description of symbol 204 - Виразний камінь (зазвичай вище 1 м), який однозначно визначається на місцевості. Групи каменів зображуються знаком 207 (група каменів) або знаками кам’яного осипу (208, 209). -Для забезпечення можливості показати відмінність між сусідніми (до 30 м один від одного) каменями зі значною різницею в розмірі, дозволяється збільшити знак до 0,5 мм для деяких каменів. + Виразний камінь (зазвичай вище 1 м), який однозначно визначається на місцевості. Скупчення каменів зображуються знаком 207 (група каменів) або знаками кам’яного осипу (208, 209). +Для забезпечення можливості показати відмінність між сусідніми (до 30 м один від одного) каменями зі значною різницею в розмірі, дозволяється збільшувати знак до 0,5 мм для деяких каменів. Boulder or large boulder, different size @@ -639,7 +639,7 @@ To be able to show the distinction between neighbouring (closer than 30 metres a A particularly large and distinct boulder. A large boulder should be more than 2 m high. To be able to show the distinction between neighbouring (closer than 30 metres apart) large boulders with significant difference in size, it is permitted to reduce the size of the symbol to 0.5 mm for some of the boulders. Description of symbol 205 - Особливо великий та помітний камінь. Великий камінь зазвичай вищий за 2 м. Для забезпечення можливості показати відмінність між сусідніми (до 30 м один від одного) каменями зі значною різницею в розмірі, дозволяється зменшити знак до 0,5 мм для деяких каменів. + Особливо великий та помітний камінь. Великий камінь зазвичай вищий за 2 м. Для забезпечення можливості показати відмінність між сусідніми (до 30 м один від одного) каменями зі значною різницею в розмірі, дозволяється зменшувати розмір знаку до 0,5 мм для деяких каменів. Gigantic boulder @@ -651,7 +651,7 @@ To be able to show the distinction between neighbouring (closer than 30 metres a The gap between gigantic boulders or between gigantic boulders and other impassable feature symbols must exceed 0.3 mm on the map. Description of symbol 206 Кам'яний стовп (останець) або великий валун, настільки високий і крутий, що його неможливо подолати/піднятися на нього. -Проміжок на карті між гігантськими каменями або між гігантським каменем та іншими непрохідним знаком має перевищувати 0,3 мм на карті. +Проміжок на карті між гігантськими каменями або між гігантським каменем та іншими непрохідними знаками має перевищувати 0,3 мм . Boulder cluster @@ -662,7 +662,7 @@ The gap between gigantic boulders or between gigantic boulders and other impassa A distinct group of boulders so closely clustered together that they cannot be marked individually. The boulders in the cluster should be higher than 1 metre. A boulder cluster must be easily identifiable as a group of boulders. To be able to show the distinction between neighbouring (maximum 30 metres apart), boulder clusters with significant difference in boulder size, it is permitted to enlarge this symbol by 20% (edge length 0.96 mm) for some of the boulder clusters. Description of symbol 207 - Виразна група каменів, розташованих настільки близько, що їх неможливо зобразити окремо. Камені в групі зазвичай вищі за 1 метр. Група каменів має легко визначатися на місцевості. + Виразна група каменів, розташованих так близько, що їх неможливо зобразити окремо. Камені в групі зазвичай вищі за 1 метр. Група каменів має легко визначатися на місцевості. Для забезпечення можливості показати відмінність між сусідніми (до 30 м одна від одної) групами каменів зі значною різницею в розмірі, дозволяється збільшити знак на 20% (сторона трикутника 0,96 мм) для деяких груп каменів. @@ -685,9 +685,9 @@ To be able to show the distinction between neighbouring (maximum 30 metres apart A minimum of two triangles should be used. One triangle may be used if it is combined with other rock symbols (for instance directly below cliff symbols (201, 202), adjacent to boulder symbols (204-206) or combined with stony ground symbols (210-212)). To be able to show obvious height differences within a boulder field, it is permitted to enlarge some of the triangles to 120%. Description of symbol 208 - Ділянка, що вкрита такою кількістю розкиданих каменів, що вони не можуть бути показані окремо, зображується хаотично розташованими та повернутими трикутниками. Зазвичай, кам’яний осип не впливає на прохідність. Якщо прохідність кам’янистого осипу зменшується, слід застосовувати знак 209 (щільний кам’яний осип) або знак має бути поєднаний зі знаком кам'янистого ґрунту. + Ділянка, що вкрита такою кількістю розкиданих каменів, що вони не можуть бути показані окремо, зображується хаотично розташованими та повернутими трикутниками. Зазвичай, кам’яний осип не впливає на прохідність. Якщо прохідність кам’янистого осипу погіршується, слід застосовувати знак 209 (щільний кам’яний осип) або знак має бути поєднаний зі знаком кам'янистого ґрунту. Слід використовувати мінімум два трикутники. Один трикутник може мати місце у поєднанні з іншими скельними знаками (наприклад, безпосередньо під знаком скелі (201, 202), поряд із знаками каменів (204-206) або в поєднанні зі знаком кам'янистого ґрунту (210-212)). -Для забезпечення можливості показати явну різницю у висоті каменів у межах кам'яного осипу, дозволяється збільшити окремі трикутники до 120%. +Для забезпечення можливості показати явну різницю у висоті каменів у межах кам'яного осипу, дозволяється збільшувати деякі трикутники до 120%. Boulder field, single triangle @@ -697,7 +697,7 @@ To be able to show obvious height differences within a boulder field, it is perm An area which is covered with so many blocks of stone that they cannot be marked individually is shown with randomly orientated solid triangles with sides of ratio 8:6:5. A minimum of two triangles should be used. The going is indicated by the density of the triangles. To be able to show the distinction between boulder fields with a significant difference in boulder size it is permitted to enlarge the triangles by 20%. Description of symbol 208.1 - Ділянка, що вкрита такою кількістю розкиданих каменів, що вони не можуть бути показані окремо, зображується хаотично розташованими та повернутими трикутниками із співвідношенням сторін 8:6:5. Слід використовувати мінімум два трикутники. Прохідність визначається щільністю нанесення трикутників. Для забезпечення можливості показати явну різницю у висоті каменів у межах кам'яного осипу, дозволяється збільшити окремі трикутники до 120%. + Ділянка, що вкрита такою кількістю розкиданих каменів, що вони не можуть бути показані окремо, зображується хаотично розташованими та повернутими трикутниками із співвідношенням сторін 8:6:5. Слід використовувати мінімум два трикутники. Прохідність визначається щільністю нанесення трикутників. Для забезпечення можливості показати явну різницю у висоті каменів у межах кам'яного осипу, дозволяється збільшувати окремі трикутники до 120%. Boulder field, single triangle, enlarged @@ -707,7 +707,7 @@ To be able to show obvious height differences within a boulder field, it is perm To be able to show the distinction between boulder fields with a significant difference in boulder size it is permitted to enlarge the triangles by 20%. Description of symbol 208.2 - Для забезпечення можливості показати явну різницю у висоті каменів у межах кам'яного осипу, дозволяється збільшити окремі трикутники на 20%. + Для забезпечення можливості показати явну різницю у висоті каменів у межах кам'яного осипу, дозволяється збільшувати окремі трикутники на 20%. Dense boulder field @@ -718,8 +718,8 @@ To be able to show obvious height differences within a boulder field, it is perm An area which is covered with so many blocks of stone that they cannot be marked individually and the runnability is affected, is shown with randomly placed and orientated solid triangles. A minimum of two triangles must be used. Density: 2–3 symbols / mm² (31%-47%). To be able to show obvious height differences within a boulder field, it is permitted to enlarge some of the triangles to 120%. Description of symbol 209 - Ділянка, що вкрита такою кількістю розкиданих каменів, що вони не можуть бути показані окремо, і понижують прохідність, зображується хаотично розташованими та повернутими трикутниками. Необхідно використовувати мінімум два трикутники. -Щільність: 2-3 знаки/мм2 (31-47%). Для забезпечення можливості показати явну різницю у висоті каменів у межах кам'яного осипу, дозволяється збільшити окремі трикутники до 120%. + Ділянка, що вкрита такою кількістю розкиданих каменів, що вони не можуть бути показані окремо, і понижують прохідність, зображується хаотично розташованими та повернутими трикутниками. Слід використовувати мінімум два трикутники. +Щільність: 2-3 знаки/мм2 (31-47%). Для забезпечення можливості показати явну різницю у висоті каменів у межах кам'яного осипу, дозволяється збільшувати окремі трикутники до 120%. Stony ground, slow running @@ -732,10 +732,10 @@ The dots should be randomly distributed but not interfere with the representatio The minimum number of dots is three (footprint 10 m x 10 m). To avoid confusion with symbol 416 (distinct vegetation boundary), the dots should not be arranged to form a line. Description of symbol 210 - Скельний або кам'янистий ґрунт, що знижує прохідність до 60-80% від нормальної швидкості. -Точки мають бути розподілені випадковим чином, але не заважати сприйняттю важливих форм рельєфу та інших об'єктів. + Скельний або кам'янистий ґрунт, що знижує прохідність до 60-80% від нормальної. +Точки слід розподіляти випадковим чином, але так, щоб вони не заважати сприйняттю важливих форм рельєфу та інших об'єктів. Мінімальна кількість точок - три (проекція 10 м × 10 м). -Щоб уникнути плутанини зі знаком 416 (чіткий контур рослинності), точки не слід розташовувати в лінію. +Щоб уникнути плутанини зі знаком 416 (чіткий контур рослинності), точки не повинні розташовуватися у лінію. Stony ground, individual dot @@ -748,10 +748,10 @@ The dots should be randomly distributed but not interfere with the representatio The minimum number of dots is three (footprint 10 m x 10 m). To avoid confusion with symbol 416 (distinct vegetation boundary), the dots should not be arranged to form a line. Description of symbol 210.1 - Скельний або кам'янистий ґрунт, що знижує прохідність до 60-80% від нормальної швидкості. -Точки мають бути розподілені випадковим чином, але не заважати сприйняттю важливих форм рельєфу та інших об'єктів. + Скельний або кам'янистий ґрунт, що знижує прохідність до 60-80% від нормальної. +Точки слід розподіляти випадковим чином, але так, щоб вони не заважали сприйняттю важливих форм рельєфу та інших об'єктів. Мінімальна кількість точок - три (проекція 10 м × 10 м). -Щоб уникнути плутанини зі знаком 416 (чіткий контур рослинності), точки не слід розташовувати в лінію. +Щоб уникнути плутанини зі знаком 416 (чіткий контур рослинності), точки не слід розташовувати у лінію. Stony ground, walk @@ -765,9 +765,9 @@ The minimum number of dots is three (footprint 8 m x 8 m). To avoid confusion with symbol 416 (distinct vegetation boundary), the dots should not be arranged to form a line. Description of symbol 211 Скельний або кам'янистий ґрунт, який значно знижує прохідність, (приблизно до 20-60% від нормальної швидкості). -Точки мають бути розподілені випадковим чином, але не заважати сприйняттю важливих форм рельєфу та інших об'єктів. +Точки слід розподіляти випадковим чином, але так, щоб вони не заважали сприйняттю важливих деталей рельєфу та інших об'єктів. Мінімальна кількість точок - три (проекція 8 м × 8 м). -Щоб уникнути плутанини зі знаком 416 (чіткий контур рослинності), точки не слід розташовувати в лінію. +Щоб уникнути плутанини зі знаком 416 (чіткий контур рослинності), точки не слід розташовувати у лінію. Stony ground, fight @@ -781,19 +781,19 @@ The minimum number of dots is three (footprint 7 m x 7 m). To avoid confusion with symbol 416 (distinct vegetation boundary), the dots should not be arranged to form a line. Description of symbol 212 Важкопрохідний скельний або кам'янистий ґрунт (менше 20% від нормальної швидкості). -Точки мають бути розподілені випадковим чином, але не заважати сприйняттю важливих форм рельєфу та інших об'єктів. +Точки слід розподіляти випадковим чином, але так, щоб вони не заважали сприйняттю важливих деталей рельєфу та інших об'єктів. Мінімальна кількість точок - три (проекція 7 м × 7 м). Щоб уникнути плутанини зі знаком 416 (чіткий контур рослинності), точки не слід розташовувати в лінію. Open sandy ground Name of symbol 213 - Піщаний ґрунт + Піщаний ґрунт An area of soft sandy ground where runnability is reduced to less than 80% of normal speed. Description of symbol 213 - Ділянка пухкого піщаного ґрунту, де швидкість бігу знижується не більше 80% від нормальної. + Ділянка пухкого піщаного ґрунту, прохідність погіршується менше ніж до 80% від нормальної швидкості. Bare rock @@ -821,7 +821,7 @@ Shorter trenches may be exaggerated to the minimum graphical dimension. Impassable trenches shall be represented using symbol 201 (impassable cliff). Collapsed and easily crossable trenches should be mapped as erosion gullies. Description of symbol 215 - Скельна тріщина або штучна траншея у скельному ґрунті. Рекомендована мінімальна глибина: 1 м. + Скельна тріщина чи штучна траншея у скельному ґрунті. Рекомендована мінімальна глибина: 1 м. Мінімальна довжина: 2 мм (проекція 30 м). Коротші траншеї можуть бути перебільшені до мінімального графічного розміру. Непрохідні траншеї мають бути зображені знаком 201 (непрохідна скеля). @@ -835,7 +835,7 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies. The black bank line emphasises that the feature is uncrossable. Dominant areas of water may be shown with 70% colour. Small areas of water and bodies of water that have narrow parts shall always be shown with full colour. Description of symbol 301 - Чорна берегова лінія підкреслює що об’єкт є непрохідним. Домінуючі ділянки води можуть бути показані 70% кольору. Невеликі площі води та ділянки водойми, що мають вузькі частини, завжди показуються повним кольором. + Чорна берегова лінія підкреслює що об’єкт є непрохідним. Домінуючі ділянки води можуть бути показані 70% кольору. Невеликі площі води та ділянки водойми, що мають вузькі частини, завжди показуються суцільним кольором. Uncrossable body of water @@ -845,7 +845,7 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies. The black bank line emphasises that the feature is uncrossable. Dominant areas of water may be shown with 70% colour. Small areas of water and bodies of water that have narrow parts shall always be shown with full colour. Description of symbol 301.1 - Чорна берегова лінія підкреслює що об’єкт є непрохідним. Домінуючі ділянки води можуть бути показані 70% кольору. Невеликі площі води та ділянки водойми, що мають вузькі частини, завжди показуються повним кольором. + Чорна берегова лінія підкреслює що об’єкт є непрохідним. Домінуючі ділянки води можуть бути показані 70% кольору. Невеликі площі води та ділянки водойми, що мають вузькі частини, завжди показуються суцільним кольором. Uncrossable body of water, bank line @@ -865,7 +865,7 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies. A shallow seasonal or periodic body of water may be represented using a dashed outline. Small shallow water bodies may be represented as 100% blue (without an outline). Description of symbol 302 - Неглибокі сезонні або періодичні водойми можуть бути показані зі штриховою лінією контуру. Малі неглибокі водойми можуть бути показані 100% синім кольором (без лінії контуру). + Неглибокі сезонні або періодичні водойми можуть бути обведені штриховою контурною лінією. Малі неглибокі водойми можуть зображуватися 100% синім кольором (без контурної лінії). Shallow body of water @@ -875,7 +875,7 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies. A shallow seasonal or periodic body of water may be represented using a dashed outline. Small shallow water bodies may be represented as 100% blue (without an outline). Description of symbol 302.1 - Неглибокі сезонні або періодичні водойми можуть бути показані зі штриховою лінією контуру. Малі неглибокі водойми можуть бути показані 100% синім кольором (без лінії контуру). + Неглибокі сезонні або періодичні водойми можуть бути обведені штриховою контурною лінією. Малі неглибокі водойми можуть зображуватися 100% синім кольором (без контурної лінії). Shallow body of water, solid outline @@ -885,7 +885,7 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies. Use this symbol to represent regular outline for shallow body of water. Description of symbol 302.2 - Використовуйте цей знак для показу постійного контуру мілководної ділянки. + Використовуйте цей знак для показу суцільного контуру мілководної ділянки. Shallow body of water, dashed outline @@ -915,7 +915,7 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies. A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. Description of symbol 304 - Струмок, мінімум 2 м завширшки. Струмки ширше 5 м слід зображувати в масштабі. + Струмок, мінімум 2 м завширшки. Струмки ширше 5 м слід зображувати в масштабі. Small crossable watercourse @@ -925,7 +925,7 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies. A crossable watercourse (including a major drainage ditch) less than 2 m wide. Description of symbol 305 - Прохідний струмок (в тому числі і у значній канаві) до 2 м завширшки. + Прохідний струмок (або великий дренажний канал) до 2 м завширшки. Minor/seasonal water channel @@ -945,7 +945,7 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies. A marsh which is uncrossable or dangerous for the competitor. The black outline emphasises that the feature is uncrossable. The black outline is omitted for boundaries between uncrossable marsh and symbol 301 (uncrossable body of water). The symbol may be combined with a rough open land symbol (403, 404) to show openness. The symbol is orientated to north. Description of symbol 307 - Болото, що є непрохідним або небезпечним для учасника. Чорний контур підкреслює непрохідність об’єкту. Чорний контур не зображується між знаками непрохідного болота та 301 (непрохідна водойма). Знак може поєднуватись зі знаками відкритих просторів (403, 404) щоб показати відкритість болота. Знак зорієнтований на північ. + Болото, що є непрохідним або небезпечним для учасника. Чорна контурна лінія підкреслює непрохідність об’єкту. Контурна лінія не зображується між знаками непрохідного болота та 301 (непрохідна водойма). Може поєднуватись зі знаками відкритих просторів (403, 404) щоб показати відкритість болота. Знак зорієнтований на північ. Uncrossable marsh @@ -955,7 +955,7 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies. A marsh which is uncrossable or dangerous for the competitor. The black outline emphasises that the feature is uncrossable. The black outline is omitted for boundaries between uncrossable marsh and symbol 301 (uncrossable body of water). The symbol may be combined with a rough open land symbol (403, 404) to show openness. The symbol is orientated to north. Description of symbol 307.1 - Болото, що є непрохідним або небезпечним для учасника. Чорний контур підкреслює непрохідність об’єкту. Чорний контур не зображується між знаками непрохідного болота та 301 (непрохідна водойма). Знак може поєднуватись зі знаками відкритих просторів (403, 404) щоб показати відкритість болота. Знак зорієнтований на північ. + Болото, що є непрохідним або небезпечним для учасника. Чорна контурна лінія підкреслює непрохідність об’єкту. Контурна лінія не зображується між знаками непрохідного болота та 301 (непрохідна водойма). Може поєднуватись зі знаками відкритих просторів (403, 404) щоб показати відкритість болота. Знак зорієнтований на північ. Uncrossable marsh, border line @@ -977,8 +977,8 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies. Description of symbol 308 - Прохідне болото, зазвичай з чіткою межею. -Знак має поєднуватися з іншими знаками, щоб показати прохідність та відкритість. + Прохідне болото, зазвичай з чітким краєм. +Має поєднуватися з іншими знаками, щоб показати прохідність та відкритість. Знак зорієнтований на північ. @@ -991,8 +991,8 @@ The symbol is orientated to north. The symbol shall be combined with other symbols to show runnability and openness. The symbol is orientated to north. Description of symbol 308.1 - Прохідне болото, зазвичай з чіткою межею. -Знак має поєднуватися з іншими знаками, щоб показати прохідність та відкритість. + Прохідне болото, зазвичай з чітким краєм. +Має поєднуватися з іншими знаками, щоб показати прохідність та відкритість. Знак зорієнтований на північ. @@ -1016,7 +1016,7 @@ The symbol shall be combined with other symbols to show runnability and openness The symbol is orientated to north. Description of symbol 310 Невиразне або сезонне болото чи ділянка поступового переходу від болота до твердої землі, яка є прохідною. Край, зазвичай, нечіткий, а рослинність подібна до рослинності навколо. -Знак має поєднуватися з іншими знаками, щоб показати прохідність та відкритість. +Має поєднуватися з іншими знаками, щоб показати прохідність та відкритість. Знак зорієнтований на північ. @@ -1030,7 +1030,7 @@ The symbol shall be combined with other symbols to show runnability and openness The symbol is orientated to north. Description of symbol 310.1 Невиразне або сезонне болото чи ділянка поступового переходу від болота до твердої землі, яка є прохідною. Край, зазвичай, нечіткий, а рослинність подібна до рослинності навколо. -Знак має поєднуватися з іншими знаками, щоб показати прохідність та відкритість. +Має поєднуватися з іншими знаками, щоб показати прохідність та відкритість. Знак зорієнтований на північ. @@ -1077,7 +1077,7 @@ The symbol is orientated to north. May not be combined with other area symbols than symbol 113 (broken ground), symbol 208 (boulder field) and marsh symbols (308, 310). Description of symbol 401 Відкритий простір із рослинним покривом (трава, мох чи подібна рослинність), який має кращу прохідність ніж звичайний чистий ліс. Якщо ділянки жовтого кольору домінують на карті, дозволяється застосовувати растр (75% замість повного жовтого). -Не може поєднуватись з іншими площинними знаками, за винятком знаків 113 (нерівний ґрунт), 208 (кам’яний осип) а також знаків боліт (308, 310). +Не може поєднуватись з іншими площинними знаками, за винятком 113 (нерівний ґрунт), 208 (кам’яний осип) а також знаків боліт (308, 310). Open land with scattered trees @@ -1088,8 +1088,8 @@ May not be combined with other area symbols than symbol 113 (broken ground), sym Areas with scattered trees or bushes in open land may be generalised by using a regular pattern of large dots in the yellow screen. The dots may be white (scattered trees) or green (scattered bushes/thickets). Prominent individual trees may be added using symbol 417 (prominent large tree). If yellow coloured areas become dominant, a screen (75% instead of full yellow) may be used. May not be combined with other area symbols than symbol 113 (broken ground), symbol 208 (boulder field) or marsh symbols (308, 310). Description of symbol 402 - Ділянки з окремими деревами або кущами на відкритій місцевості можуть бути узагальнені використанням регулярного візерунку великих точок на жовтому растрі. Точки можуть бути білими (окремі дерева) або зеленими (окремі кущі/чагарники). Дозволяється додавати особливі окремі дерева, використовуючи знак 417 (окреме велике дерево). Якщо ділянки жовтого кольору домінують на карті, дозволяється застосовувати растр (75% замість повного жовтого). -Знак не може поєднуватись з іншими площинними знаками, за винятком знаків 113 (нерівний ґрунт), 208 (кам’яний осип) а також знаків боліт (308, 310). + Ділянки з окремими деревами або кущами на відкритій місцевості можуть бути узагальнені використанням регулярного візерунку великих точок на жовтому тлі. Точки можуть бути білими (вкраплення дерев) або зеленими (вкраплення кущів/гущавини). Дозволяється додавати видатні окремі дерева, використовуючи знак 417 (окреме велике дерево). Якщо ділянки жовтого кольору домінують на карті, дозволяється застосовувати растр (75% замість повного жовтого). +Знак не може поєднуватись з іншими площинними знаками, за винятком 113 (нерівний ґрунт), 208 (кам’яний осип) а також знаків боліт (308, 310). Open land with scattered bushes @@ -1100,13 +1100,13 @@ May not be combined with other area symbols than symbol 113 (broken ground), sym Areas with scattered trees or bushes in open land may be generalised by using a regular pattern of large dots in the yellow screen. The dots may be white (scattered trees) or green (scattered bushes/thickets). Prominent individual trees may be added using symbol 417 (prominent large tree). If yellow coloured areas become dominant, a screen (75% instead of full yellow) may be used. May not be combined with other area symbols than symbol 113 (broken ground), symbol 208 (boulder field) or marsh symbols (308, 310). Description of symbol 402.1 - Ділянки з окремими деревами або кущами на відкритій місцевості можуть бути узагальнені використанням регулярного візерунку великих точок на жовтому растрі. Точки можуть бути білими (окремі дерева) або зеленими (окремі кущі/чагарники). Дозволяється додавати особливі окремі дерева, використовуючи знак 417 (окреме велике дерево). Якщо ділянки жовтого кольору домінують на карті, дозволяється застосовувати растр (75% замість повного жовтого). -Знак не може поєднуватись з іншими площинними знаками, за винятком знаків 113 (нерівний ґрунт), 208 (кам’яний осип) а також знаків боліт (308, 310). + Ділянки з окремими деревами або кущами на відкритій місцевості можуть бути узагальнені використанням регулярного візерунку великих точок на жовтому тлі. Точки можуть бути білими (вкраплення дерев) або зеленими (вкраплення кущів/гущавини). Дозволяється додавати видатні окремі дерева, використовуючи знак 417 (окреме велике дерево). Якщо ділянки жовтого кольору домінують на карті, дозволяється застосовувати растр (75% замість повного жовтого). +Знак не може поєднуватись з іншими площинними знаками, за винятком 113 (нерівний ґрунт), 208 (кам’яний осип) а також знаків боліт (308, 310). Rough open land Name of symbol 403 - Грубий відкритий простір + Незручний відкритий простір Heath, moorland, felled areas, newly planted areas (trees lower than ca. 1 m) or other generally open land with rough ground vegetation, heather or tall grass offering the same runnability as typical open forest. @@ -1114,13 +1114,13 @@ May be combined with symbol 407 (vegetation, slow running, good visibility) or 4 Minimum area: 1 mm x 1 mm (footprint 15 m x 15 m). Smaller areas must either be left out, exaggerated or shown using symbol 401 (open land). Description of symbol 403 Трав’яниста рослинність, торфовище, вирубаний ліс, молоді посадки (дерева нижче 1м) або інша здебільшого відкрита місцевість з незручною для бігу землею, рослинністю та високою травою, що має прохідність на рівні з чистим лісом. -Може поєднуватися зі знаками 407 (рослинність, що сповільнює біг, хороша видимість) і 409 (рослинність, можливо пройти, хороша видимість) для показу погіршення прохідності. +Може поєднуватися зі знаками 407 (рослинність, що сповільнює біг, хороша видимість) і 409 (рослинність, можливо йти, хороша видимість) для показу погіршення прохідності. Мінімальна площа: 1 мм × 1 мм (проекція 15 м × 15 м). Менші ділянки мають бути опущені, перебільшені або показані знаком 401 (відкритий простір). Rough open land with scattered trees Name of symbol 404 - Грубий напіввідкритий простір + Незручний напіввідкритий простір Areas with scattered trees or bushes in rough open land may be generalised by using a regular pattern of large dots in the yellow screen. @@ -1130,15 +1130,15 @@ The symbol is orientated to north. Minimum width: 1.5 mm (footprint 22.5 m). Minimum area: 2.5 x 2.5 mm. Smaller areas must either be left out, exaggerated or shown using symbol 403 (rough open land). Description of symbol 404 - Ділянки з окремими деревами або кущами на грубому відкритому просторі можуть бути узагальнені використанням регулярного візерунку великих точок на жовтому растрі. -Точки можуть бути білими (окремі дерева) або зеленими (окремі кущі/чагарники). Лише варіант з білими точками може бути поєднаний зі знаками 407 (рослинність, що сповільнює біг, хороша видимість) і 409 (рослинність, можливо пройти, хороша видимість) для показу погіршення прохідності. + Ділянки з окремими деревами або кущами на незручному відкритому просторі можуть бути узагальнені використанням регулярного візерунку великих точок на жовтому растрі. +Точки можуть бути білими (вкраплення дерев) або зеленими (вкраплення чагарників/гущавини). Лише варіант з білими точками поєднується зі знаками 407 (рослинність, що сповільнює біг, хороша видимість) і 409 (рослинність, можливо йти, хороша видимість) для показу погіршення прохідності. Знак зорієнтований на північ. Мінімальна ширина: 1,5 мм (проекція 22,5 м). Мінімальна площа: 2,5 мм × 2,5 мм (проекція 37,5 м × 37,5 м). Менші ділянки мають бути опущені, перебільшені або показані знаком 403 (грубий відкритий простір). Rough open land with scattered bushes Name of symbol 404.1 - Грубий напіввідкритий простір з кущами + Незручний напіввідкритий простір з кущами Areas with scattered trees or bushes in rough open land may be generalised by using a regular pattern of large dots in the yellow screen. @@ -1148,8 +1148,8 @@ The symbol is orientated to north. Minimum width: 1.5 mm (footprint 22.5 m). Minimum area: 2.5 x 2.5 mm. Smaller areas must either be left out, exaggerated or shown using symbol 403 (rough open land). Description of symbol 404.1 - Ділянки з окремими деревами або кущами на грубому відкритому просторі можуть бути узагальнені використанням регулярного візерунку великих точок на жовтому растрі. -Точки можуть бути білими (окремі дерева) або зеленими (окремі кущі/чагарники). Лише варіант з білими точками може бути поєднаний зі знаками 407 (рослинність, що сповільнює біг, хороша видимість) і 409 (рослинність, можливо пройти, хороша видимість) для показу погіршення прохідності. + Ділянки з окремими деревами або кущами на незручному відкритому просторі можуть бути узагальнені використанням регулярного візерунку великих точок на жовтому растрі. +Точки можуть бути білими (вкраплення дерев) або зеленими (вкраплення чагарників/гущавини). Лише варіант з білими точками поєднується зі знаками 407 (рослинність, що сповільнює біг, хороша видимість) і 409 (рослинність, можливо йти, хороша видимість) для показу погіршення прохідності. Знак зорієнтований на північ. Мінімальна ширина: 1,5 мм (проекція 22,5 м). Мінімальна площа: 2,5 мм × 2,5 мм (проекція 37,5 м × 37,5 м). Менші ділянки мають бути опущені, перебільшені або показані знаком 403 (грубий відкритий простір). @@ -1166,7 +1166,7 @@ open land). Vegetation, slow running Name of symbol 406 - Рослинність, що сповільнює біг + Рослинність, сповільнює біг An area with dense vegetation (low visibility) which reduces running to about 60-80% of normal speed. @@ -1186,7 +1186,7 @@ open land). Vegetation, slow running, good visibility Name of symbol 407 - Рослинність, що сповільнює біг, хороша видимість + Рослинність, сповільнює біг, хороша видимість An area of dense undergrowth but otherwise good visibility (brambles, heather, low bushes, and including cut branches) which reduces running to ca. 60-80% of normal speed. This symbol may not be combined with 406 or 408. From 61faefa83f5c1b8952ec348e50fb7814a38a12a1 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Wed, 22 Aug 2018 08:53:56 +0200 Subject: [PATCH 06/49] symbols sets: Fix text of ISOM2017 symbols 106, 304 --- symbol sets/10000/ISOM2017_10000.omap | 6 ++++-- symbol sets/15000/ISOM2017_15000.omap | 6 ++++-- symbol sets/src/ISOM2017_15000.xmap | 8 +++++--- translations/map_symbols_cs.ts | 14 ++++++++------ translations/map_symbols_da.ts | 12 +++++++----- translations/map_symbols_de.ts | 14 ++++++++------ translations/map_symbols_eo.ts | 8 +++++--- translations/map_symbols_es.ts | 14 ++++++++------ translations/map_symbols_fi.ts | 12 +++++++----- translations/map_symbols_fr.ts | 14 ++++++++------ translations/map_symbols_hu.ts | 24 +++++++++++++----------- translations/map_symbols_ru.ts | 14 ++++++++------ translations/map_symbols_sv.ts | 12 +++++++----- translations/map_symbols_template.ts | 8 +++++--- translations/map_symbols_uk.ts | 10 ++++++---- 15 files changed, 103 insertions(+), 73 deletions(-) diff --git a/symbol sets/10000/ISOM2017_10000.omap b/symbol sets/10000/ISOM2017_10000.omap index e6f954738..826f48795 100644 --- a/symbol sets/10000/ISOM2017_10000.omap +++ b/symbol sets/10000/ISOM2017_10000.omap @@ -46,7 +46,8 @@ Use this symbol to display the full extent of wide earth banks. An earth bank is an abrupt change in ground level which can be clearly distinguished from its surroundings, e.g. gravel or sand pits, road and railway cuttings or embankments. Minimum height: 1 m. An earth bank may impact runnability. The tags represent the full extent of the earth bank. For long earth banks it is allowed to use tags shorter than the minimum length at the ends. If two earth banks are close together, tags may be omitted. Impassable earth banks shall be represented using symbol 201 (impassable cliff).-450 0;450 0;345 0;345 735;-345 0;-345 735; Distinct earth wall. Minimum height is 1 m. -A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. +A ruined or less distinct earth wall. Minimum height: 0.5 m. +Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). An erosion gully which is too small to be shown using symbol 104 (earth bank) is shown by a single line. Minimum depth: 1 m. Contour lines shall not be broken around this symbol. A small erosion gully, dry ditch or trench. Minimum depth: 0.5 m. @@ -169,7 +170,8 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies.Use this symbol to represent regular outline for shallow body of water. A shallow seasonal or periodic body of water may be represented using a dashed 0.10 outline. A water-filled pit or an area of water which is too small to be shown to scale. Location is the centre of gravity of the symbol, and the symbol is orientated to north.231 -453;525 -453;0 734;-525 -453;-231 -453;0 75;231 -453 2; -A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. +Should be at least 2 m wide. +Minimum length (isolated): footprint 15 m. A crossable watercourse (including a major drainage ditch) less than 2 m wide. A natural or man-made minor water channel which may contain water only intermittently. A marsh which is uncrossable or dangerous for the competitor. The black outline emphasises that the feature is uncrossable. The black outline is omitted for boundaries between uncrossable marsh and symbol 301 (uncrossable body of water). The symbol may be combined with a rough open land symbol (403, 404) to show openness. The symbol is orientated to north. diff --git a/symbol sets/15000/ISOM2017_15000.omap b/symbol sets/15000/ISOM2017_15000.omap index 5045f2760..30df19b7d 100644 --- a/symbol sets/15000/ISOM2017_15000.omap +++ b/symbol sets/15000/ISOM2017_15000.omap @@ -46,7 +46,8 @@ Use this symbol to display the full extent of wide earth banks. An earth bank is an abrupt change in ground level which can be clearly distinguished from its surroundings, e.g. gravel or sand pits, road and railway cuttings or embankments. Minimum height: 1 m. An earth bank may impact runnability. The tags represent the full extent of the earth bank. For long earth banks it is allowed to use tags shorter than the minimum length at the ends. If two earth banks are close together, tags may be omitted. Impassable earth banks shall be represented using symbol 201 (impassable cliff).-300 0;300 0;230 0;230 490;-230 0;-230 490; Distinct earth wall. Minimum height is 1 m. -A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. +A ruined or less distinct earth wall. Minimum height: 0.5 m. +Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). An erosion gully which is too small to be shown using symbol 104 (earth bank) is shown by a single line. Minimum depth: 1 m. Contour lines shall not be broken around this symbol. A small erosion gully, dry ditch or trench. Minimum depth: 0.5 m. @@ -169,7 +170,8 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies.Use this symbol to represent regular outline for shallow body of water. A shallow seasonal or periodic body of water may be represented using a dashed 0.10 outline. A water-filled pit or an area of water which is too small to be shown to scale. Location is the centre of gravity of the symbol, and the symbol is orientated to north.154 -302;350 -302;0 489;-350 -302;-154 -302;0 50;154 -302 2; -A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. +Should be at least 2 m wide. +Minimum length (isolated): footprint 15 m. A crossable watercourse (including a major drainage ditch) less than 2 m wide. A natural or man-made minor water channel which may contain water only intermittently. A marsh which is uncrossable or dangerous for the competitor. The black outline emphasises that the feature is uncrossable. The black outline is omitted for boundaries between uncrossable marsh and symbol 301 (uncrossable body of water). The symbol may be combined with a rough open land symbol (403, 404) to show openness. The symbol is orientated to north. diff --git a/symbol sets/src/ISOM2017_15000.xmap b/symbol sets/src/ISOM2017_15000.xmap index 21950e6ce..db5cd956a 100644 --- a/symbol sets/src/ISOM2017_15000.xmap +++ b/symbol sets/src/ISOM2017_15000.xmap @@ -441,8 +441,9 @@ - - A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. + + A ruined or less distinct earth wall. Minimum height: 0.5 m. +Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). @@ -2007,7 +2008,8 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies. - A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. + Should be at least 2 m wide. +Minimum length (isolated): footprint 15 m. diff --git a/translations/map_symbols_cs.ts b/translations/map_symbols_cs.ts index 0f6244c51..6559b385c 100644 --- a/translations/map_symbols_cs.ts +++ b/translations/map_symbols_cs.ts @@ -264,14 +264,15 @@ Zřetelný zemní val. Minimální výška: 1 m. - Small earth wall + Ruined earth wall Name of symbol 106 - Rozpadlý zemní val + Rozpadlý zemní val - A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. + A ruined or less distinct earth wall. Minimum height: 0.5 m. +Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). Description of symbol 106 - Zřícený nebo méně zřetelný zemní val. Minimální výška je 0.5 m. + Zřícený nebo méně zřetelný zemní val. Minimální výška je 0.5 m. Erosion gully @@ -908,9 +909,10 @@ Zhroucené a snadno překonatelné příkopy by měly být mapovány jako erozn Překonatelný vodní tok - A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. + Should be at least 2 m wide. +Minimum length (isolated): footprint 15 m. Description of symbol 304 - Měl by být nejméně 2 m široký. Vodní toky širší než 5 m by měly být zobrazeny v měřítku mapy. + Měl by být nejméně 2 m široký. Vodní toky širší než 5 m by měly být zobrazeny v měřítku mapy. Small crossable watercourse diff --git a/translations/map_symbols_da.ts b/translations/map_symbols_da.ts index be11907e2..b432b20a6 100644 --- a/translations/map_symbols_da.ts +++ b/translations/map_symbols_da.ts @@ -275,14 +275,15 @@ Minimum højde: 1 m. En jordskrænt kan påvirke løbbarheden. Faldstregerne rep Tydeligt jorddige. Minimum højde: 1 m. - Small earth wall + Ruined earth wall Name of symbol 106 - Sammenfaldet jorddige + Sammenfaldet jorddige - A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. + A ruined or less distinct earth wall. Minimum height: 0.5 m. +Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). Description of symbol 106 - Et sammenfaldet eller mindre tydeligt jorddige. Minimum højde: 0,5 m. + Et sammenfaldet eller mindre tydeligt jorddige. Minimum højde: 0,5 m. Erosion gully @@ -874,7 +875,8 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies. - A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. + Should be at least 2 m wide. +Minimum length (isolated): footprint 15 m. Description of symbol 304 diff --git a/translations/map_symbols_de.ts b/translations/map_symbols_de.ts index 3b511c69b..74f61d13b 100644 --- a/translations/map_symbols_de.ts +++ b/translations/map_symbols_de.ts @@ -264,14 +264,15 @@ Deutlicher Erdwall. Minimale Höhe: 1 m. - Small earth wall + Ruined earth wall Name of symbol 106 - Kleiner Erdwall + Kleiner Erdwall - A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. + A ruined or less distinct earth wall. Minimum height: 0.5 m. +Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). Description of symbol 106 - Ein niedriger oder teilweise zerfallener Erdwall wird mit einer unterbrochenen Linie gezeichnet. Minimale Höhe: 0,5m. + Ein niedriger oder teilweise zerfallener Erdwall wird mit einer unterbrochenen Linie gezeichnet. Minimale Höhe: 0,5m. Erosion gully @@ -843,9 +844,10 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies.Passierbarer Wasserlauf - A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. + Should be at least 2 m wide. +Minimum length (isolated): footprint 15 m. Description of symbol 304 - Ein passierbarer Wasserlauf mit einer minimalen Breite von 2 m. Flüsse mit einer Breite von mehr als 5 m sollen maßstäblich dargestellt werden. + Ein passierbarer Wasserlauf mit einer minimalen Breite von 2 m. Flüsse mit einer Breite von mehr als 5 m sollen maßstäblich dargestellt werden. Small crossable watercourse diff --git a/translations/map_symbols_eo.ts b/translations/map_symbols_eo.ts index a81cfd736..9a0c36742 100644 --- a/translations/map_symbols_eo.ts +++ b/translations/map_symbols_eo.ts @@ -264,12 +264,13 @@ - Small earth wall + Ruined earth wall Name of symbol 106 - A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. + A ruined or less distinct earth wall. Minimum height: 0.5 m. +Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). Description of symbol 106 @@ -842,7 +843,8 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies. - A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. + Should be at least 2 m wide. +Minimum length (isolated): footprint 15 m. Description of symbol 304 diff --git a/translations/map_symbols_es.ts b/translations/map_symbols_es.ts index 48e853bdb..560accc23 100644 --- a/translations/map_symbols_es.ts +++ b/translations/map_symbols_es.ts @@ -264,14 +264,15 @@ Muro de tierra perceptible. La altura mínima es 1 m. - Small earth wall + Ruined earth wall Name of symbol 106 - Muro de tierra pequeño + Muro de tierra pequeño - A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. + A ruined or less distinct earth wall. Minimum height: 0.5 m. +Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). Description of symbol 106 - Un muro de tierra pequeño o parcialmente derruido se debe mostrar con una línea discontinua. La altura mínima es 0,5 m. + Un muro de tierra pequeño o parcialmente derruido se debe mostrar con una línea discontinua. La altura mínima es 0,5 m. Erosion gully @@ -913,9 +914,10 @@ Las trincheras colapsadas y fácilmente superables deberían representarse como Cauce vadeable - A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. + Should be at least 2 m wide. +Minimum length (isolated): footprint 15 m. Description of symbol 304 - Una corriente de agua vadeable, de 2 m de ancho como mínimo. La amplitud de cauces superior a 5 m debería representarse a escala. + Una corriente de agua vadeable, de 2 m de ancho como mínimo. La amplitud de cauces superior a 5 m debería representarse a escala. Small crossable watercourse diff --git a/translations/map_symbols_fi.ts b/translations/map_symbols_fi.ts index c90bb817d..7951112d3 100644 --- a/translations/map_symbols_fi.ts +++ b/translations/map_symbols_fi.ts @@ -264,14 +264,15 @@ Selvästi havaittava maavalli. Minimikorkeus 1 m. - Small earth wall + Ruined earth wall Name of symbol 106 - Pieni maavalli + Pieni maavalli - A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. + A ruined or less distinct earth wall. Minimum height: 0.5 m. +Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). Description of symbol 106 - Pieni, osittain sortunut tai epäselvä maavalli. Minimikorkeus 0.5 m. + Pieni, osittain sortunut tai epäselvä maavalli. Minimikorkeus 0.5 m. Erosion gully @@ -842,7 +843,8 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies.Leveä puro tai oja - A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. + Should be at least 2 m wide. +Minimum length (isolated): footprint 15 m. Description of symbol 304 Ylitettävä vähintään 2 m leveä vesiuoma. Yli 5m leveä vesistö kuvataan mittakaavan mukaisesti. diff --git a/translations/map_symbols_fr.ts b/translations/map_symbols_fr.ts index 0b9119c51..23277543a 100644 --- a/translations/map_symbols_fr.ts +++ b/translations/map_symbols_fr.ts @@ -295,14 +295,15 @@ Longueur minimum : 0,6 mm (9 m au sol). Longueur minimum : 2 mm (30 m au sol). - Small earth wall + Ruined earth wall Name of symbol 106 - Levée de terre en ruine + Levée de terre en ruine - A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. + A ruined or less distinct earth wall. Minimum height: 0.5 m. +Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). Description of symbol 106 - Une levée de terre en ruine ou moins facile à distinguer. + Une levée de terre en ruine ou moins facile à distinguer. Hauteur minimum 0,5 m. Longueur minimum : 2 tirets (3,65 mm - 55m au sol). Si la levée de terre est plus courte le dessin doit l’exagérer pour atteindre la longueur minimum ou il faut utiliser le symbole 105 (levée de terre). @@ -1003,9 +1004,10 @@ Emprise au sol : 10,5 m x 12 m. Cours d’eau franchissable - A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. + Should be at least 2 m wide. +Minimum length (isolated): footprint 15 m. Description of symbol 304 - Sa largeur devrait être d’au moins 2 m. + Sa largeur devrait être d’au moins 2 m. Longueur minimum (isolée) : 1 mm (15 m au sol). diff --git a/translations/map_symbols_hu.ts b/translations/map_symbols_hu.ts index 621f4d044..31ebbcab4 100644 --- a/translations/map_symbols_hu.ts +++ b/translations/map_symbols_hu.ts @@ -262,17 +262,18 @@ Distinct earth wall. Minimum height is 1 m. Description of symbol 105 Megkülönböztethető földfal, töltés. A minimális magasság 1 méter. - + - Small earth wall + Ruined earth wall Name of symbol 106 - Kis föld fal, kis töltés sánc - + Kis föld fal, kis töltés sánc + - A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. + A ruined or less distinct earth wall. Minimum height: 0.5 m. +Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). Description of symbol 106 - A kis vagy részben romos földfalat, töltést szaggatott vonallal kell ábrázolni. A minimális magasság 0,5 méter. - + A kis vagy részben romos földfalat, töltést szaggatott vonallal kell ábrázolni. A minimális magasság 0,5 méter. + Erosion gully Name of symbol 107 @@ -874,12 +875,13 @@ Az áthatolhatatlan árkokat a 201 (áthatolhatatlan sziklafal) jellel kell ábr Crossable watercourse Name of symbol 304 Áthatolható vízfolyás - + - A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. + Should be at least 2 m wide. +Minimum length (isolated): footprint 15 m. Description of symbol 304 - Áthatolható vízfolyás, minimum 2m szélességű. Az 5 méternél szélesebb vízfolyásokat méretarányosan kell ábrázolni. - + Áthatolható vízfolyás, minimum 2m szélességű. Az 5 méternél szélesebb vízfolyásokat méretarányosan kell ábrázolni. + Small crossable watercourse Name of symbol 305 diff --git a/translations/map_symbols_ru.ts b/translations/map_symbols_ru.ts index 6ba8ec930..e409740ae 100644 --- a/translations/map_symbols_ru.ts +++ b/translations/map_symbols_ru.ts @@ -265,14 +265,15 @@ Четко видимая земляная насыпь. Высота минимум 1 м. - Small earth wall + Ruined earth wall Name of symbol 106 - Маленький земляной вал + Маленький земляной вал - A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. + A ruined or less distinct earth wall. Minimum height: 0.5 m. +Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). Description of symbol 106 - Маленькая или частично разрушенная земляная насыпь показывается прерывистой линией. Минимальная высота 0,5 м. + Маленькая или частично разрушенная земляная насыпь показывается прерывистой линией. Минимальная высота 0,5 м. Erosion gully @@ -876,9 +877,10 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies.Преодолимый водный поток - A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. + Should be at least 2 m wide. +Minimum length (isolated): footprint 15 m. Description of symbol 304 - Преодолимая река или канава шириной минимум 2 м. Если ширина больше 5 м, то объект показывается в масштабе карты. + Преодолимая река или канава шириной минимум 2 м. Если ширина больше 5 м, то объект показывается в масштабе карты. Small crossable watercourse diff --git a/translations/map_symbols_sv.ts b/translations/map_symbols_sv.ts index 8e6a655ef..b4fac6a05 100644 --- a/translations/map_symbols_sv.ts +++ b/translations/map_symbols_sv.ts @@ -288,14 +288,15 @@ För långa skärningar är det tillåtet att använda kortare taggar vid ändpu Tydligt jordvall. Lägsta höjd: 1 m. - Small earth wall + Ruined earth wall Name of symbol 106 - Otydligt jordvall + Otydligt jordvall - A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. + A ruined or less distinct earth wall. Minimum height: 0.5 m. +Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). Description of symbol 106 - Otydligt eller raserad jordvall. Lägsta höjd: 0,5 m. + Otydligt eller raserad jordvall. Lägsta höjd: 0,5 m. Erosion gully @@ -933,7 +934,8 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies. - A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. + Should be at least 2 m wide. +Minimum length (isolated): footprint 15 m. Description of symbol 304 diff --git a/translations/map_symbols_template.ts b/translations/map_symbols_template.ts index 67bf26bb9..eca426c1e 100644 --- a/translations/map_symbols_template.ts +++ b/translations/map_symbols_template.ts @@ -264,12 +264,13 @@ - Small earth wall + Ruined earth wall Name of symbol 106 - A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. + A ruined or less distinct earth wall. Minimum height: 0.5 m. +Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). Description of symbol 106 @@ -842,7 +843,8 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies. - A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. + Should be at least 2 m wide. +Minimum length (isolated): footprint 15 m. Description of symbol 304 diff --git a/translations/map_symbols_uk.ts b/translations/map_symbols_uk.ts index e5e02fb79..51af1fba5 100644 --- a/translations/map_symbols_uk.ts +++ b/translations/map_symbols_uk.ts @@ -264,12 +264,13 @@ Чіткий земляний вал. Мінімальна висота: 1 м. - Small earth wall + Ruined earth wall Name of symbol 106 Маленький земляний вал - A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. + A ruined or less distinct earth wall. Minimum height: 0.5 m. +Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). Description of symbol 106 Маленький чи частково зруйнований земляний вал показується пунктирною лінією. Мінімальна висота 0,5 м. @@ -913,9 +914,10 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies.Прохідний струмок - A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. + Should be at least 2 m wide. +Minimum length (isolated): footprint 15 m. Description of symbol 304 - Струмок, мінімум 2 м завширшки. Струмки ширше 5 м слід зображувати в масштабі. + Струмок, мінімум 2 м завширшки. Струмки ширше 5 м слід зображувати в масштабі. Small crossable watercourse From ad6a14350131ff5e23aecd49480a9f160488a690 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Wed, 22 Aug 2018 09:28:12 +0200 Subject: [PATCH 07/49] GdalSettingsPage: Block signals while some items may be nullptr Fixes #1127. --- src/gdal/gdal_settings_page.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gdal/gdal_settings_page.cpp b/src/gdal/gdal_settings_page.cpp index 73b7ece51..d27504238 100644 --- a/src/gdal/gdal_settings_page.cpp +++ b/src/gdal/gdal_settings_page.cpp @@ -139,6 +139,8 @@ void GdalSettingsPage::updateWidgets() auto options = manager.parameterKeys(); options.sort(); parameters->setRowCount(options.size() + 1); + + QSignalBlocker block(parameters); auto row = 0; for (const auto& item : qAsConst(options)) { From c8339284d7e5e9d3e9733b589e9566dbff78556c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Wed, 22 Aug 2018 11:54:18 +0000 Subject: [PATCH 08/49] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (1493 of 1493 strings) --- translations/OpenOrienteering_nb.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/OpenOrienteering_nb.ts b/translations/OpenOrienteering_nb.ts index 552d756c8..6db0b02d0 100644 --- a/translations/OpenOrienteering_nb.ts +++ b/translations/OpenOrienteering_nb.ts @@ -4979,7 +4979,7 @@ rull musehjulet for å zoome. Unable to save correct position of missing template: "%1" - + Kunne ikke lagre korrekt plassering for manglende mal: "%1" From e3d84caf0c2dbf4f5e7cd27be19a10bcd4e85584 Mon Sep 17 00:00:00 2001 From: Yevhen Mazur Date: Wed, 22 Aug 2018 12:04:03 +0000 Subject: [PATCH 09/49] Translated using Weblate (Ukrainian) Currently translated at 49.0% (1099 of 2240 strings) Translation: OpenOrienteering/Map Symbols Translate-URL: https://hosted.weblate.org/projects/openorienteering/map-symbols/uk/ --- translations/map_symbols_uk.ts | 1122 ++++++++++++++++---------------- 1 file changed, 564 insertions(+), 558 deletions(-) diff --git a/translations/map_symbols_uk.ts b/translations/map_symbols_uk.ts index 51af1fba5..83e6d05f6 100644 --- a/translations/map_symbols_uk.ts +++ b/translations/map_symbols_uk.ts @@ -266,13 +266,14 @@ Ruined earth wall Name of symbol 106 - Маленький земляний вал + Зруйнований земляний вал A ruined or less distinct earth wall. Minimum height: 0.5 m. Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). Description of symbol 106 - Маленький чи частково зруйнований земляний вал показується пунктирною лінією. Мінімальна висота 0,5 м. + Частково зруйнований земляний вал або нечітко видимий земляний насип. Мінімальна висота: 0,5 м. +Мінімальна довжина: два штрихи (проекція 55 м). Якщо лінія коротша, вона має бути перебільшена до мінімальної довжини або замінена на знак 105 (земляний вал). Erosion gully @@ -563,7 +564,7 @@ Crossing a cliff will normally slow progress. Rocky pit or cave (without distinct entrance) Name of symbol 203.1 - Скельна яма чи печера (без чіткого входу) + Скельна яма чи печера (без чіткого входу) Rocky pits, holes, caves or mineshafts which may constitute a danger to the competitor. Minimum depth: 1 m. @@ -917,8 +918,9 @@ Collapsed and easily crossable trenches should be mapped as erosion gullies.Should be at least 2 m wide. Minimum length (isolated): footprint 15 m. Description of symbol 304 - Струмок, мінімум 2 м завширшки. Струмки ширше 5 м слід зображувати в масштабі. - + Зазвичай, понад 2 м завширшки. +Мінімальна довжина (окремого об’єкту): 1 мм (проекція 15 м). + Small crossable watercourse Name of symbol 305 @@ -942,7 +944,7 @@ Minimum length (isolated): footprint 15 m. Uncrossable marsh, with border line Name of symbol 307 - Непрохідне болото, з лінією межі + Непрохідне болото, з лінією межі A marsh which is uncrossable or dangerous for the competitor. The black outline emphasises that the feature is uncrossable. The black outline is omitted for boundaries between uncrossable marsh and symbol 301 (uncrossable body of water). The symbol may be combined with a rough open land symbol (403, 404) to show openness. The symbol is orientated to north. @@ -1198,12 +1200,12 @@ open land). Vegetation, walk Name of symbol 408 - Рослинність, можливо пройти + Рослинність, можливо йти An area with dense trees or thickets (low visibility) which reduce running to about 20-60% of normal speed. Description of symbol 408 - Ділянка щільного лісу чи чагарнику (погана видимість), яка зменшує швидкість бігу до 20-60% від нормальної. + Ділянка щільного лісу чи чагарнику (погана видимість), яка зменшує прохідність до 20-60% від нормальної. Vegetation runnable in one direction, 2 @@ -1218,7 +1220,7 @@ open land). Vegetation runnable in one direction, 2, 20% Name of symbol 408.2 - Рослинність, прохідна в одному напрямку, 2, 20% + Рослинність, прохідна в одному напрямку, 2, 20% When an area of forest provides good running in one direction but less good in others, light green stripes are left in the screen symbol to show the direction of good running. @@ -1228,7 +1230,7 @@ open land). Vegetation, walk, good visibility Name of symbol 409 - Рослинність, можливо пройти, хороша видимість + Рослинність, можливо йти, хороша видимість An area of good visibility that is difficult to run through due to for instance undergrowth (brambles, heather, low bushes, cut branches). Running speed is reduced to about 20-60% of normal speed. @@ -1246,13 +1248,13 @@ Areas of good visibility that are very difficult to run or impassable are repres An area of dense vegetation (trees or undergrowth) which is barely passable. Running reduced to ca. 0-20% of normal speed. For fairness reasons, areas that are really difficult to get through (10% and slower) shall be represented using symbol 411 (vegetation, impassable). Description of symbol 410 - Ділянка щільної рослинності (дерева чи підлісок), яка є ледве прохідною. Швидкість пересування знижується до менш ніж 20% від нормальної. + Ділянка щільної рослинності (дерева чи підлісок), яка ледь прохідна. Швидкість пересування знижується приблизно до 20% і більше від нормальної. Задля дотримання принципу спортивної справедливості, ділянки, які дійсно важко подолати (10% і повільніше) мають бути зображені знаком 411 (непрохідна рослинність). Forest runnable in one direction, 3 Name of symbol 410.1 - Ліс, прохідний в одному напрямку, 3 + Ліс, прохідний в одному напрямку, 3 When an area of forest provides good running in one direction but less good in others, white stripes are left in the screen symbol to show the direction of good running. @@ -1321,7 +1323,7 @@ Minimum width: 0.35 mm Since the runnability may vary, such areas should be avoided when setting courses. The symbol is combined with symbol 709 (out of bounds area) to show cultivated land that shall not be entered. Description of symbol 412 - Культивовані землі, які, зазвичай, використовуються для вирощування сільськогосподарських культур. Швидкість бігу може бути різною, в залежності від типу вирощуваної культури та пори року. Для лісових насаджень знаки 405 (чистий ліс) або 402 (напіввідкритий простір) можуть бути використані замість жовтого кольору. + Культивовані землі, які, зазвичай, використовуються для вирощування сільськогосподарських культур. Прохідність може бути різною, в залежності від типу вирощуваної культури та пори року. Для лісових насаджень знаки 405 (чистий ліс) або 402 (напіввідкритий простір) можуть бути використані замість жовтого кольору. Оскільки прохідність може різнитися в залежності від пори року, слід уникати таких ділянок при плануванні дистанцій. Знак поєднується зі знаком 709 (заборонена територія) для показу угідь, заборонених для перетину учасниками. @@ -1338,13 +1340,13 @@ May be combined with symbol 407 (vegetation, slow running, good visibility) or 4 Description of symbol 413 Посадка культурних дерев або кущів, як правило, рядами. Лінії точок можуть бути зорієнтовані щоб показати напрям рядів посадки. -Знак має бути поєднаний зі знаком 401 (відкритий простір) або 403 (грубий відкритий простір). -Може бути поєднаний зі знаком 407 (рослинність, що сповільнює біг, хороша видимість) або 409 (рослинність, можливо пройти, хороша видимість), для показу зниженої прохідності. +Поєднується зі знаком 401 (відкритий простір) або 403 (незручний відкритий простір). +Може поєднуватися зі знаком 407 (рослинність, що сповільнює біг, хороша видимість) або 409 (рослинність, можливо йти, хороша видимість), для показу погіршення прохідності. Orchard, rough open Name of symbol 413.1 - Сад, груба земля + Сад, груба земля Land planted with trees or bushes, normally in a regular pattern. @@ -1354,28 +1356,28 @@ May be combined with symbol 407 (vegetation, slow running, good visibility) or 4 Description of symbol 413.1 Посадка культурних дерев або кущів, як правило, рядами. Лінії точок можуть бути зорієнтовані щоб показати напрям рядів посадки. -Знак має бути поєднаний зі знаком 401 (відкритий простір) або 403 (грубий відкритий простір). -Може бути поєднаний зі знаком 407 (рослинність, що сповільнює біг, хороша видимість) або 409 (рослинність, можливо пройти, хороша видимість), для показу зниженої прохідності. +Знак має бути поєднаний зі знаком 401 (відкритий простір) або 403 (незручний відкритий простір). +Може бути поєднаний зі знаком 407 (рослинність, що сповільнює біг, хороша видимість) або 409 (рослинність, можливо йти, хороша видимість), для показу погіршення прохідності. Vineyard Name of symbol 414 - Виноградник + Виноградник A vineyard or similar cultivated land containing dense rows of plants offering good or normal runnability in the direction of planting. The lines shall be orientated to show the direction of planting. Must be combined with either symbol 401 (open land) or symbol 403 (rough open land). Description of symbol 414 - Виноградник, або подібна посадка, що складається зі щільних рядів рослин і забезпечує хорошу, або нормальну прохідність у напрямку посадки. Лінії мають бути зорієнтовані в напрямку рядів посадки. Знак має бути поєднаний зі знаком 401 (відкритий простір) або 403 (грубий відкритий простір). + Виноградник, або подібна посадка, що складається зі щільних рядів рослин і забезпечує хорошу, або нормальну прохідність у напрямку посадки. Лінії мають бути зорієнтовані в напрямку рядів посадки. Має бути поєднаним зі знаком 401 (відкритий простір) або 403 (незручний відкритий простір). Vineyard, rough open Name of symbol 414.1 - Виноградник, груба земля + Виноградник, груба земля A vineyard or similar cultivated land containing dense rows of plants offering good or normal runnability in the direction of planting. The lines shall be orientated to show the direction of planting. Must be combined with either symbol 401 (open land) or symbol 403 (rough open land). Description of symbol 414.1 - Виноградник, або подібна посадка, що складається зі щільних рядів рослин і забезпечує хорошу, або нормальну прохідність у напрямку посадки. Лінії мають бути зорієнтовані в напрямку рядів посадки. Знак має бути поєднаний зі знаком 401 (відкритий простір) або 403 (грубий відкритий простір). + Виноградник, або подібна посадка, що складається зі щільних рядів рослин і забезпечує хорошу, або нормальну прохідність у напрямку посадки. Лінії мають бути зорієнтовані в напрямку рядів посадки. Має бути поєднаним зі знаком 401 (відкритий простір) або 403 (незручний відкритий простір). Distinct cultivation boundary @@ -1385,7 +1387,7 @@ May be combined with symbol 407 (vegetation, slow running, good visibility) or 4 A boundary of symbol 412 (cultivated land) or a boundary between areas of cultivated land when not shown with other symbols (fence, wall, path, etc.). Description of symbol 415 - Межа знаку 412 (культивоване угіддя), або межа між різними ділянками угідь, яка не показана іншим знаком (огорожа, стіна, дорога тощо). + Межа знаку 412 (культивоване угіддя), або межа між різними ділянками угідь, яка не показана іншим знаком (огорожа, мур, дорога тощо). Distinct vegetation boundary @@ -1397,8 +1399,8 @@ May be combined with symbol 407 (vegetation, slow running, good visibility) or 4 Very distinct forest edges and vegetation boundaries may be represented using the cultivation boundary symbol. Only one of the vegetation boundary symbols (black dotted line or dashed green line) can be used on a map. Minimum length, black dot implementation: 5 dots (2.5 mm – footprint 37 m). Description of symbol 416 - Чіткий край лісу або межа рослинності всередині лісу. -Дуже чіткі межі лісу та контури рослинності можуть зображуватися знаком чітка межа культивованих угідь. Лише один з двох знаків (лінія чорних точок або лінія зелених штрихів) може використовуватись на одній карті. + Чіткий край лісу або контур рослинності всередині лісу. +Дуже чіткі межі лісу та контури рослинності можуть зображуватися знаком чітка межа культивованих угідь. Лише один з двох знаків (чорна точкова лінія або зелена штрихова лінія) може використовуватись в межах однієї карти. Мінімальна довжина, лінія чорних точок: 5 точок (2,5 мм – проекція 37 м). @@ -1411,7 +1413,7 @@ Minimum length, black dot implementation: 5 dots (2.5 mm – footprint 37 m). Description of symbol 416.1 - Чіткий край лісу або межа рослинності всередині лісу. + Чіткий край лісу або контур рослинності всередині лісу. Недоліком варіанту з зеленими штрихами є те, що його не можна використовувати для контурів рослинності навколо, або всередині знаків 410 (рослинність, можливо пролізти) та 411 (непрохідна рослинність). Альтернативою для таких ситуацій є використання знаку 415 (чітка межа культивованих угідь). Мінімальна довжина, лінія зелених штрихів: 4 штрихи (1.8 мм – проекція 27 м). @@ -1452,18 +1454,18 @@ Footprint: 7.5 m x 7.5 m. Paved area, with bounding line Name of symbol 501 - Асфальтована ділянка, з межею - + Асфальтований майданчик, з межею + An area with a firm level surface such as asphalt, hard gravel, tiles, concrete or the like. Paved areas should be bordered (or framed) by a thin black line where they have a distinct boundary. Description of symbol 501 - Ділянка з твердою поверхнею, такою як асфальт, гравій, плитка, бетон або подібне. Асфальтовані майданчики слід обмежувати (або обводити) тонкою чорною контурною лінією, там де вони мають чітку межу. + Ділянки з твердою поверхнею, такою як асфальт, гравій, плитка, бетон або подібне. Асфальтовані майданчики слід обводити чорною контурною лінією, там де вони мають чітку межу. Paved area Name of symbol 501.1 - Асфальтована ділянка - + Асфальтований майданчик + An area with a firm level surface such as asphalt, hard gravel, tiles, concrete or the like. Description of symbol 501.1 @@ -1472,8 +1474,8 @@ Footprint: 7.5 m x 7.5 m. Paved area, bounding line Name of symbol 501.2 - Асфальтована ділянка, межа - + Асфальтований майданчик, межа + Paved areas should be bordered (or framed) by a thin black line where they have a distinct boundary. Description of symbol 501.2 @@ -1492,8 +1494,8 @@ symbol 516 (fence), 518 (impassable fence), 513 (wall) or 515 (impassable wall) feature is so close to the road edge that it cannot practically be shown as a separate symbol. Description of symbol 502 - Ширину слід показувати відповідно до масштабу, але у межах мінімальних розмірів (0,3 + 2 × 0,14 мм – проекція 8,7 м). -Бічна лінія може бути замінена іншим лінійним знаком чорного кольору, таким як знак 516 (огорожа), 518 (непрохідна огорожа), 513 (стіна) або 515 (непрохідна стіна), якщо цей елемент знаходиться так близько до краю дороги, що його практично неможливо зобразити окремим знаком. + Ширину слід показувати відповідно до масштабу, але з дотриманням мінімальних розмірів (0,3 + 2 × 0,14 мм – проекція 8,7 м). +Бічна лінія може бути замінена іншим лінійним знаком чорного кольору, таким як 516 (огорожа), 518 (непрохідна огорожа), 513 (мур) або 515 (непрохідний мур), якщо цей об'єкт настільки близький до краю дороги, що його практично неможливо зобразити окремим знаком. Wide road, 0.5mm width @@ -1513,7 +1515,7 @@ symbol. A road with two carriageways can be represented using two wide road symbols side by side, keeping only one of the road edges in the middle. The width of the symbol should be drawn to scale but not smaller than the minimum width. The outer boundary lines may be replaced with other black line symbols, such as symbol 516 (fence), 518 (impassable fence), 513 (wall) or 515 (impassable wall) if the feature is so close to the road edge that it cannot practically be shown as a separate symbol. Description of symbol 502.2 - Дорога з двома проїзними частинами може бути представлена двома знаками широкої дороги один біля одного, з єдиною спільною чорною лінією посередині. Ширину слід показувати відповідно до масштабу, але у межах мінімальних розмірів. Бічна лінія може бути замінена іншим лінійним знаком чорного кольору, таким як знак 516 (огорожа), 518 (непрохідна огорожа), 513 (стіна) або 515 (непрохідна стіна), якщо цей елемент знаходиться так близько до краю дороги, що його практично неможливо зобразити окремим знаком. + Дорога з двома проїзними частинами може бути представлена двома знаками широкої дороги один біля одного, з єдиною спільною чорною лінією посередині. Ширину слід показувати відповідно до масштабу, але у межах мінімальних розмірів. Бічна лінія може бути замінена іншим лінійним знаком чорного кольору, таким як 516 (огорожа), 518 (непрохідна огорожа), 513 (мур) або 515 (непрохідний мур), якщо цей об’єкт настільки близький до краю дороги, що його практично неможливо зобразити окремим знаком. Road @@ -1558,7 +1560,7 @@ symbol. Less distinct small footpath Name of symbol 507 - Нечітка мала стежка + Нечітка стежка A runnable less distinct / visible small path or forestry extraction track. @@ -1568,7 +1570,7 @@ symbol. Narrow ride Name of symbol 508 - Просіка + Просіка A forest ride or a prominent trace (forestry extraction track, sandy track, ski track) through the terrain which does not have a distinct runnable path along it. The definition of the symbol must be given on the map. @@ -1614,7 +1616,7 @@ The definition of the symbol must be given on the map. Runnability: walk. Description of symbol 508.3 Лісова просіка або виразний слід (слід вивозу лісу, піщана доріжка, лижна траса) через місцевість, вздовж якого немає чіткої стежки. Визначення знаку має надаватися в оформленні карти. -Прохідність: можливо пройти. +Прохідність: можливо йти. Narrow ride, white background @@ -1638,13 +1640,13 @@ Runnability: normal runnability. A railway or other kind of railed track. If it is forbidden to run along the railway, it shall be combined with the overprint symbol for forbidden route. If it is forbidden to cross the railway, it must be combined with a symbol for forbidden area. Description of symbol 509 - Залізниця або інший вид рейкового шляху. + Залізниця або інший вид рейкової дороги. Якщо біг вздовж залізниці заборонений, знак має бути поєднаний зі знаком 711 (заборонений шлях). Якщо заборонено перетинати залізницю, знак має бути поєднаний зі знаком 520 (територія з обмеженим доступом) або 709 (заборонена територія). Power line Name of symbol 510 - Лінія електропередачі + Лінія електропередачі Power line, cableway or skilift. The bars show the exact location of the pylons. The line may be broken to improve legibility. @@ -1660,7 +1662,7 @@ If it is forbidden to run along the railway, it shall be combined with the overp Major power lines should be drawn with a double line. The gap between the lines may indicate the extent of the powerline. The lines may be broken to improve legibility. Very large carrying masts shall be represented in plan shape using symbol 521 (building) or with symbol 524 (high tower). Description of symbol 511 - Високовольтні лінії електропередач слід зображати подвійною лінією. Відстань між лініями знаку може показувати ширину лінії електропередачі. + Високовольтну лінію електропередачі слід зображати подвійною лінією. Відстань між боковими лініями може показувати ширину лінії електропередачі. Для покращення розбірливості карти лінії можуть бути розірвані. Дуже великі опорні стовпи мають бути представлені у плані знаками 521 (будівля) або 524 (висока вежа). @@ -1672,19 +1674,19 @@ The lines may be broken to improve legibility. Very large carrying masts shall b Major power lines should be drawn with a double line. The gap between the lines may indicate the extent of the powerline. The lines may be broken to improve legibility. Very large carrying masts shall be represented in plan shape using symbol 521 (building) or with symbol 524 (high tower). Description of symbol 511.1 - Високовольтні лінії електропередач слід зображати подвійною лінією. Відстань між лініями знаку може показувати ширину лінії електропередачі. + Високовольтну лінію електропередачі слід зображати подвійною лінією. Відстань між боковими лініями може показувати ширину лінії електропередачі. Для покращення розбірливості карти лінії можуть бути розірвані. Дуже великі опорні стовпи мають бути представлені у плані знаками 521 (будівля) або 524 (висока вежа). Major power line, large carrying masts Name of symbol 511.2 - Високовольтна лінія електропередачі, великі опорні стовпи + Високовольтна лінія електропередачі, великі опорні стовпи Major power lines should be drawn with a double line. The gap between the lines may indicate the extent of the powerline. The lines may be broken to improve legibility. Very large carrying masts shall be represented in plan shape using symbol 521 (building) or with symbol 524 (high tower). Description of symbol 511.2 - Високовольтні лінії електропередач слід зображати подвійною лінією. Відстань між лініями знаку може показувати ширину лінії електропередачі. + Високовольтну лінію електропередачі слід зображати подвійною лінією. Відстань між боковими лініями може показувати ширину лінії електропередачі. Для покращення розбірливості карти лінії можуть бути розірвані. Дуже великі опорні стовпи мають бути представлені у плані знаками 521 (будівля) або 524 (висока вежа). @@ -1728,7 +1730,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm Wall Name of symbol 513 - Стіна + Мур A significant wall of stone, concrete, wood or other materials. Minimum height: 1 m. @@ -1738,17 +1740,17 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm Ruined stone wall Name of symbol 514 - Зруйнована кам’яна стіна + Зруйнований мур A ruined or less distinct wall. Minimum height 0.5 m. Description of symbol 514 - Зруйнована або менш виразна стіна. Мінімальна висота 0,5 м. + Зруйнований або менш виразний мур. Мінімальна висота 0,5 м. Impassable wall Name of symbol 515 - Непрохідна стіна + Непрохідний мур An impassable or uncrossable wall, normally more than 1.5 m high. @@ -1765,7 +1767,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm If the fence forms an enclosed area, tags should be placed inside. Description of symbol 516 Огорожа з дерева чи дроту, висотою менше за 1,5 м. -Якщо огорожа утворює замкнуту область, слід зображати зубці з внутрішньої сторони. +Якщо огорожа утворює замкнуту область, слід зображати вуса з внутрішньої сторони. Ruined fence @@ -1775,7 +1777,7 @@ If the fence forms an enclosed area, tags should be placed inside. A ruined or less distinct fence. If the fence forms an enclosed area, tags should be placed inside. Description of symbol 517 - Зруйнована або менш виразна огорожа. Якщо огорожа утворює замкнуту область, слід зображати зубці з внутрішньої сторони. + Зруйнована або менш виразна огорожа. Якщо огорожа утворює замкнуту область, слід зображати вуса з внутрішньої сторони. Impassable fence @@ -1786,8 +1788,8 @@ If the fence forms an enclosed area, tags should be placed inside. An impassable or uncrossable fence, normally more than 1.5 m high. If the fence forms an enclosed area, tags should be placed inside. Description of symbol 518 - Непрохідна або нездоланна огорожа, як правило, вища за 1,5 м. -Якщо огорожа утворює замкнуту область, слід зображати зубці з внутрішньої сторони. + Непрохідна або нездоланна огорожа, як правило, вище за 1,5 м. +Якщо огорожа утворює замкнуту область, слід зображати вуса з внутрішньої сторони. Crossing point @@ -1798,7 +1800,7 @@ If the fence forms an enclosed area, tags should be placed inside. A way through or over a wall, fence or other linear feature, including a gate or stile. For impassable features, the line shall be broken at the crossing point. For passable features, the line shall not be broken if passing involves a degree of climb. Description of symbol 519 - Прохід крізь або над стіною, огорожею чи іншою лінійною перешкодою, включаючи ворота чи турнікет. + Прохід крізь або над муром, огорожею чи іншою лінійною перешкодою, включаючи ворота чи турнікет. Для непрохідних об’єктів, лінія має бути розірвана в точці проходу. Для прохідних об’єктів, лінія не повинна розриватися, якщо прохід передбачає подолання певної висоти. @@ -1974,7 +1976,7 @@ Passages through buildings must have a minimum width of 0.3 mm (footprint 4.5 m) Small tower Name of symbol 525 - Маленька вишка + Маленька вежа An obvious small tower, platform or seat. @@ -2053,7 +2055,7 @@ Location is at the centre of gravity of the symbol. Magnetic north lines are lines placed on the map pointing to magnetic north, parallel to the sides of the paper. Their spacing on the map shall be 20 mm on the map which represents 300 m on the ground at the scale of 1:15 000. If the map is enlarged to 1:10 000, the spacing of the lines will be 30 mm on the map. North lines shall be broken to improve the legibility of the map, for instance where they would obscure small features. In areas with very few water features, blue lines may be used. Description of symbol 601.1 - Лінії магнітного меридіану, нанесені на карту паралельно до її краю, вказують на магнітну північ. Відстань між лініями має становити 20 мм для масштабу 1:15 000, що відповідає 300 м на місцевості. На карті масштабу 1:10 000 ця відстань має становити 30 мм. Лінії півночі можуть розриватися для покращення розбірливості карти, наприклад, у тих місцях, де вони могли б перекрити невеликі об’єкти. Для карт, що містять незначну кількість об’єктів гідрографії, можна використати сині лінії магнітного меридіану. + Лінії магнітного меридіану, нанесені на карту паралельно до краю аркушу, вказують на магнітну північ. Відстань між лініями має становити 20 мм для масштабу 1:15 000, що відповідає 300 м на місцевості. На карті масштабу 1:10 000 ця відстань має становити 30 мм. Лінії можуть розриватися для покращення розбірливості карти, наприклад, у тих місцях, де вони могли б перекрити невеликі об’єкти. Для карт, що містять незначну кількість об’єктів гідрографії, можна використати сині лінії магнітного меридіану. North lines pattern @@ -2063,7 +2065,7 @@ Location is at the centre of gravity of the symbol. Magnetic north lines are lines placed on the map pointing to magnetic north, parallel to the sides of the paper. Their spacing on the map shall be 20 mm on the map which represents 300 m on the ground at the scale of 1:15 000. If the map is enlarged to 1:10 000, the spacing of the lines will be 30 mm on the map. North lines shall be broken to improve the legibility of the map, for instance where they would obscure small features. In areas with very few water features, blue lines may be used. Description of symbol 601.2 - Лінії магнітного меридіану, нанесені на карту паралельно до її краю, вказують на магнітну північ. Відстань між лініями має становити 20 мм для масштабу 1:15 000, що відповідає 300 м на місцевості. На карті масштабу 1:10 000 ця відстань має становити 30 мм. Лінії півночі можуть розриватися для покращення розбірливості карти, наприклад, у тих місцях, де вони могли б перекрити невеликі об’єкти. Для карт, що містять незначну кількість об’єктів гідрографії, можна використати сині лінії магнітного меридіану. + Лінії магнітного меридіану, нанесені на карту паралельно до краю аркушу, вказують на магнітну північ. Відстань між лініями має становити 20 мм для масштабу 1:15 000, що відповідає 300 м на місцевості. На карті масштабу 1:10 000 ця відстань має становити 30 мм. Лінії можуть розриватися для покращення розбірливості карти, наприклад, у тих місцях, де вони могли б перекрити невеликі об’єкти. Для карт, що містять незначну кількість об’єктів гідрографії, можна використати сині лінії магнітного меридіану. Magnetic north line, blue @@ -2073,7 +2075,7 @@ Location is at the centre of gravity of the symbol. Magnetic north lines are lines placed on the map pointing to magnetic north, parallel to the sides of the paper. Their spacing on the map shall be 20 mm on the map which represents 300 m on the ground at the scale of 1:15 000. If the map is enlarged to 1:10 000, the spacing of the lines will be 30 mm on the map. North lines shall be broken to improve the legibility of the map, for instance where they would obscure small features. In areas with very few water features, blue lines may be used. Description of symbol 601.3 - Лінії магнітного меридіану, нанесені на карту паралельно до її краю, вказують на магнітну північ. Відстань між лініями має становити 20 мм для масштабу 1:15 000, що відповідає 300 м на місцевості. На карті масштабу 1:10 000 ця відстань має становити 30 мм. Лінії півночі можуть розриватися для покращення розбірливості карти, наприклад, у тих місцях, де вони могли б перекрити невеликі об’єкти. Для карт, що містять незначну кількість об’єктів гідрографії, можна використати сині лінії магнітного меридіану. + Лінії магнітного меридіану, нанесені на карту паралельно до краю аркушу, вказують на магнітну північ. Відстань між лініями має становити 20 мм для масштабу 1:15 000, що відповідає 300 м на місцевості. На карті масштабу 1:10 000 ця відстань має становити 30 мм. Лінії можуть розриватися для покращення розбірливості карти, наприклад, у тих місцях, де вони могли б перекрити невеликі об’єкти. Для карт, що містять незначну кількість об’єктів гідрографії, можна використати сині лінії магнітного меридіану. North lines pattern, blue @@ -2083,7 +2085,7 @@ Location is at the centre of gravity of the symbol. Magnetic north lines are lines placed on the map pointing to magnetic north, parallel to the sides of the paper. Their spacing on the map shall be 20 mm on the map which represents 300 m on the ground at the scale of 1:15 000. If the map is enlarged to 1:10 000, the spacing of the lines will be 30 mm on the map. North lines shall be broken to improve the legibility of the map, for instance where they would obscure small features. In areas with very few water features, blue lines may be used. Description of symbol 601.4 - Лінії магнітного меридіану, нанесені на карту паралельно до її краю, вказують на магнітну північ. Відстань між лініями має становити 20 мм для масштабу 1:15 000, що відповідає 300 м на місцевості. На карті масштабу 1:10 000 ця відстань має становити 30 мм. Лінії півночі можуть розриватися для покращення розбірливості карти, наприклад, у тих місцях, де вони могли б перекрити невеликі об’єкти. Для карт, що містять незначну кількість об’єктів гідрографії, можна використати сині лінії магнітного меридіану. + Лінії магнітного меридіану, нанесені на карту паралельно до краю аркушу, вказують на магнітну північ. Відстань між лініями має становити 20 мм для масштабу 1:15 000, що відповідає 300 м на місцевості. На карті масштабу 1:10 000 ця відстань має становити 30 мм. Лінії можуть розриватися для покращення розбірливості карти, наприклад, у тих місцях, де вони могли б перекрити невеликі об’єкти. Для карт, що містять незначну кількість об’єктів гідрографії, можна використати сині лінії магнітного меридіану. Registration mark @@ -2123,7 +2125,7 @@ Location is at the centre of gravity of the symbol. The place where the orienteering starts. The centre of the triangle shows the precise position where the orienteering course starts. The start must be on a clearly identifiable point on the map. The triangle points in the direction of the first control. Description of symbol 701 - Місце, з якого починається орієнтування. Центр трикутника показує точне розміщення початку дистанції з орієнтування. Старт має розміщуватись у точці, що чітко ідентифікується на карті. Трикутник вказує напрям до першого контрольного пункту. + Місце, з якого починається орієнтування. Центр трикутника показує точне розміщення початку дистанції з орієнтування. Старт має розміщуватись у точці, що чітко визначається на карті. Трикутник вказує напрям до першого контрольного пункту. Map issue point @@ -2144,8 +2146,8 @@ Location is at the centre of gravity of the symbol. For point features, the centre of the circle shall be the centre of the symbol. For line and area features, the centre of the circle shows the precise position of the control marker. Controls shall only be placed on points that are clearly identifiable on the map. Sections of the circle should be omitted to leave important detail showing. Description of symbol 703 - Для точкових об’єктів, центр кола має співпадати з центром знаку об’єкту. Для лінійних і площинних об’єктів, центр кола має показувати точне положення контрольного пункту. Контрольні пункти дозволяється розміщувати лише у місцях, які чітко ідентифікуються на карті. -Фрагменти кола можуть бути вирізані, для забезпечення видимості інших важливих деталей ситуації. + Для точкових об’єктів, центр кола має співпадати з центром знаку об’єкту. Для лінійних і площинних об’єктів, центр кола має показувати точне положення контрольного пункту. Контрольні пункти дозволяється розміщувати лише у місцях, які чітко визначаються на карті. +Фрагменти кола можуть бути вирізані, для забезпечення видимості інших важливих деталей карти. Control number @@ -2165,7 +2167,7 @@ Sections of the circle should be omitted to leave important detail showing. Where controls are to be visited in order, the sequence is shown using straight lines from the start to the first control and then from each control to the next one. Sections of lines should be omitted to leave important detail showing. The line should be drawn via mandatory crossing points. There should be gaps between the line and the control circle in order to increase the readability of the underlying detail close to the control. Description of symbol 705 - Коли контрольні пункти мають бути відмічені у певному порядку, черговість показується прямими лініями, що з’єднують старт із першим контрольним пунктом і, потім, кожен контрольний пункт з наступним. Фрагменти ліній можуть бути вирізані, для забезпечення видимості інших важливих деталей ситуації. Лінію слід проводити через обов’язкові для проходження пункти. Дозволяється залишати проміжки між кінцем лінії та колом контрольного пункту, для полегшення сприйняття основних деталей ситуації неподалік від контрольного пункту. + Коли контрольні пункти мають бути відмічені у певному порядку, черговість показується прямими лініями, що з’єднують старт із першим контрольним пунктом і, потім, кожен контрольний пункт з наступним. Фрагменти ліній можуть бути вирізані, щоб залишити видимими важливі деталі ситуації. Лінію слід проводити через обов’язкові для проходження пункти. Дозволяється залишати проміжки між кінцем лінії та колом контрольного пункту, для полегшення сприйняття основних деталей ситуації неподалік від контрольного пункту. Finish @@ -2185,7 +2187,7 @@ Sections of the circle should be omitted to leave important detail showing. A marked route that is a part of the course. It is mandatory to follow the marked route. Description of symbol 707 - Розмічений відрізок, що є частиною дистанції. Проходження розміченого відрізку є обов’язковим. + Розмічена ділянка, що є частиною дистанції. Проходження розміченого відрізку є обов’язковим. Out-of-bounds boundary @@ -2483,8 +2485,8 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming A steep earth bank is an abrupt change in ground level which can be clearly distinguished from its surroundings, e.g. gravel or sand pits, road and railway cuttings or embankments. The tags should show the full extent of the slope, but may be omitted if two banks are close together. Impassable banks should be drawn with symbol 201 (impassable cliff). The line width of very high earth banks may be 0.25 mm. Description of symbol 106 - Крутий земляний обрив - різка зміна рівня землі, яку можна чітко відрізнити від навколишньої місцевості, наприклад, гравійні або піщані ями, залізничні насипи або набережні. Вуси показують площу обриву в плані, але можуть бути опущені, якщо брівки двох обривів перебувають близько друг до друга. Небезпечні урвища що показують знаком 201 (непрохідна скельна стіна). Товщина лінії бровки дуже високих земляних обривів може бути збільшена до 0,25 мм. - + Крутий земляний схил, який чітко відрізняється від інших об’єктів, наприклад, гравійна або піщана яма, насип шосе чи залізниці, дамба. Площа, яка вкрита штрихами, має відповідати проекції обриву в плані. Штрихи можуть бути опущені, якщо бровки урвища близько розташовані одна до одної. Обриви, що не долаються, повинні зображуватися знаком 201 (непрохідна скельна стіна). Для дуже високих обривів товщина бровки збільшується до 0,25 мм. + Earth bank, minimum size Name of symbol 106.0.1 @@ -2493,8 +2495,8 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming A steep earth bank is an abrupt change in ground level which can be clearly distinguished from its surroundings, e.g. gravel or sand pits, road and railway cuttings or embankments. The tags should show the full extent of the slope, but may be omitted if two banks are close together. Impassable banks should be drawn with symbol 201 (impassable cliff). The line width of very high earth banks may be 0.25 mm. Description of symbol 106.0.1 - Крутий земляний обрив - різка зміна рівня землі, яку можна чітко відрізнити від навколишньої місцевості, наприклад, гравійні або піщані ями, залізничні насипи або набережні. Вуси показують площу обриву в плані, але можуть бути опущені, якщо брівки двох обривів перебувають близько друг до друга. Небезпечні урвища що показують знаком 201 (непрохідна скельна стіна). Товщина лінії бровки дуже високих земляних обривів може бути збільшена до 0,25 мм. - + Крутий земляний схил, який чітко відрізняється від інших об’єктів, наприклад, гравійна або піщана яма, насип шосе чи залізниці, дамба. Площа, яка вкрита штрихами, має відповідати проекції обриву в плані. Штрихи можуть бути опущені, якщо бровки урвища близько розташовані одна до одної. Обриви, що не долаються, повинні зображуватися знаком 201 (непрохідна скельна стіна). Для дуже високих обривів товщина бровки збільшується до 0,25 мм. + Earth bank, very high Name of symbol 106.1 @@ -2518,43 +2520,43 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Earth bank, tag line Name of symbol 106.2 - Земляний обрив (урвище), вуси - + Земляний обрив (урвище), вуса + Use this symbol to display the full extent of wide earth banks. Description of symbol 106.2 - Використовується для відображення вздовж усього широкого обриву. - + Використовуйте цей знак щоб показати форму обриву в плані. + Earth wall Name of symbol 107 - Земляний вал + Земляний вал Distinct earth wall. Minimum height is 1 m. Description of symbol 107 - Помітна земляна стіна. Мінімальна висота - 1 м. - + Чіткий земляний вал чи дамба. Мінімальна висота - 1 м. + Small earth wall Name of symbol 108 - Small earth wall - + Маленький земляний вал + A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. Description of symbol 108 - A small or partly ruined earth wall shall be shown with a dashed line. Minimum height is 0.5 m. - + Частково зруйнований земляний вал або нечітко видимий земляний насип можуть бути зображені переривчатою лінією. Мінімальна висота - 0,5 м. + Erosion gully Name of symbol 109 - Вимоїна + Вимоїна An erosion gully or trench which is too small to be shown by symbol 106 is shown by a single line. The line width reflects the size of the gully. Minimum depth 1 m. The end of the line is pointed. Description of symbol 109 - Вимоїна або канава. Мінімальна глибина 0,5 м. - + Ерозійний рів або вимоїна, яка надто мала зображення знаком 106, показується однією лінією. Ширина лінії відображає розмір вимоїни. Мінімальна глибина 1 м. Кінець лінії загострений. + Small erosion gully Name of symbol 110 @@ -2583,268 +2585,268 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming A small obvious elongated knoll which cannot be drawn to scale with a contour (length less than 12 m and width less than 4 m). The height of the knoll should be a minimum of 1 m from the surrounding ground. Knolls larger than this must be shown by contours. The symbol may not be drawn in free form or such that two elongated knoll symbols overlap. The symbol may not touch a contour line. Description of symbol 113 - A small obvious elongated knoll which cannot be drawn to scale with a contour (length less than 12 m and width less than 4 m). The height of the knoll should be a minimum of 1 m from the surrounding ground. Knolls larger than this must be shown by contours. The symbol may not be drawn in free form or such that two elongated knoll symbols overlap. The symbol may not touch a contour line. - + Малий горбик подовженої форми, який неможливо зобразити у масштабі горизонталлю (горби, розміри яких більші, ніж 12х4 м мають бути зображені горизонталями). Висота горба повинна бути мінімум 1м над навколишньою поверхнею. Знаки, що знаходяться поруч, не повинні перекривати один одного та перетинатися горизонталями. + Small depression Name of symbol 115 - Small depression - + Мікрояма + Small shallow natural depressions and hollows (minimum diameter 2 m) which cannot be shown to scale by contours are represented by a semicircle. Minimum depth from the surrounding ground should be 1 m. Location is the centre of gravity of the symbol, which is orientated to north. Symbol 116 is used for man-made pits. Description of symbol 115 - Small shallow natural depressions and hollows (minimum diameter 2 m) which cannot be shown to scale by contours are represented by a semicircle. Minimum depth from the surrounding ground should be 1 m. Location is the centre of gravity of the symbol, which is orientated to north. Symbol 116 is used for man-made pits. - + Дрібна природного походження западина (мінімальний діаметр 2 м), яка не може бути показана в масштабі горизонталями. Мінімальна глибина 1м. Положенню на місцевості відповідає центр ваги знаку, зорієнтованого на північ. Штучні ями позначаються знаком 116. + Pit Name of symbol 116 - Pit - + Воронка + Pits and holes with distinct steep sides which cannot be shown to scale by symbol 106 (minimum diameter 2 m). Minimum depth from the surrounding ground should be 1 m. Location is the centre of gravity of the symbol which is orientated to north. Description of symbol 116 - Pits and holes with distinct steep sides which cannot be shown to scale by symbol 106 (minimum diameter 2 m). Minimum depth from the surrounding ground should be 1 m. Location is the centre of gravity of the symbol which is orientated to north. - + Ями штучного походження з чіткими крутими краями, які неможливо відобразити в масштабі знаком 106 (мінімальний діаметр 2 м). Мінімальна глибина 1 м. Положенню на місцевості відповідає центр ваги знаку, зорієнтованого на північ. + Broken ground, small Name of symbol 117.1 - Broken ground, small - + Купиняста поверхня, дрібна точка + An area of pits or knolls which is too intricate to be shown in detail. The density of randomly placed dots may vary according to the detail on the ground. Description of symbol 117.1 - An area of pits or knolls which is too intricate to be shown in detail. The density of randomly placed dots may vary according to the detail on the ground. - + Ділянка ям або горбів, які надто заплутані, щоб бути показані детально. Густина точок може змінюватися в залежності від щільності об’єктів на поверхні. + Broken ground, big Name of symbol 117.2 - Broken ground, big - + Купиняста поверхня, крупніша точка + The size of the dots may vary. Description of symbol 117.2 - The size of the dots may vary. - + Розмір точок може змінюватись. + Special land form feature Name of symbol 118 - Special land form feature - + Особливий об’єкт рельєфу + This symbol can be used for a special small land form feature. The definition of the symbol must be given in the map legend. Description of symbol 118 - This symbol can be used for a special small land form feature. The definition of the symbol must be given in the map legend. - + Цей знак може використовуватися для особливо малого об’єкту рельєфу (наприклад, корч). Значення знаку слід пояснити в зарамковому оформленні карти. + Impassable cliff Name of symbol 201 - Непрохідна скельна стіна + Непрохідна скельна стіна An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 - Непрохідна скеля, кар'єр або земляний обрив (УЗ 106), показується з лінією, товщиною 0,35 мм і вусами, спрямованими вниз по схилу та відповідно до площі стіни в плані. Оскільки для вертикальної скелі часто бувають випадки, коли немає місця для вусів, вони можуть бути опущені. При цьому, якщо недостатньо місця, наприклад, у проході між скелями, прохід повинен бути розсунутий принаймні до ширини в 0,3 мм. Вуси можуть простиратися на об'єкти під скелею. Якщо скеля входить у воду, і неможливо пройти під нею по краю води, то берегова лінія опускається або вуси повинні ясно простиратися через берегову - + Непрохідна скельна стіна, кар’єр або небезпечне земляне урвище, (дивись знак 106) зображуються лінією товщиною 0,35 мм та штрихами, які спрямовані в напрямку схилу і відображають проекцію в плані від бровки до підошви. Штрихи можуть бути опущені, якщо місця недостатньо, наприклад, у вузькому проході між скелями (прохід має бути накреслений шириною не менше, ніж 0,3мм). Штрихи можуть простягатися на площу знака, який зображує деталі безпосередньо під скельною стіною. Коли скельна стіна входить у воду і неможливо пробігти під обривом уздовж лінії берегу, останню не малюють або ж штрихи повинні ясно простягатися через лінію. + Impassable cliff, minimum size Name of symbol 201.0.1 - Непрохідна скельна стіна, мінімальний розмір + Непрохідна скельна стіна, мінімальний розмір An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 - Непрохідна скеля, кар'єр або земляний обрив (УЗ 106), показується з лінією, товщиною 0,35 мм і вусами, спрямованими вниз по схилу та відповідно до площі стіни в плані. Оскільки для вертикальної скелі часто бувають випадки, коли немає місця для вусів, вони можуть бути опущені. При цьому, якщо недостатньо місця, наприклад, у проході між скелями, прохід повинен бути розсунутий принаймні до ширини в 0,3 мм. Вуси можуть простиратися на об'єкти під скелею. Якщо скеля входить у воду, і неможливо пройти під нею по краю води, то берегова лінія опускається або вуси повинні ясно простиратися через берегову - + Непрохідна скельна стіна, кар’єр або небезпечне земляне урвище, (дивись знак 106) зображуються лінією товщиною 0,35 мм та штрихами, які спрямовані в напрямку схилу і відображають проекцію в плані від бровки до підошви. Штрихи можуть бути опущені, якщо місця недостатньо, наприклад, у вузькому проході між скелями (прохід має бути накреслений шириною не менше, ніж 0,3мм). Штрихи можуть простягатися на площу знака, який зображує деталі безпосередньо під скельною стіною. Коли скельна стіна входить у воду і неможливо пробігти під обривом уздовж лінії берегу, останню не малюють або ж штрихи повинні ясно простягатися через лінію. + Impassable cliff, no tags Name of symbol 201.1 - Непрохідна скельна стіна, без вусів + Непрохідна скельна стіна, без вусів For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). Description of symbol 201.1 - Оскільки для вертикальної скелі часто бувають випадки, коли немає місця для вусів, вони можуть бути опущені. При цьому, якщо недостатньо місця, наприклад, у проході між скелями, прохід повинен бути розсунутий принаймні до ширини в 0,3 мм. - + Штрихи можуть бути опущені, якщо місця недостатньо, наприклад, у вузькому проході між скелями (прохід має бути накреслений шириною не менше, ніж 0,3 мм). + Impassable cliff, tag line Name of symbol 201.2 - Непрохідна скельна стіна, вуси - + Непрохідна скельна стіна, вуса + Use this symbol to display the full extent of a wide cliff. Description of symbol 201.2 - Використовується для відображення вздовж усієї широкого скельної стіни. - + Використовуйте цей знак щоб показати форму скелі в плані. + Rock pillars/cliffs Name of symbol 202 - Гігантські валуни або стовпи - + Скельний стовп/останець + In the case of unusual features such as rock pillars or massive cliffs or gigantic boulders, the rocks shall be shown in plan shape without tags. Description of symbol 202 - Незвичні орієнтири, такі, як скельні стовпи, або масивні обриви, або гігантські валуни, показують у плановій формі без вусів. - + У випадках незвичайних орієнтирів, таких як скельні стовпи, чи масивні скельні обриви, чи гігантські камені, скелі можуть бути зображені у плановій формі без штрихів. + Passable rock face Name of symbol 203 - Passable rock face - + Прохідна скельна стіна + A small vertical rock face (minimum height 1 m) may be shown without tags. If the direction of fall of the rock face is not apparent from the contours or to improve legibility, short tags should be drawn in the direction of the fall. For passable rock faces shown without tags the ends of the line may be rounded to improve legibility. Description of symbol 203 - A small vertical rock face (minimum height 1 m) may be shown without tags. If the direction of fall of the rock face is not apparent from the contours or to improve legibility, short tags should be drawn in the direction of the fall. For passable rock faces shown without tags the ends of the line may be rounded to improve legibility. - + Мала вертикальна скельна стіна (мінімальна висота 1м) зображується без штрихів. Якщо напрям схилу обриву незрозумілий із горизонталей, то короткі штрихи повинні бути накреслені в напрямку схилу. Для скель, що зображуються без штрихів, кінці лінії дозволяється заокруглювати для покращення розбірливості. + Passable rock face, minimum size Name of symbol 203.0.1 - Passable rock face, minimum size - + Прохідна скельна стіна, мінімальний розмір + A small vertical rock face (minimum height 1 m) may be shown without tags. If the direction of fall of the rock face is not apparent from the contours or to improve legibility, short tags should be drawn in the direction of the fall. For passable rock faces shown without tags the ends of the line may be rounded to improve legibility. Description of symbol 203.0.1 - A small vertical rock face (minimum height 1 m) may be shown without tags. If the direction of fall of the rock face is not apparent from the contours or to improve legibility, short tags should be drawn in the direction of the fall. For passable rock faces shown without tags the ends of the line may be rounded to improve legibility. - + Мала вертикальна скельна стіна (мінімальна висота 1м) зображується без штрихів. Якщо напрям схилу обриву незрозумілий із горизонталей, то короткі штрихи повинні бути накреслені в напрямку схилу. Для скель, що зображуються без штрихів, кінці лінії дозволяється заокруглювати для покращення розбірливості. + Passable rock face, no tags Name of symbol 203.1 - Passable rock face, no tags - + Прохідна скельна стіна, без штрихів + Should be used if the direction of fall of the rock face is apparent from the contours and the legibility is good. Description of symbol 203.1 - Should be used if the direction of fall of the rock face is apparent from the contours and the legibility is good. - + Застосовується якщо напрямок схилу зрозумілий по горизонталям і забезпечується добра розбірливість. + Passable rock face, no tags, minimum size Name of symbol 203.1.1 - Passable rock face, no tags, minimum size - + Прохідна скельна стіна, без штрихів, мінімальний розмір + Should be used if the direction of fall of the rock face is apparent from the contours and the legibility is good. Description of symbol 203.1.1 - Should be used if the direction of fall of the rock face is apparent from the contours and the legibility is good. - + Застосовується якщо напрямок схилу зрозумілий по горизонталям і забезпечується добра розбірливість. + Passable rock face, no tags, rounded Name of symbol 203.2 - Passable rock face, no tags, rounded - + Прохідна скельна стіна, без штрихів, заокруглена + For passable rock faces shown without tags the ends of the line may be rounded to improve legibility. Description of symbol 203.2 - For passable rock faces shown without tags the ends of the line may be rounded to improve legibility. - + Для прохідних скель, що зображуються без штрихів, дозволяється заокруглювати кінці лінії щоб покращити розбірливість. + Passable rock face, no tags, rounded, minimum size Name of symbol 203.2.1 - Passable rock face, no tags, rounded, minimum size - + Прохідна скельна стіна, без штрихів, заокруглена, мінімальний розмір + For passable rock faces shown without tags the ends of the line may be rounded to improve legibility. Description of symbol 203.2.1 - For passable rock faces shown without tags the ends of the line may be rounded to improve legibility. - + Для прохідних скель, що зображуються без штрихів, дозволяється заокруглювати кінці лінії щоб покращити розбірливість. + Rocky pit Name of symbol 204 - Rocky pit - + Скельна яма + Rocky pits, holes or mineshafts which may constitute a danger to the runner. Location is the centre of gravity of the symbol, which is orientated to north. Description of symbol 204 - Rocky pits, holes or mineshafts which may constitute a danger to the runner. Location is the centre of gravity of the symbol, which is orientated to north. - + Скельний отвір, яма, шахта, рудник, які є небезпечними для спортсмена. Положенню на місцевості відповідає центр ваги знаку, зорієнтованого на північ. + Cave Name of symbol 205 - Cave - + Печера + A cave is represented by the same symbol as a rocky pit. In this case the symbol should be orientated to point up the slope as indicated opposite. The centre of gravity of the symbol marks the opening. Description of symbol 205 - A cave is represented by the same symbol as a rocky pit. In this case the symbol should be orientated to point up the slope as indicated opposite. The centre of gravity of the symbol marks the opening. - + Печера зображується тим же знаком, що і скельна яма. На відміну від скельної ями знак печери повинен бути зорієнтований по схилу. Центр ваги знаку показує вхід. + Boulder Name of symbol 206 - Камінь + Камінь A small distinct boulder (minimum height 1 m). Every boulder marked on the map should be immediately identifiable on the ground. To be able to show the distinction between boulders with significant difference in size it is permitted to enlarge this symbol by 20% (diameter 0.5 mm). Description of symbol 206 - Чіткий камінь (мінімальна висота 1 м). Кожний камінь, позначений на карті повинен бути негайно ідентифікований на місцевості. Цей знак має використовуватись тільки для каменів. Більший діаметр (0,5 мм) застосовується для видатних (великих) каменів серед маси інших. - + Маленький виразний камінь (мінімальна висота - 1 м). Кожен камінь, який зображений на карті, має бути однозначно ідентифікований на місцевості. З метою кращого зображення різниці у розмірах між валунами, допустимо збільшувати розмір знаку на 20% (діаметр 0,5 мм). + Boulder, enlarged Name of symbol 206.1 - Камінь, великий - + Камінь, збільшений + To be able to show the distinction between boulders with significant difference in size it is permitted to enlarge this symbol by 20% (diameter 0.5 mm). Description of symbol 206.1 - Більший діаметр (0,5 мм) застосовується для видатних (великих) каменів серед маси інших. - + З метою кращого зображення різниці у розмірах між валунами, допустимо збільшувати розмір знаку на 20% (діаметр 0,5 мм). + Large boulder Name of symbol 207 - Large boulder - + Великий камінь + A particularly large and distinct boulder. For gigantic boulders symbol 202 should be used. Description of symbol 207 - A particularly large and distinct boulder. For gigantic boulders symbol 202 should be used. - + Особливо великий і виразний камінь. Для величезних валунів використовується знак 202. + Boulder field Name of symbol 208 - Boulder field - + Кам’яний розсип + An area which is covered with so many blocks of stone that they cannot be marked individually is shown with randomly orientated solid triangles with sides of ratio 8:6:5. A minimum of two triangles should be used. The going is indicated by the density of the triangles. To be able to show the distinction between boulder fields with a significant difference in boulder size it is permitted to enlarge the triangles by 20%. Description of symbol 208 - An area which is covered with so many blocks of stone that they cannot be marked individually is shown with randomly orientated solid triangles with sides of ratio 8:6:5. A minimum of two triangles should be used. The going is indicated by the density of the triangles. To be able to show the distinction between boulder fields with a significant difference in boulder size it is permitted to enlarge the triangles by 20%. - + Площа, яка вкрита такою великою кількістю каменів, що вони не можуть бути показані окремо, зображується суцільним масивом нерівносторонніх трикутників. Мінімально слід використати 2 трикутники. Прохідність показується щільністю трикутників. Щоб краще відобразити значну різницю у розмірах між каменями, допустимо збільшити розмір знаку на 20%. + Boulder field, large Name of symbol 208.1 - Boulder field, large - + Кам’яний розсип, великий + To be able to show the distinction between boulder fields with a significant difference in boulder size it is permitted to enlarge the triangles by 20%. Description of symbol 208.1 - To be able to show the distinction between boulder fields with a significant difference in boulder size it is permitted to enlarge the triangles by 20%. - + Щоб краще відобразити значну різницю у розмірах між каменями, допустимо збільшити розмір знаку на 20%. + Boulder cluster Name of symbol 209 - Boulder cluster - + Група валунів (каменів) + A small distinct group of boulders so closely clustered together that they cannot be marked individually. The symbol is an equilateral triangle orientated to the north. To be able to show the distinction between boulder clusters with significant difference in size it is permitted to enlarge this symbol by 25% (1.0 mm). Description of symbol 209 - A small distinct group of boulders so closely clustered together that they cannot be marked individually. The symbol is an equilateral triangle orientated to the north. To be able to show the distinction between boulder clusters with significant difference in size it is permitted to enlarge this symbol by 25% (1.0 mm). - + Маленька виразна група валунів, які так близько розміщені, що не можуть бути показані окремо. Знаком є рівносторонній трикутник, зорієнтований вершиною на північ. Щоб краще відобразити значну різницю у розмірах між групами валунів, допустимо збільшити розмір знаку на 25% (1 мм). + Boulder cluster, large Name of symbol 209.1 - Boulder cluster, large - + Група каменів, велика + To be able to show the distinction between boulder clusters with significant difference in size it is permitted to enlarge this symbol by 25% (1.0 mm). Description of symbol 209.1 - To be able to show the distinction between boulder clusters with significant difference in size it is permitted to enlarge this symbol by 25% (1.0 mm). - + Щоб краще відобразити значну різницю у розмірах між групами валунів, допустимо збільшити розмір знаку на 25% (1 мм). + Stony ground, small Name of symbol 210 - - + Кам’янистий ґрунт + Stony or rocky ground which affects going should be shown on the map. The dots should be randomly distributed with density according to the amount of rock. A minimum of three dots should be used. Description of symbol 210 - Площа, що вкрита такою великою кількістю каменів, що вони не можуть бути показані кожний окремо. Кам'янистий або скелястий ґрунт, що впливає на рух, також показують на карті. Крапки повинні бути хаотично розподілені із щільністю, відповідній до кількості каменів. - + Кам’янистий чи скельний ґрунт, що впливає на прохідність, повинен бути показаний на карті. Крапки безладно розподіляються із щільністю, яка відповідає кількості каміння. Мінімальна кількість крапок – 3. + Stony ground Name of symbol 210.1 @@ -2853,726 +2855,726 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Stony or rocky ground which affects going should be shown on the map. The dots should be randomly distributed with density according to the amount of rock. A minimum of three dots should be used. Description of symbol 210.1 - Площа, що вкрита такою великою кількістю каменів, що вони не можуть бути показані кожний окремо. Кам'янистий або скелястий ґрунт, що впливає на рух, також показують на карті. Крапки повинні бути хаотично розподілені із щільністю, відповідній до кількості каменів. - + Кам’янистий чи скельний ґрунт, що впливає на прохідність, повинен бути показаний на карті. Крапки безладно розподіляються із щільністю, яка відповідає кількості каміння. Мінімальна кількість крапок – 3. + Open sandy ground Name of symbol 211 - Відкритий піщаний ґрунт - + Відкритий пісок + An area of soft sandy ground or gravel with no vegetation and where running is slow. Where an area of sandy ground is open but running is good, it is shown as open land (401/402). Description of symbol 211 - Площа м'якого піщаного ґрунту або гравію без рослинності, де рух важкий (або уповільнений). Там, де відкритий піщаний ґрунт не затрудняє рух, його показують як відкритий простір (УЗ 401-402). - + Площа м’якого піщаного грунту чи гравію без рослинності, де важко бігти. Ділянки піщаного грунту з доброю прохідністю зображуються як відкритий простір (знаки 401, 402). + Bare rock Name of symbol 212 - Гола скеля - + Голі скелі + A runnable area of rock without earth or vegetation is shown as bare rock. An area of rock covered with grass, moss or other low vegetation is shown as open land (401/402). Description of symbol 212 - Прохідна площа скелі без землі або рослинності показується як гола скеля. Якщо скеля вкрита травою, мохом або іншою низькою рослинністю, її показують знаками відкритого простору (УЗ 401-402). - + Рівна площина без землі чи рослинності зображується як голі скелі. Площа, яка покрита травою, мохом або іншою низькою рослинністю, зображується знаками 401, 402. + Lake Name of symbol 301 - Озеро + Озеро Large areas of water are shown with dot screen. Small areas of water should be shown with full colour. A black bank line indicates that the feature cannot be crossed. Description of symbol 301 - - + Велика площа води показується точковою сіткою. Маленькі площі води показуються суцільним кольором. Чорна берегова лінія показує непрохідність орієнтира. + Lake, bank line Name of symbol 301.1 - Озеро, берегова лінія + Озеро, берегова лінія A black bank line indicates that the feature cannot be crossed. Description of symbol 301.1 - Для малих площ води та для берегової лінії слід застосовувати суцільний колір. - + Чорна берегова лінія вказує на непрохідність об'єкта. + Lake, with bank line Name of symbol 301.2 - Озеро, з береговою лінією + Озеро, з береговою лінією Pond Name of symbol 302 - Ставок + Ставок Where the lake or pond is smaller than 1 mm² on the printed map, the bank line is omitted. Description of symbol 302 - - + Коли озеро чи ставок займає на карті площу менш ніж 1 мм² в масштабі видання, берегова лінія опускається. + Waterhole Name of symbol 303 - Waterhole - + Калюжа, яма з водою + A water-filled pit or an area of water which is too small to be shown to scale. Location is the centre of gravity of the symbol, which is orientated to north. Description of symbol 303 - A water-filled pit or an area of water which is too small to be shown to scale. Location is the centre of gravity of the symbol, which is orientated to north. - + Калюжа чи площа води, що надто мала, щоб бути показаною в масштабі. Положенню на місцевості відповідає центр ваги знака, зорієнтованого на північ. + Crossable watercourse Name of symbol 305 - Струмок, що долається + Струмок, що долається A crossable watercourse, minimum 2 m wide. The width of watercourses over 5 m wide should be shown to scale. Description of symbol 305 - Струмок, мінімум 2 м завширшки. Струмки ширше 5 м слід зображувати в масштабі. - + Прохідний струмок мінімум 2 м завширшки. Ширина потоку більше 5 м має бути зображена в масштабі. + Crossable small watercourse Name of symbol 306 - Малий струмок, що долається + Малий струмок, що долається A crossable watercourse (including a major drainage ditch) less than 2 m wide. For better legibility a ditch in a marsh should be drawn as a crossable watercourse (305). Description of symbol 306 - Струмок (дренажна канава включно) менше 2 м завширшки. Для кращої чіткості канава в болоті повинна бути показана як струмок, що долається (УЗ 305). - + Струмок (дренажна канава включно) менше 2 м завширшки. Для кращої чіткості канава в болоті повинна бути показана як струмок, що долається (знак 305). + Minor water channel Name of symbol 307 - Незначна водна канава + Незначна водна канава A natural or man-made minor water channel which may contain water only intermittently. Description of symbol 307 - Природний або штучний незначний водний канал, що містить воду тільки періодично і місцями. + Природний або штучний незначний водний канал, що містить воду тільки періодично і місцями. Narrow marsh Name of symbol 308 - Narrow marsh - + Вузьке болото + A marsh or trickle of water which is too narrow to be shown with symbol 310 (less than ca. 5 m wide). Description of symbol 308 - A marsh or trickle of water which is too narrow to be shown with symbol 310 (less than ca. 5 m wide). - + Болото чи вода, що точиться, яке надто вузьке, щоб бути показаним знаком 310 (менше 5 м завширшки). + Uncrossable marsh Name of symbol 309 - Непрохідне болото + Непрохідне болото A marsh which is uncrossable or dangerous for the runner. A black line surrounds the symbol. Description of symbol 309 - - + Болото, що непрохідне або небезпечне для спортсмена. Знак оточує чорна лінія. + Uncrossable marsh, border line Name of symbol 309.1 - Непрохідне болото, лінія межі + Непрохідне болото, лінія межі A black line surrounds the symbol. Description of symbol 309.1 - - + Чорна лінія оточує знак непрохідного болота. + Uncrossable marsh, with border line Name of symbol 309.2 - Непрохідне болото, з лінією межі + Непрохідне болото, з лінією межі Marsh Name of symbol 310 - Болото + Болото A crossable marsh, usually with a distinct edge. The symbol should be combined with vegetation symbols to show runnability and openness. Where a small marsh area should be combined with either 403/404 it is permitted to use 401/402 to improve legibility. Description of symbol 310 - Болото, що долається, зазвичай з чітким краєм. Знак має бути об'єднаний з УЗ рослинності, щоб показати прохідність або відкритість. Якщо болото малої площі комбінується з УЗ 403 чи 404, дозволяється використовувати замість них відповідно УЗ 401 чи 402, для підвищення розбірливості карти. - + Болото, що долається, зазвичай з чітким краєм. Може поєднуватись зі знаками рослинності, щоб показати прохідність або відкритість. Якщо болото малої площі, з метою підвищення розбірливості, замість комбінування зі знаками 403/404, дозволяється застосовувати 401/402, відповідно. + Marsh, minimum size Name of symbol 310.1 - Болото, мінімальний розмір + Болото, мінімальний розмір Indistinct marsh Name of symbol 311 - Indistinct marsh - + Нечітке болото + An indistinct or seasonal marsh or area of gradual transition from marsh to firm ground, which is crossable. The edge is generally indistinct and the vegetation similar to that of the surrounding ground. The symbol should be combined with vegetation symbols to show runnability and openness. Description of symbol 311 - An indistinct or seasonal marsh or area of gradual transition from marsh to firm ground, which is crossable. The edge is generally indistinct and the vegetation similar to that of the surrounding ground. The symbol should be combined with vegetation symbols to show runnability and openness. - + Невиразне або сезонне болото чи площа поступового переходу від болота до твердої землі, яка є прохідною. Кромка, звичайно, нечітка і рослинність однакова з навколишньою землею. Може поєднуватися зі знаками рослинності для показу прохідності та відкритості. + Indistinct marsh, minimum size Name of symbol 311.1 - Indistinct marsh, minimum size - + Нечітке болото, мінімальний розмір + Well Name of symbol 312 - Well - + Криниця + Wells and captive springs, which are clearly visible on the ground. Description of symbol 312 - Wells and captive springs, which are clearly visible on the ground. - + Колодязі та обладнані джерела, що чітко видимі на місцевості. + Spring Name of symbol 313 - Spring - + Джерело + The source of a stream with a distinct outflow. The symbol is orientated to open downstream. Description of symbol 313 - The source of a stream with a distinct outflow. The symbol is orientated to open downstream. - + Джерело з чітким витоком. Знак має бути зорієнтований в напрямку стоку. + Special water feature Name of symbol 314 - Спеціальний водний об'єкт - + Особливий об’єкт гідрографії + A special small water feature. The definition of the symbol must always be given in the map legend. Description of symbol 314 - Спеціальний малий водний об'єкт. Зміст знака необхідно завжди наводити в позарамковому оформленні карти. - + Спеціальні маленькі водні об’єкти Значення знаку завжди слід надавати в зарамковому оформленні карти. + Open land Name of symbol 401 - Відкритий простір + Відкритий простір Cultivated land, fields, meadows, grassland, etc. without trees, offering easy running. If yellow coloured areas becomes dominant, a screen (75%) instead of full yellow may be used. Description of symbol 401 - Земля, яка обробляється, лани, луки, пасовиська і т.д. без дерев, що легко перетинаються бігом. Якщо знак домінує на карті, для нього використовують жовту 75% точкову сітку. - + Земля, яка оброблюється, поля, луки, пасовиська та ін. без дерев, що легко пробігається. Якщо знак домінує на карті, може бути використана 75% точкова сітка. + Open land with scattered trees Name of symbol 402 - Напіввідкритий простір з луговою рослинністю - + Напіввідкритий простір + Meadows with scattered trees or bushes, with grass or similar ground cover offering easy running. Areas smaller than 10 mm at the maps scale are shown as open land (401). Individual trees may be added (418, 419, 420). If yellow coloured areas becomes dominant, a screen (75%) instead of full yellow may be used. Description of symbol 402 - Луки з окремими деревами або кущами, кожне з яких неможливо показати на карті, з травою або звичайною землею, що легко долаються. Площі менші за 10 мм 2 показують знаком 401. Якщо знак домінує на карті, то для жовтих крапок використовують 75% жовтий колір. Дозволяється додавати окремі видатні дерева (УЗ 418-419). - + Луки з окремими деревами або кущами, кожне з яких неможливо показати на карті, з травою або звичайною землею, що легко долаються. Площі менші за 10 мм показують знаком 401. Дозволяється показувати окремі дерева (знаки 418, 419, 420). Якщо жовтий колір домінує на карті, застосовують сітку (75%) замість повного жовтого кольору. + Rough open land Name of symbol 403 - Незручний відкритий простір + Незручний відкритий простір Heath, moorland, felled areas, newly planted areas (trees lower than ca. 1 m) or other generally open land with rough ground vegetation, heather or tall grass. Symbol 403 may be combined with symbols 407 and 409 to show reduced runnability. Description of symbol 403 - Трав’яниста рослинність, торфовище, вирубаний ліс, молоді посадки (дерева нижче за 1м) або інша в цілому відкрита місцевість з незручною для пересування землею, рослинністю та високою травою. - + Трав’яниста рослинність, торфовище, вирубаний ліс, молоді посадки (дерева нижче 1м) або інша в цілому відкрита місцевість з незручною для бігу землею, рослинністю та високою травою. Поєднується зі знаками 407 і 409 для показу погіршення прохідності. + Rough open land with scattered trees Name of symbol 404 - Чистий ліс: гарна видимість - + Незручний напіввідкритий простір + Where there are scattered trees in rough open land, areas of white (or green) should appear in the tone. Such an area may be generalised by using a regular pattern of large white dots in the yellow screen. Areas smaller than 16 mm in the maps scale are shown as rough open land (403). Individual trees may be added (418, 419, 420). Description of symbol 404 - Типовий чистий ліс, у якому немає перешкод для пересування. Якщо ніяка частина лісу не підходить під градацію чистого лісу, білий колір не повинний бути представлений на карті. - + Коли на незручному відкритому просторі зустрічаються окремі дерева, то на фоні повинні з’являтися плями білого (або зеленого). Такі площі можуть бути генералізовані використанням сітки великих білих крапок на жовтому полі. Ділянки менші за 16 мм на карті показують знаком Незручного відкритого простору (403). Дозволяється додавати окремі дерева (418, 419, 420). + Forest: easy running Name of symbol 405 - - + Чистий ліс + Typically open runnable forest for the particular type of terrain. If no part of the forest is runnable then no white should appear on the map. Description of symbol 405 - - + Типовий для певного типу місцевості чистий прохідний ліс. Якщо на місцевості відсутній чистий прохідний ліс, на карті не повинно бути білого кольору. + Forest: slow running Name of symbol 406 - - + Середньопрохідна рослинність + An area with dense trees (low visibility) which reduces running to ca. 60-80% of normal speed. Description of symbol 406 - - + Площа з густими деревами (низька видимість), де швидкість бігу знижується до 60 - 80% від нормальної. + Undergrowth: slow running Name of symbol 407 - Undergrowth: slow running - + Середньопрохідний підлісок + An area of dense undergrowth but otherwise good visibility (brambles, heather, low bushes, and including cut branches) which reduces running to ca. 60-80% of normal speed. This symbol may not be combined with 406 or 408. Description of symbol 407 - An area of dense undergrowth but otherwise good visibility (brambles, heather, low bushes, and including cut branches) which reduces running to ca. 60-80% of normal speed. This symbol may not be combined with 406 or 408. - + Площа густого підліску, але з доброю видимістю (папороть, верес, низькі кущі, зрубані гілки, кропива тощо). Швидкість бігу зменшується до 60-80% від нормальної. Знак не може бути комбінований зі знаками 406 або 408. + Forest: difficult to run Name of symbol 408 - Forest: difficult to run - + Важкопрохідна рослинність + An area with dense trees or thicket (low visibility) which reduce running to ca. 20-60% of normal speed. Description of symbol 408 - An area with dense trees or thicket (low visibility) which reduce running to ca. 20-60% of normal speed. - + Площа з густими деревами або хащі (мала видимість), зниження швидкості бігу до 20-60% від нормальної. + Undergrowth: difficult to run Name of symbol 409 - Undergrowth: difficult to run - + Важкопрохідний підлісок + An area of dense undergrowth but otherwise good visibility (brambles, heather, low bushes, and including cut branches) which reduces running to ca. 20-60% of normal speed. This symbol may not be combined with 406 or 408. Description of symbol 409 - An area of dense undergrowth but otherwise good visibility (brambles, heather, low bushes, and including cut branches) which reduces running to ca. 20-60% of normal speed. This symbol may not be combined with 406 or 408. - + Площа густого підліску, але з хорошою видимістю (папороть, верес, низькі кущі, зрубані гілки, кропива тощо). Зниження швидкості бігу до 20-60% від нормальної. Знак не може комбінуватися зі знаками 406 або 408. + Vegetation: very difficult to run, impassable Name of symbol 410 - Vegetation: very difficult to run, impassable - + Непрохідна рослинність + An area of dense vegetation (trees or undergrowth) which is barely passable. Running reduced to ca. 0-20% of normal speed. Description of symbol 410 - An area of dense vegetation (trees or undergrowth) which is barely passable. Running reduced to ca. 0-20% of normal speed. - + Площа щільної рослинності (дерева або підлісок), яка долається дуже важко. Швидкість бігу знижується до 0-20% від нормальної. + Vegetation: very difficult to run, impassable, line Name of symbol 410.1 - Vegetation: very difficult to run, impassable, line - + Непрохідна рослинність: лінія + Line of minimum width for symbol 410. Description of symbol 410.1 - Line of minimum width for symbol 410. - + Лінія мінімальної ширини для знаку 410. + Forest runnable in one direction, 1 Name of symbol 411.0 - Forest runnable in one direction, 1 - + Ліс, прохідний в певному напрямку, 1 + When an area of forest provides good running in one direction but less good in others, white stripes are left in the screen symbol to show the direction of good running. Description of symbol 411.0 - When an area of forest provides good running in one direction but less good in others, white stripes are left in the screen symbol to show the direction of good running. - + Коли площа лісу дозволяє добру прохідність в одному напрямку і гіршу в іншому, до сітки знаку повинні бути включені білі смуги для показу напрямку доброї прохідності. + Forest runnable in one direction, 2 Name of symbol 411.1 - Forest runnable in one direction, 2 - + Ліс, прохідний в певному напрямку, 2 + When an area of forest provides good running in one direction but less good in others, white stripes are left in the screen symbol to show the direction of good running. Description of symbol 411.1 - When an area of forest provides good running in one direction but less good in others, white stripes are left in the screen symbol to show the direction of good running. - + Коли площа лісу дозволяє добру прохідність в одному напрямку і гіршу в іншому, до сітки знаку повинні бути включені білі смуги для показу напрямку доброї прохідності. + Forest runnable in one direction, 3 Name of symbol 411.2 - Forest runnable in one direction, 3 - + Ліс, прохідний в певному напрямку, 3 + When an area of forest provides good running in one direction but less good in others, white stripes are left in the screen symbol to show the direction of good running. Description of symbol 411.2 - When an area of forest provides good running in one direction but less good in others, white stripes are left in the screen symbol to show the direction of good running. - + Коли площа лісу дозволяє добру прохідність в одному напрямку і гіршу в іншому, до сітки знаку повинні бути включені білі смуги для показу напрямку доброї прохідності. + Orchard Name of symbol 412 - Фруктовий сад - + Сад + Land planted with fruit trees or bushes. The dot lines may be orientated to show the direction of planting. If yellow coloured areas becomes dominant, a screen (75%) instead of full yellow may be used. Description of symbol 412 - Площа, зайнята фруктовими деревами або кущами. Ряди крапок можуть бути орієнтовані вздовж напрямку посадок. Якщо знак домінує на карті, замість суцільного жовтого кольору може бути використана 75% точкова сітка. - + Площа, що засаджена фруктовими деревами або кущами. Лінії крапок повинні бути зорієнтовані в напрямку рядів. Якщо знак домінує на карті, може бути використана 75% крапчаста сітка замість суцільного жовтого кольору. + Vineyard Name of symbol 413 - Виноградник + Виноградник The green lines may be orientated to show the direction of planting. If yellow coloured areas becomes dominant, a screen (75%) instead of full yellow may be used. Description of symbol 413 - Зелені лінії повинні бути орієнтовані для показу напрямку рядів. Якщо знак домінує на карті, замість суцільного жовтого кольору може бути використана 75% точкова сітка. + Зелені лінії повинні бути орієнтовані для показу напрямку рядів. Якщо знак домінує на карті, замість суцільного жовтого кольору може бути використана 75% точкова сітка. Distinct cultivation boundary Name of symbol 414 - Distinct cultivation boundary - + Чітка межа угідь + The boundary of cultivated land when not shown with other symbols (fence, wall, path, etc.) is shown with a black line. A permanent boundary between different types of cultivated land is also shown with this symbol. Description of symbol 414 - The boundary of cultivated land when not shown with other symbols (fence, wall, path, etc.) is shown with a black line. A permanent boundary between different types of cultivated land is also shown with this symbol. - + Межа угідь в разі, якщо вона не показана іншим знаком (огорожа, дорога, тощо), зображується чорною лінією. Постійну межу між різними типами угідь також показують цим знаком. + Cultivated land Name of symbol 415 - Cultivated land - + Культивовані угіддя + Cultivated land which is seasonally out-of-bounds due to growing crops may be shown with a black dot screen. Description of symbol 415 - Cultivated land which is seasonally out-of-bounds due to growing crops may be shown with a black dot screen. - + Культурні угіддя, що сезонно заборонені для бігу (злаки, полуниця), можуть бути показані сіткою чорного кольору. + Distinct vegetation boundary Name of symbol 416 - Distinct vegetation boundary - + Чіткий контур рослинності + A distinct forest edge or very distinct vegetation boundary within the forest. Description of symbol 416 - A distinct forest edge or very distinct vegetation boundary within the forest. - + Чітка межа лісу або дуже виразний контур рослинності в середині лісу. + Special vegetation feature Name of symbol 418 - Спеціальні об'єкти рослинності + Спеціальні об'єкти рослинності Symbols 418, 419 and 420 can be used for special small vegetation features. The definition of the symbol must be given in each case in the map legend. Description of symbol 418 - Використовуються для спеціальних малих рослинних об'єктів (УЗ 418, 419, 420). Значення знаку повинне бути наведене в позарамковому оформленні карти. - + Знаки 418, 419 та 420 можуть використовуватися для спеціальних маленьких об’єктів рослинності. Опис знаку слід надавати в зарамковому оформленні карти. + Special vegetation feature Name of symbol 419 - Спеціальні об'єкти рослинності + Спеціальні об'єкти рослинності Symbols 418, 419 and 420 can be used for special small vegetation features. The definition of the symbol must be given in each case in the map legend. Description of symbol 419 - Використовуються для спеціальних малих рослинних об'єктів (УЗ 418, 419, 420). Значення знаку повинне бути наведене в позарамковому оформленні карти. - + Знаки 418, 419 та 420 можуть використовуватися для спеціальних маленьких об’єктів рослинності. Опис знаку слід надавати в зарамковому оформленні карти. + Special vegetation feature Name of symbol 420 - Спеціальні об'єкти рослинності + Спеціальні об'єкти рослинності Symbols 418, 419 and 420 can be used for special small vegetation features. The definition of the symbol must be given in each case in the map legend. Description of symbol 420 - Використовуються для спеціальних малих рослинних об'єктів (УЗ 418, 419, 420). Значення знаку повинне бути наведене в позарамковому оформленні карти. - + Знаки 418, 419 та 420 можуть використовуватися для спеціальних маленьких об’єктів рослинності. Опис знаку слід надавати в зарамковому оформленні карти. + Motorway Name of symbol 501.0 - Автомагістраль + Автомагістраль A road with two carriageways. The width of the symbol should be drawn to scale but not smaller than the minimum width. The outer boundary lines may be replaced with symbols 519, 521, 522 or 524 if a fence or wall is so close to the motorway edge that it cannot practically be shown as a separate symbol. The space between the black lines must be filled with brown (50%). A road under construction may be shown with broken lines. Description of symbol 501.0 - Асфальтована дорога з розділеними смугами руху, використовується тільки для автотранспорту. Ширина знака може бути змінена, але мінімальні розміри мають бути дотримані. Простір між чорними лініями повинний бути заповнений коричневим кольором. - + Асфальтована дорога з розділеними смугами руху, використовується тільки для автотранспорту. Ширина знака може бути змінена, але мінімальні розміри мають бути дотримані. Замість бічних ліній можуть бути зображені знаки 519, 521, 522 або 524 якщо огорожа або мур надто близько розташовані до автомагістралі і їх неможливо зобразити окремо. Простір між чорними лініями повинний бути заповнений коричневим кольором (50%). Дороги, які споруджуються, можуть бути зображені переривчатою лінією. + Motorway, under construction Name of symbol 501.5 - Motorway, under construction - + Автомагістраль, що будується + A road under construction may be shown with broken lines. Description of symbol 501.5 - A road under construction may be shown with broken lines. - + Дороги, які споруджуються, можуть бути зображені переривчатою лінією. + Major road, minimum width Name of symbol 502 - Основне шосе, мінімальна ширина + Основне шосе, мінімальна ширина Road wider than 5m. The width of the symbol should be drawn to scale but not smaller than the minimum width. The outer boundary lines may be replaced with symbols 519, 521, 522 or 524 if a fence or wall is so close to the motorway edge that it cannot practically be shown as a separate symbol. The space between the black lines must be filled with brown (50%). A road under construction may be shown with broken lines. Description of symbol 502 - Дорога з асфальтно-бітумним покриттям більше 5 м завширшки. Ширина знака може бути змінена, але мінімальні розміри мають бути дотримані. Простір між чорними лініями повинний бути заповнений коричневим кольором. - + Дорога з твердим покриттям більше 5 м завширшки. Ширина знака може бути змінена, але мінімальні розміри мають бути дотримані. Замість бічних ліній можуть бути зображені знаки 519, 521, 522 або 524, якщо огорожа або мур надто близько розташовані до шосе і їх неможливо зобразити окремо. Простір між чорними лініями повинний бути заповнений коричневим кольором (50%). Дороги, які споруджуються, можуть бути зображені переривчатою лінією. + Major road, minimum width, under construction Name of symbol 502.1 - Major road, minimum width, under construction - + Основне шосе, мінімальна ширина, будується + A road under construction may be shown with broken lines. Description of symbol 502.1 - A road under construction may be shown with broken lines. - + Дороги, які споруджуються, можуть бути зображені переривчатою лінією. + Minor road Name of symbol 503 - Мале шосе + Мале шосе Road 3-5 m wide. The space between the black lines must be filled with brown (50%). A road under construction may be shown with broken lines. Description of symbol 503 - Дорога з асфальтно-бітумним покриттям 1,5 - 5 м завширшки. Простір між чорними лініями повинний бути заповнений коричневим кольором. - + Дорога з асфальтно-бітумним покриттям 3 - 5 м завширшки. Простір між чорними лініями повинний бути заповнений коричневим кольором (50%). Дороги, які споруджуються, можуть бути зображені переривчатою лінією. + Minor road, under construction Name of symbol 503.1 - Minor road, under construction - + Мале шосе, що будується + A road under construction may be shown with broken lines. Description of symbol 503.1 - A road under construction may be shown with broken lines. - + Дороги, які споруджуються, можуть бути зображені переривчатою лінією. + Road Name of symbol 504 - Road - + Дорога + A maintained road suitable for motor vehicles in all weather. Width less than 3 m. Description of symbol 504 - A maintained road suitable for motor vehicles in all weather. Width less than 3 m. - + Покращена ґрунтова дорога, що придатна для руху автомобільного транспорту в будь-яку погоду. Ширина менше 3 м. + Vehicle track Name of symbol 505 - Vehicle track - + Польова дорога + A track or poorly maintained road suitable for vehicles only when travelling slowly. Width less than 3 m. Description of symbol 505 - A track or poorly maintained road suitable for vehicles only when travelling slowly. Width less than 3 m. - + Польова або слабко покращена ґрунтова дорога, придатна тільки для повільного руху автотранспорту. Ширина менше 3 м. + Footpath Name of symbol 506 - Footpath - + Лісова дорога, стежка + A large path, or old vehicle track, which is distinct on the ground. Description of symbol 506 - A large path, or old vehicle track, which is distinct on the ground. - + Велика стежка або стара дорога, які чітко видимі на землі. + Small path Name of symbol 507 - Small path - + Стежинка + A small path or (temporary) forest extraction track which can be followed at competition speed. Description of symbol 507 - A small path or (temporary) forest extraction track which can be followed at competition speed. - + Мала стежка або тимчасовий слід від вивозу лісу, що ідентифікується під час бігу спортсмена. + Less distinct small path Name of symbol 508 - Less distinct small path - + Нечітка стежинка + A less distinct small path or forestry extraction track. Description of symbol 508 - A less distinct small path or forestry extraction track. - + Маловиразна маленька стежинка або слід від вивозу лісу. + Narrow ride Name of symbol 509 - Просіка - + Вузька просіка + A distinct ride, less than ca. 5 m wide. A ride is a linear break in the forest (usually plantation) which does not have a distinct path along it. Where there is a path along a ride, symbols 507 or 508 should be used in place of symbol 509. Description of symbol 509 - A distinct ride, less than ca. 5 m wide. A ride is a linear break in the forest (usually plantation) which does not have a distinct path along it. Where there is a path along a ride, symbols 507 or 508 should be used in place of symbol 509. - + Чітка просіка менше 5 м завширшки. Просіка є лінійною порубкою в лісі і не має чіткої стежки. В разі, якщо по просіці йде стежка або дорога, слід використовувати знак 507 чи 508 замість 509. + Footbridge Name of symbol 512 - Footbridge - + Місток + A footbridge with no path leading to it. Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm over both sides of the stream! Description of symbol 512 - A footbridge with no path leading to it. -Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm over both sides of the stream! - + Пішохідний місток без стежки до нього. +Примітка: якщо струмок ширший за 0,25 мм, підлаштуйте знак таким чином, щоб він виступав на 0,5 мм з межі знаку струмка! + Railway Name of symbol 515 - Залізниця + Залізниця A railway or other kind of railed track (tramway, truckway, etc.). Description of symbol 515 - Залізниця або інший огороджений шлях. - + Залізниця або інший тип рейкових шляхів (вузькоколійка, трамвайний шлях та ін.). + Power line Name of symbol 516 - Лінія електропередачі + Лінія електропередачі Power line, cableway or skilift. The bars indicate the exact location of the pylons. Description of symbol 516 - Електролінія, підвісна канатна дорога, що мають одиночні опори. Поперечні штрихи вказують на точне положення опор. - + Електрична чи кабельна повітряна лінія, підвісна канатна дорога. Поперечні штрихи вказують на точне положення опор. + Major power line Name of symbol 517 - Високовольтна лінія електропередачі + Високовольтна лінія електропередачі Major power lines should be drawn with a double line. The gap between the lines may indicate the extent of the powerline. Description of symbol 517 - Високовольтна лінія електропередачі. Поперечні штрихи вказують на точне положення опор. Проміжок між бічними лініями, що показує відстань між проводами, може бути збільшений. - + Високовольтна лінія електропередачі зображається подвійною лінією. Проміжок між боковими лініями може зображувати відстань між проводами. + Tunnel Name of symbol 518 - Тунель + Тунель A way under roads, railways, etc. which may be used by the runner. This symbol is used whether or not the tunnel has a track leading to it. Description of symbol 518 - Шлях під шосе, залізницею тощо, яким може скористатися гонщик. Знак застосовується незалежно від того, чи веде до тунелю дорога. - + Шлях під шосе, залізницею, іншими об’єктами, що може використати спортсмен. Знак використовується незалежно від того, чи веде до тунелю дорога, чи ні. + Tunnel, minimum size Name of symbol 518.1 - Тунель, мінімальний розмір + Тунель, мінімальний розмір A way under roads, railways, etc. which may be used by the runner. This symbol is used whether or not the tunnel has a track leading to it. Description of symbol 518.1 - Шлях під шосе, залізницею тощо, яким може скористатися гонщик. Знак застосовується незалежно від того, чи веде до тунелю дорога. - + Шлях під шосе, залізницею, іншими об’єктами, що може використати спортсмен. Знак використовується незалежно від того, чи веде до тунелю дорога, чи ні. + Stone wall Name of symbol 519 - Кам'яний мур + Кам'яний мур A stone wall or stone-faced bank. Description of symbol 519 - A stone wall or stone-faced bank. - + Мурована стіна або вал, що облицьований каменем. + Ruined stone wall Name of symbol 520 - Ruined stone wall - + Зруйнований кам’яний мур + A ruined stone wall may be shown by a dashed line. Description of symbol 520 - A ruined stone wall may be shown by a dashed line. - + Зруйнований кам’яний мур показують штриховою лінією. + High stone wall Name of symbol 521 - - + Високий кам’яний мур + A stone wall higher than ca 1.5 m, not crossable to the average orienteer. Description of symbol 521 - - + Мурована стіна вище 1,5 м, нездоланна для спортсмена середнього зросту. + Fence Name of symbol 522 - Fence - + Огорожа + A wooden or wire fence less than ca. 1.5 m high. Description of symbol 522 - A wooden or wire fence less than ca. 1.5 m high. - + Ясно видима дротяна або дерев’яна огорожа не вище 1,5 м. + Ruined fence Name of symbol 523 - Ruined fence - + Зруйнована огорожа + A ruined fence may be shown with a dashed line. Description of symbol 523 - A ruined fence may be shown with a dashed line. - + Зруйнована огорожа показується штриховою лінією. + High fence Name of symbol 524 - Висока огорожа - + Висока загорожа + A boarded or wire fence higher than ca 1.5 m, not crossable to the average orienteer, eg. deer fence. Description of symbol 524 - Дощатий або дротовий забір, який гонщик не може подолати (понад 1.5 м). Заборону перетинання додатково показують знаком 707. - + Дощана або дротяна огорожа вище, ніж 1,5 м, нездоланна для спортсмена середнього зросту. + Crossing point Name of symbol 525 - Прохід в огорожі + Прохід в огорожі All ways through or over high fences or walls must be indicated. The symbol may also be used for a gate through or stile over a stone wall (519) or a fence (522) or a pipeline (534). Description of symbol 525 - - + Всі шляхи крізь високі огорожі або стіни повинні бути зображені. Знак може також показувати хвіртку або перелаз через тин (522), мур (519), іншу огорожу (534). + Building Name of symbol 526 - Будівля + Будівля A building is shown with its ground plan so far as the scale permits. Description of symbol 526 - Будови, будинки показуються в плані на місцевості, наскільки це дозволяє масштаб. Площу знака не дозволяється окантовувати чорною лінією. - + Будови зображуються в плані на місцевості, наскільки це дозволяє масштаб. + Building, minimum size Name of symbol 526.1 - Будівля, мінімальний розмір + Будівля, мінімальний розмір Settlement Name of symbol 527 - Забудована територія - + Поселення + Houses and gardens and other built up areas. Roads, buildings and other significant features within a settlement must be shown. If all buildings cannot be shown, an alternative symbol (black line screen) may be used. Description of symbol 527 - Господарства, садиби, та інші забудовані території. Будинки, дороги, інші важливі об’єкти повинні бути зображені . - + Господарства, сади, та інші забудовані території. Будинки, дороги, інші важливі об’єкти повинні бути зображені. Якщо немає можливості відобразити всі будови, використовується альтернативний знак (чорна вертикальна лінійна сітка). + Settlement Name of symbol 527.1 - Забудована територія - + Поселення + Houses and gardens and other built up areas. Roads, buildings and other significant features within a settlement must be shown. If all buildings cannot be shown, an alternative symbol (black line screen) may be used. Description of symbol 527.1 - Господарства, садиби, та інші забудовані території. Будинки, дороги, інші важливі об’єкти повинні бути зображені . - + Господарства, сади, та інші забудовані території. Будинки, дороги, інші важливі об’єкти повинні бути зображені. Якщо немає можливості відобразити всі будови, використовується альтернативний знак (чорна вертикальна лінійна сітка). + Permanently out of bounds Name of symbol 528 - Permanently out of bounds - + Територія по за районом змагань + Areas which are permanently forbidden to the runner are shown as out of bounds. The screen is superimposed on the normal map detail. A bounding line may be drawn if there is no natural boundary (see 709). Description of symbol 528 - Areas which are permanently forbidden to the runner are shown as out of bounds. The screen is superimposed on the normal map detail. A bounding line may be drawn if there is no natural boundary (see 709). - + Ділянки, що постійно заборонені для пробігання, показуються як ділянки за межами району змагань. Чорна сітка накладається поверх звичайних елементів карти. Обмежуюча лінія може зображуватись, якщо немає природної межі (див. 709). + Permanently out of bounds, bounding line Name of symbol 528.1 - Permanently out of bounds, bounding line - + Територія по за районом змагань, обмежуюча лінія + A bounding line may be drawn if there is no natural boundary (see 709). Description of symbol 528.1 - A bounding line may be drawn if there is no natural boundary (see 709). - + Обмежуюча лінія може зображуватись, якщо немає природної межі (див. 709). + Paved area Name of symbol 529 @@ -3581,8 +3583,8 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm An area of hard standing used for parking or other purposes. Description of symbol 529 - Майданчик для паркування автомобілів чи інших цілей, брукований, асфальтований чи з іншим твердим покриттям . - + Забрукований, асфальтований або інший майданчик для паркування автомобілів чи інших цілей. + Paved area, bounding line Name of symbol 529.1 @@ -3596,33 +3598,33 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm Ruin Name of symbol 530 - Ruin - + Руїни + The ground plan of a ruin is shown to scale, down to the minimum size shown opposite. Very small ruins may be drawn with a solid line. Description of symbol 530 - The ground plan of a ruin is shown to scale, down to the minimum size shown opposite. Very small ruins may be drawn with a solid line. - + Руїни зображуються у плані на місцевості, наскільки це дозволяє масштаб. Дуже маленькі руїни зображуються суцільною лінією. + Ruin, no dashes Name of symbol 530.1 - Ruin, no dashes - + Руїна без штрихів + Very small ruins may be drawn with a solid line. Description of symbol 530.1 - Very small ruins may be drawn with a solid line. - + Дуже маленькі руїни зображуються суцільною лінією. + Ruin, minimum size Name of symbol 530.2 - Ruin, minimum size - + Руїна, мінімальний розмір + Very small ruins may be drawn with a solid line. Description of symbol 530.2 - Very small ruins may be drawn with a solid line. - + Дуже маленькі руїни зображуються суцільною лінією. + Firing range Name of symbol 531 @@ -3631,137 +3633,137 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm A firing range is shown with a special symbol to indicate the need for caution. Associated buildings are individually marked. Description of symbol 531 - Стрільбище зображується спеціальним знаком за для дотримання безпеки. Сусідні будови зображуються окремо. - + Стрільбище зображується спеціальним знаком з метою дотримання обережності. Сусідні будови показуються окремо. + Grave Name of symbol 532 - Могила + Могила A distinct grave marked by a stone or shrine. Location is at the centre of gravity of the symbol, which is orientated to north. A cemetery is shown by using grave symbols as space permits. Description of symbol 532 - Чітка могила, позначена каменем або хрестом. Положенню на місцевості відповідає центр ваги знака. Цвинтар показується використанням знака по площі якщо є місце на карті. - + Чітко видима могила, що позначена каменем або хрестом. Положенню на місцевості відповідає центр ваги знаку, зорієнтованого на північ. Цвинтар зображують, використовуючи знак по всій площі. + Crossable pipeline Name of symbol 533 - Crossable pipeline - + Трубопровід, що долається + A pipeline (gas, water, oil, etc.) above ground level which can be crossed over or under. Description of symbol 533 - A pipeline (gas, water, oil, etc.) above ground level which can be crossed over or under. - + Трубопровід (газ, нафта вода, інше) на поверхні землі, який можна подолати зверху або під ним. + Uncrossable pipeline Name of symbol 534 - Трубопровід, що не перетинається - + Трубопровід, що не долається + A pipeline which cannot be crossed. Description of symbol 534 - - + Трубопровід, що не може бути подоланим. + High tower Name of symbol 535 - Висока вежа + Висока вежа A high tower or large pylon, standing above the level of the surrounding forest. Location is at the centre of gravity of the symbol. Description of symbol 535 - Висока вежа або велика опора, що піднімається над рівнем навколишнього лісу. Положенню на місцевості відповідає центр ваги знака. - + Висока вежа або велика опора, що височіє над рівнем навколишнього лісу. Положенню на місцевості відповідає центр ваги знаку. + Small tower Name of symbol 536 - Мала вежа + Мала вежа An obvious shooting platform or seat, or small tower. Location is at the centre of gravity of the symbol. Description of symbol 536 - Видима мисливська платформа, невелика вежа, вишка. Положенню на місцевості відповідає центр ваги знака. - + Видима мисливська платформа або невелика вежа. Положенню на місцевості відповідає центр ваги знаку. + Cairn Name of symbol 537 - Cairn - + Кам’яний копець + Cairn, memorial stone or boundary stone (or a trigonometric point in some countries) more than 0.5 m high. Description of symbol 537 - Cairn, memorial stone or boundary stone (or a trigonometric point in some countries) more than 0.5 m high. - + Копець, меморіальний чи межовий камінь (або триангуляційний пункт, у деяких країнах) висотою понад 0,5 м. + Fodder rack Name of symbol 538 - Годівниця + Годівниця A fodder rack which is free standing or built on to a tree. Location is at the centre of gravity of the symbol. For land access reasons these may be omitted. Description of symbol 538 - Годівниця, що стоїть окремо або збудована біля дерева. Положенню на місцевості відповідає центр ваги знаку. Якщо на карті недостатньо місця, знак може бути опущений. - + Годівниця, що стоїть окремо або збудована біля дерева. Положенню на місцевості відповідає центр ваги знаку. Якщо на карті мало місця, знак може бути опущений. + Special man-made feature Name of symbol 539 - Особливі штучні об'єкти - + Особливий штучний об’єкт + Special man-made features are shown with these symbols. The definition of the symbols must be given in each case in the map legend. Description of symbol 539 - Зміст знака має бути наведеним в позарамковому оформленні - + Спеціальні штучні об’єкти показуються цими знаками. Значення знаку слід надавати в зарамковому оформленні карти. + Special man-made feature Name of symbol 540 - Особливі штучні об'єкти - + Особливий штучний об’єкт + Special man-made features are shown with these symbols. The definition of the symbols must be given in each case in the map legend. Description of symbol 540 - Зміст знака має бути наведеним в позарамковому оформленні - + Спеціальні штучні об’єкти показуються цими знаками. Значення знаку слід надавати в зарамковому оформленні карти. + Magnetic north line Name of symbol 601 - Magnetic north line - + Лінія півночі + Magnetic north lines are lines placed on the map pointing to magnetic north. Their spacing on the map should be 33.33 mm which represents 500 m on the ground at the scale of 1:15 000. For maps with other scales lines placing should be at intervals which represents a round number of meters (e.g. 50 m, 100 m, 250 m, 500 m) and the spacing should be between 20 mm and 40 mm on the map. North lines may be broken where they obscure small features such as boulders, knolls, cliffs, stream junctions, path ends, etc. In areas with very few water features, blue lines may be used. Description of symbol 601 - Magnetic north lines are lines placed on the map pointing to magnetic north. Their spacing on the map should be 33.33 mm which represents 500 m on the ground at the scale of 1:15 000. For maps with other scales lines placing should be at intervals which represents a round number of meters (e.g. 50 m, 100 m, 250 m, 500 m) and the spacing should be between 20 mm and 40 mm on the map. North lines may be broken where they obscure small features such as boulders, knolls, cliffs, stream junctions, path ends, etc. In areas with very few water features, blue lines may be used. - + Лінії півночі наносять на карту з метою її орієнтації за магнітним меридіаном. При масштабі 1:15000 вони проводяться через 33,33 мм, що відповідає 500 м на місцевості. На картах інших масштабів лінії проводяться з інтервалом, що є кратним округленому значенню у метрах на місцевості (наприклад 50 м, 100 м, 250 м, 500 м). При цьому інтервал ліній на карті повинен знаходитися в межах від 20 до 40 мм. Лінії півночі повинні перериватися, коли вони заступають малі об’єкти, такі як камені, мікрогорбики, маленькі скелі, злиття струмків, кінці стежок та ін. Для карт, що містять незначну кількість гідрооб’єктів, можна використати синій колір для ліній півночі. + North lines pattern Name of symbol 601.1 - North lines pattern - + Заповнення лініями півночі + Magnetic north line, blue Name of symbol 601.2 - Лінія півночі, синя + Лінія півночі, синя Magnetic north lines are lines placed on the map pointing to magnetic north. Their spacing on the map should be 33.33 mm which represents 500 m on the ground at the scale of 1:15 000. For maps with other scales lines placing should be at intervals which represents a round number of meters (e.g. 50 m, 100 m, 250 m, 500 m) and the spacing should be between 20 mm and 40 mm on the map. North lines may be broken where they obscure small features such as boulders, knolls, cliffs, stream junctions, path ends, etc. In areas with very few water features, blue lines may be used. Description of symbol 601.2 - Magnetic north lines are lines placed on the map pointing to magnetic north. Their spacing on the map should be 33.33 mm which represents 500 m on the ground at the scale of 1:15 000. For maps with other scales lines placing should be at intervals which represents a round number of meters (e.g. 50 m, 100 m, 250 m, 500 m) and the spacing should be between 20 mm and 40 mm on the map. North lines may be broken where they obscure small features such as boulders, knolls, cliffs, stream junctions, path ends, etc. In areas with very few water features, blue lines may be used. - + Лінії півночі наносять на карту з метою її орієнтації за магнітним меридіаном. При масштабі 1:15000 вони проводяться через 33,33 мм, що відповідає 500 м на місцевості. На картах інших масштабів лінії проводяться з інтервалом, що є кратним округленому значенню у метрах на місцевості (наприклад 50 м, 100 м, 250 м, 500 м). При цьому інтервал ліній на карті повинен знаходитися в межах від 20 до 40 мм. Лінії півночі повинні перериватися, коли вони заступають малі об’єкти, такі як камені, мікрогорбики, маленькі скелі, злиття струмків, кінці стежок та ін. Для карт, що містять незначну кількість гідрооб’єктів, можна використати синій колір для ліній півночі. + North lines pattern, blue Name of symbol 601.3 - Заповнення лініями півночі, синє + Заповнення лініями півночі, синє Registration mark Name of symbol 602 - Хрест суміщення + Хрест суміщення At least three registration marks must be placed within the frame of a map in a non-symmetrical position. In addition, a colour check should also be possible. Description of symbol 602 - Не менш ніж три хреста суміщення мають бути асиметрично нанесені у межах позарамкового оформлення карти. Вони використовуються для контролю суміщення кольорів під час офсетного друку. + Не менш ніж три хреста суміщення мають бути асиметрично нанесені у межах позарамкового оформлення карти. Вони використовуються для контролю суміщення кольорів під час офсетного друку. Spot height, dot @@ -3771,8 +3773,8 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm Spot heights are used for the rough assessment of height differences. The height is given to the nearest metre. The figures are orientated to the north. Water levels are given without the dot. Description of symbol 603.0 - Позначка висоти потрібна для приблизної оцінки різниці висот. Висота округлюється до метрів. Цифри мають бути зорієнтовані на північ. Позначки висоти рівня води надаються без точки. - + Позначка висоти існує для приблизної оцінки різниці висот. Висота округлюється до метрів. Цифри мають бути зорієнтовані на північ. Позначки висоти рівня води надаються без точки. + Spot height, text Name of symbol 603.1 @@ -3781,93 +3783,93 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm Spot heights are used for the rough assessment of height differences. The height is given to the nearest metre. The figures are orientated to the north. Water levels are given without the dot. Description of symbol 603.1 - Позначка висоти потрібна для приблизної оцінки різниці висот. Висота округлюється до метрів. Цифри мають бути зорієнтовані на північ. Позначки висоти рівня води надаються без точки. - + Позначка висоти існує для приблизної оцінки різниці висот. Висота округлюється до метрів. Цифри мають бути зорієнтовані на північ. Позначки висоти рівня води надаються без точки. + Start Name of symbol 701 - Старт + Старт The start or map issue point (if not at the start) is shown by an equilateral triangle which points in the direction of the first control. The centre of the triangle shows the precise position of the start point. Description of symbol 701 - Старт або пункт видачі карт (якщо останній не збігається зі стартом) показують рівностороннім трикутником, чия вершина вказує на перший КП. Центр трикутника показує точне положення об'єкта на місцевості. - + Старт або пункт видачі карт (якщо останній не збігається зі стартом) показують рівностороннім трикутником, вершина якого вказує на перший КП. Центр трикутника показує точне розміщення об’єкту на місцевості. + Control point Name of symbol 702 - Контрольний пункт + Контрольний пункт The control points are shown with circles. The centre of the circle shows the precise position of the feature. Sections of circles should be omitted to leave important detail showing. Description of symbol 702 - КП показують окружністю, центр якого відповідає розташуванню КП на місцевості. Частина окружності повинна опускатися там, де вона загороджує важливі деталі. - + КП зображується колом, центр якого повинен відповідати положенню КП на місцевості. Частини кола повинні перериватися там, де вони заступають важливі деталі. + Control number Name of symbol 703 - Номер контрольного пункту + Номер контрольного пункту The number of the control is placed close to the control point circle in such a way that it does not obscure important detail. The numbers are orientated to north. Description of symbol 703 - Номер ставиться поруч з колом контрольного пункту. При цьому він не повинен закривати важливих деталей на карті. Знак орієнтується на північ. Шрифт – Arial, висота 4 мм. - + Номер ставиться поряд з колом КП. Він не повинен закривати важливих деталей ситуації. Знак орієнтується на північ. + Line Name of symbol 704 - З’єднувальна лінія + З’єднувальна лінія Where controls are to be visited in order, the start, control points and finish are joined together by straight lines. Sections of lines should be omitted to leave important detail showing. Description of symbol 704 - Лінія, що з'єднує кола контрольних пунктів між собою та зі стартом. В місцях, де вона закриває важливі деталі на карті, в неї мають бути зроблені розриви. - + Лінія, що з’єднує кола контрольних пунктів між собою та зі стартом. Необхідно розривати лінії у місцях, де вони закривають важливі деталі ситуації. + Marked route Name of symbol 705 - Розмічений шлях + Розмічений шлях A marked route is shown on the map with a dashed line. Description of symbol 705 - - + Розмічені ділянки дистанції зображуються на карті штриховою лінією. + Finish Name of symbol 706 - Фініш + Фініш The finish is shown by two concentric circles. Description of symbol 706 - Фініш зображується двома концентричними колами. + Фініш зображується двома концентричними колами. Uncrossable boundary Name of symbol 707 - Межа, яку заборонено перетинати + Межа, яку заборонено перетинати A boundary which it is not permitted to cross. Description of symbol 707 - Границя, що заборонена до перетинання. - + Межа, яку не дозволено перетинати. + Crossing point Name of symbol 708 - Прохід в огорожі - + Прохід + A crossing point through or over a wall or fence, or across a road or railway or through a tunnel or an out-of-bounds area is drawn on the map with two lines curving outwards. Description of symbol 708 - Місце проходу під час змагань крізь стіну чи огорожу, перехід через вулицю, залізницю або тунель зображують на карті двома округлими дужками. - + Місце проходу крізь стіну чи огорожу, перехід через вулицю, залізницю або тунель зображують на карті двома округлими дужками. + Out-of-bounds area Name of symbol 709 - Заборонений район - + Заборонена територія + An out-of-bounds area, see also symbol 528, is shown with vertical stripes. A bounding line may be drawn if there is no natural boundary, as follows: @@ -3875,8 +3877,12 @@ A bounding line may be drawn if there is no natural boundary, as follows: - a dashed line indicates intermittent marking on the ground, - no line indicates no marking on the ground. Description of symbol 709 - - + Заборонена для бігу територія (див. також знак 528) зображується вертикальними лініями пурпурного кольору. +Якщо немає природного кордону, креслиться гранична лінія в наступних випадках: + - суцільна лінія вказує, що межу розмічено по контуру (маркіровкою, стрічкою) на місцевості; + - штрихова лінія вказує, що на місцевості кордон розмічено переривчато; + - відсутність лінії вказує, що на місцевості кордон не розмічено. + Out-of-bounds area, solid boundary Name of symbol 709.1 @@ -3890,76 +3896,76 @@ A bounding line may be drawn if there is no natural boundary, as follows: Out-of-bounds area, dashed boundary Name of symbol 709.2 - Out-of-bounds area, dashed boundary - + Заборонена територія, переривчаста межа + A dashed line indicates intermittent marking on the ground. Description of symbol 709.2 - A dashed line indicates intermittent marking on the ground. - + Штрихова лінія вказує, що на місцевості кордон розмічено переривчато. + Dangerous area Name of symbol 710 - Dangerous area - + Небезпечна територія + An area presenting danger to the competitor is shown with cross-hatched diagonal lines. Description of symbol 710 - An area presenting danger to the competitor is shown with cross-hatched diagonal lines. - + Територія, яка становить небезпеку для спортсменів зображується діагональною штриховкою навхрест. + Forbidden route Name of symbol 711 - Заборонена дорога - + Заборонений шлях + A route which is out-of-bounds is shown with crosses. Description of symbol 711 - A route which is out-of-bounds is shown with crosses. - + Шлях, який заборонений для руху спортсменів. + First aid post Name of symbol 712 - Пункт медичної допомоги - + Пункт першої медичної допомоги + The location of a first aid post. Description of symbol 712 - Положення пункту надання першої медичної допомоги. - + Розташування пункту першої допомоги. + Refreshment point Name of symbol 713 - Пункт підживлення + Пункт підживлення The location of a refreshment point which is not at a control. Description of symbol 713 - Положення пункту підживлення у випадку, якщо він знаходиться не на КП. - + Розташування пункту підживлення, якщо він знаходиться не на КП. + Simple Orienteering Course Name of symbol 799 - Проста дистанція (для тренування) + Проста дистанція (для тренування) This symbol provides a simple and quick way to make training courses. The purple line will extend a bit into the finish symbol. This is a shortcoming of this simple approach. Description of symbol 799 - Цей символ дозволяє легко та швидко планувати тренувальні дистанціі. + Цей знак дозволяє легко та швидко планувати тренувальні дистанції. -Пурпурна лінія трохи накладається поверх кінцевого символу. Це є вадою цього простого методу. - +Пурпурна лінія трохи накладається поверх кінцевого знаку. Це є вадою цього простого методу. + OpenOrienteering Logo Name of symbol 999 - OpenOrienteering Logo + OpenOrienteering Logo The OpenOrienteering Logo. Description of symbol 999 - Логотип OpenOrienteering. + Логотип OpenOrienteering. From 00ff65771f7d80231d1d171c72cc47bf242feee7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=AF=D1=80=D0=BE=D1=81=D0=BB=D0=B0=D0=B2?= Date: Fri, 24 Aug 2018 19:13:53 +0000 Subject: [PATCH 10/49] Translated using Weblate (Ukrainian) Currently translated at 49.0% (1099 of 2240 strings) Translation: OpenOrienteering/Map Symbols Translate-URL: https://hosted.weblate.org/projects/openorienteering/map-symbols/uk/ --- translations/map_symbols_uk.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/map_symbols_uk.ts b/translations/map_symbols_uk.ts index 83e6d05f6..0be8c0c8f 100644 --- a/translations/map_symbols_uk.ts +++ b/translations/map_symbols_uk.ts @@ -2850,8 +2850,8 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Stony ground Name of symbol 210.1 - - + Кам'янистий ґрунт + Stony or rocky ground which affects going should be shown on the map. The dots should be randomly distributed with density according to the amount of rock. A minimum of three dots should be used. Description of symbol 210.1 From 5d6169bfada1348e22c26d93c503f179adfaa95b Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 26 Aug 2018 07:46:11 +0200 Subject: [PATCH 11/49] OcdFileImport: Warn when ignoring distance from start/end Uncovers #1125. --- src/fileformats/ocd_file_import.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/fileformats/ocd_file_import.cpp b/src/fileformats/ocd_file_import.cpp index a6eff20f0..4a32cc0c7 100644 --- a/src/fileformats/ocd_file_import.cpp +++ b/src/fileformats/ocd_file_import.cpp @@ -1030,6 +1030,13 @@ OcdFileImport::OcdImportedLineSymbol* OcdFileImport::importLineSymbolBase(const symbol->pointed_cap_length = convertLength(ocd_length); symbol->join_style = LineSymbol::RoundJoin; // NOTE: while the setting may be different (see what is set in the first place), OC*D always draws round joins if the line cap is pointed! } + else if (attributes.dist_from_start > 0 || attributes.dist_from_end > 0) + { + addSymbolWarning(symbol, + tr("Distances from start (%1 mm) or end (%2 mm) are not supported.") + .arg(locale.toString(0.001f * convertLength(attributes.dist_from_start)), + locale.toString(0.001f * convertLength(attributes.dist_from_end))) ); + } // Handle the dash pattern if (attributes.main_gap || attributes.sec_gap) From e7bc56829754f4bcbed7ae36642f89afefbd4c9b Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 26 Aug 2018 08:29:06 +0200 Subject: [PATCH 12/49] Fix include-what-you-use warnings --- src/gdal/gdal_manager.cpp | 2 ++ src/undo/undo_manager.cpp | 1 + test/map_t.cpp | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gdal/gdal_manager.cpp b/src/gdal/gdal_manager.cpp index b5f1622bc..10cb0037b 100644 --- a/src/gdal/gdal_manager.cpp +++ b/src/gdal/gdal_manager.cpp @@ -19,6 +19,8 @@ #include "gdal_manager.h" +#include + #include #include // IWYU pragma: keep #include diff --git a/src/undo/undo_manager.cpp b/src/undo/undo_manager.cpp index 63da31207..db90fbbc7 100644 --- a/src/undo/undo_manager.cpp +++ b/src/undo/undo_manager.cpp @@ -26,6 +26,7 @@ #include #include +#include #include #include #include diff --git a/test/map_t.cpp b/test/map_t.cpp index 85492f3a4..883fa4dec 100644 --- a/test/map_t.cpp +++ b/test/map_t.cpp @@ -61,7 +61,7 @@ void MapTest::initTestCase() Map map; // Accept any message boxes - connect(qApp, &QApplication::focusChanged, [](QWidget*, QWidget* w) { + connect(qApp, &QApplication::focusChanged, qApp, [](QWidget*, QWidget* w) { if (w && qobject_cast(w->window())) QTimer::singleShot(0, w->window(), SLOT(accept())); // clazy:exclude=old-style-connect (needs Qt 5.4) }); From 1b502f2b595904e980d93cd378ca59d756f8ce30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lud=C4=9Bk=20Krti=C4=8Dka?= Date: Sun, 26 Aug 2018 19:10:56 +0000 Subject: [PATCH 13/49] Translated using Weblate (Czech) Currently translated at 100.0% (1494 of 1494 strings) --- translations/OpenOrienteering_cs.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/OpenOrienteering_cs.ts b/translations/OpenOrienteering_cs.ts index 8fe0657c5..462c036c9 100644 --- a/translations/OpenOrienteering_cs.ts +++ b/translations/OpenOrienteering_cs.ts @@ -4993,7 +4993,7 @@ mapy. Změna zvětšení je možná pomocí kolečka myši. Unable to save correct position of missing template: "%1" - + Nelze uložit správnou pozici chybějícího podkladu: "%1" From 248cb950d1c2b3d9bfc77d78fbfbe6050c9e2501 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lud=C4=9Bk=20Krti=C4=8Dka?= Date: Sun, 26 Aug 2018 19:12:36 +0000 Subject: [PATCH 14/49] Translated using Weblate (Czech) Currently translated at 100.0% (2240 of 2240 strings) Translation: OpenOrienteering/Map Symbols Translate-URL: https://hosted.weblate.org/projects/openorienteering/map-symbols/cs/ --- translations/map_symbols_cs.ts | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/translations/map_symbols_cs.ts b/translations/map_symbols_cs.ts index 6559b385c..64aef06ec 100644 --- a/translations/map_symbols_cs.ts +++ b/translations/map_symbols_cs.ts @@ -266,14 +266,15 @@ Ruined earth wall Name of symbol 106 - Rozpadlý zemní val + Rozpadlý zemní val A ruined or less distinct earth wall. Minimum height: 0.5 m. Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). Description of symbol 106 - Zřícený nebo méně zřetelný zemní val. Minimální výška je 0.5 m. - + Zřícený nebo méně zřetelný zemní val. Minimální výška je 0.5 m. +Minimální délka: dvě čárky (stopa 55 m). Je-li kratší, značka musí být zveličena na minimální délku nebo změněna na značku 105 (zemní val). + Erosion gully Name of symbol 107 @@ -912,8 +913,9 @@ Zhroucené a snadno překonatelné příkopy by měly být mapovány jako erozn Should be at least 2 m wide. Minimum length (isolated): footprint 15 m. Description of symbol 304 - Měl by být nejméně 2 m široký. Vodní toky širší než 5 m by měly být zobrazeny v měřítku mapy. - + Měl by být nejméně 2 m široký. +Minimální délka (izolovaná): stopa 15 m. + Small crossable watercourse Name of symbol 305 @@ -2637,7 +2639,7 @@ Fialová čára se trochu rozšíří do symbolu pro cíl. To je nedostatek toho Neschůdný sráz - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 Neschůdný sráz, kamenný nebo hliněný sráz (viz 106) {nebo opěrná zeď} se znázorňuje čarou 0,35 mm a dolů {ve směru spádu} směřují-cími čárkami ukazujícími celkový rozsah od vrcholové linie až k úpatí. Pro svislé skalní srázy mohou být čárky vynechány, byly-li by krátké, například úzké průchody mezi skalami (průchod má být kreslen v šířce alespoň 0,3 mm). Čárky mohou přesahovat přes plošnou značku vyjadřující detail bezprostředně pod skalním útvarem. Když skalní útvar spadá přímo do vody a znemožňuje tím průchod pod skalou podél okraje vody, vynechá se břehová čára, nebo se čárky zřetelně přetáhnou přes břehovou čáru. @@ -2647,7 +2649,7 @@ Fialová čára se trochu rozšíří do symbolu pro cíl. To je nedostatek toho Neschůdný sráz, nejmenší velikost - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 Neschůdný sráz, kamenný nebo hliněný sráz (viz 106) {nebo opěrná zeď} se znázorňuje čarou 0,35 mm a dolů {ve směru spádu} směřují-cími čárkami ukazujícími celkový rozsah od vrcholové linie až k úpatí. Pro svislé skalní srázy mohou být čárky vynechány, byly-li by krátké, například úzké průchody mezi skalami (průchod má být kreslen v šířce alespoň 0,3 mm). Čárky mohou přesahovat přes plošnou značku vyjadřující detail bezprostředně pod skalním útvarem. Když skalní útvar spadá přímo do vody a znemožňuje tím průchod pod skalou podél okraje vody, vynechá se břehová čára, nebo se čárky zřetelně přetáhnou přes břehovou čáru. @@ -4334,7 +4336,7 @@ The symbol may not be drawn in free form or such that two elongated knoll symbol An impassable cliff, quarry or earth bank [see symbol earth bank (106)]. Tags are drawn downwards, showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). -The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. +The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. <span style="color:magenta">It is forbidden to cross an impassable cliff! Competitors violating this rule will be disqualified.</span> @@ -4352,7 +4354,7 @@ Závodníci, kteří porušili toto pravidlo, budou diskvalifikováni..</span An impassable cliff, quarry or earth bank [see symbol earth bank (106)]. Tags are drawn downwards, showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). -The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. +The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. <span style="color:magenta">It is forbidden to cross an impassable cliff! Competitors violating this rule will be disqualified.</span> @@ -6354,7 +6356,7 @@ Fialová čára se trochu rozšíří do symbolu pro cíl. To je nedostatek toho Neschůdný sráz - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 Neschůdný sráz, kamenný nebo hliněný sráz (viz 106) {nebo opěrná zeď} se znázorňuje čarou 0,35 mm a dolů {ve směru spádu} směřujícími čárkami ukazujícími celkový rozsah od vrcholové linie aţ k úpatí. Pro svislé skalní srázy mohou být čárky vynechány, byly-li by krátké, například úzké průchody mezi skalami (průchod má být kreslen v šířce alespoň 0,3 mm). Čárky mohou přesahovat přes plošnou značku vyjadřující detail bezprostředně pod skalním útvarem. Kdyţ skalní útvar spadá přímo do vody a znemoţňuje tím průchod pod skalou podél okraje vody, vynechá se břehová čára, nebo se čárky zřetelně přetáhnou přes břehovou čáru. @@ -6364,7 +6366,7 @@ Fialová čára se trochu rozšíří do symbolu pro cíl. To je nedostatek toho Neschůdný sráz, minimální délka - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 Neschůdný sráz, kamenný nebo hliněný sráz (viz 106) {nebo opěrná zeď} se znázorňuje čarou 0,35 mm a dolů {ve směru spádu} směřujícími čárkami ukazujícími celkový rozsah od vrcholové linie aţ k úpatí. Pro svislé skalní srázy mohou být čárky vynechány, byly-li by krátké, například úzké průchody mezi skalami (průchod má být kreslen v šířce alespoň 0,3 mm). Čárky mohou přesahovat přes plošnou značku vyjadřující detail bezprostředně pod skalním útvarem. Kdyţ skalní útvar spadá přímo do vody a znemoţňuje tím průchod pod skalou podél okraje vody, vynechá se břehová čára, nebo se čárky zřetelně přetáhnou přes břehovou čáru. @@ -8165,7 +8167,7 @@ Poznámka: Pokud je tok širší než 0.25 mm, upravte tento symbol tak, že se Neschůdný sráz - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 Neschůdný sráz, kamenný nebo hliněný sráz (viz 106) {nebo opěrná zeď} se znázorňuje čarou 0,35 mm a dolů {ve směru spádu} směřují-cími čárkami ukazujícími celkový rozsah od vrcholové linie až k úpatí. Pro svislé skalní srázy mohou být čárky vynechány, byly-li by krátké, například úzké průchody mezi skalami (průchod má být kreslen v šířce alespoň 0,3 mm). Čárky mohou přesahovat přes plošnou značku vyjadřující detail bezprostředně pod skalním útvarem. Když skalní útvar spadá přímo do vody a znemožňuje tím průchod pod skalou podél okraje vody, vynechá se břehová čára, nebo se čárky zřetelně přetáhnou přes břehovou čáru. @@ -8175,7 +8177,7 @@ Poznámka: Pokud je tok širší než 0.25 mm, upravte tento symbol tak, že se Neschůdný sráz, minimální délka - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 Neschůdný sráz, kamenný nebo hliněný sráz (viz 106) {nebo opěrná zeď} se znázorňuje čarou 0,35 mm a dolů {ve směru spádu} směřují-cími čárkami ukazujícími celkový rozsah od vrcholové linie až k úpatí. Pro svislé skalní srázy mohou být čárky vynechány, byly-li by krátké, například úzké průchody mezi skalami (průchod má být kreslen v šířce alespoň 0,3 mm). Čárky mohou přesahovat přes plošnou značku vyjadřující detail bezprostředně pod skalním útvarem. Když skalní útvar spadá přímo do vody a znemožňuje tím průchod pod skalou podél okraje vody, vynechá se břehová čára, nebo se čárky zřetelně přetáhnou přes břehovou čáru. From c0d7dd6944495b4b3429acff6e1cb7a0d7e5e08f Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Mon, 27 Aug 2018 20:18:14 +0200 Subject: [PATCH 15/49] TextSymbol: Fix unsafe floating point comparisons For line and character spacing, the GUI uses percentage with one decimal point, so we choose an epsilon of 0.0005. The tab interval is a pure cached value and doesn't need to be compared at all. Fixes #1130. --- src/core/symbols/text_symbol.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/core/symbols/text_symbol.cpp b/src/core/symbols/text_symbol.cpp index e206f7137..7196acb6b 100644 --- a/src/core/symbols/text_symbol.cpp +++ b/src/core/symbols/text_symbol.cpp @@ -512,9 +512,9 @@ bool TextSymbol::equalsImpl(const Symbol* other, Qt::CaseSensitivity case_sensit bold != text->bold || italic != text->italic || underline != text->underline || - line_spacing != text->line_spacing || + qAbs(line_spacing - text->line_spacing) > 0.0005f || paragraph_spacing != text->paragraph_spacing || - character_spacing != text->character_spacing || + qAbs(character_spacing - text->character_spacing) > 0.0005f || kerning != text->kerning || line_below != text->line_below || framing != text->framing) @@ -536,8 +536,6 @@ bool TextSymbol::equalsImpl(const Symbol* other, Qt::CaseSensitivity case_sensit line_below_distance != text->line_below_distance) return false; } - if (tab_interval != text->tab_interval) - return false; if (custom_tabs.size() != text->custom_tabs.size()) return false; for (size_t i = 0, end = custom_tabs.size(); i < end; ++i) From 540dae79bce7eb6a14ba07086fc4b458cd0c42b5 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 30 Aug 2018 06:22:15 +0200 Subject: [PATCH 16/49] Avoid begin and end identifiers for variables/parameters `begin` and `end` are used for container related STL functions. Sometimes they even need to be imported into the current namespace. --- src/core/map.cpp | 8 ++++---- src/core/map.h | 4 ++-- src/gui/map/map_editor.cpp | 12 ++++++------ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/core/map.cpp b/src/core/map.cpp index dd08f0597..f9a0d617c 100644 --- a/src/core/map.cpp +++ b/src/core/map.cpp @@ -2239,7 +2239,7 @@ void Map::setCurrentPartIndex(std::size_t index) } } -std::size_t Map::reassignObjectsToMapPart(std::set::const_iterator begin, std::set::const_iterator end, std::size_t source, std::size_t destination) +std::size_t Map::reassignObjectsToMapPart(std::set::const_iterator first, std::set::const_iterator last, std::size_t source, std::size_t destination) { Q_ASSERT(source < parts.size()); Q_ASSERT(destination < parts.size()); @@ -2247,7 +2247,7 @@ std::size_t Map::reassignObjectsToMapPart(std::set::const_iterator begi std::size_t count = 0; MapPart* const source_part = parts[source]; MapPart* const target_part = parts[destination]; - for (auto it = begin; it != end; ++it) + for (auto it = first; it != last; ++it) { Object* const object = *it; source_part->deleteObject(object, true); @@ -2283,7 +2283,7 @@ std::size_t Map::reassignObjectsToMapPart(std::set::const_iterator begi return target_begin; } -std::size_t Map::reassignObjectsToMapPart(std::vector::const_iterator begin, std::vector::const_iterator end, std::size_t source, std::size_t destination) +std::size_t Map::reassignObjectsToMapPart(std::vector::const_iterator first, std::vector::const_iterator last, std::size_t source, std::size_t destination) { Q_ASSERT(source < parts.size()); Q_ASSERT(destination < parts.size()); @@ -2293,7 +2293,7 @@ std::size_t Map::reassignObjectsToMapPart(std::vector::const_iterator begin std::size_t count = 0; MapPart* const source_part = parts[source]; MapPart* const target_part = parts[destination]; - for (auto it = begin; it != end; ++it) + for (auto it = first; it != last; ++it) { Object* const object = source_part->getObject(*it); diff --git a/src/core/map.h b/src/core/map.h index cc81e328f..a93db99ae 100644 --- a/src/core/map.h +++ b/src/core/map.h @@ -807,7 +807,7 @@ public slots: * * @return The index of the first object which has been reassigned. */ - std::size_t reassignObjectsToMapPart(std::set::const_iterator begin, std::set::const_iterator end, std::size_t source, std::size_t destination); + std::size_t reassignObjectsToMapPart(std::set::const_iterator first, std::set::const_iterator last, std::size_t source, std::size_t destination); /** * Moves all specified objects from the source to the target map part. @@ -817,7 +817,7 @@ public slots: * * @return The index of the first object which has been reassigned. */ - std::size_t reassignObjectsToMapPart(std::vector::const_iterator begin, std::vector::const_iterator end, std::size_t source, std::size_t destination); + std::size_t reassignObjectsToMapPart(std::vector::const_iterator first, std::vector::const_iterator last, std::size_t source, std::size_t destination); /** * Merges the source part with the destination part. diff --git a/src/gui/map/map_editor.cpp b/src/gui/map/map_editor.cpp index 7fe0c1e30..e2f1a7d7a 100644 --- a/src/gui/map/map_editor.cpp +++ b/src/gui/map/map_editor.cpp @@ -3668,10 +3668,10 @@ void MapEditorController::changeMapPart(int index) void MapEditorController::reassignObjectsToMapPart(int target) { auto current = map->getCurrentPartIndex(); - auto begin = map->reassignObjectsToMapPart(map->selectedObjectsBegin(), map->selectedObjectsEnd(), current, target); + auto first = map->reassignObjectsToMapPart(map->selectedObjectsBegin(), map->selectedObjectsEnd(), current, target); auto undo = new SwitchPartUndoStep(map, target, current); - for (std::size_t i = begin, end = map->getPart(target)->getNumObjects(); i < end; ++i) + for (std::size_t i = first, last = map->getPart(target)->getNumObjects(); i < last; ++i) undo->addObject(i); map->push(undo); } @@ -3696,10 +3696,10 @@ void MapEditorController::mergeCurrentMapPartTo(int target) auto source = map->getCurrentPartIndex(); UndoStep* add_part_step = new MapPartUndoStep(map, MapPartUndoStep::AddMapPart, source); - auto begin = map->mergeParts(source, target); + auto first = map->mergeParts(source, target); auto switch_part_undo = new SwitchPartUndoStep(map, target, source); - for (std::size_t i = begin, end = target_part->getNumObjects(); i < end; ++i) + for (std::size_t i = first, last = target_part->getNumObjects(); i < last; ++i) switch_part_undo->addObject(i); auto undo = new CombinedUndoStep(map); @@ -3731,9 +3731,9 @@ void MapEditorController::mergeAllMapParts() for (auto i = map->getNumParts() - 1; i > 0; --i) { UndoStep* add_part_step = new MapPartUndoStep(map, MapPartUndoStep::AddMapPart, i); - auto begin = map->mergeParts(i, 0); + auto first = map->mergeParts(i, 0); auto switch_part_undo = new SwitchPartUndoStep(map, 0, i); - for (std::size_t j = begin, end = target_part->getNumObjects(); j < end; ++j) + for (std::size_t j = first, last = target_part->getNumObjects(); j < last; ++j) switch_part_undo->addObject(j); undo->push(switch_part_undo); undo->push(add_part_step); From 27b066bd1ed32f6208bea67b3ce8791f744ed6ca Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 30 Aug 2018 06:39:58 +0200 Subject: [PATCH 17/49] Map: Provide just a single reassignObjectsToMapPart() Document its tight contract, and use it correctly, even if less efficiently. --- src/core/map.cpp | 63 ++++---------------------------------- src/core/map.h | 14 +++------ src/gui/map/map_editor.cpp | 8 ++++- 3 files changed, 17 insertions(+), 68 deletions(-) diff --git a/src/core/map.cpp b/src/core/map.cpp index f9a0d617c..5bff898c1 100644 --- a/src/core/map.cpp +++ b/src/core/map.cpp @@ -2239,84 +2239,33 @@ void Map::setCurrentPartIndex(std::size_t index) } } -std::size_t Map::reassignObjectsToMapPart(std::set::const_iterator first, std::set::const_iterator last, std::size_t source, std::size_t destination) -{ - Q_ASSERT(source < parts.size()); - Q_ASSERT(destination < parts.size()); - - std::size_t count = 0; - MapPart* const source_part = parts[source]; - MapPart* const target_part = parts[destination]; - for (auto it = first; it != last; ++it) - { - Object* const object = *it; - source_part->deleteObject(object, true); - - int index = target_part->getNumObjects(); - target_part->addObject(object, index); - - ++count; - } - - setOtherDirty(); - - std::size_t const target_end = target_part->getNumObjects(); - std::size_t const target_begin = target_end - count; - - if (current_part_index == source) - { - int const selection_size = getNumSelectedObjects(); - - // When modifying the selection we must not use the original iterators - // because they may be operating on the selection and then become invalid! - for (std::size_t i = target_begin; i != target_end; ++i) - { - Object* const object = target_part->getObject(i); - if (isObjectSelected(object)) - removeObjectFromSelection(object, false); - } - - if (selection_size != getNumSelectedObjects()) - emit objectSelectionChanged(); - } - - return target_begin; -} - std::size_t Map::reassignObjectsToMapPart(std::vector::const_iterator first, std::vector::const_iterator last, std::size_t source, std::size_t destination) { Q_ASSERT(source < parts.size()); Q_ASSERT(destination < parts.size()); - bool selection_changed = false; - - std::size_t count = 0; MapPart* const source_part = parts[source]; MapPart* const target_part = parts[destination]; + auto first_object = target_part->getNumObjects(); + auto selection_size = getNumSelectedObjects(); for (auto it = first; it != last; ++it) { + Q_ASSERT(*it < source_part->getNumObjects()); Object* const object = source_part->getObject(*it); if (current_part_index == source && isObjectSelected(object)) - { removeObjectFromSelection(object, false); - selection_changed = true; - } source_part->deleteObject(object, true); - - int index = target_part->getNumObjects(); - target_part->addObject(object, index); - - ++count; + target_part->addObject(object); } setOtherDirty(); - if (selection_changed) + if (getNumSelectedObjects() != selection_size) emit objectSelectionChanged(); - return target_part->getNumObjects() - count; + return first_object; } std::size_t Map::mergeParts(std::size_t source, std::size_t destination) diff --git a/src/core/map.h b/src/core/map.h index a93db99ae..082fb34ab 100644 --- a/src/core/map.h +++ b/src/core/map.h @@ -799,19 +799,13 @@ public slots: */ void setCurrentPartIndex(std::size_t index); - /** - * Moves all specified objects from the source to the destination map part. - * - * The objects will be continuously located at the end to the objects in the target part. - * Source object which were selected will be removed from the object selection. - * - * @return The index of the first object which has been reassigned. - */ - std::size_t reassignObjectsToMapPart(std::set::const_iterator first, std::set::const_iterator last, std::size_t source, std::size_t destination); - /** * Moves all specified objects from the source to the target map part. * + * Objects are processed one by one. This means that processing one object + * changes the index of following objects. Thus the given indices must + * normally be in descending order. + * * The objects will be continuously located at the end to the objects in the target part. * Source object which were selected will be removed from the object selection. * diff --git a/src/gui/map/map_editor.cpp b/src/gui/map/map_editor.cpp index e2f1a7d7a..4f012f4e0 100644 --- a/src/gui/map/map_editor.cpp +++ b/src/gui/map/map_editor.cpp @@ -3668,7 +3668,13 @@ void MapEditorController::changeMapPart(int index) void MapEditorController::reassignObjectsToMapPart(int target) { auto current = map->getCurrentPartIndex(); - auto first = map->reassignObjectsToMapPart(map->selectedObjectsBegin(), map->selectedObjectsEnd(), current, target); + auto* current_part = map->getPart(current); + std::vector objects(map->selectedObjects().size()); + std::transform(map->selectedObjectsBegin(), map->selectedObjectsEnd(), begin(objects), [current_part](auto* object) { + return current_part->findObjectIndex(object); + }); + std::sort(objects.rbegin(), objects.rend()); + auto first = map->reassignObjectsToMapPart(begin(objects), end(objects), current, target); auto undo = new SwitchPartUndoStep(map, target, current); for (std::size_t i = first, last = map->getPart(target)->getNumObjects(); i < last; ++i) From 20097dc11f602d42e65363ec37a737bda8692f76 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 30 Aug 2018 07:49:48 +0200 Subject: [PATCH 18/49] Map: Prefer int over std::size_t for object index ... at least in MapPart related functions. --- src/core/map.cpp | 8 ++++---- src/core/map.h | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/map.cpp b/src/core/map.cpp index 5bff898c1..4ef44da46 100644 --- a/src/core/map.cpp +++ b/src/core/map.cpp @@ -2239,7 +2239,7 @@ void Map::setCurrentPartIndex(std::size_t index) } } -std::size_t Map::reassignObjectsToMapPart(std::vector::const_iterator first, std::vector::const_iterator last, std::size_t source, std::size_t destination) +int Map::reassignObjectsToMapPart(std::vector::const_iterator first, std::vector::const_iterator last, std::size_t source, std::size_t destination) { Q_ASSERT(source < parts.size()); Q_ASSERT(destination < parts.size()); @@ -2268,16 +2268,16 @@ std::size_t Map::reassignObjectsToMapPart(std::vector::const_iterator first return first_object; } -std::size_t Map::mergeParts(std::size_t source, std::size_t destination) +int Map::mergeParts(std::size_t source, std::size_t destination) { Q_ASSERT(source < parts.size()); Q_ASSERT(destination < parts.size()); - std::size_t count = 0; + int count = 0; MapPart* const source_part = parts[source]; MapPart* const target_part = parts[destination]; // Preserve order (but not efficient) - for (std::size_t i = source_part->getNumObjects(); i > 0 ; --i) + for (auto i = source_part->getNumObjects(); i > 0 ; --i) { Object* object = source_part->getObject(0); source_part->deleteObject(0, true); diff --git a/src/core/map.h b/src/core/map.h index 082fb34ab..130e44796 100644 --- a/src/core/map.h +++ b/src/core/map.h @@ -811,7 +811,7 @@ public slots: * * @return The index of the first object which has been reassigned. */ - std::size_t reassignObjectsToMapPart(std::vector::const_iterator first, std::vector::const_iterator last, std::size_t source, std::size_t destination); + int reassignObjectsToMapPart(std::vector::const_iterator first, std::vector::const_iterator last, std::size_t source, std::size_t destination); /** * Merges the source part with the destination part. @@ -825,7 +825,7 @@ public slots: * * @return The index of the first object which has been reassigned. */ - std::size_t mergeParts(std::size_t source, std::size_t destination); + int mergeParts(std::size_t source, std::size_t destination); // Objects From 6d6194078b677f2b79b88b8466ffe3aabe4bcdf0 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 30 Aug 2018 08:14:44 +0200 Subject: [PATCH 19/49] SwitchPartUndoStep: Rewrite, and use correctly The original implementation and use of SwitchPartUndoStep did not deal properly with object order which is crucial given that objects are often identified by index. This could lead to data corruption and crashes (cf. #1131). Stop loading data from the old implementation. Create and apply the undo step correctly. Add and use a reverse behaviour (for redo). Correctly report modified parts and objects. For consistency within undo API, prefer int for map part index. --- src/gui/map/map_editor.cpp | 12 +++--- src/undo/object_undo.cpp | 75 ++++++++++++++++++++++++++++++++------ src/undo/object_undo.h | 10 ++++- src/undo/undo.cpp | 2 + src/undo/undo.h | 3 +- 5 files changed, 81 insertions(+), 21 deletions(-) diff --git a/src/gui/map/map_editor.cpp b/src/gui/map/map_editor.cpp index 4f012f4e0..824f9dd16 100644 --- a/src/gui/map/map_editor.cpp +++ b/src/gui/map/map_editor.cpp @@ -3674,10 +3674,10 @@ void MapEditorController::reassignObjectsToMapPart(int target) return current_part->findObjectIndex(object); }); std::sort(objects.rbegin(), objects.rend()); - auto first = map->reassignObjectsToMapPart(begin(objects), end(objects), current, target); + map->reassignObjectsToMapPart(begin(objects), end(objects), current, target); auto undo = new SwitchPartUndoStep(map, target, current); - for (std::size_t i = first, last = map->getPart(target)->getNumObjects(); i < last; ++i) + for (auto i : objects) undo->addObject(i); map->push(undo); } @@ -3705,8 +3705,8 @@ void MapEditorController::mergeCurrentMapPartTo(int target) auto first = map->mergeParts(source, target); auto switch_part_undo = new SwitchPartUndoStep(map, target, source); - for (std::size_t i = first, last = target_part->getNumObjects(); i < last; ++i) - switch_part_undo->addObject(i); + for (auto i = target_part->getNumObjects(); i > first; --i) + switch_part_undo->addObject(0); auto undo = new CombinedUndoStep(map); undo->push(switch_part_undo); @@ -3739,8 +3739,8 @@ void MapEditorController::mergeAllMapParts() UndoStep* add_part_step = new MapPartUndoStep(map, MapPartUndoStep::AddMapPart, i); auto first = map->mergeParts(i, 0); auto switch_part_undo = new SwitchPartUndoStep(map, 0, i); - for (std::size_t j = first, last = target_part->getNumObjects(); j < last; ++j) - switch_part_undo->addObject(j); + for (auto j = target_part->getNumObjects(); j > first; --j) + switch_part_undo->addObject(0); undo->push(switch_part_undo); undo->push(add_part_step); } diff --git a/src/undo/object_undo.cpp b/src/undo/object_undo.cpp index 388432a54..daa39301e 100644 --- a/src/undo/object_undo.cpp +++ b/src/undo/object_undo.cpp @@ -35,6 +35,7 @@ namespace literal { const QLatin1String source("source"); const QLatin1String part("part"); + const QLatin1String reverse("reverse"); } @@ -443,7 +444,7 @@ bool AddObjectsUndoStep::sortOrder(const std::pair< int, int >& a, const std::pa // ### SwitchPartUndoStep ### -SwitchPartUndoStep::SwitchPartUndoStep(Map *map, std::size_t source, std::size_t target_index) +SwitchPartUndoStep::SwitchPartUndoStep(Map *map, int source, int target_index) : ObjectModifyingUndoStep(SwitchPartUndoStepType, map, target_index) , source_index(source) { @@ -458,25 +459,73 @@ SwitchPartUndoStep::SwitchPartUndoStep(Map *map) } // virtual -SwitchPartUndoStep::~SwitchPartUndoStep() +SwitchPartUndoStep::~SwitchPartUndoStep() = default; + + +// virtual +bool SwitchPartUndoStep::getModifiedParts(UndoStep::PartSet& out) const { - // nothing + out.insert(source_index); + return ObjectModifyingUndoStep::getModifiedParts(out); +} + +// virtual +void SwitchPartUndoStep::getModifiedObjects(int part_index, UndoStep::ObjectSet& out) const +{ + if (!reverse) + { + ObjectModifyingUndoStep::getModifiedObjects(part_index, out); + } + else if (part_index == source_index) + { + MapPart* const map_part = map->getPart(source_index); + auto object_index = map_part->getNumObjects(); + for (auto&& counter : modified_objects) + { + Q_UNUSED(counter) + Q_ASSERT(object_index > 0); + if (auto* object = map_part->getObject(--object_index)) + out.insert(object); + } + } } // virtual UndoStep* SwitchPartUndoStep::undo() { - std::size_t begin = map->reassignObjectsToMapPart(modified_objects.begin(), modified_objects.end(), source_index, getPartIndex()); + auto selection_size = map->selectedObjects().size(); - ObjectList::iterator it = modified_objects.begin(); - SwitchPartUndoStep* undo = new SwitchPartUndoStep(map, getPartIndex(), source_index); - for (std::size_t i = begin, end = map->getPart(getPartIndex())->getNumObjects(); i < end; ++i) + auto source = map->getPart(source_index); + auto target = map->getPart(getPartIndex()); + SwitchPartUndoStep* undo = new SwitchPartUndoStep(map, source_index, getPartIndex()); + undo->modified_objects = modified_objects; + if (reverse) { - undo->addObject(i); - // Save indices from target part (needed for getModifiedObjects()) - *it = i; - ++it; + std::for_each(begin(modified_objects), end(modified_objects), [this, source, target](auto i) { + auto object = target->getObject(i); + if (map->getCurrentPart() == target && map->isObjectSelected(object)) + map->removeObjectFromSelection(object, false); + target->deleteObject(i, true); + source->addObject(object); + }); } + else + { + undo->reverse = true; + auto i = source->getNumObjects(); + std::for_each(modified_objects.rbegin(), modified_objects.rend(), [this, source, target, &i](auto j) { + --i; + auto object = source->getObject(i); + if (map->getCurrentPart() == source && map->isObjectSelected(object)) + map->removeObjectFromSelection(object, false); + source->deleteObject(i, true); + target->addObject(object, j); + }); + } + + if (map->selectedObjects().size() != selection_size) + map->emitSelectionChanged(); + return undo; } @@ -497,6 +546,7 @@ void SwitchPartUndoStep::saveImpl(QXmlStreamWriter &xml) const ObjectModifyingUndoStep::saveImpl(xml); XmlElementWriter source_element(xml, literal::source); source_element.writeAttribute(literal::part, source_index); + source_element.writeAttribute(literal::reverse, reverse); } // virtual @@ -505,7 +555,8 @@ void SwitchPartUndoStep::loadImpl(QXmlStreamReader &xml, SymbolDictionary &symbo if (xml.name() == literal::source) { XmlElementReader source_element(xml); - source_index = source_element.attribute(literal::part); + source_index = source_element.attribute(literal::part); + reverse = source_element.attribute(literal::reverse); } else ObjectModifyingUndoStep::loadImpl(xml, symbol_dict); diff --git a/src/undo/object_undo.h b/src/undo/object_undo.h index f08f3b545..c8c05e31c 100644 --- a/src/undo/object_undo.h +++ b/src/undo/object_undo.h @@ -327,12 +327,16 @@ Q_OBJECT class SwitchPartUndoStep : public ObjectModifyingUndoStep { public: - SwitchPartUndoStep(Map* map, std::size_t source_index, std::size_t target_index); + SwitchPartUndoStep(Map* map, int source_index, int target_index); SwitchPartUndoStep(Map* map); ~SwitchPartUndoStep() override; + bool getModifiedParts(PartSet& out) const override; + + void getModifiedObjects(int part_index, ObjectSet& out) const override; + UndoStep* undo() override; #ifndef NO_NATIVE_FILE_FORMAT @@ -344,7 +348,9 @@ class SwitchPartUndoStep : public ObjectModifyingUndoStep void loadImpl(QXmlStreamReader& xml, SymbolDictionary& symbol_dict) override; - std::size_t source_index; + int source_index; + + bool reverse = false; }; diff --git a/src/undo/undo.cpp b/src/undo/undo.cpp index be8c9e912..76e8548a6 100644 --- a/src/undo/undo.cpp +++ b/src/undo/undo.cpp @@ -79,6 +79,8 @@ UndoStep* UndoStep::getUndoStepForType(Type type, Map* map) default: qWarning("Undefined undo step type"); + // fall through + case SwitchPartUndoStepTypeV0: return new NoOpUndoStep(map, false); } } diff --git a/src/undo/undo.h b/src/undo/undo.h index b0b03c0b4..abf36299a 100644 --- a/src/undo/undo.h +++ b/src/undo/undo.h @@ -66,7 +66,8 @@ class UndoStep ValidNoOpUndoStepType = 6, ObjectTagsUndoStepType = 7, MapPartUndoStepType = 8, - SwitchPartUndoStepType = 9, + SwitchPartUndoStepTypeV0 = 9, + SwitchPartUndoStepType = 10, InvalidUndoStepType = 999 }; From 9f93a78b82be7314382e5b20a4360936b1882a17 Mon Sep 17 00:00:00 2001 From: naofum Date: Mon, 17 Sep 2018 01:59:00 +0000 Subject: [PATCH 20/49] Translated using Weblate (Japanese) Currently translated at 100.0% (1474 of 1474 strings) --- translations/OpenOrienteering_ja.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/OpenOrienteering_ja.ts b/translations/OpenOrienteering_ja.ts index 0f3d55479..28710b246 100644 --- a/translations/OpenOrienteering_ja.ts +++ b/translations/OpenOrienteering_ja.ts @@ -5277,7 +5277,7 @@ zoom using the mouse wheel, if available. Unable to save correct position of missing template: "%1" - + 見つからないテンプレートの正しい位置を保存できません: "%1" From 641deb666978bd4156731b548b50ee91a96fb680 Mon Sep 17 00:00:00 2001 From: AppSoft4 Date: Mon, 24 Sep 2018 22:33:32 +0000 Subject: [PATCH 21/49] Translated using Weblate (Ukrainian) Currently translated at 50.5% (1132 of 2240 strings) Translation: OpenOrienteering/Map Symbols Translate-URL: https://hosted.weblate.org/projects/openorienteering/map-symbols/uk/ --- translations/map_symbols_uk.ts | 158 ++++++++++++++++++--------------- 1 file changed, 86 insertions(+), 72 deletions(-) diff --git a/translations/map_symbols_uk.ts b/translations/map_symbols_uk.ts index 0be8c0c8f..23a9ffced 100644 --- a/translations/map_symbols_uk.ts +++ b/translations/map_symbols_uk.ts @@ -4018,33 +4018,33 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Green, Black 50% above Brown Color 9 - - + Зелений, Чорний 50% над Коричневим + Opaque Blue above Brown Color 10 - - + Перекриваючий Синій над Коричневим + Blue above Brown Color 11 - - + Синій над Коричневим + Green above Brown Color 12 - - + Зелений над Коричневим + Brown 20-50% for paved area, non-urban Color 13 - - + Коричневий 20-50% для площі з покриттям, поза населеними пунктами + Brown 0-30% for paved area, urban Color 14 - - + Коричневий 0-30% для площі з покриттям, у населених пунктах + Black below light browns Color 15 @@ -4098,8 +4098,8 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming White over Green Color 25 - - + Білий поверх Зеленого + Green, Black 50% Color 26 @@ -4160,8 +4160,10 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming The relative height difference between neighbouring features must be represented on the map as accurately as possible. Absolute height accuracy is of less importance. It is permissible to alter the height of a contour slightly if this will improve the representation of a feature. This deviation should not exceed 25% of the contour interval and attention must be paid to neighbouring features. The smallest bend in a contour is 0.4 mm from centre to centre of the lines. Description of symbol 101 - - + Лінія, що з'єднує точки однієї висоти. Стандартний інтервал між горизонталями по вертикалі (перетин рельєфу) 2 або 2.5м. Щоб підкреслити 3-вимірний ефект відображення горизонталі, горизонталь повинна бути безперервною лінією та проходити крізь всі об'єкти, а також будівлі (526.1) і проходи (526.2). Однак, горизонталь повинна бути розірвана для кращої розбірливості, якщо вона перетинає наступні УЗ: маленький земляний вал (108.1), мікрогорбик (112), подовжений мікрогорбик (113), Мікрояма (115), вирва (воронка) (116), спеціальний об'єкт рельєфу(118), сходи (529.1). + +Відносна різниця висот між сусідніми об'єктами повинна бути показана як можна більш точно. Абсолютна точність висот має менше значення. Допускається деяка зміна висоти горизонталі, якщо це поліпшить відображення дійсності. Це відхилення не повинне перевищувати 25% інтервалу перетину рельєфу, при цьому варто звернути увагу на сусідні горизонталі. Мінімально припустимий вигин горизонталі - 0.4 мм від центра до центра лінії. Колір: коричневий. + Index contour Name of symbol 102 @@ -4170,8 +4172,8 @@ The relative height difference between neighbouring features must be represented Every fifth contour shall be drawn with a thicker line. This is an aid to the quick assessment of height difference and the overall shape of the terrain surface. Where an index contour coincides with an area of much detail, it may be shown with symbol contour (101). Description of symbol 102 - - + Кожна п'ята горизонталь повинна бути потовщеної. Це сприяє швидкості оцінки різниці висот і загальної форми місцевості. При необхідності відображення дрібних деталей потовщена горизонталь може бути зображена нормальною лінією (101). Колір: коричневий. + Form line Name of symbol 103 @@ -4190,8 +4192,8 @@ The relative height difference between neighbouring features must be represented Slope lines should be drawn on the lower side of a contour line where it is necessary to clarify the direction of slope, e.g. along the line of a re-entrant or in a depression. Description of symbol 104 - - + Служить для показу напрямку схилу в тих випадках, коли це необхідно для однозначного сприйняття місцевості. Розташовується нижче горизонталі в напрямку схилу. Колір: коричневий. + Contour value Name of symbol 105 @@ -4210,8 +4212,8 @@ The relative height difference between neighbouring features must be represented A steep earth bank is an abrupt change in ground level which can be clearly distinguished from its surroundings, e.g. gravel or sand pits, roads and railway cuttings or embankments. The tags should show the full extent of the slope, but may be omitted if two banks are close together. Impassable banks shall be drawn with the symbol impassable cliff (201). The line width of very high earth banks may be 0.37 mm. Description of symbol 106.0 - - + Крутий перегин поверхні землі, що однозначно виділяється з навколишнього середовища. Гравійні або піщані виробки, дорожні виїмки або залізничні насипи тощо. Вуси повинні показувати повну проекцію схилу, але можуть бути опущені, якщо два обриви розташовуються близько друг від друга. Недолаємі ґрунтові обриви показуються знаком 201. Для дуже високих ґрунтових обривів товщину лінії збільшують до 0,37 мм. + Earth bank, very high Name of symbol 106.1 @@ -4220,8 +4222,8 @@ The relative height difference between neighbouring features must be represented A steep earth bank is an abrupt change in ground level which can be clearly distinguished from its surroundings, e.g. gravel or sand pits, roads and railway cuttings or embankments. The tags should show the full extent of the slope, but may be omitted if two banks are close together. Impassable banks shall be drawn with the symbol impassable cliff (201). The line width of very high earth banks may be 0.37 mm. Description of symbol 106.1 - - + Крутий перегин поверхні землі, що однозначно виділяється з навколишнього середовища. Гравійні або піщані виробки, дорожні виїмки або залізничні насипи тощо. Вуси повинні показувати повну проекцію схилу, але можуть бути опущені, якщо два обриви розташовуються близько друг від друга. Недолаємі ґрунтові обриви показуються знаком 201. Для дуже високих ґрунтових обривів товщину лінії збільшують до 0,37 мм. + Earth bank, tag line Name of symbol 106.2 @@ -4240,18 +4242,18 @@ The relative height difference between neighbouring features must be represented A small distinct earth wall, usually man made. The minimum height is 0.5 m. Larger earth walls should be represented with the symbols contour (101), form line (103) or earth bank (106). Description of symbol 108.1 - - + Маленький земляний насип штучного походження. Мінімальна висота 0,5 метра. Більш високий земляний насип повинний бути показаний горизонталями. УЗ 101, 103, 106. + Erosion gully or trench Name of symbol 109 - - + Вимоїна або траншея + An erosion gully or trench which is too small to be represented with the symbol earth bank (106), contour (101), index contour (102) or form line (103) is represented by a single line. The line width reflects the size of the gully. The end of the line is pointed. Minimum depth is 1 m. Minimum length is 3 mm on the map. Description of symbol 109 - - + Яр або рів, який не може бути відображені в масштабі карти знаками 106, 101, 102, 103. Товщина лінії відображає ширину вимоїни. Мінімальна глибина 1 метр. Ерозійний яр або траншея, що занадто малі, щоб зображувати їх знаком горизонталі. Товщина лінії відображає розмір яру. Кінець лінії є точковим об'єктом. Мінімальна глибина - 1 метр. Мінімальна довжина - 3 мм на карті. + Small erosion gully Name of symbol 110 @@ -4260,8 +4262,8 @@ The relative height difference between neighbouring features must be represented A small erosion gully or trench. Minimum depth is 0.5 m. Description of symbol 110 - - + Маленька вимоїна або канава. Мінімальна глибина 0.5 метра. + Small knoll Name of symbol 112 @@ -4270,8 +4272,8 @@ The relative height difference between neighbouring features must be represented A small obvious mound or rocky knoll which cannot be drawn to scale with a contour (101), index contour (102) or form line (103). The height of the knoll should be a minimum of 1 m from the surrounding ground. Description of symbol 112 - - + Маленький ґрунтовий або кам'янистий горб, який неможливо відобразити горизонталями 101, 102, 103. Мінімальна висота - 1 метр. + Elongated knoll Name of symbol 113 @@ -4282,8 +4284,10 @@ The relative height difference between neighbouring features must be represented The symbol may not be drawn in free form or such that two elongated knoll symbols touch or overlap. Description of symbol 113 - - + Позамасштабний горб витягнутої форми, який неможливо зобразити горизонталями 101, 102, 103. Максимальна довжина повинна бути до 6 м, максимальна ширина до 2 м. Показуються горби висотою не менш 1 м над навколишньою поверхнею. Бугри більшого розміру повинні зображуватися горизонталлю. + +Знак не може бути відображений у довільній формі або так, щоб два подовжені горби торкатися або перекривали один одного. + Small depression Name of symbol 115 @@ -4292,8 +4296,8 @@ The symbol may not be drawn in free form or such that two elongated knoll symbol A small shallow natural depression or hollow which cannot be represented by the symbol contour (101) or form line (103) is represented by a semicircle. The minimum diameter should be 2 m. The minimum depth from the surrounding ground should be 1 m. The symbol is orientated to north. Description of symbol 115 - - + Маленька природна западина, що не може бути відображена горизонталлю 101 або допоміжною горизонталлю 103. Мінімальний діаметр 2 м. Мінімальна глибина від навколишньої поверхні - 1 метр. Знак орієнтований на північ. + Pit Name of symbol 116 @@ -4302,8 +4306,8 @@ The symbol may not be drawn in free form or such that two elongated knoll symbol A pit or hole with distinct steep sides which cannot be represented to scale with the symbol earth bank (106). The minimum diameter shall be 2 m. The minimum depth from the surrounding ground shall be 1 m. The symbol is orientated to north. Description of symbol 116 - - + Яма або шурф із крутими краями, що не виражаються в масштабі карти, які не можуть бути показані знаком 106. Мінімальний діаметр повинен бути не менш 2 метрів. Мінімальна глибина від навколишньої поверхні 1 метр. Знак орієнтований на північ. + Broken ground, small Name of symbol 117.1 @@ -4312,8 +4316,8 @@ The symbol may not be drawn in free form or such that two elongated knoll symbol An area of pits or knolls, which is too complex to be represented in detail. The density of randomly placed dots may vary according to the detail on the ground. Description of symbol 117.1 - - + Площа ям або горбиків, що занадто складна для відображення в деталях. Щільність нанесення точок встановлюється довільно, залежно від щільності об'єктів. + Broken ground Name of symbol 117.2 @@ -4322,8 +4326,8 @@ The symbol may not be drawn in free form or such that two elongated knoll symbol An area of pits or knolls, which is too complex to be represented in detail. The density of randomly placed dots may vary according to the detail on the ground. Description of symbol 117.2 - - + Площа ям або горбиків, що занадто складна для відображення в деталях. Щільність нанесення точок встановлюється довільно, залежно від щільності об'єктів. + Prominent landform feature Name of symbol 118 @@ -4332,13 +4336,13 @@ The symbol may not be drawn in free form or such that two elongated knoll symbol A small landform feature which is significant or prominent. The definition of the symbol shall always be given in the map legend. The symbol is orientated to north. Description of symbol 118 - - + Позамасштабний об'єкт рельєфу, що є істотним або видимим. Використання знака повинне завжди пояснюватися в поясненні умовних знаків на карті. Знак орієнтований на північ. + Impassable cliff <span style="color:magenta">(forbidden to cross)</span> Name of symbol 201 - - + Нездолаємий скельний обрив <span style="color:magenta">(заборонено перетинати)</span> + An impassable cliff, quarry or earth bank [see symbol earth bank (106)]. Tags are drawn downwards, showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). @@ -4347,13 +4351,18 @@ The tags may extend over an area symbol representing detail immediately below th <span style="color:magenta">It is forbidden to cross an impassable cliff! Competitors violating this rule will be disqualified.</span> Description of symbol 201 - - + Нездолаємий скельний обрив, кар'єр або грунтовий обрив (див. знак 106). Вуси спрямовані вниз по схилу, показуючи його повний розмір в плані від верхньої бровки до підніжжя. Вуси скельного обриву можуть бути відсутні, якщо потрібно показати вузький прохід між скелями (прохід повинен бути показаний, принаймні, 0.3 мм шириною). + +Вуси можуть простиратися на площадний знак, що показує особливості ландшафту у підніжжя скелі. Якщо між обривом і береговою лінією немає проходу, то берегова лінія (границя водойми) не зображується або вуси обриву повинні перетинати берегову лінію та накладатися на край зображення водойми. Мінімальна висота - 2 метри. + +<span style="color:magenta">Забороняється перетинати нездолаємий скельний обрив! +Учасники, що порушили це правило будуть дискваліфіковані.</span> + Impassable cliff, minimum size <span style="color:magenta">(forbidden to cross)</span> Name of symbol 201.0.1 - - + Нездолаємий скельний обрив, мінімальний розмір <span style="color:magenta">(заборонено перетинати)</span> + An impassable cliff, quarry or earth bank [see symbol earth bank (106)]. Tags are drawn downwards, showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). @@ -4362,13 +4371,18 @@ The tags may extend over an area symbol representing detail immediately below th <span style="color:magenta">It is forbidden to cross an impassable cliff! Competitors violating this rule will be disqualified.</span> Description of symbol 201.0.1 - - + Нездолаємий скельний обрив, кар'єр або грунтовий обрив (див. знак 106). Вуси спрямовані вниз по схилу, показуючи його повний розмір в плані від верхньої бровки до підніжжя. Вуси скельного обриву можуть бути відсутні, якщо потрібно показати вузький прохід між скелями (прохід повинен бути показаний, принаймні, 0.3 мм шириною). + +Вуси можуть простиратися на площадний знак, що показує особливості ландшафту у підніжжя скелі. Якщо між обривом і береговою лінією немає проходу, то берегова лінія (границя водойми) не зображується або вуси обриву повинні перетинати берегову лінію та накладатися на край зображення водойми. Мінімальна висота - 2 метри. + +<span style="color:magenta">Забороняється перетинати нездолаємий скельний обрив! +Учасники, що порушили це правило будуть дискваліфіковані.</span> + Impassable cliff, no tags <span style="color:magenta">(forbidden to cross)</span> Name of symbol 201.1 - - + Нездолаємий скельний обрив, без вусів <span style="color:magenta">(заборонено перетинати)</span> + For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). Description of symbol 201.1 @@ -4377,8 +4391,8 @@ Competitors violating this rule will be disqualified.</span> Impassable cliff, no tags, minimum size <span style="color:magenta">(forbidden to cross)</span> Name of symbol 201.1.1 - - + Нездолаємий скельний обрив, без вусів, мінімальний розмір <span style="color:magenta">(заборонено перетинати)</span> + For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). Description of symbol 201.1.1 @@ -4397,13 +4411,13 @@ Competitors violating this rule will be disqualified.</span> Gigantic boulder or rock pillar Name of symbol 202 - - + Гігантські валуни та скільні стовпи + A gigantic boulder, rock pillar or massive cliff shall be represented in plan shape without tags. Description of symbol 202 - - + Гігантські валуни, скельні стовпи або масивні стрімчаки повинні бути представлені в масштабі без зубців. + Passable rock face Name of symbol 203 @@ -4412,8 +4426,8 @@ Competitors violating this rule will be disqualified.</span> A small vertical rock face may be shown without tags. If the direction of fall of the rock face is not apparent from the contours or to improve legibility, short tags should be drawn in the direction of the fall. Minimum height is 1 m. For passable rock faces shown without tags the end of the line may be rounded to improve legibility. Description of symbol 203 - - + Маленький вертикальний скельний обрив (висота мінімум 1 метр) може бути показаний без зубців. Якщо напрямок схилу не визначається однозначно або необхідно поліпшити читаємість, повинні бути показані короткі вусики в напрямку схилу. Для прохідних скельних обривів, показаних без вусиків, кінці лінії брівки можуть бути закруглені для поліпшення сприйняття. + Passable rock face, minimum size Name of symbol 203.0.1 @@ -4422,8 +4436,8 @@ Competitors violating this rule will be disqualified.</span> A small vertical rock face may be shown without tags. If the direction of fall of the rock face is not apparent from the contours or to improve legibility, short tags should be drawn in the direction of the fall. Minimum height is 1 m. For passable rock faces shown without tags the end of the line may be rounded to improve legibility. Description of symbol 203.0.1 - - + Маленький вертикальний скельний обрив (висота мінімум 1 метр) може бути показаний без зубців. Якщо напрямок схилу не визначається однозначно або необхідно поліпшити читаємість, повинні бути показані короткі вусики в напрямку схилу. Для прохідних скельних обривів, показаних без вусиків, кінці лінії брівки можуть бути закруглені для поліпшення сприйняття. + Passable rock face, no tags Name of symbol 203.1 @@ -4452,8 +4466,8 @@ Competitors violating this rule will be disqualified.</span> Should be used if the direction of fall of the rock face is apparent from the contours and the legibility is good. For passable rock faces shown without tags the end of the line may be rounded to improve legibility. Description of symbol 203.2 - - + Якщо напрямок схилу не визначається однозначно або необхідно поліпшити читаємість, повинні бути показані короткі вусики в напрямку схилу. Для прохідних скельних обривів, показаних без вусиків, кінці лінії брівки можуть бути закруглені для поліпшення сприйняття. + Passable rock face, no tags, rounded, minimum size Name of symbol 203.2.1 @@ -4462,8 +4476,8 @@ Competitors violating this rule will be disqualified.</span> Should be used if the direction of fall of the rock face is apparent from the contours and the legibility is good. For passable rock faces shown without tags the end of the line may be rounded to improve legibility. Description of symbol 203.2.1 - - + Якщо напрямок схилу не визначається однозначно або необхідно поліпшити читаємість, повинні бути показані короткі вусики в напрямку схилу. Для прохідних скельних обривів, показаних без вусиків, кінці лінії брівки можуть бути закруглені для поліпшення сприйняття. + Rocky pit Name of symbol 204 @@ -4472,8 +4486,8 @@ Competitors violating this rule will be disqualified.</span> A rocky pit, hole or mineshaft which may constitute a danger to the competitor. The symbol is orientated to north. Description of symbol 204 - - + Скельна яма, отвір або стовбур шахти, які можуть становити небезпеку для спортсмена. Знак орієнтується на північ. + Cave Name of symbol 205 From 0abe98381849d6551e47892847c3f4a0badbb7b0 Mon Sep 17 00:00:00 2001 From: AppSoft4 Date: Mon, 24 Sep 2018 22:26:43 +0000 Subject: [PATCH 22/49] Translated using Weblate (Ukrainian) Currently translated at 100.0% (1421 of 1421 strings) --- translations/OpenOrienteering_uk.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/OpenOrienteering_uk.ts b/translations/OpenOrienteering_uk.ts index 2f1245fe9..48f86599d 100644 --- a/translations/OpenOrienteering_uk.ts +++ b/translations/OpenOrienteering_uk.ts @@ -4767,7 +4767,7 @@ zoom using the mouse wheel, if available. Unable to save correct position of missing template: "%1" - + Неможливо зберегти коректне положення втраченої підложки: "%1" @@ -7062,8 +7062,8 @@ to jump over the lazy dog Saving GIF files is not supported. This means that drawings on this template won't be saved! If you do not intend to draw on this template however, that is no problem. Завантаження зображення GIF як підложки. -Збереження файлів GIF не підтримується. Це означає що зображення зцієї підложки не буде збережено! -Це не проблема, якщо ви <b>не</b> плануєте малювати з цієї підложки у майбутньому. +Збереження файлів GIF не підтримується. Це означає все що буде намальовано на цій підложці не буде збережено! +Це не проблема, якщо ви не плануєте малювати на цій підложці у майбутньому. From 54e83c1b2ccaccf729be60f2ffea2554484f5f7d Mon Sep 17 00:00:00 2001 From: Luis Mahou Date: Thu, 4 Oct 2018 06:15:06 +0000 Subject: [PATCH 23/49] Translated using Weblate (Spanish) Currently translated at 100.0% (1487 of 1487 strings) --- translations/OpenOrienteering_es.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/OpenOrienteering_es.ts b/translations/OpenOrienteering_es.ts index 18ad27a7c..cb4867c84 100644 --- a/translations/OpenOrienteering_es.ts +++ b/translations/OpenOrienteering_es.ts @@ -4988,7 +4988,7 @@ zoom usando la rueda del ratón, si dispone de esos elementos. Unable to save correct position of missing template: "%1" - + No se puede guardar la posición correcta de la plantilla perdida: "%1" From 8bdebb90b61ce4c5f05194554221cb4071c8ef29 Mon Sep 17 00:00:00 2001 From: Luis Mahou Date: Thu, 4 Oct 2018 06:17:57 +0000 Subject: [PATCH 24/49] Translated using Weblate (Spanish) Currently translated at 44.5% (998 of 2240 strings) Translation: OpenOrienteering/Map Symbols Translate-URL: https://hosted.weblate.org/projects/openorienteering/map-symbols/es/ --- translations/map_symbols_es.ts | 206 +++++++++++++++++---------------- 1 file changed, 104 insertions(+), 102 deletions(-) diff --git a/translations/map_symbols_es.ts b/translations/map_symbols_es.ts index 560accc23..43feb4bc2 100644 --- a/translations/map_symbols_es.ts +++ b/translations/map_symbols_es.ts @@ -266,14 +266,15 @@ Ruined earth wall Name of symbol 106 - Muro de tierra pequeño - + Muro de tierra en ruinas + A ruined or less distinct earth wall. Minimum height: 0.5 m. Minimum length: two dashes (footprint 55 m). If shorter, the symbol must be exaggerated to the minimum length or changed to symbol 105 (earth wall). Description of symbol 106 - Un muro de tierra pequeño o parcialmente derruido se debe mostrar con una línea discontinua. La altura mínima es 0,5 m. - + Un muro de tierra parcialmente derruido o poco visible. Altura mínima: 0,5 m. +Longitud mínima: dos rayas (huella 55 m). Si el elemento es más corto, el símbolo debe exagerarse a la longitud mínima o cambiarse por el símbolo 105 (muro de tierra). + Erosion gully Name of symbol 107 @@ -917,8 +918,9 @@ Las trincheras colapsadas y fácilmente superables deberían representarse como Should be at least 2 m wide. Minimum length (isolated): footprint 15 m. Description of symbol 304 - Una corriente de agua vadeable, de 2 m de ancho como mínimo. La amplitud de cauces superior a 5 m debería representarse a escala. - + Debe tener un mínimo de 2 m de anchura. +Longitud mínima (aislado): huella 15 m. + Small crossable watercourse Name of symbol 305 @@ -942,28 +944,28 @@ Minimum length (isolated): footprint 15 m. Uncrossable marsh, with border line Name of symbol 307 - Ciénaga no vadeable, con línea de orilla - + Humedal no vadeable, con línea de orilla + A marsh which is uncrossable or dangerous for the competitor. The black outline emphasises that the feature is uncrossable. The black outline is omitted for boundaries between uncrossable marsh and symbol 301 (uncrossable body of water). The symbol may be combined with a rough open land symbol (403, 404) to show openness. The symbol is orientated to north. Description of symbol 307 - Un terreno pantanoso que no es vadeable o es peligroso para el competidor. La línea negra de contorno enfatiza que el elemento no es vadeable. La línea negra de contorno se omite para límites entre ciénagas no vadeables y el símbolo 301 (balsa de agua no vadeable). El símbolo se puede combinar con un símbolo de terreno despejado (403, 404) para indicar que es más o menos abierto. El símbolo está orientado al norte. - + Un humedal que no es vadeable o es peligroso para el competidor. La línea negra de contorno enfatiza que el elemento no es vadeable. La línea negra de contorno se omite para límites entre humedales no vadeables y el símbolo 301 (balsa de agua no vadeable). El símbolo se puede combinar con un símbolo de terreno despejado (403, 404) para indicar que es más o menos abierto. El símbolo está orientado al norte. + Uncrossable marsh Name of symbol 307.1 - Ciénaga no vadeable - + Humedal no vadeable + A marsh which is uncrossable or dangerous for the competitor. The black outline emphasises that the feature is uncrossable. The black outline is omitted for boundaries between uncrossable marsh and symbol 301 (uncrossable body of water). The symbol may be combined with a rough open land symbol (403, 404) to show openness. The symbol is orientated to north. Description of symbol 307.1 - Un terreno pantanoso que no es vadeable o es peligroso para el competidor. La línea negra de contorno enfatiza que el elemento no es vadeable. La línea negra de contorno se omite para límites entre ciénagas no vadeables y el símbolo 301 (balsa de agua no vadeable). El símbolo se puede combinar con un símbolo de terreno despejado (403, 404) para indicar que es más o menos abierto. El símbolo está orientado al norte. - + Un humedal que no es vadeable o es peligroso para el competidor. La línea negra de contorno enfatiza que el elemento no es vadeable. La línea negra de contorno se omite para límites entre humedales no vadeables y el símbolo 301 (balsa de agua no vadeable). El símbolo se puede combinar con un símbolo de terreno despejado (403, 404) para indicar que es más o menos abierto. El símbolo está orientado al norte. + Uncrossable marsh, border line Name of symbol 307.2 - Ciénaga no vadeable, línea de orilla - + Humedal no vadeable, línea de orilla + A black line surrounds the symbol 307. Description of symbol 307.2 @@ -972,69 +974,69 @@ Minimum length (isolated): footprint 15 m. Marsh Name of symbol 308 - Ciénaga - + Humedal + A crossable marsh, usually with a distinct edge. The symbol shall be combined with other symbols to show runnability and openness. The symbol is orientated to north. Description of symbol 308 - Un terreno pantanoso vadeable, normalmente con un borde distinguible. + Un humedal vadeable, normalmente con un borde distinguible. El símbolo debe combinarse con otros símbolos para indicar la velocidad de carrera que permite y la densidad de la vegetación. El símbolo está orientado al norte. - + Marsh, minimum size Name of symbol 308.1 - Ciénaga, tamaño mínimo - + Humedal, tamaño mínimo + A crossable marsh, usually with a distinct edge. The symbol shall be combined with other symbols to show runnability and openness. The symbol is orientated to north. Description of symbol 308.1 - Un terreno pantanoso vadeable, normalmente con un borde distinguible. + Un humedal vadeable, normalmente con un borde distinguible. El símbolo debe combinarse con otros símbolos para indicar la velocidad de carrera que permite y la densidad de la vegetación. El símbolo está orientado al norte. - + Narrow marsh Name of symbol 309 - Ciénaga estrecha - + Humedal estrecho + A marsh or trickle of water which is too narrow (less than about 5 m wide) to be shown with the marsh symbol. Description of symbol 309 - Un terreno pantanoso o una filtración de agua que son demasiado estrechos (menor de 5 m de anchura) para representarse con el símbolo de ciénaga. - + Un humedal o un pequeño afloramiento de agua que son demasiado estrechos (menores de 5 m de anchura) para representarse con el símbolo de humedal. + Indistinct marsh Name of symbol 310 - Ciénaga difusa - + Humedal difuso + An indistinct marsh, seasonal marsh or an area of gradual transition from marsh to firm ground, which is crossable. The edge is generally indistinct and the vegetation similar to that of the surrounding ground. The symbol shall be combined with other symbols to show runnability and openness. The symbol is orientated to north. Description of symbol 310 - Un terreno pantanoso poco definido, estacional o una zona de transición gradual desde una ciénaga a tierra firme, que es vadeable. El borde es generalmente difuso y su vegetación similar a la del terreno que lo rodea. + Un humedal poco definido, estacional o una zona de transición gradual de humedal a tierra firme, que es vadeable. El borde es generalmente difuso y su vegetación similar a la del terreno que lo rodea. El símbolo se debe combinar con otros símbolos para indicar la velocidad de carrera que permite y la densidad de la vegetación. El símbolo está orientado al norte. - + Indistinct marsh, minimum size Name of symbol 310.1 - Ciénaga difusa, tamaño mínimo - + Humedal difuso, tamaño mínimo + An indistinct marsh, seasonal marsh or an area of gradual transition from marsh to firm ground, which is crossable. The edge is generally indistinct and the vegetation similar to that of the surrounding ground. The symbol shall be combined with other symbols to show runnability and openness. The symbol is orientated to north. Description of symbol 310.1 - Un terreno pantanoso poco definido, estacional o una zona de transición gradual desde una ciénaga a tierra firme, que es vadeable. El borde es generalmente difuso y su vegetación similar a la del terreno que lo rodea. + Un humedal poco definido, estacional o una zona de transición gradual de humedal a tierra firme, que es vadeable. El borde es generalmente difuso y su vegetación similar a la del terreno que lo rodea. El símbolo se debe combinar con otros símbolos para indicar la velocidad de carrera que permite y la densidad de la vegetación. El símbolo está orientado al norte. - + Well, fountain or water tank Name of symbol 311 @@ -1079,8 +1081,8 @@ El símbolo está orientado al norte. May not be combined with other area symbols than symbol 113 (broken ground), symbol 208 (boulder field) and marsh symbols (308, 310). Description of symbol 401 Terreno despejado con una cobertura (hierba, musgo o similar) que permite mayor velocidad de carrera que el típico bosque abierto. Si las áreas coloreadas de amarillo son dominantes, se puede utilizar una trama (75% en lugar amarillo sólido). -No se puede combinar con otros símbolos de área excepto los símbolos 113 (terreno accidentado), 208 (peñascal) y símbolos de ciénaga (308, 310). - +No se puede combinar con otros símbolos de área excepto los símbolos 113 (terreno accidentado), 208 (peñascal) y símbolos de humedales (308, 310). + Open land with scattered trees Name of symbol 402 @@ -1091,8 +1093,8 @@ No se puede combinar con otros símbolos de área excepto los símbolos 113 (ter May not be combined with other area symbols than symbol 113 (broken ground), symbol 208 (boulder field) or marsh symbols (308, 310). Description of symbol 402 Las zonas con árboles dispersos o arbustos en terreno despejado y liso se pueden generalizar utilizando un patrón regular de grandes puntos dentro de la trama amarilla. Los puntos pueden ser blancos (árboles dispersos) o verdes (arbustos/matorrales dispersos). Se pueden incluir individualmente árboles prominentes utilizando el símbolo 417 (árbol grande y prominente). Si las áreas coloreadas de amarillo son dominantes, se puede utilizar una trama (75% en lugar de amarillo sólido). -No se puede combinar con otros símbolos de área excepto los símbolos 113 (terreno accidentado), 208 (peñascal) o símbolos de ciénaga (308, 310). - +No se puede combinar con otros símbolos de área excepto los símbolos 113 (terreno accidentado), 208 (peñascal) o símbolos de humedales (308, 310). + Open land with scattered bushes Name of symbol 402.1 @@ -1103,8 +1105,8 @@ No se puede combinar con otros símbolos de área excepto los símbolos 113 (ter May not be combined with other area symbols than symbol 113 (broken ground), symbol 208 (boulder field) or marsh symbols (308, 310). Description of symbol 402.1 Las zonas con árboles dispersos o arbustos en terreno despejado y liso se pueden generalizar utilizando un patrón regular de grandes puntos dentro de la trama amarilla. Los puntos pueden ser blancos (árboles dispersos) o verdes (arbustos/matorrales dispersos). Se pueden incluir individualmente árboles prominentes utilizando el símbolo 417 (árbol grande y prominente). Si las áreas coloreadas de amarillo son dominantes, se puede utilizar una trama (75% en lugar de amarillo sólido). -No se puede combinar con otros símbolos de área excepto los símbolos 113 (terreno accidentado), 208 (peñascal) o símbolos de ciénaga (308, 310). - +No se puede combinar con otros símbolos de área excepto los símbolos 113 (terreno accidentado), 208 (peñascal) o símbolos de humedales (308, 310). + Rough open land Name of symbol 403 @@ -2653,8 +2655,8 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 - - + Un acantilado, cantera o banco de tierra infranqueable (ver 106) se muestra con una línea de 0,35 mm y etiquetas hacia abajo que muestran su extensión total desde la línea superior hasta el pie. En las paredes de roca verticales, las marcas pueden omitirse si el espacio es corto, por ejemplo, en pasajes estrechos entre acantilados (el pasaje debe trazarse con una anchura de al menos 0,3 mm). Las etiquetas pueden extenderse sobre un símbolo de área que represente detalles inmediatamente debajo de la pared rocosa. Cuando una cara de roca cae directamente al agua haciendo imposible pasar bajo el acantilado a lo largo del borde del agua, la línea de la orilla se omite o las marcas deben extenderse claramente sobre la línea de la orilla. + Impassable cliff, minimum size Name of symbol 201.0.1 @@ -2963,8 +2965,8 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici Narrow marsh Name of symbol 308 - Ciénaga estrecha - + Humedal estrecho + A marsh or trickle of water which is too narrow to be shown with symbol 310 (less than ca. 5 m wide). Description of symbol 308 @@ -2973,8 +2975,8 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici Uncrossable marsh Name of symbol 309 - Ciénaga no vadeable - + Humedal no vadeable + A marsh which is uncrossable or dangerous for the runner. A black line surrounds the symbol. Description of symbol 309 @@ -2983,8 +2985,8 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici Uncrossable marsh, border line Name of symbol 309.1 - Ciénaga no vadeable, línea de orilla - + Humedal no vadeable, línea de orilla + A black line surrounds the symbol. Description of symbol 309.1 @@ -2993,13 +2995,13 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici Uncrossable marsh, with border line Name of symbol 309.2 - Ciénaga no vadeable, con línea de orilla - + Humedal no vadeable, con línea de orilla + Marsh Name of symbol 310 - Ciénaga - + Humedal + A crossable marsh, usually with a distinct edge. The symbol should be combined with vegetation symbols to show runnability and openness. Where a small marsh area should be combined with either 403/404 it is permitted to use 401/402 to improve legibility. Description of symbol 310 @@ -3008,13 +3010,13 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici Marsh, minimum size Name of symbol 310.1 - Ciénaga, tamaño mínimo - + Humedal, tamaño mínimo + Indistinct marsh Name of symbol 311 - Ciénaga difusa - + Humedal difuso + An indistinct or seasonal marsh or area of gradual transition from marsh to firm ground, which is crossable. The edge is generally indistinct and the vegetation similar to that of the surrounding ground. The symbol should be combined with vegetation symbols to show runnability and openness. Description of symbol 311 @@ -3023,8 +3025,8 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici Indistinct marsh, minimum size Name of symbol 311.1 - Ciénaga difusa, tamaño mínimo - + Humedal difuso, tamaño mínimo + Well Name of symbol 312 @@ -4694,8 +4696,8 @@ Competitors violating this rule will be disqualified.</span> Narrow marsh Name of symbol 308 - Ciénaga estrecha - + Humedal estrecho + A marsh or trickle of water which is too narrow to be shown with symbol marsh (310). Description of symbol 308 @@ -4737,8 +4739,8 @@ Competitors violating this rule will be disqualified.</span> Marsh Name of symbol 310 - Ciénaga - + Humedal + A crossable marsh, usually with a distinct edge. The symbol shall be combined with vegetation symbols to show runnability and openness. @@ -4749,13 +4751,13 @@ Minimum size: not less than 2 lines, 5 mm long. Marsh, minimum size Name of symbol 310.1 - Ciénaga, tamaño mínimo - + Humedal, tamaño mínimo + Indistinct marsh Name of symbol 311 - Ciénaga difusa - + Humedal difuso + An indistinct or seasonal marsh or area of gradual transition from marsh to firm ground, which is crossable. The edge is generally indistinct and the vegetation similar to that of the surrounding ground. The symbol should be combined with vegetation symbols to show runnability and openness. @@ -4766,8 +4768,8 @@ Minimum size: 4 dashes. Indistinct marsh, minimum size Name of symbol 311.1 - Ciénaga difusa, tamaño mínimo - + Humedal difuso, tamaño mínimo + Small fountain or well Name of symbol 312 @@ -6419,8 +6421,8 @@ This is symbol "302 Pond" in ISOM, but is a variation of "301 Lak Uncrossable marsh Name of symbol 309 - Ciénaga no vadeable - + Humedal no vadeable + A marsh which is uncrossable or dangerous for the runner. A blue line surrounds the symbol. Description of symbol 309 @@ -6429,18 +6431,18 @@ This is symbol "302 Pond" in ISOM, but is a variation of "301 Lak Uncrossable marsh, border line Name of symbol 309.1 - Ciénaga no vadeable, línea de orilla - + Humedal no vadeable, línea de orilla + Uncrossable marsh, with border line Name of symbol 309.2 - Ciénaga no vadeable, con línea de orilla - + Humedal no vadeable, con línea de orilla + Marsh Name of symbol 310 - Ciénaga - + Humedal + A crossable marsh, usually with a distinct edge. The symbol should be combined with vegetation symbols to show runnability and openness. Where a small marsh area should be combined with either 403/404 it is permitted to use 401/402 to improve legibility. Description of symbol 310 @@ -6449,8 +6451,8 @@ This is symbol "302 Pond" in ISOM, but is a variation of "301 Lak Marsh, minimum size Name of symbol 310.1 - Ciénaga, tamaño mínimo - + Humedal, tamaño mínimo + Special water feature Name of symbol 314 @@ -7374,8 +7376,8 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici Narrow marsh Name of symbol 308 - Ciénaga estrecha - + Humedal estrecho + A marsh or trickle of water which is too narrow to be shown with symbol 310 (less than ca. 5 m wide). Description of symbol 308 @@ -7384,8 +7386,8 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici Indistinct marsh Name of symbol 311 - Ciénaga difusa - + Humedal difuso + An indistinct or seasonal marsh or area of gradual transition from marsh to firm ground, which is crossable. The edge is generally indistinct and the vegetation similar to that of the surrounding ground. The symbol should be combined with vegetation symbols to show runnability and openness. Description of symbol 311 @@ -7394,8 +7396,8 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici Indistinct marsh, minimum size Name of symbol 311.1 - Ciénaga difusa, tamaño mínimo - + Humedal difuso, tamaño mínimo + Well Name of symbol 312 @@ -9310,8 +9312,8 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici Narrow marsh Name of symbol 308 - Ciénaga estrecha - + Humedal estrecho + A marsh or trickle of water which is too narrow to be shown with symbol 310 (less than ca. 5 m wide). Description of symbol 308 @@ -9320,8 +9322,8 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici Uncrossable marsh Name of symbol 309 - Ciénaga no vadeable - + Humedal no vadeable + A marsh which is uncrossable or dangerous for the runner. A black line surrounds the symbol. Description of symbol 309 @@ -9330,8 +9332,8 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici Uncrossable marsh, border line Name of symbol 309.1 - Ciénaga no vadeable, línea de orilla - + Humedal no vadeable, línea de orilla + A black line surrounds the symbol. Description of symbol 309.1 @@ -9340,13 +9342,13 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici Uncrossable marsh, with border line Name of symbol 309.2 - Ciénaga no vadeable, con línea de orilla - + Humedal no vadeable, con línea de orilla + Marsh Name of symbol 310 - Ciénaga - + Humedal + A crossable marsh, usually with a distinct edge. The symbol should be combined with vegetation symbols to show runnability and openness. Where a small marsh area should be combined with either 403/404 it is permitted to use 401/402 to improve legibility. Description of symbol 310 @@ -9355,13 +9357,13 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici Marsh, minimum size Name of symbol 310.1 - Ciénaga, tamaño mínimo - + Humedal, tamaño mínimo + Indistinct marsh Name of symbol 311 - Ciénaga difusa - + Humedal difuso + An indistinct or seasonal marsh or area of gradual transition from marsh to firm ground, which is crossable. The edge is generally indistinct and the vegetation similar to that of the surrounding ground. The symbol should be combined with vegetation symbols to show runnability and openness. Description of symbol 311 @@ -9370,8 +9372,8 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici Indistinct marsh, minimum size Name of symbol 311.1 - Ciénaga difusa, tamaño mínimo - + Humedal difuso, tamaño mínimo + Well Name of symbol 312 From 48c9a9fc638cec6454b4dba3144196ec38263bee Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 6 Oct 2018 12:14:18 +0200 Subject: [PATCH 25/49] StorageLocation: Make Android::mediaScannerScanFile public --- src/core/storage_location.cpp | 8 ++------ src/core/storage_location.h | 12 ++++++++++++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/core/storage_location.cpp b/src/core/storage_location.cpp index db9b38968..dbe4c9975 100644 --- a/src/core/storage_location.cpp +++ b/src/core/storage_location.cpp @@ -48,12 +48,8 @@ namespace Android { */ static std::shared_ptr> locations_cache; -/** - * Tells the media scanner to register the given file or folder. - * - * This is required to make files quickly available for transfer via MTP. - */ -void mediaScannerScanFile(const QString path) + +void mediaScannerScanFile(const QString& path) { static const auto ACTION_MEDIA_SCANNER_SCAN_FILE = QAndroidJniObject::getStaticObjectField("android/content/Intent", diff --git a/src/core/storage_location.h b/src/core/storage_location.h index 1c5a13dcf..9e3fd2458 100644 --- a/src/core/storage_location.h +++ b/src/core/storage_location.h @@ -31,6 +31,18 @@ namespace OpenOrienteering { +namespace Android { + +/** + * Tells the media scanner to register the given file or folder. + * + * This is required to make files quickly available for transfer via MTP. + */ +void mediaScannerScanFile(const QString& path); + +} + + // noexcept since Qt 5.5 constexpr bool qstring_is_nothrow_copy_constructible = std::is_nothrow_copy_constructible::value; constexpr bool qstring_is_nothrow_move_constructible = std::is_nothrow_move_constructible::value; From d206a70ad2576fcc39885eb14a08393cc0009f56 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 6 Oct 2018 12:16:45 +0200 Subject: [PATCH 26/49] Android: Trigger MediaScanner after saving This is an attempt to resolve #1115, files being corrupt after editing on Android and transferring back to the PC. In several cases, the files had correct but incomplete data, and/or transfers after an Android reboot were complete. This reboot effect was observed before for README files put into the data folders, and solved by Android::mediaScannerScanFile(). So there is a chance that using the same pattern might eventually resolve #1115, by forcing the media scanner to take immediate notice of the changed file. (Note that we use QSaveFile which does actually not update the existing file but replace it with a new file by renaming.) --- src/core/map.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/core/map.cpp b/src/core/map.cpp index 4ef44da46..5717aeeb8 100644 --- a/src/core/map.cpp +++ b/src/core/map.cpp @@ -78,6 +78,10 @@ // IWYU pragma: no_forward_declare QRectF +#ifdef Q_OS_ANDROID +#include "core/storage_location.h" +#endif + namespace OpenOrienteering { @@ -694,6 +698,15 @@ bool Map::exportTo(const QString& path, MapView* view, const FileFormat* format) } success = file.commit(); +#ifdef Q_OS_ANDROID + if (success) + { + // Make the MediaScanner aware of the *updated* file. This is an + // attempt to resolve issues with files being transferred + // incompletely to the PC (#1115). + Android::mediaScannerScanFile(path); + } +#endif } if (!success) From 7e33ec8755d91cdfcb3695dd0fd60dcdf067fa0e Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Fri, 12 Oct 2018 05:45:41 +0200 Subject: [PATCH 27/49] GPSDisplay: Fix the heading indicator arrow --- src/sensors/gps_display.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sensors/gps_display.cpp b/src/sensors/gps_display.cpp index 9ed8c4f35..9bb62a124 100644 --- a/src/sensors/gps_display.cpp +++ b/src/sensors/gps_display.cpp @@ -188,7 +188,7 @@ void GPSDisplay::paint(QPainter* painter) QPointF(0, -2.5 * base_length_unit), QPointF(base_length_unit, base_length_unit), QPointF(0, 0), - QPointF(base_length_unit, base_length_unit) + QPointF(-base_length_unit, base_length_unit) }; painter->drawPolygon(arrow_points, 4); From b8b41de3873045e180940fddba8b05b22eafef0d Mon Sep 17 00:00:00 2001 From: Nikolay Korotkiy Date: Thu, 11 Oct 2018 20:49:02 +0000 Subject: [PATCH 28/49] Translated using Weblate (Finnish) Currently translated at 100.0% (1483 of 1483 strings) --- translations/OpenOrienteering_fi.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/OpenOrienteering_fi.ts b/translations/OpenOrienteering_fi.ts index 85d8a9c29..240b89f20 100644 --- a/translations/OpenOrienteering_fi.ts +++ b/translations/OpenOrienteering_fi.ts @@ -4926,7 +4926,7 @@ zoomaa hiiren rullalla. Unable to save correct position of missing template: "%1" - + Taustakartan sijainnin tallennus epäonnistui: taustakartta "%1" puuttuu From b62edd62900d1ffdd292a869999e9a4f5b586ba4 Mon Sep 17 00:00:00 2001 From: Nikolay Korotkiy Date: Thu, 11 Oct 2018 20:53:34 +0000 Subject: [PATCH 29/49] Translated using Weblate (Russian) Currently translated at 100.0% (1425 of 1425 strings) --- translations/OpenOrienteering_ru.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/OpenOrienteering_ru.ts b/translations/OpenOrienteering_ru.ts index ccf949bea..7caa9087f 100644 --- a/translations/OpenOrienteering_ru.ts +++ b/translations/OpenOrienteering_ru.ts @@ -4768,7 +4768,7 @@ zoom using the mouse wheel, if available. Unable to save correct position of missing template: "%1" - + Невозможно сохранить корректное положение отсутствующей подложки: "%1" From bba46e6a068c2f4cd7e32dbde3b2467f066f587c Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 7 Oct 2018 12:45:44 +0200 Subject: [PATCH 30/49] StorageLocation: Return empty hint text for normal storage --- src/core/storage_location.cpp | 8 +++++++- src/core/storage_location.h | 18 ++++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/core/storage_location.cpp b/src/core/storage_location.cpp index db9b38968..321ab9b0a 100644 --- a/src/core/storage_location.cpp +++ b/src/core/storage_location.cpp @@ -285,7 +285,7 @@ QString StorageLocation::fileHintTextTemplate(Hint hint) switch (hint) { case HintNormal: - return tr("'%1' is stored in a regular location."); + return {}; // No text for a regular location. case HintApplication: return tr("'%1' is located in app storage. The files will be removed when uninstalling the app."); @@ -301,4 +301,10 @@ QString StorageLocation::fileHintTextTemplate(Hint hint) } +QString OpenOrienteering::StorageLocation::hintText() const +{ + return hint() == HintNormal ? QString{} : fileHintTextTemplate(hint()).arg(path()); +} + + } // namespace OpenOrienteering diff --git a/src/core/storage_location.h b/src/core/storage_location.h index 1c5a13dcf..d2f95f28e 100644 --- a/src/core/storage_location.h +++ b/src/core/storage_location.h @@ -65,13 +65,21 @@ class StorageLocation /** Returns the path of this location. */ QString path() const; - /** Returns the hint for this location. */ + /** + * Returns the hint for this location. + * + * This function returns an empty string for HintNormal. + */ Hint hint() const; /** Returns the text representing the hint for this location. */ QString hintText() const; - /** Returns a text template for giving the hint for the given path. */ + /** + * Returns a text template for giving the hint for the given path. + * + * This function returns an empty string for HintNormal. + */ static QString fileHintTextTemplate(Hint hint); @@ -114,12 +122,6 @@ StorageLocation::Hint StorageLocation::hint() const return m_hint; } -inline -QString StorageLocation::hintText() const -{ - return fileHintTextTemplate(hint()).arg(path()); -} - } // namespace OpenOrienteering From d9461e0223bbedd913001243fca7e4cf462614b2 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Wed, 3 Oct 2018 18:51:07 +0200 Subject: [PATCH 31/49] HomeScreenWidgetMobile: Major rewrite No longer show a single list of all maps in known locations, but: 1. List most recently used maps, as on desktop. 2. If there are no such maps, show a link to the manual page. 3. List the known storage locations (unique full path). 4. Show a link to the examples folder. When clicking on a folder, the folder contents will be displayed as follows. 1. ".." entry which navigates back. 2. Map files in this directory. 3. Subdirectories. This change does not allow browsing to other locations. Geospatial vector files will no longer be listed when they are handled by GDAL/OGR. The "File list" headline and the redundant "Examples" button are removed. Closes #904. However, this change does not add custom filtering or sorting, but just changes the way file types and folder structure are exposed to the user. --- src/gui/widgets/home_screen_widget.cpp | 309 +++++++++++++------------ src/gui/widgets/home_screen_widget.h | 32 ++- 2 files changed, 182 insertions(+), 159 deletions(-) diff --git a/src/gui/widgets/home_screen_widget.cpp b/src/gui/widgets/home_screen_widget.cpp index 122f29f68..e4be53915 100644 --- a/src/gui/widgets/home_screen_widget.cpp +++ b/src/gui/widgets/home_screen_widget.cpp @@ -27,19 +27,20 @@ #include #include #include -#include #include #include #include #include #include -#include +#include +#include "settings.h" #include "core/storage_location.h" // IWYU pragma: keep #include "fileformats/file_format_registry.h" #include "gui/home_screen_controller.h" #include "gui/main_window.h" #include "gui/settings_dialog.h" +#include "gui/util_gui.h" namespace OpenOrienteering { @@ -269,7 +270,7 @@ void HomeScreenWidgetDesktop::setRecentFiles(const QStringList& files) for (auto&& file : files) { QListWidgetItem* new_item = new QListWidgetItem(QFileInfo(file).fileName()); - new_item->setData(Qt::UserRole, file); + new_item->setData(pathRole(), file); new_item->setToolTip(file); recent_files_list->addItem(new_item); } @@ -279,7 +280,7 @@ void HomeScreenWidgetDesktop::recentFileClicked(QListWidgetItem* item) { setEnabled(false); qApp->processEvents(QEventLoop::ExcludeUserInputEvents); - QString path = item->data(Qt::UserRole).toString(); + QString path = item->data(pathRole()).toString(); controller->getWindow()->openPath(path); setEnabled(true); } @@ -323,16 +324,19 @@ void HomeScreenWidgetDesktop::setTipsVisible(bool state) HomeScreenWidgetMobile::HomeScreenWidgetMobile(HomeScreenController* controller, QWidget* parent) : AbstractHomeScreenWidget(controller, parent) { - title_pixmap = QPixmap::fromImage(QImage(QString::fromLatin1(":/images/title.png"))); + auto* layout = new QVBoxLayout(); + layout->setSpacing(2 * layout->spacing()); + title_pixmap = QPixmap::fromImage(QImage(QString::fromLatin1(":/images/title.png"))); title_label = new QLabel(); title_label->setPixmap(title_pixmap); title_label->setAlignment(Qt::AlignCenter); + layout->addWidget(title_label); - QWidget* file_list_widget = makeFileListWidget(controller, parent); + file_list_widget = makeFileListWidget(); + connect(file_list_widget, &QListWidget::itemClicked, this, &HomeScreenWidgetMobile::fileClicked); + layout->addWidget(file_list_widget, 1); - examples_button = new QPushButton(tr("Examples")); - connect(examples_button, &QPushButton::clicked, this, &HomeScreenWidgetMobile::showExamples); auto settings_button = new QPushButton(HomeScreenWidgetDesktop::tr("Settings")); connect(settings_button, &QPushButton::clicked, controller->getWindow(), &MainWindow::showSettings); QPushButton* help_button = new QPushButton(HomeScreenWidgetDesktop::tr("Help")); @@ -341,37 +345,30 @@ HomeScreenWidgetMobile::HomeScreenWidgetMobile(HomeScreenController* controller, connect(about_button, &QPushButton::clicked, controller->getWindow(), &MainWindow::showAbout); QHBoxLayout* buttons_layout = new QHBoxLayout(); buttons_layout->setContentsMargins(0, 0, 0, 0); - buttons_layout->addWidget(examples_button); - buttons_layout->addStretch(1); buttons_layout->addWidget(settings_button); + buttons_layout->addStretch(1); buttons_layout->addWidget(help_button); buttons_layout->addWidget(about_button); + layout->addLayout(buttons_layout); - QGridLayout* layout = new QGridLayout(); - layout->setSpacing(2 * layout->spacing()); - layout->addWidget(title_label, 0, 0); - layout->addWidget(file_list_widget, 1, 0); - layout->addLayout(buttons_layout, 2, 0); setLayout(layout); - setAutoFillBackground(false); + + updateFileListWidget(); } -HomeScreenWidgetMobile::~HomeScreenWidgetMobile() -{ - // nothing -} +HomeScreenWidgetMobile::~HomeScreenWidgetMobile() = default; + -void HomeScreenWidgetMobile::resizeEvent(QResizeEvent* event) +void HomeScreenWidgetMobile::resizeEvent(QResizeEvent* /*event*/) { - Q_UNUSED(event); adjustTitlePixmapSize(); } void HomeScreenWidgetMobile::adjustTitlePixmapSize() { - QSize label_size = title_label->size(); - int scaled_width = qRound(title_pixmap.devicePixelRatio() * label_size.width()); + auto label_size = title_label->size(); + auto scaled_width = qRound(title_pixmap.devicePixelRatio() * label_size.width()); if (title_pixmap.width() > scaled_width) { if (title_label->pixmap()->width() != scaled_width) @@ -386,49 +383,26 @@ void HomeScreenWidgetMobile::adjustTitlePixmapSize() } } -void HomeScreenWidgetMobile::setRecentFiles(const QStringList& files) +void HomeScreenWidgetMobile::setRecentFiles(const QStringList& /*files*/) { - Q_UNUSED(files); // nothing } -void HomeScreenWidgetMobile::setOpenMRUFileChecked(bool state) +void HomeScreenWidgetMobile::setOpenMRUFileChecked(bool /*state*/) { - Q_UNUSED(state); // nothing } -void HomeScreenWidgetMobile::setTipOfTheDay(const QString& text) +void HomeScreenWidgetMobile::setTipOfTheDay(const QString& /*text*/) { - Q_UNUSED(text); // nothing } -void HomeScreenWidgetMobile::setTipsVisible(bool state) +void HomeScreenWidgetMobile::setTipsVisible(bool /*state*/) { - Q_UNUSED(state); // nothing } -// slot -void HomeScreenWidgetMobile::showExamples() -{ - int old_size = file_list->count(); - - const auto paths = QDir::searchPaths(QLatin1String("data")); - for(const auto& path : paths) - { - addFilesToFileList(file_list, path + QLatin1String("/examples")); - } - - if (file_list->count() > old_size) - { - file_list_stack->setCurrentIndex(0); - file_list->setCurrentRow(old_size, QItemSelectionModel::ClearAndSelect); - examples_button->setEnabled(false); - } -} - void HomeScreenWidgetMobile::showSettings() { auto window = this->window(); @@ -440,34 +414,42 @@ void HomeScreenWidgetMobile::showSettings() void HomeScreenWidgetMobile::fileClicked(QListWidgetItem* item) { - QString hint_text = item->data(Qt::UserRole+1).toString(); - if (!hint_text.isEmpty()) - QMessageBox::warning(this, ::OpenOrienteering::MainWindow::tr("Warning"), hint_text.arg(item->data(Qt::DisplayRole).toString())); - - setEnabled(false); - qApp->processEvents(QEventLoop::ExcludeUserInputEvents); - QString path = item->data(Qt::UserRole).toString(); - controller->getWindow()->openPath(path); - setEnabled(true); + auto file_path = item->data(pathRole()).toString(); + if (file_path == QLatin1String("doc:")) + { +#ifdef Q_OS_ANDROID + Util::showHelp(window(), "android-storage.html"); +#endif + } + else if (file_path == QLatin1String("..")) + { + if (!history.empty()) + history.pop_back(); + updateFileListWidget(); + } + else if (QFileInfo(file_path).isDir()) + { + history.push_back({file_path, StorageLocation::Hint(item->data(hintRole()).toInt())}); + updateFileListWidget(); + } + else + { + auto hint_text = item->data(hintRole()).toString(); + if (!hint_text.isEmpty()) + QMessageBox::warning(this, ::OpenOrienteering::MainWindow::tr("Warning"), hint_text.arg(item->data(Qt::DisplayRole).toString())); + + setEnabled(false); + qApp->processEvents(QEventLoop::ExcludeUserInputEvents); + controller->getWindow()->openPath(file_path); + setEnabled(true); + } } -QWidget* HomeScreenWidgetMobile::makeFileListWidget(HomeScreenController* controller, QWidget* parent) +QListWidget* HomeScreenWidgetMobile::makeFileListWidget() { - Q_UNUSED(controller); - Q_UNUSED(parent); - - QGridLayout* file_list_layout = new QGridLayout(); - - QLabel* file_list_headline = makeHeadline(tr("File list")); - file_list_layout->addWidget(file_list_headline, 0, 0, 1, 2); - - file_list_stack = new QStackedLayout(); - file_list_layout->addLayout(file_list_stack, 1, 0, 1, 2); - file_list_layout->setRowStretch(1, 1); - - file_list = new QListWidget(); - QScroller::grabGesture(file_list->viewport(), QScroller::TouchGesture); - QFont list_font = file_list->font(); + file_list_widget = new QListWidget(); + QScroller::grabGesture(file_list_widget->viewport(), QScroller::TouchGesture); + QFont list_font = file_list_widget->font(); int pixel_size = list_font.pixelSize(); if (pixel_size > 0) { @@ -478,98 +460,131 @@ QWidget* HomeScreenWidgetMobile::makeFileListWidget(HomeScreenController* contro pixel_size = list_font.pointSize(); list_font.setPointSize(pixel_size * 3 / 2); } - file_list->setFont(list_font); - file_list->setSpacing(pixel_size/2); - file_list->setCursor(Qt::PointingHandCursor); - file_list->setStyleSheet(QString::fromLatin1(" \ + file_list_widget->setFont(list_font); + file_list_widget->setSpacing(pixel_size/2); + file_list_widget->setCursor(Qt::PointingHandCursor); + file_list_widget->setStyleSheet(QString::fromLatin1(" \ QListWidget::item:hover { \ color: palette(highlighted-text); \ background: palette(highlight); \ } ")); - file_list_stack->addWidget(file_list); - // Look for map files at device-specific locations + return file_list_widget; +} + +void HomeScreenWidgetMobile::updateFileListWidget() +{ + file_list_widget->clear(); + if (history.empty()) + { + // First screen. + // Recent files first. + Settings& settings = Settings::getInstance(); + auto recent_files = settings.getSetting(Settings::General_RecentFilesList).toStringList(); + for (auto& file_path : recent_files) + { + auto file_info = QFileInfo(file_path); + if (file_info.exists()) + addItemToFileList(file_info); + } + #ifdef Q_OS_ANDROID - const auto style = file_list->style(); - StorageLocation::refresh(); - const auto locations = StorageLocation::knownLocations(); - for (const auto& location : *locations) + // If there are no recent files, offer a link to the Android storage manual page. + if (recent_files.isEmpty()) + { + auto* help_item = new QListWidgetItem(tr("Help")); + help_item->setData(pathRole(), QLatin1String("doc:")); + help_item->setIcon(file_list_widget->style()->standardIcon(QStyle::SP_DialogHelpButton)); + file_list_widget->addItem(help_item); + } +#endif + + // Device-specific locations next. + // For disambiguation, using the full path for the label. + StorageLocation::refresh(); + const auto locations = StorageLocation::knownLocations(); + for (const auto& location : *locations) + { + auto file_info = QFileInfo(location.path()); + auto icon = file_list_widget->style()->standardIcon(QStyle::SP_DirIcon); + addItemToFileList(location.path(), file_info, location.hint(), icon); + } + + // Examples last. + // The examples path isn't writable, so the hint will be overridden. + auto file_info = QFileInfo(QLatin1String("data:/examples")); + addItemToFileList(tr("Examples"), file_info); + } + else { + // Backwards navigation on top. + auto* parent_item = new QListWidgetItem(QLatin1String("..")); + parent_item->setData(pathRole(), QLatin1String("..")); + parent_item->setIcon(file_list_widget->style()->standardIcon(QStyle::SP_FileDialogToParent)); + file_list_widget->addItem(parent_item); + + // Contents of selected location, files first. + const auto& location = history.back(); QIcon icon; - QString hint_text; switch (location.hint()) { case StorageLocation::HintApplication: - icon = style->standardIcon(QStyle::SP_MessageBoxInformation); - hint_text = StorageLocation::fileHintTextTemplate(location.hint()); + icon = file_list_widget->style()->standardIcon(QStyle::SP_MessageBoxInformation); break; case StorageLocation::HintReadOnly: - icon = style->standardIcon(QStyle::SP_MessageBoxWarning); - hint_text = StorageLocation::fileHintTextTemplate(location.hint()); + icon = file_list_widget->style()->standardIcon(QStyle::SP_MessageBoxWarning); break; - default: + case StorageLocation::HintNormal: + case StorageLocation::HintInvalid: break; } - - QDirIterator it(location.path(), QDir::Files | QDir::NoDotAndDotDot, QDirIterator::Subdirectories); - while (it.hasNext()) { - it.next(); - auto format = FileFormats.findFormatForFilename(it.filePath()); - if (!format || !format->supportsExport()) - continue; - - QListWidgetItem* new_item = new QListWidgetItem(it.fileInfo().fileName()); - new_item->setData(Qt::UserRole, it.filePath()); - new_item->setToolTip(it.filePath()); - if (Q_LIKELY( - location.hint() == StorageLocation::HintReadOnly - || it.fileInfo().isWritable() )) - { - new_item->setIcon(icon); - new_item->setData(Qt::UserRole+1, hint_text); - } - else - { - new_item->setIcon(style->standardIcon(QStyle::SP_MessageBoxWarning)); - new_item->setData(Qt::UserRole+1, StorageLocation::fileHintTextTemplate(StorageLocation::HintReadOnly)); - } - file_list->addItem(new_item); + + constexpr auto filters = QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot; + constexpr auto flags = QDir::DirsLast | QDir::Name | QDir::IgnoreCase | QDir::LocaleAware; + auto info_list = QDir(location.path()).entryInfoList(filters, flags); + for (const auto& file_info : info_list) + { + addItemToFileList(file_info, location.hint(), icon); } } -#endif - - if (file_list->count() == 0) - { - // Remove the incorrect part from the existing translated text. - /// \todo Review the text for placing the first maps - auto label_text = tr("No map files found!

Copy map files to a top-level folder named 'OOMapper' on the device or a memory card."); - label_text.truncate(label_text.indexOf(QLatin1String("
"))); - QLabel* message_label = new QLabel(label_text); - message_label->setWordWrap(true); - file_list_stack->addWidget(message_label); - file_list_stack->setCurrentWidget(message_label); - } - - connect(file_list, &QListWidget::itemClicked, this, &HomeScreenWidgetMobile::fileClicked); - - QWidget* file_list_widget = new QWidget(); - file_list_widget->setLayout(file_list_layout); - file_list_widget->setAutoFillBackground(true); - return file_list_widget; } -void HomeScreenWidgetMobile::addFilesToFileList(QListWidget* file_list, const QString& path) + +void HomeScreenWidgetMobile::addItemToFileList(const QFileInfo& file_info, int hint, const QIcon& icon) { - QDirIterator it(path, QDir::Files | QDir::NoDotAndDotDot, QDirIterator::Subdirectories); - while (it.hasNext()) { - it.next(); - if (FileFormats.findFormatForFilename(it.filePath()) == nullptr) - continue; - - QListWidgetItem* new_item = new QListWidgetItem(it.fileInfo().fileName()); - new_item->setData(Qt::UserRole, it.filePath()); - new_item->setToolTip(it.filePath()); - file_list->addItem(new_item); + addItemToFileList(file_info.fileName(), file_info, hint, icon); +} + +void HomeScreenWidgetMobile::addItemToFileList(const QString& label, const QFileInfo& file_info, int hint, const QIcon& icon) +{ + const auto file_path = file_info.filePath(); + const auto* format = FileFormats.findFormatForFilename(file_path); + if (file_info.isDir() || + (format && format->fileType() == FileFormat::MapFile)) + { + auto* new_item = new QListWidgetItem(label); + new_item->setData(pathRole(), file_path); + new_item->setToolTip(file_path); + if (file_info.isDir()) + { + // Use dir icon, numerical hint. + new_item->setIcon(icon.isNull() ? file_list_widget->style()->standardIcon(QStyle::SP_DirIcon) : icon); + new_item->setData(hintRole(), hint); + } + else if (hint == StorageLocation::HintReadOnly + || (file_info.isWritable() && format->supportsExport())) + { + // Use icon/hint as-is. + new_item->setIcon(icon); + new_item->setData(hintRole(), StorageLocation(file_path, StorageLocation::Hint(hint)).hintText()); + } + else + { + // Override with read-only warning. + new_item->setIcon(file_list_widget->style()->standardIcon(QStyle::SP_MessageBoxWarning)); + new_item->setData(hintRole(), StorageLocation(file_path, StorageLocation::HintReadOnly).hintText()); + } + file_list_widget->addItem(new_item); } } diff --git a/src/gui/widgets/home_screen_widget.h b/src/gui/widgets/home_screen_widget.h index 9f1a2ca98..f236cae35 100644 --- a/src/gui/widgets/home_screen_widget.h +++ b/src/gui/widgets/home_screen_widget.h @@ -23,6 +23,7 @@ #include +#include #include #include #include @@ -31,6 +32,7 @@ class QAbstractButton; class QCheckBox; +class QFileInfo; class QIcon; class QLabel; class QListWidget; @@ -43,6 +45,7 @@ class QStackedLayout; namespace OpenOrienteering { class HomeScreenController; +class StorageLocation; /** @@ -88,6 +91,8 @@ public slots: * for triggering a top level activity in the home screen. */ QAbstractButton* makeButton(const QString& text, const QIcon& icon, QWidget* parent = nullptr) const; + /** Returns the role to be used for storing paths. */ + constexpr static int pathRole() { return Qt::UserRole; } HomeScreenController* controller; }; @@ -175,18 +180,13 @@ public slots: * sets the "checked" state of the control for displaying the tip. */ void setTipsVisible(bool state) override; - /** Adds the examples to the list of files - * if they are not already there. */ - void showExamples(); - /** Shows the settings dialog, adjusted for small screens. */ void showSettings(); -protected slots: +protected: /** Opens a file when its is list item is clicked. */ void fileClicked(QListWidgetItem* item); -protected: /** Triggers title image adjustment on resize events. */ void resizeEvent(QResizeEvent* event) override; @@ -194,17 +194,25 @@ protected slots: void adjustTitlePixmapSize(); /** Creates the file list widget. */ - QWidget* makeFileListWidget(HomeScreenController* controller, QWidget* parent = nullptr); + QListWidget* makeFileListWidget(); + + /** Updates the file list widget. */ + void updateFileListWidget(); + + /** Add a single file or dir item to the file list. */ + void addItemToFileList(const QFileInfo& file_info, int hint = 0, const QIcon& icon = {}); + + /** Add a single item to the file list, using a custom display name. */ + void addItemToFileList(const QString& label, const QFileInfo& file_info, int hint = 0, const QIcon& icon = {}); - /** Iterates over all files at the given path and adds all map files to the list */ - void addFilesToFileList(QListWidget* file_list, const QString& path); + /** Returns the role to be used for storing hints (number or text). */ + constexpr static int hintRole() { return Qt::UserRole + 1; } private: QPixmap title_pixmap; QLabel* title_label; - QStackedLayout* file_list_stack; - QListWidget* file_list; - QPushButton* examples_button; + QListWidget* file_list_widget; + std::vector history; }; From 969306269f72cc8e87210a91dadf422b8d1cf386 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 14 Oct 2018 09:48:32 +0200 Subject: [PATCH 32/49] Android: Run MediaScanner on GPX and image updates Closes #1115. --- src/sensors/gps_track.cpp | 5 +++++ src/templates/template_image.cpp | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/sensors/gps_track.cpp b/src/sensors/gps_track.cpp index aa46ec7c2..be761bfb7 100644 --- a/src/sensors/gps_track.cpp +++ b/src/sensors/gps_track.cpp @@ -30,6 +30,7 @@ // IWYU pragma: no_include #include "core/georeferencing.h" +#include "core/storage_location.h" // IWYU pragma: keep #include "templates/template_track.h" #include "util/dxfparser.h" @@ -220,6 +221,10 @@ bool Track::saveTo(const QString& path) const stream.writeEndDocument(); file.close(); +#ifdef Q_OS_ANDROID + // Make the MediaScanner aware of the *updated* file. + Android::mediaScannerScanFile(path); +#endif return true; } diff --git a/src/templates/template_image.cpp b/src/templates/template_image.cpp index 723576973..71ecf8cff 100644 --- a/src/templates/template_image.cpp +++ b/src/templates/template_image.cpp @@ -56,6 +56,7 @@ #include "core/latlon.h" #include "core/map.h" #include "core/map_coord.h" +#include "core/storage_location.h" // IWYU pragma: keep #include "gui/georeferencing_dialog.h" #include "gui/select_crs_dialog.h" #include "gui/util_gui.h" @@ -99,7 +100,12 @@ TemplateImage::~TemplateImage() bool TemplateImage::saveTemplateFile() const { - return image.save(template_path); + const auto result = image.save(template_path); +#ifdef Q_OS_ANDROID + // Make the MediaScanner aware of the *updated* file. + Android::mediaScannerScanFile(template_path); +#endif + return result; } From 63e40bb5ead804c129cdc0a62f119764cad149d4 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 14 Oct 2018 11:56:59 +0200 Subject: [PATCH 33/49] MapEditor: Don't delete GPX template too early When enabling GPX tracking, and there is already an template which does not have class TemplateTrack, move the template's deletion out of the loop. We may want to preserve data such as visibility before before the actual deletion. --- src/gui/map/map_editor.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gui/map/map_editor.cpp b/src/gui/map/map_editor.cpp index 824f9dd16..40836dd06 100644 --- a/src/gui/map/map_editor.cpp +++ b/src/gui/map/map_editor.cpp @@ -3321,18 +3321,18 @@ void MapEditorController::enableGPSDisplay(bool enable) // There is a template for this track. new_template = false; track = qobject_cast(temp); - if (!track) - { - // Need to replace the template at template_index - map->setTemplateAreaDirty(template_index); - map->deleteTemplate(template_index); - } break; } } if (!track) { + if (!new_template) + { + // Need to replace the template at template_index + map->setTemplateAreaDirty(template_index); + map->deleteTemplate(template_index); + } track = new TemplateTrack(gpx_file_path, map); map->addTemplate(track, template_index); } From 11977f36373473d0c4abec2b93f77ce4f06f41df Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 14 Oct 2018 14:05:51 +0200 Subject: [PATCH 34/49] Squashed 'doc/manual/pages/' changes from 7a1d2d3..5292aee 5292aee Fix main window screenshot shadow 0638d41 Move paint-on-template doc to Android app page 7a3652b Update Android storage page f03189c Update main window screenshot git-subtree-dir: doc/manual/pages git-subtree-split: 5292aee34c9f4cc994f045b99b07ddb59eb80a1a --- android-app.md | 21 ++++++++++++++++++++- android-pc.md | 18 ------------------ android-storage.md | 19 +++++++++++++++++-- images/main_window.png | Bin 139343 -> 129388 bytes 4 files changed, 37 insertions(+), 21 deletions(-) diff --git a/android-app.md b/android-app.md index 045e7e4b6..ea9605eb0 100644 --- a/android-app.md +++ b/android-app.md @@ -127,9 +127,28 @@ Note that the temporary trace is not saved in the map. This removes the temporay traces and position markers. (They will also be discarded when closing the map file.) +#### ![ ](../mapper-images/pencil.png) Paint on template + +By this tool, mapper supports free-hand drawing onto image templates. There is +a small selection of colors for drawing. White is used for corrections to +previous drawings. There is also a dedicated undo/redo feature. + +This tool is an convenient alternative when you want to do only (or mostly) +drafting in the field, but draw the final version of the map at home on a PC. +It does not create new map objects but only alters the template you draw on. +This may help to deal with low processing power or battery runtime on mobile +devices. + +Please note that direct drawing onto base map images is *not* recommended: +First, the eraser tool would also erase the base map. Second, these images +usually are in the lossy JPEG format which will introduce visible artifacts +when saving the file and loading it repeatedly. + + #### ![ ](../mapper-images/paint-on-template-settings.png) Paint-on-template settings -This button allows to select the active image for scribbling (using the symbol above it). +This button allows to select an image template for scribbling, +or to add a new one covering the vicinity of your position. ----- diff --git a/android-pc.md b/android-pc.md index ab068a2b4..4b09aafa7 100644 --- a/android-pc.md +++ b/android-pc.md @@ -23,21 +23,3 @@ In this case, the easiest way is to first create a new map with the same symbol After that, load the existing map as template in the new map. Then use the alignment tools for templates to move the existing map to match with the new georeferenced template. When you are finished, import the existing map template into the new map file using the corresponding action in the template dock widget, and you should be done. Attention: especially for old maps, the whole existing map may be locally distorted. In this case it will not be possible to match the old map and the georeferenced template and the only way to georeference the map is to do a tedious undistortion. Mapper does not provide a tool for this. - - -## Preparing for free-hand scribbling - -![ ](../mapper-images/pencil.png) - -Mapper supports free-hand drawing onto image templates using the tool with the pencil icon shown above. This is especially convenient to use in case you want to do only (or mostly) drafting while you are in the field, and draw the final version of the map at home on a PC. It has the advantage of being quick and it only alters the template you draw on, i.e. it does not create new map objects, so Mapper's map display does not become slower. This may be relevant on mobile devices because of little processing power or because of battery runtime. - -If you want to use this functionality, you should best load a separate, initially transparent image template in png format for it. Suited images can be downloaded here: - - - [size 1024x1024](attachment/scribble_1024.png) - - [size 2048x2048](attachment/scribble_2048.png) - -The images contain a red border, but are transparent everywhere else. After downloading a file, load it in your map file and move it so it covers the area you want to draw scribbles on. Make sure that the image resolution of the template is good enough by drawing a test scribble. If not, you need to scale it down using the template settings. You may also create multiple copies of the file and load them as separate templates. - -Direct drawing onto base map images is NOT recommended because you will not be able to use the eraser without also erasing the base map and because these images usually are in the lossy JPEG format which will introduce visible artifacts when saving the file and loading it again. - -Note that to view the scribbles on a PC after creating them on a mobile device, you need to transfer not only the map file, but also the affected image template file(s) back to the PC, as the scribbles are saved directly in the image files. diff --git a/android-storage.md b/android-storage.md index 7942cc690..c2c3cdcee 100644 --- a/android-storage.md +++ b/android-storage.md @@ -27,10 +27,25 @@ OpenOrienteering Mapper for Android will create these folders when they are miss You can transfer files from and to a PC via a USB cable. Android supports multiple file transfer protocols. - MTP is the preferred method now. There is hardly any interference for apps while the device is connected to the PC. - Via MTP, Android will only show files which are known to its Media Scanner. If you cannot find a file such a recorded GPX track, a reboot of the device could trigger a rescan. + Via MTP, Android will only show files which are known to its Media Scanner. - Mass Storage makes the storage unavailable for apps for the duration of the connection with the PC. (Android also needs to terminate apps which are stored on the volume which is provided as mass storage.) Unlike MTP, mass storage does not depend on the media scanner, so all files are always visible. -In some cases, users suffered from files being damaged during transfer. This can be worked around by choosing another method for file transfer. Remember to keep backups and to verify transferred files. +Note that after mapping, you might want to transfer back not only the modified map but also GPX tracks and templates you painted on. + + +## Data loss prevention and recovery + +*Remember to keep backups and to verify transferred files.* + +If a file appears to be corrupted after transfer back to PC, or you cannot find +a new file such as a recorded GPX track, a reboot of the Android device could +solve the issue. After the reboot, Android's media scanner will take notice of +new files and changed file sizes. However, Mapper v0.8.3 is expected to bring a +solution to this issue. + +In some situations, the Mapper app might not be able to properly save data and +shutdown as quickly as requested by the Android operating system, for example +when you start other apps or when the device runs out of power. diff --git a/images/main_window.png b/images/main_window.png index f137689cbd89592fbc0b182f1a1bcc786c868429..11cfd7215fec20bdf7e814a89a2c092c81fd0edf 100644 GIT binary patch literal 129388 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Ê+3}!B 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�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

dUh8x2zy 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 Date: Sun, 14 Oct 2018 14:23:06 +0200 Subject: [PATCH 35/49] translations: Auto-update Spanish --- translations/map_symbols_es.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/translations/map_symbols_es.ts b/translations/map_symbols_es.ts index 43feb4bc2..91216e763 100644 --- a/translations/map_symbols_es.ts +++ b/translations/map_symbols_es.ts @@ -2665,7 +2665,7 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 - + Un acantilado, cantera o banco de tierra infranqueable (ver 106) se muestra con una línea de 0,35 mm y etiquetas hacia abajo que muestran su extensión total desde la línea superior hasta el pie. En las paredes de roca verticales, las marcas pueden omitirse si el espacio es corto, por ejemplo, en pasajes estrechos entre acantilados (el pasaje debe trazarse con una anchura de al menos 0,3 mm). Las etiquetas pueden extenderse sobre un símbolo de área que represente detalles inmediatamente debajo de la pared rocosa. Cuando una cara de roca cae directamente al agua haciendo imposible pasar bajo el acantilado a lo largo del borde del agua, la línea de la orilla se omite o las marcas deben extenderse claramente sobre la línea de la orilla. Impassable cliff, no tags @@ -6247,7 +6247,7 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 - + Un acantilado, cantera o banco de tierra infranqueable (ver 106) se muestra con una línea de 0,35 mm y etiquetas hacia abajo que muestran su extensión total desde la línea superior hasta el pie. En las paredes de roca verticales, las marcas pueden omitirse si el espacio es corto, por ejemplo, en pasajes estrechos entre acantilados (el pasaje debe trazarse con una anchura de al menos 0,3 mm). Las etiquetas pueden extenderse sobre un símbolo de área que represente detalles inmediatamente debajo de la pared rocosa. Cuando una cara de roca cae directamente al agua haciendo imposible pasar bajo el acantilado a lo largo del borde del agua, la línea de la orilla se omite o las marcas deben extenderse claramente sobre la línea de la orilla. Impassable cliff, minimum size @@ -6257,7 +6257,7 @@ La línea púrpura se introducirá un poco en el símbolo de meta. Es una defici An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 - + Un acantilado, cantera o banco de tierra infranqueable (ver 106) se muestra con una línea de 0,35 mm y etiquetas hacia abajo que muestran su extensión total desde la línea superior hasta el pie. En las paredes de roca verticales, las marcas pueden omitirse si el espacio es corto, por ejemplo, en pasajes estrechos entre acantilados (el pasaje debe trazarse con una anchura de al menos 0,3 mm). Las etiquetas pueden extenderse sobre un símbolo de área que represente detalles inmediatamente debajo de la pared rocosa. Cuando una cara de roca cae directamente al agua haciendo imposible pasar bajo el acantilado a lo largo del borde del agua, la línea de la orilla se omite o las marcas deben extenderse claramente sobre la línea de la orilla. Impassable cliff, no tags @@ -8055,7 +8055,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 - + Un acantilado, cantera o banco de tierra infranqueable (ver 106) se muestra con una línea de 0,35 mm y etiquetas hacia abajo que muestran su extensión total desde la línea superior hasta el pie. En las paredes de roca verticales, las marcas pueden omitirse si el espacio es corto, por ejemplo, en pasajes estrechos entre acantilados (el pasaje debe trazarse con una anchura de al menos 0,3 mm). Las etiquetas pueden extenderse sobre un símbolo de área que represente detalles inmediatamente debajo de la pared rocosa. Cuando una cara de roca cae directamente al agua haciendo imposible pasar bajo el acantilado a lo largo del borde del agua, la línea de la orilla se omite o las marcas deben extenderse claramente sobre la línea de la orilla. Impassable cliff, minimum size @@ -8065,7 +8065,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 - + Un acantilado, cantera o banco de tierra infranqueable (ver 106) se muestra con una línea de 0,35 mm y etiquetas hacia abajo que muestran su extensión total desde la línea superior hasta el pie. En las paredes de roca verticales, las marcas pueden omitirse si el espacio es corto, por ejemplo, en pasajes estrechos entre acantilados (el pasaje debe trazarse con una anchura de al menos 0,3 mm). Las etiquetas pueden extenderse sobre un símbolo de área que represente detalles inmediatamente debajo de la pared rocosa. Cuando una cara de roca cae directamente al agua haciendo imposible pasar bajo el acantilado a lo largo del borde del agua, la línea de la orilla se omite o las marcas deben extenderse claramente sobre la línea de la orilla. Impassable cliff, no tags From 2cacd5f2751eb8f58b7464fbffc75a1d50951cb4 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 14 Oct 2018 14:24:58 +0200 Subject: [PATCH 36/49] translation: Auto-update Ukrainian --- translations/map_symbols_uk.ts | 50 ++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/translations/map_symbols_uk.ts b/translations/map_symbols_uk.ts index 23a9ffced..a37436e86 100644 --- a/translations/map_symbols_uk.ts +++ b/translations/map_symbols_uk.ts @@ -4543,7 +4543,7 @@ Competitors violating this rule will be disqualified.</span> Stony ground Name of symbol 210.1 - + Кам'янистий ґрунт An area of stony or rocky ground which reduces runnability. The dots shall be randomly distributed with density according to the amount of rock. A minimum of three dots shall be used. @@ -4852,7 +4852,7 @@ Minimum size: 4 dashes. Forest: easy running Name of symbol 405 - + Чистий ліс An area of typical open runnable forest for the particular type of terrain. If no part of the forest is runnable then no white should appear on the map. @@ -4862,7 +4862,7 @@ Minimum size: 4 dashes. Forest: slow running Name of symbol 406 - + Середньопрохідна рослинність An area with dense trees (low visibility) which reduces running to ca. 60-80% of normal speed. @@ -5867,7 +5867,7 @@ North lines may be broken where they obscure small features such as boulders, kn A marked route is shown on the map with a dashed line. Description of symbol 705 - + Розмічені ділянки дистанції зображуються на карті штриховою лінією. Finish @@ -8352,22 +8352,22 @@ The ISSkiOM symbol number is 310.1. Mapper uses this number already for the mini Forest: easy running Name of symbol 405 - + Чистий ліс Typically open runnable forest for the particular type of terrain. If no part of the forest is runnable then no white should appear on the map. Description of symbol 405 - + Типовий для певного типу місцевості чистий прохідний ліс. Якщо на місцевості відсутній чистий прохідний ліс, на карті не повинно бути білого кольору. Forest: slow running Name of symbol 406 - + Середньопрохідна рослинність An area with dense trees (low visibility) which reduces running to ca. 60-80% of normal speed. Description of symbol 406 - + Площа з густими деревами (низька видимість), де швидкість бігу знижується до 60 - 80% від нормальної. Orchard @@ -8533,12 +8533,12 @@ direction of planting. If yellow coloured areas becomes dominant, a screen (75%) High stone wall Name of symbol 521 - + Високий кам’яний мур A stone wall higher than ca 1.5 m, not crossable to the average orienteer. Description of symbol 521 - + Мурована стіна вище 1,5 м, нездоланна для спортсмена середнього зросту. Fence @@ -8568,7 +8568,7 @@ direction of planting. If yellow coloured areas becomes dominant, a screen (75%) All ways through or over high fences or walls must be indicated. The symbol may also be used for a gate through or stile over a stone wall (519) or a fence (522) or a pipeline (534). Description of symbol 525 - + Всі шляхи крізь високі огорожі або стіни повинні бути зображені. Знак може також показувати хвіртку або перелаз через тин (522), мур (519), іншу огорожу (534). Building @@ -8663,7 +8663,7 @@ direction of planting. If yellow coloured areas becomes dominant, a screen (75%) A pipeline which cannot be crossed. Description of symbol 534 - + Трубопровід, що не може бути подоланим. High tower @@ -9001,7 +9001,7 @@ that it is more clearly visible in the track network. A marked route is shown on the map with a dashed line. Description of symbol 705 - + Розмічені ділянки дистанції зображуються на карті штриховою лінією. Finish @@ -9045,7 +9045,11 @@ A bounding line may be drawn if there is no natural boundary, as follows: - a dashed line indicates intermittent marking on the ground, - no line indicates no marking on the ground. Description of symbol 709 - + Заборонена для бігу територія (див. також знак 528) зображується вертикальними лініями пурпурного кольору. +Якщо немає природного кордону, креслиться гранична лінія в наступних випадках: + - суцільна лінія вказує, що межу розмічено по контуру (маркіровкою, стрічкою) на місцевості; + - штрихова лінія вказує, що на місцевості кордон розмічено переривчато; + - відсутність лінії вказує, що на місцевості кордон не розмічено. Out-of-bounds area, solid boundary @@ -9244,7 +9248,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Stony ground, small Name of symbol 210 - + Кам’янистий ґрунт Stony or rocky ground which affects going should be shown on the map. The dots should be randomly distributed with density according to the amount of rock. A minimum of three dots should be used. @@ -9254,7 +9258,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Stony ground Name of symbol 210.1 - + Кам'янистий ґрунт Stony or rocky ground which affects going should be shown on the map. The dots should be randomly distributed with density according to the amount of rock. A minimum of three dots should be used. @@ -9289,7 +9293,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Where the lake or pond is smaller than 1 mm² on the printed map, the bank line is omitted. Description of symbol 302 - + Коли озеро чи ставок займає на карті площу менш ніж 1 мм² в масштабі видання, берегова лінія опускається. Waterhole @@ -9339,7 +9343,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming A marsh which is uncrossable or dangerous for the runner. A black line surrounds the symbol. Description of symbol 309 - + Болото, що непрохідне або небезпечне для спортсмена. Знак оточує чорна лінія. Uncrossable marsh, border line @@ -9349,7 +9353,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming A black line surrounds the symbol. Description of symbol 309.1 - + Чорна лінія оточує знак непрохідного болота. Uncrossable marsh, with border line @@ -9783,7 +9787,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming A marked route is shown on the map with a dashed line. Description of symbol 705 - + Розмічені ділянки дистанції зображуються на карті штриховою лінією. Finish @@ -9827,7 +9831,11 @@ A bounding line may be drawn if there is no natural boundary, as follows: - a dashed line indicates intermittent marking on the ground, - no line indicates no marking on the ground. Description of symbol 709 - + Заборонена для бігу територія (див. також знак 528) зображується вертикальними лініями пурпурного кольору. +Якщо немає природного кордону, креслиться гранична лінія в наступних випадках: + - суцільна лінія вказує, що межу розмічено по контуру (маркіровкою, стрічкою) на місцевості; + - штрихова лінія вказує, що на місцевості кордон розмічено переривчато; + - відсутність лінії вказує, що на місцевості кордон не розмічено. Out-of-bounds area, solid boundary From a223a45119262e959f6231888e39e1d30454cbe0 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 14 Oct 2018 12:25:23 +0200 Subject: [PATCH 37/49] MapEditor: Ensure visibility on GPX tracking start --- src/gui/map/map_editor.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/gui/map/map_editor.cpp b/src/gui/map/map_editor.cpp index 40836dd06..33ec275bc 100644 --- a/src/gui/map/map_editor.cpp +++ b/src/gui/map/map_editor.cpp @@ -3325,6 +3325,11 @@ void MapEditorController::enableGPSDisplay(bool enable) } } + // Derive new visibility from previous/default one. + auto visibility = main_view->getTemplateVisibility(track); + visibility.opacity = std::max(0.5f, visibility.opacity); + visibility.visible = true; + if (!track) { if (!new_template) @@ -3341,14 +3346,16 @@ void MapEditorController::enableGPSDisplay(bool enable) track->loadTemplateFile(false); } track->configureForGPSTrack(); - map->setTemplateAreaDirty(template_index); if (new_template) { // When the map is saved, the new track must be saved even if it is empty. track->setHasUnsavedChanges(true); map->setTemplatesDirty(); } - + + main_view->setTemplateVisibility(track, visibility); + map->setTemplateAreaDirty(template_index); + gps_track_recorder = new GPSTrackRecorder(gps_display, track, gps_track_draw_update_interval, map_widget); } } From aab004b77eda155eb2aacd70b0b1871e8491650f Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 14 Oct 2018 13:36:23 +0200 Subject: [PATCH 38/49] MapEditor: Fix reloading of GPX tracks When restarting tracking for a file which was *not loaded* as *Template Track*, correctly setup georeferencing and state before loading the file. --- src/gui/map/map_editor.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/gui/map/map_editor.cpp b/src/gui/map/map_editor.cpp index 33ec275bc..9f6a66170 100644 --- a/src/gui/map/map_editor.cpp +++ b/src/gui/map/map_editor.cpp @@ -3339,15 +3339,16 @@ void MapEditorController::enableGPSDisplay(bool enable) map->deleteTemplate(template_index); } track = new TemplateTrack(gpx_file_path, map); + // This will set the state to 'Loaded', so we need to reset it + // to `Unloaded` to allow for loading the file when it becomes + // visible for the first time. + track->configureForGPSTrack(); + if (QFileInfo::exists(gpx_file_path)) + { + track->unloadTemplateFile(); + track->loadTemplateFile(false); + } map->addTemplate(track, template_index); - } - if (track->getTemplateState() != Template::Loaded) - { - track->loadTemplateFile(false); - } - track->configureForGPSTrack(); - if (new_template) - { // When the map is saved, the new track must be saved even if it is empty. track->setHasUnsavedChanges(true); map->setTemplatesDirty(); From 0a88e5aa5c17d9331703f031773a6f89595d5362 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Fri, 12 Oct 2018 06:30:30 +0200 Subject: [PATCH 39/49] GPSDisplay: Review, minor corrections Put under code check, and fix warnings and minor issues such as includes, implicit conversion, redundant type names, constness etc. --- code-check-wrapper.sh | 1 + src/sensors/gps_display.cpp | 70 +++++++++++++++++++------------------ src/sensors/gps_display.h | 40 ++++++++++----------- 3 files changed, 57 insertions(+), 54 deletions(-) diff --git a/code-check-wrapper.sh b/code-check-wrapper.sh index c494ede8b..675788e70 100755 --- a/code-check-wrapper.sh +++ b/code-check-wrapper.sh @@ -52,6 +52,7 @@ PATTERN=" \ file_import_export.cpp \ georeferencing_dialog.cpp \ gdal_manager.cpp \ + gps_display.cpp \ key_button_bar.cpp \ /map.cpp \ map_editor.cpp \ diff --git a/src/sensors/gps_display.cpp b/src/sensors/gps_display.cpp index 9bb62a124..894f53520 100644 --- a/src/sensors/gps_display.cpp +++ b/src/sensors/gps_display.cpp @@ -20,22 +20,32 @@ #include "gps_display.h" -#if defined(QT_POSITIONING_LIB) -# include // IWYU pragma: keep -#endif #if defined(Q_OS_ANDROID) # include -# include +# include +#endif +#if defined(QT_POSITIONING_LIB) +# include +# include // IWYU pragma: keep #endif + +#include +#include #include +#include #include +#include +#include +#include #include // IWYU pragma: keep #include "core/georeferencing.h" +#include "core/latlon.h" +#include "core/map_view.h" #include "gui/util_gui.h" #include "gui/map/map_widget.h" #include "sensors/compass.h" -#include "util/backports.h" +#include "util/backports.h" // IWYU pragma: keep namespace OpenOrienteering { @@ -44,13 +54,6 @@ GPSDisplay::GPSDisplay(MapWidget* widget, const Georeferencing& georeferencing, : QObject(parent) , widget(widget) , georeferencing(georeferencing) - , source(nullptr) - , tracking_lost(false) - , has_valid_position(false) - , gps_updated(false) - , visible(false) - , distance_rings_enabled(false) - , heading_indicator_enabled(false) { #if defined(QT_POSITIONING_LIB) source = QGeoPositionInfoSource::createDefaultSource(this); @@ -67,7 +70,7 @@ GPSDisplay::GPSDisplay(MapWidget* widget, const Georeferencing& georeferencing, connect(source, &QGeoPositionInfoSource::updateTimeout, this, &GPSDisplay::updateTimeout); #elif defined(MAPPER_DEVELOPMENT_BUILD) // DEBUG - QTimer* debug_timer = new QTimer(this); + auto* debug_timer = new QTimer(this); connect(debug_timer, &QTimer::timeout, this, &GPSDisplay::debugPositionUpdate); debug_timer->start(500); visible = true; @@ -177,7 +180,8 @@ void GPSDisplay::paint(QPainter* painter) // For heading indicator, get azimuth from compass and calculate // the relative rotation to map view rotation, clockwise. - qreal heading_rotation_deg = Compass::getInstance().getCurrentAzimuth() + qRadiansToDegrees(widget->getMapView()->getRotation()); + const auto heading_rotation_deg = qreal(Compass::getInstance().getCurrentAzimuth()) + + qRadiansToDegrees(widget->getMapView()->getRotation()); painter->save(); painter->translate(gps_pos); @@ -185,12 +189,12 @@ void GPSDisplay::paint(QPainter* painter) // Draw arrow static const QPointF arrow_points[4] = { - QPointF(0, -2.5 * base_length_unit), - QPointF(base_length_unit, base_length_unit), - QPointF(0, 0), - QPointF(-base_length_unit, base_length_unit) + { 0, -2.5 * base_length_unit }, + { base_length_unit, base_length_unit }, + { 0, 0 }, + { -base_length_unit, base_length_unit } }; - painter->drawPolygon(arrow_points, 4); + painter->drawPolygon(arrow_points, std::extent::value); // Draw heading line painter->setPen(QPen(Qt::gray, base_length_unit / 6)); @@ -201,7 +205,7 @@ void GPSDisplay::paint(QPainter* painter) } else { - const qreal dot_radius = Util::mmToPixelLogical(0.5f); + const auto dot_radius = Util::mmToPixelLogical(0.5); painter->drawEllipse(gps_pos, dot_radius, dot_radius); } @@ -209,10 +213,9 @@ void GPSDisplay::paint(QPainter* painter) // Draw distance circles if (distance_rings_enabled) { - const int num_distance_rings = 2; - const qreal distance_ring_radius_meters = 10; - - auto distance_ring_radius_pixels = distance_ring_radius_meters * meters_to_pixels; + const auto num_distance_rings = 2; + const auto distance_ring_radius_meters = 10; + const auto distance_ring_radius_pixels = distance_ring_radius_meters * meters_to_pixels; painter->setPen(QPen(Qt::gray, Util::mmToPixelLogical(0.1))); painter->setBrush(Qt::NoBrush); auto radius = distance_ring_radius_pixels; @@ -226,9 +229,8 @@ void GPSDisplay::paint(QPainter* painter) // Draw accuracy circle if (latest_gps_coord_accuracy >= 0) { - auto accuracy_pixels = latest_gps_coord_accuracy * meters_to_pixels; - - painter->setPen(QPen(tracking_lost ? Qt::gray : Qt::red, Util::mmToPixelLogical(0.2f))); + const auto accuracy_pixels = qreal(latest_gps_coord_accuracy) * meters_to_pixels; + painter->setPen(QPen(tracking_lost ? Qt::gray : Qt::red, Util::mmToPixelLogical(0.2))); painter->setBrush(Qt::NoBrush); painter->drawEllipse(gps_pos, accuracy_pixels, accuracy_pixels); } @@ -237,8 +239,6 @@ void GPSDisplay::paint(QPainter* painter) #if defined(QT_POSITIONING_LIB) void GPSDisplay::positionUpdated(const QGeoPositionInfo& info) { - Q_UNUSED(info); - gps_updated = true; tracking_lost = false; has_valid_position = true; @@ -291,11 +291,11 @@ void GPSDisplay::debugPositionUpdate() return; QTime now = QTime::currentTime(); - float offset = now.msecsSinceStartOfDay() / (float)(10 * 1000); - float accuracy = 12 + 7 * qSin(2 + offset); - float altitude = 400 + 10 * qSin(1 + 0.1f * offset); + const auto offset = now.msecsSinceStartOfDay() / qreal(10 * 1000); + const auto accuracy = float(12 + 7 * qSin(2 + offset)); + const auto altitude = 400 + 10 * qSin(1 + offset / 10); - MapCoordF coord(30 * qSin(0.5f * offset), 30 * qCos(0.53f * offset)); + const auto coord = MapCoordF(30 * qSin(0.5 * offset), 30 * qCos(0.53 * offset)); emit mapPositionUpdated(coord, accuracy); if (georeferencing.isValid() && ! georeferencing.isLocal()) @@ -332,7 +332,9 @@ MapCoordF GPSDisplay::calcLatestGPSCoord(bool& ok) } latest_pos_info = source->lastKnownPosition(true); - latest_gps_coord_accuracy = latest_pos_info.hasAttribute(QGeoPositionInfo::HorizontalAccuracy) ? latest_pos_info.attribute(QGeoPositionInfo::HorizontalAccuracy) : -1; + latest_gps_coord_accuracy = latest_pos_info.hasAttribute(QGeoPositionInfo::HorizontalAccuracy) + ? float(latest_pos_info.attribute(QGeoPositionInfo::HorizontalAccuracy)) + : -1; QGeoCoordinate qgeo_coord = latest_pos_info.coordinate(); if (!qgeo_coord.isValid()) diff --git a/src/sensors/gps_display.h b/src/sensors/gps_display.h index 87e84d09b..a28e135b7 100644 --- a/src/sensors/gps_display.h +++ b/src/sensors/gps_display.h @@ -27,7 +27,6 @@ # include // IWYU pragma: keep # include // IWYU pragma: keep #else -class QGeoPositionInfo; class QGeoPositionInfoSource; // IWYU pragma: keep #endif @@ -43,6 +42,8 @@ class MapWidget; /** * Retrieves the GPS position and displays a marker at this position on a MapWidget. + * + * \todo Use qreal instead of float (in all sensor code) for consistency with Qt. */ class GPSDisplay : public QObject { @@ -54,15 +55,14 @@ Q_OBJECT ~GPSDisplay() override; /** - * @brief Checks if GPS is enabled and may guide the user to the device settings. + * Checks if GPS is enabled, and may guide the user to the device settings. * - * Checks if GPS is enabled in the device settings. If this is not the case, - * it asks the user whether he wishes to open the device's location settings - * dialog. + * If GPS is not enabled in the device settings, it asks the user whether he + * wishes to open the device's location settings dialog. + * (At the moment, this is implemented for Android only.) * - * Returns true if GPS is enabled. Must return true also if the settings - * dialog remains open when returning from this function (i.e. the final - * result is not known. May return false if GPS remains disabled. + * Returns true if GPS is enabled, but also when the settings dialog remains + * open when returning from this function and the final setting is unknown. */ bool checkGPSEnabled(); @@ -74,7 +74,7 @@ Q_OBJECT /// Sets GPS marker visibility (true by default) void setVisible(bool visible); /// Returns GPS marker visibility - inline bool isVisible() const {return visible;} + bool isVisible() const { return visible; } /// Sets whether distance rings are drawn void enableDistanceRings(bool enable); @@ -85,11 +85,11 @@ Q_OBJECT void paint(QPainter* painter); /// Returns if a valid position was received since the last call to startUpdates(). - inline bool hasValidPosition() const {return has_valid_position;} + bool hasValidPosition() const { return has_valid_position; } /// Returns the latest received GPS coord. Check hasValidPosition() beforehand! - const MapCoordF& getLatestGPSCoord() const {return latest_gps_coord;} + const MapCoordF& getLatestGPSCoord() const { return latest_gps_coord; } /// Returns the accuracy of the latest received GPS coord, or -1 if unknown. Check hasValidPosition() beforehand! - float getLatestGPSCoordAccuracy() const {return latest_gps_coord_accuracy;} + float getLatestGPSCoordAccuracy() const { return latest_gps_coord_accuracy; } signals: /// Is emitted whenever a new position update happens. @@ -120,18 +120,18 @@ private slots: MapWidget* widget; const Georeferencing& georeferencing; - QGeoPositionInfoSource* source; + QGeoPositionInfoSource* source = nullptr; #if defined(QT_POSITIONING_LIB) QGeoPositionInfo latest_pos_info; #endif MapCoordF latest_gps_coord; - float latest_gps_coord_accuracy; - bool tracking_lost; - bool has_valid_position; - bool gps_updated; - bool visible; - bool distance_rings_enabled; - bool heading_indicator_enabled; + float latest_gps_coord_accuracy = 0; + bool tracking_lost = false; + bool has_valid_position = false; + bool gps_updated = false; + bool visible = false; + bool distance_rings_enabled = false; + bool heading_indicator_enabled = false; }; From e5e42368f2e2cf65b9f74e03a0717ddf83c4a1ac Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 13 Oct 2018 06:31:25 +0200 Subject: [PATCH 40/49] GPSDisplay: Review, optimization in paint() In GPSDisplay::paint(), - call Util::mmToPixel only once - determine the foreground color only once, - set pens and brushes more explicitly, locally. --- src/sensors/gps_display.cpp | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/sensors/gps_display.cpp b/src/sensors/gps_display.cpp index 894f53520..859315b2d 100644 --- a/src/sensors/gps_display.cpp +++ b/src/sensors/gps_display.cpp @@ -1,6 +1,6 @@ /* * Copyright 2013 Thomas Schöps - * Copyright 2014, 2016 Kai Pastor + * Copyright 2014, 2016, 2018 Kai Pastor * * This file is part of OpenOrienteering. * @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include #include #include @@ -171,13 +171,14 @@ void GPSDisplay::paint(QPainter* painter) return; QPointF gps_pos = widget->mapToViewport(gps_coord); + const auto one_mm = Util::mmToPixelLogical(1); + const auto mmToPixelLogical = [one_mm](qreal mm) { return mm * one_mm; }; + + const auto foreground = QColor(tracking_lost ? Qt::gray : Qt::red); + // Draw center dot or arrow - painter->setPen(Qt::NoPen); - painter->setBrush(QBrush(tracking_lost ? Qt::gray : Qt::red)); if (heading_indicator_enabled) { - const qreal base_length_unit = Util::mmToPixelLogical(0.6); - // For heading indicator, get azimuth from compass and calculate // the relative rotation to map view rotation, clockwise. const auto heading_rotation_deg = qreal(Compass::getInstance().getCurrentAzimuth()) @@ -189,23 +190,27 @@ void GPSDisplay::paint(QPainter* painter) // Draw arrow static const QPointF arrow_points[4] = { - { 0, -2.5 * base_length_unit }, - { base_length_unit, base_length_unit }, + { 0, mmToPixelLogical(-1.5) }, + { mmToPixelLogical(0.6), mmToPixelLogical(0.6) }, { 0, 0 }, - { -base_length_unit, base_length_unit } + { mmToPixelLogical(-0.6), mmToPixelLogical(0.6) } }; + painter->setPen(Qt::NoPen); + painter->setBrush(foreground); painter->drawPolygon(arrow_points, std::extent::value); // Draw heading line - painter->setPen(QPen(Qt::gray, base_length_unit / 6)); + painter->setPen(QPen(Qt::gray, mmToPixelLogical(0.1))); painter->setBrush(Qt::NoBrush); - painter->drawLine(QPointF(0, 0), QPointF(0, -10000 * base_length_unit)); // very long + painter->drawLine(QPointF(0, 0), QPointF(0, mmToPixelLogical(-500))); // very long painter->restore(); } else { - const auto dot_radius = Util::mmToPixelLogical(0.5); + const auto dot_radius = mmToPixelLogical(0.5); + painter->setPen(Qt::NoPen); + painter->setBrush(foreground); painter->drawEllipse(gps_pos, dot_radius, dot_radius); } @@ -216,7 +221,7 @@ void GPSDisplay::paint(QPainter* painter) const auto num_distance_rings = 2; const auto distance_ring_radius_meters = 10; const auto distance_ring_radius_pixels = distance_ring_radius_meters * meters_to_pixels; - painter->setPen(QPen(Qt::gray, Util::mmToPixelLogical(0.1))); + painter->setPen(QPen(Qt::gray, mmToPixelLogical(0.1))); painter->setBrush(Qt::NoBrush); auto radius = distance_ring_radius_pixels; for (int i = 0; i < num_distance_rings; ++i) @@ -230,7 +235,7 @@ void GPSDisplay::paint(QPainter* painter) if (latest_gps_coord_accuracy >= 0) { const auto accuracy_pixels = qreal(latest_gps_coord_accuracy) * meters_to_pixels; - painter->setPen(QPen(tracking_lost ? Qt::gray : Qt::red, Util::mmToPixelLogical(0.2))); + painter->setPen(QPen(foreground, mmToPixelLogical(0.2))); painter->setBrush(Qt::NoBrush); painter->drawEllipse(gps_pos, accuracy_pixels, accuracy_pixels); } From 10f12f4457095bef8fa8440d9a71a102c34d1a93 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 13 Oct 2018 09:19:00 +0200 Subject: [PATCH 41/49] GPSDisplay: Add solid white framing --- src/sensors/gps_display.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/sensors/gps_display.cpp b/src/sensors/gps_display.cpp index 859315b2d..43b8ac51e 100644 --- a/src/sensors/gps_display.cpp +++ b/src/sensors/gps_display.cpp @@ -174,6 +174,8 @@ void GPSDisplay::paint(QPainter* painter) const auto one_mm = Util::mmToPixelLogical(1); const auto mmToPixelLogical = [one_mm](qreal mm) { return mm * one_mm; }; + // Highlight markers by white framing. + const auto framing = QColor(Qt::white); const auto foreground = QColor(tracking_lost ? Qt::gray : Qt::red); // Draw center dot or arrow @@ -195,7 +197,7 @@ void GPSDisplay::paint(QPainter* painter) { 0, 0 }, { mmToPixelLogical(-0.6), mmToPixelLogical(0.6) } }; - painter->setPen(Qt::NoPen); + painter->setPen(QPen{framing, mmToPixelLogical(0.25)}); painter->setBrush(foreground); painter->drawPolygon(arrow_points, std::extent::value); @@ -209,7 +211,7 @@ void GPSDisplay::paint(QPainter* painter) else { const auto dot_radius = mmToPixelLogical(0.5); - painter->setPen(Qt::NoPen); + painter->setPen(QPen{framing, mmToPixelLogical(0.25)}); painter->setBrush(foreground); painter->drawEllipse(gps_pos, dot_radius, dot_radius); } @@ -235,8 +237,10 @@ void GPSDisplay::paint(QPainter* painter) if (latest_gps_coord_accuracy >= 0) { const auto accuracy_pixels = qreal(latest_gps_coord_accuracy) * meters_to_pixels; - painter->setPen(QPen(foreground, mmToPixelLogical(0.2))); painter->setBrush(Qt::NoBrush); + painter->setPen(QPen(framing, mmToPixelLogical(0.7))); + painter->drawEllipse(gps_pos, accuracy_pixels, accuracy_pixels); + painter->setPen(QPen(foreground, mmToPixelLogical(0.2))); painter->drawEllipse(gps_pos, accuracy_pixels, accuracy_pixels); } } From 56190cfacb774cfdb8bf6a21d03ba60c3132c514 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 14 Oct 2018 21:52:21 +0200 Subject: [PATCH 42/49] GPSDisplay: Use opacity and antialiasing --- src/sensors/gps_display.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/sensors/gps_display.cpp b/src/sensors/gps_display.cpp index 43b8ac51e..bd500d1c4 100644 --- a/src/sensors/gps_display.cpp +++ b/src/sensors/gps_display.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -174,6 +175,11 @@ void GPSDisplay::paint(QPainter* painter) const auto one_mm = Util::mmToPixelLogical(1); const auto mmToPixelLogical = [one_mm](qreal mm) { return mm * one_mm; }; + const auto flags = painter->renderHints(); + painter->setRenderHints(flags | QPainter::Antialiasing); + const auto opacity = painter->opacity(); + painter->setOpacity(0.75 * opacity); + // Highlight markers by white framing. const auto framing = QColor(Qt::white); const auto foreground = QColor(tracking_lost ? Qt::gray : Qt::red); @@ -243,6 +249,9 @@ void GPSDisplay::paint(QPainter* painter) painter->setPen(QPen(foreground, mmToPixelLogical(0.2))); painter->drawEllipse(gps_pos, accuracy_pixels, accuracy_pixels); } + + painter->setOpacity(opacity); + painter->setRenderHints(QPainter::Antialiasing); } #if defined(QT_POSITIONING_LIB) From 05550cc9a72dd584a07a7829f1dd77e630196dce Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Fri, 12 Oct 2018 09:21:39 +0200 Subject: [PATCH 43/49] GPSDisplay: Add blinking on move-to-my-location Blinking at 1 Hertz is implemented by cycling the opacity through a fixed cycle. --- src/gui/map/map_editor.cpp | 1 + src/sensors/gps_display.cpp | 76 ++++++++++++++++++++++++++++++++++++- src/sensors/gps_display.h | 49 +++++++++++++++++++++++- 3 files changed, 124 insertions(+), 2 deletions(-) diff --git a/src/gui/map/map_editor.cpp b/src/gui/map/map_editor.cpp index 824f9dd16..709e37fe2 100644 --- a/src/gui/map/map_editor.cpp +++ b/src/gui/map/map_editor.cpp @@ -1788,6 +1788,7 @@ void MapEditorController::moveToGpsPos() return; auto cur_gps_pos = gps_display->getLatestGPSCoord(); main_view->setCenter({ cur_gps_pos.x(), cur_gps_pos.y() }); + gps_display->startBlinking(3); } void MapEditorController::zoomIn() diff --git a/src/sensors/gps_display.cpp b/src/sensors/gps_display.cpp index bd500d1c4..21ed4cf71 100644 --- a/src/sensors/gps_display.cpp +++ b/src/sensors/gps_display.cpp @@ -29,6 +29,9 @@ # include // IWYU pragma: keep #endif +#include +#include + #include #include #include @@ -39,6 +42,7 @@ #include #include #include // IWYU pragma: keep +#include #include "core/georeferencing.h" #include "core/latlon.h" @@ -51,6 +55,48 @@ namespace OpenOrienteering { +namespace { + +// Opacities as understood by QPainter::setOpacity(). +static qreal opacity_curve[] = { 0.8, 1.0, 0.8, 0.5, 0.2, 0.0, 0.2, 0.5 }; + +} // namespace + + +void GPSDisplay::PulsatingOpacity::start(QObject& object) +{ + if (!timer_id) + timer_id = object.startTimer(1000 / std::extent::value); +} + +void GPSDisplay::PulsatingOpacity::stop(QObject& object) +{ + if (timer_id) + { + object.killTimer(timer_id); + *this = {}; + } +} + +bool GPSDisplay::PulsatingOpacity::advance() +{ + if (isActive()) + { + ++index; + if (index < std::extent::value) + return true; + index = 0; + } + return false; +} + +qreal GPSDisplay::PulsatingOpacity::current() const +{ + return opacity_curve[index]; +} + + + GPSDisplay::GPSDisplay(MapWidget* widget, const Georeferencing& georeferencing, QObject* parent) : QObject(parent) , widget(widget) @@ -178,7 +224,7 @@ void GPSDisplay::paint(QPainter* painter) const auto flags = painter->renderHints(); painter->setRenderHints(flags | QPainter::Antialiasing); const auto opacity = painter->opacity(); - painter->setOpacity(0.75 * opacity); + painter->setOpacity(pulsating_opacity.current() * opacity); // Highlight markers by white framing. const auto framing = QColor(Qt::white); @@ -254,6 +300,34 @@ void GPSDisplay::paint(QPainter* painter) painter->setRenderHints(QPainter::Antialiasing); } + +void GPSDisplay::startBlinking(int seconds) +{ + blink_count = std::max(1, seconds); + pulsating_opacity.start(*this); +} + +void GPSDisplay::stopBlinking() +{ + blink_count = 0; + pulsating_opacity.stop(*this); +} + +void GPSDisplay::timerEvent(QTimerEvent* e) +{ + if (e->timerId() == pulsating_opacity.timerId()) + { + if (!pulsating_opacity.advance()) + { + --blink_count; + if (blink_count <= 0) + stopBlinking(); + } + updateMapWidget(); + } +} + + #if defined(QT_POSITIONING_LIB) void GPSDisplay::positionUpdated(const QGeoPositionInfo& info) { diff --git a/src/sensors/gps_display.h b/src/sensors/gps_display.h index a28e135b7..7e5240065 100644 --- a/src/sensors/gps_display.h +++ b/src/sensors/gps_display.h @@ -1,6 +1,6 @@ /* * Copyright 2013 Thomas Schöps - * Copyright 2016 Kai Pastor + * Copyright 2016, 2018 Kai Pastor * * This file is part of OpenOrienteering. * @@ -22,6 +22,7 @@ #ifndef OPENORIENTEERING_GPS_DISPLAY_H #define OPENORIENTEERING_GPS_DISPLAY_H +#include #include #if defined(QT_POSITIONING_LIB) # include // IWYU pragma: keep @@ -33,6 +34,7 @@ class QGeoPositionInfoSource; // IWYU pragma: keep #include "core/map_coord.h" class QPainter; +class QTimerEvent; namespace OpenOrienteering { @@ -91,6 +93,19 @@ Q_OBJECT /// Returns the accuracy of the latest received GPS coord, or -1 if unknown. Check hasValidPosition() beforehand! float getLatestGPSCoordAccuracy() const { return latest_gps_coord_accuracy; } + /// Starts quick blinking for one or more seconds. + void startBlinking(int seconds); + + /// Stops blinking. + void stopBlinking(); + + /// Returns true while blinking is active. + bool isBlinking() const { return blink_count > 0; } + +protected: + /// Handles blinking. + void timerEvent(QTimerEvent* e) override; + signals: /// Is emitted whenever a new position update happens. /// If the accuracy is unknown, -1 will be given. @@ -118,6 +133,36 @@ private slots: MapCoordF calcLatestGPSCoord(bool& ok); void updateMapWidget(); + /** + * A lightweight utility for sinusoidal pulsating opacity. + * + * This class depends on another object's QObject::timerEvent() override + * to advance the pulsation state and eventually stop the activity. + * + * \see QBasicTimer + */ + class PulsatingOpacity + { + public: + /// Returns true when the pulsation is active. + bool isActive() const { return bool(timer_id); } + /// Starts a timer on the given object. + void start(QObject& object); + /// Stops the timer on the given object. + void stop(QObject& object); + /// Returns the ID of the active timer. + int timerId() const { return timer_id; } + + /// Advances the pulsation state. + bool advance(); + /// Returns the current opacity. + qreal current() const; + + private: + int timer_id = 0; + quint8 index = 0; + }; + MapWidget* widget; const Georeferencing& georeferencing; QGeoPositionInfoSource* source = nullptr; @@ -126,6 +171,8 @@ private slots: #endif MapCoordF latest_gps_coord; float latest_gps_coord_accuracy = 0; + PulsatingOpacity pulsating_opacity; + int blink_count = 0; bool tracking_lost = false; bool has_valid_position = false; bool gps_updated = false; From 7ed37a5f32c588458178ab4a17cd968ac80ae13c Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 14 Oct 2018 22:49:52 +0200 Subject: [PATCH 44/49] GPSDisplay: Increase dimensions for better visibility --- src/sensors/gps_display.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/sensors/gps_display.cpp b/src/sensors/gps_display.cpp index 21ed4cf71..6ed9187d0 100644 --- a/src/sensors/gps_display.cpp +++ b/src/sensors/gps_display.cpp @@ -241,29 +241,30 @@ void GPSDisplay::paint(QPainter* painter) painter->save(); painter->translate(gps_pos); painter->rotate(heading_rotation_deg); + painter->scale(one_mm, one_mm); // Draw arrow static const QPointF arrow_points[4] = { - { 0, mmToPixelLogical(-1.5) }, - { mmToPixelLogical(0.6), mmToPixelLogical(0.6) }, + { 0, -2.5 }, + { 1, 1 }, { 0, 0 }, - { mmToPixelLogical(-0.6), mmToPixelLogical(0.6) } + { -1, 1 } }; - painter->setPen(QPen{framing, mmToPixelLogical(0.25)}); + painter->setPen(QPen{framing, mmToPixelLogical(0.1)}); painter->setBrush(foreground); painter->drawPolygon(arrow_points, std::extent::value); // Draw heading line - painter->setPen(QPen(Qt::gray, mmToPixelLogical(0.1))); + painter->setPen(QPen(Qt::gray, 0.2)); painter->setBrush(Qt::NoBrush); - painter->drawLine(QPointF(0, 0), QPointF(0, mmToPixelLogical(-500))); // very long + painter->drawLine(QPointF(0, 0), QPointF(0, -500)); // very long painter->restore(); } else { - const auto dot_radius = mmToPixelLogical(0.5); - painter->setPen(QPen{framing, mmToPixelLogical(0.25)}); + const auto dot_radius = mmToPixelLogical(0.6); + painter->setPen(QPen{framing, mmToPixelLogical(0.3)}); painter->setBrush(foreground); painter->drawEllipse(gps_pos, dot_radius, dot_radius); } @@ -290,9 +291,9 @@ void GPSDisplay::paint(QPainter* painter) { const auto accuracy_pixels = qreal(latest_gps_coord_accuracy) * meters_to_pixels; painter->setBrush(Qt::NoBrush); - painter->setPen(QPen(framing, mmToPixelLogical(0.7))); + painter->setPen(QPen(framing, mmToPixelLogical(1))); painter->drawEllipse(gps_pos, accuracy_pixels, accuracy_pixels); - painter->setPen(QPen(foreground, mmToPixelLogical(0.2))); + painter->setPen(QPen(foreground, mmToPixelLogical(0.5))); painter->drawEllipse(gps_pos, accuracy_pixels, accuracy_pixels); } From 0a86fd566437580ee3a73ce3a06c76e8ad7eaec0 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 14 Oct 2018 23:23:45 +0200 Subject: [PATCH 45/49] GPSDisplay: Add crosshairs --- src/sensors/gps_display.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/sensors/gps_display.cpp b/src/sensors/gps_display.cpp index 6ed9187d0..53bb51a75 100644 --- a/src/sensors/gps_display.cpp +++ b/src/sensors/gps_display.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include // IWYU pragma: keep @@ -267,6 +268,20 @@ void GPSDisplay::paint(QPainter* painter) painter->setPen(QPen{framing, mmToPixelLogical(0.3)}); painter->setBrush(foreground); painter->drawEllipse(gps_pos, dot_radius, dot_radius); + + const auto five_mm = mmToPixelLogical(5); + const auto ten_mm = 2 * five_mm; + const auto draw_crosshairs = [painter, gps_pos, five_mm, ten_mm]() { + painter->drawLine(gps_pos - QPointF{five_mm, 0}, gps_pos - QPointF{ten_mm, 0}); + painter->drawLine(gps_pos + QPointF{five_mm, 0}, gps_pos + QPointF{ten_mm, 0}); + painter->drawLine(gps_pos - QPointF{0, five_mm}, gps_pos - QPointF{0, ten_mm}); + painter->drawLine(gps_pos + QPointF{0, five_mm}, gps_pos + QPointF{0, ten_mm}); + }; + painter->setBrush(Qt::NoBrush); + painter->setPen(QPen(framing, mmToPixelLogical(1))); + draw_crosshairs(); + painter->setPen(QPen(foreground, mmToPixelLogical(0.5))); + draw_crosshairs(); } auto meters_to_pixels = widget->getMapView()->lengthToPixel(qreal(1000000) / georeferencing.getScaleDenominator()); From 44d9e5bfc6b5ff9b84ed2c5ee165807e700cca20 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 18 Oct 2018 19:48:47 +0200 Subject: [PATCH 46/49] ISOM2017: Update Purple CMYK ISOM 2017 Appendix 1 demands "35_85_0_0". --- symbol sets/10000/ISOM2017_10000.omap | 2 +- symbol sets/15000/ISOM2017_15000.omap | 2 +- symbol sets/src/ISOM2017_15000.xmap | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/symbol sets/10000/ISOM2017_10000.omap b/symbol sets/10000/ISOM2017_10000.omap index 826f48795..addc91009 100644 --- a/symbol sets/10000/ISOM2017_10000.omap +++ b/symbol sets/10000/ISOM2017_10000.omap @@ -3,7 +3,7 @@ -PURPLE +PURPLE BLACK diff --git a/symbol sets/15000/ISOM2017_15000.omap b/symbol sets/15000/ISOM2017_15000.omap index 30df19b7d..3645f5d1a 100644 --- a/symbol sets/15000/ISOM2017_15000.omap +++ b/symbol sets/15000/ISOM2017_15000.omap @@ -3,7 +3,7 @@ -PURPLE +PURPLE BLACK diff --git a/symbol sets/src/ISOM2017_15000.xmap b/symbol sets/src/ISOM2017_15000.xmap index db5cd956a..c4e546be3 100644 --- a/symbol sets/src/ISOM2017_15000.xmap +++ b/symbol sets/src/ISOM2017_15000.xmap @@ -5,12 +5,12 @@ - + PURPLE - + From d0ef23c4293f5b3fa259f81576f302bae2065bd1 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Fri, 19 Oct 2018 00:19:34 +0200 Subject: [PATCH 47/49] ISOM2017: Fix symbol names --- symbol sets/10000/ISOM2017_10000.omap | 6 +++--- symbol sets/15000/ISOM2017_15000.omap | 6 +++--- symbol sets/src/ISOM2017_15000.xmap | 6 +++--- translations/map_symbols_cs.ts | 10 ++++----- translations/map_symbols_da.ts | 6 +++--- translations/map_symbols_de.ts | 28 ++++++++++++------------- translations/map_symbols_eo.ts | 22 ++++++++++---------- translations/map_symbols_es.ts | 14 ++++++------- translations/map_symbols_fi.ts | 10 ++++----- translations/map_symbols_fr.ts | 12 +++++------ translations/map_symbols_hu.ts | 20 +++++++++--------- translations/map_symbols_ru.ts | 30 +++++++++++++-------------- translations/map_symbols_sv.ts | 8 +++---- translations/map_symbols_template.ts | 22 ++++++++++---------- translations/map_symbols_uk.ts | 22 ++++++++++---------- 15 files changed, 111 insertions(+), 111 deletions(-) diff --git a/symbol sets/10000/ISOM2017_10000.omap b/symbol sets/10000/ISOM2017_10000.omap index addc91009..fc24d0235 100644 --- a/symbol sets/10000/ISOM2017_10000.omap +++ b/symbol sets/10000/ISOM2017_10000.omap @@ -153,7 +153,7 @@ To avoid confusion with symbol 416 (distinct vegetation boundary), the dots shou The dots should be randomly distributed but not interfere with the representation of important terrain features and objects. The minimum number of dots is three (footprint 7 m x 7 m). To avoid confusion with symbol 416 (distinct vegetation boundary), the dots should not be arranged to form a line.255 -15;615 -120;240 525;-90 -480;-225 -45;-330 660;390 -510;-60 270;765 600;-525 -420;-510 180;555 240; -An area of soft sandy ground where runnability is reduced to less than 80% of normal speed. +An area of soft sandy ground where runnability is reduced to less than 80% of normal speed. A runnable area of rock without earth or vegetation should be shown as bare rock. An area of rock covered with grass, moss or other low vegetation, shall not be shown using the bare rock symbol. An area of less runnable bare rock should be shown using a stony ground symbol (210-212). @@ -291,7 +291,7 @@ The definition of the symbol must be given on the map. Runnability: normal runnability. A railway or other kind of railed track. If it is forbidden to run along the railway, it shall be combined with the overprint symbol for forbidden route. If it is forbidden to cross the railway, it must be combined with a symbol for forbidden area. -Power line, cableway or skilift. The bars show the exact location of the pylons. The line may be broken to improve legibility.0 -555;0 555; +Power line, cableway or skilift. The bars show the exact location of the pylons. The line may be broken to improve legibility.0 -555;0 555; Major power lines should be drawn with a double line. The gap between the lines may indicate the extent of the powerline. The lines may be broken to improve legibility. Very large carrying masts shall be represented in plan shape using symbol 521 (building) or with symbol 524 (high tower).0 -750;0 750; Major power lines should be drawn with a double line. The gap between the lines may indicate the extent of the powerline. @@ -306,7 +306,7 @@ If it is not possible to get through a tunnel (or under a bridge), it shall be o A small footbridge with no path leading to it is represented with a single dash. Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm over both sides of the stream!0 -937;0 938; A significant wall of stone, concrete, wood or other materials. Minimum height: 1 m. -A ruined or less distinct wall. Minimum height 0.5 m. +A ruined or less distinct wall. Minimum height 0.5 m. An impassable or uncrossable wall, normally more than 1.5 m high. A wooden or wire fence less than ca. 1.5 m high. If the fence forms an enclosed area, tags should be placed inside.0 0;375 650; diff --git a/symbol sets/15000/ISOM2017_15000.omap b/symbol sets/15000/ISOM2017_15000.omap index 3645f5d1a..a1ce1839d 100644 --- a/symbol sets/15000/ISOM2017_15000.omap +++ b/symbol sets/15000/ISOM2017_15000.omap @@ -153,7 +153,7 @@ To avoid confusion with symbol 416 (distinct vegetation boundary), the dots shou The dots should be randomly distributed but not interfere with the representation of important terrain features and objects. The minimum number of dots is three (footprint 7 m x 7 m). To avoid confusion with symbol 416 (distinct vegetation boundary), the dots should not be arranged to form a line.170 -10;410 -80;160 350;-60 -320;-150 -30;-220 440;260 -340;-40 180;510 400;-350 -280;-340 120;370 160; -An area of soft sandy ground where runnability is reduced to less than 80% of normal speed. +An area of soft sandy ground where runnability is reduced to less than 80% of normal speed. A runnable area of rock without earth or vegetation should be shown as bare rock. An area of rock covered with grass, moss or other low vegetation, shall not be shown using the bare rock symbol. An area of less runnable bare rock should be shown using a stony ground symbol (210-212). @@ -291,7 +291,7 @@ The definition of the symbol must be given on the map. Runnability: normal runnability. A railway or other kind of railed track. If it is forbidden to run along the railway, it shall be combined with the overprint symbol for forbidden route. If it is forbidden to cross the railway, it must be combined with a symbol for forbidden area. -Power line, cableway or skilift. The bars show the exact location of the pylons. The line may be broken to improve legibility.0 -370;0 370; +Power line, cableway or skilift. The bars show the exact location of the pylons. The line may be broken to improve legibility.0 -370;0 370; Major power lines should be drawn with a double line. The gap between the lines may indicate the extent of the powerline. The lines may be broken to improve legibility. Very large carrying masts shall be represented in plan shape using symbol 521 (building) or with symbol 524 (high tower).0 -500;0 500; Major power lines should be drawn with a double line. The gap between the lines may indicate the extent of the powerline. @@ -306,7 +306,7 @@ If it is not possible to get through a tunnel (or under a bridge), it shall be o A small footbridge with no path leading to it is represented with a single dash. Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm over both sides of the stream!0 -625;0 625; A significant wall of stone, concrete, wood or other materials. Minimum height: 1 m. -A ruined or less distinct wall. Minimum height 0.5 m. +A ruined or less distinct wall. Minimum height 0.5 m. An impassable or uncrossable wall, normally more than 1.5 m high. A wooden or wire fence less than ca. 1.5 m high. If the fence forms an enclosed area, tags should be placed inside.0 0;250 433; diff --git a/symbol sets/src/ISOM2017_15000.xmap b/symbol sets/src/ISOM2017_15000.xmap index c4e546be3..7c7202c44 100644 --- a/symbol sets/src/ISOM2017_15000.xmap +++ b/symbol sets/src/ISOM2017_15000.xmap @@ -1921,7 +1921,7 @@ To avoid confusion with symbol 416 (distinct vegetation boundary), the dots shou - + An area of soft sandy ground where runnability is reduced to less than 80% of normal speed. @@ -2816,7 +2816,7 @@ If it is forbidden to run along the railway, it shall be combined with the overp - + Power line, cableway or skilift. The bars show the exact location of the pylons. The line may be broken to improve legibility. @@ -3036,7 +3036,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm - + A ruined or less distinct wall. Minimum height 0.5 m. diff --git a/translations/map_symbols_cs.ts b/translations/map_symbols_cs.ts index 64aef06ec..1c3e8e6d8 100644 --- a/translations/map_symbols_cs.ts +++ b/translations/map_symbols_cs.ts @@ -783,7 +783,7 @@ Minimální počet teček jsou tři (stopa 7 m × 7 m). K zamezení záměny se značkou 416 (zřetelná hranice vegetace) by tečky neměly být uspořádány tak, aby tvořily linii. - Open sandy ground + Sandy ground Name of symbol 213 Písčitý povrch @@ -1638,7 +1638,7 @@ If it is forbidden to run along the railway, it shall be combined with the overp Pokud je zakázáno běžet podél železnice, musí být kombinována se značkou 711 (nepřístupná trasa). Je-li zakázáno křížit železnici, musí být kombinována se značkou 520 (oblast se zákazem vstupu) nebo 709 (nepřístupná oblast). - Power line + Power line, cableway or skilift Name of symbol 510 Elektrické vedení, lanovka nebo lyžařský vlek @@ -1732,7 +1732,7 @@ Poznámka: Je-li tok širší než 0.25 mm, je třeba upravit tuto značku tak, Významná zeď z kamene, betonu, dřeva nebo jiných materiálů. Minimální výška 1 m. - Ruined stone wall + Ruined wall Name of symbol 514 Rozpadlá zeď @@ -10036,9 +10036,9 @@ A bounding line may be drawn if there is no natural boundary, as follows: - The height climb is given in metres rounded to the nearest 5 m. Description of symbol 99.2 Tento blok popisuje hlavní parametry tratě. Jeho účelem je pomoci pochopit stupeň obtížnosti. -  - schéma: Kód tratě / Délka / Převýšení + - schéma: Kód tratě / Délka / Převýšení - Délka tratě je udávána v kilometrech zaokrouhlených na nejbližších 0,1 km. -  - Převýšení je uvedeno v metrech zaokrouhlených na nejbližších 5 m. + - Převýšení je uvedeno v metrech zaokrouhlených na nejbližších 5 m. Description of individual control diff --git a/translations/map_symbols_da.ts b/translations/map_symbols_da.ts index b432b20a6..023a94a16 100644 --- a/translations/map_symbols_da.ts +++ b/translations/map_symbols_da.ts @@ -754,7 +754,7 @@ To avoid confusion with symbol 416 (distinct vegetation boundary), the dots shou - Open sandy ground + Sandy ground Name of symbol 213 @@ -1558,7 +1558,7 @@ If it is forbidden to run along the railway, it shall be combined with the overp - Power line + Power line, cableway or skilift Name of symbol 510 @@ -1645,7 +1645,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm - Ruined stone wall + Ruined wall Name of symbol 514 diff --git a/translations/map_symbols_de.ts b/translations/map_symbols_de.ts index 74f61d13b..5d8ad5f2b 100644 --- a/translations/map_symbols_de.ts +++ b/translations/map_symbols_de.ts @@ -723,9 +723,9 @@ To avoid confusion with symbol 416 (distinct vegetation boundary), the dots shou - Open sandy ground + Sandy ground Name of symbol 213 - Offene Sandfläche + Sandiger Boden An area of soft sandy ground where runnability is reduced to less than 80% of normal speed. @@ -1527,9 +1527,9 @@ If it is forbidden to run along the railway, it shall be combined with the overp - Power line + Power line, cableway or skilift Name of symbol 510 - Stromleitung + Stromleitung, Seilbahn oder Skilift Power line, cableway or skilift. The bars show the exact location of the pylons. The line may be broken to improve legibility. @@ -1614,9 +1614,9 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm - Ruined stone wall + Ruined wall Name of symbol 514 - Verfallene Steinmauer + Verfallene Mauer A ruined or less distinct wall. Minimum height 0.5 m. @@ -2499,7 +2499,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Unpassierbare Felswand - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 Eine unpassierbare Felswand, ein unpassierbarer Steinbruch oder eine unpassierbare Erdböschung (vgl. Signatur 106) wird mit einer 0,35 mm breiten Linie gezeichnet, sowie mit Fallstrichen, die ihre volle Ausdehnung von der Oberkante bis zum Fuß angeben. Bei senkrechten Felswänden können die Fallstriche bei Platzmangel weggelassen werden, z. B. bei schmalen Durchgängen zwischen Felswänden (der Durchgang soll mindestens mit einer lichten Breite von 0,3 mm gezeichnet werden). Die Fallstriche können sich auf die Flächensignatur von unmittelbar unter der Felswand liegenden Objekten erstrecken. Wenn eine Felswand direkt am Wasser steht, so dass eine Passage unter der Felswand am Ufer entlang nicht möglich ist, wird die Uferlinie weggelassen, oder die Fallstriche müssen deutlich über die Uferlinie hinausgehen. @@ -2509,7 +2509,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Unpassierbare Felswand, Minimalgröße - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 Eine unpassierbare Felswand, ein unpassierbarer Steinbruch oder eine unpassierbare Erdböschung (vgl. Signatur 106) wird mit einer 0,35 mm breiten Linie gezeichnet, sowie mit Fallstrichen, die ihre volle Ausdehnung von der Oberkante bis zum Fuß angeben. Bei senkrechten Felswänden können die Fallstriche bei Platzmangel weggelassen werden, z. B. bei schmalen Durchgängen zwischen Felswänden (der Durchgang soll mindestens mit einer lichten Breite von 0,3 mm gezeichnet werden). Die Fallstriche können sich auf die Flächensignatur von unmittelbar unter der Felswand liegenden Objekten erstrecken. Wenn eine Felswand direkt am Wasser steht, so dass eine Passage unter der Felswand am Ufer entlang nicht möglich ist, wird die Uferlinie weggelassen, oder die Fallstriche müssen deutlich über die Uferlinie hinausgehen. @@ -4202,7 +4202,7 @@ Die Signatur darf nicht in anderer Form gezeichnet werden oder derart, dass sich An impassable cliff, quarry or earth bank [see symbol earth bank (106)]. Tags are drawn downwards, showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). -The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. +The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. <span style="color:magenta">It is forbidden to cross an impassable cliff! Competitors violating this rule will be disqualified.</span> @@ -4219,7 +4219,7 @@ Competitors violating this rule will be disqualified.</span> An impassable cliff, quarry or earth bank [see symbol earth bank (106)]. Tags are drawn downwards, showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). -The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. +The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. <span style="color:magenta">It is forbidden to cross an impassable cliff! Competitors violating this rule will be disqualified.</span> @@ -6269,7 +6269,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Unpassierbare Felswand - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 Eine unpassierbare Felswand, ein unpassierbarer Steinbruch oder eine unpassierbare Erdböschung (vgl. Signatur 106) wird mit einer 0,35 mm breiten Linie gezeichnet, sowie mit Fallstrichen, die ihre volle Ausdehnung von der Oberkante bis zum Fuß angeben. Bei senkrechten Felswänden können die Fallstriche bei Platzmangel weggelassen werden, z. B. bei schmalen Durchgängen zwischen Felswänden (der Durchgang soll mindestens mit einer lichten Breite von 0,3 mm gezeichnet werden). Die Fallstriche können sich auf die Flächensignatur von unmittelbar unter der Felswand liegenden Objekten erstrecken. Wenn eine Felswand direkt am Wasser steht, so dass eine Passage unter der Felswand am Ufer entlang nicht möglich ist, wird die Uferlinie weggelassen, oder die Fallstriche müssen deutlich über die Uferlinie hinausgehen. @@ -6279,7 +6279,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Unpassierbare Felswand, Minimalgröße - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 Eine unpassierbare Felswand, ein unpassierbarer Steinbruch oder eine unpassierbare Erdböschung (vgl. Signatur 106) wird mit einer 0,35 mm breiten Linie gezeichnet, sowie mit Fallstrichen, die ihre volle Ausdehnung von der Oberkante bis zum Fuß angeben. Bei senkrechten Felswänden können die Fallstriche bei Platzmangel weggelassen werden, z. B. bei schmalen Durchgängen zwischen Felswänden (der Durchgang soll mindestens mit einer lichten Breite von 0,3 mm gezeichnet werden). Die Fallstriche können sich auf die Flächensignatur von unmittelbar unter der Felswand liegenden Objekten erstrecken. Wenn eine Felswand direkt am Wasser steht, so dass eine Passage unter der Felswand am Ufer entlang nicht möglich ist, wird die Uferlinie weggelassen, oder die Fallstriche müssen deutlich über die Uferlinie hinausgehen. @@ -8078,7 +8078,7 @@ Hinweis: Wenn der Bach breiter ist, muss das Symbol angepasst werden, so dass es Unpassierbare Felswand - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 Eine unpassierbare Felswand, ein unpassierbarer Steinbruch oder eine unpassierbare Erdböschung (vgl. Signatur 106) wird mit einer 0,35 mm breiten Linie gezeichnet, sowie mit Fallstrichen, die ihre volle Ausdehnung von der Oberkante bis zum Fuß angeben. Bei senkrechten Felswänden können die Fallstriche bei Platzmangel weggelassen werden, z. B. bei schmalen Durchgängen zwischen Felswänden (der Durchgang soll mindestens mit einer lichten Breite von 0,3 mm gezeichnet werden). Die Fallstriche können sich auf die Flächensignatur von unmittelbar unter der Felswand liegenden Objekten erstrecken. Wenn eine Felswand direkt am Wasser steht, so dass eine Passage unter der Felswand am Ufer entlang nicht möglich ist, wird die Uferlinie weggelassen, oder die Fallstriche müssen deutlich über die Uferlinie hinausgehen. @@ -8088,7 +8088,7 @@ Hinweis: Wenn der Bach breiter ist, muss das Symbol angepasst werden, so dass es Unpassierbare Felswand, Minimalgröße - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 Eine unpassierbare Felswand, ein unpassierbarer Steinbruch oder eine unpassierbare Erdböschung (vgl. Signatur 106) wird mit einer 0,35 mm breiten Linie gezeichnet, sowie mit Fallstrichen, die ihre volle Ausdehnung von der Oberkante bis zum Fuß angeben. Bei senkrechten Felswänden können die Fallstriche bei Platzmangel weggelassen werden, z. B. bei schmalen Durchgängen zwischen Felswänden (der Durchgang soll mindestens mit einer lichten Breite von 0,3 mm gezeichnet werden). Die Fallstriche können sich auf die Flächensignatur von unmittelbar unter der Felswand liegenden Objekten erstrecken. Wenn eine Felswand direkt am Wasser steht, so dass eine Passage unter der Felswand am Ufer entlang nicht möglich ist, wird die Uferlinie weggelassen, oder die Fallstriche müssen deutlich über die Uferlinie hinausgehen. diff --git a/translations/map_symbols_eo.ts b/translations/map_symbols_eo.ts index 9a0c36742..14724c017 100644 --- a/translations/map_symbols_eo.ts +++ b/translations/map_symbols_eo.ts @@ -722,7 +722,7 @@ To avoid confusion with symbol 416 (distinct vegetation boundary), the dots shou - Open sandy ground + Sandy ground Name of symbol 213 @@ -1526,7 +1526,7 @@ If it is forbidden to run along the railway, it shall be combined with the overp - Power line + Power line, cableway or skilift Name of symbol 510 @@ -1613,7 +1613,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm - Ruined stone wall + Ruined wall Name of symbol 514 @@ -2498,7 +2498,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 @@ -2508,7 +2508,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 @@ -4190,7 +4190,7 @@ The symbol may not be drawn in free form or such that two elongated knoll symbol An impassable cliff, quarry or earth bank [see symbol earth bank (106)]. Tags are drawn downwards, showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). -The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. +The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. <span style="color:magenta">It is forbidden to cross an impassable cliff! Competitors violating this rule will be disqualified.</span> @@ -4205,7 +4205,7 @@ Competitors violating this rule will be disqualified.</span> An impassable cliff, quarry or earth bank [see symbol earth bank (106)]. Tags are drawn downwards, showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). -The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. +The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. <span style="color:magenta">It is forbidden to cross an impassable cliff! Competitors violating this rule will be disqualified.</span> @@ -6086,7 +6086,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 @@ -6096,7 +6096,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 @@ -7892,7 +7892,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 @@ -7902,7 +7902,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 diff --git a/translations/map_symbols_es.ts b/translations/map_symbols_es.ts index 91216e763..8092bc6b5 100644 --- a/translations/map_symbols_es.ts +++ b/translations/map_symbols_es.ts @@ -788,9 +788,9 @@ El número mínimo de puntos es tres (huella 7 m x 7 m). Para evitar confusión con el símbolo 416 (límite de vegetación distinguible), los puntos no deben estar dispuestos formando una línea. - Open sandy ground + Sandy ground Name of symbol 213 - Terreno despejado y arenoso + Terreno despejado y arenoso An area of soft sandy ground where runnability is reduced to less than 80% of normal speed. @@ -1647,9 +1647,9 @@ If it is forbidden to run along the railway, it shall be combined with the overp Si está prohibido correr sobre la vía férrea, se debe combinar con el símbolo sobreimpreso para ruta prohibida. Si está prohibido cruzar la vía férrea, se debe conbinar con un símbolo de área prohibida. - Power line + Power line, cableway or skilift Name of symbol 510 - Tendido eléctrico + Tendido eléctrico Power line, cableway or skilift. The bars show the exact location of the pylons. The line may be broken to improve legibility. @@ -1741,9 +1741,9 @@ Nota: si el cauce es más ancho de 0,25 mm, ajustar este símbolo de forma que s Un muro identificable de piedra, hormigón, madera u otros materiales. Altura mínima: 1 m. - Ruined stone wall + Ruined wall Name of symbol 514 - Muro de piedra en ruinas + Muro de piedra en ruinas A ruined or less distinct wall. Minimum height 0.5 m. @@ -5178,7 +5178,7 @@ Colour: black, brown 0%(white), 10%, 20% or 30% (urban) / 20%, 30%, 40%, 50% (mi Power line, cableway or skilift Name of symbol 516 - + Tendido eléctrico Power line, cableway or skilift. The bars indicate the exact location of the pylons. diff --git a/translations/map_symbols_fi.ts b/translations/map_symbols_fi.ts index 7951112d3..313d585ed 100644 --- a/translations/map_symbols_fi.ts +++ b/translations/map_symbols_fi.ts @@ -722,9 +722,9 @@ To avoid confusion with symbol 416 (distinct vegetation boundary), the dots shou - Open sandy ground + Sandy ground Name of symbol 213 - Avonainen hietikko + Avonainen hietikko An area of soft sandy ground where runnability is reduced to less than 80% of normal speed. @@ -1526,9 +1526,9 @@ If it is forbidden to run along the railway, it shall be combined with the overp - Power line + Power line, cableway or skilift Name of symbol 510 - Sähkölinja + Sähkölinja, köysirata, hiihtohissi Power line, cableway or skilift. The bars show the exact location of the pylons. The line may be broken to improve legibility. @@ -1613,7 +1613,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm - Ruined stone wall + Ruined wall Name of symbol 514 Matala kiviaita diff --git a/translations/map_symbols_fr.ts b/translations/map_symbols_fr.ts index 23277543a..c008f1a4f 100644 --- a/translations/map_symbols_fr.ts +++ b/translations/map_symbols_fr.ts @@ -873,9 +873,9 @@ Densité : 10 à 12 points/mm2 (31 -38 %). Pour éviter toute confusion avec le symbole 416 (limite nette de végétation), les points ne doivent pas être positionnés de façon à former une ligne. - Open sandy ground + Sandy ground Name of symbol 213 - Terrain découvert sablonneux + Terrain découvert sablonneux An area of soft sandy ground where runnability is reduced to less than 80% of normal speed. @@ -1817,9 +1817,9 @@ S’il est interdit de courir le long de la voie ferrée, le symbole doit être Longueur minimum (isolée) : 2 tirets (4 mm - 60 m au sol). - Power line + Power line, cableway or skilift Name of symbol 510 - Ligne électrique, câble porteur, ou téléski + Ligne électrique, téléphérique ou remonte-pente Power line, cableway or skilift. The bars show the exact location of the pylons. The line may be broken to improve legibility. @@ -1912,9 +1912,9 @@ Hauteur minimum : 1 m. Longueur minimum (isolé) : 2 mm (30 m au sol). - Ruined stone wall + Ruined wall Name of symbol 514 - Mur en ruine + Mur en ruine A ruined or less distinct wall. Minimum height 0.5 m. diff --git a/translations/map_symbols_hu.ts b/translations/map_symbols_hu.ts index 31ebbcab4..324f83a91 100644 --- a/translations/map_symbols_hu.ts +++ b/translations/map_symbols_hu.ts @@ -753,10 +753,10 @@ To avoid confusion with symbol 416 (distinct vegetation boundary), the dots shou - Open sandy ground + Sandy ground Name of symbol 213 - Nyílt homokos talaj - + Nyílt homokos talaj + An area of soft sandy ground where runnability is reduced to less than 80% of normal speed. Description of symbol 213 @@ -1627,12 +1627,12 @@ If it is forbidden to run along the railway, it shall be combined with the overp Amennyiben tilos a sínpálya mentén futni, a 711 (Tiltott útvonal) térképjellel együtt kell használni. Abban az esetben, ha tilos a sínpályát keresztezni, az 520 (Tiltott terület) vagy a 709 (Tiltott terület) térképjelekkel együtt kell alkalmazni. Minimális hosszúság: 5 mm (terepi méret 75 m). Színe: fekete. - + - Power line + Power line, cableway or skilift Name of symbol 510 - Légvezeték, villamos távvezeték, vagy sílift - + Légvezeték, kötélpálya vagy sílift + Power line, cableway or skilift. The bars show the exact location of the pylons. The line may be broken to improve legibility. Description of symbol 510 @@ -1722,10 +1722,10 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm - Ruined stone wall + Ruined wall Name of symbol 514 - Romos kőfal - + Romos kőfal + A ruined or less distinct wall. Minimum height 0.5 m. Description of symbol 514 diff --git a/translations/map_symbols_ru.ts b/translations/map_symbols_ru.ts index e409740ae..894172760 100644 --- a/translations/map_symbols_ru.ts +++ b/translations/map_symbols_ru.ts @@ -750,9 +750,9 @@ To avoid confusion with symbol 416 (distinct vegetation boundary), the dots shou - Open sandy ground + Sandy ground Name of symbol 213 - Открытый песчаный грунт + Открытый песчаный грунт An area of soft sandy ground where runnability is reduced to less than 80% of normal speed. @@ -1572,9 +1572,9 @@ If it is forbidden to run along the railway, it shall be combined with the overp - Power line + Power line, cableway or skilift Name of symbol 510 - Линия электропередачи + Линия электропередачи Power line, cableway or skilift. The bars show the exact location of the pylons. The line may be broken to improve legibility. @@ -1659,9 +1659,9 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm - Ruined stone wall + Ruined wall Name of symbol 514 - Разрушенная каменная стена + Разрушенная каменная стена A ruined or less distinct wall. Minimum height 0.5 m. @@ -2546,7 +2546,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Непреодолимая скала - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 Непреодолимая (опасная) скала, карьер или опасный грунтовый обрыв (см. 106) показывается линией толщиной 0,35 мм вдоль бровки и зубцами, покрывающими площадь проекции обрыва от верхней кромки до подножья. При отображении вертикальных или близко расположенных обрывов зубцы могут быть опущены (ширина прохода должна быть не менее 0,3 мм в масштабе карты). Зубцы могут быть удлинены, если это необходимо. Например, если обрывом и береговой линией нет прохода, то зубцы обрыва должны пересекать береговую линию и накладываться на край изображения водоема. @@ -2556,7 +2556,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Непреодолимая скала, минимальный размер - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 Непреодолимая (опасная) скала, карьер или опасный грунтовый обрыв (см. 106) показывается линией толщиной 0,35 мм вдоль бровки и зубцами, покрывающими площадь проекции обрыва от верхней кромки до подножья. При отображении вертикальных или близко расположенных обрывов зубцы могут быть опущены (ширина прохода должна быть не менее 0,3 мм в масштабе карты). Зубцы могут быть удлинены, если это необходимо. Например, если обрывом и береговой линией нет прохода, то зубцы обрыва должны пересекать береговую линию и накладываться на край изображения водоема. @@ -4238,7 +4238,7 @@ The symbol may not be drawn in free form or such that two elongated knoll symbol An impassable cliff, quarry or earth bank [see symbol earth bank (106)]. Tags are drawn downwards, showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). -The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. +The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. <span style="color:magenta">It is forbidden to cross an impassable cliff! Competitors violating this rule will be disqualified.</span> @@ -4253,7 +4253,7 @@ Competitors violating this rule will be disqualified.</span> An impassable cliff, quarry or earth bank [see symbol earth bank (106)]. Tags are drawn downwards, showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). -The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. +The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. <span style="color:magenta">It is forbidden to cross an impassable cliff! Competitors violating this rule will be disqualified.</span> @@ -5069,7 +5069,7 @@ Colour: black, brown 0%(white), 10%, 20% or 30% (urban) / 20%, 30%, 40%, 50% (mi Power line, cableway or skilift Name of symbol 516 - + Линия электропередачи Power line, cableway or skilift. The bars indicate the exact location of the pylons. @@ -6136,7 +6136,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Непреодолимая скала - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 Непреодолимая (опасная) скала, карьер или опасный грунтовый обрыв (см. 106) показывается линией толщиной 0,35 мм вдоль бровки и зубцами, покрывающими площадь проекции обрыва от верхней кромки до подножья. При отображении вертикальных или близко расположенных обрывов зубцы могут быть опущены (ширина прохода должна быть не менее 0,3 мм в масштабе карты). Зубцы могут быть удлинены, если это необходимо. Например, если обрывом и береговой линией нет прохода, то зубцы обрыва должны пересекать береговую линию и накладываться на край изображения водоема. @@ -6146,7 +6146,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming Непреодолимая скала, минимальный размер - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 Непреодолимая (опасная) скала, карьер или опасный грунтовый обрыв (см. 106) показывается линией толщиной 0,35 мм вдоль бровки и зубцами, покрывающими площадь проекции обрыва от верхней кромки до подножья. При отображении вертикальных или близко расположенных обрывов зубцы могут быть опущены (ширина прохода должна быть не менее 0,3 мм в масштабе карты). Зубцы могут быть удлинены, если это необходимо. Например, если обрывом и береговой линией нет прохода, то зубцы обрыва должны пересекать береговую линию и накладываться на край изображения водоема. @@ -7944,7 +7944,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm Непреодолимая скала - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 Непреодолимая (опасная) скала, карьер или опасный грунтовый обрыв (см. 106) показывается линией толщиной 0,35 мм вдоль бровки и зубцами, покрывающими площадь проекции обрыва от верхней кромки до подножья. При отображении вертикальных или близко расположенных обрывов зубцы могут быть опущены (ширина прохода должна быть не менее 0,3 мм в масштабе карты). Зубцы могут быть удлинены, если это необходимо. Например, если обрывом и береговой линией нет прохода, то зубцы обрыва должны пересекать береговую линию и накладываться на край изображения водоема. @@ -7954,7 +7954,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm Непреодолимая скала, минимальный размер - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 Непреодолимая (опасная) скала, карьер или опасный грунтовый обрыв (см. 106) показывается линией толщиной 0,35 мм вдоль бровки и зубцами, покрывающими площадь проекции обрыва от верхней кромки до подножья. При отображении вертикальных или близко расположенных обрывов зубцы могут быть опущены (ширина прохода должна быть не менее 0,3 мм в масштабе карты). Зубцы могут быть удлинены, если это необходимо. Например, если обрывом и береговой линией нет прохода, то зубцы обрыва должны пересекать береговую линию и накладываться на край изображения водоема. diff --git a/translations/map_symbols_sv.ts b/translations/map_symbols_sv.ts index b4fac6a05..08ef52c56 100644 --- a/translations/map_symbols_sv.ts +++ b/translations/map_symbols_sv.ts @@ -805,9 +805,9 @@ To avoid confusion with symbol 416 (distinct vegetation boundary), the dots shou - Open sandy ground + Sandy ground Name of symbol 213 - Sandområde + Sandområde An area of soft sandy ground where runnability is reduced to less than 80% of normal speed. @@ -1617,7 +1617,7 @@ If it is forbidden to run along the railway, it shall be combined with the overp - Power line + Power line, cableway or skilift Name of symbol 510 @@ -1704,7 +1704,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm - Ruined stone wall + Ruined wall Name of symbol 514 diff --git a/translations/map_symbols_template.ts b/translations/map_symbols_template.ts index eca426c1e..5e101a26a 100644 --- a/translations/map_symbols_template.ts +++ b/translations/map_symbols_template.ts @@ -722,7 +722,7 @@ To avoid confusion with symbol 416 (distinct vegetation boundary), the dots shou - Open sandy ground + Sandy ground Name of symbol 213 @@ -1526,7 +1526,7 @@ If it is forbidden to run along the railway, it shall be combined with the overp - Power line + Power line, cableway or skilift Name of symbol 510 @@ -1613,7 +1613,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm - Ruined stone wall + Ruined wall Name of symbol 514 @@ -2498,7 +2498,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 @@ -2508,7 +2508,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 @@ -4190,7 +4190,7 @@ The symbol may not be drawn in free form or such that two elongated knoll symbol An impassable cliff, quarry or earth bank [see symbol earth bank (106)]. Tags are drawn downwards, showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). -The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. +The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. <span style="color:magenta">It is forbidden to cross an impassable cliff! Competitors violating this rule will be disqualified.</span> @@ -4205,7 +4205,7 @@ Competitors violating this rule will be disqualified.</span> An impassable cliff, quarry or earth bank [see symbol earth bank (106)]. Tags are drawn downwards, showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). -The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. +The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags shall clearly extend over the bank line. Minimum height is 2 meters. <span style="color:magenta">It is forbidden to cross an impassable cliff! Competitors violating this rule will be disqualified.</span> @@ -6086,7 +6086,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 @@ -6096,7 +6096,7 @@ The purple line will extend a bit into the finish symbol. This is a shortcoming - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 @@ -7892,7 +7892,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201 @@ -7902,7 +7902,7 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm - An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. + An impassable cliff, quarry or earth bank (see 106) is shown with a 0.35 mm line and downward tags showing its full extent from the top line to the foot. For vertical rock faces the tags may be omitted if space is short, e.g. narrow passages between cliffs (the passage should be drawn with a width of at least 0.3 mm). The tags may extend over an area symbol representing detail immediately below the rock face. When a rock face drops straight into water making it impossible to pass under the cliff along the water's edge, the bank line is omitted or the tags should clearly extend over the bank line. Description of symbol 201.0.1 diff --git a/translations/map_symbols_uk.ts b/translations/map_symbols_uk.ts index a37436e86..13f13bb44 100644 --- a/translations/map_symbols_uk.ts +++ b/translations/map_symbols_uk.ts @@ -786,12 +786,12 @@ To avoid confusion with symbol 416 (distinct vegetation boundary), the dots shou Точки слід розподіляти випадковим чином, але так, щоб вони не заважали сприйняттю важливих деталей рельєфу та інших об'єктів. Мінімальна кількість точок - три (проекція 7 м × 7 м). Щоб уникнути плутанини зі знаком 416 (чіткий контур рослинності), точки не слід розташовувати в лінію. - + - Open sandy ground + Sandy ground Name of symbol 213 - Піщаний ґрунт - + Піщаний ґрунт + An area of soft sandy ground where runnability is reduced to less than 80% of normal speed. Description of symbol 213 @@ -1644,9 +1644,9 @@ If it is forbidden to run along the railway, it shall be combined with the overp Якщо біг вздовж залізниці заборонений, знак має бути поєднаний зі знаком 711 (заборонений шлях). Якщо заборонено перетинати залізницю, знак має бути поєднаний зі знаком 520 (територія з обмеженим доступом) або 709 (заборонена територія). - Power line + Power line, cableway or skilift Name of symbol 510 - Лінія електропередачі + Лінія електропередачі Power line, cableway or skilift. The bars show the exact location of the pylons. The line may be broken to improve legibility. @@ -1736,12 +1736,12 @@ Note: if the stream is wider than 0.25mm, adjust this symbol so it extends 0.5mm A significant wall of stone, concrete, wood or other materials. Minimum height: 1 m. Description of symbol 513 Виразна стіна з каменю, бетону, дерева або інших матеріалів. Мінімальна висота: 1 м. - + - Ruined stone wall + Ruined wall Name of symbol 514 - Зруйнований мур - + Зруйнований мур + A ruined or less distinct wall. Minimum height 0.5 m. Description of symbol 514 @@ -5187,7 +5187,7 @@ Colour: black, brown 0%(white), 10%, 20% or 30% (urban) / 20%, 30%, 40%, 50% (mi Power line, cableway or skilift Name of symbol 516 - + Лінія електропередачі Power line, cableway or skilift. The bars indicate the exact location of the pylons. From a13bb4d9e67158d686cfd06d559e4d656fdedd21 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 21 Oct 2018 18:03:18 +0200 Subject: [PATCH 48/49] Set version to 0.8.3 --- CMakeLists.txt | 2 +- android/AndroidManifest.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 19c588abf..421c80b33 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,7 +29,7 @@ endif() # Project declaration -project(Mapper VERSION 0.8.2 LANGUAGES CXX C) +project(Mapper VERSION 0.8.3 LANGUAGES CXX C) if(Mapper_VERSION_DISPLAY) message(STATUS "Custom version display string: \"${Mapper_VERSION_DISPLAY}\"") diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index 163c2cc88..878704a30 100644 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -1,5 +1,5 @@ - + Date: Sun, 21 Oct 2018 18:12:53 +0200 Subject: [PATCH 49/49] Android: Pass absolute path to media scanner --- src/core/map.cpp | 2 +- src/sensors/gps_track.cpp | 3 ++- src/templates/template_image.cpp | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/core/map.cpp b/src/core/map.cpp index 5717aeeb8..447998bb9 100644 --- a/src/core/map.cpp +++ b/src/core/map.cpp @@ -704,7 +704,7 @@ bool Map::exportTo(const QString& path, MapView* view, const FileFormat* format) // Make the MediaScanner aware of the *updated* file. This is an // attempt to resolve issues with files being transferred // incompletely to the PC (#1115). - Android::mediaScannerScanFile(path); + Android::mediaScannerScanFile(QFileInfo(path).absolutePath()); } #endif } diff --git a/src/sensors/gps_track.cpp b/src/sensors/gps_track.cpp index be761bfb7..6d96c5b2a 100644 --- a/src/sensors/gps_track.cpp +++ b/src/sensors/gps_track.cpp @@ -23,6 +23,7 @@ #include #include +#include #include #include #include @@ -223,7 +224,7 @@ bool Track::saveTo(const QString& path) const file.close(); #ifdef Q_OS_ANDROID // Make the MediaScanner aware of the *updated* file. - Android::mediaScannerScanFile(path); + Android::mediaScannerScanFile(QFileInfo(path).absolutePath()); #endif return true; } diff --git a/src/templates/template_image.cpp b/src/templates/template_image.cpp index 71ecf8cff..df9294601 100644 --- a/src/templates/template_image.cpp +++ b/src/templates/template_image.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -103,7 +104,7 @@ bool TemplateImage::saveTemplateFile() const const auto result = image.save(template_path); #ifdef Q_OS_ANDROID // Make the MediaScanner aware of the *updated* file. - Android::mediaScannerScanFile(template_path); + Android::mediaScannerScanFile(QFileInfo(template_path).absolutePath()); #endif return result; }