diff --git a/src/components/media-player/ha-browse-media-tts.ts b/src/components/media-player/ha-browse-media-tts.ts
index 152da17ac6..1755b4e6fd 100644
--- a/src/components/media-player/ha-browse-media-tts.ts
+++ b/src/components/media-player/ha-browse-media-tts.ts
@@ -21,6 +21,7 @@ import { buttonLinkStyle } from "../../resources/styles";
import { HomeAssistant } from "../../types";
import "../ha-select";
import "../ha-textarea";
+import "../ha-language-picker";
export interface TtsMediaPickedEvent {
item: MediaPlayerItem;
@@ -103,21 +104,17 @@ class BrowseMediaTTS extends LitElement {
return html`
-
- ${languages.map(
- ([key, label]) =>
- html`${label}`
- )}
-
+
hass.callWS({ type: "cloud/tts/info" });
export const getCloudTtsLanguages = (info?: CloudTTSInfo) => {
- const languages: Array<[string, string]> = [];
+ const languages: string[] = [];
if (!info) {
return languages;
@@ -23,25 +22,9 @@ export const getCloudTtsLanguages = (info?: CloudTTSInfo) => {
continue;
}
seen.add(lang);
-
- let label = lang;
-
- if (lang in translationMetadata.translations) {
- label = translationMetadata.translations[lang].nativeName;
- } else {
- const [langFamily, dialect] = lang.split("-");
- if (langFamily in translationMetadata.translations) {
- label = `${translationMetadata.translations[langFamily].nativeName}`;
-
- if (langFamily.toLowerCase() !== dialect.toLowerCase()) {
- label += ` (${dialect})`;
- }
- }
- }
-
- languages.push([lang, label]);
+ languages.push(lang);
}
- return languages.sort((a, b) => caseInsensitiveStringCompare(a[1], b[1]));
+ return languages;
};
export const getCloudTtsSupportedGenders = (
diff --git a/src/panels/config/cloud/account/cloud-tts-pref.ts b/src/panels/config/cloud/account/cloud-tts-pref.ts
index 43d421fda6..0245c3a134 100644
--- a/src/panels/config/cloud/account/cloud-tts-pref.ts
+++ b/src/panels/config/cloud/account/cloud-tts-pref.ts
@@ -8,6 +8,7 @@ import "../../../../components/ha-card";
import "../../../../components/ha-select";
import "../../../../components/ha-svg-icon";
import "../../../../components/ha-switch";
+import "../../../../components/ha-language-picker";
import { CloudStatusLoggedIn, updateCloudPref } from "../../../../data/cloud";
import {
CloudTTSInfo,
@@ -54,34 +55,33 @@ export class CloudTTSPref extends LitElement {
'"tts.cloud_say"'
)}
+
+
+
-
- ${languages.map(
- ([key, label]) =>
- html`${label}`
- )}
-
-
-
- ${genders.map(
- ([key, label]) =>
- html`${label}`
- )}
-
+
+ ${genders.map(
+ ([key, label]) =>
+ html`${label}`
+ )}
+
+
@@ -115,11 +115,11 @@ export class CloudTTSPref extends LitElement {
}
async _handleLanguageChange(ev) {
- if (ev.target.value === this.cloudStatus!.prefs.tts_default_voice[0]) {
+ if (ev.detail.value === this.cloudStatus!.prefs.tts_default_voice[0]) {
return;
}
this.savingPreferences = true;
- const language = ev.target.value;
+ const language = ev.detail.value;
const curGender = this.cloudStatus!.prefs.tts_default_voice[1];
const genders = this.getSupportedGenders(
@@ -185,6 +185,18 @@ export class CloudTTSPref extends LitElement {
right: auto;
left: 24px;
}
+ .row {
+ display: flex;
+ }
+ .row > * {
+ flex: 1;
+ }
+ .row > *:first-child {
+ margin-right: 8px;
+ }
+ .row > *:last-child {
+ margin-left: 8px;
+ }
.card-actions {
display: flex;
flex-direction: row-reverse;