diff --git a/docker/.env b/docker/.env index eebf0f150..c6f7b644f 100644 --- a/docker/.env +++ b/docker/.env @@ -12,6 +12,9 @@ TARANIS_NG_TAG=v23.12.1 # Timezone for all containers TZ=Europe/Bratislava +# Force language +VUE_APP_TARANIS_NG_LOCALE="" + # Default passwords. CHANGE THESE FOR PRODUCTION! POSTGRES_PASSWORD=supersecret POSTGRES_KEYCLOAK_PASSWORD=supersecret diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 41ea8ee85..cab8348bc 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -223,7 +223,7 @@ services: VUE_APP_TARANIS_NG_URL: "${TARANIS_NG_HTTPS_URI}" VUE_APP_TARANIS_NG_CORE_API: "${TARANIS_NG_HTTPS_URI}/api/v1" VUE_APP_TARANIS_NG_CORE_SSE: "${TARANIS_NG_HTTPS_URI}/sse" - VUE_APP_TARANIS_NG_LOCALE: en + VUE_APP_TARANIS_NG_LOCALE: "${VUE_APP_TARANIS_NG_LOCALE}" TZ: "${TZ}" labels: traefik.enable: "true" diff --git a/src/gui/package.json b/src/gui/package.json index 272750546..0c60e41d0 100644 --- a/src/gui/package.json +++ b/src/gui/package.json @@ -44,7 +44,7 @@ "vue-cookies": "^1.7.4", "vue-csv-import": "^3.3.10", "vue-cvss": "^1.1.2", - "vue-i18n": "^8.26.7", + "vue-i18n": "^8.28.2", "vue-keypress": "^1.4.0", "vue-quick-chat": "^1.2.8", "vue-quill-editor": "^3.0.6", diff --git a/src/gui/src/components/UserSettings.vue b/src/gui/src/components/UserSettings.vue index 0a29a8755..0c2ba545e 100644 --- a/src/gui/src/components/UserSettings.vue +++ b/src/gui/src/components/UserSettings.vue @@ -161,6 +161,7 @@ selected_word_lists: [], languages: [ { id: 'en', value: 'English' }, + { id: 'cs', value: 'Czech' }, { id: 'sk', value: 'Slovak' }, ], }), @@ -240,4 +241,4 @@ } } } - \ No newline at end of file + diff --git a/src/gui/src/i18n/cs/messages.js b/src/gui/src/i18n/cs/messages.js new file mode 100644 index 000000000..a78ce7ecf --- /dev/null +++ b/src/gui/src/i18n/cs/messages.js @@ -0,0 +1,1057 @@ +const messages_cs = { + + validations: { + messages: { + _default: "Vyplňte prosím povinné pole" + }, + + custom: { + username: { + required: "Vyplňte prosím své uživatelské jméno" + }, + password: { + required: "Heslo je povinné" + }, + url: { + required: "URL je povinné" + }, + key: { + required: "API klíč je povinný" + }, + name: { + required: "Jméno je povinné" + }, + parameter: { + required: "Povinné pole" + }, + password_check: { + required: "Heslo je povinné", + confirmed: "Hesla se neshodují" + }, + collector_node: { + required: "Vyberte instanci kolektoru" + }, + file: { + required: "Soubor je povinný" + } + }, + }, + + login: { + title: "Prosím přihlaste se", + username: "Uživatelské jméno", + password: "Heslo", + submit: "Přihlásit se", + error: "Uživatelské jméno nebo heslo je nesprávné" + }, + + user_menu: { + settings: "Nastavení uživatele", + logout: "Odhlásit", + dark_theme: "Tmavý motiv", + }, + + main_menu: { + enter: "Vložit", + assess: "Vyhodnotit", + analyze: "Analyzovat", + publish: "Zveřejnit", + config: "Nastavení", + dashboard: "Dashboard", + my_assets: "Aktiva" + }, + + nav_menu: { + enter: "Vytvořit novinku", + newsitems: "Novinky", + products: "Reporty", + publications: "Publikace", + recent: "Recent", + popular: "Popular", + favourites: "Oblíbené", + configuration: "Nastavení", + collectors_nodes: "Instance kolektorů", + presenters_nodes: "Instance prezenterů", + publishers_nodes: "Instance vydavatelů", + bots_nodes: "Instance robotů", + osint_sources: "Zdroje OSINT", + osint_source_groups: "Skupiny zdrojů OSINT", + publisher_presets: "Publikační kanály", + bot_presets: "Roboti", + collectors: "Kolektory", + report_items: "Analýzy", + attributes: "Atributy", + report_types: "Typy analýz", + product_types: "Typy publikací", + roles: "Role", + acls: "ACL", + users: "Uživatelé", + organizations: "Organizace", + word_lists: "Seznamy slov", + asset_groups: "Skupiny aktiv", + notification_templates: "Šablony oznámení", + remote_access: "Vzdálený přístup", + remote_nodes: "Vzdálené instance", + local: "Lokální" + }, + + notification: { + close: "Zavřít" + }, + + enter: { + create: "Vytvořit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Novinku se nepodařilo vytvořit.", + title: "Název", + review: "Souhrn", + source: "Zdroj", + link: "Odkaz", + successful: "Novinka byla vytvořena", + }, + + card_item: { + title: "Název", + created: "Vytvořeno", + collected: "Indexováno", + published: "Publikováno", + source: "Zdroj", + status: "Stav", + node: "Instance", + description: "Popis", + in_analyze: "Probíhá analýza", + url: "URL", + name: "Name", + username: "Uživatelské jméno", + aggregated_items: "Sloučené novinky", + }, + + organization: { + add_new: "Přidat novou organizaci", + edit: "Upravit organizaci", + add: "Přidat", + add_btn: "Přidat", + save: "Uložit", + cancel: "Zrušit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Organizaci se nepodařilo vytvořit.", + name: "Název", + description: "Popis", + street: "Ulice", + city: "Město", + zip: "PSČ", + country: "Země", + successful: "Nová organizace byla vytvořena", + successful_edit: "Organizace byla upravena", + removed: "Organizace byla smazána", + removed_error: "Organizace je používána a nelze ji smazat", + total_count: "Počet organizací: " + }, + + user: { + add_new: "Přidat nového uživatele", + edit: "Upravit uživatele", + add: "Přidat", + add_btn: "Přidat", + save: "Uložit", + cancel: "Zrušit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Uživatele se nepodařilo vytvořit.", + username: "Uživatelské jméno", + name: "Jméno", + successful: "Uživatel byl vytvořen", + successful_edit: "Uživatel byl upraven", + removed: "Uživatel byl smazán", + removed_error: "Uživatel je používán a nelze jej smazat", + organizations: "Organizace", + roles: "Role", + permissions: "Práva", + total_count: "Počet uživatelů: ", + password: "Heslo", + password_check: "Zadejte heslo znovu", + }, + + collectors_node: { + add_new: "Přidat novou instanci kolektorů", + edit: "Upravit instanci kolektorů", + save: "Uložit", + add_btn: "Přidat", + cancel: "Zrušit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "K tomuto uzlu kolektoru se nepodařilo připojit.", + name: "Název", + description: "Popis", + url: "URL", + key: "Klíč", + successful: "Nový kolektor byl přidán", + successful_edit: "Instance kolektoru byl upraven", + removed: "Instance kolektoru byla smazána", + removed_error: "Instance kolektoru je používám a nelze jej smazat", + total_count: "Počet uzlů kolektorů: " + }, + + osint_source: { + add_new: "Přidat nový zdroj OSINT", + edit: "Editovat zdroj OSINT", + node: "Instance kolektoru", + collector: "Kolektor", + save: "Uložit", + add_btn: "Přidat", + cancel: "Zrušit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Tento zdroj OSINT se nepodařilo uložit", + name: "Název", + description: "Popis", + successful: "Nový zdroj OSINT byl přidán", + successful_edit: "Zdroj OSINT byl upraven", + removed: "Zdroj OSINT byl úspěšně smazán", + removed_error: "Zdroj OSINT je používán a nelze jej smazat", + word_lists: "Seznamy slov", + type: "Typ", + total_count: "Počet zdrojů OSINT: ", + osint_source_groups: "Skupiny zdrojů OSINT", + tooltip: { + group_items: "Seskupit novinky do souhrnu", + ungroup_items: "Oddělit zprávy ze souhrnu", + analyze_items: "Vytvořit analýzu z novinek", + read_items: "Označit novinky jako přečtené", + important_items: "Označit novinky jako důležité", + like_items: "Označit jako To se mi líbí", + dislike_items: "Označit jako To se mi nelíbí", + delete_items: "Smazat novinky", + select_all: "Vybrat vše", + unselect_all: "Odznačit vše" + }, + notification: { + success: "Kolektory byly přidány" + }, + dialog_import: "Importovat zdroje OSINT", + import: "Importovat", + export: "Exportovat" + }, + + osint_source_group: { + add_new: "Přidat novou skupinu zdrojů OSINT", + edit: "Upravit skupinu zdrojů OSINT", + add: "Přidat", + cancel: "Zrušit", + save: "Uložit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Tuto skupinu zdrojů OSINT se nepodařilo uložit.", + name: "Name", + description: "Popis", + successful: "Nová skupina zdrojů OSINT byla přidána", + successful_edit: "Skupina zdrojů OSINT byla upravena", + removed: "Skupina zdrojů OSINT byla smazána", + removed_error: "Skupina zdrojů OSINT je používána a nelze ji odstranit", + title: "Název", + osint_sources: "Zdroje OSINT", + total_count: "Počet skupin zdrojů OSINT: ", + default_group: "Nezařazeno", + default_group_description: "Skupina pro nezařazené zdroje OSINT" + }, + + role: { + add_new: "Přidat novou roli", + edit: "Upravit roli", + add: "Přidat", + add_btn: "Přidat", + cancel: "Zrušit", + save: "Uložit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Tuto roli se nepodařilo uložit.", + name: "Název", + description: "Popis", + successful: "Nová role byla přidána", + successful_edit: "Role byla upravena", + removed: "Role byla smazána", + removed_error: "Role je používána a nelze ji smazat", + title: "Název", + permissions: "Práva", + total_count: "Počet rolí: " + }, + + acl: { + full_title: "Seznamy pro řízení přístupu (ACL)", + add_new: "Přidat nový ACL", + edit: "Upravit ACL", + add: "Přidat", + add_btn: "Přidat", + cancel: "Zrušit", + save: "Uložit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Toto ACL se nepodařilo uložit.", + name: "Název", + description: "Popis", + item_type: "Typ položky", + item_id: "ID položky", + everyone: "Everyone", + see: "Prohlížet", + access: "Access", + modify: "Upravit", + successful: "Nový ACL bylo přidáno", + successful_edit: "ACL bylo přidáno", + removed: "ACL bylo smazán", + removed_error: "ACL je používáno a nelze jej smazat", + roles: "Role", + users: "Uživatelé", + total_count: "Počet ACL: " + }, + + publisher_preset: { + add_new: "Přidat nové přednastavení vydavatele", + edit: "Upravit přednastavení vydavatele", + node: "Instance vydavatelů", + publisher: "Vydavatel", + add: "Přidat", + save: "Uložit", + add_btn: "Přidat", + cancel: "Zrušit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se vytvořit přednastavení.", + name: "Název", + description: "Popis", + use_for_notifications: "Použit pro všechna globální upozornění", + successful: "Nové přednastavení bylo přidáno", + successful_edit: "Přednastavení bylo upraveno", + removed: "Přednastavení bylo smazáno", + removed_error: "Přednastavení vydavatele se používá a nelze jej smazat", + total_count: "Počet přednastavení vydavatelů: " + }, + + product_type: { + add_new: "Přidat nový typ publikace", + edit: "Upravit typ publikace", + node: "Instance prezenterů", + presenter: "Prezenter", + add: "Přidat", + save: "Uložit", + add_btn: "Přidat", + cancel: "Zrušit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se vytvořit typ publikace.", + name: "Název", + description: "Popis", + successful: "Nový typ publikace byla přidána", + successful_edit: "Typ publikace byl upraven", + removed: "Typ publikace byl smazán", + removed_error: "Typ publikace se používá a nelze jej smazat", + total_count: "Počet typů publikací: ", + help: "Popis parametrů šablony", + close: "Zavřít", + choose_report_type: "Vyberte typ analýzy pro zobrazení popisu parametrů", + report_items: "Analýzy", + report_items_object: { + name: "Název", + name_prefix: "Předpona názvu", + type: "Typ analýzy" + }, + news_items: "Novinky", + news_items_object: { + title: "Název", + review: "Souhrn", + content: "Obsah", + author: "Autor", + source: "Zdroj", + link: "Odkaz", + collected: "Datum indexace", + published: "Datum zveřejnění", + } + }, + + presenters_node: { + add_new: "Přidat novou instanci prezenterů", + edit: "Upravit instanci prezenterů", + add: "Přidat", + save: "Uložit", + add_btn: "Přidat", + cancel: "Zrušit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se připojit k této instanci prezenterů.", + name: "Název", + description: "Popis", + url: "URL", + key: "Heslo", + successful: "Nová instance prezenterů byla přidána", + successful_edit: "Instance prezenterů byla upravena", + removed: "Instance prezenterů byla smazána", + removed_error: "Instance prezenterů je používána a nelze ji smazat", + total_count: "Počet instancí prezenterů: " + }, + + publishers_node: { + add_new: "Přidat novou instanci vydavatelů", + edit: "Upravit instanci vydavatelů", + add: "Přidat", + save: "Uložit", + add_btn: "Přidat", + cancel: "Zrušit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se připojit k této instanci vydavatelů.", + name: "Name", + description: "Popis", + url: "URL", + key: "Klíč", + successful: "Nová instance vydavatelů byla přidána", + successful_edit: "Instance vydavatelů byla upravena", + removed: "Instance vydavatelů byla smazána", + removed_error: "Instance vydavatelů je používána a nelze ji smazat", + total_count: "Počet instancí vydavatelů: " + }, + + bots_node: { + add_new: "Přidat instanci robotů", + edit: "Upravit instanci robotů", + add: "Přidat", + save: "Uložit", + add_btn: "Přidat", + cancel: "Zrušit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se připojit k instanci robotů.", + name: "Název", + description: "Popis", + url: "URL", + key: "Klíč", + successful: "Nová instance robotů byla přidána", + successful_edit: "Instance robotů byla upravena", + removed: "Instance robotů byla smazána", + removed_error: "Instance robotů se používá a nelze ji smazat", + total_count: "Počet instancí robotů: " + }, + + bot_preset: { + add_new: "Přidat nové přednastavení robota", + edit: "Upravit přednastavení robota", + node: "Instance robotů", + bot: "Robot", + add: "Přidat", + save: "Uložit", + add_btn: "Přidat", + cancel: "Zrušit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se vytvořit tohoto robota.", + name: "Název", + description: "Popis", + successful: "Nové přednastavení robota bylo přidáno", + successful_edit: "Přednastavení robota bylo upraveno", + removed: "Přednastavení robota bylo smazáno", + removed_error: "Přednastavení robota je používáno a nelze jej odstranit", + total_count: "Počet přednastavení robotů: " + }, + + attribute: { + add: "Přidat", + add_btn: "Přidat", + add_new: "Přidat nový atribut", + edit: "Upravit atribut", + add_attachment: "Přidat přílohu", + add_value: "Přidat hodnotu", + select_attachment: "Vybrat přílohu", + select_file: "Vybrat soubor", + save: "Uložit", + cancel: "Zrušit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se vytvořit tento atribut", + name: "Název", + description: "Popis", + type: "Typ", + validator: "Validátor", + validator_parameter: "Parametr validátoru", + default_value: "Původní hodnota", + successful: "Nový atribut byl přidán", + successful_edit: "Atribut byl upraven", + removed: "Atribut byl smazán", + removed_error: "Atribut je používán a nemohl být smazán", + value: "Hodnota", + value_text: "Popis hodnoty", + tlp_clear: "TLP:CLEAR", + tlp_green: "TLP:GREEN", + tlp_amber: "TLP:AMBER", + tlp_amber_strict: "TLP:AMBER+STRICT", + tlp_red: "TLP:RED", + attribute_parameters: "Parametry atributu", + attribute_constants: "Konstanty atributu", + import_from_csv: "Importovat z CSV", + new_constant: "Nová konstanta", + attribute: "atribut", + attributes: "Atributy", + new_attribute: "Nový atribut", + min_occurrence: "Minimální výskyt", + max_occurrence: "Maximální výskyt", + total_count: "Počet atributů: ", + import: "Importovat", + load_csv_file: "Načíst CSV soubor", + file_has_header: "Soubor má hlavičku", + search: "Hledat", + reload_cpe: "Znovu načíst CPE slovník", + reload_cve: "Znovu načíst CVE slovník", + delete_existing: "Smazat všechny existující hodnoty", + select_enum: "Vybrat hodnotu konstanty", + reloading: "Opakované načítání slovníku...", + status: "Stav", + select_date: "Vybrat datum", + select_time: "Vybrat čas", + select_datetime: "Vybrat datum a čas", + done: "Hotovo" + }, + + cvss_calculator: { + title: "CVSS Calculator 3.1", + base_score: "Base Score", + attack_vector: "Attack Vector (AV)", + attack_complexity: "Attack Complexity (AC)", + privileges_required: "Privileges Required (PR)", + user_interaction: "User Interaction (UI)", + scope: "Scope (S)", + confidentiality: "Confidentiality (C)", + integrity: "Integrity (I)", + availability: "Availability (A)", + + temporal_score: "Temporal Score", + exploitability_code_maturity: "Exploitability Code Maturity (E)", + remediation_level: "Remediation Level (RL)", + report_confidence: "Report Confidence (RC)", + + environmental_score: "Environmental Score", + confidentiality_requirement: "Confidentiality Requirement (CR)", + integrity_requirement: "Integrity Requirement (IR)", + availability_requirement: "Availability Requirement (AR)", + modified_attack_vector: "Modified Attack Vector (MAV)", + modified_attack_complexity: "Modified Attack Complexity (MAC)", + modified_privileges_required: "Modified Privileges Required (MPR)", + modified_user_interaction: "Modified User Interaction (MUI)", + modified_scope: "Modified Scope (MS)", + modified_confidentiality: "Modified Confidentiality (MC)", + modified_integrity: "Modified Integrity (MI)", + modified_availability: "Modified Availability (MA)", + + network: "Network", + adjacent: "Adjacent", + adjacent_network: "Adjacent Network", + local: "Local", + physical: "Physical", + required: "Required", + unchanged: "Unchanged", + changed: "Changed", + + not_defined: "Not Defined", + none: "None", + low: "Low", + medium: "Medium", + high: "High", + critical: "Critical", + + unproven: "Unproven", + proof_of_concept: "Proof-of-Concept", + functional: "Functional", + + official_fix: "Official Fix", + temporary_fix: "Temporary Fix", + workaround: "Workaround", + unavailable: "Unavailable", + + unknown: "Unknown", + reasonable: "Reasonable", + confirmed: "Confirmed", + + validator: "Neplatný nebo nekompletní textový řetězec" + + }, + + cvss_calculator_tooltip: { + baseMetricGroup_Legend: "The Base Metric group represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments. Determine the vulnerable component and score Attack Vector, Attack Complexity, Privileges Required and User Interaction relative to this.", + AV_Heading: "This metric reflects the context by which vulnerability exploitation is possible. The Base Score increases the more remote (logically, and physically) an attacker can be in order to exploit the vulnerable component.", + AV_N_Label: "The vulnerable component is bound to the network stack and the set of possible attackers extends beyond the other options listed, up to and including the entire Internet. Such a vulnerability is often termed 'remotely exploitable' and can be thought of as an attack being exploitable at the protocol level one or more network hops away (e.g., across one or more routers).", + AV_A_Label: "The vulnerable component is bound to the network stack, but the attack is limited at the protocol level to a logically adjacent topology. This can mean an attack must be launched from the same shared physical (e.g., Bluetooth or IEEE 802.11) or logical (e.g., local IP subnet) network, or from within a secure or otherwise limited administrative domain (e.g., MPLS, secure VPN to an administrative network zone).", + AV_L_Label: "The vulnerable component is not bound to the network stack and the attacker’s path is via read/write/execute capabilities. Either: the attacker exploits the vulnerability by accessing the target system locally (e.g., keyboard, console), or remotely (e.g., SSH); or the attacker relies on User Interaction by another person to perform actions required to exploit the vulnerability (e.g., tricking a legitimate user into opening a malicious document).", + AV_P_Label: "The attack requires the attacker to physically touch or manipulate the vulnerable component. Physical interaction may be brief or persistent.", + AC_Heading: "This metric describes the conditions beyond the attacker’s control that must exist in order to exploit the vulnerability. Such conditions may require the collection of more information about the target or computational exceptions. The assessment of this metric excludes any requirements for user interaction in order to exploit the vulnerability. If a specific configuration is required for an attack to succeed, the Base metrics should be scored assuming the vulnerable component is in that configuration.", + AC_L_Label: "Specialized access conditions or extenuating circumstances do not exist. An attacker can expect repeatable success against the vulnerable component.", + AC_H_Label: "A successful attack depends on conditions beyond the attacker's control. That is, a successful attack cannot be accomplished at will, but requires the attacker to invest in some measurable amount of effort in preparation or execution against the vulnerable component before a successful attack can be expected. For example, a successful attack may require an attacker to: gather knowledge about the environment in which the vulnerable target/component exists; prepare the target environment to improve exploit reliability; or inject themselves into the logical network path between the target and the resource requested by the victim in order to read and/or modify network communications (e.g., a man in the middle attack).", + PR_Heading: "This metric describes the level of privileges an attacker must possess before successfully exploiting the vulnerability.", + PR_N_Label: "The attacker is unauthorized prior to attack, and therefore does not require any access to settings or files to carry out an attack.", + PR_L_Label: "The attacker is authorized with (i.e., requires) privileges that provide basic user capabilities that could normally affect only settings and files owned by a user. Alternatively, an attacker with Low privileges may have the ability to cause an impact only to non-sensitive resources.", + PR_H_Label: "The attacker is authorized with (i.e., requires) privileges that provide significant (e.g., administrative) control over the vulnerable component that could affect component-wide settings and files.", + UI_Heading: "This metric captures the requirement for a user, other than the attacker, to participate in the successful compromise the vulnerable component. This metric determines whether the vulnerability can be exploited solely at the will of the attacker, or whether a separate user (or user-initiated process) must participate in some manner.", + UI_N_Label: "The vulnerable system can be exploited without any interaction from any user.", + UI_R_Label: "Successful exploitation of this vulnerability requires a user to take some action before the vulnerability can be exploited.", + S_Heading: "Does a successful attack impact a component other than the vulnerable component? If so, the Base Score increases and the Confidentiality, Integrity and Authentication metrics should be scored relative to the impacted component.", + S_U_Label: "An exploited vulnerability can only affect resources managed by the same security authority. In this case, the vulnerable component and the impacted component are either the same, or both are managed by the same security authority.", + S_C_Label: "An exploited vulnerability can affect resources beyond the security scope managed by the security authority of the vulnerable component. In this case, the vulnerable component and the impacted component are different and managed by different security authorities.", + C_Heading: "This metric measures the impact to the confidentiality of the information resources managed by a software component due to a successfully exploited vulnerability. Confidentiality refers to limiting information access and disclosure to only authorized users, as well as preventing access by, or disclosure to, unauthorized ones.", + C_N_Label: "There is no loss of confidentiality within the impacted component.", + C_L_Label: "There is some loss of confidentiality. Access to some restricted information is obtained, but the attacker does not have control over what information is obtained, or the amount or kind of loss is limited. The information disclosure does not cause a direct, serious loss to the impacted component.", + C_H_Label: "There is total loss of confidentiality, resulting in all resources within the impacted component being divulged to the attacker. Alternatively, access to only some restricted information is obtained, but the disclosed information presents a direct, serious impact.", + I_Heading: "This metric measures the impact to integrity of a successfully exploited vulnerability. Integrity refers to the trustworthiness and veracity of information.", + I_N_Label: "There is no loss of integrity within the impacted component.", + I_L_Label: "Modification of data is possible, but the attacker does not have control over the consequence of a modification, or the amount of modification is limited. The data modification does not have a direct, serious impact on the impacted component.", + I_H_Label: "There is a total loss of integrity, or a complete loss of protection. For example, the attacker is able to modify any/all files protected by the impacted component. Alternatively, only some files can be modified, but malicious modification would present a direct, serious consequence to the impacted component.", + A_Heading: "This metric measures the impact to the availability of the impacted component resulting from a successfully exploited vulnerability. It refers to the loss of availability of the impacted component itself, such as a networked service (e.g., web, database, email). Since availability refers to the accessibility of information resources, attacks that consume network bandwidth, processor cycles, or disk space all impact the availability of an impacted component.", + A_N_Label: "There is no impact to availability within the impacted component.", + A_L_Label: "Performance is reduced or there are interruptions in resource availability. Even if repeated exploitation of the vulnerability is possible, the attacker does not have the ability to completely deny service to legitimate users. The resources in the impacted component are either partially available all of the time, or fully available only some of the time, but overall there is no direct, serious consequence to the impacted component.", + A_H_Label: "There is total loss of availability, resulting in the attacker being able to fully deny access to resources in the impacted component; this loss is either sustained (while the attacker continues to deliver the attack) or persistent (the condition persists even after the attack has completed). Alternatively, the attacker has the ability to deny some availability, but the loss of availability presents a direct, serious consequence to the impacted component (e.g., the attacker cannot disrupt existing connections, but can prevent new connections; the attacker can repeatedly exploit a vulnerability that, in each instance of a successful attack, leaks a only small amount of memory, but after repeated exploitation causes a service to become completely unavailable).", + temporalMetricGroup_Legend: "The Temporal metrics measure the current state of exploit techniques or code availability, the existence of any patches or workarounds, or the confidence that one has in the description of a vulnerability.", + E_Heading: "This metric measures the likelihood of the vulnerability being attacked, and is typically based on the current state of exploit techniques, exploit code availability, or active, 'in-the-wild' exploitation.", + E_X_Label: "Assigning this value indicates there is insufficient information to choose one of the other values, and has no impact on the overall Temporal Score, i.e., it has the same effect on scoring as assigning High.", + E_U_Label: "No exploit code is available, or an exploit is theoretical.", + E_P_Label: "Proof-of-concept exploit code is available, or an attack demonstration is not practical for most systems. The code or technique is not functional in all situations and may require substantial modification by a skilled attacker.", + E_F_Label: "Functional exploit code is available. The code works in most situations where the vulnerability exists.", + E_H_Label: "Functional autonomous code exists, or no exploit is required (manual trigger) and details are widely available. Exploit code works in every situation, or is actively being delivered via an autonomous agent (such as a worm or virus). Network-connected systems are likely to encounter scanning or exploitation attempts. Exploit development has reached the level of reliable, widely-available, easy-to-use automated tools.", + RL_Heading: "The Remediation Level of a vulnerability is an important factor for prioritization. The typical vulnerability is unpatched when initially published. Workarounds or hotfixes may offer interim remediation until an official patch or upgrade is issued. Each of these respective stages adjusts the temporal score downwards, reflecting the decreasing urgency as remediation becomes final.", + RL_X_Label: "Assigning this value indicates there is insufficient information to choose one of the other values, and has no impact on the overall Temporal Score, i.e., it has the same effect on scoring as assigning Unavailable.", + RL_O_Label: "A complete vendor solution is available. Either the vendor has issued an official patch, or an upgrade is available.", + RL_T_Label: "There is an official but temporary fix available. This includes instances where the vendor issues a temporary hotfix, tool, or workaround.", + RL_W_Label: "There is an unofficial, non-vendor solution available. In some cases, users of the affected technology will create a patch of their own or provide steps to work around or otherwise mitigate the vulnerability.", + RL_U_Label: "There is either no solution available or it is impossible to apply.", + RC_Heading: "This metric measures the degree of confidence in the existence of the vulnerability and the credibility of the known technical details. Sometimes only the existence of vulnerabilities are publicized, but without specific details. For example, an impact may be recognized as undesirable, but the root cause may not be known. The vulnerability may later be corroborated by research which suggests where the vulnerability may lie, though the research may not be certain. Finally, a vulnerability may be confirmed through acknowledgement by the author or vendor of the affected technology. The urgency of a vulnerability is higher when a vulnerability is known to exist with certainty. This metric also suggests the level of technical knowledge available to would-be attackers.", + RC_X_Label: "Assigning this value indicates there is insufficient information to choose one of the other values, and has no impact on the overall Temporal Score, i.e., it has the same effect on scoring as assigning Confirmed.", + RC_U_Label: "There are reports of impacts that indicate a vulnerability is present. The reports indicate that the cause of the vulnerability is unknown, or reports may differ on the cause or impacts of the vulnerability. Reporters are uncertain of the true nature of the vulnerability, and there is little confidence in the validity of the reports or whether a static Base score can be applied given the differences described. An example is a bug report which notes that an intermittent but non-reproducible crash occurs, with evidence of memory corruption suggesting that denial of service, or possible more serious impacts, may result.", + RC_R_Label: "Significant details are published, but researchers either do not have full confidence in the root cause, or do not have access to source code to fully confirm all of the interactions that may lead to the result. Reasonable confidence exists, however, that the bug is reproducible and at least one impact is able to be verified (Proof-of-concept exploits may provide this). An example is a detailed write-up of research into a vulnerability with an explanation (possibly obfuscated or 'left as an exercise to the reader') that gives assurances on how to reproduce the results.", + RC_C_Label: "Detailed reports exist, or functional reproduction is possible (functional exploits may provide this). Source code is available to independently verify the assertions of the research, or the author or vendor of the affected code has confirmed the presence of the vulnerability.", + environmentalMetricGroup_Legend: "These metrics enable the analyst to customize the CVSS score depending on the importance of the affected IT asset to a user’s organization, measured in terms of complementary/alternative security controls in place, Confidentiality, Integrity, and Availability. The metrics are the modified equivalent of base metrics and are assigned metric values based on the component placement in organization infrastructure.", + CR_Heading: "These metrics enable the analyst to customize the CVSS score depending on the importance of the Confidentiality of the affected IT asset to a user’s organization, relative to other impacts. This metric modifies the environmental score by reweighting the Modified Confidentiality impact metric versus the other modified impacts.", + CR_X_Label: "Assigning this value indicates there is insufficient information to choose one of the other values, and has no impact on the overall Environmental Score, i.e., it has the same effect on scoring as assigning Medium.", + CR_L_Label: "Loss of Confidentiality is likely to have only a limited adverse effect on the organization or individuals associated with the organization (e.g., employees, customers).", + CR_M_Label: "Assigning this value to the metric will not influence the score.", + CR_H_Label: "Loss of Confidentiality is likely to have a catastrophic adverse effect on the organization or individuals associated with the organization (e.g., employees, customers).", + IR_Heading: "These metrics enable the analyst to customize the CVSS score depending on the importance of the Integrity of the affected IT asset to a user’s organization, relative to other impacts. This metric modifies the environmental score by reweighting the Modified Integrity impact metric versus the other modified impacts.", + IR_X_Label: "Assigning this value indicates there is insufficient information to choose one of the other values, and has no impact on the overall Environmental Score, i.e., it has the same effect on scoring as assigning Medium.", + IR_L_Label: "Loss of Integrity is likely to have only a limited adverse effect on the organization or individuals associated with the organization (e.g., employees, customers).", + IR_M_Label: "Assigning this value to the metric will not influence the score.", + IR_H_Label: "Loss of Integrity is likely to have a catastrophic adverse effect on the organization or individuals associated with the organization (e.g., employees, customers).", + AR_Heading: "These metrics enable the analyst to customize the CVSS score depending on the importance of the Availability of the affected IT asset to a user’s organization, relative to other impacts. This metric modifies the environmental score by reweighting the Modified Availability impact metric versus the other modified impacts.", + AR_X_Label: "Assigning this value indicates there is insufficient information to choose one of the other values, and has no impact on the overall Environmental Score, i.e., it has the same effect on scoring as assigning Medium.", + AR_L_Label: "Loss of Availability is likely to have only a limited adverse effect on the organization or individuals associated with the organization (e.g., employees, customers).", + AR_M_Label: "Assigning this value to the metric will not influence the score.", + AR_H_Label: "Loss of Availability is likely to have a catastrophic adverse effect on the organization or individuals associated with the organization (e.g., employees, customers).", + MAV_Heading: "This metric reflects the context by which vulnerability exploitation is possible. The Environmental Score increases the more remote (logically, and physically) an attacker can be in order to exploit the vulnerable component.", + MAV_X_Label: "The value assigned to the corresponding Base metric is used.", + MAV_N_Label: "The vulnerable component is bound to the network stack and the set of possible attackers extends beyond the other options listed, up to and including the entire Internet. Such a vulnerability is often termed 'remotely exploitable' and can be thought of as an attack being exploitable at the protocol level one or more network hops away.", + MAV_A_Label: "The vulnerable component is bound to the network stack, but the attack is limited at the protocol level to a logically adjacent topology. This can mean an attack must be launched from the same shared physical (e.g., Bluetooth or IEEE 802.11) or logical (e.g., local IP subnet) network, or from within a secure or otherwise limited administrative domain (e.g., MPLS, secure VPN).", + MAV_L_Label: "The vulnerable component is not bound to the network stack and the attacker’s path is via read/write/execute capabilities. Either: the attacker exploits the vulnerability by accessing the target system locally (e.g., keyboard, console), or remotely (e.g., SSH); or the attacker relies on User Interaction by another person to perform actions required to exploit the vulnerability (e.g., tricking a legitimate user into opening a malicious document).", + MAV_P_Label: "The attack requires the attacker to physically touch or manipulate the vulnerable component. Physical interaction may be brief or persistent.", + MAC_Heading: "This metric describes the conditions beyond the attacker’s control that must exist in order to exploit the vulnerability. Such conditions may require the collection of more information about the target or computational exceptions. The assessment of this metric excludes any requirements for user interaction in order to exploit the vulnerability. If a specific configuration is required for an attack to succeed, the Base metrics should be scored assuming the vulnerable component is in that configuration.", + MAC_X_Label: "The value assigned to the corresponding Base metric is used.", + MAC_L_Label: "Specialized access conditions or extenuating circumstances do not exist. An attacker can expect repeatable success against the vulnerable component.", + MAC_H_Label: "A successful attack depends on conditions beyond the attacker's control. That is, a successful attack cannot be accomplished at will, but requires the attacker to invest in some measurable amount of effort in preparation or execution against the vulnerable component before a successful attack can be expected. For example, a successful attack may require an attacker to: gather knowledge about the environment in which the vulnerable target/component exists; prepare the target environment to improve exploit reliability; or inject themselves into the logical network path between the target and the resource requested by the victim in order to read and/or modify network communications (e.g., a man in the middle attack).", + MPR_Heading: "This metric describes the level of privileges an attacker must possess before successfully exploiting the vulnerability.", + MPR_X_Label: "The value assigned to the corresponding Base metric is used.", + MPR_N_Label: "The attacker is unauthorized prior to attack, and therefore does not require any access to settings or files to carry out an attack.", + MPR_L_Label: "The attacker is authorized with (i.e., requires) privileges that provide basic user capabilities that could normally affect only settings and files owned by a user. Alternatively, an attacker with Low privileges may have the ability to cause an impact only to non-sensitive resources.", + MPR_H_Label: "The attacker is authorized with (i.e., requires) privileges that provide significant (e.g., administrative) control over the vulnerable component that could affect component-wide settings and files.", + MUI_Heading: "This metric captures the requirement for a user, other than the attacker, to participate in the successful compromise the vulnerable component. This metric determines whether the vulnerability can be exploited solely at the will of the attacker, or whether a separate user (or user-initiated process) must participate in some manner.", + MUI_X_Label: "The value assigned to the corresponding Base metric is used.", + MUI_N_Label: "The vulnerable system can be exploited without any interaction from any user.", + MUI_R_Label: "Successful exploitation of this vulnerability requires a user to take some action before the vulnerability can be exploited.", + MS_Heading: "Does a successful attack impact a component other than the vulnerable component? If so, the Base Score increases and the Confidentiality, Integrity and Authentication metrics should be scored relative to the impacted component.", + MS_X_Label: "The value assigned to the corresponding Base metric is used.", + MS_U_Label: "An exploited vulnerability can only affect resources managed by the same security authority. In this case, the vulnerable component and the impacted component are either the same, or both are managed by the same security authority.", + MS_C_Label: "An exploited vulnerability can affect resources beyond the security scope managed by the security authority of the vulnerable component. In this case, the vulnerable component and the impacted component are different and managed by different security authorities.", + MC_Heading: "This metric measures the impact to the confidentiality of the information resources managed by a software component due to a successfully exploited vulnerability. Confidentiality refers to limiting information access and disclosure to only authorized users, as well as preventing access by, or disclosure to, unauthorized ones.", + MC_X_Label: "The value assigned to the corresponding Base metric is used.", + MC_N_Label: "There is no loss of confidentiality within the impacted component.", + MC_L_Label: "There is some loss of confidentiality. Access to some restricted information is obtained, but the attacker does not have control over what information is obtained, or the amount or kind of loss is limited. The information disclosure does not cause a direct, serious loss to the impacted component.", + MC_H_Label: "There is total loss of confidentiality, resulting in all resources within the impacted component being divulged to the attacker. Alternatively, access to only some restricted information is obtained, but the disclosed information presents a direct, serious impact.", + MI_Heading: "This metric measures the impact to integrity of a successfully exploited vulnerability. Integrity refers to the trustworthiness and veracity of information.", + MI_X_Label: "The value assigned to the corresponding Base metric is used.", + MI_N_Label: "There is no loss of integrity within the impacted component.", + MI_L_Label: "Modification of data is possible, but the attacker does not have control over the consequence of a modification, or the amount of modification is limited. The data modification does not have a direct, serious impact on the impacted component.", + MI_H_Label: "There is a total loss of integrity, or a complete loss of protection. For example, the attacker is able to modify any/all files protected by the impacted component. Alternatively, only some files can be modified, but malicious modification would present a direct, serious consequence to the impacted component.", + MA_Heading: "This metric measures the impact to the availability of the impacted component resulting from a successfully exploited vulnerability. It refers to the loss of availability of the impacted component itself, such as a networked service (e.g., web, database, email). Since availability refers to the accessibility of information resources, attacks that consume network bandwidth, processor cycles, or disk space all impact the availability of an impacted component.", + MA_X_Label: "The value assigned to the corresponding Base metric is used.", + MA_N_Label: "There is no impact to availability within the impacted component.", + MA_L_Label: "Performance is reduced or there are interruptions in resource availability. Even if repeated exploitation of the vulnerability is possible, the attacker does not have the ability to completely deny service to legitimate users. The resources in the impacted component are either partially available all of the time, or fully available only some of the time, but overall there is no direct, serious consequence to the impacted component.", + MA_H_Label: "There is total loss of availability, resulting in the attacker being able to fully deny access to resources in the impacted component; this loss is either sustained (while the attacker continues to deliver the attack) or persistent (the condition persists even after the attack has completed). Alternatively, the attacker has the ability to deny some availability, but the loss of availability presents a direct, serious consequence to the impacted component (e.g., the attacker cannot disrupt existing connections, but can prevent new connections; the attacker can repeatedly exploit a vulnerability that, in each instance of a successful attack, leaks a only small amount of memory, but after repeated exploitation causes a service to become completely unavailable)." + }, + + report_type: { + add_new: "Přidat nový typ analýzy", + edit: "Upravit typ analýzy", + add_btn: "Přidat", + save: "Uložit", + cancel: "Zrušit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se uložit tento typ analýzy", + name: "Název", + description: "Popis", + section_title: "Section", + new_group: "Nová skupina atributů", + successful: "Nový typ analýzy byl přidán", + successful_edit: "Typ analýzy byl upraven", + removed_error: "Typ analýzy je používán a nemohl být smazán", + removed: "Typ analýzy byl smazán", + total_count: "Počet typů analýz: " + }, + + report_item: { + add_new: "Nová analýza", + edit: "Upravit analýzu", + read: "Report item preview", + save: "Uložit", + cancel: "Zrušit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se vytvořit tuto analýzu", + title: "Název", + title_prefix: "Předpona názvu", + report_type: "Typ analýzy", + successful: "Analýza byla přidána", + successful_edit: "Analýza byla uložena", + removed: "Analýza byla smazána", + removed_error: "Analýza se používá a nelze ji smazat", + select: "Vybrat analýzy", + select_remote: "Vybrat novinky ze vzdálených instancí", + add: "Přidat", + attributes: "Atributy", + import_csv: "Importovat z CSV", + import_from_csv: "Importovat CVE/CPE z CSV", + delete_existing_codes: "Smazat stávající CVE/CPE kódy", + tooltip: { + sort_time: "Seřadit hodnoty od nejnovější", + sort_user: "Zobrazit vlastní hodnoty před ostatními", + cvss_detail: "Zobrazit definice CVSS kalkulačky", + enum_selector: "Zobrazit okno s hledáním hodnot", + delete_value: "Smazat hodnotu tohoto atributu", + add_value: "Přidat novou hodnotu k tomuto atributu", + } + }, + + product: { + add_new: "Nový typ publikace", + add_btn: "Přidat", + edit: "Upravit typ publikace", + save: "Uložit", + cancel: "Zrušit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se vytvořit tento typ publikace", + title: "Nadpis", + name: "Název", + description: "Popis", + report_type: "Typ publikace", + successful: "Nový typ publikace byl úspěšně přidán", + successful_edit: "Typ publikace byl uložen", + removed: "Typ publikace byl úspěšně smazán", + removed_error: "Typ publikace je používán a nelze jej smazat", + preview: "Zobrazit náhled publikace", + publish: "Zveřejnit publikaci", + total_count: "Počet typů publikací: " + }, + + analyze: { + sort: "Seřadit podle", + from: "Od", + to: "Do", + add_new: "Přidat", + total_count: "Počet analýz: ", + tooltip: { + filter_completed: "Zobrazit/Skrýt hotové analýzy", + filter_incomplete: "Zobrazit/Skrýt nedokončené analýzy", + range: { + ALL: "Zobrazit všechny analýzy", + TODAY: "Zobrazit dnešní analýzy", + WEEK: "Zobrazit analýzy za poslední týden", + MONTH: "Zobrazit analýzy za poslední měsíc" + }, + sort: { + time: { + ascending: "Seřadit analýzy podle data vytvoření vzestupně", + descending: "Seřadit analýzy podle data vytvoření sestupně" + } + }, + toggle_selection: "Toggle analýzy selection mode", + delete_items: "Smazat analýzy", + publish_items: "Vytvořit z analýz report", + delete_item: "Smazat analýzu", + publish_item: "Vytvořit report z analýzy", + } + }, + + assess: { + source: "Zdroj", + comments: "Komentáře", + collected: "Indexováno", + published: "Publikováno", + author: "Autor", + add_news_item: "Přidat novinku", + select_news_item: "Vybrat novinku", + add: "Přidat", + aggregate_detail: "Detail sloučené novinky", + aggregate_info: "Info", + aggregate_title: "Název", + aggregate_description: "Popis", + attributes: "Atributy", + title: "Název", + description: "Popis", + download: "Stáhnout", + total_count: "Počet novinek: ", + selected_count: "Počet vybraných novinek: ", + tooltip: { + filter_read: "Zobrazit/Skrýt nepřečtené novinky", + filter_important: "Zobrazit/Skrýt důležité novinky", + filter_relevant: "Zobrazit/Skrýt relevantní novinky", + filter_in_analyze: "Zobrazit/Skrýt analyzované novinky", + range: { + ALL: "Zobrazit všechny novinky", + TODAY: "Zobrazit dnešní novinky", + WEEK: "Zobrazit novinky za minulý týden", + MONTH: "Zobrazit novinky za minulý měsíc" + }, + sort: { + time: { + ascending: "Seřadit novinky podle data indexace vzestupně", + descending: "Seřadit novinky podle data indexace sestupně" + }, + relevance: { + ascending: "Seřadit novinky podle relevance vzestupně", + descending: "Seřadit novinky podle relevance sestupně" + } + }, + highlight_wordlist: "Zvýraznit slova ze seznamů slov", + toggle_selection: "Mód výběru novinek", + group_items: "Sloučit novinky", + ungroup_items: "Rozdělit novinky", + analyze_items: "Vytvořit z novinek analýzu", + read_items: "Označit novinky jako přečtené", + important_items: "Označit novinky jako důležité", + like_items: "To se mi líbí", + dislike_items: "To se mi nelíbí", + delete_items: "Smazat novinky", + open_source: "Otevřít zdroj novinky v nové záložce", + ungroup_item: "Oddělit novinku ze skupiny", + analyze_item: "Vytvořit z novinky analýzu", + read_item: "Označit jako přečtené", + important_item: "Označit jako důležité", + like_item: "To se mi líbí", + dislike_item: "To se mi nelíbí", + delete_item: "Smazat novinku", + }, + shortcuts: { + enter_filter_mode: "Zapnut mód zkratek 'filtr'. Ukončete klávesou Escape.", + enter_view_mode: "Zapnut mód zkratek 'náhled'. Ukončete klávesou Escape.", + default_mode: "Mód zkratek 'původní'.", + aggregate_no_group: "Nelze otevřít neagregovanou novinku, funguje pouze se skupinou novinek.", + }, + }, + + publish: { + tooltip: { + range: { + ALL: "Zobrazit všechny reporty", + TODAY: "Zobrazit dnešní reporty", + WEEK: "Zobrazit reporty za minulý týden", + MONTH: "Zobrazit reporty za minulý měsíc" + }, + sort: { + time: { + ascending: "Seřadit reporty podle data vytvoření vzestupně", + descending: "Seřadit reporty podle data vytvoření sestupně" + } + }, + delete_item: "Smazat report", + } + }, + + toolbar_filter: { + search: "Hledání", + all: "Vše", + today: "Dnes", + this_week: "Tento týden", + this_month: "Tento měsíc", + custom_filter: "Vlastní filtrování" + }, + + settings: { + user_settings: "Nastavení uživatele", + tab_general: "Obecné", + tab_wordlists: "Seznamy slov", + tab_hotkeys: "Zkratky", + save: "Uložit", + close_item: "Zavřít", + collection_up: "Posunout nahoru", + collection_down: "Posunout dolů", + show_item: "Show", + read_item: "Označit jako přečtené", + important_item: "Označit jako důležité", + like_item: "Označit jako To se mi líbí", + unlike_item: "Označit jako To se mi nelíbí", + delete_item: "Smazat", + spellcheck: "Kontrolovat pravopis", + dark_theme: "Tmavý motiv", + press_key: "Stiskněte klávesu pro ", + cancel_press_key: "Zrušit", + selection: "Výběr", + group: "Seskupit", + ungroup: "Zrušit seskupení", + new_product: "Nový produkt", + aggregate_open: "Otevřít sloučenou novinku" + }, + + word_list: { + add_new: "Přidat nový seznam slov", + edit: "Upravit seznam slov", + add: "Přidat", + add_btn: "Přidat", + save: "Uložit", + cancel: "Zrušit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se uložit tento seznam slov", + name: "Název", + description: "Popis", + link: "URL", + use_for_stop_words: "Použít jako seznam stopslov", + successful: "Nový seznam slov byl přidán", + successful_edit: "Seznam slov byl přidán byl upraven", + remove: "Seznam slov byl smazán", + removed_error: "Seznam slov se používá a nelze jej smazat", + value: "Hodnota", + new_word: "Nové slovo", + words: "Slova", + new_category: "Nová kategorie", + total_count: "Počet seznamů slov: ", + file_has_header: "Soubor má hlavičku", + import_from_csv: "Importovat z CSV", + load_csv_file: "Načíst CSV soubor", + download_from_link: "Stáhnout z URL", + import: "Importovat", + close: "Zavřít", + }, + + asset_group: { + add_new: "Přidat novou skupinu aktiv", + edit: "Upravit skupinu aktiv", + add: "Přidat", + cancel: "Zrušit", + save: "Uložit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se vytvořit skupinu aktiv", + name: "Název", + description: "Popis", + notification_templates: "Šablony upozornění", + allowed_users: "Povolení uživatelé (Pokud není žádný vybrán, získávají povolení všichni)", + successful: "Nová skupina aktiv byla přidána", + successful_edit: "Skupina aktiv byla upravena", + removed: "Skupina aktiv byla smazána", + removed_error: "Skupina aktiv je používána a nelze ji smazat", + total_count: "Počet skupin aktiv: " + }, + + notification_template: { + add_new: "Přidat novou šablonu upozornění", + edit: "Upravit šablonu upozornění", + add: "Přidat", + cancel: "Zrušit", + save: "Uložit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se uložit šablonu upozornění", + name: "Název", + description: "Popis", + message_title: "Nadpis zprávy", + message_body: "Tělo zprávy", + new_recipient: "Nový příjemce", + email: "E-mailová adresa", + recipients: "Příjemci", + successful: "Nová šablona upozornění byla přidána", + successful_edit: "Šablona upozornění byla upravena", + removed: "Šablona upozornění byla smazána", + removed_error: "Šablona upozornění se používá a nelze ji smazat", + total_count: "Počet šablon upozornění: " + }, + + asset: { + add_new: "Přidat nové aktivum", + add_group_info: "Přidejte prosím skupinu aktiv", + edit: "Upravit aktivum", + add: "Přidat", + cancel: "Zrušit", + save: "Uložit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se uložit toto aktivum", + name: "Název", + serial: "Sériové číslo", + description: "Popis", + cpe: "CPE kód", + new_cpe: "Přidat CPE kód", + cpes: "CPE kódy", + value: "Hodnota", + successful: "Nové aktivum bylo přidáno", + successful_edit: "Aktivum bylo upraveno", + removed: "Aktivum bylo smazáno", + removed_error: "Aktivum se používá a nelze jej smazat", + total_count: "Počet aktiv: ", + vulnerabilities: "Zranitelnosti", + vulnerabilities_count: "Počet zranitelností: ", + no_vulnerabilities: "Bez zranitelností", + import_csv: "Importovat CSV", + import_from_csv: "Importovat CPE z CSV", + file_has_header: "Soubor má hlavičku", + load_csv_file: "Načíst CSV soubor", + import: "Importovat", + close: "Zavřít" + }, + + remote_access: { + add_new: "Přidat vzdálený přístup", + edit: "Upravit vzdálený přístup", + add: "Přidat", + cancel: "Zrušit", + save: "Uložit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se uložit vzdálený přístup", + name: "Název", + description: "Popis", + access_key: "Přístupový klíč", + enabled: "Enabled", + successful: "Nový vzdálený přístup byl přidán", + successful_edit: "Vzdálený přístup byl upraven", + removed: "Vzdálený přístup byl smazán", + removed_error: "Vzdálený přístup se používá a nelze jej smazat", + osint_sources: "Sdílené zdroje OSINT", + report_item_types: "Sdílené analýzy", + total_count: "Počet vzdálených přístupů: " + }, + + remote_node: { + add_new: "Přidat vzdálenou instanci", + edit: "Upravit vzdálenou instanci", + add: "Přidat", + cancel: "Zrušit", + save: "Uložit", + validation_error: "Prosím vyplňte všechna povinná pole", + error: "Nepodařilo se uložit tuto vzdálenou instanci", + name: "Name", + description: "Popis", + remote_url: "URL vzdálené instance", + event_url: "URL vzdáleného zdroje událostí", + access_key: "Přístupový klíč", + enabled: "Zapnuto", + connect: "Připojit ke vzdálené instanci", + connect_error: "Připojení ke vzdálené instanci selhalo. Použit nesprávný přístupový klíč nebo instance není v dostupná.", + connect_info: "Připojeno ke vzdálené instanci.", + sync_news_items: "Synchronizovat novinky", + sync_report_items: "Synchronizovat analýzy", + osint_source_group: "Synchronizovat do skupiny OSINT zdrojů", + successful: "Nová vzdálená instance byla přidána", + successful_edit: "Vzdálená instance byla upravena", + removed: "Vzdálená instance byla smazána", + removed_error: "Vzdálená instance se používá a nelze ji odstranit", + total_count: "Počet vzdálených instancí: " + }, + + drop_zone: { + default_message: "Přetáhněte soubory sem nebo kliknutím vyberte", + file_description: "Popis", + last_updated: "Naposledy upraveno", + save: "Uložit", + download: "Stáhnout", + delete: "Smazat", + cancel: "Zrušit", + attachment_load: "Načíst přílohu", + attachment_detail: "Detaily přílohy" + }, + + error: { + aggregate_in_use: "Některé vybrané novinky nebo sloučené novinky jsou již připojeny k analýze", + server_error: "Neznámá chyba serveru..." + } +}; + +export default messages_cs diff --git a/src/gui/src/i18n/en/messages.js b/src/gui/src/i18n/en/messages.js index 1c4572639..b7f2c82c7 100644 --- a/src/gui/src/i18n/en/messages.js +++ b/src/gui/src/i18n/en/messages.js @@ -143,7 +143,7 @@ const messages_en = { country: "Country", successful: "New organization was successfully added", successful_edit: "Organization was successfully updated", - removed: "Organization was successfully removed", + removed: "Organization was successfully deleted", removed_error: "Organization is in use and could not be deleted", total_count: "Organizations count: " }, @@ -161,7 +161,7 @@ const messages_en = { name: "Name", successful: "New user was successfully added", successful_edit: "User was successfully updated", - removed: "User was successfully removed", + removed: "User was successfully deleted", removed_error: "User is in use and could not be deleted", organizations: "Organizations", roles: "Roles", @@ -185,7 +185,7 @@ const messages_en = { key: "Key", successful: "New collectors node was successfully added", successful_edit: "Collectors node was successfully updated", - removed: "Collectors node was successfully removed", + removed: "Collectors node was successfully deleted", removed_error: "Collectors node is in use and could not be deleted", total_count: "Collectors nodes count: " }, @@ -204,7 +204,7 @@ const messages_en = { description: "Description", successful: "New OSINT source was successfully added", successful_edit: "OSINT source was successfully updated", - removed: "OSINT source was successfully removed", + removed: "OSINT source was successfully deleted", removed_error: "OSINT source is in use and could not be deleted", word_lists: "Word Lists", type: "Type", @@ -242,7 +242,7 @@ const messages_en = { description: "Description", successful: "New OSINT source group was successfully added", successful_edit: "OSINT source group was successfully updated", - removed: "OSINT source group was successfully removed", + removed: "OSINT source group was successfully deleted", removed_error: "OSINT source group is in use and could not be deleted", title: "Title", osint_sources: "OSINT Sources", @@ -264,7 +264,7 @@ const messages_en = { description: "Description", successful: "New role was successfully added", successful_edit: "Role was successfully updated", - removed: "Role was successfully removed", + removed: "Role was successfully deleted", removed_error: "Role is in use and could not be deleted", title: "Title", permissions: "Permissions", @@ -291,7 +291,7 @@ const messages_en = { modify: "Modify", successful: "New ACL was successfully added", successful_edit: "ACL was successfully updated", - removed: "ACL was successfully removed", + removed: "ACL was successfully deleted", removed_error: "ACL is in use and could not be deleted", roles: "Roles", users: "Users", @@ -314,14 +314,14 @@ const messages_en = { use_for_notifications: "Use for all global notifications", successful: "New publisher preset was successfully added", successful_edit: "Publisher preset was successfully updated", - removed: "Publisher preset was successfully removed", + removed: "Publisher preset was successfully deleted", removed_error: "Publisher preset is in use and could not be deleted", total_count: "Publisher presets count: " }, product_type: { add_new: "Add new product type", - edit: "Edit new product type", + edit: "Edit product type", node: "Presenters Node", presenter: "Presenter", add: "Add", @@ -334,7 +334,7 @@ const messages_en = { description: "Description", successful: "New product type was successfully added", successful_edit: "Product type was successfully updated", - removed: "Product type was successfully removed", + removed: "Product type was successfully deleted", removed_error: "Product type is in use and could not be deleted", total_count: "Product types count: ", help: "Template parameters description", @@ -361,7 +361,7 @@ const messages_en = { presenters_node: { add_new: "Add new presenters node", - edit: "Edit new presenters node", + edit: "Edit presenters node", add: "Add", save: "Save", add_btn: "Add New", @@ -374,14 +374,14 @@ const messages_en = { key: "Key", successful: "New presenters node was successfully added", successful_edit: "Presenters node was successfully updated", - removed: "Presenters node was successfully removed", + removed: "Presenters node was successfully deleted", removed_error: "Presenters node is in use and could not be deleted", total_count: "Presenters nodes count: " }, publishers_node: { add_new: "Add new publishers node", - edit: "Add new publishers node", + edit: "Edit publishers node", add: "Add", save: "Save", add_btn: "Add New", @@ -394,14 +394,14 @@ const messages_en = { key: "Key", successful: "New publishers node was successfully added", successful_edit: "Publishers node was successfully updated", - removed: "Publishers node was successfully removed", + removed: "Publishers node was successfully deleted", removed_error: "Publishers node is in use and could not be deleted", total_count: "Publishers nodes count: " }, bots_node: { add_new: "Add new bots node", - edit: "Add new bots node", + edit: "Edit bots node", add: "Add", save: "Save", add_btn: "Add New", @@ -414,7 +414,7 @@ const messages_en = { key: "Key", successful: "New bots node was successfully added", successful_edit: "Bots node was successfully updated", - removed: "Bots node was successfully removed", + removed: "Bots node was successfully deleted", removed_error: "Bots node is in use and could not be deleted", total_count: "Bots nodes count: " }, @@ -434,7 +434,7 @@ const messages_en = { description: "Description", successful: "New bot preset was successfully added", successful_edit: "Bot preset was successfully updated", - removed: "Bot preset was successfully removed", + removed: "Bot preset was successfully deleted", removed_error: "Bot preset is in use and could not be deleted", total_count: "Bot presets count: " }, @@ -460,7 +460,7 @@ const messages_en = { default_value: "Default Value", successful: "New attribute was successfully added", successful_edit: "Attribute was successfully updated", - removed: "Attribute was successfully removed", + removed: "Attribute was successfully deleted", removed_error: "Attribute is in use and could not be deleted", value: "Value", value_text: "Value text", @@ -680,7 +680,7 @@ const messages_en = { successful: "New report item type was successfully added", successful_edit: "Report item type was successfully updated", removed_error: "Report item type is in use and could not be deleted", - removed: "Report item type was successfully removed", + removed: "Report item type was successfully deleted", total_count: "Report types count: " }, @@ -697,7 +697,7 @@ const messages_en = { report_type: "Report Item Type", successful: "New report item was successfully added", successful_edit: "Report item was successfully saved", - removed: "Report item was successfully removed", + removed: "Report item was successfully deleted", removed_error: "Report item is in use and could not be deleted", select: "Select Report Items", select_remote: "Select Report Items from Remote Nodes", @@ -730,7 +730,7 @@ const messages_en = { report_type: "Product Type", successful: "New product was successfully added", successful_edit: "Product was successfully saved", - removed: "Product was successfully removed", + removed: "Product was successfully deleted", removed_error: "Product is in use and could not be deleted", preview: "Show product preview", publish: "Publish product", @@ -915,7 +915,7 @@ const messages_en = { use_for_stop_words: "Use as stop word list", successful: "New word list was successfully added", successful_edit: "Word list was successfully updated", - remove: "Word list was successfully removed", + remove: "Word list was successfully deleted", removed_error: "Word list is in use and could not be deleted", value: "Value", new_word: "New Word", @@ -944,7 +944,7 @@ const messages_en = { allowed_users: "Allowed users (If none is selected than all users are allowed)", successful: "New asset group was successfully added", successful_edit: "Asset group was successfully updated", - removed: "Asset group was successfully removed", + removed: "Asset group was successfully deleted", removed_error: "Asset group is in use and could not be deleted", total_count: "Asset groups count: " }, @@ -966,7 +966,7 @@ const messages_en = { recipients: "Recipients", successful: "New notification template was successfully added", successful_edit: "Notification template was successfully updated", - removed: "Notification template was successfully removed", + removed: "Notification template was successfully deleted", removed_error: "Notification template is in use and could not be deleted", total_count: "Notification templates count: " }, @@ -989,7 +989,7 @@ const messages_en = { value: "Value", successful: "New asset was successfully added", successful_edit: "Asset was successfully updated", - removed: "Asset was successfully removed", + removed: "Asset was successfully deleted", removed_error: "Asset is in use and could not be deleted", total_count: "Assets count: ", vulnerabilities: "Vulnerabilities", @@ -1017,7 +1017,7 @@ const messages_en = { enabled: "Enabled", successful: "New remote access was successfully added", successful_edit: "Remote access was successfully updated", - removed: "Remote access was successfully removed", + removed: "Remote access was successfully deleted", removed_error: "Remote access is in use and could not be deleted", osint_sources: "OSINT Sources to share", report_item_types: "Report Item Types to share", @@ -1046,7 +1046,7 @@ const messages_en = { osint_source_group: "Synchronize to OSINT source group", successful: "New remote node was successfully added", successful_edit: "Remote node was successfully updated", - removed: "Remote node was successfully removed", + removed: "Remote node was successfully deleted", removed_error: "Remote node is in use and could not be deleted", total_count: "Remote nodes count: " }, diff --git a/src/gui/src/i18n/messages.js b/src/gui/src/i18n/messages.js index 525a7e200..3048e932c 100644 --- a/src/gui/src/i18n/messages.js +++ b/src/gui/src/i18n/messages.js @@ -1,9 +1,11 @@ +import messages_cs from "@/i18n/cs/messages"; import messages_en from "@/i18n/en/messages"; import messages_sk from "@/i18n/sk/messages"; const messages = { + cs: messages_cs, en: messages_en, sk: messages_sk }; -export default messages \ No newline at end of file +export default messages diff --git a/src/gui/src/main.js b/src/gui/src/main.js index d68874d05..f6f3b196c 100644 --- a/src/gui/src/main.js +++ b/src/gui/src/main.js @@ -4,8 +4,8 @@ import Vue from 'vue'; import Vuetify from 'vuetify/lib'; //import colors from 'vuetify/lib/util/colors' import App from './App.vue' -import {router} from './router' -import {store} from '@/store/store' +import { router } from './router' +import { store } from '@/store/store' import ApiService from "@/services/api_service"; import VueI18n from 'vue-i18n' import messages from "@/i18n/messages"; @@ -23,7 +23,7 @@ import layout_config from "./assets/layout_config"; const CSL = { install(Vue) { Vue.prototype.UI = layout_config - this.UI = () => {} + this.UI = () => { } } } Vue.use(CSL); @@ -43,11 +43,11 @@ Vue.use(Vuetify, { }); Vue.use(Vuetify, { - iconfont: 'md' + iconfont: 'md' }); Vue.use(Vuetify, { - iconfont: 'mdi' + iconfont: 'mdi' }); const vuetify = new Vuetify({ @@ -59,8 +59,10 @@ const vuetify = new Vuetify({ Vue.use(VueI18n); +let bash_locale = "$VUE_APP_TARANIS_NG_LOCALE"; + const i18n = new VueI18n({ - locale: ((typeof(process.env.VUE_APP_TARANIS_NG_LOCALE) == "undefined") ? "$VUE_APP_TARANIS_NG_LOCALE" : process.env.VUE_APP_TARANIS_NG_LOCALE), + locale: bash_locale, fallbackLocale: 'en', messages }); @@ -70,7 +72,7 @@ Vue.use(VeeValidate, { i18n, }); -ApiService.init(((typeof(process.env.VUE_APP_TARANIS_NG_CORE_API) == "undefined") ? "$VUE_APP_TARANIS_NG_CORE_API" : process.env.VUE_APP_TARANIS_NG_CORE_API)); +ApiService.init(((typeof (process.env.VUE_APP_TARANIS_NG_CORE_API) == "undefined") ? "$VUE_APP_TARANIS_NG_CORE_API" : process.env.VUE_APP_TARANIS_NG_CORE_API)); if (localStorage.ACCESS_TOKEN) { store.dispatch('setToken', (localStorage.ACCESS_TOKEN)).then() @@ -89,4 +91,4 @@ export const vm = new Vue({ this.$store.commit('setVerticalView', val); } -}).$mount('#app'); \ No newline at end of file +}).$mount('#app'); diff --git a/src/gui/src/store/settings.js b/src/gui/src/store/settings.js index 919d5e91d..f340bcebb 100644 --- a/src/gui/src/store/settings.js +++ b/src/gui/src/store/settings.js @@ -109,12 +109,17 @@ const getters = { getProfileLanguage(state) { let lng = state.language; if (!lng) { - if (typeof (process.env.VUE_APP_TARANIS_NG_LOCALE) !== "undefined") { - lng = process.env.VUE_APP_TARANIS_NG_LOCALE; - } - if (!lng) { - lng = "en"; - } + lng = navigator.language.split('-')[0];; + } + if (!lng && typeof (process.env.VUE_APP_TARANIS_NG_LOCALE) !== "undefined") { + lng = process.env.VUE_APP_TARANIS_NG_LOCALE; + } + if (!lng) { + let bash_locale = "$VUE_APP_TARANIS_NG_LOCALE"; + lng = bash_locale; + } + if (!lng) { + lng = "en"; } return lng; } @@ -125,4 +130,4 @@ export const settings = { actions, mutations, getters -} \ No newline at end of file +}