From 21f695d7baedefc43da3acf722ec68823735907a Mon Sep 17 00:00:00 2001 From: Disassembler Date: Sat, 18 Apr 2020 12:32:40 +0200 Subject: [PATCH] Update Czech Sahana translation + helper scripts, closes #411 --- extra/helpers/frontlinesms-lang-js.py | 0 extra/helpers/sahana-lang-compare.py | 95 +++++++ ...ana-lang-csv.py => sahana-lang-convert.py} | 13 +- lxc-apps/sahana/image | 2 +- .../web2py/applications/eden/languages/cs.py | 266 +++++------------- 5 files changed, 171 insertions(+), 205 deletions(-) mode change 100644 => 100755 extra/helpers/frontlinesms-lang-js.py create mode 100755 extra/helpers/sahana-lang-compare.py rename extra/helpers/{sahana-lang-csv.py => sahana-lang-convert.py} (67%) diff --git a/extra/helpers/frontlinesms-lang-js.py b/extra/helpers/frontlinesms-lang-js.py old mode 100644 new mode 100755 diff --git a/extra/helpers/sahana-lang-compare.py b/extra/helpers/sahana-lang-compare.py new file mode 100755 index 0000000..74a2fd5 --- /dev/null +++ b/extra/helpers/sahana-lang-compare.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python3 + +import argparse +import csv +import io +import os +from ast import literal_eval +from pprint import pprint + +# GIS CSV can have extra large fields +csv.field_size_limit(2147483647) + +# String which don't exist verbatim in the code +extras = ( + 'Enter a number between %(min)g and %(max)g', + 'Enter a number greater than or equal to %(min)g', + 'Enter a number less than or equal to %(max)g', + 'Enter an integer between %(min)g and %(max)g', + 'Enter an integer greater than or equal to %(min)g', + 'Enter an integer less than or equal to %(max)g', +) + +def get_file_contents(filename): + # Return decoded file contents + with open(filename, 'rb') as f: + file_contents = f.read() + try: + return file_contents.decode('utf-8') + except UnicodeDecodeError: + return file_contents.decode('latin-1') + +def get_csv_contents(filename): + # Return list of all fields from a CSV file + f = io.StringIO(get_file_contents(filename)) + csv_contents = [] + for row in csv.reader(f): + csv_contents.extend(row) + return csv_contents + +def main(args): + basename = os.path.basename(args.langfile) + # Load existing translations from the current (old) Sahana Eden instance + with open(os.path.join(args.web2pydir, 'applications/eden/languages', basename)) as f: + old_translations = literal_eval(f.read()) + # Load translations produced by sahana-lang-convert.py + with open(args.langfile) as f: + translations = literal_eval(f.read()) + + missing_translations = {key:value for key,value in old_translations.items() if key not in translations} + + for root, dirs, files in os.walk(args.web2pydir): + # Iterate over all web2py subdirectories except "languages" which already contain translations + if 'languages' in dirs: + dirs.remove('languages') + for file in files: + extension = os.path.splitext(file)[1].lower() + filename = os.path.join(root, file) + + if extension in ('.py', '.html', '.js'): + try: + file_contents = get_file_contents(filename) + except UnicodeDecodeError: + continue + for key,value in missing_translations.copy().items(): + # Naively search for quoted strings in .py .html and .js files + if f"'{key}'" in file_contents or f'"{key}"' in file_contents: + translations[key] = value + del missing_translations[key] + + elif extension == '.csv': + try: + csv_contents = get_csv_contents(filename) + except UnicodeDecodeError: + continue + for key,value in missing_translations.copy().items(): + # Naively search for full strings in csv fields + if key in csv_contents: + translations[key] = value + del missing_translations[key] + + for key in extras: + # Add the extra translations which are never matched verbatim + if key not in translations: + translations[key] = old_translations[key] + + with open(basename, 'w') as langfile: + # Write the updated translation file + print('# -*- coding: utf-8 -*-', file=langfile) + pprint(translations, langfile, 0, 8192) + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Spotter Cluster Sahana Eden translation comparator') + parser.add_argument('langfile', help='New translation file (with possibly missing strings).') + parser.add_argument('web2pydir', help='Path to Web2py root directory.') + main(parser.parse_args()) diff --git a/extra/helpers/sahana-lang-csv.py b/extra/helpers/sahana-lang-convert.py similarity index 67% rename from extra/helpers/sahana-lang-csv.py rename to extra/helpers/sahana-lang-convert.py index 9b6a69f..98ec81b 100755 --- a/extra/helpers/sahana-lang-csv.py +++ b/extra/helpers/sahana-lang-convert.py @@ -1,30 +1,35 @@ #!/usr/bin/env python3 -from pprint import pprint import argparse import csv import os import xlrd +from pprint import pprint def main(args): translations = {} - basename, extension = os.path.splitext(args.inputfile.lower()) + basename, extension = os.path.splitext(args.inputfile) + extension = extension.lower() if extension == '.csv': + # Read CSV file, assume the same structure as given by the export with open(args.inputfile, 'r') as csvfile: - reader = csv.reader(csvfile, delimiter=',', quotechar='\'') + reader = csv.reader(csvfile) for line in reader: translations[line[1]] = line[2] elif extension in ('.xls', '.xlsx'): + # Read the XLS(X) file, assume type of columns from their count sheet = xlrd.open_workbook(args.inputfile).sheet_by_index(0) + source_col,target_col = (1,2) if sheet.row(0)[2] else (0,1) for i in range(1, sheet.nrows): row = sheet.row(i) - translations[row[1].value] = row[2].value + translations[row[source_col].value] = row[target_col].value else: print('Unknown input file extension') return with open('{}.py'.format(basename), 'w') as langfile: + # Write the translation file print('# -*- coding: utf-8 -*-', file=langfile) pprint(translations, langfile, 0, 8192) diff --git a/lxc-apps/sahana/image b/lxc-apps/sahana/image index 9c631ef..2160650 100644 --- a/lxc-apps/sahana/image +++ b/lxc-apps/sahana/image @@ -14,7 +14,7 @@ RUN EOF git -C /srv/web2py submodule update # Symlink WSGI handler - ln -s /srv/web2py/handlers/wsgihandler.py /srv/web2py/wsgihandler.py + ln -s handlers/wsgihandler.py /srv/web2py/wsgihandler.py # Install Sahana git clone --depth 1 https://github.com/sahana/eden.git /srv/web2py/applications/eden diff --git a/lxc-apps/sahana/image.d/srv/web2py/applications/eden/languages/cs.py b/lxc-apps/sahana/image.d/srv/web2py/applications/eden/languages/cs.py index 9e92918..b52e6ed 100644 --- a/lxc-apps/sahana/image.d/srv/web2py/applications/eden/languages/cs.py +++ b/lxc-apps/sahana/image.d/srv/web2py/applications/eden/languages/cs.py @@ -8,8 +8,6 @@ '# Moderate Damage': 'Počet středně těžce zraněných', '# Results per query': 'Počet výsledků na databázový dotaz', '# of Inhabitants': 'Počet obyvatel', -'# of International Staff': 'počet z Mezinárodního týmu', -'# of National Staff': 'počet z Národního týmu', '# selected': 'počet vybraných', '% Achieved': '% Dosaženo', '%(GRN)s Number': '%(GRN)s číslo', @@ -20,8 +18,6 @@ '%(count)s Appointments updated': '%(count)s Schůzek bylo aktualizováno', '%(count)s Entries Found': 'Nalezeno %(count)s záznamů', '%(count)s Recipients': '%(count)s Příjemců', -'%(count)s Roles of the user removed': '%(count)s Rolí uživatele odebráno', -'%(count)s Users removed from Role': '%(count)s Uživatelů odebráno z Rolí', '%(count_of)d translations have been imported to the %(language)s language file': '%(count_of)d překlady byly importovány do %(language)s souboru. ', '%(event)s already registered %(number)s times today': '%(event)s je dnes již %(number)s krát registrovaný', '%(event)s already registered on %(timestamp)s': '%(event)s je již registrována v %(timestamp)s', @@ -83,7 +79,6 @@ "'Severity' field is mandatory": 'Pole "Závažnost" je povinné', "'Urgency' field is mandatory": 'Pole "Urgentní" je povinné', '(RFC822)': '(RFC822)', -'(default)': '(výchozí)', '(filtered from _MAX_ total entries)': '(filtrováno z _MAX_ celkových zápisů)', '* Required Fields': '* Vyžadované pole', '+1 YR': '+1 rok', @@ -107,6 +102,7 @@ '13 Tons': '13 tun', '15-30 minutes': '15-30 minut', '1: Low': '1: Nízký', +'2 different options are provided here currently:': 'Aktuálně jsou zde k dispozici 2 různé možnosti:', '2-4 days': '2-4 dny', '2. Always use one box per letter and leave one box space to separate words.': '2. Vždy pište do políčka jen jedno písmeno a vynechte jedno políčko jako mezeru mezi slovy', '2: Medium': '2: Střední', @@ -144,7 +140,6 @@ "A location that specifies the geographic area for this region. This can be a location from the location hierarchy, or a 'group location', or a location that has a boundary for the area.": 'Lokace, která upřesňuje zeměpisnou oblast pro tento region. Může to být lokace z hierarchie lokací, nebo skupiny lokací nebo která hraničí s danou oblastí""', 'A number or string uniquely identifying this message, assigned by the sender. Must not include spaces, commas or restricted characters (< and &).': 'Číslo nebo řetězec, který jednoznačně určuje tuto zprávu, přidělený odesílatelem. Nesmí obsahovat mezery, čárky nebo zakázané znaky ( < a &).', 'A project milestone marks a significant date in the calendar which shows that progress towards the overall objective is being made.': 'Projektové milníky v kalendáři ukazují významná data, jak probíhá vývoj směrem k celkovému cíli.', -'A project tag helps to associate keywords with projects/tasks.': 'Tag v projektu pomáhá dát do souvislostí klíčová slova s projekty / úkoly.', 'A strict location hierarchy cannot have gaps.': 'Přísná hierarchie lokací nemůže mít mezery.', 'A system-specific additional parameter associated with the alert message': 'Dodatečný parametr, specifický pro systém spojený s výstražnými zprávami', 'A system-specific code identifying the event type of the alert message': 'Specifický systémový kód identifikující typ události u výstražné zprávy', @@ -159,7 +154,6 @@ 'ABSOLUTE%(br)sDEVIATION': 'ABSOLUTE%(br)sDEVIATION', 'ACCESS DATA': 'ACCESS DATA', 'ACTION REQUIRED': 'AKCE JE VYŽADOVÁNA', -'ADMIN Permissions can not be changed.': 'Uživatelská práva ADMINA nelze změnit', 'ALL': 'Vše', 'ALL REPORTS': 'VŠECHNY REPORTY', 'AM': 'dop.', @@ -345,7 +339,6 @@ 'Add Data to Theme Layer': 'Přidat data do Vrstvy Theme', 'Add Demographic': 'Přidat Demografii', 'Add Demographic Data': 'Přidat demografická data', -'Add Deployable Members': 'Přidat Členy k nasazení', 'Add Diagnostic Test': 'Přidat diagnostický test', 'Add Disciplinary Action': 'Přidat disciplinární opatření', 'Add Disciplinary Action Type': 'Přidat typ disciplinárního opatření', @@ -414,7 +407,6 @@ 'Add Order': 'Přidat Objednávku', 'Add Organization': 'Přidat Organizaci', 'Add Organization Domain': 'Přidat Doménu Organizace', -'Add Organization Needs': 'Přidat Potřeby Organizace', 'Add Organization to Activity': 'Přidat Organizaci k Aktivitě', 'Add Organization to Project': 'Přidat Organizaci k Projektu', 'Add Outcome': 'Přidat Výnos', @@ -437,7 +429,6 @@ 'Add Procurement Plan': 'Přidat plán zadávání zakázek', 'Add Professional Experience': 'Přidat profesionální zkušenost', 'Add Profile Configuration for this Layer': 'Přidat konfiguraci profilu pro tuto vrstvu', -'Add Project Needs': 'Přidat potřeby Projektu', 'Add Question': 'Přidat Otázku', 'Add RSS Channel': 'Přidat RSS kanál', 'Add Rapid Assessment': 'Přidat rychlé hodnocení', @@ -458,7 +449,6 @@ 'Add Service': 'Přidat Službu', 'Add Setting': 'Přidat Nastavení', 'Add Shelter': 'Přidat Úkryt', -'Add Site Needs': 'Přidat potřeby stanoviště', 'Add Situation Report': 'Přidat Situační zprávu', 'Add Skill': 'Přidat Dovednost', 'Add Skill Equivalence': 'Přidat rovnocennou Dovednost', @@ -635,7 +625,6 @@ 'Alert information deleted': 'Výstražná informace smazána', 'Alert information modified': 'Výstražná informace změněna', 'Alert modified': 'Výstraha změněna', -'Alert successfully imported.': 'Výstraha úspěšně importována.', 'Alert: Initial information requiring attention by targeted recipients': 'Výstraha: První informace vyžadující pozornost cíleně oslovených příjemců', 'Alerted': 'Upozorněno', 'Alerting Authorities': 'Výstražné autority', @@ -691,10 +680,6 @@ 'An Assessment Template can be selected to create a Disaster Assessment. Within a Disaster Assessment, responses can be collected and results can analyzed as tables, charts and maps': 'Šablonu Posudku lze zvolit pro vytvoření posouzení katastrof. V rámci posuzování katastrof mohou být reakce shromažďovány a výsledky se mohou členit do Tabulky, grafů a mapy.', 'An ESRI Shapefile (zipped)': 'Soubor ESRI Shapefile (zazipovaný)', 'An Item Category must have a Code OR a Name.': 'Položka Kategorie musí mít Code NEBO Název', -'An alert can contain maximum of two info segments! Check your template!': 'Výstraha může obsahovat maximálně dva informační segmenty! Zkontrolujte šablonu!', -'An alert can contain maximum of two info segments! Please edit already created info segments!': 'Výstraha může obsahovat maximálně dva informační segmenty! Upravte již vytvořené informační segmenty!', -'An alert cannot contain other than English and Local Language! Check your selection!': 'Výstraha nesmí obsahovat nic kromě angličtiny a místního jazyka! Zkontrolujte výběr!', -'An alert cannot contain other than English and Local Language! Check your template!': 'Výstraha nesmí obsahovat nic kromě angličtiny a místního jazyka! Zkontrolujte šablonu!', 'An alert needs to contain at least one info item.': 'Výstraha musí obsahovat alespoň jednu informační položku.', 'An error occured, please %(reload)s the page.': 'V případě chyby prosím %(reload)s stranu', 'An extended human readable description of the hazard or event that occasioned this message.': 'Rozšířený srozumitelný popis nebezpečí nebo akce, která vyvolala tuto zprávu.', @@ -714,7 +699,6 @@ 'Anthropology': 'Antropologie', 'Antibiotics available': 'Dostupná antibiotika', 'Antibiotics needed per 24h': 'Potřebná antibiotika na 24 hodin', -'Any': 'Cokoliv', "Any geographically-based code to describe a message target area, in the form. The key is a user-assigned string designating the domain of the code, and the content of value is a string (which may represent a number) denoting the value itself (e.g., name='ZIP' and value='54321'). This should be used in concert with an equivalent description in the more universally understood polygon and circle forms whenever possible.": "Každý geografický kód, který popisuje cílovou oblast zprávy ve formuláři. Klíč je řetězec určený uživatelem, který označuje doménu kódu a obsah hodnoty je řetězec (který může představovat číslo) označující hodnotu samotnou (např. Název = PSČ' a hodnota = '54321'). To by mělo být použito společně s rovnocenným popisem ve více všeobecně známých polygonových a kruhových objektech kdykoli je to možné.", 'Any system-specific code for events, in the form of key-value pairs. (e.g., SAME, FIPS, ZIP).': 'Jakýkoliv systémový specifický kód události, ve formě dvojice klíč-hodnota. (např., SAME, FIPS, ZIP, PSČ).', 'Any system-specific datum, in the form of key-value pairs.': 'Jakékoliv systémové specifické datum, ve formě dvojice klíč-hodnota.', @@ -767,11 +751,10 @@ 'Arabic - Spoken': 'Arabština - Mluvená', 'Arabic - Writing': 'Arabština - psaní', 'Arabic - Written': 'Arabština - Psaná', -'ArcGIS REST Layer': 'vrstva ArcGIS REST', +'ArcGIS REST Layer': 'Vrstva ArcGIS REST', 'Archive': 'Archiv', 'Archive Details': 'Detaily Archivu', 'Archive URL': 'URL Archivu', -'Archive URL:': 'URL Archivu', 'Archive created': 'Archiv vytvořen', 'Archive created/updated': 'Archiv vytvořen / aktualizován', 'Archive deleted': 'Archiv smazán', @@ -878,12 +861,10 @@ 'Assign Organization': 'Přiřadit Organizaci', 'Assign People': 'Přiřadit lidi', 'Assign People to this Request': 'Přiřadit lidi k tomuto Požadavku', -'Assign Role to a User': 'Přiřadit Roli k Uživateli', 'Assign Roles': 'Přiřadit Role', 'Assign Staff': 'Přiřadit zaměstnance', 'Assign Team': 'Přiřadit Tým', 'Assign Vehicle': 'Přiřadit vozidlo', -'Assign another Role': 'Přiřadit jinou Roli', 'Assign this role to users': 'Přiřadit tuto roli uživatelům', 'Assign to': 'Přiřadit k', 'Assign to Event': 'Přiřadit k Události', @@ -989,7 +970,6 @@ 'Back to Roles List': 'Zpět k výpisu Rolí', 'Back to Top': 'Zpět nahoru', 'Back to User List': 'Zpět na seznam uživatelů', -'Back to Users List': 'Zpět k výpisu Uživatelů', 'Back to test results overview': 'Zpět k přehledu testovacích výsledků', 'Back to the main screen': 'Zpět na hlavní obrazovku', 'Background Color': 'Barva pozadí', @@ -1010,7 +990,7 @@ 'Base Station deleted': 'Základna smazána', 'Base Station updated': 'Základna aktualizována', 'Base Stations': 'Základny', -'Base URL': 'URL Základny', +'Base URL': 'Základní URL', 'Based on the DOB/FEMA sticker, the property is': 'Na základě štítku DOB / FEMA je tato vlastnost', 'Baseline Number of Beds': 'Výchozí počet lůžek', 'Baseline Type': 'Typ Základní hodnoty', @@ -1156,6 +1136,7 @@ 'Building Name or Address': 'Název budovy nebo adresa', 'Building Short Name/Business Name': 'Krátký název budovy, Obchodní název', 'Building or storey leaning': 'Budova, nebo patro se naklání', +'Built using the Template agreed by a group of NGOs working together as the': 'Postaveno pomocí šablony dohodnuté skupinou nevládních organizací spolupracujících jako', 'Bulk Uploader': 'Hromadné nahrávání', 'Bulk update from this status not allowed': 'Hromadná aktualizace z tohoto statusu není povolena', 'Bulk update to this status not allowed': 'Hromadná aktualizace na tento status není povolena', @@ -1458,7 +1439,6 @@ 'Classify Area': 'Hodnocená Oblast', 'Clay': 'Jíl', 'Clean': 'Čistý', -'Clean Instance': 'Jasný případ', 'Clean up debris': 'Vyčistěte trosky', 'Clean-Up Campaign': 'Kampaň čištění od trosek', 'Clear': 'vymaž', @@ -1760,7 +1740,6 @@ 'Coordination and Partnerships': 'Koordinace a partnerství', 'Coping Activities': 'Činnosti spojené s kopírováním', 'Copy': 'Kopírovat', -'Copy Info Segment': 'Kopie Info segmentu', 'Copy this role to create a new role': 'Kopírovat tuto roli a vytvořit novou roli', 'Coral (coral reef structures)': 'Korálový útes', 'Core Components': 'Komponenty jádra', @@ -1790,7 +1769,6 @@ 'Country': 'Země', 'Country Code': 'Kód země', 'Country in': 'Země v', -'Country is required!': 'Země je vyžadována!', 'County / District': 'Okres', 'Course': 'Kurz', 'Course Catalog': 'Katalog Kurzů', @@ -1900,6 +1878,7 @@ 'Create Household Relation': 'Vytvořit vztah k domácnosti', 'Create Housing Type': 'Vytvořit typ bydlení', 'Create Identification Report': 'Vytvořit Hlášení Identifikace', +'Create Impact Assessment': 'Vytvořit posouzení dopadů', 'Create Incident': 'Vytvořit Incident', 'Create Incident Report': 'Vytvořit Hlášení Incidentu', 'Create Incident Type': 'Vytvořit Typ Incidentu', @@ -1928,6 +1907,7 @@ 'Create Membership Type': 'Vytvořit typ členství', 'Create Milestone': 'Vytvořit Milník', 'Create Mission': 'Vytvořit Misi', +'Create Mobile Impact Assessment': 'Vytvořit posouzení dopadů na mobilní zařízení', 'Create Morgue': 'Vytvořit Márnici', 'Create Need': 'Vytvořit potřebu', 'Create Need Type': 'Vytvořit Typ Potřeby', @@ -1965,6 +1945,7 @@ 'Create Public Data Set': 'Vytvořit veřejnou Datovou Sadu', 'Create Question': 'Vytvořit Otázku', 'Create Question Meta-Data': 'Vytvořit Metadata k Otázce', +'Create Rapid Assessment': 'Vytvořit rychlé Vyhodnocení', 'Create Referral Type': 'Vytvořit Typ Doporučení', 'Create Religion': 'Vytvořit Náboženství', 'Create Repository': 'Vytvořit úložiště', @@ -1990,7 +1971,6 @@ 'Create School': 'Vytvořit Školu', 'Create School Type': 'Vytvořit typ Školy', 'Create Seaport': 'Vytvořit Přístav', -'Create Section': 'Vytvořit Sekci', 'Create Sector': 'Vytvořit Sektor', 'Create Seized Item': 'Vytvořit zachycenou položku', 'Create Series': 'Vytvořit Serie', @@ -2096,7 +2076,6 @@ 'Crime': 'Zločin', 'Criminal Record': 'Záznam o kriminální činnosti', 'Criteria': 'Kritéria', -'Criterion': 'Kritérium', 'Critical': 'Kritický', 'Critical Infrastructure': 'Nezbytná infrastruktura', 'Crop Image': 'Oříznout obrázek', @@ -2330,7 +2309,6 @@ 'Default Initial Status': 'Výchozí první Stav', 'Default Location': 'Základní lokace', 'Default Realm': 'Výchozí stav', -'Default Realm = All Entities the User is a Staff Member of': 'Výchozí stav = Všichni Uživatelé jsou u Členy týmu', 'Default Status': 'Výchozí Stav', 'Default Termination': 'Výchozí ukončení', 'Default Value': 'Výchozí hodnota', @@ -2516,12 +2494,10 @@ 'Delete Order': 'Smazat objednávku', 'Delete Organization': 'Smazat Organizaci', 'Delete Organization Domain': 'Smazat doménu Organizace', -'Delete Organization Needs': 'Smazat potřeby Organizace', 'Delete Organization Type': 'Smazat typ Organizace', 'Delete Ownership Type': 'Smazat typ vlastnictví', 'Delete Parcel': 'Smazat zásilku', 'Delete Parcel Type': 'Smazat typ zásilky', -'Delete Participant': 'Smazat účastníka', 'Delete Partner Organization': 'Smazat Partnerskou Organizaci', 'Delete Patient': 'Smazat pacienta', 'Delete Payment Service': 'Smazat platební službu', @@ -2545,7 +2521,6 @@ 'Delete Profile': 'Smazat profil', 'Delete Program': 'Smazat Program', 'Delete Project': 'Smazat projekt', -'Delete Project Needs': 'Smazat potřeby Projektu', 'Delete Projection': 'Smazat typ projekce mapy', 'Delete Provider Type': 'Smazat typ Poskytovatele', 'Delete Question': 'Smazat Otázku', @@ -2598,7 +2573,6 @@ 'Delete Shelter Flag': 'Smazat příznak Úkrytu', 'Delete Shelter Inspection': 'Smazat Kuntrolu Úkrytu', 'Delete Shipment Item': 'Smazat položku zásilky', -'Delete Site Needs': 'Smazat Poptávku Místa', 'Delete Situation Report': 'Smazat Situační Zprávu', 'Delete Skill': 'Smazat Dovednost', 'Delete Skill Equivalence': 'Smazat rovnocennou dovednost', @@ -2677,7 +2651,6 @@ 'Delivered To': 'Doručeno', 'Delivery Address': 'Doručovací adresa', 'Delphi Decision Maker': 'Ankety', -'Demand': 'Poptávka', 'Demobilize': 'Demobilizovat', 'Demographic': 'Demografie', 'Demographic Data': 'Demografická data', @@ -2715,8 +2688,8 @@ 'Department updated': 'Odělení aktualizováno', 'Departures': 'Odchozí', 'Deploy': 'Nasadit', +'Deploy Eden': 'Nasadit Sahana Eden', 'Deploy this Member': 'Nasadit tohoto člena', -'Deployable Members': 'Členové k nasazení', 'Deployables': 'Nasazení', 'Deployed': 'Nasazen', 'Deployment': 'Nasazení', @@ -2746,8 +2719,6 @@ 'Describe the condition of the roads from/to the facility.': 'Uveďte stav cest z / do Zdravotního zařízení ', 'Describe the meaning, reasons and potential consequences of this status': 'Popište význam, důvody a možné důsledky tohoto stavu', "Describe the procedure which this record relates to (e.g. 'medical examination')": "Popište postup, kterého se tento záznam týká (např 'lékařské vyšetření')", -'Describe the tasks helpers are needed for': 'Popište úkoly, které potřebují pomocníci', -'Describe what the funds will be used for': 'Popište, jaké prostředky budou použity', 'Description': 'Popisek', 'Description of Contacts': 'Popis kontaktů', 'Description of defecation area': 'Popis oblasti defekace', @@ -2765,7 +2736,6 @@ 'Detail deleted': 'Detail smazán', 'Detail updated': 'Detail aktualizován', 'Detailed Description': 'Detailní popis', -'Detailed Description/URL': 'Detailní popisek / URL', 'Details': 'Detaily', 'Details field is required!': 'pole Detaily je vyžadováno!', 'Details of Disaster Assessment': 'Detaily posudku katastrofy', @@ -2813,7 +2783,6 @@ 'Disaster Type updated': 'Typ katastrofy aktualizován', 'Disaster Types': 'Typy Katastrof', 'Disaster Victim Identification': 'Oběti', -'Disaster Victim Identification ': 'Identifikace Zasažených', 'Disaster Victim Registry': 'Případy', 'Disaster added': 'Katastrofa přidána', 'Disaster clean-up/repairs': 'Odstraňování / opravy katastrof', @@ -2940,7 +2909,6 @@ 'Draft - not actionable in its current form': 'Návrh - není proveditelný v této formě', 'Draft Features': 'Návrh vlastností', 'Drainage': 'Odvodnění', -'Draw on map': 'Zobrazit na mapě', 'Drawing up a Budget for Staff & Equipment across various Locations.': 'Sestavení rozpočtu na zaměstnance a vybavení v různých lokalitách.', 'Driver Phone Number': 'Telefonní číslo řidiče', 'Drivers': 'Řidiči', @@ -2979,7 +2947,6 @@ 'Driving - T: Double/ Triple Trailers (Road trains)': 'Řízení - T: Zdvojené, ztrojené přívěsy (silniční vlaky)', 'Driving - X: Hazardous Materials and Tank Combination': 'Řízení - X: Kombinace nebezpečného nákladu a cisterny', 'Driving License': 'Řidičský průkaz', -'Drop-off Location for Goods?': 'Místo pro shoz zboží z letadla? ', 'Drought': 'Sucho', 'Drugs': 'Léky', 'Dry Dock': 'Suchý dok', @@ -3147,7 +3114,7 @@ 'Edit Evacuation Route': 'Upravit Evakuační trasu', 'Edit Evaluation': 'Upravit Vyhodnocení', 'Edit Event': 'Upravit Událost', -'Edit Event Type': 'Upravit Typ Události', +'Edit Event Type': 'Upravit typ Události', 'Edit Expense': 'Upravit výdaje', 'Edit Experience': 'Upravit zkušenost', 'Edit Exposure Information': 'Upravit informace o expozici', @@ -3206,8 +3173,6 @@ 'Edit Keyword': 'Upravit klíčové slovo', 'Edit Kit': 'Upravit Sadu', 'Edit Kit Item': 'Upravit položku Sady', -'Edit L4': 'Upravit lokace ze 4. vrstvy?', -'Edit L5': 'Upravit lokace z 5. vrstvy?', 'Edit Land Use': 'Upravit využití půdy', 'Edit Language': 'Upravit jazyk', 'Edit Layer': 'Upravit vrstvu', @@ -3247,7 +3212,6 @@ 'Edit Order': 'Upravit objednávku', 'Edit Organization': 'Upravit Organizaci', 'Edit Organization Domain': 'Upravit doménu Organizace', -'Edit Organization Needs': 'Upravit potřeby Organizace', 'Edit Organization Type': 'Upravit typ Organizace', 'Edit Outcome': 'Upravit Výsledek', 'Edit Output': 'Upravit výstup', @@ -3262,7 +3226,6 @@ 'Edit Patient': 'Upravit pacienta', 'Edit Payment Service': 'Upravit platební službu', 'Edit People': 'Upravit lidi', -'Edit Permissions for %(role)s': 'Upravit práva pro %(role)s', 'Edit Person': 'Upravit Osobu', 'Edit Person Details': 'Upravit detaily osoby', "Edit Person's Details": 'Upravit detaily osob', @@ -3279,7 +3242,7 @@ 'Edit Practical Need': 'Upravit Praktickou potřebu', 'Edit Predefined Area': 'Upravit předdefinovanou Oblast', 'Edit Problem': 'Upravit problém', -'Edit Processing Type': 'Upravit Typ Processingu', +'Edit Processing Type': 'Upravit typ Processingu', 'Edit Procurement Plan': 'Upravit plán nákupu', 'Edit Procurement Plan Item': 'Upravit položku plánu nákupu', 'Edit Product': 'Upravit produkt', @@ -3288,10 +3251,9 @@ 'Edit Profile Configuration': 'Upravit profil konfigurace', 'Edit Program': 'Upravit Program', 'Edit Project': 'Upravit Projekt', -'Edit Project Needs': 'Upravit potřeby Projektu', 'Edit Project Organization': 'Upravit Projekt Organizace', 'Edit Projection': 'Upravit projekci', -'Edit Provider Type': 'Upravit Typ Poskytovatele', +'Edit Provider Type': 'Upravit typ Poskytovatele', 'Edit Purchased Data': 'Upravit zakoupená data', 'Edit Question': 'Upravit Otázku', 'Edit Question Meta-Data': 'Upravit matadata otázky', @@ -3314,7 +3276,7 @@ 'Edit Requested Skill': 'Upravit poptávanou Dovednost', 'Edit Residence Permit Type': 'Upravit typ povolení k pobytu', 'Edit Residence Status': 'Upravit Stav pobytu', -'Edit Residence Status Type': 'Upravit Tzp Stavu pobytu', +'Edit Residence Status Type': 'Upravit Typ Stavu pobytu', 'Edit Resource': 'Upravit Zdroj', 'Edit Resource Configuration': 'Upravit konfiguraci zdrojů', 'Edit Resource Type': 'Upravit typ Zdroje', @@ -3356,7 +3318,6 @@ 'Edit Shelter Type': 'Upravit typ Úkrytu', 'Edit Shift': 'Upravit Shift', 'Edit Shipment Item': 'Upravit položku Zásilky', -'Edit Site Needs': 'Upravit potřeby Místa', 'Edit Situation Report': 'Upravit Situační zprávu', 'Edit Skill': 'Upravit Dovednost', 'Edit Skill Equivalence': 'Upravit rovnocennost Dovednosti', @@ -3408,7 +3369,7 @@ 'Edit Type': 'Upravit typ', 'Edit Type of People': 'Upravit typ lidí', 'Edit Unavailability': 'Upravit Nedostupnost', -'Edit Update Type': 'Upravit Typ aktualizace', +'Edit Update Type': 'Upravit typ aktualizace', 'Edit User': 'Upravit uživatele', 'Edit Vehicle': 'Upravit vozidlo', 'Edit Vehicle Assignment': 'Upravit přiřazení vozidla', @@ -3493,6 +3454,7 @@ 'Embalming': 'Balzamování, konzervace těla', 'Emergencies': 'Stavy Nouze', 'Emergency': 'Stav Nouze', +'Emergency Capacity Building project': 'Projekt budování nouzové kapacity', 'Emergency Contact Added': 'Nouzový kontakt přidán', 'Emergency Contact Deleted': 'Nouzový kontakt smazán', 'Emergency Contact Details': 'Detaily Nouzového kontaktu', @@ -3539,9 +3501,6 @@ 'Enter Completed Assessment': 'Vložit dokončený posudek', 'Enter Completed Assessment Form': 'Vložit formulář dokončeného posudku', 'Enter a new support request.': 'Vlož nový požadavek o podporu', -'Enter a number between %(min)g and %(max)g': 'Zadejte číslo mezi %(min)g a %(max)g', -'Enter a number greater than or equal to %(min)g': 'Zadejte číslo větší nebo rovno %(min)g', -'Enter a number less than or equal to %(max)g': 'Zadejte číslo menší nebo rovno %(max)g', 'Enter a title...': 'Napište název', 'Enter a unique label!': 'Zadejte unikátní popisek', 'Enter a valid URL': 'Zadejte URL ve správném tvaru', @@ -3550,9 +3509,6 @@ 'Enter a valid phone number': 'Zadejte správné telefonní číslo', 'Enter a value': 'Zadejte hodnotu', 'Enter a value carefully without spelling mistakes, this field needs to match existing data.': 'Zadejte pečlivě hodnotu bez pravopisných chyb, toto pole musí odpovídat stávajícím datům.', -'Enter an integer between %(min)g and %(max)g': 'Zadejte celé číslo mezi %(min)g a %(max)g', -'Enter an integer greater than or equal to %(min)g': 'Zadejte celé číslo větší nebo rovno %(min)g', -'Enter an integer less than or equal to %(max)g': 'Zadejte celé číslo menší nebo rovno %(max)g', 'Enter from %(min)g to %(max)g characters': 'Zadejte text o délce %(min)g - %(max)g znaků', 'Enter indicator ratings': 'Upravit hodnocení indikátorů', 'Enter or scan ID': 'Zadejte nebo skenujte občanský průkaz', @@ -3668,14 +3624,14 @@ 'Exercise': 'CVIČENÍ', 'Exercise - only for designated participants (decribed in note)': 'Cvičení - pouze pro určené účastníky (vysvětleno v poznámce)', 'Exercise?': 'Cvičení?', -'Existing Placard Type': 'typ stávající Plac-karty', +'Existing Placard Type': 'Typ stávající Plac-karty', 'Existing food stocks': 'Stávající zásoby potravin', 'Exits': 'Východ', 'Expand All': 'Rozbalit vše', 'Expected - Response action should be taken soon (within next hour)': 'Očekávané - reakce by měla být přijata brzy (do následující hodiny)', 'Expected Return Home': 'Očekávaný návrat domů', 'Expected Start Date': 'Očekávané počáteční datum', -'Expense': 'Výdaje', +'Expense': 'Výdaj', 'Expense Details': 'Detaily výdajů', 'Expense added': 'Výdaje přidány', 'Expense removed': 'Výdaje odstraněny', @@ -3766,7 +3722,7 @@ 'Failed to send mail to Approver - see if you can notify them manually!': 'Selhalo odeslání e-mailu na Schvalovatele - zjistěte, zda jej můžete kontaktovat jiným způsobem.', 'Failed to update role %(role)s': 'Nepodařilo se aktualizovat roli %(role)s', 'Failed!': 'Selhalo!', -'Fair': 'uspokojivý', +'Fair': 'Uspokojivý', 'Falling Object Hazard': 'Nebezpečí padajících předmětů', 'False': 'Ne', 'Families/HH': 'Rodiny / Domácnosti', @@ -3837,7 +3793,6 @@ 'Filter by Status': 'Filtrovat podle Stavu', 'Filter by Tag': 'Filtrovat podle Tagu', 'Filter by Type': 'Filtrovat podle Typu', -'Filter type': 'Typ filtru', 'Filters': 'Filtry', 'Finance': 'Finance', 'Finance / Admin': 'Finance / Admin', @@ -3861,7 +3816,6 @@ 'Fire Stations': 'Požární stanice', 'Fire Suppression': 'Požární zásah', 'Fire Zones': 'Okrsky', -'Firefighters': 'Hasiči', 'First': 'První', 'First Aid': 'První pomoc', 'First Aid Basics': 'Základy první pomoci', @@ -3874,6 +3828,7 @@ 'Flags': 'Příznaky', 'Flash Flood': 'Blesková povodeň', 'Flash Freeze': 'Náhlý mráz', +'Flexible Impact Assessments': 'Flexibilní posouzení dopadů', 'Flood': 'Povodeň', 'Flood (Contents)': 'Povodeň (obsah)', 'Flood (Structure)': 'Povodeň (struktura)', @@ -3903,9 +3858,9 @@ 'Food assistance': 'Potravinová pomoc', 'Food security ': 'Potravinová bezpečnost', 'Food security, Nutrition and Livelihoods': 'Potravinová bezpečnost, výživa a živobytí', +'For': 'Pro', 'For Eden repositories: Whether components of the resource should be included or not': 'Pro úložiště Eden: Zda součásti zdroje by měly být zahrnuty nebo ne', 'For Entity': 'Pro bytost', -'For Grid Pseudo-Question, this is the Row labels & Column labelsFor Questions within the Grid, this is their position in the Grid, encoded as Grid,Row,Col': 'Pro tabulkové Pseudo-otázky jsou to popisy řádků a štítky sloupců pro otázky v rámci tabulky. Zde je jejich pozice v tabulce, kódovaná jako tabulka, řádek, sloupec', 'For POP-3 this is usually 110 (995 for SSL), for IMAP this is usually 143 (993 for IMAP).': 'Pro POP-3 je obvykle 110 (995 pro SSL), pro IMAP je obvykle 143 (993 pro IMAP).', 'For live help from the Sahana community on using this application, go to': 'Pro pomoc od Sahana komunity s používáním tohoto programu přejděte na ', 'For more details on the Sahana Eden system, see the': 'Další informace o systému Sahana Eden naleznete v části', @@ -3955,14 +3910,12 @@ 'Full-time': 'Plný úvazek', 'Fullscreen Map': 'Mapa přes celé okno prohlížeče', 'Function': 'Funkce', -'Function Permissions': 'Oprávnění funkcí', 'Function name': 'Název funkce', 'Function tour is activated': 'Procházení Funkce je aktivováno', 'Functions available': 'Dostupné funkce', 'Functions defined in