Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add locale picker to header #824

Merged
merged 7 commits into from
Apr 23, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
"eslint-fix": "eslint --ext .js,.vue,.json,.md,.yaml --fix . --report-unused-disable-directives",
"prettier": "prettier --check --cache '**/*.{js,vue,json,md,yaml}'",
"prettier-fix": "prettier --write --cache '**/*.{js,vue,json,md,yaml}'",
"vue-i18n-extract": "vue-i18n-extract report --vueFiles 'src/**/*.?(vue|js)' --languageFiles 'src/i18n/locales/*.json' --exclude 'validation.max_value' --exclude 'validation.min_value' --exclude 'validation.confirmed' --exclude 'validation.required' --ci --ci"
"vue-i18n-extract": "vue-i18n-extract report --ci"
},
"dependencies": {
"@coreui/coreui": "2.1.16",
Expand Down
3 changes: 3 additions & 0 deletions src/containers/DefaultHeader.vue
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,22 @@
<SidebarToggler class="d-md-down-none" display="lg" :defaultOpen="true" />
<b-navbar-nav class="ml-auto">
<DefaultHeaderProfileDropdown />
<LocalePicker />
</b-navbar-nav>
</AppHeader>
</template>
<script>
import { Header as AppHeader, SidebarToggler, AsideToggler } from '@coreui/vue';
import DefaultHeaderProfileDropdown from './DefaultHeaderProfileDropdown';
import LocalePicker from '@/views/components/LocalePicker.vue';

export default {
name: 'DefaultHeader',
components: {
AsideToggler,

Check failure on line 27 in src/containers/DefaultHeader.vue

View workflow job for this annotation

GitHub Actions / lint

The "AsideToggler" component has been registered but not used
AppHeader,
DefaultHeaderProfileDropdown,
LocalePicker,
SidebarToggler,
},
};
Expand Down
43 changes: 41 additions & 2 deletions src/i18n/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,49 @@ function loadLocaleMessages() {
return messages;
}

const localeMessages = loadLocaleMessages();

function matchLocale(requestedLocale) {
console.log(localeMessages);
let exactMatch = Object.keys(localeMessages).find(
(locale) => requestedLocale === locale,
);
if (exactMatch) {
console.debug(`Matched exact locale ${requestedLocale}`);
return exactMatch;
}

let localeParts = requestedLocale.split('-');
if (localeParts.length !== 2) {
console.debug(
`Found no matching locale for ${requestedLocale}, falling back to en`,
);
return 'en';
}

let baseLocale = localeParts[0];
let baseLocaleMatch = Object.keys(localeMessages).find(
(locale) => baseLocale === locale,
);
if (baseLocaleMatch) {
console.debug(`Matched base locale ${baseLocale} for ${requestedLocale}`);
return baseLocaleMatch;
}

console.debug(
`Found no matching locale for ${requestedLocale}, falling back to en`,
);
return 'en';
}

const i18n = new VueI18n({
locale: navigator.language || navigator.userLanguage,
locale: matchLocale(
(localStorage && localStorage.getItem('Locale')) ||
navigator.language ||
navigator.userLanguage,
),
fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'en',
messages: loadLocaleMessages(),
messages: localeMessages,
});

export default i18n;
37 changes: 26 additions & 11 deletions src/i18n/locales/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"analyzer_snyk_org_id": "Organisations-ID",
"analyzer_snyk_why_multiple_cvss": "Warum gibt es mehrere CVSS-Scores für dieselbe Schwachstelle?",
"analyzer_trivy_enable": "Trivy-Analysator aktivieren",
"analyzer_trivy_ignore_unfixed": "Ignorieren Sie nicht behobene Schwachstellen",
"analyzer_vulndb_desc": "VulnDB ist ein kommerzieller Dienst von Risk Based Security, der Schwachstellen in Komponenten von Drittanbietern identifiziert. Dependency-Track lässt sich nativ in den VulnDB-Dienst integrieren, um hochpräzise Ergebnisse zu liefern. Die Verwendung dieses Analysators erfordert eine gültige CPE für die zu analysierenden Komponenten.",
"analyzer_vulndb_enable": "VulnDB-Analyzer aktivieren",
"analyzers": "Analysatoren",
Expand All @@ -44,6 +45,8 @@
"bearer_token_auth_enable": "Authentifizieren mit einem persönlichen Zugriffstoken",
"bom_formats": "Stücklistenformate",
"bom_formats_desc": "Aktiviert die Unterstützung für die Verarbeitung von Stücklisten verschiedener Formate. Nur aktivierte Stücklistenformate werden verarbeitet.",
"bom_validation": "Stücklistenvalidierung",
"bom_validation_info": "In der Vergangenheit hat Dependency-Track hochgeladene Stücklisten und VEXs nicht anhand des CycloneDX-Schemas validiert. \nDies ermöglichte zwar die Verarbeitung von Stücklisten, die nicht strikt dem Schema entsprachen, es konnte jedoch zu Verwirrung führen, wenn hochgeladene Dateien akzeptiert wurden, dann aber während der asynchronen Verarbeitung nicht erfasst werden konnten. \nAb dieser Version werden hochgeladene Dateien abgelehnt, wenn sie die Schemavalidierung nicht bestehen. \nBeachten Sie, dass dies möglicherweise Probleme in Stücklistengeneratoren aufdeckt, die derzeit ungültige CycloneDX-Dokumente erzeugen",
"cargo": "Ladung",
"change_password": "Kennwort ändern",
"change_password_next_login": "Der Benutzer muss bei der nächsten Anmeldung sein Passwort ändern",
Expand Down Expand Up @@ -93,6 +96,10 @@
"enable_index_consistency_check": "Aktivieren Sie regelmäßige Konsistenzprüfungen",
"enable_svg_badge": "SVG-Badge-Unterstützung aktivieren (nicht authentifiziert)",
"enabled": "Ermöglicht",
"experimental": "Experimental",
"experimental_bom_upload_v2": "Stücklistenverarbeitung V2",
"experimental_bom_upload_v2_info": "Die Logik, wie hochgeladene Stücklisten verarbeitet und in Dependency-Track aufgenommen werden, wurde überarbeitet, um zuverlässiger und effizienter zu sein. \nDarüber hinaus handelt es sich bei der Stücklistenverarbeitung nun um einen atomaren Vorgang, sodass Fehler, die auf halbem Weg auftreten, nicht dazu führen, dass ein Teilzustand zurückbleibt. \nDie Deduplizierung von Komponenten und Diensten ist vorhersehbarer und während der Verarbeitung ausgegebene Protokollnachrichten enthalten zusätzlichen Kontext, wodurch sie leichter korreliert werden können. \nDa die neue Implementierung große Auswirkungen auf das Verhalten von Dependency-Track beim Hochladen von Stücklisten haben kann, ist sie für diese Version standardmäßig deaktiviert.",
"experimental_info": "Die folgenden Optionen sind experimentelle Optionen und sollten mit Vorsicht verwendet werden.",
"fortify_ssc": "SSC verstärken",
"gem": "Juwel",
"general": "Allgemein",
Expand Down Expand Up @@ -263,14 +270,7 @@
"vulnsource_osv_advisories_desc": "Google OSV ist eine verteilte Infrastruktur für Schwachstellen und Triage für Open-Source-Projekte, die sowohl Open-Source-Betreuern als auch Open-Source-Nutzern helfen soll. Es dient als Aggregator von Schwachstellendatenbanken, die das OpenSSF-Schwachstellenformat übernommen haben.",
"vulnsource_osv_advisories_enable": "Wählen Sie ein Ökosystem aus, um Google OSV Advisory Mirroring zu aktivieren",
"vulnsource_osv_alias_sync_warning": "OSV kann nicht identische Schwachstellen als Aliase melden. Gehen Sie mit Vorsicht vor.",
"vulnsource_osv_base_url": "OSV-Basis-URL",
"analyzer_trivy_ignore_unfixed": "Ignorieren Sie nicht behobene Schwachstellen",
"experimental_info": "Die folgenden Optionen sind experimentelle Optionen und sollten mit Vorsicht verwendet werden.",
"experimental_bom_upload_v2": "Stücklistenverarbeitung V2",
"experimental_bom_upload_v2_info": "Die Logik, wie hochgeladene Stücklisten verarbeitet und in Dependency-Track aufgenommen werden, wurde überarbeitet, um zuverlässiger und effizienter zu sein. \nDarüber hinaus handelt es sich bei der Stücklistenverarbeitung nun um einen atomaren Vorgang, sodass Fehler, die auf halbem Weg auftreten, nicht dazu führen, dass ein Teilzustand zurückbleibt. \nDie Deduplizierung von Komponenten und Diensten ist vorhersehbarer und während der Verarbeitung ausgegebene Protokollnachrichten enthalten zusätzlichen Kontext, wodurch sie leichter korreliert werden können. \nDa die neue Implementierung große Auswirkungen auf das Verhalten von Dependency-Track beim Hochladen von Stücklisten haben kann, ist sie für diese Version standardmäßig deaktiviert.",
"bom_validation": "Stücklistenvalidierung",
"bom_validation_info": "In der Vergangenheit hat Dependency-Track hochgeladene Stücklisten und VEXs nicht anhand des CycloneDX-Schemas validiert. \nDies ermöglichte zwar die Verarbeitung von Stücklisten, die nicht strikt dem Schema entsprachen, es konnte jedoch zu Verwirrung führen, wenn hochgeladene Dateien akzeptiert wurden, dann aber während der asynchronen Verarbeitung nicht erfasst werden konnten. \nAb dieser Version werden hochgeladene Dateien abgelehnt, wenn sie die Schemavalidierung nicht bestehen. \nBeachten Sie, dass dies möglicherweise Probleme in Stücklistengeneratoren aufdeckt, die derzeit ungültige CycloneDX-Dokumente erzeugen",
"experimental": "Experimental"
"vulnsource_osv_base_url": "OSV-Basis-URL"
},
"condition": {
"forbidden": "Verboten (403)",
Expand All @@ -293,6 +293,20 @@
"sha_384": "SHA-384",
"sha_512": "SHA-512"
},
"language": {
"de": "Deutsch",
"en": "Englisch",
"es": "Spanisch",
"fr": "Französisch",
"hi": "Hindi",
"it": "Italienisch",
"ja": "japanisch",
"pl": "Polnisch",
"pt": "Portugiesisch (Portugal)",
"pt-BR": "Portugiesisch (Brasilien)",
"ru": "Russisch",
"zh": "Chinesisch"
},
"message": {
"about": "Um",
"active": "Aktiv",
Expand Down Expand Up @@ -368,6 +382,7 @@
"component_namespace_group_vendor": "Namespace/Gruppe/Anbieter",
"component_operating_system": "Betriebssystem",
"component_package_url_desc": "Für Bibliotheken und Frameworks ist eine gültige Paket-URL erforderlich. PURL-Syntax: pkg:type/namespace/name@version?qualifiers#subpath",
"component_properties": "Komponenteneigenschaften",
"component_search": "Komponentensuche",
"component_spdx_license_desc": "Gibt die SPDX-Lizenz-ID der Komponente an",
"component_supplier_name_desc": "Die Organisation, die die Komponente geliefert hat",
Expand All @@ -387,6 +402,7 @@
"cpe": "CPE",
"cpe_full": "Gemeinsame Plattformaufzählung (CPE)",
"create": "Erstellen",
"create_component_property": "Komponenteneigenschaft erstellen",
"create_license_group": "Lizenzgruppe erstellen",
"create_policy": "Richtlinie erstellen",
"create_project": "Projekt erstellen",
Expand Down Expand Up @@ -500,6 +516,7 @@
"inventory_with_vulnerabilities": "Inventarisierung mit Schwachstellen",
"justification": "Rechtfertigung",
"justification_tooltip": "Die Begründung, warum der Auswirkungsanalysestatus „Nicht betroffen“ lautete",
"language": "Sprache",
"last_bom_import": "Letzter Stücklistenimport",
"last_measurement": "Letzte Messung",
"last_seen": "Zuletzt gesehen bei",
Expand Down Expand Up @@ -820,9 +837,7 @@
"weakness": "Schwäche",
"will_not_fix": "Wird nicht repariert",
"workaround_available": "Problemumgehung verfügbar",
"x_trust_boundary": "Vertrauensgrenzen überschreiten",
"component_properties": "Komponenteneigenschaften",
"create_component_property": "Komponenteneigenschaft erstellen"
"x_trust_boundary": "Vertrauensgrenzen überschreiten"
},
"operator": {
"contains_all": "enthält alle",
Expand Down
29 changes: 22 additions & 7 deletions src/i18n/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
"bearer_token_auth_enable": "Authenticate with a personal access token",
"bom_formats": "BOM Formats",
"bom_formats_desc": "Enables support for processing BOMs of various formats. Only BOM formats which are enabled will be processed.",
"bom_validation": "BOM Validation",
"bom_validation_info": "Historically, Dependency-Track did not validate uploaded BOMs and VEXs against the CycloneDX schema. While this allowed BOMs to be processed that did not strictly adhere to the schema, it could lead to confusion when uploaded files were accepted, but then failed to be ingested during asynchronous processing. Starting with this release, uploaded files will be rejected if they fail schema validation. Note that this may reveal issues in BOM generators that currently produce invalid CycloneDX documents",
"cargo": "Cargo",
"change_password": "Change Password",
"change_password_next_login": "User must change password at next login",
Expand Down Expand Up @@ -94,6 +96,10 @@
"enable_index_consistency_check": "Enable periodic consistency check",
"enable_svg_badge": "Enable SVG badge support (unauthenticated)",
"enabled": "Enabled",
"experimental": "Experimental",
"experimental_bom_upload_v2": "BOM Processing V2",
"experimental_bom_upload_v2_info": "The logic how uploaded BOMs are processed and ingested into Dependency-Track has been overhauled to be more reliable and efficient. Further, BOM processing is now an atomic operation, such that errors occurring midway do not cause a partial state to be left behind. De-duplication of components and services is more predictable, and log messages emitted during processing contain additional context, making them easier to correlate. Because the new implementation can have a big impact on how Dependency-Track behaves regarding BOM uploads, it is disabled by default for this release.",
"experimental_info": "The following options are experimental options and should be used with precaution.",
"fortify_ssc": "Fortify SSC",
"gem": "Gem",
"general": "General",
Expand Down Expand Up @@ -264,13 +270,7 @@
"vulnsource_osv_advisories_desc": "Google OSV is a distributed vulnerability and triage infrastructure for open source projects aimed at helping both open source maintainers and consumers of open source. It serves as an aggregator of vulnerability databases that have adopted the OpenSSF Vulnerability format.",
"vulnsource_osv_advisories_enable": "Select ecosystem to enable Google OSV Advisory mirroring",
"vulnsource_osv_alias_sync_warning": "OSV may report non-identical vulnerabilities as aliases. Proceed with caution.",
"vulnsource_osv_base_url": "OSV Base URL",
"experimental_info": "The following options are experimental options and should be used with precaution.",
"experimental_bom_upload_v2": "BOM Processing V2",
"bom_validation": "BOM Validation",
"experimental_bom_upload_v2_info": "The logic how uploaded BOMs are processed and ingested into Dependency-Track has been overhauled to be more reliable and efficient. Further, BOM processing is now an atomic operation, such that errors occurring midway do not cause a partial state to be left behind. De-duplication of components and services is more predictable, and log messages emitted during processing contain additional context, making them easier to correlate. Because the new implementation can have a big impact on how Dependency-Track behaves regarding BOM uploads, it is disabled by default for this release.",
"bom_validation_info": "Historically, Dependency-Track did not validate uploaded BOMs and VEXs against the CycloneDX schema. While this allowed BOMs to be processed that did not strictly adhere to the schema, it could lead to confusion when uploaded files were accepted, but then failed to be ingested during asynchronous processing. Starting with this release, uploaded files will be rejected if they fail schema validation. Note that this may reveal issues in BOM generators that currently produce invalid CycloneDX documents",
"experimental": "Experimental"
"vulnsource_osv_base_url": "OSV Base URL"
},
"condition": {
"forbidden": "Forbidden (403)",
Expand All @@ -293,6 +293,20 @@
"sha_384": "SHA-384",
"sha_512": "SHA-512"
},
"language": {
"de": "German",
"en": "English",
"es": "Spanish",
"fr": "French",
"hi": "Hindi",
"it": "Italian",
"ja": "Japanese",
"pl": "Polish",
"pt": "Portuguese (Portugal)",
"pt-BR": "Portuguese (Brazil)",
"ru": "Russian",
"zh": "Chinese"
},
"message": {
"about": "About",
"active": "Active",
Expand Down Expand Up @@ -502,6 +516,7 @@
"inventory_with_vulnerabilities": "Inventory with Vulnerabilities",
"justification": "Justification",
"justification_tooltip": "The rationale of why the impact analysis state was asserted to be \"Not Affected\"",
"language": "Language",
"last_bom_import": "Last BOM Import",
"last_measurement": "Last Measurement",
"last_seen": "Last Seen At",
Expand Down
Loading
Loading