feat(locale): add bengali translations for search page

This commit is contained in:
Kingkor Roy Tirtho 2023-04-29 09:23:41 +06:00
parent 09af1aa156
commit a1cdbad187
3 changed files with 40 additions and 19 deletions

View File

@ -9,5 +9,12 @@
"genre": "গানের ধরণ", "genre": "গানের ধরণ",
"personalized": "আপনার জন্য", "personalized": "আপনার জন্য",
"featured": "বৈশিষ্ট্যযুক্ত", "featured": "বৈশিষ্ট্যযুক্ত",
"new_releases": "সাম্প্রতিক মুক্তি প্রাপ্ত" "new_releases": "সাম্প্রতিক মুক্তি প্রাপ্ত",
"songs": "গান",
"playing_track": "{track} চালানো হচ্ছে",
"queue_clear_alert": "এটি বর্তমান প্লেলিষ্ট সাফ করে দিবে। {track_length}টি গান বাদ দেওয়া হবে\nআপনি কি চালিয়ে যেতে চান?",
"load_more": "আরো লোড করুন",
"playlists": "প্লেলিস্ট",
"artists": "শিল্পী",
"albums": "অ্যালবাম"
} }

View File

@ -9,5 +9,12 @@
"genre": "Genre", "genre": "Genre",
"personalized": "Personalized", "personalized": "Personalized",
"featured": "Featured", "featured": "Featured",
"new_releases": "New Releases" "new_releases": "New Releases",
"songs": "Songs",
"playing_track": "Playing {track}",
"queue_clear_alert": "This will clear the current queue. {track_length} tracks will be removed\nDo you want to continue?",
"load_more": "Load more",
"playlists": "Playlists",
"artists": "Artists",
"albums": "Albums"
} }

View File

@ -16,6 +16,7 @@ import 'package:spotube/components/shared/track_table/track_tile.dart';
import 'package:spotube/components/shared/waypoint.dart'; import 'package:spotube/components/shared/waypoint.dart';
import 'package:spotube/components/artist/artist_card.dart'; import 'package:spotube/components/artist/artist_card.dart';
import 'package:spotube/components/playlist/playlist_card.dart'; import 'package:spotube/components/playlist/playlist_card.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/hooks/use_breakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/provider/authentication_provider.dart'; import 'package:spotube/provider/authentication_provider.dart';
import 'package:spotube/provider/playlist_queue_provider.dart'; import 'package:spotube/provider/playlist_queue_provider.dart';
@ -77,9 +78,9 @@ class SearchPage extends HookConsumerWidget {
), ),
color: theme.scaffoldBackgroundColor, color: theme.scaffoldBackgroundColor,
child: TextField( child: TextField(
decoration: const InputDecoration( decoration: InputDecoration(
prefixIcon: Icon(SpotubeIcons.search), prefixIcon: const Icon(SpotubeIcons.search),
hintText: "Search...", hintText: "${context.l10n.search}...",
), ),
onSubmitted: (value) async { onSubmitted: (value) async {
ref.read(searchTermStateProvider.notifier).state = ref.read(searchTermStateProvider.notifier).state =
@ -134,15 +135,17 @@ class SearchPage extends HookConsumerWidget {
children: [ children: [
if (tracks.isNotEmpty) if (tracks.isNotEmpty)
Text( Text(
"Songs", context.l10n.songs,
style: theme.textTheme.titleLarge!, style: theme.textTheme.titleLarge!,
), ),
if (searchTrack.isLoadingPage) if (searchTrack.isLoadingPage)
const CircularProgressIndicator() const CircularProgressIndicator()
else if (searchTrack.hasPageError) else if (searchTrack.hasPageError)
Text(searchTrack.errors.lastOrNull Text(
?.toString() ?? searchTrack.errors.lastOrNull
"") ?.toString() ??
"",
)
else else
...tracks.asMap().entries.map((track) { ...tracks.asMap().entries.map((track) {
String duration = String duration =
@ -165,12 +168,16 @@ class SearchPage extends HookConsumerWidget {
20 20
? await showPromptDialog( ? await showPromptDialog(
context: context, context: context,
title: title: context.l10n
"Playing ${currentTrack.name}", .playing_track(
message: currentTrack.name!,
"This will clear the current queue. " ),
"${playlist?.tracks.length ?? 0} tracks will be removed\n" message: context.l10n
"Do you want to continue?", .queue_clear_alert(
playlist?.tracks
.length ??
0,
),
) )
: true; : true;
@ -191,12 +198,12 @@ class SearchPage extends HookConsumerWidget {
: () => searchTrack.fetchNext(), : () => searchTrack.fetchNext(),
child: searchTrack.isRefreshingPage child: searchTrack.isRefreshingPage
? const CircularProgressIndicator() ? const CircularProgressIndicator()
: const Text("Load more"), : Text(context.l10n.load_more),
), ),
), ),
if (playlists.isNotEmpty) if (playlists.isNotEmpty)
Text( Text(
"Playlists", context.l10n.playlists,
style: theme.textTheme.titleLarge!, style: theme.textTheme.titleLarge!,
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
@ -254,7 +261,7 @@ class SearchPage extends HookConsumerWidget {
const SizedBox(height: 20), const SizedBox(height: 20),
if (artists.isNotEmpty) if (artists.isNotEmpty)
Text( Text(
"Artists", context.l10n.artists,
style: theme.textTheme.titleLarge!, style: theme.textTheme.titleLarge!,
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
@ -311,7 +318,7 @@ class SearchPage extends HookConsumerWidget {
const SizedBox(height: 20), const SizedBox(height: 20),
if (albums.isNotEmpty) if (albums.isNotEmpty)
Text( Text(
"Albums", context.l10n.albums,
style: theme.textTheme.titleMedium!, style: theme.textTheme.titleMedium!,
), ),
const SizedBox(height: 10), const SizedBox(height: 10),