From 5fbdbe359516d6f7ffebd191cf70de8aeb7d24c5 Mon Sep 17 00:00:00 2001 From: Tazio Date: Thu, 13 Nov 2025 09:03:09 +0100 Subject: [PATCH] fix: search screen translations --- lib/i18n/strings.g.dart | 20 +++++++++++-- lib/i18n/strings.i18n.json | 6 ++-- lib/i18n/strings_it.i18n.json | 4 ++- lib/i18n/strings_nl.i18n.json | 4 ++- lib/i18n/strings_sv.i18n.json | 6 ++-- lib/screens/search_screen.dart | 53 +++++++++++++++++----------------- 6 files changed, 59 insertions(+), 34 deletions(-) diff --git a/lib/i18n/strings.g.dart b/lib/i18n/strings.g.dart index d671032a..bdc1263a 100644 --- a/lib/i18n/strings.g.dart +++ b/lib/i18n/strings.g.dart @@ -4,9 +4,9 @@ /// To regenerate, run: `dart run slang` /// /// Locales: 4 -/// Strings: 1240 (310 per locale) +/// Strings: 1248 (312 per locale) /// -/// Built on 2025-11-12 at 20:36 UTC +/// Built on 2025-11-13 at 08:01 UTC // coverage:ignore-file // ignore_for_file: type=lint @@ -361,6 +361,8 @@ class _StringsSearchEn { // Translations String get hint => 'Search movies, shows, music...'; String get tryDifferentTerm => 'Try a different search term'; + String get searchYourMedia => 'Search your media'; + String get enterTitleActorOrKeyword => 'Enter a title, actor, or keyword'; } // Path: hotkeys @@ -967,6 +969,8 @@ class _StringsSearchIt implements _StringsSearchEn { // Translations @override String get hint => 'Cerca film. spettacoli, musica...'; @override String get tryDifferentTerm => 'Prova altri termini di ricerca'; + @override String get searchYourMedia => 'Cerca nei tuoi media'; + @override String get enterTitleActorOrKeyword => 'Inserisci un titolo, attore o parola chiave'; } // Path: hotkeys @@ -1573,6 +1577,8 @@ class _StringsSearchNl implements _StringsSearchEn { // Translations @override String get hint => 'Zoek films, series, muziek...'; @override String get tryDifferentTerm => 'Probeer een andere zoekterm'; + @override String get searchYourMedia => 'Zoek in je media'; + @override String get enterTitleActorOrKeyword => 'Voer een titel, acteur of trefwoord in'; } // Path: hotkeys @@ -2179,6 +2185,8 @@ class _StringsSearchSv implements _StringsSearchEn { // Translations @override String get hint => 'Sök filmer, serier, musik...'; @override String get tryDifferentTerm => 'Prova en annan sökterm'; + @override String get searchYourMedia => 'Sök i dina media'; + @override String get enterTitleActorOrKeyword => 'Ange en titel, skådespelare eller nyckelord'; } // Path: hotkeys @@ -2677,6 +2685,8 @@ extension on Translations { case 'settings.shortcutUpdated': return ({required Object action}) => 'Shortcut updated for ${action}'; case 'search.hint': return 'Search movies, shows, music...'; case 'search.tryDifferentTerm': return 'Try a different search term'; + case 'search.searchYourMedia': return 'Search your media'; + case 'search.enterTitleActorOrKeyword': return 'Enter a title, actor, or keyword'; case 'hotkeys.setShortcutFor': return ({required Object actionName}) => 'Set Shortcut for ${actionName}'; case 'hotkeys.clearShortcut': return 'Clear shortcut'; case 'pinEntry.enterPin': return 'Enter PIN'; @@ -2995,6 +3005,8 @@ extension on _StringsIt { case 'settings.shortcutUpdated': return ({required Object action}) => 'Scorciatoia aggiornata per ${action}'; case 'search.hint': return 'Cerca film. spettacoli, musica...'; case 'search.tryDifferentTerm': return 'Prova altri termini di ricerca'; + case 'search.searchYourMedia': return 'Cerca nei tuoi media'; + case 'search.enterTitleActorOrKeyword': return 'Inserisci un titolo, attore o parola chiave'; case 'hotkeys.setShortcutFor': return ({required Object actionName}) => 'Imposta scorciatoia per ${actionName}'; case 'hotkeys.clearShortcut': return 'Elimina scorciatoia'; case 'pinEntry.enterPin': return 'Inserisci PIN'; @@ -3313,6 +3325,8 @@ extension on _StringsNl { case 'settings.shortcutUpdated': return ({required Object action}) => 'Sneltoets bijgewerkt voor ${action}'; case 'search.hint': return 'Zoek films, series, muziek...'; case 'search.tryDifferentTerm': return 'Probeer een andere zoekterm'; + case 'search.searchYourMedia': return 'Zoek in je media'; + case 'search.enterTitleActorOrKeyword': return 'Voer een titel, acteur of trefwoord in'; case 'hotkeys.setShortcutFor': return ({required Object actionName}) => 'Stel sneltoets in voor ${actionName}'; case 'hotkeys.clearShortcut': return 'Wis sneltoets'; case 'pinEntry.enterPin': return 'Voer PIN in'; @@ -3631,6 +3645,8 @@ extension on _StringsSv { case 'settings.shortcutUpdated': return ({required Object action}) => 'Genväg uppdaterad för ${action}'; case 'search.hint': return 'Sök filmer, serier, musik...'; case 'search.tryDifferentTerm': return 'Prova en annan sökterm'; + case 'search.searchYourMedia': return 'Sök i dina media'; + case 'search.enterTitleActorOrKeyword': return 'Ange en titel, skådespelare eller nyckelord'; case 'hotkeys.setShortcutFor': return ({required Object actionName}) => 'Sätt genväg för ${actionName}'; case 'hotkeys.clearShortcut': return 'Rensa genväg'; case 'pinEntry.enterPin': return 'Ange PIN'; diff --git a/lib/i18n/strings.i18n.json b/lib/i18n/strings.i18n.json index b82ac74c..4a392b17 100644 --- a/lib/i18n/strings.i18n.json +++ b/lib/i18n/strings.i18n.json @@ -132,7 +132,9 @@ }, "search": { "hint": "Search movies, shows, music...", - "tryDifferentTerm": "Try a different search term" + "tryDifferentTerm": "Try a different search term", + "searchYourMedia": "Search your media", + "enterTitleActorOrKeyword": "Enter a title, actor, or keyword" }, "hotkeys": { "setShortcutFor": "Set Shortcut for ${actionName}", @@ -363,4 +365,4 @@ "libraries": "Libraries", "settings": "Settings" } -} \ No newline at end of file +} diff --git a/lib/i18n/strings_it.i18n.json b/lib/i18n/strings_it.i18n.json index 8592ffa7..f5f7cf1c 100644 --- a/lib/i18n/strings_it.i18n.json +++ b/lib/i18n/strings_it.i18n.json @@ -132,7 +132,9 @@ }, "search": { "hint": "Cerca film. spettacoli, musica...", - "tryDifferentTerm": "Prova altri termini di ricerca" + "tryDifferentTerm": "Prova altri termini di ricerca", + "searchYourMedia": "Cerca nei tuoi media", + "enterTitleActorOrKeyword": "Inserisci un titolo, attore o parola chiave" }, "hotkeys": { "setShortcutFor": "Imposta scorciatoia per ${actionName}", diff --git a/lib/i18n/strings_nl.i18n.json b/lib/i18n/strings_nl.i18n.json index cfc92eda..aa313d0d 100644 --- a/lib/i18n/strings_nl.i18n.json +++ b/lib/i18n/strings_nl.i18n.json @@ -132,7 +132,9 @@ }, "search": { "hint": "Zoek films, series, muziek...", - "tryDifferentTerm": "Probeer een andere zoekterm" + "tryDifferentTerm": "Probeer een andere zoekterm", + "searchYourMedia": "Zoek in je media", + "enterTitleActorOrKeyword": "Voer een titel, acteur of trefwoord in" }, "hotkeys": { "setShortcutFor": "Stel sneltoets in voor ${actionName}", diff --git a/lib/i18n/strings_sv.i18n.json b/lib/i18n/strings_sv.i18n.json index a4aab696..5aa77fe4 100644 --- a/lib/i18n/strings_sv.i18n.json +++ b/lib/i18n/strings_sv.i18n.json @@ -132,7 +132,9 @@ }, "search": { "hint": "Sök filmer, serier, musik...", - "tryDifferentTerm": "Prova en annan sökterm" + "tryDifferentTerm": "Prova en annan sökterm", + "searchYourMedia": "Sök i dina media", + "enterTitleActorOrKeyword": "Ange en titel, skådespelare eller nyckelord" }, "hotkeys": { "setShortcutFor": "Sätt genväg för ${actionName}", @@ -363,4 +365,4 @@ "libraries": "Bibliotek", "settings": "Inställningar" } -} \ No newline at end of file +} diff --git a/lib/screens/search_screen.dart b/lib/screens/search_screen.dart index 3de0afe1..2764664e 100644 --- a/lib/screens/search_screen.dart +++ b/lib/screens/search_screen.dart @@ -1,17 +1,19 @@ import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; + import '../client/plex_client.dart'; -import '../models/plex_metadata.dart'; -import '../services/settings_service.dart'; -import '../providers/settings_provider.dart'; -import '../utils/provider_extensions.dart'; -import '../utils/app_logger.dart'; -import '../widgets/media_card.dart'; -import '../widgets/desktop_app_bar.dart'; -import '../mixins/refreshable.dart'; -import '../mixins/item_updatable.dart'; import '../i18n/strings.g.dart'; +import '../mixins/item_updatable.dart'; +import '../mixins/refreshable.dart'; +import '../models/plex_metadata.dart'; +import '../providers/settings_provider.dart'; +import '../services/settings_service.dart'; +import '../utils/app_logger.dart'; +import '../utils/provider_extensions.dart'; +import '../widgets/desktop_app_bar.dart'; +import '../widgets/media_card.dart'; class SearchScreen extends StatefulWidget { const SearchScreen({super.key}); @@ -107,9 +109,9 @@ class _SearchScreenState extends State setState(() { _isSearching = false; }); - ScaffoldMessenger.of( - context, - ).showSnackBar(SnackBar(content: Text(t.errors.searchFailed(error: e)))); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(t.errors.searchFailed(error: e))), + ); } } } @@ -124,7 +126,9 @@ class _SearchScreenState extends State // Public method to fully reload all content (for profile switches) void fullRefresh() { - appLogger.d('SearchScreen.fullRefresh() called - clearing search and reloading'); + appLogger.d( + 'SearchScreen.fullRefresh() called - clearing search and reloading', + ); // Clear search results and search text for new profile _searchController.clear(); setState(() { @@ -186,14 +190,14 @@ class _SearchScreenState extends State Icon(Icons.search, size: 80, color: Colors.grey.shade400), const SizedBox(height: 16), Text( - 'Search your media', + t.search.searchYourMedia, style: Theme.of(context).textTheme.titleLarge?.copyWith( color: Colors.grey.shade600, ), ), const SizedBox(height: 8), Text( - 'Enter a title, actor, or keyword', + t.search.enterTitleActorOrKeyword, style: TextStyle(color: Colors.grey.shade600), ), ], @@ -234,17 +238,14 @@ class _SearchScreenState extends State return SliverPadding( padding: const EdgeInsets.all(16), sliver: SliverList( - delegate: SliverChildBuilderDelegate( - (context, index) { - final item = _searchResults[index]; - return MediaCard( - key: Key(item.ratingKey), - item: item, - onRefresh: updateItem, - ); - }, - childCount: _searchResults.length, - ), + delegate: SliverChildBuilderDelegate((context, index) { + final item = _searchResults[index]; + return MediaCard( + key: Key(item.ratingKey), + item: item, + onRefresh: updateItem, + ); + }, childCount: _searchResults.length), ), ); } else {