i18n(epg): translate multi-EPG toolbar tooltips

The Zoom/Filter/Search Programs buttons in the Multi-EPG header
hard-coded English matTooltip strings, so they never localized — even
when the rest of the toolbar (Close, Previous/Next day) used keys. Adds
six new EPG.* keys (ZOOM_IN, ZOOM_OUT, FILTER_CHANNELS, CLOSE_FILTER,
SEARCH_PROGRAMS, CLOSE_PROGRAM_SEARCH), wires both [matTooltip] and
[attr.aria-label] through `| translate`, and fans the strings out to
all 17 non-English locales via the i18n-fill pipeline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
4grayandClaude Opus 4.7 committed 2026-05-19 09:15:35 +02:00
1 parent 55215a5059
commit 6891a1ca30
19 files changed
+142 -4

No files matched your search

+6
View File
@@ -528,6 +528,12 @@
"TITLE": "الدليل الإلكتروني للبرامج",
"NEXT_DAY": "اليوم التالي",
"PREVIOUS_DAY": "اليوم السابق",
"ZOOM_IN": "تكبير",
"ZOOM_OUT": "تصغير",
"FILTER_CHANNELS": "تصفية القنوات",
"CLOSE_FILTER": "إغلاق التصفية",
"SEARCH_PROGRAMS": "البحث في البرامج",
"CLOSE_PROGRAM_SEARCH": "إغلاق بحث البرامج",
"LIVE_NOW": "يُبث الآن",
"LIVE_STREAM": "بث مباشر",
"TIMESHIFT_AVAILABLE": "التحريك الزمني متاح، انقر للتشغيل",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "دليل البرامج الإلكتروني",
"NEXT_DAY": "اليوم التالي",
"PREVIOUS_DAY": "اليوم السابق",
"ZOOM_IN": "كبر",
"ZOOM_OUT": "صغر",
"FILTER_CHANNELS": "فلتر القنوات",
"CLOSE_FILTER": "سد الفلتر",
"SEARCH_PROGRAMS": "قلب على البرامج",
"CLOSE_PROGRAM_SEARCH": "سد البحث على البرامج",
"LIVE_NOW": "مباشر الآن",
"LIVE_STREAM": "بث مباشر",
"TIMESHIFT_AVAILABLE": "التأجيل الزمني متوفر، ضغط باش تلعب",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "Электронная праграма перадач",
"NEXT_DAY": "Наступны дзень",
"PREVIOUS_DAY": "Папярэдні дзень",
"ZOOM_IN": "Павялічыць маштаб",
"ZOOM_OUT": "Паменшыць маштаб",
"FILTER_CHANNELS": "Фільтраваць каналы",
"CLOSE_FILTER": "Закрыць фільтр",
"SEARCH_PROGRAMS": "Пошук перадач",
"CLOSE_PROGRAM_SEARCH": "Закрыць пошук перадач",
"LIVE_NOW": "Цяпер",
"LIVE_STREAM": "Прамая трансляцыя",
"TIMESHIFT_AVAILABLE": "Даступная функцыя архіва (timeshift). Націсніце на перадачу для прайгравання.",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "Elektronischer Programmführer",
"NEXT_DAY": "Zum nächsten Tag",
"PREVIOUS_DAY": "Zum vorherigen Tag",
"ZOOM_IN": "Vergrößern",
"ZOOM_OUT": "Verkleinern",
"FILTER_CHANNELS": "Sender filtern",
"CLOSE_FILTER": "Filter schließen",
"SEARCH_PROGRAMS": "Sendungen suchen",
"CLOSE_PROGRAM_SEARCH": "Sendungssuche schließen",
"LIVE_NOW": "Live jetzt",
"LIVE_STREAM": "Live stream",
"TIMESHIFT_AVAILABLE": "Die Timeshift-Funktion (Archiv) ist verfügbar, klicken Sie an um abzuspielen",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "Ηλεκτρονικός Οδηγός Προγράμματος",
"NEXT_DAY": "Επόμενη μέρα",
"PREVIOUS_DAY": "Προηγούμενη ημέρα",
"ZOOM_IN": "Μεγέθυνση",
"ZOOM_OUT": "Σμίκρυνση",
"FILTER_CHANNELS": "Φιλτράρισμα καναλιών",
"CLOSE_FILTER": "Κλείσιμο φίλτρου",
"SEARCH_PROGRAMS": "Αναζήτηση προγραμμάτων",
"CLOSE_PROGRAM_SEARCH": "Κλείσιμο αναζήτησης προγραμμάτων",
"LIVE_NOW": "Ζωντανά τώρα",
"LIVE_STREAM": "Ζωντανή ροή",
"TIMESHIFT_AVAILABLE": "Η χρονική μετατόπιση είναι διαθέσιμη, κάντε κλικ για αναπαραγωγή.",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "Electronic Program Guide",
"NEXT_DAY": "Next day",
"PREVIOUS_DAY": "Previous day",
"ZOOM_IN": "Zoom in",
"ZOOM_OUT": "Zoom out",
"FILTER_CHANNELS": "Filter channels",
"CLOSE_FILTER": "Close filter",
"SEARCH_PROGRAMS": "Search programs",
"CLOSE_PROGRAM_SEARCH": "Close program search",
"LIVE_NOW": "Live now",
"LIVE_STREAM": "Live stream",
"TIMESHIFT_AVAILABLE": "Timeshift is available, click to play",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "Guía electrónica de programación",
"NEXT_DAY": "Día siguiente",
"PREVIOUS_DAY": "Día anterior",
"ZOOM_IN": "Acercar",
"ZOOM_OUT": "Alejar",
"FILTER_CHANNELS": "Filtrar canales",
"CLOSE_FILTER": "Cerrar filtro",
"SEARCH_PROGRAMS": "Buscar programas",
"CLOSE_PROGRAM_SEARCH": "Cerrar búsqueda de programas",
"LIVE_NOW": "Ahora en vivo",
"LIVE_STREAM": "Transmisión en vivo",
"TIMESHIFT_AVAILABLE": "Timeshift está disponible, clic para reproducir",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "Guide électronique des programmes",
"NEXT_DAY": "Jour suivant",
"PREVIOUS_DAY": "Jour précédent",
"ZOOM_IN": "Zoom avant",
"ZOOM_OUT": "Zoom arrière",
"FILTER_CHANNELS": "Filtrer les chaînes",
"CLOSE_FILTER": "Fermer le filtre",
"SEARCH_PROGRAMS": "Rechercher des programmes",
"CLOSE_PROGRAM_SEARCH": "Fermer la recherche de programmes",
"LIVE_NOW": "En direct",
"LIVE_STREAM": "Diffusion en direct",
"TIMESHIFT_AVAILABLE": "Contrôle du direct disponible, cliquez pour lire",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "Guida elettronica programmi",
"NEXT_DAY": "Giorno successivo",
"PREVIOUS_DAY": "Giorno precedente",
"ZOOM_IN": "Ingrandisci",
"ZOOM_OUT": "Riduci",
"FILTER_CHANNELS": "Filtra canali",
"CLOSE_FILTER": "Chiudi filtro",
"SEARCH_PROGRAMS": "Cerca programmi",
"CLOSE_PROGRAM_SEARCH": "Chiudi ricerca programmi",
"LIVE_NOW": "Live attuale",
"LIVE_STREAM": "Stream live",
"TIMESHIFT_AVAILABLE": "Disponibile il timeshift, fai clic per riprodurre",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "電子番組表",
"NEXT_DAY": "翌日",
"PREVIOUS_DAY": "前日",
"ZOOM_IN": "拡大",
"ZOOM_OUT": "縮小",
"FILTER_CHANNELS": "チャンネルをフィルター",
"CLOSE_FILTER": "フィルターを閉じる",
"SEARCH_PROGRAMS": "番組を検索",
"CLOSE_PROGRAM_SEARCH": "番組検索を閉じる",
"LIVE_NOW": "現在放送中",
"LIVE_STREAM": "ライブストリーム",
"TIMESHIFT_AVAILABLE": "タイムシフトが利用可能です。クリックして再生",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "전자 프로그램 가이드",
"NEXT_DAY": "다음날",
"PREVIOUS_DAY": "전날",
"ZOOM_IN": "확대",
"ZOOM_OUT": "축소",
"FILTER_CHANNELS": "채널 필터",
"CLOSE_FILTER": "필터 닫기",
"SEARCH_PROGRAMS": "프로그램 검색",
"CLOSE_PROGRAM_SEARCH": "프로그램 검색 닫기",
"LIVE_NOW": "Live now",
"LIVE_STREAM": "Live stream",
"TIMESHIFT_AVAILABLE": "Timeshift를 사용할 수 있습니다, 클릭하여 재생합니다",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "TV-Gids",
"NEXT_DAY": "Volgende dag",
"PREVIOUS_DAY": "Vorige dag",
"ZOOM_IN": "Inzoomen",
"ZOOM_OUT": "Uitzoomen",
"FILTER_CHANNELS": "Kanalen filteren",
"CLOSE_FILTER": "Filter sluiten",
"SEARCH_PROGRAMS": "Programma's zoeken",
"CLOSE_PROGRAM_SEARCH": "Programmazoekopdracht sluiten",
"LIVE_NOW": "Nu live",
"LIVE_STREAM": "Live stream",
"TIMESHIFT_AVAILABLE": "Doorspoelen is beschikbaar, klik om af te spelen",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "Elektroniczny przewodnik po programach",
"NEXT_DAY": "Następny dzień",
"PREVIOUS_DAY": "Poprzedni dzień",
"ZOOM_IN": "Powiększ",
"ZOOM_OUT": "Pomniejsz",
"FILTER_CHANNELS": "Filtruj kanały",
"CLOSE_FILTER": "Zamknij filtr",
"SEARCH_PROGRAMS": "Szukaj programów",
"CLOSE_PROGRAM_SEARCH": "Zamknij wyszukiwanie programów",
"LIVE_NOW": "Na żywo teraz",
"LIVE_STREAM": "Transmisja na żywo",
"TIMESHIFT_AVAILABLE": "Dostępne jest przesunięcie czasowe, kliknij, aby odtworzyć",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "Guia Eletrônico de Programação",
"NEXT_DAY": "Próximo dia",
"PREVIOUS_DAY": "Dia anterior",
"ZOOM_IN": "Mais zoom",
"ZOOM_OUT": "Menos zoom",
"FILTER_CHANNELS": "Filtrar canais",
"CLOSE_FILTER": "Fechar filtro",
"SEARCH_PROGRAMS": "Pesquisar programas",
"CLOSE_PROGRAM_SEARCH": "Fechar pesquisa de programas",
"LIVE_NOW": "Ao vivo agora",
"LIVE_STREAM": "Transmissão ao vivo",
"TIMESHIFT_AVAILABLE": "Timeshift está disponível, clique para reproduzir",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "Электронный программный гид",
"NEXT_DAY": "Следующий день",
"PREVIOUS_DAY": "Предыдущий день",
"ZOOM_IN": "Увеличить",
"ZOOM_OUT": "Уменьшить",
"FILTER_CHANNELS": "Фильтровать каналы",
"CLOSE_FILTER": "Закрыть фильтр",
"SEARCH_PROGRAMS": "Поиск программ",
"CLOSE_PROGRAM_SEARCH": "Закрыть поиск программ",
"LIVE_NOW": "Сейчас",
"LIVE_STREAM": "Прямая трансляция",
"TIMESHIFT_AVAILABLE": "Доступна функция архива (timeshift). Нажмите на передачу для воспроизведения.",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "Elektronik Program Rehberi",
"NEXT_DAY": "Sonraki gün",
"PREVIOUS_DAY": "Önceki gün",
"ZOOM_IN": "Yakınlaştır",
"ZOOM_OUT": "Uzaklaştır",
"FILTER_CHANNELS": "Kanalları filtrele",
"CLOSE_FILTER": "Filtreyi kapat",
"SEARCH_PROGRAMS": "Programları ara",
"CLOSE_PROGRAM_SEARCH": "Program aramayı kapat",
"LIVE_NOW": "Şu an canlı",
"LIVE_STREAM": "Canlı yayın",
"TIMESHIFT_AVAILABLE": "Zaman kaydırma mevcut, tıklayarak oynat",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "电子节目指南",
"NEXT_DAY": "明天",
"PREVIOUS_DAY": "昨天",
"ZOOM_IN": "放大",
"ZOOM_OUT": "缩小",
"FILTER_CHANNELS": "筛选频道",
"CLOSE_FILTER": "关闭筛选",
"SEARCH_PROGRAMS": "搜索节目",
"CLOSE_PROGRAM_SEARCH": "关闭节目搜索",
"LIVE_NOW": "正在播放",
"LIVE_STREAM": "正在直播",
"TIMESHIFT_AVAILABLE": "时移功能可用,点击播放",
+6
View File
@@ -528,6 +528,12 @@
"TITLE": "電子節目指南",
"NEXT_DAY": "下一天",
"PREVIOUS_DAY": "上一天",
"ZOOM_IN": "放大",
"ZOOM_OUT": "縮小",
"FILTER_CHANNELS": "篩選頻道",
"CLOSE_FILTER": "關閉篩選",
"SEARCH_PROGRAMS": "搜尋節目",
"CLOSE_PROGRAM_SEARCH": "關閉節目搜尋",
"LIVE_NOW": "現在播放",
"LIVE_STREAM": "現場直播",
"TIMESHIFT_AVAILABLE": "時間平移功能可用,點選以播放",
@@ -23,10 +23,22 @@
>
<mat-icon>chevron_right</mat-icon>
</button>
<button mat-icon-button (click)="zoomOut()" [disabled]="hourWidth() <= 50" matTooltip="Zoom out">
<button
mat-icon-button
(click)="zoomOut()"
[disabled]="hourWidth() <= 50"
[matTooltip]="'EPG.ZOOM_OUT' | translate"
[attr.aria-label]="'EPG.ZOOM_OUT' | translate"
>
<mat-icon>remove</mat-icon>
</button>
<button mat-icon-button (click)="zoomIn()" [disabled]="hourWidth() >= 800" matTooltip="Zoom in">
<button
mat-icon-button
(click)="zoomIn()"
[disabled]="hourWidth() >= 800"
[matTooltip]="'EPG.ZOOM_IN' | translate"
[attr.aria-label]="'EPG.ZOOM_IN' | translate"
>
<mat-icon>add</mat-icon>
</button>
@@ -53,7 +65,14 @@
<button
mat-icon-button
(click)="toggleSearch()"
[matTooltip]="isSearchExpanded() ? 'Close filter' : 'Filter channels'"
[matTooltip]="
(isSearchExpanded() ? 'EPG.CLOSE_FILTER' : 'EPG.FILTER_CHANNELS')
| translate
"
[attr.aria-label]="
(isSearchExpanded() ? 'EPG.CLOSE_FILTER' : 'EPG.FILTER_CHANNELS')
| translate
"
>
<mat-icon>{{ isSearchExpanded() ? 'filter_list_off' : 'filter_list' }}</mat-icon>
</button>
@@ -113,7 +132,18 @@
<button
mat-icon-button
(click)="toggleProgramSearch()"
[matTooltip]="isProgramSearchOpen() ? 'Close program search' : 'Search programs'"
[matTooltip]="
(isProgramSearchOpen()
? 'EPG.CLOSE_PROGRAM_SEARCH'
: 'EPG.SEARCH_PROGRAMS'
) | translate
"
[attr.aria-label]="
(isProgramSearchOpen()
? 'EPG.CLOSE_PROGRAM_SEARCH'
: 'EPG.SEARCH_PROGRAMS'
) | translate
"
>
<mat-icon>{{ isProgramSearchOpen() ? 'close' : 'manage_search' }}</mat-icon>
</button>