diff --git a/.changeset/cuddly-windows-fail.md b/.changeset/cuddly-windows-fail.md new file mode 100644 index 000000000..0ec2b7c4d --- /dev/null +++ b/.changeset/cuddly-windows-fail.md @@ -0,0 +1,5 @@ +--- +'@lion/ui': patch +--- + +[combobox] add translations diff --git a/packages/ui/components/combobox/src/LionCombobox.js b/packages/ui/components/combobox/src/LionCombobox.js index a606f1329..c79b2045d 100644 --- a/packages/ui/components/combobox/src/LionCombobox.js +++ b/packages/ui/components/combobox/src/LionCombobox.js @@ -1,5 +1,6 @@ import { browserDetection } from '@lion/ui/core.js'; import { LionListbox } from '@lion/ui/listbox.js'; +import { LocalizeMixin } from '@lion/ui/localize-no-side-effects.js'; import { OverlayMixin, withDropdownConfig } from '@lion/ui/overlays.js'; import { css, html } from 'lit'; import { makeMatchingTextBold, unmakeMatchingTextBold } from './utils/makeMatchingTextBold.js'; @@ -24,7 +25,7 @@ const matchA11ySpanReverseFns = new WeakMap(); * LionCombobox: implements the wai-aria combobox design pattern and integrates it as a Lion * FormControl */ -export class LionCombobox extends OverlayMixin(LionListbox) { +export class LionCombobox extends LocalizeMixin(OverlayMixin(LionListbox)) { /** @type {any} */ static get properties() { return { @@ -75,6 +76,71 @@ export class LionCombobox extends OverlayMixin(LionListbox) { ]; } + static get localizeNamespaces() { + return [ + { + 'lion-combobox': /** @param {string} locale */ locale => { + switch (locale) { + case 'bg-BG': + case 'bg': + return import('@lion/ui/combobox-translations/bg.js'); + case 'cs-CZ': + case 'cs': + return import('@lion/ui/combobox-translations/cs.js'); + case 'de-AT': + case 'de-DE': + case 'de': + return import('@lion/ui/combobox-translations/de.js'); + case 'en-AU': + case 'en-GB': + case 'en-PH': + case 'en-US': + case 'en': + return import('@lion/ui/combobox-translations/en.js'); + case 'es-ES': + case 'es': + return import('@lion/ui/combobox-translations/es.js'); + case 'fr-FR': + case 'fr-BE': + case 'fr': + return import('@lion/ui/combobox-translations/fr.js'); + case 'hu-HU': + case 'hu': + return import('@lion/ui/combobox-translations/hu.js'); + case 'it-IT': + case 'it': + return import('@lion/ui/combobox-translations/it.js'); + case 'nl-BE': + case 'nl-NL': + case 'nl': + return import('@lion/ui/combobox-translations/nl.js'); + case 'pl-PL': + case 'pl': + return import('@lion/ui/combobox-translations/pl.js'); + case 'ro-RO': + case 'ro': + return import('@lion/ui/combobox-translations/ro.js'); + case 'ru-RU': + case 'ru': + return import('@lion/ui/combobox-translations/ru.js'); + case 'sk-SK': + case 'sk': + return import('@lion/ui/combobox-translations/sk.js'); + case 'uk-UA': + case 'uk': + return import('@lion/ui/combobox-translations/uk.js'); + case 'zh-CN': + case 'zh': + return import('@lion/ui/combobox-translations/zh.js'); + default: + return import('@lion/ui/combobox-translations/en.js'); + } + }, + }, + ...super.localizeNamespaces, + ]; + } + /** * @enhance FormControlMixin - add slot[name=selection-display] * @protected @@ -94,9 +160,12 @@ export class LionCombobox extends OverlayMixin(LionListbox) { */ // eslint-disable-next-line class-methods-use-this _overlayListboxTemplate() { - // TODO: Localize the aria-label return html` -