diff --git a/src/app/shared/components/common/modal-dialog-link/modal-dialog-link.component.spec.ts b/src/app/shared/components/common/modal-dialog-link/modal-dialog-link.component.spec.ts
index b6242a4a94..5fa3b73528 100644
--- a/src/app/shared/components/common/modal-dialog-link/modal-dialog-link.component.spec.ts
+++ b/src/app/shared/components/common/modal-dialog-link/modal-dialog-link.component.spec.ts
@@ -36,9 +36,7 @@ describe('Modal Dialog Link Component', () => {
component.options = { titleText: 'Dialog Title' };
expect(() => fixture.detectChanges()).not.toThrow();
- expect(element).toMatchInlineSnapshot(`
-
testLink
- `);
+ expect(element.textContent).toContain('testLink');
+ expect(element.querySelector('ish-modal-dialog')).toBeTruthy();
});
});
diff --git a/src/app/shared/components/common/modal-dialog/modal-dialog.component.html b/src/app/shared/components/common/modal-dialog/modal-dialog.component.html
index cb9679cb71..a644dfab3b 100644
--- a/src/app/shared/components/common/modal-dialog/modal-dialog.component.html
+++ b/src/app/shared/components/common/modal-dialog/modal-dialog.component.html
@@ -1,13 +1,7 @@
diff --git a/src/app/shared/components/common/paging/paging.component.html b/src/app/shared/components/common/paging/paging.component.html
index 5eaee5130a..c3baa31999 100644
--- a/src/app/shared/components/common/paging/paging.component.html
+++ b/src/app/shared/components/common/paging/paging.component.html
@@ -1,11 +1,11 @@
-
diff --git a/src/app/shared/components/product/product-quantity/product-quantity.component.spec.ts b/src/app/shared/components/product/product-quantity/product-quantity.component.spec.ts
index c00e83c8ed..2ee392cc05 100644
--- a/src/app/shared/components/product/product-quantity/product-quantity.component.spec.ts
+++ b/src/app/shared/components/product/product-quantity/product-quantity.component.spec.ts
@@ -1,4 +1,5 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { TranslateModule } from '@ngx-translate/core';
import { of } from 'rxjs';
import { instance, mock, when } from 'ts-mockito';
@@ -22,6 +23,7 @@ describe('Product Quantity Component', () => {
when(context.select('stepQuantity')).thenReturn(of(2));
await TestBed.configureTestingModule({
+ imports: [TranslateModule.forRoot()],
declarations: [ProductQuantityComponent],
providers: [{ provide: ProductContextFacade, useFactory: () => instance(context) }],
}).compileComponents();
@@ -55,17 +57,18 @@ describe('Product Quantity Component', () => {
"quantity",
]
`);
+
expect(element.querySelector('input')).toMatchInlineSnapshot(`
`);
});
@@ -79,18 +82,7 @@ describe('Product Quantity Component', () => {
"quantity",
]
`);
- expect(element.querySelector('input')).toMatchInlineSnapshot(`
-
- `);
+ expect(element.querySelector('input[data-testing-id="quantity"]').getAttribute('type')).toContain('number');
});
it('should display select when type is select', () => {
diff --git a/src/app/shared/components/promotion/promotion-details/promotion-details.component.html b/src/app/shared/components/promotion/promotion-details/promotion-details.component.html
index 2d28ca9a4f..ae0a9532fc 100644
--- a/src/app/shared/components/promotion/promotion-details/promotion-details.component.html
+++ b/src/app/shared/components/promotion/promotion-details/promotion-details.component.html
@@ -19,10 +19,12 @@
[ngClass]="'details-link promotion-details-link'"
>
-
+
+
-
+
+
diff --git a/src/app/shared/components/registration/confirm-leave-modal/confirm-leave-modal.component.html b/src/app/shared/components/registration/confirm-leave-modal/confirm-leave-modal.component.html
index a4ce9e6a5b..0c1b73d026 100644
--- a/src/app/shared/components/registration/confirm-leave-modal/confirm-leave-modal.component.html
+++ b/src/app/shared/components/registration/confirm-leave-modal/confirm-leave-modal.component.html
@@ -1,6 +1,6 @@
diff --git a/src/app/shell/header/header-default/__snapshots__/header-default.component.spec.ts.snap b/src/app/shell/header/header-default/__snapshots__/header-default.component.spec.ts.snap
index 583541dd01..3e459548b1 100644
--- a/src/app/shell/header/header-default/__snapshots__/header-default.component.spec.ts.snap
+++ b/src/app/shell/header/header-default/__snapshots__/header-default.component.spec.ts.snap
@@ -55,7 +55,11 @@ exports[`Header Default Component should render normal header adequately for des
-
+
@@ -119,7 +123,11 @@ exports[`Header Default Component should render normal header adequately for mob
-
+
@@ -184,7 +192,11 @@ exports[`Header Default Component should render normal header adequately for tab
-
+
@@ -240,7 +252,11 @@ exports[`Header Default Component should render sticky header adequately for des
-
+
@@ -296,7 +312,11 @@ exports[`Header Default Component should render sticky header adequately for mob
-
+
@@ -352,7 +372,11 @@ exports[`Header Default Component should render sticky header adequately for tab
-
+
diff --git a/src/app/shell/header/header-default/header-default.component.html b/src/app/shell/header/header-default/header-default.component.html
index 8f2a8a04ad..834578e339 100644
--- a/src/app/shell/header/header-default/header-default.component.html
+++ b/src/app/shell/header/header-default/header-default.component.html
@@ -95,7 +95,11 @@
-
+
diff --git a/src/app/shell/header/header-navigation/header-navigation.component.html b/src/app/shell/header/header-navigation/header-navigation.component.html
index 5bec795a5d..4447289f1d 100644
--- a/src/app/shell/header/header-navigation/header-navigation.component.html
+++ b/src/app/shell/header/header-navigation/header-navigation.component.html
@@ -22,7 +22,11 @@
[routerLink]="[]"
class="dropdown-toggle"
(click)="toggleOpen(category.uniqueId)"
- [attr.aria-label]="isOpened(category.uniqueId) ? 'collapse ' + category.name : 'expand ' + category.name"
+ [attr.aria-label]="
+ isOpened(category.uniqueId)
+ ? ('header.navigation.collapse_category.aria_label' | translate : { '0': category.name })
+ : ('header.navigation.expand_category.aria_label' | translate : { '0': category.name })
+ "
>
diff --git a/src/app/shell/header/login-status/login-status.component.html b/src/app/shell/header/login-status/login-status.component.html
index 365d45e7d1..9ea733b75e 100644
--- a/src/app/shell/header/login-status/login-status.component.html
+++ b/src/app/shell/header/login-status/login-status.component.html
@@ -1,6 +1,6 @@
-
+
{{ 'account.logout.link' | translate }}
@@ -11,7 +11,12 @@
-
+
{{
user.firstName + ' ' + user.lastName
@@ -23,7 +28,12 @@
>
|
-
+
{{ 'account.logout.link' | translate }}
@@ -34,7 +44,7 @@
[queryParams]="{ returnUrl: '/account' }"
class="my-account-link my-account-login"
rel="nofollow"
- aria-label="login"
+ [attr.aria-label]="'account.login.link' | translate"
>
{{ 'account.login.link' | translate }}
@@ -45,7 +55,7 @@
[queryParams]="{ returnUrl: '/account' }"
class="my-account-link my-account-register"
rel="nofollow"
- aria-label="register"
+ [attr.aria-label]="'account.register.link' | translate"
>{{ 'account.register.link' | translate }}
diff --git a/src/app/shell/header/sub-category-navigation/sub-category-navigation.component.html b/src/app/shell/header/sub-category-navigation/sub-category-navigation.component.html
index b0a5b369d6..c0952ccff1 100644
--- a/src/app/shell/header/sub-category-navigation/sub-category-navigation.component.html
+++ b/src/app/shell/header/sub-category-navigation/sub-category-navigation.component.html
@@ -22,7 +22,9 @@
[ngClass]="{ 'd-none': view === 'full' }"
(click)="toggleOpen(subcategory.uniqueId)"
[attr.aria-label]="
- isOpened(subcategory.uniqueId) ? 'collapse ' + subcategory.name : 'expand ' + subcategory.name
+ isOpened(subcategory.uniqueId)
+ ? ('header.navigation.collapse_category.aria_label' | translate : { '0': subcategory.name })
+ : ('header.navigation.expand_category.aria_label' | translate : { '0': subcategory.name })
"
>
diff --git a/src/app/shell/header/sub-category-navigation/sub-category-navigation.component.spec.ts b/src/app/shell/header/sub-category-navigation/sub-category-navigation.component.spec.ts
index 012c89d017..523b4ceb6f 100644
--- a/src/app/shell/header/sub-category-navigation/sub-category-navigation.component.spec.ts
+++ b/src/app/shell/header/sub-category-navigation/sub-category-navigation.component.spec.ts
@@ -1,6 +1,7 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { FaIconComponent } from '@fortawesome/angular-fontawesome';
+import { TranslateModule } from '@ngx-translate/core';
import { MockComponent } from 'ng-mocks';
import { of } from 'rxjs';
import { instance, mock, when } from 'ts-mockito';
@@ -35,7 +36,7 @@ describe('Sub Category Navigation Component', () => {
);
await TestBed.configureTestingModule({
- imports: [RouterTestingModule],
+ imports: [RouterTestingModule, TranslateModule.forRoot()],
declarations: [MockComponent(FaIconComponent), SubCategoryNavigationComponent],
providers: [
{ provide: MAIN_NAVIGATION_MAX_SUB_CATEGORIES_DEPTH, useValue: 2 },
@@ -57,28 +58,9 @@ describe('Sub Category Navigation Component', () => {
expect(component).toBeTruthy();
expect(element).toBeTruthy();
expect(() => fixture.detectChanges()).not.toThrow();
- expect(element).toMatchInlineSnapshot(`
-
- `);
+ expect(element.querySelector('a[href="/CAT_A1-catA.1"]').textContent).toContain('CAT_A1');
+ expect(element.querySelector('ish-sub-category-navigation')).toBeTruthy();
+ expect(element.querySelector('a[href="/CAT_A1a-catA.1.a"]').textContent).toContain('CAT_A1a');
+ expect(element.querySelector('a[href="/CAT_A2-catA.2"]').textContent).toContain('CAT_A2');
});
});
diff --git a/src/assets/i18n/de_DE.json b/src/assets/i18n/de_DE.json
index 63482448ec..6509d73c73 100644
--- a/src/assets/i18n/de_DE.json
+++ b/src/assets/i18n/de_DE.json
@@ -60,10 +60,12 @@
"account.approvallist.table.buyer": "Einkäufer",
"account.approvallist.table.date_of_order": "Erstellungsdatum",
"account.approvallist.table.id_of_order": "Bestellanfrage-Nr.",
+ "account.approvallist.table.id_of_order.aria_label": "Zu den Bestellanfragedetails navigieren.",
"account.approvallist.table.line_item_total": "Gesamt",
"account.approvallist.table.line_items": "Artikel",
"account.approvallist.table.no_of_order": "Bestellnummer",
"account.approvallist.table.reject_date": "Ablehnungsdatum",
+ "account.budget.already_spent.costcenter.aria_label": "Verbrauchtes Budget der Kostenstelle {{0}}",
"account.budget.already_spent.label": "Bereits verbraucht",
"account.budget.approved_orders.label": "Bestellungen",
"account.budget.label": "{{0, select, =weekly{Budget (wöchentlich)} =monthly{Budget (monatlich)} =quarterly{Budget (quartalsweise)} =half-yearly{Budget (halbjährlich)} =yearly{Budget (jährlich)} =fixed{Budget (vordefiniert)}}}",
@@ -161,6 +163,7 @@
"account.forgotdata.email.label": "E-Mail-Adresse",
"account.forgotdata.password_retrieval.heading": "Kennwort vergessen?",
"account.forgotdata.password_retrieval_info.text": "Geben Sie aus Sicherheitsgründen Ihre E-Mail-Adresse an und senden Sie das Formular ab. Nach korrekter Eingabe der Informationen erhalten Sie von uns eine E-Mail mit einem Link. Öffnen Sie den Link und folgen Sie den Anweisungen, um ein neues Kennwort anzulegen. Sollten Sie Probleme haben oder Hilfe benötigen, kontaktieren Sie unseren Kundenservice.",
+ "account.go_to_account.aria_label": "Gehen Sie zu Ihrem Konto",
"account.help.heading": "Hilfe-Themen",
"account.login.addresses.message": "Melden Sie sich mit Ihrem Benutzernamen an, um Adressen zu aktualisieren.",
"account.login.customer_approval.error.invalid": "Ihr Benutzerkonto muss erst genehmigt werden, bevor Sie sich anmelden können.",
@@ -215,6 +218,7 @@
"account.order_history.heading": "Bestellhistorie",
"account.order_history.link": "Bestellhistorie",
"account.order_template.add_to_template.button.add_to_template.label": "In Bestellvorlage aufnehmen",
+ "account.order_template.add_to_template.checkbox.aria_label": "Artikel auswählen, um ihn in den Warenkorb zu legen.",
"account.order_template.added.confirmation": "{{0}} wurde hinzugefügt zu {{1}}.",
"account.order_template.delete.button.text": "Löschen",
"account.order_template.delete.do_you_really.text": "Wollen Sie diese Bestellvorlage wirklich löschen?",
@@ -614,9 +618,10 @@
"approval.rejectform.reject_order.heading": "Bestellanfrage ablehnen",
"back_to_top.title": "Zum Anfang",
"basket.add_quote.error": "Das Preisangebot konnte nicht in den Warenkorb gelegt werden.",
- "basket.add_quotelineitem.error": "Das Preisangebot kann nicht in den Warenkorb gelegt werden. Es enthält ungültige Produkte.",
+ "basket.add_quotelineitem.error": "Das Preisangebot kann dem Warenkorb nicht hinzugefügt werden. Es enthält ungültige Produkte.",
"basket.not_found.error": "Der Warenkorb konnte nicht gefunden werden.",
"basket.validation.general.error": "Ihr Warenkorb ist nicht mehr gültig. Bitte korrigieren Sie die unten angegebenen Fehler.",
+ "breadcrumbs.aria_label": "Breadcrumbs",
"captcha.incorrect": "Die Sicherheitsprüfung ist fehlgeschlagen. Korrigieren Sie den unten angegebenen Fehler.",
"checkout.account.confirm.button.label": "Bestätigen",
"checkout.account.email.registered.heading": "Benutzerkonto",
@@ -634,9 +639,8 @@
"checkout.address.delete.confirmation.heading": "Adresse löschen",
"checkout.address.delete.confirmation.text": "Wollen Sie diese Adresse wirklich löschen?",
"checkout.address.shipping.label": "Lieferadresse",
- "checkout.address.update.button.invoice.label": "Rechnungsadresse bearbeiten",
- "checkout.address.update.button.shipping.label": "Lieferadresse bearbeiten",
- "checkout.address.update.label": "{{0}} bearbeiten",
+ "checkout.address.update.invoice.label": "Rechnungsadresse bearbeiten",
+ "checkout.address.update.shipping.label": "Lieferadresse bearbeiten",
"checkout.addresses.billing_address.heading": "Rechnungsadresse",
"checkout.addresses.checkout_as_guest.heading": "Als Gast kaufen",
"checkout.addresses.email.label": "E-Mail-Adresse",
@@ -800,6 +804,7 @@
"checkout.tax.TaxesLabel.TotalOrderVat": "MwSt. in Gesamtsumme",
"checkout.tax.text": "Steuer",
"checkout.termsandconditions.details.title": "Allgemeine Geschäftsbedingungen",
+ "checkout.update.label": "{{0}} bearbeiten",
"checkout.variation.edit.button.label": "Bearbeiten",
"checkout.widget.billing-address.heading": "Rechnungsadresse",
"checkout.widget.buyer.TaxationID": "Steuernummer:",
@@ -855,6 +860,8 @@
"form.password.error.required": "Bitte geben Sie ein Kennwort ein.",
"form.phone.error.invalid": "Bitte geben Sie eine gültige Telefonnummer an.",
"form.phone.error.required": "Bitte geben Sie Ihre Telefonnummer an.",
+ "header.navigation.collapse_category.aria_label": "Kategorie {{0}} zuklappen",
+ "header.navigation.expand_category.aria_label": "Kategorie {{0}} aufklappen",
"header.welcome.text": "Willkommen bei inSPIRED",
"helpdesk.contact_us.heading": "Kontakt",
"helpdesk.contact_us.link": "Kontakt",
@@ -887,6 +894,12 @@
"locale.fr_FR.long": "Français",
"locale.fr_FR.short": "fr",
"modal.heading.remove.order.template": "Produkt aus Bestellvorlage entfernen",
+ "navigation.main.aria_label": "Hauptnavigation",
+ "navigation.paging.aria_label": "Seitenzahlen",
+ "navigation.paging.current_page.aria_label": "Momentane Seite: {{0}}",
+ "navigation.paging.go_to_page.aria_label": "Zu Seite {{0}} gehen",
+ "navigation.paging.next_page.aria_label": "Zur nächsten Seite gehen",
+ "navigation.paging.previous_page.aria_label": "Zur vorherigen Seite gehen",
"order.tracking.error": "Leider konnte keine Bestellung mit Ihren Daten gefunden werden.",
"order_template.create.heading": "Bestellvorlage anlegen",
"payment.error.PaymentInstrumentAlreadyExists": "Das Zahlungsmittel konnte nicht angelegt werden. Zahlungsdaten mit den angegebenen Parametern sind bereits vorhanden.",
@@ -925,6 +938,8 @@
"product.itemNumber.label": "Artikelnummer:",
"product.items.label": "{{0, plural, one{# Element} other{# Elemente}}}",
"product.items.sorting.default.label": "Standardsortierung",
+ "product.items.view.grid_view.aria_label": "Rasteransicht",
+ "product.items.view.list_view.aria_label": "Listenansicht",
"product.label.new.text": "NEU",
"product.label.sale.text": "SALE",
"product.label.topseller.text": "TOP",
@@ -971,6 +986,7 @@
"product.product_links.replacement.title": "Ersatzartikel",
"product.product_links.spareparts.title": "Ersatzteile",
"product.product_links.upselling.title": "Alternatives",
+ "product.quantity.aria_label": "Menge",
"product.quantity.decrease.text": "–",
"product.quantity.greaterthan.text": "Geben Sie {{0}} oder mehr ein.",
"product.quantity.increase.text": "+",
@@ -1030,6 +1046,7 @@
"quickorder.page.breadcrumb": "Schnellbestellung",
"quickorder.page.csv.file.invalid.format": "Das Dateiformat ist ungültig. Bitte verwenden Sie eine CSV-Datei.",
"quickorder.page.csv.file.invalid.input": "Die Eingabe ist ungültig. Bitte prüfen Sie, ob Ihre CSV-Datei die richtige Struktur hat.",
+ "quickorder.page.csv.file.upload.aria_label": "CSV-Datei hochladen",
"quickorder.page.csv.file.uploaded": "Die Datei wurde hochgeladen.",
"quickorder.page.csv.reset.form": "Feld zurücksetzen",
"quickorder.page.csv.sample": "Sie können auch unsere Beispieldatei herunterladen. Dort können Sie sehen, wie Sie eine CSV-Datei strukturieren sollten und welche Informationen wir benötigen. Sie können die Beispieldatei einfach mit ihren eigenen Daten anpassen.",
diff --git a/src/assets/i18n/en_US.json b/src/assets/i18n/en_US.json
index 23838f77b5..f2a4bf6afa 100644
--- a/src/assets/i18n/en_US.json
+++ b/src/assets/i18n/en_US.json
@@ -60,10 +60,12 @@
"account.approvallist.table.buyer": "Buyer",
"account.approvallist.table.date_of_order": "Creation Date",
"account.approvallist.table.id_of_order": "Requisition No.",
+ "account.approvallist.table.id_of_order.aria_label": "Navigate to requisition details.",
"account.approvallist.table.line_item_total": "Order Total",
"account.approvallist.table.line_items": "Line Items",
"account.approvallist.table.no_of_order": "Order No.",
"account.approvallist.table.reject_date": "Rejection Date",
+ "account.budget.already_spent.costcenter.aria_label": "Spent budget of cost center {{0}}",
"account.budget.already_spent.label": "Already Spent",
"account.budget.approved_orders.label": "Orders",
"account.budget.label": "{{0, select, =weekly{Budget (weekly)} =monthly{Budget (monthly)} =quarterly{Budget (quarterly)} =half-yearly{Budget (half-yearly)} =yearly{Budget (yearly)} =fixed{Budget (fixed)}}}",
@@ -161,6 +163,7 @@
"account.forgotdata.email.label": "E-mail Address",
"account.forgotdata.password_retrieval.heading": "Forgot your password?",
"account.forgotdata.password_retrieval_info.text": "For security purposes, please provide your e-mail address and submit the form. If the information you entered is correct, we will send you an e-mail with a link. Follow this link to create a new password. If you have any problems or need help, please contact our Customer Service.",
+ "account.go_to_account.aria_label": "Go to your account",
"account.help.heading": "Help Topics",
"account.login.addresses.message": "Please login to your account to update addresses.",
"account.login.customer_approval.error.invalid": "Your account requires approval before you can login.",
@@ -215,6 +218,7 @@
"account.order_history.heading": "Order History",
"account.order_history.link": "Order History",
"account.order_template.add_to_template.button.add_to_template.label": "Add to Order Template",
+ "account.order_template.add_to_template.checkbox.aria_label": "Select item to add to cart.",
"account.order_template.added.confirmation": "{{0}} has been added to {{1}}.",
"account.order_template.delete.button.text": "Delete",
"account.order_template.delete.do_you_really.text": "Do you really want to delete this order template?",
@@ -617,6 +621,7 @@
"basket.add_quotelineitem.error": "The quote cannot be added to the shopping cart. It contains invalid products.",
"basket.not_found.error": "The shopping cart could not be found.",
"basket.validation.general.error": "Your shopping cart is not valid anymore. Please correct the errors indicated below.",
+ "breadcrumbs.aria_label": "Breadcrumbs",
"captcha.incorrect": "The security verification failed. Please correct the error indicated below.",
"checkout.account.confirm.button.label": "Confirm",
"checkout.account.email.registered.heading": "Account",
@@ -634,9 +639,8 @@
"checkout.address.delete.confirmation.heading": "Delete Address",
"checkout.address.delete.confirmation.text": "Do you really want to delete this address?",
"checkout.address.shipping.label": "Shipping Address",
- "checkout.address.update.button.invoice.label": "Edit Invoice Address",
- "checkout.address.update.button.shipping.label": "Edit Shipping Address",
- "checkout.address.update.label": "Edit {{0}}",
+ "checkout.address.update.invoice.label": "Edit Invoice Address",
+ "checkout.address.update.shipping.label": "Edit Shipping Address",
"checkout.addresses.billing_address.heading": "Invoice Address",
"checkout.addresses.checkout_as_guest.heading": "Checkout as Guest",
"checkout.addresses.email.label": "E-mail Address",
@@ -800,6 +804,7 @@
"checkout.tax.TaxesLabel.TotalOrderVat": "VAT incl. in Total",
"checkout.tax.text": "Tax",
"checkout.termsandconditions.details.title": "Terms & Conditions",
+ "checkout.update.label": "Edit {{0}}",
"checkout.variation.edit.button.label": "Edit",
"checkout.widget.billing-address.heading": "Invoice Address",
"checkout.widget.buyer.TaxationID": "Taxation ID:",
@@ -855,6 +860,8 @@
"form.password.error.required": "Please enter a password.",
"form.phone.error.invalid": "Please enter a valid phone number.",
"form.phone.error.required": "Please enter your phone number.",
+ "header.navigation.collapse_category.aria_label": "Collapse category {{0}}",
+ "header.navigation.expand_category.aria_label": "Expand category {{0}}",
"header.welcome.text": "Welcome to inSPIRED",
"helpdesk.contact_us.heading": "Contact Us",
"helpdesk.contact_us.link": "Contact Us",
@@ -887,6 +894,12 @@
"locale.fr_FR.long": "Français",
"locale.fr_FR.short": "fr",
"modal.heading.remove.order.template": "Remove Product From Order Template",
+ "navigation.main.aria_label": "Main navigation",
+ "navigation.paging.aria_label": "Pagination",
+ "navigation.paging.current_page.aria_label": "Current page: {{0}}",
+ "navigation.paging.go_to_page.aria_label": "Go to page {{0}}",
+ "navigation.paging.next_page.aria_label": "Go to next page",
+ "navigation.paging.previous_page.aria_label": "Go to previous page",
"order.tracking.error": "Unfortunately, we could not locate an order with the information you provided.",
"order_template.create.heading": "Create Order Template",
"payment.error.PaymentInstrumentAlreadyExists": "The payment instrument could not be created. Payment data with the given parameters already exists.",
@@ -925,6 +938,8 @@
"product.itemNumber.label": "Product ID:",
"product.items.label": "{{0, plural, one{# list item} other{# list items}}}",
"product.items.sorting.default.label": "Default Sorting",
+ "product.items.view.grid_view.aria_label": "Grid view",
+ "product.items.view.list_view.aria_label": "List view",
"product.label.new.text": "NEW",
"product.label.sale.text": "SALE",
"product.label.topseller.text": "TOP",
@@ -971,6 +986,7 @@
"product.product_links.replacement.title": "Replacement",
"product.product_links.spareparts.title": "Spare Parts",
"product.product_links.upselling.title": "Alternatives",
+ "product.quantity.aria_label": "Quantity",
"product.quantity.decrease.text": "–",
"product.quantity.greaterthan.text": "Please enter {{0}} or more.",
"product.quantity.increase.text": "+",
@@ -1030,6 +1046,7 @@
"quickorder.page.breadcrumb": "Quick Order",
"quickorder.page.csv.file.invalid.format": "The file format is invalid. Please use a CSV file.",
"quickorder.page.csv.file.invalid.input": "The input is invalid. Please check if your CSV file has the correct structure.",
+ "quickorder.page.csv.file.upload.aria_label": "Upload CSV file",
"quickorder.page.csv.file.uploaded": "The file has been uploaded.",
"quickorder.page.csv.reset.form": "Reset field",
"quickorder.page.csv.sample": "You can download our sample CSV file. It shows how to structure your CSV file and what information we need. You can easily customize the sample file with your own data.",
diff --git a/src/assets/i18n/fr_FR.json b/src/assets/i18n/fr_FR.json
index 41f8b9f6c1..82ff5ad838 100644
--- a/src/assets/i18n/fr_FR.json
+++ b/src/assets/i18n/fr_FR.json
@@ -60,10 +60,12 @@
"account.approvallist.table.buyer": "Acheteur",
"account.approvallist.table.date_of_order": "Date de création",
"account.approvallist.table.id_of_order": "ID de la demande d’achat",
+ "account.approvallist.table.id_of_order.aria_label": "Naviguez jusqu'aux détails de la demande d'achat.",
"account.approvallist.table.line_item_total": "Total",
"account.approvallist.table.line_items": "Articles",
"account.approvallist.table.no_of_order": "ID de la commande",
"account.approvallist.table.reject_date": "Date de refus",
+ "account.budget.already_spent.costcenter.aria_label": "Dépense du budget du centre de coûts {{0}}",
"account.budget.already_spent.label": "Déjà dépensé",
"account.budget.approved_orders.label": "Commandes",
"account.budget.label": "{{0, select, =weekly{Budget (hebdomadaire)} =monthly{Budget (mensuel)} =quarterly{Budget (trimestriel)} =half-yearly{Budget (semestriel)} =yearly{Budget (annuel)} =fixed{Budget (fixe)}}}",
@@ -161,6 +163,7 @@
"account.forgotdata.email.label": "Courriel",
"account.forgotdata.password_retrieval.heading": "Mot de passe oublié ?",
"account.forgotdata.password_retrieval_info.text": "Pour des raisons de sécurité, veuillez fournir votre courriel et soumettre le formulaire. Si les informations que vous avez saisies sont correctes, nous vous enverrons un courriel avec un lien. Suivez ce lien pour créer un nouveau mot de passe. Si vous avez des problèmes ou si vous avez besoin d’aide, veuillez contacter notre service client.",
+ "account.go_to_account.aria_label": "Accédez à votre compte",
"account.help.heading": "Rubriques d’aide",
"account.login.addresses.message": "Veuillez vous connecter à votre compte pour mettre à jour les adresses.",
"account.login.customer_approval.error.invalid": "Votre compte client nécessite une approbation avant de pouvoir vous connecter.",
@@ -215,6 +218,7 @@
"account.order_history.heading": "Historique de commandes",
"account.order_history.link": "Historique de commandes",
"account.order_template.add_to_template.button.add_to_template.label": "Ajouter au modèle de commande",
+ "account.order_template.add_to_template.checkbox.aria_label": "Sélectionner l'article à ajouter au panier.",
"account.order_template.added.confirmation": "{{0}} a été ajouté à \"{{1}}\".",
"account.order_template.delete.button.text": "Supprimer",
"account.order_template.delete.do_you_really.text": "Voulez-vous vraiment supprimer ce modèle de commande ?",
@@ -616,8 +620,9 @@
"basket.add_quote.error": "Le devis n’a pas pu être ajouté au panier.",
"basket.add_quotelineitem.error": "Le devis ne peut pas être ajouté au panier. Il contient des produits non valides.",
"basket.not_found.error": "Le panier n’a pas pu être trouvé.",
- "basket.validation.general.error": "Votre panier n’est plus valide. Veuillez corriger les erreurs signalées ci-dessous.",
- "captcha.incorrect": "Échec de la vérification de sécurité. Veuillez corriger l’erreur signalée ci-dessous.",
+ "basket.validation.general.error": "Votre panier n’est plus valide. Veuillez corriger les erreurs indiquées ci-dessous.",
+ "breadcrumbs.aria_label": "Breadcrumbs",
+ "captcha.incorrect": "Échec de la vérification de sécurité. Veuillez corriger l’erreur indiquée ci-dessous.",
"checkout.account.confirm.button.label": "Confirmer",
"checkout.account.email.registered.heading": "Compte",
"checkout.account.email.registered.link": "Mon compte",
@@ -634,9 +639,8 @@
"checkout.address.delete.confirmation.heading": "Supprimer l’adresse",
"checkout.address.delete.confirmation.text": "Voulez-vous vraiment supprimer cette adresse ?",
"checkout.address.shipping.label": "Adresse de livraison",
- "checkout.address.update.button.invoice.label": "Modifier l'adresse de facturation",
- "checkout.address.update.button.shipping.label": "Modifier l'adresse de livraison",
- "checkout.address.update.label": "Modifier {{0}}",
+ "checkout.address.update.invoice.label": "Modifier l'adresse de facturation",
+ "checkout.address.update.shipping.label": "Modifier l'adresse de livraison",
"checkout.addresses.billing_address.heading": "Adresse de facturation",
"checkout.addresses.checkout_as_guest.heading": "Acheter en tant que visiteur",
"checkout.addresses.email.label": "Courriel",
@@ -800,6 +804,7 @@
"checkout.tax.TaxesLabel.TotalOrderVat": "TVA comprise dans le total de la commande",
"checkout.tax.text": "Taxe",
"checkout.termsandconditions.details.title": "Conditions générales",
+ "checkout.update.label": "Modifier {{0}}",
"checkout.variation.edit.button.label": "Modifier",
"checkout.widget.billing-address.heading": "Adresse de facturation",
"checkout.widget.buyer.TaxationID": "Numéro d’identification fiscale:",
@@ -855,6 +860,8 @@
"form.password.error.required": "Veuillez entrer un mot de passe.",
"form.phone.error.invalid": "Veuillez entrer un numéro de téléphone valide.",
"form.phone.error.required": "Veuillez entrer votre numéro de téléphone.",
+ "header.navigation.collapse_category.aria_label": "Fermer la catégorie {{0}}",
+ "header.navigation.expand_category.aria_label": "Développer la catégorie {{0}}",
"header.welcome.text": "Bienvenue chez inSPIRED",
"helpdesk.contact_us.heading": "Contact",
"helpdesk.contact_us.link": "Contact",
@@ -887,7 +894,13 @@
"locale.fr_FR.long": "Français",
"locale.fr_FR.short": "fr",
"modal.heading.remove.order.template": "Supprimer le produit du modèle de commande",
- "order.tracking.error": "Malheureusement, nous n’avons pas pu localiser de commande avec les informations que vous nous avez fournies.",
+ "navigation.main.aria_label": "Principale navigation",
+ "navigation.paging.aria_label": "Numéros de page",
+ "navigation.paging.current_page.aria_label": "Page actuelle : {{0}}",
+ "navigation.paging.go_to_page.aria_label": "Aller à la page {{0}}",
+ "navigation.paging.next_page.aria_label": "Aller à la page suivante",
+ "navigation.paging.previous_page.aria_label": "Aller à la page précédente",
+ "order.tracking.error": "Malheureusement, nous n’avons pas pu localiser une commande avec les informations que vous avez fournies.",
"order_template.create.heading": "Créer un modèle de commande",
"payment.error.PaymentInstrumentAlreadyExists": "Le moyen de paiement n’a pas pu être mis en place. Les données de paiement avec les paramètres fournis existent déjà.",
"personal.data.request.confirmation.confirmed.heading": "Déjà vérifiée",
@@ -925,6 +938,8 @@
"product.itemNumber.label": "ID de produit :",
"product.items.label": "{{0, plural, one{# article} other{# articles}}}",
"product.items.sorting.default.label": "Tri par défaut",
+ "product.items.view.grid_view.aria_label": "Vue en grille",
+ "product.items.view.list_view.aria_label": "Vue de la liste",
"product.label.new.text": "NOUVEAU",
"product.label.sale.text": "SOLDES",
"product.label.topseller.text": "POPULAIRE",
@@ -971,6 +986,7 @@
"product.product_links.replacement.title": "Produit de substitution",
"product.product_links.spareparts.title": "Pièces de rechange",
"product.product_links.upselling.title": "Alternatives",
+ "product.quantity.aria_label": "Quantité",
"product.quantity.decrease.text": "–",
"product.quantity.greaterthan.text": "Veuillez entrer {{0}} ou plus.",
"product.quantity.increase.text": "+",
@@ -1030,6 +1046,7 @@
"quickorder.page.breadcrumb": "Commande rapide",
"quickorder.page.csv.file.invalid.format": "Le format de fichier n’est pas valide. Veuillez utiliser un fichier CSV.",
"quickorder.page.csv.file.invalid.input": "L’entrée n’est pas valide. Veuillez vérifier si la structure de votre fichier CSV est correcte.",
+ "quickorder.page.csv.file.upload.aria_label": "Télécharger le fichier CSV",
"quickorder.page.csv.file.uploaded": "Le fichier a été téléversé.",
"quickorder.page.csv.reset.form": "Réinitialiser le champ",
"quickorder.page.csv.sample": "Vous pouvez télécharger notre exemple de fichier CSV. Il montre comment structurer votre fichier CSV et de quelles informations nous avons besoin. Vous pouvez facilement personnaliser les exemples de données avec les vôtres.",