From fc97ca324c049bf969bd3e0e9d4280b403f88b26 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 3 May 2023 13:54:59 +0200 Subject: [PATCH] Add support for native names for other languages than HA has (#16393) * Add support for native names for other languages than HA has * catch unsupported locales --- src/components/ha-language-picker.ts | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/components/ha-language-picker.ts b/src/components/ha-language-picker.ts index ac8a11579d..618709c980 100644 --- a/src/components/ha-language-picker.ts +++ b/src/components/ha-language-picker.ts @@ -68,10 +68,24 @@ export class HaLanguagePicker extends LitElement { if (nativeName) { const translations = this.hass.translationMetadata.translations; - options = languages.map((lang) => ({ - value: lang, - label: translations[lang]?.nativeName ?? lang, - })); + options = languages.map((lang) => { + let label = translations[lang]?.nativeName; + if (!label) { + try { + // this will not work if Intl.DisplayNames is polyfilled, it will return in the language of the user + label = new Intl.DisplayNames(lang, { + type: "language", + fallback: "code", + }).of(lang)!; + } catch (err) { + label = lang; + } + } + return { + value: lang, + label, + }; + }); } else { options = languages.map((lang) => ({ value: lang,