diff --git a/.gitignore b/.gitignore
index 119e42e5..83861548 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,7 +18,7 @@
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
-#.vscode/
+.vscode/
# Flutter/Dart/Pub related
**/doc/api/
diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json
deleted file mode 100644
index 6d27ad30..00000000
--- a/.vscode/c_cpp_properties.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "configurations": [
- {
- "name": "Win32",
- "includePath": [
- "${workspaceFolder}/**"
- ],
- "defines": [
- "_DEBUG",
- "UNICODE",
- "_UNICODE"
- ],
- "windowsSdkVersion": "10.0.19041.0",
- "compilerPath": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\bin\\Hostx64\\x64\\cl.exe",
- "cStandard": "c17",
- "cppStandard": "c++17",
- "intelliSenseMode": "windows-msvc-x64",
- "configurationProvider": "ms-vscode.makefile-tools"
- }
- ],
- "version": 4
-}
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
deleted file mode 100644
index deabf1d3..00000000
--- a/.vscode/launch.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "spotube",
- "type": "dart",
- "request": "launch",
- "program": "lib/main.dart",
- },
- {
- "name": "spotube (mobile)",
- "type": "dart",
- "request": "launch",
- "program": "lib/main.dart",
- "args": [
- "--flavor",
- "dev"
- ]
- },
- {
- "name": "spotube (profile)",
- "type": "dart",
- "request": "launch",
- "program": "lib/main.dart",
- "flutterMode": "profile"
- },
- {
- "name": "spotube (release)",
- "type": "dart",
- "request": "launch",
- "program": "lib/main.dart",
- "flutterMode": "release"
- },
- {
- "name": "spotube (mobile) (release)",
- "type": "dart",
- "request": "launch",
- "program": "lib/main.dart",
- "flutterMode": "release",
- "args": [
- "--flavor",
- "dev"
- ]
- }
- ],
- "compounds": []
-}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index 3229a158..00000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "cmake.configureOnOpen": false,
- "cSpell.words": [
- "acousticness",
- "ambiguate",
- "Amoled",
- "Buildless",
- "danceability",
- "fuzzywuzzy",
- "gapless",
- "instrumentalness",
- "Mpris",
- "RGBO",
- "riverpod",
- "Scrobblenaut",
- "shadcn",
- "skeletonizer",
- "songlink",
- "speechiness",
- "Spotube",
- "titlebar",
- "winget"
- ],
- "editor.formatOnSave": true,
- "explorer.fileNesting.enabled": true,
- "explorer.fileNesting.patterns": {
- "pubspec.yaml": "pubspec.lock,analysis_options.yaml,.packages,.flutter-plugins,.flutter-plugins-dependencies,flutter_launcher_icons*.yaml,flutter_native_splash*.yaml",
- "README.md": "LICENSE,CODE_OF_CONDUCT.md,CONTRIBUTING.md,SECURITY.md,CONTRIBUTION.md,CHANGELOG.md,PRIVACY_POLICY.md",
- "*.dart": "${capture}.g.dart,${capture}.freezed.dart"
- },
- "dart.flutterSdkPath": ".fvm/versions/3.29.2"
-}
\ No newline at end of file
diff --git a/.vscode/snippets.code-snippets b/.vscode/snippets.code-snippets
deleted file mode 100644
index 9a18929b..00000000
--- a/.vscode/snippets.code-snippets
+++ /dev/null
@@ -1,170 +0,0 @@
-{
- "PaginatedState": {
- "scope": "dart",
- "prefix": "paginatedState",
- "description": "Generate a PaginatedState",
- "body": [
- "class ${1:Model}State extends PaginatedState<${2:Model}> {",
- " ${1:Model}State({",
- " required super.items,",
- " required super.offset,",
- " required super.limit,",
- " required super.hasMore,",
- " });",
- " ",
- " @override",
- " ${1:Model}State copyWith({",
- " List<${2:Model}>? items,",
- " int? offset,",
- " int? limit,",
- " bool? hasMore,",
- " }) {",
- " return ${1:Model}State(",
- " items: items ?? this.items,",
- " offset: offset ?? this.offset,",
- " limit: limit ?? this.limit,",
- " hasMore: hasMore ?? this.hasMore,",
- " );",
- " }",
- "}"
- ]
- },
- "PaginatedAsyncNotifier": {
- "scope": "dart",
- "prefix": "paginatedAsyncNotifier",
- "description": "Generate a PaginatedAsyncNotifier",
- "body": [
- "class ${1:NotifierName}Notifier extends PaginatedAsyncNotifier<${3:Item}, ${2:Model}State> {",
- " ${1:NotifierName}Notifier() : super();",
- " ",
- " @override",
- " fetch(int offset, int limit) async {",
- " throw UnimplementedError();",
- " }",
- " ",
- " @override",
- " build() async {",
- " throw UnimplementedError();",
- " }",
- "}"
- ]
- },
- "PaginaitedNotifierWithState": {
- "scope": "dart",
- "prefix": "paginatedNotifierWithState",
- "description": "Generate a PaginatedNotifier with PaginatedState",
- "body": [
- "class $1State extends PaginatedState<$2> {",
- " $1State({",
- " required super.items,",
- " required super.offset,",
- " required super.limit,",
- " required super.hasMore,",
- " });",
- " ",
- " @override",
- " $1State copyWith({",
- " List<$2>? items,",
- " int? offset,",
- " int? limit,",
- " bool? hasMore,",
- " }) {",
- " return $1State(",
- " items: items ?? this.items,",
- " offset: offset ?? this.offset,",
- " limit: limit ?? this.limit,",
- " hasMore: hasMore ?? this.hasMore,",
- " );",
- " }",
- "}",
- " ",
- "class $1Notifier",
- " extends PaginatedAsyncNotifier<$2, $1State> {",
- " $1Notifier() : super();",
- " ",
- " @override",
- " fetch(int offset, int limit) async {",
- " throw UnimplementedError();",
- " }",
- " ",
- " @override",
- " build() async {",
- " throw UnimplementedError();",
- " }",
- "}",
- " ",
- "final ${1/(.*)/${1:/camelcase}/}Provider = AsyncNotifierProvider<$1Notifier, $1State>(",
- " ()=> $1Notifier(),",
- ");"
- ]
- },
- "FamilyPaginatedAsyncNotifier": {
- "scope": "dart",
- "prefix": "familyPaginatedAsyncNotifier",
- "description": "Generate a FamilyPaginatedAsyncNotifier",
- "body": [
- "class ${1:NotifierName}Notifier extends FamilyPaginatedAsyncNotifier<${3:Item}, ${2:Model}State, {$4:Arg}> {",
- " ${1:NotifierName}Notifier() : super();",
- " ",
- " @override",
- " fetch(arg, offset, limit) async {",
- " throw UnimplementedError();",
- " }",
- " ",
- " @override",
- " build(arg) async {",
- " throw UnimplementedError();",
- " }",
- "}"
- ]
- },
- "FamilyPaginaitedNotifierWithState": {
- "scope": "dart",
- "prefix": "familyPaginatedNotifierWithState",
- "description": "Generate a FamilyPaginatedAsyncNotifier with PaginatedState",
- "body": [
- "class $1State extends PaginatedState<$2> {",
- " $1State({",
- " required super.items,",
- " required super.offset,",
- " required super.limit,",
- " required super.hasMore,",
- " });",
- " ",
- " @override",
- " $1State copyWith({",
- " List<$2>? items,",
- " int? offset,",
- " int? limit,",
- " bool? hasMore,",
- " }) {",
- " return $1State(",
- " items: items ?? this.items,",
- " offset: offset ?? this.offset,",
- " limit: limit ?? this.limit,",
- " hasMore: hasMore ?? this.hasMore,",
- " );",
- " }",
- "}",
- " ",
- "class $1Notifier",
- " extends FamilyPaginatedAsyncNotifier<$2, $1State, $3> {",
- " $1Notifier() : super();",
- " ",
- " @override",
- " fetch(arg, offset, limit) async {",
- " throw UnimplementedError();",
- " }",
- " ",
- " @override",
- " build(arg) async {",
- " throw UnimplementedError();",
- " }",
- "}",
- " ",
- "final ${1/(.*)/${1:/camelcase}/}Provider = AsyncNotifierProviderFamily<$1Notifier, $1State, $3>(",
- " ()=> $1Notifier(),",
- ");"
- ]
- },
-}
\ No newline at end of file
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
deleted file mode 100644
index f67eb4c6..00000000
--- a/.vscode/tasks.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "version": "2.0.0",
- "tasks": []
-}
\ No newline at end of file
diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md
index d4746a1a..50b698e2 100644
--- a/CONTRIBUTION.md
+++ b/CONTRIBUTION.md
@@ -1,8 +1,8 @@
# Contributing to Spotube
-First off, thanks for taking the time to contribute! ❤️
+First off, thanks for taking the time to contribute!
-All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions. 🎉
+All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions.
> And if you like the project, but just don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about:
>
diff --git a/README.md b/README.md
index b2c388e4..cc01c353 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,11 @@
-
+
An open source, cross-platform Spotify client compatible across multiple platforms
-utilizing Spotify's data API and YouTube, Piped.video or JioSaavn as an audio source,
+utilizing Spotify's data API and YouTube, piped.video or JioSaavn as an audio source,
eliminating the need for Spotify Premium
-Btw it's not just another Electron app 😉
+Btw it's not just another Electron app
@@ -25,27 +25,27 @@ Btw it's not just another Electron app 😉
-## 🌃 Features
+## Features
-- 🚫 No ads, thanks to the use of public & free Spotify and YT Music APIs¹
-- ⬇️ Freely downloadable tracks
-- 🖥️ 📱 Cross-platform support
-- 🪶 Small size & less data usage
-- 🕵️ Anonymous/guest login
-- 🕒 Time synced lyrics
-- ✋ No telemetry, diagnostics or user data collection
-- 🚀 Native performance
-- 📖 Open source/libre software
-- 🔉 Playback control is done locally, not on the server
+- No ads, thanks to the use of public & free Spotify and YT Music APIs¹
+- Freely downloadable tracks
+- Cross-platform support
+- Small size & less data usage
+- Anonymous/guest login
+- Time synced lyrics
+- No telemetry, diagnostics or user data collection
+- Native performance
+- Open source/libre software
+- Playback control is done locally, not on the server
**¹** It is still **recommended** to support creators by engaging with their YouTube channels/Spotify tracks (or preferably by buying their merch/concert tickets/physical media).
-### ❌ Unsupported features
+### Unsupported features
-- 🗣️ **Spotify Shows & Podcasts:** Shows and Podcasts will **never be supported** because the audio tracks are _only_ available on Spotify and accessing them would require Spotify Premium.
-- 🎧 **Spotify Listen Along:** [Coming soon!](https://github.com/KRTirtho/spotube/issues/8)
+- **Spotify Shows & Podcasts:** Shows and Podcasts will **never be supported** because the audio tracks are _only_ available on Spotify and accessing them would require Spotify Premium.
+- **Spotify Listen Along:** [Coming soon!](https://github.com/KRTirtho/spotube/issues/8)
-## 📜 ⬇️ Installation guide
+## Installation guide
New versions usually release every 3-4 months.
This handy table lists all the methods you can use to install Spotube:
@@ -176,17 +176,17 @@ brew install --cask spotube
-### 🔄 Nightly Builds
+### Nightly Builds
Grab the latest nightly builds of Spotube [from the GitHub Releases](https://github.com/KRTirtho/spotube/releases/tag/nightly).
-## 🕳️ Building from source
+## Building from source
You can compile Spotube's source code by [following these instructions](CONTRIBUTION.md#your-first-code-contribution).
-## 👥 The Spotube team
+## The Spotube team
- [Kingkor Roy Tirtho](https://github.com/KRTirtho) - The Founder, Maintainer and Lead Developer
- [RaptaG](https://github.com/RaptaG) - The GitHub Moderator and Community Manager
@@ -195,7 +195,7 @@ You can compile Spotube's source code by [following these instructions](CONTRIBU
- [Piotr Rogowski](https://github.com/karniv00l) - The MacOS Developer
- [Rusty Apple](https://github.com/RustyApple) - The Mysterious Unknown Guy
-## 💼 License
+## License
Spotube is open source and licensed under the [BSD-4-Clause](/LICENSE) License.
@@ -203,9 +203,10 @@ If you are concerned, you can [read the reason of choosing this license](https:/
- [Click to show]
🙏 Services/Package/Plugin Credits
+ [Click to show]
+## Services/Package/Plugin Credits
### Services
1. [Flutter](https://flutter.dev) - Flutter transforms the app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase
@@ -350,4 +351,4 @@ If you are concerned, you can [read the reason of choosing this license](https:/
1. [flutter_new_pipe_extractor](https://github.com/KRTirtho/flutter_new_pipe_extractor) - NewPipeExtractor binding for Flutter (Android only)
-
© Copyright Spotube 2024
+
© Copyright Spotube 2025
diff --git a/assets/bengali-patterns-bg.jpg b/assets/bengali-patterns-bg.jpg
deleted file mode 100644
index 513557a3..00000000
Binary files a/assets/bengali-patterns-bg.jpg and /dev/null differ
diff --git a/assets/spotube-hero-banner.png b/assets/spotube-hero-banner.png
deleted file mode 100644
index c5309b92..00000000
Binary files a/assets/spotube-hero-banner.png and /dev/null differ
diff --git a/assets/spotube-logo-foreground.jpg b/assets/spotube-logo-foreground.jpg
deleted file mode 100644
index 0af774c9..00000000
Binary files a/assets/spotube-logo-foreground.jpg and /dev/null differ
diff --git a/assets/spotube-logo-macos.png b/assets/spotube-logo-macos.png
deleted file mode 100644
index b14a7691..00000000
Binary files a/assets/spotube-logo-macos.png and /dev/null differ
diff --git a/assets/spotube-logo-nightly-notWallpaper.png b/assets/spotube-logo-nightly-notWallpaper.png
new file mode 100644
index 00000000..61ef1c5d
Binary files /dev/null and b/assets/spotube-logo-nightly-notWallpaper.png differ
diff --git a/assets/spotube-logo-stable-notWallpaper.png b/assets/spotube-logo-stable-notWallpaper.png
new file mode 100644
index 00000000..476dda29
Binary files /dev/null and b/assets/spotube-logo-stable-notWallpaper.png differ
diff --git a/assets/spotube-logo-stable-wallpaper.png b/assets/spotube-logo-stable-wallpaper.png
new file mode 100644
index 00000000..c41baabf
Binary files /dev/null and b/assets/spotube-logo-stable-wallpaper.png differ
diff --git a/assets/spotube-logo.bmp b/assets/spotube-logo.bmp
deleted file mode 100644
index c3503e85..00000000
Binary files a/assets/spotube-logo.bmp and /dev/null differ
diff --git a/assets/spotube-logo.ico b/assets/spotube-logo.ico
deleted file mode 100644
index 84906308..00000000
Binary files a/assets/spotube-logo.ico and /dev/null differ
diff --git a/assets/spotube-logo.png b/assets/spotube-logo.png
deleted file mode 100644
index b24a8c23..00000000
Binary files a/assets/spotube-logo.png and /dev/null differ
diff --git a/assets/spotube-logo.svg b/assets/spotube-logo.svg
deleted file mode 100644
index 5cd88f8e..00000000
--- a/assets/spotube-logo.svg
+++ /dev/null
@@ -1,349 +0,0 @@
-
-
diff --git a/assets/spotube-logo_android12.png b/assets/spotube-logo_android12.png
deleted file mode 100644
index f04e25b0..00000000
Binary files a/assets/spotube-logo_android12.png and /dev/null differ
diff --git a/assets/spotube-nightly-logo-foreground.jpg b/assets/spotube-nightly-logo-foreground.jpg
deleted file mode 100644
index a0c849b6..00000000
Binary files a/assets/spotube-nightly-logo-foreground.jpg and /dev/null differ
diff --git a/assets/spotube-nightly-logo.png b/assets/spotube-nightly-logo.png
deleted file mode 100644
index ea7a8b20..00000000
Binary files a/assets/spotube-nightly-logo.png and /dev/null differ
diff --git a/assets/spotube-nightly-logo.svg b/assets/spotube-nightly-logo.svg
deleted file mode 100644
index 7601108e..00000000
--- a/assets/spotube-nightly-logo.svg
+++ /dev/null
@@ -1,359 +0,0 @@
-
-
diff --git a/assets/spotube-nightly-logo_android12.png b/assets/spotube-nightly-logo_android12.png
deleted file mode 100644
index 1a5bf4f1..00000000
Binary files a/assets/spotube-nightly-logo_android12.png and /dev/null differ
diff --git a/assets/spotube-screenshot.png b/assets/spotube-screenshot.png
deleted file mode 100644
index c76d2f8a..00000000
Binary files a/assets/spotube-screenshot.png and /dev/null differ
diff --git a/assets/spotube-tall-capsule.png b/assets/spotube-tall-capsule.png
deleted file mode 100644
index 43fb8229..00000000
Binary files a/assets/spotube-tall-capsule.png and /dev/null differ
diff --git a/assets/spotube-wide-capsule-large.png b/assets/spotube-wide-capsule-large.png
deleted file mode 100644
index 09a93d83..00000000
Binary files a/assets/spotube-wide-capsule-large.png and /dev/null differ
diff --git a/assets/spotube-wide-capsule-small.png b/assets/spotube-wide-capsule-small.png
deleted file mode 100644
index 17566550..00000000
Binary files a/assets/spotube-wide-capsule-small.png and /dev/null differ
diff --git a/assets/spotube_banner.png b/assets/spotube_banner.png
deleted file mode 100644
index b2be4539..00000000
Binary files a/assets/spotube_banner.png and /dev/null differ
diff --git a/assets/success.png b/assets/success.png
deleted file mode 100644
index 65cdba35..00000000
Binary files a/assets/success.png and /dev/null differ
diff --git a/cli/commands/build/linux.dart b/cli/commands/build/linux.dart
index 3fd8a0b9..a1b67700 100644
--- a/cli/commands/build/linux.dart
+++ b/cli/commands/build/linux.dart
@@ -1,9 +1,9 @@
import 'dart:async';
import 'dart:io';
-import 'package:io/io.dart';
import 'package:args/command_runner.dart';
import 'package:intl/intl.dart';
+import 'package:io/io.dart';
import 'package:path/path.dart';
import '../../core/env.dart';
diff --git a/cli/commands/build/windows.dart b/cli/commands/build/windows.dart
index c44ed52f..b5831cf3 100644
--- a/cli/commands/build/windows.dart
+++ b/cli/commands/build/windows.dart
@@ -1,8 +1,9 @@
import 'dart:io';
import 'package:args/command_runner.dart';
-import 'package:path/path.dart';
import 'package:crypto/crypto.dart';
+import 'package:path/path.dart';
+
import 'common.dart';
class WindowsBuildCommand extends Command with BuildCommandCommonSteps {
diff --git a/cli/commands/translated.dart b/cli/commands/translated.dart
index 43c4ea49..26438a23 100644
--- a/cli/commands/translated.dart
+++ b/cli/commands/translated.dart
@@ -1,7 +1,7 @@
import 'dart:async';
-
import 'dart:convert';
import 'dart:io';
+
import 'package:args/command_runner.dart';
import 'package:path/path.dart';
diff --git a/cli/commands/untranslated.dart b/cli/commands/untranslated.dart
index dadcd8b5..7f49c3ee 100644
--- a/cli/commands/untranslated.dart
+++ b/cli/commands/untranslated.dart
@@ -1,7 +1,7 @@
-import 'package:args/command_runner.dart';
import 'dart:convert';
import 'dart:io';
+import 'package:args/command_runner.dart';
import 'package:path/path.dart';
class UntranslatedCommand extends Command {
diff --git a/integration_test/app_test.dart b/integration_test/app_test.dart
index 619844b9..bda3e934 100644
--- a/integration_test/app_test.dart
+++ b/integration_test/app_test.dart
@@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
-
import 'package:spotube/main.dart' as app;
void main() {
diff --git a/lib/collections/assets.gen.dart b/lib/collections/assets.gen.dart
index 004001f2..d5e4f954 100644
--- a/lib/collections/assets.gen.dart
+++ b/lib/collections/assets.gen.dart
@@ -136,8 +136,6 @@ class Assets {
static const AssetGenImage albumPlaceholder =
AssetGenImage('assets/album-placeholder.png');
static const $AssetsBackgroundsGen backgrounds = $AssetsBackgroundsGen();
- static const AssetGenImage bengaliPatternsBg =
- AssetGenImage('assets/bengali-patterns-bg.jpg');
static const AssetGenImage branding = AssetGenImage('assets/branding.png');
static const AssetGenImage emptyBox = AssetGenImage('assets/empty_box.png');
static const AssetGenImage invidious = AssetGenImage('assets/invidious.jpg');
@@ -148,38 +146,12 @@ class Assets {
static const $AssetsPatternsGen patterns = $AssetsPatternsGen();
static const AssetGenImage placeholder =
AssetGenImage('assets/placeholder.png');
- static const AssetGenImage spotubeHeroBanner =
- AssetGenImage('assets/spotube-hero-banner.png');
- static const AssetGenImage spotubeLogoForeground =
- AssetGenImage('assets/spotube-logo-foreground.jpg');
- static const AssetGenImage spotubeLogoMacos =
- AssetGenImage('assets/spotube-logo-macos.png');
- static const AssetGenImage spotubeLogoBmp =
- AssetGenImage('assets/spotube-logo.bmp');
- static const String spotubeLogoIco = 'assets/spotube-logo.ico';
- static const AssetGenImage spotubeLogoPng =
- AssetGenImage('assets/spotube-logo.png');
- static const String spotubeLogoSvg = 'assets/spotube-logo.svg';
- static const AssetGenImage spotubeLogoAndroid12 =
- AssetGenImage('assets/spotube-logo_android12.png');
- static const AssetGenImage spotubeNightlyLogoForeground =
- AssetGenImage('assets/spotube-nightly-logo-foreground.jpg');
- static const AssetGenImage spotubeNightlyLogoPng =
- AssetGenImage('assets/spotube-nightly-logo.png');
- static const String spotubeNightlyLogoSvg = 'assets/spotube-nightly-logo.svg';
- static const AssetGenImage spotubeNightlyLogoAndroid12 =
- AssetGenImage('assets/spotube-nightly-logo_android12.png');
- static const AssetGenImage spotubeScreenshot =
- AssetGenImage('assets/spotube-screenshot.png');
- static const AssetGenImage spotubeTallCapsule =
- AssetGenImage('assets/spotube-tall-capsule.png');
- static const AssetGenImage spotubeWideCapsuleLarge =
- AssetGenImage('assets/spotube-wide-capsule-large.png');
- static const AssetGenImage spotubeWideCapsuleSmall =
- AssetGenImage('assets/spotube-wide-capsule-small.png');
- static const AssetGenImage spotubeBanner =
- AssetGenImage('assets/spotube_banner.png');
- static const AssetGenImage success = AssetGenImage('assets/success.png');
+ static const AssetGenImage spotubeLogoNightlyNotWallpaper =
+ AssetGenImage('assets/spotube-logo-nightly-notWallpaper.png');
+ static const AssetGenImage spotubeLogoStableNotWallpaper =
+ AssetGenImage('assets/spotube-logo-stable-notWallpaper.png');
+ static const AssetGenImage spotubeLogoStableWallpaper =
+ AssetGenImage('assets/spotube-logo-stable-wallpaper.png');
static const $AssetsTutorialGen tutorial = $AssetsTutorialGen();
static const AssetGenImage userPlaceholder =
AssetGenImage('assets/user-placeholder.png');
@@ -188,31 +160,15 @@ class Assets {
static List get values => [
license,
albumPlaceholder,
- bengaliPatternsBg,
branding,
emptyBox,
invidious,
jiosaavn,
likedTracks,
placeholder,
- spotubeHeroBanner,
- spotubeLogoForeground,
- spotubeLogoMacos,
- spotubeLogoBmp,
- spotubeLogoIco,
- spotubeLogoPng,
- spotubeLogoSvg,
- spotubeLogoAndroid12,
- spotubeNightlyLogoForeground,
- spotubeNightlyLogoPng,
- spotubeNightlyLogoSvg,
- spotubeNightlyLogoAndroid12,
- spotubeScreenshot,
- spotubeTallCapsule,
- spotubeWideCapsuleLarge,
- spotubeWideCapsuleSmall,
- spotubeBanner,
- success,
+ spotubeLogoNightlyNotWallpaper,
+ spotubeLogoStableNotWallpaper,
+ spotubeLogoStableWallpaper,
userPlaceholder
];
}
diff --git a/lib/collections/routes.dart b/lib/collections/routes.dart
index 543bc471..612c8b72 100644
--- a/lib/collections/routes.dart
+++ b/lib/collections/routes.dart
@@ -144,10 +144,10 @@ class AppRouter extends RootStackRouter {
),
],
),
- AutoRoute(
- path: "track/:id",
- page: TrackRoute.page,
- ),
+ // AutoRoute(
+ // path: "track/:id",
+ // page: TrackRoute.page,
+ // ),
AutoRoute(
path: "connect",
page: ConnectRoute.page,
@@ -214,22 +214,18 @@ class AppRouter extends RootStackRouter {
AutoRoute(
path: "/mini-player",
page: MiniLyricsRoute.page,
- // parentNavigatorKey: rootNavigatorKey,
),
AutoRoute(
path: "/getting-started",
page: GettingStartedRoute.page,
- // parentNavigatorKey: rootNavigatorKey,
),
AutoRoute(
path: "/login",
page: WebViewLoginRoute.page,
- // parentNavigatorKey: rootNavigatorKey,
),
AutoRoute(
path: "/lastfm-login",
page: LastFMLoginRoute.page,
- // parentNavigatorKey: rootNavigatorKey,
),
];
}
diff --git a/lib/collections/side_bar_tiles.dart b/lib/collections/side_bar_tiles.dart
index 80ca7306..c647c9fb 100644
--- a/lib/collections/side_bar_tiles.dart
+++ b/lib/collections/side_bar_tiles.dart
@@ -38,7 +38,7 @@ List getSidebarTileList(AppLocalizations l10n) => [
SideBarTiles(
id: "lyrics",
pathPrefix: "/lyrics",
- route: LyricsRoute(),
+ route: const LyricsRoute(),
icon: SpotubeIcons.music,
title: l10n.lyrics,
),
diff --git a/lib/collections/spotube_icons.dart b/lib/collections/spotube_icons.dart
index bd9d037c..7e1d00bf 100644
--- a/lib/collections/spotube_icons.dart
+++ b/lib/collections/spotube_icons.dart
@@ -1,6 +1,6 @@
import 'package:fluentui_system_icons/fluentui_system_icons.dart';
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_feather_icons/flutter_feather_icons.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:simple_icons/simple_icons.dart';
abstract class SpotubeIcons {
diff --git a/lib/components/dialogs/playlist_add_track_dialog.dart b/lib/components/dialogs/playlist_add_track_dialog.dart
index 5098bf9d..0e3167fb 100644
--- a/lib/components/dialogs/playlist_add_track_dialog.dart
+++ b/lib/components/dialogs/playlist_add_track_dialog.dart
@@ -1,12 +1,11 @@
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
-
import 'package:spotify/spotify.dart';
-import 'package:spotube/modules/playlist/playlist_create_dialog.dart';
import 'package:spotube/components/image/universal_image.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/image.dart';
+import 'package:spotube/modules/playlist/playlist_create_dialog.dart';
import 'package:spotube/provider/spotify/spotify.dart';
class PlaylistAddTrackDialog extends HookConsumerWidget {
diff --git a/lib/components/dialogs/replace_downloaded_dialog.dart b/lib/components/dialogs/replace_downloaded_dialog.dart
index 3a0f3a1d..1fa26177 100644
--- a/lib/components/dialogs/replace_downloaded_dialog.dart
+++ b/lib/components/dialogs/replace_downloaded_dialog.dart
@@ -1,6 +1,5 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
-
import 'package:spotify/spotify.dart';
import 'package:spotube/extensions/context.dart';
diff --git a/lib/components/dialogs/track_details_dialog.dart b/lib/components/dialogs/track_details_dialog.dart
index bfb4a318..2f3d0cf0 100644
--- a/lib/components/dialogs/track_details_dialog.dart
+++ b/lib/components/dialogs/track_details_dialog.dart
@@ -8,8 +8,8 @@ import 'package:spotube/components/links/hyper_link.dart';
import 'package:spotube/components/links/link_text.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
-import 'package:spotube/services/sourced_track/sourced_track.dart';
import 'package:spotube/extensions/duration.dart';
+import 'package:spotube/services/sourced_track/sourced_track.dart';
class TrackDetailsDialog extends HookWidget {
final Track track;
diff --git a/lib/components/fallbacks/anonymous_fallback.dart b/lib/components/fallbacks/anonymous_fallback.dart
index 293df932..159ffbab 100644
--- a/lib/components/fallbacks/anonymous_fallback.dart
+++ b/lib/components/fallbacks/anonymous_fallback.dart
@@ -5,7 +5,6 @@ import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/extensions/context.dart';
-
import 'package:spotube/provider/authentication/authentication.dart';
import 'package:spotube/utils/platform.dart';
diff --git a/lib/components/heart_button/heart_button.dart b/lib/components/heart_button/heart_button.dart
index 56cb22ab..775b1da6 100644
--- a/lib/components/heart_button/heart_button.dart
+++ b/lib/components/heart_button/heart_button.dart
@@ -1,6 +1,5 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
-
import 'package:spotify/spotify.dart';
import 'package:spotube/components/heart_button/use_track_toggle_like.dart';
import 'package:spotube/extensions/context.dart';
diff --git a/lib/components/inter_scrollbar/inter_scrollbar.dart b/lib/components/inter_scrollbar/inter_scrollbar.dart
index 415ba6da..a7de0249 100644
--- a/lib/components/inter_scrollbar/inter_scrollbar.dart
+++ b/lib/components/inter_scrollbar/inter_scrollbar.dart
@@ -1,6 +1,6 @@
import 'package:draggable_scrollbar/draggable_scrollbar.dart';
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/utils/platform.dart';
class InterScrollbar extends HookWidget {
diff --git a/lib/components/shimmers/shimmer_lyrics.dart b/lib/components/shimmers/shimmer_lyrics.dart
index f8d29722..fd6ce826 100644
--- a/lib/components/shimmers/shimmer_lyrics.dart
+++ b/lib/components/shimmers/shimmer_lyrics.dart
@@ -1,7 +1,5 @@
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
-import 'package:gap/gap.dart';
-
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:skeletonizer/skeletonizer.dart';
class ShimmerLyrics extends HookWidget {
diff --git a/lib/components/titlebar/titlebar_buttons.dart b/lib/components/titlebar/titlebar_buttons.dart
index 30d88508..2de2804e 100644
--- a/lib/components/titlebar/titlebar_buttons.dart
+++ b/lib/components/titlebar/titlebar_buttons.dart
@@ -1,11 +1,10 @@
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/components/hover_builder.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/components/titlebar/titlebar_icon_buttons.dart';
-
import 'package:spotube/hooks/configurators/use_window_listener.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
import 'package:spotube/utils/platform.dart';
diff --git a/lib/components/track_presentation/presentation_actions.dart b/lib/components/track_presentation/presentation_actions.dart
index 4948cf69..58352681 100644
--- a/lib/components/track_presentation/presentation_actions.dart
+++ b/lib/components/track_presentation/presentation_actions.dart
@@ -10,9 +10,9 @@ import 'package:spotube/components/track_presentation/presentation_props.dart';
import 'package:spotube/components/track_presentation/presentation_state.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/models/database/database.dart';
+import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/download_manager_provider.dart';
import 'package:spotube/provider/history/history.dart';
-import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
class TrackPresentationActionsSection extends HookConsumerWidget {
diff --git a/lib/components/track_presentation/presentation_list.dart b/lib/components/track_presentation/presentation_list.dart
index dda7dffa..c0e1c4e6 100644
--- a/lib/components/track_presentation/presentation_list.dart
+++ b/lib/components/track_presentation/presentation_list.dart
@@ -7,9 +7,9 @@ import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/collections/fake.dart';
import 'package:spotube/components/track_presentation/presentation_props.dart';
import 'package:spotube/components/track_presentation/presentation_state.dart';
+import 'package:spotube/components/track_presentation/use_is_user_playlist.dart';
import 'package:spotube/components/track_presentation/use_track_tile_play_callback.dart';
import 'package:spotube/components/track_tile/track_tile.dart';
-import 'package:spotube/components/track_presentation/use_is_user_playlist.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:very_good_infinite_list/very_good_infinite_list.dart';
diff --git a/lib/components/track_presentation/presentation_modifiers.dart b/lib/components/track_presentation/presentation_modifiers.dart
index c46fef3f..6b9d9e74 100644
--- a/lib/components/track_presentation/presentation_modifiers.dart
+++ b/lib/components/track_presentation/presentation_modifiers.dart
@@ -2,10 +2,10 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/components/track_presentation/sort_tracks_dropdown.dart';
import 'package:spotube/components/track_presentation/presentation_actions.dart';
import 'package:spotube/components/track_presentation/presentation_props.dart';
import 'package:spotube/components/track_presentation/presentation_state.dart';
+import 'package:spotube/components/track_presentation/sort_tracks_dropdown.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/hooks/controllers/use_shadcn_text_editing_controller.dart';
diff --git a/lib/components/track_presentation/presentation_top.dart b/lib/components/track_presentation/presentation_top.dart
index 8da2f51c..5ec89d6e 100644
--- a/lib/components/track_presentation/presentation_top.dart
+++ b/lib/components/track_presentation/presentation_top.dart
@@ -144,7 +144,7 @@ class TrackPresentationTopSection extends HookConsumerWidget {
return SurfaceCard(
child: Text(
context.l10n
- .copied_shareurl_to_clipboard(options.shareUrl!),
+ .copied_share_url_to_clipboard(options.shareUrl!),
).small(),
);
},
diff --git a/lib/components/track_presentation/sort_tracks_dropdown.dart b/lib/components/track_presentation/sort_tracks_dropdown.dart
index 0a07cbad..d2976a2c 100644
--- a/lib/components/track_presentation/sort_tracks_dropdown.dart
+++ b/lib/components/track_presentation/sort_tracks_dropdown.dart
@@ -1,8 +1,8 @@
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/pages/library/user_local_tracks/user_local_tracks.dart';
import 'package:spotube/components/adaptive/adaptive_pop_sheet_list.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/pages/library/user_local_tracks/user_local_tracks.dart';
class SortTracksDropdown extends StatelessWidget {
final SortBy? value;
diff --git a/lib/components/track_presentation/track_presentation.dart b/lib/components/track_presentation/track_presentation.dart
index 47089bd6..e15afb45 100644
--- a/lib/components/track_presentation/track_presentation.dart
+++ b/lib/components/track_presentation/track_presentation.dart
@@ -4,9 +4,9 @@ import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/components/track_presentation/presentation_list.dart';
+import 'package:spotube/components/track_presentation/presentation_modifiers.dart';
import 'package:spotube/components/track_presentation/presentation_props.dart';
import 'package:spotube/components/track_presentation/presentation_top.dart';
-import 'package:spotube/components/track_presentation/presentation_modifiers.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/utils/platform.dart';
diff --git a/lib/components/track_presentation/use_action_callbacks.dart b/lib/components/track_presentation/use_action_callbacks.dart
index 0012594a..18943cd4 100644
--- a/lib/components/track_presentation/use_action_callbacks.dart
+++ b/lib/components/track_presentation/use_action_callbacks.dart
@@ -5,7 +5,6 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/components/dialogs/select_device_dialog.dart';
import 'package:spotube/components/track_presentation/presentation_props.dart';
-
import 'package:spotube/models/connect/connect.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/connect/connect.dart';
diff --git a/lib/components/track_presentation/use_track_tile_play_callback.dart b/lib/components/track_presentation/use_track_tile_play_callback.dart
index b519f781..2a4cf3e2 100644
--- a/lib/components/track_presentation/use_track_tile_play_callback.dart
+++ b/lib/components/track_presentation/use_track_tile_play_callback.dart
@@ -1,12 +1,10 @@
-import 'package:hooks_riverpod/hooks_riverpod.dart';
-
import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/components/dialogs/select_device_dialog.dart';
import 'package:spotube/components/track_presentation/presentation_props.dart';
import 'package:spotube/components/track_presentation/presentation_state.dart';
import 'package:spotube/extensions/list.dart';
-
import 'package:spotube/models/connect/connect.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/connect/connect.dart';
diff --git a/lib/components/track_tile/track_options.dart b/lib/components/track_tile/track_options.dart
index 05e67d02..56f1d34a 100644
--- a/lib/components/track_tile/track_options.dart
+++ b/lib/components/track_tile/track_options.dart
@@ -3,10 +3,8 @@ import 'dart:io';
import 'package:auto_route/auto_route.dart';
import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
-
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotify/spotify.dart' hide Offset;
import 'package:spotube/collections/assets.gen.dart';
@@ -24,13 +22,12 @@ import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/image.dart';
import 'package:spotube/models/database/database.dart';
import 'package:spotube/models/local_track.dart';
+import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/authentication/authentication.dart';
import 'package:spotube/provider/blacklist_provider.dart';
import 'package:spotube/provider/download_manager_provider.dart';
import 'package:spotube/provider/local_tracks/local_tracks_provider.dart';
-import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/spotify/spotify.dart';
-
import 'package:url_launcher/url_launcher_string.dart';
enum TrackOptionValue {
diff --git a/lib/components/track_tile/track_tile.dart b/lib/components/track_tile/track_tile.dart
index 524575e5..a8d3c33e 100644
--- a/lib/components/track_tile/track_tile.dart
+++ b/lib/components/track_tile/track_tile.dart
@@ -3,7 +3,6 @@ import 'dart:async';
import 'package:auto_route/auto_route.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:skeletonizer/skeletonizer.dart';
diff --git a/lib/extensions/duration.dart b/lib/extensions/duration.dart
index ff670b1a..963833fb 100644
--- a/lib/extensions/duration.dart
+++ b/lib/extensions/duration.dart
@@ -1,5 +1,5 @@
-import 'package:duration/locale.dart';
import 'package:duration/duration.dart';
+import 'package:duration/locale.dart';
extension DurationToHumanReadableString on Duration {
String toHumanReadableString({padZero = true}) {
diff --git a/lib/extensions/image.dart b/lib/extensions/image.dart
index ee78653a..240a8d27 100644
--- a/lib/extensions/image.dart
+++ b/lib/extensions/image.dart
@@ -1,7 +1,7 @@
+import 'package:collection/collection.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/utils/primitive_utils.dart';
-import 'package:collection/collection.dart';
enum ImagePlaceholder {
albumArt,
diff --git a/lib/extensions/string.dart b/lib/extensions/string.dart
index 94123fe3..488f82ed 100644
--- a/lib/extensions/string.dart
+++ b/lib/extensions/string.dart
@@ -1,5 +1,5 @@
-import 'package:html_unescape/html_unescape.dart';
import 'package:html/parser.dart';
+import 'package:html_unescape/html_unescape.dart';
final htmlEscape = HtmlUnescape();
diff --git a/lib/generated_plugin_registrant.dart b/lib/generated_plugin_registrant.dart
index a25a1f5f..68940c8d 100644
--- a/lib/generated_plugin_registrant.dart
+++ b/lib/generated_plugin_registrant.dart
@@ -8,11 +8,10 @@
import 'package:audio_service_web/audio_service_web.dart';
import 'package:audio_session/audio_session_web.dart';
+import 'package:flutter_web_plugins/flutter_web_plugins.dart';
import 'package:shared_preferences_web/shared_preferences_web.dart';
import 'package:url_launcher_web/url_launcher_web.dart';
-import 'package:flutter_web_plugins/flutter_web_plugins.dart';
-
// ignore: public_member_api_docs
void registerPlugins(Registrar registrar) {
AudioServiceWeb.registerWith(registrar);
diff --git a/lib/hooks/configurators/use_close_behavior.dart b/lib/hooks/configurators/use_close_behavior.dart
index 2bdc65ef..5d30fa0a 100644
--- a/lib/hooks/configurators/use_close_behavior.dart
+++ b/lib/hooks/configurators/use_close_behavior.dart
@@ -1,11 +1,10 @@
import 'dart:io';
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:local_notifier/local_notifier.dart';
import 'package:spotube/hooks/configurators/use_window_listener.dart';
import 'package:spotube/models/database/database.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
-
-import 'package:local_notifier/local_notifier.dart';
import 'package:spotube/utils/platform.dart';
import 'package:window_manager/window_manager.dart';
diff --git a/lib/hooks/configurators/use_deep_linking.dart b/lib/hooks/configurators/use_deep_linking.dart
index a141a21d..5384ec68 100644
--- a/lib/hooks/configurators/use_deep_linking.dart
+++ b/lib/hooks/configurators/use_deep_linking.dart
@@ -2,12 +2,12 @@ import 'dart:async';
import 'package:app_links/app_links.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:flutter_sharing_intent/flutter_sharing_intent.dart';
+import 'package:flutter_sharing_intent/model/sharing_file.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotube/collections/routes.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/provider/spotify/spotify.dart';
-import 'package:flutter_sharing_intent/flutter_sharing_intent.dart';
-import 'package:flutter_sharing_intent/model/sharing_file.dart';
import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/utils/platform.dart';
diff --git a/lib/hooks/configurators/use_disable_battery_optimizations.dart b/lib/hooks/configurators/use_disable_battery_optimizations.dart
index 4aa51b74..1afb0ed4 100644
--- a/lib/hooks/configurators/use_disable_battery_optimizations.dart
+++ b/lib/hooks/configurators/use_disable_battery_optimizations.dart
@@ -1,5 +1,4 @@
import 'package:disable_battery_optimization/disable_battery_optimization.dart';
-
import 'package:spotube/hooks/utils/use_async_effect.dart';
import 'package:spotube/services/kv_store/kv_store.dart';
import 'package:spotube/utils/platform.dart';
diff --git a/lib/hooks/configurators/use_endless_playback.dart b/lib/hooks/configurators/use_endless_playback.dart
index b86a4865..2a6b00ce 100644
--- a/lib/hooks/configurators/use_endless_playback.dart
+++ b/lib/hooks/configurators/use_endless_playback.dart
@@ -1,12 +1,12 @@
-import 'package:spotube/services/logger/logger.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:spotify/spotify.dart';
-import 'package:spotube/provider/authentication/authentication.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
+import 'package:spotube/provider/authentication/authentication.dart';
import 'package:spotube/provider/spotify/spotify.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
import 'package:spotube/services/audio_player/audio_player.dart';
+import 'package:spotube/services/logger/logger.dart';
void useEndlessPlayback(WidgetRef ref) {
final auth = ref.watch(authenticationProvider);
diff --git a/lib/hooks/configurators/use_fix_window_stretching.dart b/lib/hooks/configurators/use_fix_window_stretching.dart
index b94098ab..d03d62b6 100644
--- a/lib/hooks/configurators/use_fix_window_stretching.dart
+++ b/lib/hooks/configurators/use_fix_window_stretching.dart
@@ -1,5 +1,5 @@
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/utils/platform.dart';
import 'package:window_manager/window_manager.dart';
diff --git a/lib/hooks/configurators/use_get_storage_perms.dart b/lib/hooks/configurators/use_get_storage_perms.dart
index f860aaa7..1719c52b 100644
--- a/lib/hooks/configurators/use_get_storage_perms.dart
+++ b/lib/hooks/configurators/use_get_storage_perms.dart
@@ -1,5 +1,4 @@
import 'package:device_info_plus/device_info_plus.dart';
-
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:permission_handler/permission_handler.dart';
diff --git a/lib/hooks/configurators/use_has_touch.dart b/lib/hooks/configurators/use_has_touch.dart
index 5ce309b8..a7adf302 100644
--- a/lib/hooks/configurators/use_has_touch.dart
+++ b/lib/hooks/configurators/use_has_touch.dart
@@ -1,6 +1,6 @@
import 'package:flutter/gestures.dart';
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/utils/platform.dart';
bool useHasTouch() {
diff --git a/lib/hooks/configurators/use_window_listener.dart b/lib/hooks/configurators/use_window_listener.dart
index 5977ea8e..6229c827 100644
--- a/lib/hooks/configurators/use_window_listener.dart
+++ b/lib/hooks/configurators/use_window_listener.dart
@@ -1,5 +1,4 @@
import 'package:flutter/widgets.dart';
-
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:spotube/utils/platform.dart';
import 'package:window_manager/window_manager.dart';
diff --git a/lib/hooks/controllers/use_auto_scroll_controller.dart b/lib/hooks/controllers/use_auto_scroll_controller.dart
index befc4351..ff526539 100644
--- a/lib/hooks/controllers/use_auto_scroll_controller.dart
+++ b/lib/hooks/controllers/use_auto_scroll_controller.dart
@@ -1,6 +1,6 @@
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:scroll_to_index/scroll_to_index.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
/// Creates [AutoScrollController] that will be disposed automatically.
///
diff --git a/lib/hooks/controllers/use_package_info.dart b/lib/hooks/controllers/use_package_info.dart
index 07b53af6..14f0841b 100644
--- a/lib/hooks/controllers/use_package_info.dart
+++ b/lib/hooks/controllers/use_package_info.dart
@@ -1,6 +1,6 @@
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:package_info_plus/package_info_plus.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
PackageInfo usePackageInfo({
/// The app name. `CFBundleDisplayName` on iOS, `application/label` on Android.
diff --git a/lib/hooks/utils/use_breakpoint_value.dart b/lib/hooks/utils/use_breakpoint_value.dart
index 74b2f860..05edd569 100644
--- a/lib/hooks/utils/use_breakpoint_value.dart
+++ b/lib/hooks/utils/use_breakpoint_value.dart
@@ -1,5 +1,5 @@
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/extensions/constrains.dart';
T useBreakpointValue({
diff --git a/lib/hooks/utils/use_brightness_value.dart b/lib/hooks/utils/use_brightness_value.dart
index 64e3f27c..2ff44f10 100644
--- a/lib/hooks/utils/use_brightness_value.dart
+++ b/lib/hooks/utils/use_brightness_value.dart
@@ -1,6 +1,6 @@
import 'package:flutter/services.dart';
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
T useBrightnessValue(
T lightValue,
diff --git a/lib/hooks/utils/use_custom_status_bar_color.dart b/lib/hooks/utils/use_custom_status_bar_color.dart
index f34ae7a8..e4eb00eb 100644
--- a/lib/hooks/utils/use_custom_status_bar_color.dart
+++ b/lib/hooks/utils/use_custom_status_bar_color.dart
@@ -1,6 +1,6 @@
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
VoidCallback useCustomStatusBarColor(
Color color,
diff --git a/lib/hooks/utils/use_palette_color.dart b/lib/hooks/utils/use_palette_color.dart
index c70bcf72..e82c9889 100644
--- a/lib/hooks/utils/use_palette_color.dart
+++ b/lib/hooks/utils/use_palette_color.dart
@@ -1,8 +1,8 @@
import 'package:flutter/services.dart';
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:palette_generator/palette_generator.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/components/image/universal_image.dart';
final _paletteColorState = StateProvider(
diff --git a/lib/l10n/app_ar.arb b/lib/l10n/app_ar.arb
index f4cbde9b..dec36071 100644
--- a/lib/l10n/app_ar.arb
+++ b/lib/l10n/app_ar.arb
@@ -90,7 +90,7 @@
"mini_player": "مشغل مصغر",
"slide_to_seek": "قم بالتمرير للبحث للأمام أو للخلف",
"shuffle_playlist": "قائمة تشغيل عشوائية",
- "unshuffle_playlist": "إلغاء ترتيب قائمة التشغيل",
+ "not_shuffle_playlist": "إلغاء ترتيب قائمة التشغيل",
"previous_track": "المقطوعة السابقة",
"next_track": "مقطوعة جديدة",
"pause_playback": "إيقاف التشغيل مؤقتًا",
@@ -175,7 +175,7 @@
"first_go_to": "أولا، اذهب إلى",
"login_if_not_logged_in": "وتسجيل الدخول/الاشتراك إذا لم تقم بتسجيل الدخول",
"step_2": "الخطوة 2",
- "step_2_steps": "1. بمجرد تسجيل الدخول، اضغط على F12 أو انقر بزر الماوس الأيمن > فحص لفتح أدوات تطوير المتصفح.\n2. ثم انتقل إلى علامة التبويب \"التطبيقات\" (Chrome وEdge وBrave وما إلى ذلك.) أو علامة التبويب \"التخزين\" (Firefox وPalemoon وما إلى ذلك..)\n3. انتقل إلى قسم \"ملفات تعريف الارتباط\" ثم القسم الفرعي \"https://accounts.spotify.com\"",
+ "step_2_steps": "1. بمجرد تسجيل الدخول، اضغط على F12 أو انقر بزر الماوس الأيمن > فحص لفتح أدوات تطوير المتصفح.\n2. ثم انتقل إلى علامة التبويب \"التطبيقات\" (Chrome وEdge وBrave وما إلى ذلك.) أو علامة التبويب \"التخزين\" (Firefox وPale Moon وما إلى ذلك..)\n3. انتقل إلى قسم \"ملفات تعريف الارتباط\" ثم القسم الفرعي \"https://accounts.spotify.com\"",
"step_3": "الخطوة 3",
"success_emoji": "نجاح 🥳",
"success_message": "لقد قمت الآن بتسجيل الدخول بنجاح باستخدام حساب Spotify الخاص بك. عمل جيد يا صديقي!",
@@ -196,13 +196,13 @@
"add_genres": "أضف الأنواع",
"country": "دولة",
"number_of_tracks_generate": "عدد المسارات المقطوعات المراد توليدها",
- "acousticness": "صوتية",
- "danceability": "قدرة على الرقص",
+ "not_acoustic": "صوتية",
+ "dance_ability": "قدرة على الرقص",
"energy": "طاقة",
- "instrumentalness": "نفعية",
+ "not_instrumental": "نفعية",
"liveness": "حيوية",
"loudness": "بريق",
- "speechiness": "كلام",
+ "talkative": "كلام",
"valence": "تكافؤ",
"popularity": "شعبية",
"key": "مفتاح",
@@ -241,7 +241,7 @@
"sort_newest": "الترتيب حسب الأقدم",
"sort_oldest": "الترتيب حسب الأقدم",
"sleep_timer": "مؤقت النوم",
- "mins": "{minutes} دقائق",
+ "minutes": "{minutes} دقائق",
"hours": "{hours} ساعات",
"hour": "{hours} ساعة",
"custom_hours": "ساعات مخصصة",
@@ -252,7 +252,7 @@
"audio_source": "مصدر الصوت",
"ok": "حسسناً",
"failed_to_encrypt": "فشل في التشفير",
- "encryption_failed_warning": "يستخدم Spotube التشفير لتخزين بياناتك بشكل آمن. لكنها فشلت في القيام بذلك. لذلك سيعود الأمر إلى التخزين غير الآمن\nإذا كنت تستخدم Linux، فيرجى التأكد من تثبيت أي خدمة سرية (gnome-keyring، kde-wallet، keepassxc، إلخ)",
+ "encryption_failed_warning": "يستخدم Spotube التشفير لتخزين بياناتك بشكل آمن. لكنها فشلت في القيام بذلك. لذلك سيعود الأمر إلى التخزين غير الآمن\nإذا كنت تستخدم Linux، فيرجى التأكد من تثبيت أي خدمة سرية (gnome-keyring، kde-wallet، KeePassXC، إلخ)",
"querying_info": "جارٍ الاستعلام عن معلومات...",
"piped_api_down": "Piped API معطلة",
"piped_down_error_instructions": "المثيل الموجه {pipedInstance} معطل حاليًا\n\nيمكنك إما تغيير المثيل أو تغيير 'نوع API' إلى YouTube API الرسمي\n\nتأكد من إعادة تشغيل التطبيق بعد التغيير",
@@ -370,9 +370,9 @@
"streamed_songs": "الأغاني المذاعة",
"count_streams": "{count} بث",
"owned_by_you": "مملوك لك",
- "copied_shareurl_to_clipboard": "تم نسخ {shareUrl} إلى الحافظة",
- "spotify_hipotetical_calculation": "*هذا محسوب بناءً على الدفع لكل بث من سبوتيفاي\nبقيمة 0.003 إلى 0.005 دولار. هذا حساب افتراضي\nلإعطاء المستخدم فكرة عن المبلغ الذي\nكان سيدفعه للفنانين إذا كانوا قد استمعوا\nإلى أغنيتهم على سبوتيفاي.",
- "count_mins": "{minutes} دقيقة",
+ "copied_share_url_to_clipboard": "تم نسخ {shareUrl} إلى الحافظة",
+ "spotify_hypothetical_calculation": "*هذا محسوب بناءً على الدفع لكل بث من سبوتيفاي\nبقيمة 0.003 إلى 0.005 دولار. هذا حساب افتراضي\nلإعطاء المستخدم فكرة عن المبلغ الذي\nكان سيدفعه للفنانين إذا كانوا قد استمعوا\nإلى أغنيتهم على سبوتيفاي.",
+ "count_minutes": "{minutes} دقيقة",
"summary_minutes": "الدقائق",
"summary_listened_to_music": "استمعت إلى الموسيقى",
"summary_songs": "أغاني",
diff --git a/lib/l10n/app_bn.arb b/lib/l10n/app_bn.arb
index cc2971ce..b5bad6a9 100644
--- a/lib/l10n/app_bn.arb
+++ b/lib/l10n/app_bn.arb
@@ -88,7 +88,7 @@
"mini_player": "মিনি প্লেয়ার",
"slide_to_seek": "গান সামনে বা পিছনে নিতে স্লাইড করুন",
"shuffle_playlist": "প্লেলিস্ট এলোমেলো করুন",
- "unshuffle_playlist": "প্লেলিস্ট আগের মতো করুন",
+ "not_shuffle_playlist": "প্লেলিস্ট আগের মতো করুন",
"previous_track": "আগের গানের ট্র্যাক",
"next_track": "পরের গানের ট্র্যাক",
"pause_playback": "গান বন্ধ করুন",
@@ -173,7 +173,7 @@
"first_go_to": "প্রথমে যান",
"login_if_not_logged_in": "এবং যদি আপনি লগইন/সাইন-আপ না থাকেন তবে লগইন/সাইন-আপ করুন",
"step_2": "ধাপ 2",
- "step_2_steps": "১. একবার আপনি লগ ইন করলে, ব্রাউজার ডেভটুল খুলতে F12 বা মাউসের রাইট ক্লিক > \"Inspect to open Browser DevTools\" টিপুন।\n২. তারপর \"Application\" ট্যাবে যান (Chrome, Edge, Brave etc..) অথবা \"Storage\" Tab (Firefox, Palemoon etc..)\n৩. \"Cookies \" বিভাগে যান তারপর \"https://accounts.spotify.com\" উপবিভাগে যান",
+ "step_2_steps": "১. একবার আপনি লগ ইন করলে, ব্রাউজার ডেভটুল খুলতে F12 বা মাউসের রাইট ক্লিক > \"Inspect to open Browser DevTools\" টিপুন।\n২. তারপর \"Application\" ট্যাবে যান (Chrome, Edge, Brave etc..) অথবা \"Storage\" Tab (Firefox, Pale Moon etc..)\n৩. \"Cookies \" বিভাগে যান তারপর \"https://accounts.spotify.com\" উপবিভাগে যান",
"step_3": "ধাপ 3",
"success_emoji": "আমরা সফল🥳",
"success_message": "এখন আপনি সফলভাবে আপনার Spotify অ্যাকাউন্ট দিয়ে লগ ইন করেছেন। সাধুভাত আপনাকে",
@@ -194,13 +194,13 @@
"add_genres": "গানের ধরণ যুক্ত করুন",
"country": "দেশ",
"number_of_tracks_generate": "উত্পাদিত ট্র্যাকের সংখ্যা",
- "acousticness": "অধ্যাত্মিকতা",
- "danceability": "নৃত্যমূলকতা",
+ "not_acoustic": "অধ্যাত্মিকতা",
+ "dance_ability": "নৃত্যমূলকতা",
"energy": "শক্তি",
- "instrumentalness": "সাধারণতা",
+ "not_instrumental": "সাধারণতা",
"liveness": "জীবনমুক্ততা",
"loudness": "স্বরের উচ্চতা",
- "speechiness": "বক্তব্যমূলকতা",
+ "talkative": "বক্তব্যমূলকতা",
"valence": "সন্তোষমূলকতা",
"popularity": "জনপ্রিয়তা",
"key": "কী",
@@ -239,7 +239,7 @@
"sort_newest": "নতুনতম অনুসারে সাজান",
"sort_oldest": "পুরানোতম অনুসারে সাজান",
"sleep_timer": "স্লীপ টাইমার",
- "mins": "{minutes} মিনিট",
+ "minutes": "{minutes} মিনিট",
"hours": "{hours} ঘন্টা",
"hour": "{hours} ঘন্টা",
"custom_hours": "কাস্টম ঘন্টা",
@@ -250,7 +250,7 @@
"audio_source": "অডিও উৎস",
"ok": "ঠিক আছে",
"failed_to_encrypt": "এনক্রিপ্ট করা ব্যর্থ হয়েছে",
- "encryption_failed_warning": "Spotube আপনার তথ্যগুলি নিরাপদভাবে স্টোর করতে এনক্রিপশন ব্যবহার করে। কিন্তু এটি ব্যর্থ হয়েছে। তাই এটি অনিরাপদ স্টোরে ফলফল হবে\nযদি আপনি Linux ব্যবহার করেন, তবে দয়া করে নিশ্চিত হউন যে আপনার কোনও সিক্রেট-সার্ভিস gnome-keyring, kde-wallet, keepassxc ইত্যাদি ইনস্টল করা আছে",
+ "encryption_failed_warning": "Spotube আপনার তথ্যগুলি নিরাপদভাবে স্টোর করতে এনক্রিপশন ব্যবহার করে। কিন্তু এটি ব্যর্থ হয়েছে। তাই এটি অনিরাপদ স্টোরে ফলফল হবে\nযদি আপনি Linux ব্যবহার করেন, তবে দয়া করে নিশ্চিত হউন যে আপনার কোনও সিক্রেট-সার্ভিস gnome-keyring, kde-wallet, KeePassXC ইত্যাদি ইনস্টল করা আছে",
"querying_info": "তথ্য অনুসন্ধান করা হচ্ছে",
"piped_api_down": "পাইপড API ডাউন আছে",
"piped_down_error_instructions": "বর্তমানে পাইপড ইনস্ট্যান্স {pipedInstance} ডাউন আছে\n\nইনস্ট্যান্স পরিবর্তন করুন অথবা 'API টাইপ' পরিবর্তন করুন অফিসিয়াল ইউটিউব API হতে\n\nপরিবর্তনের পরে অ্যাপটি পুনরায় চালানোর নিশ্চিত করুন",
@@ -370,9 +370,9 @@
"streamed_songs": "স্ট্রিম করা গান",
"count_streams": "{count} বার স্ট্রিম",
"owned_by_you": "আপনার মালিকানাধীন",
- "copied_shareurl_to_clipboard": "{shareUrl} ক্লিপবোর্ডে কপি করা হয়েছে",
- "spotify_hipotetical_calculation": "*এটি স্পোটিফাইয়ের প্রতি স্ট্রিম\n$0.003 থেকে $0.005 পেআউটের ভিত্তিতে গণনা করা হয়েছে। এটি একটি ধারণাগত\nগণনা ব্যবহারকারীদেরকে জানাতে দেয় যে কত টাকা\nতারা শিল্পীদের দিতো যদি তারা স্পোটিফাইতে\nতাদের গান শুনতেন।",
- "count_mins": "{minutes} মিনিট",
+ "copied_share_url_to_clipboard": "{shareUrl} ক্লিপবোর্ডে কপি করা হয়েছে",
+ "spotify_hypothetical_calculation": "*এটি স্পোটিফাইয়ের প্রতি স্ট্রিম\n$0.003 থেকে $0.005 পেআউটের ভিত্তিতে গণনা করা হয়েছে। এটি একটি ধারণাগত\nগণনা ব্যবহারকারীদেরকে জানাতে দেয় যে কত টাকা\nতারা শিল্পীদের দিতো যদি তারা স্পোটিফাইতে\nতাদের গান শুনতেন।",
+ "count_minutes": "{minutes} মিনিট",
"summary_minutes": "মিনিট",
"summary_listened_to_music": "সঙ্গীত শুনেছেন",
"summary_songs": "গান",
diff --git a/lib/l10n/app_ca.arb b/lib/l10n/app_ca.arb
index 7cb007c4..a89b24c5 100644
--- a/lib/l10n/app_ca.arb
+++ b/lib/l10n/app_ca.arb
@@ -88,7 +88,7 @@
"mini_player": "Reproductor Petit",
"slide_to_seek": "Lliscar per cercar endavant o endarrere",
"shuffle_playlist": "Mesclar la llista de reproducció",
- "unshuffle_playlist": "No mesclar la llista de reproducció",
+ "not_shuffle_playlist": "No mesclar la llista de reproducció",
"previous_track": "Cançó anterior",
"next_track": "Canço següent",
"pause_playback": "Pausar reproducció",
@@ -173,7 +173,7 @@
"first_go_to": "Primer, vagi a",
"login_if_not_logged_in": "i iniciï sessió/registri el seu compte si no ho ha fet encara",
"step_2": "Pas 2",
- "step_2_steps": "1. Una vegada que hagi iniciat sessió, premi F12 o faci clic dret amb el ratolí > Inspeccionar per obrir les eines de desenvolulpador del navegador.\n2. Després vagi a la pestanya \"Application\" (Chrome, Edge, Brave, etc.) o \"Storage\" (Firefox, Palemoon, etc.)\n3. Vagi a la secció \"Cookies\" i després a la subsecció \"https://accounts.spotify.com\"",
+ "step_2_steps": "1. Una vegada que hagi iniciat sessió, premi F12 o faci clic dret amb el ratolí > Inspeccionar per obrir les eines de desenvolulpador del navegador.\n2. Després vagi a la pestanya \"Application\" (Chrome, Edge, Brave, etc.) o \"Storage\" (Firefox, Pale Moon, etc.)\n3. Vagi a la secció \"Cookies\" i després a la subsecció \"https://accounts.spotify.com\"",
"step_3": "Pas 3",
"success_emoji": "Èxit! 🥳",
"success_message": "Ara has iniciat sessió amb èxit al teu compte de Spotify. Bona feina!",
@@ -194,13 +194,13 @@
"add_genres": "Afegir Gèneres",
"country": "País",
"number_of_tracks_generate": "Número de cançons a generar",
- "acousticness": "Acústica",
- "danceability": "Ballabilitat",
+ "not_acoustic": "Acústica",
+ "dance_ability": "Ballabilitat",
"energy": "Energia",
- "instrumentalness": "Instrumental",
+ "not_instrumental": "Instrumental",
"liveness": "En viu",
"loudness": "Sonoritat",
- "speechiness": "Parla",
+ "talkative": "Parla",
"valence": "Valencia",
"popularity": "Popularidad",
"key": "To",
@@ -239,7 +239,7 @@
"sort_newest": "Ordenar per més noves",
"sort_oldest": "Ordenar per més antigues",
"sleep_timer": "Temporitzador d'apagat",
- "mins": "{minutes} minuts",
+ "minutes": "{minutes} minuts",
"hours": "{hours} hores",
"hour": "{hours} hora",
"custom_hours": "Hores personalitzades",
@@ -250,7 +250,7 @@
"audio_source": "Font d'àudio",
"ok": "OK",
"failed_to_encrypt": "Error al xifrar",
- "encryption_failed_warning": "Spotube utilitza el xifrado per emmagatzemar les seves dades de forma segura. Però ha fallat. Per tant, tornarà a un emmagatzament no segur\nSi estè utilizant Linux, asseguri's de tenir instal·lats els serveis secrets com gnome-keyring, kde-wallet i keepassxc",
+ "encryption_failed_warning": "Spotube utilitza el xifrado per emmagatzemar les seves dades de forma segura. Però ha fallat. Per tant, tornarà a un emmagatzament no segur\nSi estè utilizant Linux, asseguri's de tenir instal·lats els serveis secrets com gnome-keyring, kde-wallet i KeePassXC",
"piped_api_down": "La API de Piped no està operativa",
"piped_down_error_instructions": "La instància de Piped {pipedInstance} no està operativa en aquest moment\n\nCanvieu la instància o canvieu el 'Tipus d'API' a l'API oficial de YouTube\n\nAssegureu-vos de reiniciar l'aplicació després del canvi",
"you_are_offline": "Actualment no teniu connexió a internet",
@@ -370,9 +370,9 @@
"streamed_songs": "cançons reproduïdes",
"count_streams": "{count} reproduccions",
"owned_by_you": "De la teva propietat",
- "copied_shareurl_to_clipboard": "S'ha copiat {shareUrl} al porta-retalls",
- "spotify_hipotetical_calculation": "*Això es calcula basant-se en els\npagaments per reproducció de Spotify de $0.003 a $0.005.\nAquest és un càlcul hipotètic per\ndonar als usuaris una idea de quant\nhaurien pagat als artistes si haguessin escoltat\nla seva cançó a Spotify.",
- "count_mins": "{minutes} minuts",
+ "copied_share_url_to_clipboard": "S'ha copiat {shareUrl} al porta-retalls",
+ "spotify_hypothetical_calculation": "*Això es calcula basant-se en els\npagaments per reproducció de Spotify de $0.003 a $0.005.\nAquest és un càlcul hipotètic per\ndonar als usuaris una idea de quant\nhaurien pagat als artistes si haguessin escoltat\nla seva cançó a Spotify.",
+ "count_minutes": "{minutes} minuts",
"summary_minutes": "minuts",
"summary_listened_to_music": "has escoltat música",
"summary_songs": "cançons",
diff --git a/lib/l10n/app_cs.arb b/lib/l10n/app_cs.arb
index a6fdf25c..84f4ca56 100644
--- a/lib/l10n/app_cs.arb
+++ b/lib/l10n/app_cs.arb
@@ -91,7 +91,7 @@
"mini_player": "Mini přehrávač",
"slide_to_seek": "Táhněte pro posunutí vpřed nebo vzad",
"shuffle_playlist": "Zamíchat playlist",
- "unshuffle_playlist": "Zrušit zamíchání playlistu",
+ "not_shuffle_playlist": "Zrušit zamíchání playlistu",
"previous_track": "Předchozí skladba",
"next_track": "Další skladba",
"pause_playback": "Pozastavit přehrávání",
@@ -176,7 +176,7 @@
"first_go_to": "Nejprve jděte na",
"login_if_not_logged_in": "a přihlašte se nebo se zaregistrujte, pokud nejste přihlášeni",
"step_2": "Krok 2",
- "step_2_steps": "1. Jakmile jste přihlášeni, stiskněte F12 nebo pravé tlačítko myši > Prozkoumat, abyste otevřeli nástroje pro vývojáře prohlížeče.\n2. Poté přejděte na kartu \"Aplikace\" (Chrome, Edge, Brave atd.) nebo kartu \"Úložiště\" (Firefox, Palemoon atd.)\n3. Přejděte do sekce \"Cookies\" a pak do podsekce \"https://accounts.spotify.com\"",
+ "step_2_steps": "1. Jakmile jste přihlášeni, stiskněte F12 nebo pravé tlačítko myši > Prozkoumat, abyste otevřeli nástroje pro vývojáře prohlížeče.\n2. Poté přejděte na kartu \"Aplikace\" (Chrome, Edge, Brave atd.) nebo kartu \"Úložiště\" (Firefox, Pale Moon atd.)\n3. Přejděte do sekce \"Cookies\" a pak do podsekce \"https://accounts.spotify.com\"",
"step_3": "Krok 3",
"step_3_steps": "Zkopírujte hodnotu cookie \"sp_dc\"",
"success_emoji": "Úspěch🥳",
@@ -199,13 +199,13 @@
"add_genres": "Přidat žánry",
"country": "Země",
"number_of_tracks_generate": "Počet skladeb k vygenerování",
- "acousticness": "Akustičnost",
- "danceability": "Tanečnost",
+ "not_acoustic": "Akustičnost",
+ "dance_ability": "Tanečnost",
"energy": "Energie",
- "instrumentalness": "Instrumentálnost",
+ "not_instrumental": "Instrumentálnost",
"liveness": "Živost",
"loudness": "Hlasitost",
- "speechiness": "Mluvnost",
+ "talkative": "Mluvnost",
"valence": "Valence",
"popularity": "Popularita",
"key": "Klíč",
@@ -244,7 +244,7 @@
"sort_newest": "Seřadit od nejnovějších",
"sort_oldest": "Seřadit od nejstarších",
"sleep_timer": "Časovač spánku",
- "mins": "{minutes} Minut",
+ "minutes": "{minutes} Minut",
"hours": "{hours} Hodin",
"hour": "{hours} Hodina",
"custom_hours": "Vlastní hodiny",
@@ -255,7 +255,7 @@
"audio_source": "Zdroj zvuku",
"ok": "Ok",
"failed_to_encrypt": "Šifrování selhalo",
- "encryption_failed_warning": "Spotube používá šifrování k bezpečnému ukládání vašich dat. Ale selhalo. Takže se vrátí k nezabezpečenému úložišti\nPokud používáte linux, ujistěte se, že máte nainstalovanou jakoukoli službu k ukládání bezpečnostních pověření (gnome-keyring, kde-wallet, keepassxc atd.)",
+ "encryption_failed_warning": "Spotube používá šifrování k bezpečnému ukládání vašich dat. Ale selhalo. Takže se vrátí k nezabezpečenému úložišti\nPokud používáte linux, ujistěte se, že máte nainstalovanou jakoukoli službu k ukládání bezpečnostních pověření (gnome-keyring, kde-wallet, KeePassXC atd.)",
"querying_info": "Získávání informací...",
"piped_api_down": "Piped API je mimo provoz",
"piped_down_error_instructions": "Instance Piped {pipedInstance} je momentálně mimo provoz\n\nBuď změňte instanci nebo změňte 'Typ API' na oficiální YouTube API\n\nPo změně se ujistěte, že aplikaci restartujete",
@@ -370,9 +370,9 @@
"streamed_songs": "Streamované skladby",
"count_streams": "{count} streamů",
"owned_by_you": "Vlastněno vámi",
- "copied_shareurl_to_clipboard": "Zkopírováno {shareUrl} do schránky",
- "spotify_hipotetical_calculation": "*Toto je vypočítáno na základě výplaty\nza stream Spotify od $0.003 do $0.005.\nToto je hypotetický výpočet,\nabyste měli představu o tom, kolik\nbyste zaplatili umělcům,\npokud byste poslouchali jejich píseň na Spotify.",
- "count_mins": "{minutes} minut",
+ "copied_share_url_to_clipboard": "Zkopírováno {shareUrl} do schránky",
+ "spotify_hypothetical_calculation": "*Toto je vypočítáno na základě výplaty\nza stream Spotify od $0.003 do $0.005.\nToto je hypotetický výpočet,\nabyste měli představu o tom, kolik\nbyste zaplatili umělcům,\npokud byste poslouchali jejich píseň na Spotify.",
+ "count_minutes": "{minutes} minut",
"summary_minutes": "minuty",
"summary_listened_to_music": "Poslouchal(a) hudbu",
"summary_songs": "písně",
diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb
index af2b26ad..ea28b23c 100644
--- a/lib/l10n/app_de.arb
+++ b/lib/l10n/app_de.arb
@@ -88,7 +88,7 @@
"mini_player": "Mini-Player",
"slide_to_seek": "Zum Vor- oder Zurückspulen ziehen",
"shuffle_playlist": "Playlist mischen",
- "unshuffle_playlist": "Playlist nicht mehr mischen",
+ "not_shuffle_playlist": "Playlist nicht mehr mischen",
"previous_track": "Vorheriger Track",
"next_track": "Nächster Track",
"pause_playback": "Wiedergabe pausieren",
@@ -173,7 +173,7 @@
"first_go_to": "Gehe zuerst zu",
"login_if_not_logged_in": "und melde dich an/registriere dich, falls du nicht angemeldet bist",
"step_2": "Schritt 2",
- "step_2_steps": "1. Wenn du angemeldet bist, drücke F12 oder klicke mit der rechten Maustaste > Inspektion, um die Browser-Entwicklertools zu öffnen.\n2. Gehe dann zum \"Anwendungs\"-Tab (Chrome, Edge, Brave usw.) oder zum \"Storage\"-Tab (Firefox, Palemoon usw.)\n3. Gehe zum Abschnitt \"Cookies\" und dann zum Unterabschnitt \"https://accounts.spotify.com\"",
+ "step_2_steps": "1. Wenn du angemeldet bist, drücke F12 oder klicke mit der rechten Maustaste > Inspektion, um die Browser-Entwicklertools zu öffnen.\n2. Gehe dann zum \"Anwendungs\"-Tab (Chrome, Edge, Brave usw.) oder zum \"Storage\"-Tab (Firefox, Pale Moon usw.)\n3. Gehe zum Abschnitt \"Cookies\" und dann zum Unterabschnitt \"https://accounts.spotify.com\"",
"step_3": "Schritt 3",
"success_emoji": "Erfolg🥳",
"success_message": "Jetzt bist du erfolgreich mit deinem Spotify-Konto angemeldet. Gut gemacht, Kumpel!",
@@ -194,13 +194,13 @@
"add_genres": "Genres hinzufügen",
"country": "Land",
"number_of_tracks_generate": "Anzahl der zu generierenden Titel",
- "acousticness": "Akustik",
- "danceability": "Tanzbarkeit",
+ "not_acoustic": "Akustik",
+ "dance_ability": "Tanzbarkeit",
"energy": "Energie",
- "instrumentalness": "Instrumentalität",
+ "not_instrumental": "Instrumentalität",
"liveness": "Lebendigkeit",
"loudness": "Lautstärke",
- "speechiness": "Sprechanteil",
+ "talkative": "Sprechanteil",
"valence": "Stimmung",
"popularity": "Beliebtheit",
"key": "Tonart",
@@ -239,7 +239,7 @@
"sort_newest": "Nach neuesten Hinzufügungen sortieren",
"sort_oldest": "Nach ältesten Hinzufügungen sortieren",
"sleep_timer": "Schlaftimer",
- "mins": "{minutes} Minuten",
+ "minutes": "{minutes} Minuten",
"hours": "{hours} Stunden",
"hour": "{hours} Stunde",
"custom_hours": "Benutzerdefinierte Stunden",
@@ -250,7 +250,7 @@
"audio_source": "Audioquelle",
"ok": "OK",
"failed_to_encrypt": "Verschlüsselung fehlgeschlagen",
- "encryption_failed_warning": "Spotube verwendet Verschlüsselung, um Ihre Daten sicher zu speichern. Dies ist jedoch fehlgeschlagen. Daher wird es auf unsichere Speicherung zurückgreifen\nWenn Sie Linux verwenden, stellen Sie bitte sicher, dass Sie Secret-Services wie gnome-keyring, kde-wallet und keepassxc installiert haben",
+ "encryption_failed_warning": "Spotube verwendet Verschlüsselung, um Ihre Daten sicher zu speichern. Dies ist jedoch fehlgeschlagen. Daher wird es auf unsichere Speicherung zurückgreifen\nWenn Sie Linux verwenden, stellen Sie bitte sicher, dass Sie Secret-Services wie gnome-keyring, kde-wallet und KeePassXC installiert haben",
"querying_info": "Abfrageinformationen...",
"piped_api_down": "Die Piped API ist ausgefallen",
"piped_down_error_instructions": "Die Piped-Instanz {pipedInstance} ist derzeit nicht verfügbar\n\nEntweder ändern Sie die Instanz oder wechseln Sie den 'API-Typ' zur offiziellen YouTube API\n\nStellen Sie sicher, dass Sie die App nach der Änderung neu starten",
@@ -370,9 +370,9 @@
"streamed_songs": "Gestreamte Lieder",
"count_streams": "{count} Streams",
"owned_by_you": "In Ihrem Besitz",
- "copied_shareurl_to_clipboard": "{shareUrl} in die Zwischenablage kopiert",
- "spotify_hipotetical_calculation": "*Dies ist basierend auf Spotifys\npro Stream Auszahlung von $0,003 bis $0,005\nberechnet. Dies ist eine hypothetische Berechnung,\num dem Benutzer Einblick zu geben,\nwieviel sie den Künstlern gezahlt hätten,\nwenn sie ihren Song auf Spotify gehört hätten.",
- "count_mins": "{minutes} Minuten",
+ "copied_share_url_to_clipboard": "{shareUrl} in die Zwischenablage kopiert",
+ "spotify_hypothetical_calculation": "*Dies ist basierend auf Spotifys\npro Stream Auszahlung von $0,003 bis $0,005\nberechnet. Dies ist eine hypothetische Berechnung,\num dem Benutzer Einblick zu geben,\nwieviel sie den Künstlern gezahlt hätten,\nwenn sie ihren Song auf Spotify gehört hätten.",
+ "count_minutes": "{minutes} Minuten",
"summary_minutes": "Minuten",
"summary_listened_to_music": "Hat Musik gehört",
"summary_songs": "Lieder",
diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb
index e3e6d330..fa4d54a2 100644
--- a/lib/l10n/app_en.arb
+++ b/lib/l10n/app_en.arb
@@ -91,7 +91,7 @@
"mini_player": "Mini Player",
"slide_to_seek": "Slide to seek forward or backward",
"shuffle_playlist": "Shuffle playlist",
- "unshuffle_playlist": "Unshuffle playlist",
+ "not_shuffle_playlist": "Unshuffle playlist",
"previous_track": "Previous track",
"next_track": "Next track",
"pause_playback": "Pause Playback",
@@ -180,7 +180,7 @@
"first_go_to": "First, Go to",
"login_if_not_logged_in": "and Login/Signup if you are not logged in",
"step_2": "Step 2",
- "step_2_steps": "1. Once you're logged in, press F12 or Mouse Right Click > Inspect to Open the Browser devtools.\n2. Then go the \"Application\" Tab (Chrome, Edge, Brave etc..) or \"Storage\" Tab (Firefox, Palemoon etc..)\n3. Go to the \"Cookies\" section then the \"https://accounts.spotify.com\" subsection",
+ "step_2_steps": "1. Once you're logged in, press F12 or Mouse Right Click > Inspect to Open the Browser devtools.\n2. Then go the \"Application\" Tab (Chrome, Edge, Brave etc..) or \"Storage\" Tab (Firefox, Pale Moon etc..)\n3. Go to the \"Cookies\" section then the \"https://accounts.spotify.com\" subsection",
"step_3": "Step 3",
"step_3_steps": "Copy the value of \"sp_dc\" Cookie",
"success_emoji": "Success🥳",
@@ -206,13 +206,13 @@
"add_genres": "Add Genres",
"country": "Country",
"number_of_tracks_generate": "Number of tracks to generate",
- "acousticness": "Acousticness",
- "danceability": "Danceability",
+ "not_acoustic": "not_acoustic",
+ "dance_ability": "dance_ability",
"energy": "Energy",
- "instrumentalness": "Instrumentalness",
+ "not_instrumental": "not_instrumental",
"liveness": "Liveness",
"loudness": "Loudness",
- "speechiness": "Speechiness",
+ "talkative": "talkative",
"valence": "Valence",
"popularity": "Popularity",
"key": "Key",
@@ -251,7 +251,7 @@
"sort_newest": "Sort by newest added",
"sort_oldest": "Sort by oldest added",
"sleep_timer": "Sleep Timer",
- "mins": "{minutes} Minutes",
+ "minutes": "{minutes} Minutes",
"hours": "{hours} Hours",
"hour": "{hours} Hour",
"custom_hours": "Custom Hours",
@@ -262,7 +262,7 @@
"audio_source": "Audio Source",
"ok": "Ok",
"failed_to_encrypt": "Failed to encrypt",
- "encryption_failed_warning": "Spotube uses encryption to securely store your data. But failed to do so. So it'll fallback to insecure storage\nIf you're using linux, please make sure you've any secret-service (gnome-keyring, kde-wallet, keepassxc etc) installed",
+ "encryption_failed_warning": "Spotube uses encryption to securely store your data. But failed to do so. So it'll fallback to insecure storage\nIf you're using linux, please make sure you've any secret-service (gnome-keyring, kde-wallet, KeePassXC etc) installed",
"querying_info": "Querying info...",
"piped_api_down": "Piped API is down",
"piped_down_error_instructions": "The Piped instance {pipedInstance} is currently down\n\nEither change the instance or change the 'API type' to official YouTube API\n\nMake sure to restart the app after change",
@@ -375,9 +375,9 @@
"streamed_songs": "Streamed songs",
"count_streams": "{count} streams",
"owned_by_you": "Owned by you",
- "copied_shareurl_to_clipboard": "Copied {shareUrl} to clipboard",
- "spotify_hipotetical_calculation": "*This is calculated based on Spotify's per stream\npayout of $0.003 to $0.005. This is a hypothetical\ncalculation to give user insight about how much they\nwould have paid to the artists if they were to listen\ntheir song in Spotify.",
- "count_mins": "{minutes} mins",
+ "copied_share_url_to_clipboard": "Copied {shareUrl} to clipboard",
+ "spotify_hypothetical_calculation": "*This is calculated based on Spotify's per stream\npayout of $0.003 to $0.005. This is a hypothetical\ncalculation to give user insight about how much they\nwould have paid to the artists if they were to listen\ntheir song in Spotify.",
+ "count_minutes": "{minutes} minutes",
"summary_minutes": "minutes",
"summary_listened_to_music": "Listened to music",
"summary_songs": "songs",
diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb
index 565c786a..89db443b 100644
--- a/lib/l10n/app_es.arb
+++ b/lib/l10n/app_es.arb
@@ -88,7 +88,7 @@
"mini_player": "Reproductor Mini",
"slide_to_seek": "Desliza para buscar adelante o atrás",
"shuffle_playlist": "Reproducir lista en orden aleatorio",
- "unshuffle_playlist": "Desactivar reproducción aleatoria",
+ "not_shuffle_playlist": "Desactivar reproducción aleatoria",
"previous_track": "Pista anterior",
"next_track": "Pista siguiente",
"pause_playback": "Pausar reproducción",
@@ -173,7 +173,7 @@
"first_go_to": "Primero, ve a",
"login_if_not_logged_in": "e inicia sesión/registra tu cuenta si no lo has hecho aún",
"step_2": "Paso 2",
- "step_2_steps": "1. Una vez que hayas iniciado sesión, presiona F12 o haz clic derecho con el ratón > Inspeccionar para abrir las herramientas de desarrollo del navegador.\n2. Luego ve a la pestaña \"Application\" (Chrome, Edge, Brave, etc.) o \"Storage\" (Firefox, Palemoon, etc.)\n3. Ve a la sección \"Cookies\" y luego la subsección \"https://accounts.spotify.com\"",
+ "step_2_steps": "1. Una vez que hayas iniciado sesión, presiona F12 o haz clic derecho con el ratón > Inspeccionar para abrir las herramientas de desarrollo del navegador.\n2. Luego ve a la pestaña \"Application\" (Chrome, Edge, Brave, etc.) o \"Storage\" (Firefox, Pale Moon, etc.)\n3. Ve a la sección \"Cookies\" y luego la subsección \"https://accounts.spotify.com\"",
"step_3": "Paso 3",
"success_emoji": "¡Éxito! 🥳",
"success_message": "Ahora has iniciado sesión con éxito en tu cuenta de Spotify. ¡Buen trabajo!",
@@ -194,13 +194,13 @@
"add_genres": "Agregar Géneros",
"country": "País",
"number_of_tracks_generate": "Número de canciones a generar",
- "acousticness": "Acousticness",
- "danceability": "Danceability",
+ "not_acoustic": "not_acoustic",
+ "dance_ability": "dance_ability",
"energy": "Energía",
- "instrumentalness": "Instrumentalidad",
+ "not_instrumental": "Instrumentalidad",
"liveness": "En vivo",
"loudness": "Volumen",
- "speechiness": "Habla",
+ "talkative": "Habla",
"valence": "Valencia",
"popularity": "Popularidad",
"key": "Tono",
@@ -239,7 +239,7 @@
"sort_newest": "Ordenar por más recientes",
"sort_oldest": "Ordenar por más antiguos",
"sleep_timer": "Temporizador de apagado",
- "mins": "{minutes} minutos",
+ "minutes": "{minutes} minutos",
"hours": "{hours} horas",
"hour": "{hours} hora",
"custom_hours": "Horas personalizadas",
@@ -250,7 +250,7 @@
"audio_source": "Fuente de audio",
"ok": "OK",
"failed_to_encrypt": "Error al cifrar",
- "encryption_failed_warning": "Spotube utiliza el cifrado para almacenar sus datos de forma segura. Pero ha fallado. Por lo tanto, volverá a un almacenamiento no seguro\nSi está utilizando Linux, asegúrese de tener instalados servicios secretos como gnome-keyring, kde-wallet y keepassxc",
+ "encryption_failed_warning": "Spotube utiliza el cifrado para almacenar sus datos de forma segura. Pero ha fallado. Por lo tanto, volverá a un almacenamiento no seguro\nSi está utilizando Linux, asegúrese de tener instalados servicios secretos como gnome-keyring, kde-wallet y KeePassXC",
"querying_info": "Consultando información...",
"piped_api_down": "La API de Piped no está disponible",
"piped_down_error_instructions": "La instancia de Piped {pipedInstance} no está funcionando en este momento\n\nCambie la instancia o cambie el 'Tipo de API' a la API oficial de YouTube\n\nAsegúrese de reiniciar la aplicación después del cambio",
@@ -370,9 +370,9 @@
"streamed_songs": "Canciones reproducidas",
"count_streams": "{count} streams",
"owned_by_you": "En tu posesión",
- "copied_shareurl_to_clipboard": "Copiado {shareUrl} al portapapeles",
- "spotify_hipotetical_calculation": "*Esto se calcula en base al\npago por stream de Spotify de $0.003 a $0.005.\nEs un cálculo hipotético para dar\nuna idea de cuánto habría\npagado a los artistas si hubieras escuchado\nsu canción en Spotify.",
- "count_mins": "{minutes} minutos",
+ "copied_share_url_to_clipboard": "Copiado {shareUrl} al portapapeles",
+ "spotify_hypothetical_calculation": "*Esto se calcula en base al\npago por stream de Spotify de $0.003 a $0.005.\nEs un cálculo hipotético para dar\nuna idea de cuánto habría\npagado a los artistas si hubieras escuchado\nsu canción en Spotify.",
+ "count_minutes": "{minutes} minutos",
"summary_minutes": "minutos",
"summary_listened_to_music": "Escuchó música",
"summary_songs": "canciones",
diff --git a/lib/l10n/app_eu.arb b/lib/l10n/app_eu.arb
index 70a581a7..f68f0e25 100644
--- a/lib/l10n/app_eu.arb
+++ b/lib/l10n/app_eu.arb
@@ -91,7 +91,7 @@
"mini_player": "Mini Erreproduzitzailea",
"slide_to_seek": "Arrastatu aurrerantz edo atzearantz bilatzeko",
"shuffle_playlist": "Erreproduzitu zerrenda ausazko ordenean",
- "unshuffle_playlist": "Desgaitu ausazko erreprodukzioa",
+ "not_shuffle_playlist": "Desgaitu ausazko erreprodukzioa",
"previous_track": "Aurreko pista",
"next_track": "Hurrengo pista",
"pause_playback": "Pausatu erreprodukzioa",
@@ -179,7 +179,7 @@
"first_go_to": "Hasteko, joan hona",
"login_if_not_logged_in": "eta hasi saioa/sortu kontua lehendik ez baduzu eginda",
"step_2": "2. pausua",
- "step_2_steps": "1. Saioa hasita duzularik, sakatu F12 edo saguaren eskuineko botoia klikatu > Ikuskatu nabigatzaileko garapen tresnak irekitzeko.\n2. Joan \"Aplikazio\" (Chrome, Edge, Brave, etab.) edo \"Biltegiratzea\" (Firefox, Palemoon, etab.)\n3. Joan \"Cookieak\" atalera eta gero \"https://accounts.spotify.com\" azpiatalera",
+ "step_2_steps": "1. Saioa hasita duzularik, sakatu F12 edo saguaren eskuineko botoia klikatu > Ikuskatu nabigatzaileko garapen tresnak irekitzeko.\n2. Joan \"Aplikazio\" (Chrome, Edge, Brave, etab.) edo \"Biltegiratzea\" (Firefox, Pale Moon, etab.)\n3. Joan \"Cookieak\" atalera eta gero \"https://accounts.spotify.com\" azpiatalera",
"step_3": "3. pausua",
"step_3_steps": "Kopiatu \"sp_dc\" cookiearen balioa",
"success_emoji": "Eginda! 🥳",
@@ -202,13 +202,13 @@
"add_genres": "Gehitu Generoak",
"country": "Herrialdea",
"number_of_tracks_generate": "Sortzeko kanta kopurua",
- "acousticness": "Akustikotasuna",
- "danceability": "Dantzagarritasuna",
+ "not_acoustic": "Akustikotasuna",
+ "dance_ability": "Dantzagarritasuna",
"energy": "Energia",
- "instrumentalness": "Instrumentaltasuna",
+ "not_instrumental": "Instrumentaltasuna",
"liveness": "Zuzenean",
"loudness": "Ozentasuna",
- "speechiness": "Hitzaldia",
+ "talkative": "Hitzaldia",
"valence": "Balentzia",
"popularity": "Populartasuna",
"key": "Tonua",
@@ -247,7 +247,7 @@
"sort_newest": "Ordenatu gehitu berrienetik",
"sort_oldest": "Ordenatu gehitu zaharrenetik",
"sleep_timer": "Itzaltzeko tenporizadorea",
- "mins": "{minutes} minutu",
+ "minutes": "{minutes} minutu",
"hours": "{hours} ordu",
"hour": "{hours} ordu",
"custom_hours": "Ordu pertsonalizatuak",
@@ -258,7 +258,7 @@
"audio_source": "Audio Iturria",
"ok": "OK",
"failed_to_encrypt": "Errorea zifratzean",
- "encryption_failed_warning": "Spotube-ek zifratzea darabil datuak modu seguruan biltegiratzeko. Baina huts egin du. Hori dela eta, biltegiratzea ez da segurua izango\nLinux erabiltzen ari bazara, ziurtatu edozein sekretu-zerbitzu (gnome-keyring, kde-wallet, keepassxc etab.) instalatuta duzula",
+ "encryption_failed_warning": "Spotube-ek zifratzea darabil datuak modu seguruan biltegiratzeko. Baina huts egin du. Hori dela eta, biltegiratzea ez da segurua izango\nLinux erabiltzen ari bazara, ziurtatu edozein sekretu-zerbitzu (gnome-keyring, kde-wallet, KeePassXC etab.) instalatuta duzula",
"querying_info": "Informazioa egiaztatzen...",
"piped_api_down": "Piped-en APIa ez dago eskuragarri",
"piped_down_error_instructions": "Piped-en {pipedInstance} instantzia ez dago martxan une honetan\n\nAldatu instantzia edo aldatu 'API mota' YouTuberen API ofizialera\n\nZiurtatu aplikazioa berrabiarazten duzula aldaketa eta gero",
@@ -370,9 +370,9 @@
"streamed_songs": "Streaming-ez entzundako kantak",
"count_streams": "{count} stream",
"owned_by_you": "Zure jabetzakoa",
- "copied_shareurl_to_clipboard": "{shareUrl} arbelera kopiatua",
- "spotify_hipotetical_calculation": "*Sportify-k stream bakoitzeko duen $0.003 eta $0.005\nordainsarian oinarritua da. Kalkulu hipotetiko bat,\nkanta hauek Spotify-n entzun bazenitu,\nberaiek artistari zenbat ordaiduko lioketen jakin dezazun.",
- "count_mins": "{minutes} minutu",
+ "copied_share_url_to_clipboard": "{shareUrl} arbelera kopiatua",
+ "spotify_hypothetical_calculation": "*Sportify-k stream bakoitzeko duen $0.003 eta $0.005\nordainsarian oinarritua da. Kalkulu hipotetiko bat,\nkanta hauek Spotify-n entzun bazenitu,\nberaiek artistari zenbat ordaiduko lioketen jakin dezazun.",
+ "count_minutes": "{minutes} minutu",
"summary_minutes": "minutu",
"summary_listened_to_music": "Musika entzuten",
"summary_songs": "kanta",
diff --git a/lib/l10n/app_fa.arb b/lib/l10n/app_fa.arb
index d3918e55..02847136 100644
--- a/lib/l10n/app_fa.arb
+++ b/lib/l10n/app_fa.arb
@@ -90,7 +90,7 @@
"mini_player": "پخش کننده ",
"slide_to_seek": "برای جستجو عقب یا جلو بکشید",
"shuffle_playlist": "پخش تصادفی",
- "unshuffle_playlist": "خاموش کردن پخش تصادفی",
+ "not_shuffle_playlist": "خاموش کردن پخش تصادفی",
"previous_track": "آهنگ قبلی",
"next_track": "آهنگ بعدی",
"pause_playback": "توقف آهنگ",
@@ -175,7 +175,7 @@
"first_go_to": "اول برو داخل ",
"login_if_not_logged_in": "و اگر وارد نشده اید، وارد/ثبت نام کنید",
"step_2": "گام 2",
- "step_2_steps": "1. پس از ورود به سیستم، F12 یا کلیک راست ماوس > Inspect را فشار دهید تا ابزارهای توسعه مرورگر باز شود..\n2. سپس به تب \"Application\" (Chrome, Edge, Brave etc..) یا \"Storage\" Tab (Firefox, Palemoon etc..)\n3. به قسمت \"Cookies\" و به پخش \"https://accounts.spotify.com\" بروید",
+ "step_2_steps": "1. پس از ورود به سیستم، F12 یا کلیک راست ماوس > Inspect را فشار دهید تا ابزارهای توسعه مرورگر باز شود..\n2. سپس به تب \"Application\" (Chrome, Edge, Brave etc..) یا \"Storage\" Tab (Firefox, Pale Moon etc..)\n3. به قسمت \"Cookies\" و به پخش \"https://accounts.spotify.com\" بروید",
"step_3": "گام 3",
"success_emoji": "موفقیت🥳",
"success_message": "اکنون با موفقیت با حساب اسپوتیفای خود وارد شده اید",
@@ -196,13 +196,13 @@
"add_genres": "ژانر را اطافه کنید",
"country": "کشور",
"number_of_tracks_generate": "تعداد آهنگ های ساخته شده",
- "acousticness": "آکوستیک",
- "danceability": "رقصیدن",
+ "not_acoustic": "آکوستیک",
+ "dance_ability": "رقصیدن",
"energy": "انرژی",
- "instrumentalness": "بی کلام",
+ "not_instrumental": "بی کلام",
"liveness": "حس زندگی",
"loudness": "صدای بلند",
- "speechiness": "دکلمه",
+ "talkative": "دکلمه",
"valence": "ظرفیت",
"popularity": "محبوبیت",
"key": "کلید",
@@ -241,7 +241,7 @@
"sort_newest": "مرتب سازی بر اساس جدید ترین اضافه شده",
"sort_oldest": "مرتب سازی بر اساس قدیمی ترین اضافه شده",
"sleep_timer": "زمان خواب",
- "mins": "{minutes} دقیقه",
+ "minutes": "{minutes} دقیقه",
"hours": "{hours} ساعت",
"hour": "{hours} ساعت",
"custom_hours": "ساعت سفارشی",
@@ -252,7 +252,7 @@
"audio_source": "منبع صدا",
"ok": "باشد",
"failed_to_encrypt": "رمز گذاری نشده",
- "encryption_failed_warning": "Spotube از رمزگذاری برای ذخیره ایمن داده های شما استفاده می کند. اما موفق به انجام این کار نشد. بنابراین به فضای ذخیرهسازی ناامن تبدیل میشود\nاگر از لینوکس استفاده میکنید، لطفاً مطمئن شوید که سرویس مخفی (gnome-keyring، kde-wallet، keepassxc و غیره) را نصب کردهاید.",
+ "encryption_failed_warning": "Spotube از رمزگذاری برای ذخیره ایمن داده های شما استفاده می کند. اما موفق به انجام این کار نشد. بنابراین به فضای ذخیرهسازی ناامن تبدیل میشود\nاگر از لینوکس استفاده میکنید، لطفاً مطمئن شوید که سرویس مخفی (gnome-keyring، kde-wallet، KeePassXC و غیره) را نصب کردهاید.",
"querying_info": "جستجو درباره ",
"piped_api_down": "ایراد در سرور",
"piped_down_error_instructions": "به دلیل مشکل {pipedInstance} ارتباط با سرور مقدور نیست\n\nنمونه را تغییر دهید یا «نوع API» را به API رسمی YouTube تغییر دهید\n\nحتماً پس از تغییر، برنامه را دوباره راهاندازی کنید",
@@ -370,9 +370,9 @@
"streamed_songs": "ترانههای پخش شده",
"count_streams": "{count} پخش",
"owned_by_you": "توسط شما مالکیت شده",
- "copied_shareurl_to_clipboard": "{shareUrl} به کلیپبورد کپی شد",
- "spotify_hipotetical_calculation": "*این بر اساس پرداخت هر پخش اسپاتیفای\nبه مبلغ 0.003 تا 0.005 دلار محاسبه شده است.\nاین یک محاسبه فرضی است که به کاربران نشان دهد چقدر ممکن است\nبه هنرمندان پرداخت میکردند اگر ترانه آنها را در اسپاتیفای گوش میدادند.",
- "count_mins": "{minutes} دقیقه",
+ "copied_share_url_to_clipboard": "{shareUrl} به کلیپبورد کپی شد",
+ "spotify_hypothetical_calculation": "*این بر اساس پرداخت هر پخش اسپاتیفای\nبه مبلغ 0.003 تا 0.005 دلار محاسبه شده است.\nاین یک محاسبه فرضی است که به کاربران نشان دهد چقدر ممکن است\nبه هنرمندان پرداخت میکردند اگر ترانه آنها را در اسپاتیفای گوش میدادند.",
+ "count_minutes": "{minutes} دقیقه",
"summary_minutes": "دقیقهها",
"summary_listened_to_music": "به موسیقی گوش داده شده",
"summary_songs": "ترانهها",
diff --git a/lib/l10n/app_fi.arb b/lib/l10n/app_fi.arb
index 797c36f7..18f2871e 100644
--- a/lib/l10n/app_fi.arb
+++ b/lib/l10n/app_fi.arb
@@ -91,7 +91,7 @@
"mini_player": "Minisoitin",
"slide_to_seek": "Liu'uta mennäkseen eteenpäin tai taaksepäin",
"shuffle_playlist": "Sekoita soittolista",
- "unshuffle_playlist": "Poista sekoitus soittolistasta",
+ "not_shuffle_playlist": "Poista sekoitus soittolistasta",
"previous_track": "Äskeinen kappale",
"next_track": "Seuraava kappale",
"pause_playback": "Pysäytä soittolistan toisto",
@@ -176,7 +176,7 @@
"first_go_to": "Ensiksi, mene",
"login_if_not_logged_in": "ja Kirjaudu/Tee tili jos et ole kirjautunut sisään",
"step_2": "Vaihe 2",
- "step_2_steps": "1. Kun olet kirjautunut, paina F12 tai oikeaa hiiren näppäintä > Tarkista ja avaa selaimen kehittäjä työkalut.\n2. Mene sitten \"Application\"-välilehteen (Chrome, Edge, Brave jne..) tai \"Storage\"-välilehteen (Firefox, Palemoon jne..)\n3. Mene \"Cookies\"-osastoon, sitten \"https://accounts.spotify.com\" alakohtaan.",
+ "step_2_steps": "1. Kun olet kirjautunut, paina F12 tai oikeaa hiiren näppäintä > Tarkista ja avaa selaimen kehittäjä työkalut.\n2. Mene sitten \"Application\"-välilehteen (Chrome, Edge, Brave jne..) tai \"Storage\"-välilehteen (Firefox, Pale Moon jne..)\n3. Mene \"Cookies\"-osastoon, sitten \"https://accounts.spotify.com\" alakohtaan.",
"step_3": "Vaihe 3",
"step_3_steps": "Kopioi Keksin \"sp_dc\" arvo",
"success_emoji": "Onnistuit🥳",
@@ -199,13 +199,13 @@
"add_genres": "Lisää Genrejä",
"country": "Maa",
"number_of_tracks_generate": "Numero tuotettavia kappaleita",
- "acousticness": "Akustisuus",
- "danceability": "Tanssittavuus",
+ "not_acoustic": "Akustisuus",
+ "dance_ability": "Tanssittavuus",
"energy": "Energia",
- "instrumentalness": "Instrumentaalisuus",
+ "not_instrumental": "Instrumentaalisuus",
"liveness": "Elävyyttä",
"loudness": "Äänekkyys",
- "speechiness": "Puheisuus",
+ "talkative": "Puheisuus",
"valence": "Valenssi",
"popularity": "Suosio",
"key": "Sävellaji",
@@ -244,7 +244,7 @@
"sort_newest": "Suodata uusimmista",
"sort_oldest": "Suodata vanhimmista",
"sleep_timer": "Uniajastin",
- "mins": "{minutes} Minuuttia",
+ "minutes": "{minutes} Minuuttia",
"hours": "{hours} Tuntia",
"hour": "{hours} Tunti",
"custom_hours": "Mukautetut tunnit",
@@ -255,7 +255,7 @@
"audio_source": "Äänilähde",
"ok": "Ok",
"failed_to_encrypt": "Salaaminen epäonnistui",
- "encryption_failed_warning": "Spotube käyttää salausta tallentaakseen tietosi, mutta epäonnistui, joten se palaa epäturvalliseen tallennukseen\nJos käytät Linuxia, varmista että sinulla on turvallisuuspalvelu (gnome-keyring, kde-wallet, keepassxc jne) asennettu",
+ "encryption_failed_warning": "Spotube käyttää salausta tallentaakseen tietosi, mutta epäonnistui, joten se palaa epäturvalliseen tallennukseen\nJos käytät Linuxia, varmista että sinulla on turvallisuuspalvelu (gnome-keyring, kde-wallet, KeePassXC jne) asennettu",
"querying_info": "Hankitaan tietoa...",
"piped_api_down": "Johdettu palvelinesiintymä on alhaalla",
"piped_down_error_instructions": "Johdettu palvelinesiintymä {pipedInstance} on alhaalla.\n\nVaihda joko ilmeytymä tia vahda 'API tyyppi' YouTuben viralliseen API\n\nKäynnistä sovellus uudestaan vaihdon jälkeen",
@@ -370,9 +370,9 @@
"streamed_songs": "Suoratoistettuja kappaleita",
"count_streams": "{count} suoratoistoa",
"owned_by_you": "Sinun omistama",
- "copied_shareurl_to_clipboard": "{shareUrl} kopioitu leikepöydälle",
- "spotify_hipotetical_calculation": "*Tämä on laskettu Spotifyn suoratoiston\nmaksun perusteella, joka on 0,003–0,005 dollaria.\nTämä on hypoteettinen laskelma, joka antaa käyttäjälle käsityksen\nsiitä, kuinka paljon he olisivat maksaneet artisteille,\njollei heidän kappaleensa olisi kuunneltu Spotifyssa.",
- "count_mins": "{minutes} min",
+ "copied_share_url_to_clipboard": "{shareUrl} kopioitu leikepöydälle",
+ "spotify_hypothetical_calculation": "*Tämä on laskettu Spotifyn suoratoiston\nmaksun perusteella, joka on 0,003–0,005 dollaria.\nTämä on hypoteettinen laskelma, joka antaa käyttäjälle käsityksen\nsiitä, kuinka paljon he olisivat maksaneet artisteille,\njollei heidän kappaleensa olisi kuunneltu Spotifyssa.",
+ "count_minutes": "{minutes} min",
"summary_minutes": "minuuttia",
"summary_listened_to_music": "Kuunneltu musiikkia",
"summary_songs": "kappaletta",
diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb
index 636cffec..9dd3db39 100644
--- a/lib/l10n/app_fr.arb
+++ b/lib/l10n/app_fr.arb
@@ -88,7 +88,7 @@
"mini_player": "Lecteur mini",
"slide_to_seek": "Faites glisser pour avancer ou reculer",
"shuffle_playlist": "Lecture aléatoire de la liste de lecture",
- "unshuffle_playlist": "Annuler la lecture aléatoire de la liste de lecture",
+ "not_shuffle_playlist": "Annuler la lecture aléatoire de la liste de lecture",
"previous_track": "Piste précédente",
"next_track": "Piste suivante",
"pause_playback": "Mettre en pause la lecture",
@@ -173,7 +173,7 @@
"first_go_to": "Tout d'abord, allez sur",
"login_if_not_logged_in": "et connectez-vous/inscrivez-vous si vous n'êtes pas connecté",
"step_2": "Étape 2",
- "step_2_steps": "1. Une fois connecté, appuyez sur F12 ou clic droit de la souris > Inspecter pour ouvrir les outils de développement du navigateur.\n2. Ensuite, allez dans l'onglet \"Application\" (Chrome, Edge, Brave, etc.) ou l'onglet \"Stockage\" (Firefox, Palemoon, etc.)\n3. Allez dans la section \"Cookies\", puis dans la sous-section \"https://accounts.spotify.com\"",
+ "step_2_steps": "1. Une fois connecté, appuyez sur F12 ou clic droit de la souris > Inspecter pour ouvrir les outils de développement du navigateur.\n2. Ensuite, allez dans l'onglet \"Application\" (Chrome, Edge, Brave, etc.) ou l'onglet \"Stockage\" (Firefox, Pale Moon, etc.)\n3. Allez dans la section \"Cookies\", puis dans la sous-section \"https://accounts.spotify.com\"",
"step_3": "Étape 3",
"success_emoji": "Succès🥳",
"success_message": "Vous êtes maintenant connecté avec succès à votre compte Spotify. Bon travail, mon ami!",
@@ -194,13 +194,13 @@
"add_genres": "Ajouter des genres",
"country": "Pays",
"number_of_tracks_generate": "Nombre de pistes à générer",
- "acousticness": "Acoustique",
- "danceability": "Dansabilité",
+ "not_acoustic": "Acoustique",
+ "dance_ability": "Dansabilité",
"energy": "Énergie",
- "instrumentalness": "Instrumentalité",
+ "not_instrumental": "Instrumentalité",
"liveness": "Interprétation en direct",
"loudness": "Sonorité",
- "speechiness": "Parlé",
+ "talkative": "Parlé",
"valence": "Valeur émotionnelle",
"popularity": "Popularité",
"key": "Clé",
@@ -239,7 +239,7 @@
"sort_newest": "Trier par les plus récents",
"sort_oldest": "Trier par les plus anciens",
"sleep_timer": "Minuteur de veille",
- "mins": "{minutes} minutes",
+ "minutes": "{minutes} minutes",
"hours": "{hours} heures",
"hour": "{hours} heure",
"custom_hours": "Heures personnalisées",
@@ -250,7 +250,7 @@
"audio_source": "Source audio",
"ok": "OK",
"failed_to_encrypt": "Échec de la cryptage",
- "encryption_failed_warning": "Spotube utilise le cryptage pour stocker vos données en toute sécurité. Mais cela a échoué. Il basculera donc vers un stockage non sécurisé\nSi vous utilisez Linux, assurez-vous d'avoir installé des services secrets tels que gnome-keyring, kde-wallet et keepassxc",
+ "encryption_failed_warning": "Spotube utilise le cryptage pour stocker vos données en toute sécurité. Mais cela a échoué. Il basculera donc vers un stockage non sécurisé\nSi vous utilisez Linux, assurez-vous d'avoir installé des services secrets tels que gnome-keyring, kde-wallet et KeePassXC",
"querying_info": "Interrogation des info...",
"piped_api_down": "L'API Piped est hors service",
"piped_down_error_instructions": "L'instance Piped {pipedInstance} est actuellement indisponible\n\nChangez soit l'instance, soit le 'Type d'API' pour utiliser l'API officielle de YouTube\n\nN'oubliez pas de redémarrer l'application après la modification",
@@ -370,9 +370,9 @@
"streamed_songs": "Morceaux diffusés",
"count_streams": "{count} streams",
"owned_by_you": "Possédé par vous",
- "copied_shareurl_to_clipboard": "{shareUrl} copié dans le presse-papier",
- "spotify_hipotetical_calculation": "*Cela est calculé en fonction du\npaiement par stream de Spotify de 0,003 $ à 0,005 $.\nIl s'agit d'un calcul hypothétique pour donner\nune idée de combien vous auriez\npayé aux artistes si vous aviez\nécouté leur chanson sur Spotify.",
- "count_mins": "{minutes} minutes",
+ "copied_share_url_to_clipboard": "{shareUrl} copié dans le presse-papier",
+ "spotify_hypothetical_calculation": "*Cela est calculé en fonction du\npaiement par stream de Spotify de 0,003 $ à 0,005 $.\nIl s'agit d'un calcul hypothétique pour donner\nune idée de combien vous auriez\npayé aux artistes si vous aviez\nécouté leur chanson sur Spotify.",
+ "count_minutes": "{minutes} minutes",
"summary_minutes": "minutes",
"summary_listened_to_music": "A écouté de la musique",
"summary_songs": "morceaux",
diff --git a/lib/l10n/app_hi.arb b/lib/l10n/app_hi.arb
index fc59d31a..4c84c39d 100644
--- a/lib/l10n/app_hi.arb
+++ b/lib/l10n/app_hi.arb
@@ -88,7 +88,7 @@
"mini_player": "मिनी प्लेयर",
"slide_to_seek": "आगे या पीछे खोजने के लिए स्लाइड करें",
"shuffle_playlist": "प्लेलिस्ट शफल करें",
- "unshuffle_playlist": "अनशफल प्लेलिस्ट",
+ "not_shuffle_playlist": "अनशफल प्लेलिस्ट",
"previous_track": "पिछला ट्रैक",
"next_track": "अगला ट्रैक",
"pause_playback": "वापसी बंद करें",
@@ -173,7 +173,7 @@
"first_go_to": "पहले, जाएं",
"login_if_not_logged_in": "और यदि आप लॉगिन नहीं हैं तो लॉगिन / साइनअप करें",
"step_2": "2 चरण",
- "step_2_steps": "1. जब आप लॉगिन हो जाएँ, तो F12 दबाएं या माउस राइट क्लिक> निरीक्षण करें ताकि ब्राउज़र डेवटूल्स खुलें।\n2. फिर ब्राउज़र के \"एप्लिकेशन\" टैब (Chrome, Edge, Brave आदि) या \"स्टोरेज\" टैब (Firefox, Palemoon आदि) में जाएं\n3. \"कुकीज़\" अनुभाग में जाएं फिर \"https: //accounts.spotify.com\" उप-अनुभाग में जाएं",
+ "step_2_steps": "1. जब आप लॉगिन हो जाएँ, तो F12 दबाएं या माउस राइट क्लिक> निरीक्षण करें ताकि ब्राउज़र डेवटूल्स खुलें।\n2. फिर ब्राउज़र के \"एप्लिकेशन\" टैब (Chrome, Edge, Brave आदि) या \"स्टोरेज\" टैब (Firefox, Pale Moon आदि) में जाएं\n3. \"कुकीज़\" अनुभाग में जाएं फिर \"https: //accounts.spotify.com\" उप-अनुभाग में जाएं",
"step_3": "स्टेप 3",
"success_emoji": "सफलता🥳",
"success_message": "अब आप अपने स्पॉटिफाई अकाउंट से सफलतापूर्वक लॉगइन हो गए हैं। अच्छा काम किया!",
@@ -194,13 +194,13 @@
"add_genres": "जान्र जोड़ें",
"country": "देश",
"number_of_tracks_generate": "उत्पन्न करने के लिए ट्रैक की संख्या",
- "acousticness": "ध्वनिकता",
- "danceability": "नृत्यता",
+ "not_acoustic": "ध्वनिकता",
+ "dance_ability": "नृत्यता",
"energy": "ऊर्जा",
- "instrumentalness": "आलापिकता",
+ "not_instrumental": "आलापिकता",
"liveness": "जीवंतता",
"loudness": "शोर",
- "speechiness": "बोलचालता",
+ "talkative": "बोलचालता",
"valence": "मनोदयता",
"popularity": "लोकप्रियता",
"key": "कुंजी",
@@ -239,7 +239,7 @@
"sort_newest": "नवीनतम जोड़े गए के अनुसार क्रमबद्ध करें",
"sort_oldest": "सबसे पुराने जोड़े गए के अनुसार क्रमबद्ध करें",
"sleep_timer": "स्लीप टाइमर",
- "mins": "{minutes} मिनट",
+ "minutes": "{minutes} मिनट",
"hours": "{hours} घंटे",
"hour": "{hours} घंटा",
"custom_hours": "कस्टम घंटे",
@@ -250,7 +250,7 @@
"audio_source": "ऑडियो स्रोत",
"ok": "ठीक है",
"failed_to_encrypt": "एन्क्रिप्ट करने में विफल रहा",
- "encryption_failed_warning": "Spotube आपके डेटा को सुरक्षित रूप से स्टोर करने के लिए एन्क्रिप्शन का उपयोग करता है। लेकिन इसमें विफल रहा। इसलिए, यह असुरक्षित स्टोरेज पर फॉलबैक करेगा\nयदि आप Linux का उपयोग कर रहे हैं, तो कृपया सुनिश्चित करें कि आपके पास gnome-keyring, kde-wallet, keepassxc आदि जैसी कोई सीक्रेट-सर्विस इंस्टॉल की गई है",
+ "encryption_failed_warning": "Spotube आपके डेटा को सुरक्षित रूप से स्टोर करने के लिए एन्क्रिप्शन का उपयोग करता है। लेकिन इसमें विफल रहा। इसलिए, यह असुरक्षित स्टोरेज पर फॉलबैक करेगा\nयदि आप Linux का उपयोग कर रहे हैं, तो कृपया सुनिश्चित करें कि आपके पास gnome-keyring, kde-wallet, KeePassXC आदि जैसी कोई सीक्रेट-सर्विस इंस्टॉल की गई है",
"querying_info": "जानकारी प्राप्त करना",
"piped_api_down": "पाइप्ड एपीआई डाउन है",
"piped_down_error_instructions": "पाइप्ड इंस्टेंस {pipedInstance} वर्तमान में डाउन है\n\nइंस्टेंस बदलें या 'एपीआई प्रकार' को आधिकृत YouTube एपीआई में बदलें\n\nपरिवर्तन के बाद ऐप को फिर से चालने की सुनिश्चित करें",
@@ -366,7 +366,7 @@
"user_profile": "उपयोगकर्ता प्रोफ़ाइल",
"count_plays": "{count} प्ले",
"streaming_fees_hypothetical": "*Spotify की प्रति स्ट्रीम भुगतान के आधार पर\n$0.003 से $0.005 तक गणना की गई है। यह एक काल्पनिक\nगणना है जो उपयोगकर्ता को यह जानकारी देती है कि वे कितना भुगतान\nकरते यदि वे Spotify पर गाने सुनते।",
- "count_mins": "{minutes} मिनट",
+ "count_minutes": "{minutes} मिनट",
"summary_minutes": "मिनट",
"summary_listened_to_music": "सुनी गई संगीत",
"summary_songs": "गाने",
@@ -383,8 +383,8 @@
"streamed_songs": "स्ट्रीम गरिएका गीतहरू",
"count_streams": "{count} स्ट्रिम",
"owned_by_you": "तपाईंले स्वामित्व गरेको",
- "copied_shareurl_to_clipboard": "{shareUrl} क्लिपबोर्डमा कपी गरियो",
- "spotify_hipotetical_calculation": "*यो Spotify को प्रति स्ट्रीम भुगतानको आधारमा\n$0.003 देखि $0.005 को बीचमा गणना गरिएको हो। यो एक काल्पनिक\nगणना हो जसले प्रयोगकर्तालाई देखाउँछ कि उनीहरूले कति\nअर्टिस्टहरूलाई तिनीहरूका गीतहरू Spotify मा सुनेमा\nभुक्तान गर्नुपर्ने थियो।",
+ "copied_share_url_to_clipboard": "{shareUrl} क्लिपबोर्डमा कपी गरियो",
+ "spotify_hypothetical_calculation": "*यो Spotify को प्रति स्ट्रीम भुगतानको आधारमा\n$0.003 देखि $0.005 को बीचमा गणना गरिएको हो। यो एक काल्पनिक\nगणना हो जसले प्रयोगकर्तालाई देखाउँछ कि उनीहरूले कति\nअर्टिस्टहरूलाई तिनीहरूका गीतहरू Spotify मा सुनेमा\nभुक्तान गर्नुपर्ने थियो।",
"webview_not_found": "वेबव्यू नहीं मिला",
"webview_not_found_description": "आपके डिवाइस पर वेबव्यू रनटाइम इंस्टॉल नहीं है।\nअगर इंस्टॉल है, तो सुनिश्चित करें कि यह environment PATH में है\n\nइंस्टॉल करने के बाद, ऐप को पुनः शुरू करें",
"unsupported_platform": "असमर्थित प्लेटफार्म",
diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb
index 91bc9aef..f714f05e 100644
--- a/lib/l10n/app_id.arb
+++ b/lib/l10n/app_id.arb
@@ -91,7 +91,7 @@
"mini_player": "Pemutar Mini",
"slide_to_seek": "Geser untuk maju atau mundur",
"shuffle_playlist": "Acak daftar putar",
- "unshuffle_playlist": "Batalkan pengacakan daftar putar",
+ "not_shuffle_playlist": "Batalkan pengacakan daftar putar",
"previous_track": "Lagu sebelumnya",
"next_track": "Lagu berikutnya",
"pause_playback": "Jeda Pemutaran",
@@ -176,7 +176,7 @@
"first_go_to": "Pertama, Pergi ke",
"login_if_not_logged_in": "dan Masuk/Daftar jika Anda belum masuk",
"step_2": "Langkah 2",
- "step_2_steps": "1. Setelah Anda masuk, tekan F12 atau Klik Kanan Mouse > Buka Browser Devtools.\n2. Lalu buka Tab \"Aplikasi\" (Chrome, Edge, Brave, dll.) atau Tab \"Penyimpanan\" (Firefox, Palemoon, dll.)\n3. Buka bagian \"Cookie\" lalu subbagian \"https://accounts.spotify.com\"",
+ "step_2_steps": "1. Setelah Anda masuk, tekan F12 atau Klik Kanan Mouse > Buka Browser Devtools.\n2. Lalu buka Tab \"Aplikasi\" (Chrome, Edge, Brave, dll.) atau Tab \"Penyimpanan\" (Firefox, Pale Moon, dll.)\n3. Buka bagian \"Cookie\" lalu subbagian \"https://accounts.spotify.com\"",
"step_3": "Langkah 3",
"step_3_steps": "Salin nilai Cookie \"sp_dc\" ",
"success_emoji": "Berhasil🥳",
@@ -199,13 +199,13 @@
"add_genres": "Tambah Genre",
"country": "Negara",
"number_of_tracks_generate": "Jumlah trek yang akan dihasilkan",
- "acousticness": "Akustik",
- "danceability": "Menari",
+ "not_acoustic": "Akustik",
+ "dance_ability": "Menari",
"energy": "Energi",
- "instrumentalness": "Instrumentalitas",
+ "not_instrumental": "Instrumentalitas",
"liveness": "Kehidupan",
"loudness": "Kekerasan",
- "speechiness": "Berbicara",
+ "talkative": "Berbicara",
"valence": "Valensi",
"popularity": "Popularitas",
"key": "Kunci",
@@ -244,7 +244,7 @@
"sort_newest": "Urutkan yang baru ditambah",
"sort_oldest": "Urutkan yang paling lama ditambah",
"sleep_timer": "Pengatur Waktu Tidur",
- "mins": "{minutes} Menit",
+ "minutes": "{minutes} Menit",
"hours": "{hours} Jam",
"hour": "{hours} Jam",
"custom_hours": "Jam Kostum",
@@ -255,7 +255,7 @@
"audio_source": "Sumber Suara",
"ok": "OK",
"failed_to_encrypt": "Gagal mengenkripsi",
- "encryption_failed_warning": "Spotube menggunakan enkripsi untuk menyimpan data Anda dengan aman. Namun gagal melakukannya. Jadi itu akan kembali ke penyimpanan yang tidak aman\nJika Anda menggunakan linux, pastikan Anda telah menginstal layanan rahasia (gnome-keyring, kde-wallet, keepassxc, dll)",
+ "encryption_failed_warning": "Spotube menggunakan enkripsi untuk menyimpan data Anda dengan aman. Namun gagal melakukannya. Jadi itu akan kembali ke penyimpanan yang tidak aman\nJika Anda menggunakan linux, pastikan Anda telah menginstal layanan rahasia (gnome-keyring, kde-wallet, KeePassXC, dll)",
"querying_info": "Mencari informasi...",
"piped_api_down": "Piped API tidak aktif",
"piped_down_error_instructions": "Piped Instance {pipedInstance} saat ini tidak aktif\n\nUbah instance atau ubah 'jenis API' menjadi API YouTube resmi\n\nPastikan untuk memulai ulang aplikasi setelah perubahan",
@@ -370,9 +370,9 @@
"streamed_songs": "Lagu yang disiarkan",
"count_streams": "{count} streams",
"owned_by_you": "Dimiliki oleh Anda",
- "copied_shareurl_to_clipboard": "{shareUrl} disalin ke clipboard",
- "spotify_hipotetical_calculation": "*Ini dihitung berdasarkan pembayaran\nper stream Spotify dari $0,003 hingga $0,005.\nIni adalah perhitungan hipotetis untuk memberi\npengguna gambaran tentang berapa banyak\nmereka akan membayar kepada artis jika\nmereka mendengarkan lagu mereka di Spotify.",
- "count_mins": "{minutes} menit",
+ "copied_share_url_to_clipboard": "{shareUrl} disalin ke clipboard",
+ "spotify_hypothetical_calculation": "*Ini dihitung berdasarkan pembayaran\nper stream Spotify dari $0,003 hingga $0,005.\nIni adalah perhitungan hipotetis untuk memberi\npengguna gambaran tentang berapa banyak\nmereka akan membayar kepada artis jika\nmereka mendengarkan lagu mereka di Spotify.",
+ "count_minutes": "{minutes} menit",
"summary_minutes": "menit",
"summary_listened_to_music": "Mendengarkan musik",
"summary_songs": "lagu",
diff --git a/lib/l10n/app_it.arb b/lib/l10n/app_it.arb
index f598d363..172e19f1 100644
--- a/lib/l10n/app_it.arb
+++ b/lib/l10n/app_it.arb
@@ -18,7 +18,7 @@
"artists": "Artisti",
"albums": "Album",
"tracks": "Tracce",
- "downloads": "Downloads",
+ "downloads": "Scaricati",
"filter_playlists": "Filtra le tue playlist...",
"liked_tracks": "Tracce piaciute",
"liked_tracks_description": "Tutte le tracce piaciute",
@@ -90,12 +90,12 @@
"mini_player": "Mini Riproduttore",
"slide_to_seek": "Scorri per cercare avanti o indietro",
"shuffle_playlist": "Playlist casuale",
- "unshuffle_playlist": "Ordina playlist",
+ "not_shuffle_playlist": "Ordina playlist",
"previous_track": "Traccia precedente",
"next_track": "Traccia successiva",
"pause_playback": "Pausa Playback",
"resume_playback": "Riprendi Playback",
- "loop_track": "Cicla traccia",
+ "loop_track": "Itera traccia",
"repeat_playlist": "Ripeti playlist",
"queue": "Coda",
"alternative_track_sources": "Sorgenti traccia alternative",
@@ -126,8 +126,8 @@
"dark": "Scuro",
"light": "Chiaro",
"system": "Sistema",
- "accent_color": "Colore accento",
- "sync_album_color": "Syncronizza colore album",
+ "accent_color": "Colore principale",
+ "sync_album_color": "Sincronizza colore album",
"sync_album_color_description": "Usa il colore dominante della copertina dell'album come colore accento",
"playback": "Riproduzione",
"audio_quality": "Qualità Audio",
@@ -149,7 +149,7 @@
"about_spotube": "A proposito di Spotube",
"blacklist": "Blacklist",
"please_sponsor": "Per favore sponsorizza/dona",
- "spotube_description": "Spotube, un client spotify gratis per tutti, multipiattaforma e leggero",
+ "spotube_description": "Spotube, un client spotify gratis per tutti, multi-piattaforma e leggero",
"version": "Versione",
"build_number": "Numero Build",
"founder": "Fondatore",
@@ -175,15 +175,15 @@
"first_go_to": "Prim, vai a",
"login_if_not_logged_in": "ed effettua il login o iscrizione se non sei già acceduto",
"step_2": "Passo 2",
- "step_2_steps": "1. Quando sei acceduto premi F12 o premi il tasto destro del Mouse > Ispeziona per aprire gli strumenti di sviluppo del browser.\n2. Vai quindi nel tab \"Applicazione\" (Chrome, Edge, Brave etc..) o tab \"Archiviazione\" (Firefox, Palemoon etc..)\n3. Vai nella sezione \"Cookies\" quindi nella sezione \"https://accounts.spotify.com\"",
+ "step_2_steps": "1. Quando sei acceduto premi F12 o premi il tasto destro del Mouse > Ispeziona per aprire gli strumenti di sviluppo del browser.\n2. Vai quindi nel tab \"Applicazione\" (Chrome, Edge, Brave etc..) o tab \"Archiviazione\" (Firefox, Pale Moon etc..)\n3. Vai nella sezione \"Cookies\" quindi nella sezione \"https://accounts.spotify.com\"",
"step_3": "Passo 3",
"success_emoji": "Successo🥳",
"success_message": "Ora hai correttamente effettuato il login al tuo account Spotify. Bel lavoro, amico!",
"step_4": "Passo 4",
"something_went_wrong": "Qualcosa è andato storto",
"piped_instance": "Istanza Server Piped",
- "piped_description": "L'istanza server Piped da usare per il match della tracccia",
- "piped_warning": "Alcune di queste non funzioneranno benen. Usa quindi a tuo rischio",
+ "piped_description": "L'istanza server Piped da usare per il match della traccia",
+ "piped_warning": "Alcune di queste non funzioneranno bene. Usa quindi a tuo rischio",
"generate_playlist": "Genera Playlist",
"track_exists": "La traccia {track} esiste già",
"replace_downloaded_tracks": "Sostituisci tutte le tracce scaricate",
@@ -195,14 +195,14 @@
"select_genres": "Seleziona Generi",
"add_genres": "Aggiungi Generi",
"country": "Paese",
- "number_of_tracks_generate": "Nnumero di tracce da generare",
- "acousticness": "Acustica",
- "danceability": "Ballabilità",
+ "number_of_tracks_generate": "Numero di tracce da generare",
+ "not_acoustic": "Acustica",
+ "dance_ability": "Ballabile",
"energy": "Energia",
- "instrumentalness": "Strumentalità",
+ "not_instrumental": "Strumentalità",
"liveness": "Vitalità",
"loudness": "Sonorità",
- "speechiness": "Loquacità",
+ "talkative": "Loquacità",
"valence": "Valenza",
"popularity": "Popolarità",
"key": "Chiave",
@@ -222,11 +222,11 @@
"are_you_sure": "Sei certo?",
"generating_playlist": "Generazione delle tue playlist custom...",
"selected_count_tracks": "{count} tracce selezionate",
- "download_warning": "Se scarichi tutte le Tracce in massa stai chiaramente piratando Musica e causando un danno alla società creativa della Musica. Spero che tu sia cosciente di questo. Cerca di rispettare e supportare sempre il duro lavoro degli Artisti",
- "download_ip_ban_warning": "A proposito, il tuo IP può essere bloccato da YouTube per il numero di richieste di download eccessive rispetto la norma. Il blocco IP significa che non puoi usare YoutTube (anche hai effettuato l'accesso) per almeno 2-3 mesi dal dispositivo con questo IP. Spotube non ha responsabilità se questo dovesse accadere",
+ "download_warning": "Se scarichi tutte le Tracce in massa stai chiaramente scaricando illegalmente Musica e causando un danno alla società creativa della Musica. Spero che tu sia cosciente di questo. Cerca di rispettare e supportare sempre il duro lavoro degli Artisti",
+ "download_ip_ban_warning": "A proposito, il tuo IP può essere bloccato da YouTube per il numero di richieste di download eccessive rispetto la norma. Il blocco IP significa che non puoi usare YouTube (anche hai effettuato l'accesso) per almeno 2-3 mesi dal dispositivo con questo IP. Spotube non ha responsabilità se questo dovesse accadere",
"by_clicking_accept_terms": "Cliccando su 'accetta' concordi con i seguenti termini:",
- "download_agreement_1": "So che sto piratando Musica. Sono cattivo",
- "download_agreement_2": "Supporterò l'Artista come potrò e sto facendo questo solo perchè non ho denaro per acquistare il suo prodotto dell'ingegno",
+ "download_agreement_1": "So che sto scaricando illegalmente Musica. Sono cattivo",
+ "download_agreement_2": "Supporterò l'Artista come potrò e sto facendo questo solo perché non ho denaro per acquistare il suo prodotto dell'ingegno",
"download_agreement_3": "Sono completamente cosciente che il mio IP può essere bloccato da YouTube & non riterrò responsabili Spotube o i suoi autori/contributori per ogni inconveniente causato dalla mia azione corrente",
"decline": "Declino",
"accept": "Accetto",
@@ -241,7 +241,7 @@
"sort_newest": "Ordina per nuovi aggiunti",
"sort_oldest": "Ordina per aggiunta più vecchia",
"sleep_timer": "Timer Dormire",
- "mins": "{minutes} Minuti",
+ "minutes": "{minutes} Minuti",
"hours": "{hours} Ore",
"hour": "{hours} Ora",
"custom_hours": "Orari Personalizzati",
@@ -252,7 +252,7 @@
"youtube_api_type": "Tipo API",
"ok": "Ok",
"failed_to_encrypt": "Criptazione fallita",
- "encryption_failed_warning": "Spotube usa la criptazione per memorizzare in modo sicuro i dati. Ma ha fallito a farlo. Passerà quindi in ripiego alla memorizzazione non siscura\nSe stai usando Linux assicurati di avere un servizio di segretezza installato (gnome-keyring, kde-wallet, keepassxc etc)",
+ "encryption_failed_warning": "Spotube usa la criptazione per memorizzare in modo sicuro i dati. Ma ha fallito a farlo. Passerà quindi in ripiego alla memorizzazione non sicura\n Se stai usando Linux assicurati di avere un servizio di segretezza installato (gnome-keyring, kde-wallet, KeePassXC etc)",
"querying_info": "Richiesta informazioni...",
"piped_api_down": "Le Piped API non funzionano",
"piped_down_error_instructions": "L'istanza di Piped {pipedInstance} è correntemente offline\n\nCambia istanza o cambia 'Tipo API' alle API ufficiali YouTube\n\nAssicurati di riavviare l'app dopo il cambio",
@@ -271,8 +271,8 @@
"streaming_music_codec": "Codec musicale streaming",
"login_with_lastfm": "Accesso a Last.fm",
"connect": "Connetti",
- "disconnect_lastfm": "Disconnetti Last.fm",
- "disconnect": "Disconnetti",
+ "disconnect_lastfm": "Scollega Last.fm",
+ "disconnect": "Scollega",
"username": "Nome utente",
"password": "Password",
"login": "Accesso",
@@ -371,9 +371,9 @@
"streamed_songs": "Brani in streaming",
"count_streams": "{count} streaming",
"owned_by_you": "Di tua proprietà",
- "copied_shareurl_to_clipboard": "Copiato {shareUrl} negli appunti",
- "spotify_hipotetical_calculation": "*Questo è calcolato in base al pagamento per streaming di Spotify\nche va da $0.003 a $0.005. Questo è un calcolo ipotetico\nper dare all'utente un'idea di quanto avrebbe pagato agli artisti se avesse ascoltato\ne loro canzoni su Spotify.",
- "count_mins": "{minutes} min",
+ "copied_share_url_to_clipboard": "Copiato {shareUrl} negli appunti",
+ "spotify_hypothetical_calculation": "*Questo è calcolato in base al pagamento per streaming di Spotify\nche va da $0.003 a $0.005. Questo è un calcolo ipotetico\nper dare all'utente un'idea di quanto avrebbe pagato agli artisti se avesse ascoltato\ne loro canzoni su Spotify.",
+ "count_minutes": "{minutes} min",
"summary_minutes": "minuti",
"summary_listened_to_music": "Musica ascoltata",
"summary_songs": "brani",
diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb
index b885fa59..6dd9e21e 100644
--- a/lib/l10n/app_ja.arb
+++ b/lib/l10n/app_ja.arb
@@ -88,7 +88,7 @@
"mini_player": "ミニプレイヤー",
"slide_to_seek": "前後にスライドしてシーク",
"shuffle_playlist": "再生リストをシャッフル",
- "unshuffle_playlist": "再生リストのシャッフル解除",
+ "not_shuffle_playlist": "再生リストのシャッフル解除",
"previous_track": "前の曲",
"next_track": "次の曲",
"pause_playback": "再生を停止",
@@ -173,7 +173,7 @@
"first_go_to": "最初にここを開き",
"login_if_not_logged_in": "、ログインしてないならログインまたは登録します",
"step_2": "ステップ 2",
- "step_2_steps": "1. ログインしたら、F12を押すか、マウス右クリック > 調査(検証)でブラウザの開発者ツール (devtools) を開きます。\n2. アプリケーション (Application) タブ (Chrome, Edge, Brave など) またはストレージタブ (Firefox, Palemoon など)\n3. Cookies 欄を選択し、https://accounts.spotify.com の枝を選びます",
+ "step_2_steps": "1. ログインしたら、F12を押すか、マウス右クリック > 調査(検証)でブラウザの開発者ツール (devtools) を開きます。\n2. アプリケーション (Application) タブ (Chrome, Edge, Brave など) またはストレージタブ (Firefox, Pale Moon など)\n3. Cookies 欄を選択し、https://accounts.spotify.com の枝を選びます",
"step_3": "ステップ 3",
"success_emoji": "成功🥳",
"success_message": "アカウントへのログインに成功しました。よくできました!",
@@ -194,13 +194,13 @@
"add_genres": "ジャンルを追加",
"country": "国",
"number_of_tracks_generate": "生成する曲数",
- "acousticness": "アコースティック感",
- "danceability": "ダンス感",
+ "not_acoustic": "アコースティック感",
+ "dance_ability": "ダンス感",
"energy": "エネルギー",
- "instrumentalness": "インストゥルメンタル",
+ "not_instrumental": "インストゥルメンタル",
"liveness": "ライブ感",
"loudness": "ラウドネス",
- "speechiness": "会話感",
+ "talkative": "会話感",
"valence": "多幸性",
"popularity": "人気度",
"key": "キー",
@@ -239,7 +239,7 @@
"sort_newest": "追加日の新しい順に並び替え",
"sort_oldest": "追加日の古い順に並び替え",
"sleep_timer": "スリープタイマー",
- "mins": "{minutes} 分",
+ "minutes": "{minutes} 分",
"hours": "{hours} 時間",
"hour": "{hours} 時間",
"custom_hours": "時間を指定",
@@ -250,7 +250,7 @@
"audio_source": "音声ソース",
"ok": "分かりました",
"failed_to_encrypt": "暗号化に失敗しました",
- "encryption_failed_warning": "Spotubeはデータを安全に保存するために暗号化を使用しています。しかし、失敗しました。したがって、安全でないストレージにフォールバックします\nLinuxを使用している場合は、gnome-keyring、kde-wallet、keepassxcなどのシークレットサービスがインストールされていることを確認してください",
+ "encryption_failed_warning": "Spotubeはデータを安全に保存するために暗号化を使用しています。しかし、失敗しました。したがって、安全でないストレージにフォールバックします\nLinuxを使用している場合は、gnome-keyring、kde-wallet、KeePassXCなどのシークレットサービスがインストールされていることを確認してください",
"querying_info": "情報を取得中...",
"piped_api_down": "Piped APIがダウンしています",
"piped_down_error_instructions": "Pipedインスタンス{pipedInstance}は現在ダウンしています\n\nインスタンスを変更するか、'APIタイプ'を公式のYouTube APIに変更してください\n\n変更後にアプリを再起動してください",
@@ -366,7 +366,7 @@
"user_profile": "ユーザープロフィール",
"count_plays": "{count} 回再生",
"streaming_fees_hypothetical": "*これは Spotify のストリームあたりの支払い\nが $0.003 から $0.005 であると仮定して計算されています。\nこれは、Spotify でその曲を聴いた場合にアーティストにいくら支払ったかの\n洞察を得るための仮定の計算です。",
- "count_mins": "{minutes} 分",
+ "count_minutes": "{minutes} 分",
"summary_minutes": "分",
"summary_listened_to_music": "音楽を聴いた",
"summary_songs": "曲",
@@ -383,8 +383,8 @@
"streamed_songs": "ストリーミングされた曲",
"count_streams": "{count} 回のストリーム",
"owned_by_you": "あなたが所有",
- "copied_shareurl_to_clipboard": "{shareUrl} をクリップボードにコピーしました",
- "spotify_hipotetical_calculation": "*これは、Spotifyのストリームごとの支払い\nが $0.003 から $0.005 の範囲で計算されています。これは仮想的な\n計算で、Spotify で曲を聴いた場合に、アーティストに\nどれくらい支払ったかをユーザーに示すためのものです。",
+ "copied_share_url_to_clipboard": "{shareUrl} をクリップボードにコピーしました",
+ "spotify_hypothetical_calculation": "*これは、Spotifyのストリームごとの支払い\nが $0.003 から $0.005 の範囲で計算されています。これは仮想的な\n計算で、Spotify で曲を聴いた場合に、アーティストに\nどれくらい支払ったかをユーザーに示すためのものです。",
"webview_not_found": "Webviewが見つかりません",
"webview_not_found_description": "デバイスにWebviewランタイムがインストールされていません。\nインストールされている場合は、environment PATHにあることを確認してください\n\nインストール後、アプリを再起動してください",
"unsupported_platform": "サポートされていないプラットフォーム",
diff --git a/lib/l10n/app_ka.arb b/lib/l10n/app_ka.arb
index 8bc9cf36..76fde2ee 100644
--- a/lib/l10n/app_ka.arb
+++ b/lib/l10n/app_ka.arb
@@ -91,7 +91,7 @@
"mini_player": "მინი დამკვრელი",
"slide_to_seek": "გადახვევისთვის გაასრიალეთ წინ ან უკან",
"shuffle_playlist": "ფლეილისტის არევა",
- "unshuffle_playlist": "ფლეილისტის დალაგება",
+ "not_shuffle_playlist": "ფლეილისტის დალაგება",
"previous_track": "წინა ტრეკი",
"next_track": "შემდეგი ტრეკი",
"pause_playback": "დაკვრის გაჩერება",
@@ -176,7 +176,7 @@
"first_go_to": "პირველი, გადადით",
"login_if_not_logged_in": "და შესვლა/რეგისტრაცია, თუ არ ხართ შესული",
"step_2": "ნაბიჯი 2",
- "step_2_steps": "1. როცა შეხვალთ, დააჭირეთ F12-ს ან მაუსის მარჯვენა ღილაკს > Inspect to Open the Browser devtools.\n2. შემდეგ გახსენით \"Application\" განყოფილება (Chrome, Edge, Brave etc..) ან \"Storage\" განყოფილება (Firefox, Palemoon etc..)\n3. შედით \"Cookies\" სექციაში და შემდეგ \"https://accounts.spotify.com\" სუბსექციაში",
+ "step_2_steps": "1. როცა შეხვალთ, დააჭირეთ F12-ს ან მაუსის მარჯვენა ღილაკს > Inspect to Open the Browser devtools.\n2. შემდეგ გახსენით \"Application\" განყოფილება (Chrome, Edge, Brave etc..) ან \"Storage\" განყოფილება (Firefox, Pale Moon etc..)\n3. შედით \"Cookies\" სექციაში და შემდეგ \"https://accounts.spotify.com\" სუბსექციაში",
"step_3": "ნაბიჯი 3",
"step_3_steps": "დააკოპირეთ \"sp_dc\" ქუქი-ფაილის მნიშვნელობა",
"success_emoji": "წარმატება🥳",
@@ -199,13 +199,13 @@
"add_genres": "ჟანრების დამატება",
"country": "ქვეყანა",
"number_of_tracks_generate": "დასაგენერირებელი ტრეკების რაოდენობა",
- "acousticness": "Acousticness",
- "danceability": "Danceability",
+ "not_acoustic": "not_acoustic",
+ "dance_ability": "dance_ability",
"energy": "Energy",
- "instrumentalness": "Instrumentalness",
+ "not_instrumental": "not_instrumental",
"liveness": "Liveness",
"loudness": "Loudness",
- "speechiness": "Speechiness",
+ "talkative": "talkative",
"valence": "Valence",
"popularity": "Popularity",
"key": "Key",
@@ -244,7 +244,7 @@
"sort_newest": "ფალაგება სიახლის მიხედიტ",
"sort_oldest": "დალაგება სიძველის მიხედვით",
"sleep_timer": "ძილის ტაიმერი",
- "mins": "{minutes} წუთი",
+ "minutes": "{minutes} წუთი",
"hours": "{hours} საათი",
"hour": "{hours} საათი",
"custom_hours": "მორგებული საათები",
@@ -255,7 +255,7 @@
"audio_source": "აუდიოს წყარო",
"ok": "ოკ",
"failed_to_encrypt": "დაშიფვრა ვერ მოხერხდა",
- "encryption_failed_warning": "Spotube uses encryption to securely store your data. But failed to do so. So it'll fallback to insecure storage\nIf you're using linux, please make sure you've any secret-service (gnome-keyring, kde-wallet, keepassxc etc) installed",
+ "encryption_failed_warning": "Spotube uses encryption to securely store your data. But failed to do so. So it'll fallback to insecure storage\nIf you're using linux, please make sure you've any secret-service (gnome-keyring, kde-wallet, KeePassXC etc) installed",
"querying_info": "Querying info...",
"piped_api_down": "Piped API is down",
"piped_down_error_instructions": "The Piped instance {pipedInstance} is currently down\n\nEither change the instance or change the 'API type' to official YouTube API\n\nMake sure to restart the app after change",
@@ -366,7 +366,7 @@
"user_profile": "მომხმარებლის პროფილი",
"count_plays": "{count} გაწვდვა",
"streaming_fees_hypothetical": "*ეს рассчитывается на основе выплат за поток от Spotify\nот $0.003 до $0.005. ეს ჰიპოთეტური გამოთვლა იძლევა მომხმარებელს წარმოდგენას იმაზე, რამდენად\nგადახდილი იქნებოდა არტისტებისთვის, თუ მათ მოუსმინოს Spotify-ს ტრეკებს.",
- "count_mins": "{minutes} წუთი",
+ "count_minutes": "{minutes} წუთი",
"summary_minutes": "წუთები",
"summary_listened_to_music": "მუსიკა გაწვდილი",
"summary_songs": "მელოდია",
@@ -383,8 +383,8 @@
"streamed_songs": "სტრიმირებული სიმღერები",
"count_streams": "{count} სტრიმი",
"owned_by_you": "შენ მიერ საკუთრებული",
- "copied_shareurl_to_clipboard": "{shareUrl} აიღო კლიპბორდზე",
- "spotify_hipotetical_calculation": "*ეს გამოითვლება Spotify-ის თითოეულ სტრიმზე\nგადახდის შესაბამისად, რომელიც $0.003 დან $0.005-მდეა. ეს არის ჰიპოთეტური\nგამოთვლა, რომელიც აჩვენებს მომხმარებელს რამდენი გადაიხდიდა\nარტისტებს, თუკი ისინი უსმენდნენ მათ სიმღერებს Spotify-ზე.",
+ "copied_share_url_to_clipboard": "{shareUrl} აიღო კლიპბორდზე",
+ "spotify_hypothetical_calculation": "*ეს გამოითვლება Spotify-ის თითოეულ სტრიმზე\nგადახდის შესაბამისად, რომელიც $0.003 დან $0.005-მდეა. ეს არის ჰიპოთეტური\nგამოთვლა, რომელიც აჩვენებს მომხმარებელს რამდენი გადაიხდიდა\nარტისტებს, თუკი ისინი უსმენდნენ მათ სიმღერებს Spotify-ზე.",
"webview_not_found": "ვებვიუ ვერ მოიძებნა",
"webview_not_found_description": "თქვენს მოწყობილობაზე ვებვიუის შესრულების დრო არ არის დაყენებული.\nთუ დაყენებულია, დარწმუნდით, რომ ის environment PATH-შია\n\nდაყენების შემდეგ, გადატვირთეთ აპი",
"unsupported_platform": "მოუხერხებელი პლატფორმა",
diff --git a/lib/l10n/app_ko.arb b/lib/l10n/app_ko.arb
index 6c8031b5..fe98c4ed 100644
--- a/lib/l10n/app_ko.arb
+++ b/lib/l10n/app_ko.arb
@@ -88,7 +88,7 @@
"mini_player": "미니 플레이어",
"slide_to_seek": "앞뒤로 슬라이드하여 탐색",
"shuffle_playlist": "플레이리스트를 섞기",
- "unshuffle_playlist": "플레이리스트를 섞지 않기",
+ "not_shuffle_playlist": "플레이리스트를 섞지 않기",
"previous_track": "이전 곡",
"next_track": "다음 곡",
"pause_playback": "일시정지",
@@ -173,7 +173,7 @@
"first_go_to": "가장 먼저 먼저 들어갈 곳은 ",
"login_if_not_logged_in": "그리고 로그인을 하지 않았다면 로그인해주세요",
"step_2": "2단계",
- "step_2_steps": "1. 로그인에 성공하면、F12나 마우스 우클릭 > 검사(Inspect)을 눌러 브라우저의 개발자 도구(devtools)를 열어주세요.\n2. 애플리케이션 (Application) 탭 (Chrome, Edge, Brave 등) 또는 스토리지 탭 (Firefox, Palemoon 등)을 열어주세요.\n3. 쿠키 (Cookies) 섹션으로 들어가서, https://accounts.spotify.com 서브섹션으로 들어가주세요.",
+ "step_2_steps": "1. 로그인에 성공하면、F12나 마우스 우클릭 > 검사(Inspect)을 눌러 브라우저의 개발자 도구(devtools)를 열어주세요.\n2. 애플리케이션 (Application) 탭 (Chrome, Edge, Brave 등) 또는 스토리지 탭 (Firefox, Pale Moon 등)을 열어주세요.\n3. 쿠키 (Cookies) 섹션으로 들어가서, https://accounts.spotify.com 서브섹션으로 들어가주세요.",
"step_3": "3단계",
"success_emoji": "성공🥳",
"success_message": "성공적으로 스포티파이 게정으로 로그인했습니다. 잘했어요!",
@@ -194,13 +194,13 @@
"add_genres": "장르 추가",
"country": "국가",
"number_of_tracks_generate": "생성할 곡 수",
- "acousticness": "반주 구간 (Acousticness)",
- "danceability": "흥겨운 정도 (Danceability)",
+ "not_acoustic": "반주 구간 (not_acoustic)",
+ "dance_ability": "흥겨운 정도 (dance_ability)",
"energy": "에너지 (Energy)",
- "instrumentalness": "기악성 (Instrumentalness)",
+ "not_instrumental": "기악성 (not_instrumental)",
"liveness": "생동감 (Liveness)",
"loudness": "라우드니스 (Loudness)",
- "speechiness": "회화성 (Speechniss)",
+ "talkative": "회화성 (Speechniss)",
"valence": "감정가 (Valence)",
"popularity": "인기도 (Popularity)",
"key": "조성 (키)",
@@ -239,7 +239,7 @@
"sort_newest": "최근에 추가된 순으로 정렬",
"sort_oldest": "예전에 추가된 순으로 정렬",
"sleep_timer": "취침 타이머",
- "mins": "{minutes} 분",
+ "minutes": "{minutes} 분",
"hours": "{hours} 시간",
"hour": "{hours} 시간",
"custom_hours": "시간 설정",
@@ -250,7 +250,7 @@
"audio_source": "오디오 출처",
"ok": "알겠습니다",
"failed_to_encrypt": "암호화에 실패했습니다",
- "encryption_failed_warning": "Spotube는 암호화를 사용하여 데이터를 안전하게 저장합니다. 하지만 그렇게 하지 못했습니다. 따라서 안전하지 않은 저장소로 대체됩니다.\n리눅스를 사용하는 경우, 비밀 서비스(gnome-keyring, kde-wallet, keepassxc 등)가 설치되어 있는지 확인하세요.",
+ "encryption_failed_warning": "Spotube는 암호화를 사용하여 데이터를 안전하게 저장합니다. 하지만 그렇게 하지 못했습니다. 따라서 안전하지 않은 저장소로 대체됩니다.\n리눅스를 사용하는 경우, 비밀 서비스(gnome-keyring, kde-wallet, KeePassXC 등)가 설치되어 있는지 확인하세요.",
"querying_info": "정보를 얻는 중...",
"piped_api_down": "Piped API가 응답하지 않습니다",
"piped_down_error_instructions": "Piped 인스턴스 {pipedInstance}가 현재 다운되었습니다.\n\n인스턴스를 변경하거나 'API 유형'을 공식 YouTube API로 변경하세요.\n\n변경 후 앱을 다시 시작해야 합니다.",
@@ -367,7 +367,7 @@
"user_profile": "사용자 프로필",
"count_plays": "{count} 재생",
"streaming_fees_hypothetical": "*이것은 Spotify의 스트림당 지급액\n$0.003에서 $0.005를 기준으로 계산된 것입니다.\n이것은 사용자가 Spotify에서 곡을 들었을 때\n아티스트에게 지불했을 금액에 대한 통찰을 제공하기 위한\n가상의 계산입니다.",
- "count_mins": "{minutes} 분",
+ "count_minutes": "{minutes} 분",
"summary_minutes": "분",
"summary_listened_to_music": "듣는 음악",
"summary_songs": "곡",
@@ -384,8 +384,8 @@
"streamed_songs": "스트리밍된 곡",
"count_streams": "{count} 스트림",
"owned_by_you": "당신이 소유",
- "copied_shareurl_to_clipboard": "{shareUrl}를 클립보드에 복사했습니다",
- "spotify_hipotetical_calculation": "*Spotify의 스트림당 지불금 $0.003에서 $0.005까지의\n기준으로 계산되었습니다. 이는 사용자가 Spotify에서\n곡을 들을 때 아티스트에게 얼마를 지불했을지를\n알려주기 위한 가상의 계산입니다.",
+ "copied_share_url_to_clipboard": "{shareUrl}를 클립보드에 복사했습니다",
+ "spotify_hypothetical_calculation": "*Spotify의 스트림당 지불금 $0.003에서 $0.005까지의\n기준으로 계산되었습니다. 이는 사용자가 Spotify에서\n곡을 들을 때 아티스트에게 얼마를 지불했을지를\n알려주기 위한 가상의 계산입니다.",
"webview_not_found": "웹뷰를 찾을 수 없음",
"webview_not_found_description": "기기에 웹뷰 런타임이 설치되지 않았습니다.\n설치되어 있으면 environment PATH에 있는지 확인하십시오\n\n설치 후 앱을 다시 시작하세요",
"unsupported_platform": "지원되지 않는 플랫폼",
diff --git a/lib/l10n/app_ne.arb b/lib/l10n/app_ne.arb
index beddc3ad..eb0eb6a2 100644
--- a/lib/l10n/app_ne.arb
+++ b/lib/l10n/app_ne.arb
@@ -90,7 +90,7 @@
"mini_player": "मिनि प्लेयर",
"slide_to_seek": "अगाडि वा पछाडि खोजी गर्नका लागि स्लाइड गर्नुहोस्",
"shuffle_playlist": "प्लेलिस्ट शफल गर्नुहोस्",
- "unshuffle_playlist": "प्लेलिस्ट शफल नगर्नुहोस्",
+ "not_shuffle_playlist": "प्लेलिस्ट शफल नगर्नुहोस्",
"previous_track": "पूर्व ट्र्याक",
"next_track": "अरू ट्र्याक",
"pause_playback": "प्लेब्याक रोक्नुहोस्",
@@ -175,7 +175,7 @@
"first_go_to": "पहिलो, जानुहोस्",
"login_if_not_logged_in": "र लगइन/साइनअप गर्नुहोस् जुन तपाईंले लगइन गरेनन्",
"step_2": "कदम 2",
- "step_2_steps": "1. एकबार तपाईं लगइन गरे पछि, F12 थिच्नुहोस् वा माउस राइट क्लिक गर्नुहोस् > इन्स्पेक्ट गर्नुहोस् भने ब्राउजर डेभटुलहरू खुलाउनका लागि।\n2. तपाईंको \"एप्लिकेसन\" ट्याबमा जानुहोस् (Chrome, Edge, Brave इत्यादि) वा \"स्टोरेज\" ट्याबमा जानुहोस् (Firefox, Palemoon इत्यादि)\n3. तपाईंको इन्सेक्ट गरेको ब्राउजर डेभटुलहरूमा \"कुकीहरू\" खण्डमा जानुहोस् अनि \"https://accounts.spotify.com\" उपकोणमा जानुहोस्",
+ "step_2_steps": "1. एकबार तपाईं लगइन गरे पछि, F12 थिच्नुहोस् वा माउस राइट क्लिक गर्नुहोस् > इन्स्पेक्ट गर्नुहोस् भने ब्राउजर डेभटुलहरू खुलाउनका लागि।\n2. तपाईंको \"एप्लिकेसन\" ट्याबमा जानुहोस् (Chrome, Edge, Brave इत्यादि) वा \"स्टोरेज\" ट्याबमा जानुहोस् (Firefox, Pale Moon इत्यादि)\n3. तपाईंको इन्सेक्ट गरेको ब्राउजर डेभटुलहरूमा \"कुकीहरू\" खण्डमा जानुहोस् अनि \"https://accounts.spotify.com\" उपकोणमा जानुहोस्",
"step_3": "कदम 3",
"step_3_steps": "\"sp_dc\" र \"sp_key\" (वा sp_gaid) कुकीहरूको मानहरू प्रतिलिपि गर्नुहोस्",
"success_emoji": "सफलता 🥳",
@@ -198,13 +198,13 @@
"add_genres": "जनरहरू थप्नुहोस्",
"country": "देश",
"number_of_tracks_generate": "बनाउनका लागि ट्र्याकहरूको संख्या",
- "acousticness": "एकोस्टिकनेस",
- "danceability": "नृत्यक्षमता",
+ "not_acoustic": "एकोस्टिकनेस",
+ "dance_ability": "नृत्यक्षमता",
"energy": "ऊर्जा",
- "instrumentalness": "साजा रहेकोता",
+ "not_instrumental": "साजा रहेकोता",
"liveness": "प्राणिकता",
"loudness": "शोर",
- "speechiness": "भाषण",
+ "talkative": "भाषण",
"valence": "मानसिक स्वभाव",
"popularity": "लोकप्रियता",
"key": "कुञ्जी",
@@ -243,7 +243,7 @@
"sort_newest": "नयाँ थपिएकोमा क्रमबद्ध गर्नुहोस्",
"sort_oldest": "पुरानो थपिएकोमा क्रमबद्ध गर्नुहोस्",
"sleep_timer": "सुत्ने टाइमर",
- "mins": "{minutes} मिनेटहरू",
+ "minutes": "{minutes} मिनेटहरू",
"hours": "{hours} घण्टाहरू",
"hour": "{hours} घण्टा",
"custom_hours": "कस्टम घण्टाहरू",
@@ -366,7 +366,7 @@
"user_profile": "प्रयोगकर्ता प्रोफाइल",
"count_plays": "{count} खेलाइन्छ",
"streaming_fees_hypothetical": "*यो Spotify को प्रति स्ट्रिमको आधारमा गणना गरिएको छ\n$0.003 देखि $0.005 बीचको भुक्तानी। यो एक काल्पनिक गणना हो\nउपयोगकर्तालाई यो थाहा दिनको लागि कि उनीहरूले अर्टिस्टहरूलाई\nSpotify मा गीत सुनेको भए कति भुक्तानी गर्ने थिए।",
- "count_mins": "{minutes} मिनेट",
+ "count_minutes": "{minutes} मिनेट",
"summary_minutes": "मिनेट",
"summary_listened_to_music": "सङ्गीत सुन्नु",
"summary_songs": "गीतहरू",
@@ -383,8 +383,8 @@
"streamed_songs": "स्ट्रीम गरिएका गीतहरू",
"count_streams": "{count} स्ट्रिम",
"owned_by_you": "तपाईंले स्वामित्व गरेको",
- "copied_shareurl_to_clipboard": "{shareUrl} क्लिपबोर्डमा कपी गरियो",
- "spotify_hipotetical_calculation": "*यो Spotify को प्रति स्ट्रीम भुगतानको आधारमा\n$0.003 देखि $0.005 को बीचमा गणना गरिएको हो। यो एक काल्पनिक\nगणना हो जसले प्रयोगकर्तालाई देखाउँछ कि उनीहरूले कति\nअर्टिस्टहरूलाई तिनीहरूका गीतहरू Spotify मा सुनेमा\nभुक्तान गर्नुपर्ने थियो।",
+ "copied_share_url_to_clipboard": "{shareUrl} क्लिपबोर्डमा कपी गरियो",
+ "spotify_hypothetical_calculation": "*यो Spotify को प्रति स्ट्रीम भुगतानको आधारमा\n$0.003 देखि $0.005 को बीचमा गणना गरिएको हो। यो एक काल्पनिक\nगणना हो जसले प्रयोगकर्तालाई देखाउँछ कि उनीहरूले कति\nअर्टिस्टहरूलाई तिनीहरूका गीतहरू Spotify मा सुनेमा\nभुक्तान गर्नुपर्ने थियो।",
"webview_not_found": "वेबभ्यू फेला परेन",
"webview_not_found_description": "तपाईंको उपकरणमा कुनै वेबभ्यू रनटाइम स्थापना गरिएको छैन।\nयदि स्थापना गरिएको छ भने, environment PATH मा छ कि छैन भनेर सुनिश्चित गर्नुहोस्\n\nस्थापना पछि, अनुप्रयोग पुनः सुरु गर्नुहोस्",
"unsupported_platform": "असमर्थित प्लेटफार्म",
diff --git a/lib/l10n/app_nl.arb b/lib/l10n/app_nl.arb
index 2127b382..1ebef413 100644
--- a/lib/l10n/app_nl.arb
+++ b/lib/l10n/app_nl.arb
@@ -90,7 +90,7 @@
"mini_player": "Minispeler",
"slide_to_seek": "Schuiven om vooruit of achteruit te zoeken",
"shuffle_playlist": "Afspeellijst schuifelen",
- "unshuffle_playlist": "Afspeellijst onschuifelen",
+ "not_shuffle_playlist": "Afspeellijst onschuifelen",
"previous_track": "Vorige nummer",
"next_track": "Volgende nummer",
"pause_playback": "Afspelen pauzeren",
@@ -175,7 +175,7 @@
"first_go_to": "Ga eerst naar",
"login_if_not_logged_in": "en Inloggen/Aanmelden als je niet bent ingelogd",
"step_2": "Stap 2",
- "step_2_steps": "1. Zodra je bent aangemeld, druk je op F12 of klik je met de rechtermuisknop > Inspect om de Browser devtools te openen.\n2. Ga vervolgens naar het tabblad \"Toepassing\" (Chrome, Edge, Brave enz..) of naar het tabblad \"Opslag\" (Firefox, Palemoon enz..).\n3. Ga naar de sectie \"Cookies\" en vervolgens naar de subsectie \"https://accounts.spotify.com\".",
+ "step_2_steps": "1. Zodra je bent aangemeld, druk je op F12 of klik je met de rechtermuisknop > Inspect om de Browser devtools te openen.\n2. Ga vervolgens naar het tabblad \"Toepassing\" (Chrome, Edge, Brave enz..) of naar het tabblad \"Opslag\" (Firefox, Pale Moon enz..).\n3. Ga naar de sectie \"Cookies\" en vervolgens naar de subsectie \"https://accounts.spotify.com\".",
"step_3": "Stap 3",
"step_3_steps": "De waarde van cookie \"sp_dc\" kopiëren",
"success_emoji": "Succes🥳",
@@ -198,13 +198,13 @@
"add_genres": "Genres toevoegen",
"country": "Land",
"number_of_tracks_generate": "Aantal nummers om te genereren",
- "acousticness": "Akoestiek",
- "danceability": "Dansbaarheid",
+ "not_acoustic": "Akoestiek",
+ "dance_ability": "Dansbaarheid",
"energy": "Energie",
- "instrumentalness": "Instrumentaliteit",
+ "not_instrumental": "Instrumentaliteit",
"liveness": "Levendigheid",
"loudness": "Luidheid",
- "speechiness": "Spraak",
+ "talkative": "Spraak",
"valence": "Valentie",
"popularity": "Populariteit",
"key": "Sleutel",
@@ -225,7 +225,7 @@
"generating_playlist": "Aangepaste afspeellijst genereren…",
"selected_count_tracks": "{count} nummers geselecteerd",
"download_warning": "Als je alle nummers in bulk downloadt, ben je duidelijk bezig met muziekpiraterij en breng je schade toe aan de creatieve muziekmaatschappij. Ik hoop dat je je hiervan bewust bent. Probeer altijd het harde werk van artiesten te respecteren en te steunen.",
- "download_ip_ban_warning": "BTW, je IP-adres kan worden geblokkeerd op YouTube als gevolg van buitensporige downloadverzoeken. IP-blokkering betekent dat je YouTube niet kunt gebruiken (zelfs als je ingelogd bent) voor tenminste 2-3 maanden vanaf dat IP-apparaat. Spotube is niet verantwoordelijk als dit ooit gebeurt.",
+ "download_ip_ban_warning": "BTW, je IP-adres kan worden geblokkeerd op YouTube als gevolg van buitensporige downloadverzoeken. IP-blokkering betekent dat je YouTube niet kunt gebruiken (zelfs als je ingelogd bent) voor tenminuteste 2-3 maanden vanaf dat IP-apparaat. Spotube is niet verantwoordelijk als dit ooit gebeurt.",
"by_clicking_accept_terms": "Door op 'accepteren' te klikken ga je akkoord met de volgende voorwaarden:",
"download_agreement_1": "Ik weet dat ik muziek illegaal donload. Ik ben slecht.",
"download_agreement_2": "Ik steun de artiest waar ik kan en ik doe dit alleen omdat ik geen geld heb om hun kunst te kopen.",
@@ -243,7 +243,7 @@
"sort_newest": "Sorteren op nieuwste toegevoegd",
"sort_oldest": "Sorteren op oudste toegevoegd",
"sleep_timer": "Slaaptimer",
- "mins": "{minutes} minuten",
+ "minutes": "{minutes} minuten",
"hours": "{hours} uren",
"hour": "{hours} uur",
"custom_hours": "Aangepaste uren",
@@ -254,7 +254,7 @@
"youtube_api_type": "API-type",
"ok": "Oké",
"failed_to_encrypt": "Versleuteling mislukt",
- "encryption_failed_warning": "Spotube gebruikt versleuteling om je gegevens veilig op te slaan. Maar dat is niet gelukt. Dus zal het terugvallen op onveilige opslag.\nAls je linux gebruikt, zorg er dan voor dat je een geheim-dienst (gnome-keyring, kde-wallet, keepassxc etc) hebt geïnstalleerd.",
+ "encryption_failed_warning": "Spotube gebruikt versleuteling om je gegevens veilig op te slaan. Maar dat is niet gelukt. Dus zal het terugvallen op onveilige opslag.\nAls je linux gebruikt, zorg er dan voor dat je een geheim-dienst (gnome-keyring, kde-wallet, KeePassXC etc) hebt geïnstalleerd.",
"querying_info": "Info opvragen…",
"piped_api_down": "Piped API is uit",
"piped_down_error_instructions": "De Piped-instantie {pipedInstance} is momenteel uitgevallen\n\nVerander de instantie of verander het 'API-type' naar de officiële YouTube API.\n\nZorg ervoor dat u de app herstart na de wijziging",
@@ -367,7 +367,7 @@
"user_profile": "Gebruikersprofiel",
"count_plays": "{count} afspeelbeurten",
"streaming_fees_hypothetical": "*Dit is berekend op basis van Spotify's uitbetaling per stream\nvan $0.003 tot $0.005. Dit is een hypothetische\nberekening om gebruikers inzicht te geven in hoeveel ze\naan de artiesten zouden hebben betaald als ze hun lied op Spotify zouden hebben beluisterd.",
- "count_mins": "{minutes} min",
+ "count_minutes": "{minutes} min",
"summary_minutes": "minuten",
"summary_listened_to_music": "Beluisterde muziek",
"summary_songs": "nummers",
@@ -384,8 +384,8 @@
"streamed_songs": "Gestreamde nummers",
"count_streams": "{count} streams",
"owned_by_you": "Bezit door jou",
- "copied_shareurl_to_clipboard": "{shareUrl} gekopieerd naar klembord",
- "spotify_hipotetical_calculation": "*Dit is berekend op basis van Spotify's betaling per stream\nvan $0.003 tot $0.005. Dit is een hypothetische\nberekening om de gebruiker inzicht te geven in hoeveel ze\naan de artiesten zouden hebben betaald als ze hun liedjes op Spotify\nzouden luisteren.",
+ "copied_share_url_to_clipboard": "{shareUrl} gekopieerd naar klembord",
+ "spotify_hypothetical_calculation": "*Dit is berekend op basis van Spotify's betaling per stream\nvan $0.003 tot $0.005. Dit is een hypothetische\nberekening om de gebruiker inzicht te geven in hoeveel ze\naan de artiesten zouden hebben betaald als ze hun liedjes op Spotify\nzouden luisteren.",
"webview_not_found": "Webview niet gevonden",
"webview_not_found_description": "Er is geen Webview-runtime geïnstalleerd op uw apparaat.\nAls het is geïnstalleerd, zorg ervoor dat het in het environment PATH staat\n\nHerstart de app na installatie",
"unsupported_platform": "Niet ondersteund platform",
diff --git a/lib/l10n/app_pl.arb b/lib/l10n/app_pl.arb
index ade74c90..182fea51 100644
--- a/lib/l10n/app_pl.arb
+++ b/lib/l10n/app_pl.arb
@@ -88,7 +88,7 @@
"mini_player": "Mały odwarzacz",
"slide_to_seek": "Przesuń, aby przewinąć do przodu lub do tyłu.",
"shuffle_playlist": "Odtwarzaj losowo z playlisty",
- "unshuffle_playlist": "Nie odtwarzaj losowo z playlisty",
+ "not_shuffle_playlist": "Nie odtwarzaj losowo z playlisty",
"previous_track": "Poprzedni utwór",
"next_track": "Następny utwór",
"pause_playback": "Zatrzymaj odwarzanie",
@@ -173,7 +173,7 @@
"first_go_to": "Po pierwsze przejdź do",
"login_if_not_logged_in": "i Zaloguj się/Zarejestruj jeśli nie jesteś zalogowany",
"step_2": "Krok 2",
- "step_2_steps": "1. Jeśli jesteś zalogowany, naciśnij klawisz F12 lub Kliknij prawym przyciskiem myszy > Zbadaj, aby odtworzyć narzędzia developerskie.\n2. Następnie przejdź do zakładki \"Application\" (Chrome, Edge, Brave etc..) lub zakładki \"Storage\" (Firefox, Palemoon etc..)\n3. Przejdź do sekcji \"Cookies\" a następnie do pod-sekcji \"https://accounts.spotify.com\"",
+ "step_2_steps": "1. Jeśli jesteś zalogowany, naciśnij klawisz F12 lub Kliknij prawym przyciskiem myszy > Zbadaj, aby odtworzyć narzędzia developerskie.\n2. Następnie przejdź do zakładki \"Application\" (Chrome, Edge, Brave etc..) lub zakładki \"Storage\" (Firefox, Pale Moon etc..)\n3. Przejdź do sekcji \"Cookies\" a następnie do pod-sekcji \"https://accounts.spotify.com\"",
"step_3": "Krok 3",
"success_emoji": "Sukces!🥳",
"success_message": "Udało ci się zalogować! Dobra robota, stary!",
@@ -194,13 +194,13 @@
"add_genres": "Dodaj Gatunki",
"country": "Kraj",
"number_of_tracks_generate": "Liczba utworów do wygenerowania",
- "acousticness": "Akustyczna",
- "danceability": "Taneczna",
+ "not_acoustic": "Akustyczna",
+ "dance_ability": "Taneczna",
"energy": "Energiczna",
- "instrumentalness": "Instrumentalna",
+ "not_instrumental": "Instrumentalna",
"liveness": "Żywa",
"loudness": "Głośna",
- "speechiness": "Wymowna",
+ "talkative": "Wymowna",
"valence": "Wartościowa",
"popularity": "Popularność",
"key": "Kluczowa",
@@ -239,7 +239,7 @@
"sort_newest": "Sortuj według ostatnio dodanych",
"sort_oldest": "Sortuj według najstarszych dodanych",
"sleep_timer": "Minutnik",
- "mins": "{minutes} Minuty",
+ "minutes": "{minutes} Minuty",
"hours": "{hours} Godziny",
"hour": "{hours} Godzina",
"custom_hours": "Własne godziny",
@@ -250,7 +250,7 @@
"audio_source": "Źródło dźwięku",
"ok": "Ok",
"failed_to_encrypt": "Nie można zaszyfrować :(",
- "encryption_failed_warning": "Spotube używa szyfrowania do bezpiecznego przechowywania danych. Ale nie udało się tego zrobić. Więc powróci do niezabezpieczonego przechowywania\nJeśli używasz Linuksa, upewnij się, że masz zainstalowane jakieś usługi do szyfrowania (gnome-keyring, kde-wallet, keepassxc itp.)",
+ "encryption_failed_warning": "Spotube używa szyfrowania do bezpiecznego przechowywania danych. Ale nie udało się tego zrobić. Więc powróci do niezabezpieczonego przechowywania\nJeśli używasz Linuksa, upewnij się, że masz zainstalowane jakieś usługi do szyfrowania (gnome-keyring, kde-wallet, KeePassXC itp.)",
"querying_info": "Szukam informacji...",
"piped_api_down": "API Piped jest niedostępne",
"piped_down_error_instructions": "Instancja Piped {pipedInstance} jest obecnie niedostępna\n\nZmień instancję lub zmień 'Rodzaj API' na oficjalne API YouTube\n\nUpewnij się, że po zmianie zrestartujesz aplikację",
@@ -366,7 +366,7 @@
"user_profile": "Profil użytkownika",
"count_plays": "{count} odtworzeń",
"streaming_fees_hypothetical": "*Obliczone na podstawie wypłaty Spotify za stream\nod $0.003 do $0.005. Jest to hipotetyczne\nobliczenie, które ma na celu pokazanie, ile\nużytkownik zapłaciłby artystom, gdyby odsłuchał\ntych utworów na Spotify.",
- "count_mins": "{minutes} min",
+ "count_minutes": "{minutes} min",
"summary_minutes": "minuty",
"summary_listened_to_music": "Słuchana muzyka",
"summary_songs": "utwory",
@@ -383,8 +383,8 @@
"streamed_songs": "Strumieniowane utwory",
"count_streams": "{count} strumieni",
"owned_by_you": "Własność Twoja",
- "copied_shareurl_to_clipboard": "{shareUrl} skopiowano do schowka",
- "spotify_hipotetical_calculation": "*Obliczone na podstawie płatności Spotify za strumień\nw zakresie od $0.003 do $0.005. Jest to hipotetyczne\nobliczenie mające na celu pokazanie użytkownikowi, ile\nzapłaciliby artystom, gdyby słuchali ich utworów na Spotify.",
+ "copied_share_url_to_clipboard": "{shareUrl} skopiowano do schowka",
+ "spotify_hypothetical_calculation": "*Obliczone na podstawie płatności Spotify za strumień\nw zakresie od $0.003 do $0.005. Jest to hipotetyczne\nobliczenie mające na celu pokazanie użytkownikowi, ile\nzapłaciliby artystom, gdyby słuchali ich utworów na Spotify.",
"webview_not_found": "Nie znaleziono Webview",
"webview_not_found_description": "Na twoim urządzeniu nie zainstalowano środowiska uruchomieniowego Webview.\nJeśli jest zainstalowany, upewnij się, że jest w environment PATH\n\nPo instalacji uruchom ponownie aplikację",
"unsupported_platform": "Nieobsługiwana platforma",
diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb
index 6b1098a9..9a05a15f 100644
--- a/lib/l10n/app_pt.arb
+++ b/lib/l10n/app_pt.arb
@@ -88,7 +88,7 @@
"mini_player": "Mini Player",
"slide_to_seek": "Arraste para avançar ou retroceder",
"shuffle_playlist": "Embaralhar playlist",
- "unshuffle_playlist": "Desembaralhar playlist",
+ "not_shuffle_playlist": "Desembaralhar playlist",
"previous_track": "Faixa anterior",
"next_track": "Próxima faixa",
"pause_playback": "Pausar Reprodução",
@@ -173,7 +173,7 @@
"first_go_to": "Primeiro, vá para",
"login_if_not_logged_in": "e faça login/cadastro se ainda não estiver logado",
"step_2": "Passo 2",
- "step_2_steps": "1. Uma vez logado, pressione F12 ou clique com o botão direito do mouse > Inspecionar para abrir as ferramentas de desenvolvimento do navegador.\n2. Em seguida, vá para a guia \"Aplicativo\" (Chrome, Edge, Brave, etc.) ou \"Armazenamento\" (Firefox, Palemoon, etc.)\n3. Acesse a seção \"Cookies\" e depois a subseção \"https://accounts.spotify.com\"",
+ "step_2_steps": "1. Uma vez logado, pressione F12 ou clique com o botão direito do mouse > Inspecionar para abrir as ferramentas de desenvolvimento do navegador.\n2. Em seguida, vá para a guia \"Aplicativo\" (Chrome, Edge, Brave, etc.) ou \"Armazenamento\" (Firefox, Pale Moon, etc.)\n3. Acesse a seção \"Cookies\" e depois a subseção \"https://accounts.spotify.com\"",
"step_3": "Passo 3",
"success_emoji": "Sucesso🥳",
"success_message": "Agora você está logado com sucesso em sua conta do Spotify. Bom trabalho!",
@@ -194,13 +194,13 @@
"add_genres": "Adicionar Gêneros",
"country": "País",
"number_of_tracks_generate": "Número de faixas a gerar",
- "acousticness": "Acústica",
- "danceability": "Dançabilidade",
+ "not_acoustic": "Acústica",
+ "dance_ability": "Dançabilidade",
"energy": "Energia",
- "instrumentalness": "Instrumentalidade",
+ "not_instrumental": "Instrumentalidade",
"liveness": "Vivacidade",
"loudness": "Volume",
- "speechiness": "Discurso",
+ "talkative": "Discurso",
"valence": "Valência",
"popularity": "Popularidade",
"key": "Tonalidade",
@@ -239,7 +239,7 @@
"sort_newest": "Ordenar por mais recente adicionado",
"sort_oldest": "Ordenar por mais antigo adicionado",
"sleep_timer": "Temporizador de Sono",
- "mins": "{minutes} Minutos",
+ "minutes": "{minutes} Minutos",
"hours": "{hours} Horas",
"hour": "{hours} Hora",
"custom_hours": "Horas Personalizadas",
@@ -250,7 +250,7 @@
"audio_source": "Fonte de Áudio",
"ok": "Ok",
"failed_to_encrypt": "Falha ao criptografar",
- "encryption_failed_warning": "O Spotube usa criptografia para armazenar seus dados com segurança, mas falhou em fazê-lo. Portanto, ele voltará para o armazenamento não seguro.\nSe você estiver usando o Linux, certifique-se de ter algum serviço secreto (gnome-keyring, kde-wallet, keepassxc, etc.) instalado",
+ "encryption_failed_warning": "O Spotube usa criptografia para armazenar seus dados com segurança, mas falhou em fazê-lo. Portanto, ele voltará para o armazenamento não seguro.\nSe você estiver usando o Linux, certifique-se de ter algum serviço secreto (gnome-keyring, kde-wallet, KeePassXC, etc.) instalado",
"querying_info": "Consultando informações...",
"piped_api_down": "A API do Piped está indisponível",
"piped_down_error_instructions": "A instância do Piped {pipedInstance} está atualmente indisponível\n\nMude a instância ou mude o 'Tipo de API' para a API oficial do YouTube\n\nCertifique-se de reiniciar o aplicativo após a alteração",
@@ -366,7 +366,7 @@
"user_profile": "Perfil do Usuário",
"count_plays": "{count} reproduzidos",
"streaming_fees_hypothetical": "*Calculado com base no pagamento por stream do Spotify\nque varia de $0.003 a $0.005. Isso é um cálculo hipotético\npara fornecer uma visão ao usuário sobre quanto eles\nteriam pago aos artistas se estivessem ouvindo\no seu som no Spotify.",
- "count_mins": "{minutes} min",
+ "count_minutes": "{minutes} min",
"summary_minutes": "minutos",
"summary_listened_to_music": "Música ouvida",
"summary_songs": "faixas",
@@ -383,8 +383,8 @@
"streamed_songs": "Músicas transmitidas",
"count_streams": "{count} streams",
"owned_by_you": "De sua propriedade",
- "copied_shareurl_to_clipboard": "{shareUrl} copiado para a área de transferência",
- "spotify_hipotetical_calculation": "*Isso é calculado com base no pagamento por stream do Spotify\nque varia de $0.003 a $0.005. Esta é uma cálculo hipotético\npara dar ao usuário uma visão de quanto teriam pago aos artistas\nse eles ouvissem suas músicas no Spotify.",
+ "copied_share_url_to_clipboard": "{shareUrl} copiado para a área de transferência",
+ "spotify_hypothetical_calculation": "*Isso é calculado com base no pagamento por stream do Spotify\nque varia de $0.003 a $0.005. Esta é uma cálculo hipotético\npara dar ao usuário uma visão de quanto teriam pago aos artistas\nse eles ouvissem suas músicas no Spotify.",
"webview_not_found": "Webview não encontrado",
"webview_not_found_description": "Nenhum runtime Webview está instalado no seu dispositivo.\nSe estiver instalado, certifique-se de que está no environment PATH\n\nApós a instalação, reinicie o aplicativo",
"unsupported_platform": "Plataforma não suportada",
diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb
index 461e8da8..18a3c9b0 100644
--- a/lib/l10n/app_ru.arb
+++ b/lib/l10n/app_ru.arb
@@ -90,7 +90,7 @@
"mini_player": "Мини-плеер",
"slide_to_seek": "Потяните для перемотки вперед или назад",
"shuffle_playlist": "Перемешать плейлист",
- "unshuffle_playlist": "Снять перемешивание плейлиста",
+ "not_shuffle_playlist": "Снять перемешивание плейлиста",
"previous_track": "Предыдущий трек",
"next_track": "Следующий трек",
"pause_playback": "Пауза воспроизведения",
@@ -178,7 +178,7 @@
"first_go_to": "Сначала перейдите в",
"login_if_not_logged_in": "и войдите или зарегистрируйтесь, если вы не вошли в систему",
"step_2": "Шаг 2",
- "step_2_steps": "1. После входа в систему нажмите F12 или щелкните правой кнопкой мыши > «Проверить», чтобы открыть инструменты разработчика браузера.\n2. Затем перейдите на вкладку \"Application\" (Chrome, Edge, Brave и т.д..) or \"Storage\" (Firefox, Palemoon и т.д..)\n3. Перейдите в раздел \"Cookies\", а затем в подраздел \"https://accounts.spotify.com\"",
+ "step_2_steps": "1. После входа в систему нажмите F12 или щелкните правой кнопкой мыши > «Проверить», чтобы открыть инструменты разработчика браузера.\n2. Затем перейдите на вкладку \"Application\" (Chrome, Edge, Brave и т.д..) or \"Storage\" (Firefox, Pale Moon и т.д..)\n3. Перейдите в раздел \"Cookies\", а затем в подраздел \"https://accounts.spotify.com\"",
"step_3": "Шаг 3",
"step_3_steps": "Скопируйте значение Cookie \"sp_dc\"",
"success_emoji": "Успешно🥳",
@@ -201,13 +201,13 @@
"add_genres": "Добавить жанр",
"country": "Страна",
"number_of_tracks_generate": "Количество треков для создания",
- "acousticness": "Акустичность",
- "danceability": "Ритмичность",
+ "not_acoustic": "Акустичность",
+ "dance_ability": "Ритмичность",
"energy": "Энергичность",
- "instrumentalness": "Инструментальность",
+ "not_instrumental": "Инструментальность",
"liveness": "Живость",
"loudness": "Громкость",
- "speechiness": "Речевой характер",
+ "talkative": "Речевой характер",
"valence": "Значимость",
"popularity": "Популярность",
"key": "Ключ",
@@ -246,7 +246,7 @@
"sort_newest": "Сортировать по самым новым добавленным",
"sort_oldest": "Сортировать по самым старым добавленным",
"sleep_timer": "Таймер сна",
- "mins": "{minutes} Минут",
+ "minutes": "{minutes} Минут",
"hours": "{hours} Часы",
"hour": "{hours} Час",
"custom_hours": "Пользовательские часы",
@@ -257,7 +257,7 @@
"audio_source": "Источник аудио",
"ok": "Ок",
"failed_to_encrypt": "Не удалось зашифровать",
- "encryption_failed_warning": "Spotube использует шифрование для безопасного хранения ваших данных. Однако в этом случае произошла ошибка. Поэтому будет использовано небезопасное хранилище.\nЕсли вы используете Linux, убедитесь, что у вас установлен какой-либо инструмент для работы с секретами (gnome-keyring, kde-wallet, keepassxc и т.д.)",
+ "encryption_failed_warning": "Spotube использует шифрование для безопасного хранения ваших данных. Однако в этом случае произошла ошибка. Поэтому будет использовано небезопасное хранилище.\nЕсли вы используете Linux, убедитесь, что у вас установлен какой-либо инструмент для работы с секретами (gnome-keyring, kde-wallet, KeePassXC и т.д.)",
"querying_info": "Запрос информации...",
"piped_api_down": "Piped API не отвечает",
"piped_down_error_instructions": "Экземпляр Piped {pipedInstance} в данный момент недоступен.\n\nВы можете либо изменить экземпляр, либо переключиться на использование официального API YouTube.\n\nНе забудьте перезапустить приложение после внесенных изменений",
@@ -366,7 +366,7 @@
"user_profile": "Профиль пользователя",
"count_plays": "{count} воспроизведений",
"streaming_fees_hypothetical": "*Рассчитано на основе выплат Spotify за стрим\nот $0.003 до $0.005. Это гипотетический\nрасчет, чтобы показать пользователю, сколько бы он\nзаплатил артистам, если бы слушал их песни на Spotify.",
- "count_mins": "{minutes} мин",
+ "count_minutes": "{minutes} мин",
"summary_minutes": "минуты",
"summary_listened_to_music": "Слушанная музыка",
"summary_songs": "песни",
@@ -383,8 +383,8 @@
"streamed_songs": "Стримленные песни",
"count_streams": "{count} стримов",
"owned_by_you": "Ваша собственность",
- "copied_shareurl_to_clipboard": "{shareUrl} скопировано в буфер обмена",
- "spotify_hipotetical_calculation": "*Это рассчитано на основе выплат Spotify за стрим\nот $0.003 до $0.005. Это гипотетический расчет,\nчтобы дать пользователю представление о том, сколько бы он\nзаплатил артистам, если бы слушал их песни на Spotify.",
+ "copied_share_url_to_clipboard": "{shareUrl} скопировано в буфер обмена",
+ "spotify_hypothetical_calculation": "*Это рассчитано на основе выплат Spotify за стрим\nот $0.003 до $0.005. Это гипотетический расчет,\nчтобы дать пользователю представление о том, сколько бы он\nзаплатил артистам, если бы слушал их песни на Spotify.",
"webview_not_found": "Webview не найден",
"webview_not_found_description": "На вашем устройстве не установлена среда выполнения Webview.\nЕсли он установлен, убедитесь, что он находится в environment PATH\n\nПосле установки перезапустите приложение",
"unsupported_platform": "Платформа не поддерживается",
diff --git a/lib/l10n/app_ta.arb b/lib/l10n/app_ta.arb
index 396a16fb..dfd5a41c 100644
--- a/lib/l10n/app_ta.arb
+++ b/lib/l10n/app_ta.arb
@@ -91,7 +91,7 @@
"mini_player": "சிறிய இயக்கி",
"slide_to_seek": "முன்னோக்கி அல்லது பின்னோக்கி செல்ல சறுக்கவும்",
"shuffle_playlist": "பாடல் பட்டியலை கலக்கு",
- "unshuffle_playlist": "பாடல் பட்டியலை கலக்காதே",
+ "not_shuffle_playlist": "பாடல் பட்டியலை கலக்காதே",
"previous_track": "முந்தைய பாடல்",
"next_track": "அடுத்த பாடல்",
"pause_playback": "இயக்கத்தை நிறுத்து",
@@ -180,7 +180,7 @@
"first_go_to": "முதலில், செல்லவேண்டியது",
"login_if_not_logged_in": "நீங்கள் உள்நுழையவில்லை என்றால் உள்நுழைக/பதிவுசெய்க",
"step_2": "இரண்டாம் படி",
- "step_2_steps": "1. நீங்கள் உள்நுழைந்தவுடன், F12 ஐ அழுத்தவும் அல்லது வலது கிளிக் செய்து > ஆய்வு செய்யவும் உலாவி டெவ்டூல்களைத் திறக்கவும்.\n2. பின்னர் \"பயன்பாடு\" தாவலுக்குச் செல்லவும் (Chrome, Edge, Brave போன்றவை) அல்லது \"சேமிப்பகம்\" தாவல் (Firefox, Palemoon போன்றவை)\n3. \"குக்கிகள்\" பிரிவுக்குச் சென்று பின்னர் \"https://accounts.spotify.com\" பிரிவுக்குச் செல்லவும்",
+ "step_2_steps": "1. நீங்கள் உள்நுழைந்தவுடன், F12 ஐ அழுத்தவும் அல்லது வலது கிளிக் செய்து > ஆய்வு செய்யவும் உலாவி டெவ்டூல்களைத் திறக்கவும்.\n2. பின்னர் \"பயன்பாடு\" தாவலுக்குச் செல்லவும் (Chrome, Edge, Brave போன்றவை) அல்லது \"சேமிப்பகம்\" தாவல் (Firefox, Pale Moon போன்றவை)\n3. \"குக்கிகள்\" பிரிவுக்குச் சென்று பின்னர் \"https://accounts.spotify.com\" பிரிவுக்குச் செல்லவும்",
"step_3": "மூன்றாம் படி",
"step_3_steps": "\"sp_dc\" நட்புநிரலின் மதிப்பை நகலெடுக்கவும்",
"success_emoji": "வெற்றி🥳",
@@ -206,13 +206,13 @@
"add_genres": "வகைகளைச் சேர்க்கவும்",
"country": "நாடு",
"number_of_tracks_generate": "உருவாக்க வேண்டிய பாடல்களின் எண்ணிக்கை",
- "acousticness": "அகவுஸ்டிக்னெஸ்",
- "danceability": "நடனத்தன்மை",
+ "not_acoustic": "அகவுஸ்டிக்னெஸ்",
+ "dance_ability": "நடனத்தன்மை",
"energy": "ஆற்றல்",
- "instrumentalness": "கருவித்தன்மை",
+ "not_instrumental": "கருவித்தன்மை",
"liveness": "உயிர்ப்புத்தன்மை",
"loudness": "ஒலி அளவு",
- "speechiness": "பேச்சுத்தன்மை",
+ "talkative": "பேச்சுத்தன்மை",
"valence": "உணர்வு",
"popularity": "பிரபலம்",
"key": "இசை குறிப்பு",
@@ -251,7 +251,7 @@
"sort_newest": "புதிதாக சேர்க்கப்பட்டவற்றை வரிசைப்படுத்து",
"sort_oldest": "பழமையானவற்றை வரிசைப்படுத்து",
"sleep_timer": "உறக்க நேரம்",
- "mins": "{minutes} நிமிடங்கள்",
+ "minutes": "{minutes} நிமிடங்கள்",
"hours": "{hours} மணிநேரங்கள்",
"hour": "{hours} மணிநேரம்",
"custom_hours": "தனிப்பயன் மணிநேரங்கள்",
@@ -262,7 +262,7 @@
"audio_source": "ஒலி மூலம்",
"ok": "சரி",
"failed_to_encrypt": "குறியாக்கம் தோல்வியடைந்தது",
- "encryption_failed_warning": "Spotube உங்கள் தரவை பாதுகாப்பாக சேமிக்க குறியாக்கத்தைப் பயன்படுத்துகிறது. ஆனால் அவ்வாறு செய்ய முடியவில்லை. எனவே இது பாதுகாப்பற்ற சேமிப்பகத்திற்கு மாறும்\nநீங்கள் லினக்ஸ் பயன்படுத்துகிறீர்கள் என்றால், எந்த ரகசிய சேவையும் (gnome-keyring, kde-wallet, keepassxc போன்றவை) நிறுவப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும்",
+ "encryption_failed_warning": "Spotube உங்கள் தரவை பாதுகாப்பாக சேமிக்க குறியாக்கத்தைப் பயன்படுத்துகிறது. ஆனால் அவ்வாறு செய்ய முடியவில்லை. எனவே இது பாதுகாப்பற்ற சேமிப்பகத்திற்கு மாறும்\nநீங்கள் லினக்ஸ் பயன்படுத்துகிறீர்கள் என்றால், எந்த ரகசிய சேவையும் (gnome-keyring, kde-wallet, KeePassXC போன்றவை) நிறுவப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும்",
"querying_info": "தகவலைக் கேட்கிறது...",
"piped_api_down": "Piped API செயலிழந்துள்ளது",
"piped_down_error_instructions": "Piped நிகழ்வு {pipedInstance} தற்போது செயலிழந்துள்ளது\n\nநிகழ்வை மாற்றவும் அல்லது 'API வகை'யை அதிகாரப்பூர்வ YouTube API க்கு மாற்றவும்\n\nமாற்றத்திற்குப் பிறகு பயன்பாட்டை மறுதொடக்கம் செய்வதை உறுதிப்படுத்தவும்",
@@ -375,9 +375,9 @@
"streamed_songs": "ஸ்ட்ரீமிங் செய்யப்பட்ட பாடல்கள்",
"count_streams": "{count} ஸ்ட்ரீம்கள்",
"owned_by_you": "உங்களால் கொண்டது",
- "copied_shareurl_to_clipboard": "நகலெடுக்கப்பட்டது {shareUrl} கிளிப்போர்டுக்காக",
- "spotify_hipotetical_calculation": "*இது Spotify இன் ஒவ்வொரு ஸ்ட்ரீமிற்கும்\n$0.003 முதல் $0.005 வரை அளவீடு அடிப்படையில் கணக்கிடப்படுகிறது. இது ஒரு கற்பனை\nகணக்கீடு ஆகும், பயனர் எந்த அளவிற்கு கலைஞர்களுக்கு\nஅதோர் பாடலை Spotify மென்பொருளில் கேட்டால் எவ்வளவு பணம் செலுத்தினார்கள் என்பதைக் கண்டுபிடிக்க.",
- "count_mins": "{minutes} நிமிடங்கள்",
+ "copied_share_url_to_clipboard": "நகலெடுக்கப்பட்டது {shareUrl} கிளிப்போர்டுக்காக",
+ "spotify_hypothetical_calculation": "*இது Spotify இன் ஒவ்வொரு ஸ்ட்ரீமிற்கும்\n$0.003 முதல் $0.005 வரை அளவீடு அடிப்படையில் கணக்கிடப்படுகிறது. இது ஒரு கற்பனை\nகணக்கீடு ஆகும், பயனர் எந்த அளவிற்கு கலைஞர்களுக்கு\nஅதோர் பாடலை Spotify மென்பொருளில் கேட்டால் எவ்வளவு பணம் செலுத்தினார்கள் என்பதைக் கண்டுபிடிக்க.",
+ "count_minutes": "{minutes} நிமிடங்கள்",
"summary_minutes": "நிமிடங்கள்",
"summary_listened_to_music": "இசை கேட்டது",
"summary_songs": "பாடல்கள்",
diff --git a/lib/l10n/app_th.arb b/lib/l10n/app_th.arb
index 8e9a0318..9f229f49 100644
--- a/lib/l10n/app_th.arb
+++ b/lib/l10n/app_th.arb
@@ -91,7 +91,7 @@
"mini_player": "มินิเพลเยอร์",
"slide_to_seek": "เลื่อนเพื่อไปข้างหน้าหรือถอยหลัง",
"shuffle_playlist": "สุ่มเพลย์ลิสต์",
- "unshuffle_playlist": "ยกเลิกการสุ่มเพลย์ลิสต์",
+ "not_shuffle_playlist": "ยกเลิกการสุ่มเพลย์ลิสต์",
"previous_track": "แทร็กก่อนหน้า",
"next_track": "แทร็กถัดไป",
"pause_playback": "หยุดการเล่น",
@@ -176,7 +176,7 @@
"first_go_to": "ก่อนอื่น ไปที่",
"login_if_not_logged_in": "ยังไม่ได้เข้าสู่ระบบ ให้เข้าสู่ระบบ/ลงทะเบียน",
"step_2": "ขั้นที่ 2",
- "step_2_steps": "1. หลังจากเข้าสู่ระบบแล้ว กด F12 หรือ คลิกขวาที่เมาส์ > ตรวจสอบเพื่อเปิด Devtools เบราว์เซอร์\n2. จากนั้นไปที่แท็บ \"แอปพลิเคชัน\" (Chrome, Edge, Brave เป็นต้น) หรือแท็บ \"ที่เก็บข้อมูล\" (Firefox, Palemoon เป็นต้น)\n3. ไปที่ส่วน \"คุกกี้\" แล้วไปที่ subsection \"https: //accounts.spotify.com\"",
+ "step_2_steps": "1. หลังจากเข้าสู่ระบบแล้ว กด F12 หรือ คลิกขวาที่เมาส์ > ตรวจสอบเพื่อเปิด Devtools เบราว์เซอร์\n2. จากนั้นไปที่แท็บ \"แอปพลิเคชัน\" (Chrome, Edge, Brave เป็นต้น) หรือแท็บ \"ที่เก็บข้อมูล\" (Firefox, Pale Moon เป็นต้น)\n3. ไปที่ส่วน \"คุกกี้\" แล้วไปที่ subsection \"https: //accounts.spotify.com\"",
"step_3": "ขั้นที่ 3",
"step_3_steps": "คัดลอกค่าคุกกี้ \"sp_dc\"",
"success_emoji": "สำเร็จ",
@@ -199,13 +199,13 @@
"add_genres": "เพิ่มประเภท",
"country": "ประเทศ",
"number_of_tracks_generate": "จำนวนแทร็กที่จะสร้าง",
- "acousticness": "อะคูสติก",
- "danceability": "ความสามารถในการเต้น",
+ "not_acoustic": "อะคูสติก",
+ "dance_ability": "ความสามารถในการเต้น",
"energy": "พลัง",
- "instrumentalness": "บรรเลง",
+ "not_instrumental": "บรรเลง",
"liveness": "ความสด",
"loudness": "ความดัง",
- "speechiness": "การพูด",
+ "talkative": "การพูด",
"valence": "ความสุข",
"popularity": "ความนิยม",
"key": "คีย์",
@@ -244,7 +244,7 @@
"sort_newest": "เรียงตามการเพิ่มใหม่ล่าสุด",
"sort_oldest": "เรียงตามการเพิ่มเก่าสุด",
"sleep_timer": "ตั้งเวลาปิด",
- "mins": "{minutes} นาที",
+ "minutes": "{minutes} นาที",
"hours": "{hours} ชั่วโมง",
"hour": "{hours} ชั่วโมง",
"custom_hours": "ชั่วโมงที่กำหนดเอง",
@@ -255,7 +255,7 @@
"audio_source": "แหล่งที่มาของเสียง",
"ok": "ตกลง",
"failed_to_encrypt": "เข้ารหัสล้มเหลว",
- "encryption_failed_warning": "Spotube ใช้การเข้ารหัสเพื่อเก็บข้อมูลของคุณอย่างปลอดภัย แต่ไม่สามารถทำได้ ดังนั้นจะเปลี่ยนเป็นการจัดเก็บที่ไม่ปลอดภัย\nหากคุณใช้ Linux โปรดตรวจสอบว่าคุณได้ติดตั้งบริการลับ (gnome-keyring, kde-wallet, keepassxc เป็นต้น)",
+ "encryption_failed_warning": "Spotube ใช้การเข้ารหัสเพื่อเก็บข้อมูลของคุณอย่างปลอดภัย แต่ไม่สามารถทำได้ ดังนั้นจะเปลี่ยนเป็นการจัดเก็บที่ไม่ปลอดภัย\nหากคุณใช้ Linux โปรดตรวจสอบว่าคุณได้ติดตั้งบริการลับ (gnome-keyring, kde-wallet, KeePassXC เป็นต้น)",
"querying_info": "กำลังดึงข้อมูล...",
"piped_api_down": "Piped API ไม่ทำงาน",
"piped_down_error_instructions": "Piped instance {pipedInstance} ไม่ทำงานขณะนี้\n\nเปลี่ยนอินสแตนซ์หรือเปลี่ยน 'ประเภท API' เป็น YouTube API อย่างเป็นทางการ\n\nอย่าลืมรีสตาร์ทแอปหลังจากเปลี่ยน",
@@ -367,7 +367,7 @@
"user_profile": "โปรไฟล์ผู้ใช้",
"count_plays": "{count} การเล่น",
"streaming_fees_hypothetical": "*คำนวณจากการจ่ายเงินต่อการสตรีมของ Spotify\nระหว่าง $0.003 ถึง $0.005 นี่เป็นการคำนวณสมมุติ\nเพื่อให้ข้อมูลแก่ผู้ใช้เกี่ยวกับจำนวนเงินที่พวกเขา\nอาจจะจ่ายให้กับศิลปินหากพวกเขาฟังเพลงของพวกเขาใน Spotify",
- "count_mins": "{minutes} นาที",
+ "count_minutes": "{minutes} นาที",
"summary_minutes": "นาที",
"summary_listened_to_music": "ฟังเพลง",
"summary_songs": "เพลง",
@@ -384,8 +384,8 @@
"streamed_songs": "เพลงที่สตรีม",
"count_streams": "{count} สตรีม",
"owned_by_you": "เป็นเจ้าของโดยคุณ",
- "copied_shareurl_to_clipboard": "{shareUrl} คัดลอกไปที่คลิปบอร์ดแล้ว",
- "spotify_hipotetical_calculation": "*คำนวณตามการจ่ายต่อสตรีมของ Spotify\nซึ่งอยู่ในช่วง $0.003 ถึง $0.005 นี่เป็นการคำนวณสมมุติ\nเพื่อให้ผู้ใช้ทราบว่าพวกเขาจะจ่ายเงินให้ศิลปินเท่าไหร่\nหากพวกเขาฟังเพลงของพวกเขาใน Spotify.",
+ "copied_share_url_to_clipboard": "{shareUrl} คัดลอกไปที่คลิปบอร์ดแล้ว",
+ "spotify_hypothetical_calculation": "*คำนวณตามการจ่ายต่อสตรีมของ Spotify\nซึ่งอยู่ในช่วง $0.003 ถึง $0.005 นี่เป็นการคำนวณสมมุติ\nเพื่อให้ผู้ใช้ทราบว่าพวกเขาจะจ่ายเงินให้ศิลปินเท่าไหร่\nหากพวกเขาฟังเพลงของพวกเขาใน Spotify.",
"webview_not_found": "ไม่พบ Webview",
"webview_not_found_description": "ไม่พบ runtime ของ Webview บนอุปกรณ์ของคุณ\nหากติดตั้งแล้วตรวจสอบให้แน่ใจว่าอยู่ใน environment PATH\n\nหลังจากติดตั้งแล้ว ให้รีสตาร์ทแอป",
"unsupported_platform": "แพลตฟอร์มไม่รองรับ",
diff --git a/lib/l10n/app_tl.arb b/lib/l10n/app_tl.arb
index c395cdc7..ba3530f6 100644
--- a/lib/l10n/app_tl.arb
+++ b/lib/l10n/app_tl.arb
@@ -91,7 +91,7 @@
"mini_player": "Mini Player",
"slide_to_seek": "I-slide para mag-seek pasulong o pabalik",
"shuffle_playlist": "I-shuffle ang playlist",
- "unshuffle_playlist": "I-unshuffle ang playlist",
+ "not_shuffle_playlist": "I-unshuffle ang playlist",
"previous_track": "Nakaraang track",
"next_track": "Susunod na track",
"pause_playback": "I-pause ang Playback",
@@ -180,7 +180,7 @@
"first_go_to": "Una, Pumunta sa",
"login_if_not_logged_in": "at Mag-login/Mag-signup kung hindi ka naka-log in",
"step_2": "Hakbang 2",
- "step_2_steps": "1. Kapag naka-log in ka na, pindutin ang F12 o i-right click ang Mouse > Inspect para Buksan ang Browser devtools.\n2. Pagkatapos ay pumunta sa \"Application\" Tab (Chrome, Edge, Brave atbp..) o \"Storage\" Tab (Firefox, Palemoon atbp..)\n3. Pumunta sa \"Cookies\" na seksyon at pagkatapos sa \"https://accounts.spotify.com\" na subseksyon",
+ "step_2_steps": "1. Kapag naka-log in ka na, pindutin ang F12 o i-right click ang Mouse > Inspect para Buksan ang Browser devtools.\n2. Pagkatapos ay pumunta sa \"Application\" Tab (Chrome, Edge, Brave atbp..) o \"Storage\" Tab (Firefox, Pale Moon atbp..)\n3. Pumunta sa \"Cookies\" na seksyon at pagkatapos sa \"https://accounts.spotify.com\" na subseksyon",
"step_3": "Hakbang 3",
"step_3_steps": "Kopyahin ang halaga ng \"sp_dc\" Cookie",
"success_emoji": "Tagumpay🥳",
@@ -206,13 +206,13 @@
"add_genres": "Magdagdag ng mga Genre",
"country": "Bansa",
"number_of_tracks_generate": "Bilang ng mga track na gagawin",
- "acousticness": "Acoustic-ness",
- "danceability": "Kakayahang Sayawin",
+ "not_acoustic": "Acoustic-ness",
+ "dance_ability": "Kakayahang Sayawin",
"energy": "Enerhiya",
- "instrumentalness": "Instrumental-ness",
+ "not_instrumental": "Instrumental-ness",
"liveness": "Liveness",
"loudness": "Lakas",
- "speechiness": "Pagsasalita",
+ "talkative": "Pagsasalita",
"valence": "Valence",
"popularity": "Popularidad",
"key": "Key",
@@ -251,7 +251,7 @@
"sort_newest": "Ayusin ayon sa pinakabagong idinagdag",
"sort_oldest": "Ayusin ayon sa pinakalumang idinagdag",
"sleep_timer": "Sleep Timer",
- "mins": "{minutes} Minuto",
+ "minutes": "{minutes} Minuto",
"hours": "{hours} Oras",
"hour": "{hours} Oras",
"custom_hours": "Custom na Oras",
@@ -262,7 +262,7 @@
"audio_source": "Pinagmulan ng Audio",
"ok": "Ok",
"failed_to_encrypt": "Nabigong i-encrypt",
- "encryption_failed_warning": "Gumagamit ng encryption ang Spotube para ligtas na i-store ang iyong data. Ngunit nabigo. Kaya babalik ito sa hindi secure na storage\nKung gumagamit ka ng linux, mangyaring tiyakin na mayroon kang anumang secret-service na naka-install (gnome-keyring, kde-wallet, keepassxc atbp)",
+ "encryption_failed_warning": "Gumagamit ng encryption ang Spotube para ligtas na i-store ang iyong data. Ngunit nabigo. Kaya babalik ito sa hindi secure na storage\nKung gumagamit ka ng linux, mangyaring tiyakin na mayroon kang anumang secret-service na naka-install (gnome-keyring, kde-wallet, KeePassXC atbp)",
"querying_info": "Kinukuha ang impormasyon...",
"piped_api_down": "Ang Piped API ay hindi gumagana",
"piped_down_error_instructions": "Ang instance ng Piped na {pipedInstance} ay kasalukuyang hindi gumagana\n\nMaaari mong baguhin ang instance o baguhin ang 'Uri ng API' sa opisyal na YouTube API\n\nSiguraduhing i-restart ang app pagkatapos ng pagbabago",
@@ -375,9 +375,9 @@
"streamed_songs": "Mga na-stream na kanta",
"count_streams": "{count} na mga stream",
"owned_by_you": "Pag-aari mo",
- "copied_shareurl_to_clipboard": "Na-kopya ang {shareUrl} sa clipboard",
- "spotify_hipotetical_calculation": "*Ito ay kinalkula batay sa bawat stream\nna bayad ng Spotify na $0.003 hanggang $0.005. Ito ay isang hypothetical\nna pagkalkula para bigyan ang user ng ideya kung magkano\nang kanilang ibabayad sa mga artista kung sila ay nakikinig\nng kanilang kanta sa Spotify.",
- "count_mins": "{minutes} minuto",
+ "copied_share_url_to_clipboard": "Na-kopya ang {shareUrl} sa clipboard",
+ "spotify_hypothetical_calculation": "*Ito ay kinalkula batay sa bawat stream\nna bayad ng Spotify na $0.003 hanggang $0.005. Ito ay isang hypothetical\nna pagkalkula para bigyan ang user ng ideya kung magkano\nang kanilang ibabayad sa mga artista kung sila ay nakikinig\nng kanilang kanta sa Spotify.",
+ "count_minutes": "{minutes} minuto",
"summary_minutes": "minuto",
"summary_listened_to_music": "Nakinig sa musika",
"summary_songs": "mga kanta",
diff --git a/lib/l10n/app_tr.arb b/lib/l10n/app_tr.arb
index 1e659cc5..64455558 100644
--- a/lib/l10n/app_tr.arb
+++ b/lib/l10n/app_tr.arb
@@ -91,7 +91,7 @@
"mini_player": "Mini oynatıcı",
"slide_to_seek": "İleri veya geri arama yapmak için kaydırın",
"shuffle_playlist": "Oynatma listesini karıştır",
- "unshuffle_playlist": "Oynatma listesinin karışıklığını kaldır",
+ "not_shuffle_playlist": "Oynatma listesinin karışıklığını kaldır",
"previous_track": "Önceki parça",
"next_track": "Sonraki parça",
"pause_playback": "Oynatmayı duraklat",
@@ -176,7 +176,7 @@
"first_go_to": "İlk olarak şuraya gidin:",
"login_if_not_logged_in": "ve oturum açmadıysanız Oturum açın/Kaydolun",
"step_2": "2. Adım",
- "step_2_steps": "1. Oturum açtıktan sonra, tarayıcı geliştirme araçlarını açmak için F12'ye veya fareye sağ tıklayın > İncele'ye basın.\n2. Daha sonra \"Uygulama\" sekmesine (Chrome, Edge, Brave vb..) veya \"Depolama\" sekmesine (Firefox, Palemoon vb..) gidin\n3. \"Çerezler\" bölümüne, ardından \"https://accounts.spotify.com\" alt bölümüne gidin",
+ "step_2_steps": "1. Oturum açtıktan sonra, tarayıcı geliştirme araçlarını açmak için F12'ye veya fareye sağ tıklayın > İncele'ye basın.\n2. Daha sonra \"Uygulama\" sekmesine (Chrome, Edge, Brave vb..) veya \"Depolama\" sekmesine (Firefox, Pale Moon vb..) gidin\n3. \"Çerezler\" bölümüne, ardından \"https://accounts.spotify.com\" alt bölümüne gidin",
"step_3": "3. Adım",
"step_3_steps": "\"sp_dc\" Çerezinin değerini kopyalayın",
"success_emoji": "Başarılı🥳",
@@ -199,13 +199,13 @@
"add_genres": "Tür ekle",
"country": "Ülke",
"number_of_tracks_generate": "Oluşturulacak parça sayısı",
- "acousticness": "Akustiklik",
- "danceability": "Dans Edilebilirlik",
+ "not_acoustic": "Akustiklik",
+ "dance_ability": "Dans Edilebilirlik",
"energy": "Enerji",
- "instrumentalness": "Araçsallık",
+ "not_instrumental": "Araçsallık",
"liveness": "Canlılık",
"loudness": "Ses yüksekliği",
- "speechiness": "Konuşkanlık",
+ "talkative": "Konuşkanlık",
"valence": "Değerlik",
"popularity": "Popülerlik",
"key": "Anahtar",
@@ -244,7 +244,7 @@
"sort_newest": "En yeni eklenene göre sırala.",
"sort_oldest": "En eski eklenene göre sırala",
"sleep_timer": "Uyku Zamanlayıcısı",
- "mins": "{minutes} Dakika",
+ "minutes": "{minutes} Dakika",
"hours": "{hours} Saatler",
"hour": "{hours} Saat",
"custom_hours": "Özel Saatler",
@@ -255,7 +255,7 @@
"audio_source": "Ses kaynağı",
"ok": "Tamam",
"failed_to_encrypt": "Şifreleme başarısız oldu",
- "encryption_failed_warning": "Spotube, verilerinizi güvenli bir şekilde depolamak için şifreleme kullanır. Ancak bunu başaramadı. Bu nedenle, güvensiz depolamaya geri dönecektir\nLinux kullanıyorsanız, lütfen gnome-keyring, kde-wallet, keepassxc vb. herhangi bir gizli servisin yüklü olduğundan emin olun.",
+ "encryption_failed_warning": "Spotube, verilerinizi güvenli bir şekilde depolamak için şifreleme kullanır. Ancak bunu başaramadı. Bu nedenle, güvensiz depolamaya geri dönecektir\nLinux kullanıyorsanız, lütfen gnome-keyring, kde-wallet, KeePassXC vb. herhangi bir gizli servisin yüklü olduğundan emin olun.",
"querying_info": "Bilgi sorgulanıyor...",
"piped_api_down": "Piped API kapalı",
"piped_down_error_instructions": "Piped örneği {pipedInstance} şu anda kapalı\n\nÖrneği değiştirin veya 'API türünü' resmi YouTube API'si olarak değiştirin\n\nDeğişiklikten sonra uygulamayı yeniden başlattığınızdan emin olun",
@@ -366,7 +366,7 @@
"user_profile": "Kullanıcı Profili",
"count_plays": "{count} çalma",
"streaming_fees_hypothetical": "*Spotify'ın akış başına ödeme miktarına\n$0.003 ile $0.005 arasında hesaplanmıştır. Bu, kullanıcıya\nSpotify'da şarkılarını dinlerse sanatçılara ne kadar ödeme\nyapmış olabileceğini göstermek için hipotetik bir hesaplamadır.",
- "count_mins": "{minutes} dk",
+ "count_minutes": "{minutes} dk",
"summary_minutes": "dakika",
"summary_listened_to_music": "Dinlenen müzik",
"summary_songs": "şarkılar",
@@ -383,8 +383,8 @@
"streamed_songs": "Yayınlanan Şarkılar",
"count_streams": "{count} yayın",
"owned_by_you": "Sahip olduğunuz",
- "copied_shareurl_to_clipboard": "{shareUrl} panoya kopyalandı",
- "spotify_hipotetical_calculation": "*Bu, Spotify'ın her yayın başına ödemenin\n$0.003 ile $0.005 arasında olduğu varsayımıyla hesaplanmıştır. Bu\nhipotetik bir hesaplamadır, kullanıcıya şarkılarını Spotify'da dinlediklerinde\nsanatçılara ne kadar ödeme yapacaklarını gösterir.",
+ "copied_share_url_to_clipboard": "{shareUrl} panoya kopyalandı",
+ "spotify_hypothetical_calculation": "*Bu, Spotify'ın her yayın başına ödemenin\n$0.003 ile $0.005 arasında olduğu varsayımıyla hesaplanmıştır. Bu\nhipotetik bir hesaplamadır, kullanıcıya şarkılarını Spotify'da dinlediklerinde\nsanatçılara ne kadar ödeme yapacaklarını gösterir.",
"webview_not_found": "Webview bulunamadı",
"webview_not_found_description": "Cihazınızda herhangi bir Webview çalışma zamanı yüklü değil.\nEğer kuruluysa, ortam YOLUNDA olduğundan emin olun\n\nKurulumdan sonra uygulamayı yeniden başlatın",
"unsupported_platform": "Desteklenmeyen platform",
diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb
index bc731240..a1af16b1 100644
--- a/lib/l10n/app_uk.arb
+++ b/lib/l10n/app_uk.arb
@@ -90,7 +90,7 @@
"mini_player": "Міні-плеєр",
"slide_to_seek": "Проведіть пальцем, щоб перемотати вперед або назад",
"shuffle_playlist": "Випадковий порядок відтворення плейлиста",
- "unshuffle_playlist": "Відключити випадковий порядок відтворення плейлиста",
+ "not_shuffle_playlist": "Відключити випадковий порядок відтворення плейлиста",
"previous_track": "Попередній трек",
"next_track": "Наступний трек",
"pause_playback": "Призупинити відтворення",
@@ -175,7 +175,7 @@
"first_go_to": "Спочатку перейдіть на",
"login_if_not_logged_in": "та Увійдіть/Зареєструйтесь, якщо ви не ввійшли",
"step_2": "Крок 2",
- "step_2_steps": "1. Після входу натисніть F12 або клацніть правою кнопкою миші > Інспектувати, щоб відкрити інструменти розробки браузера.\n2. Потім перейдіть на вкладку 'Програма' (Chrome, Edge, Brave тощо) або вкладку 'Сховище' (Firefox, Palemoon тощо).\n3. Перейдіть до розділу 'Кукі-файли', а потім до підрозділу 'https://accounts.spotify.com'",
+ "step_2_steps": "1. Після входу натисніть F12 або клацніть правою кнопкою миші > Інспектувати, щоб відкрити інструменти розробки браузера.\n2. Потім перейдіть на вкладку 'Програма' (Chrome, Edge, Brave тощо) або вкладку 'Сховище' (Firefox, Pale Moon тощо).\n3. Перейдіть до розділу 'Кукі-файли', а потім до підрозділу 'https://accounts.spotify.com'",
"step_3": "Крок 3",
"success_emoji": "Успіх🥳",
"success_message": "Тепер ви успішно ввійшли у свій обліковий запис Spotify. Гарна робота, друже!",
@@ -196,13 +196,13 @@
"add_genres": "Додати жанри",
"country": "Країна",
"number_of_tracks_generate": "Кількість треків для створення",
- "acousticness": "Акустичність",
- "danceability": "Танцювальність",
+ "not_acoustic": "Акустичність",
+ "dance_ability": "Танцювальність",
"energy": "Енергія",
- "instrumentalness": "Інструментальність",
+ "not_instrumental": "Інструментальність",
"liveness": "Живість",
"loudness": "Гучність",
- "speechiness": "Розмовність",
+ "talkative": "Розмовність",
"valence": "Валентність",
"popularity": "Популярність",
"key": "Тональність",
@@ -241,7 +241,7 @@
"sort_newest": "Сортувати за датою додавання (новіші першими)",
"sort_oldest": "Сортувати за датою додавання (старіші першими)",
"sleep_timer": "Таймер сну",
- "mins": "{minutes} хвилин",
+ "minutes": "{minutes} хвилин",
"hours": "{hours} годин",
"hour": "{hours} година",
"custom_hours": "Кількість годин на замовлення",
@@ -252,7 +252,7 @@
"audio_source": "Джерело аудіо",
"ok": "Гаразд",
"failed_to_encrypt": "Не вдалося зашифрувати",
- "encryption_failed_warning": "Spotube використовує шифрування для безпечного зберігання ваших даних. Але не вдалося цього зробити. Тому він перейде до небезпечного зберігання\nЯкщо ви використовуєте Linux, переконайтеся, що у вас встановлено будь-який секретний сервіс (gnome-keyring, kde-wallet, keepassxc тощо)",
+ "encryption_failed_warning": "Spotube використовує шифрування для безпечного зберігання ваших даних. Але не вдалося цього зробити. Тому він перейде до небезпечного зберігання\nЯкщо ви використовуєте Linux, переконайтеся, що у вас встановлено будь-який секретний сервіс (gnome-keyring, kde-wallet, KeePassXC тощо)",
"querying_info": "Запит інформації...",
"piped_api_down": "API Piped не працює",
"piped_down_error_instructions": "Поточний екземпляр Piped {pipedInstance} не працює\n\nЗмініть екземпляр або змініть 'Тип API' на офіційний YouTube API\n\nОбов'язково перезапустіть програму після зміни",
@@ -366,7 +366,7 @@
"user_profile": "Профіль користувача",
"count_plays": "{count} відтворень",
"streaming_fees_hypothetical": "*Розраховано на основі виплат Spotify за стримінг\nвід $0.003 до $0.005. Це гіпотетичний\nрозрахунок, щоб дати уявлення користувачу про те, скільки б він\nзаплатив артистам, якби слухав їхні пісні на Spotify.",
- "count_mins": "{minutes} хв",
+ "count_minutes": "{minutes} хв",
"summary_minutes": "хвилини",
"summary_listened_to_music": "Прослухана музика",
"summary_songs": "пісні",
@@ -383,8 +383,8 @@
"streamed_songs": "Стримлені пісні",
"count_streams": "{count} стримів",
"owned_by_you": "Ваша власність",
- "copied_shareurl_to_clipboard": "{shareUrl} скопійовано в буфер обміну",
- "spotify_hipotetical_calculation": "*Це розраховано на основі виплат Spotify за стрім\nвід $0.003 до $0.005. Це гіпотетичний розрахунок,\nщоб дати користувачеві уявлення про те, скільки б він заплатив\nартистам, якби слухав їхні пісні на Spotify.",
+ "copied_share_url_to_clipboard": "{shareUrl} скопійовано в буфер обміну",
+ "spotify_hypothetical_calculation": "*Це розраховано на основі виплат Spotify за стрім\nвід $0.003 до $0.005. Це гіпотетичний розрахунок,\nщоб дати користувачеві уявлення про те, скільки б він заплатив\nартистам, якби слухав їхні пісні на Spotify.",
"webview_not_found": "Webview не знайдено",
"webview_not_found_description": "На вашому пристрої не встановлено виконуване середовище Webview.\nЯкщо воно встановлено, переконайтеся, що воно знаходиться в environment PATH\n\nПісля встановлення перезапустіть програму",
"unsupported_platform": "Непідтримувана платформа",
diff --git a/lib/l10n/app_vi.arb b/lib/l10n/app_vi.arb
index 75f8e3f7..bd008b62 100644
--- a/lib/l10n/app_vi.arb
+++ b/lib/l10n/app_vi.arb
@@ -90,7 +90,7 @@
"mini_player": "Trình phát thu nhỏ",
"slide_to_seek": "Trượt để tìm kiếm tiến hoặc lùi",
"shuffle_playlist": "Xáo trộn bài hát",
- "unshuffle_playlist": "Hủy xáo trộn bài hát",
+ "not_shuffle_playlist": "Hủy xáo trộn bài hát",
"previous_track": "Bài hát trước",
"next_track": "Bài hát tiếp theo",
"pause_playback": "Tạm dừng phát",
@@ -175,7 +175,7 @@
"first_go_to": "Đầu tiên, truy cập",
"login_if_not_logged_in": "và Đăng nhập/Đăng ký nếu chưa có tài khoản",
"step_2": "Bước 2",
- "step_2_steps": "1. Sau khi đăng nhập, nhấn F12 hoặc Chuột phải > Mở devtools của trình duyệt.\n2. Sau đó, chuyển đến Tab \"Ứng dụng/Application\" (Chrome, Edge, Brave, v.v.) hoặc Tab \"Lưu trữ/Storage\" (Firefox, Palemoon, v.v.)\n3. Chuyển đến phần \"Cookie\" sau đó phần con \"https://accounts.spotify.com\"",
+ "step_2_steps": "1. Sau khi đăng nhập, nhấn F12 hoặc Chuột phải > Mở devtools của trình duyệt.\n2. Sau đó, chuyển đến Tab \"Ứng dụng/Application\" (Chrome, Edge, Brave, v.v.) hoặc Tab \"Lưu trữ/Storage\" (Firefox, Pale Moon, v.v.)\n3. Chuyển đến phần \"Cookie\" sau đó phần con \"https://accounts.spotify.com\"",
"step_3": "Bước 3",
"step_3_steps": "Sao chép giá trị của Cookie \"sp_dc\" và \"sp_key\" (hoặc sp_gaid)",
"success_emoji": "Thành công🥳",
@@ -198,13 +198,13 @@
"add_genres": "Thêm Thể loại",
"country": "Quốc gia",
"number_of_tracks_generate": "Số lượng bài hát để tạo",
- "acousticness": "Độ âm thanh",
- "danceability": "Khả năng nhảy",
+ "not_acoustic": "Độ âm thanh",
+ "dance_ability": "Khả năng nhảy",
"energy": "Năng lượng",
- "instrumentalness": "Độ nhạc cụ",
+ "not_instrumental": "Độ nhạc cụ",
"liveness": "Sống động",
"loudness": "Độ ồn",
- "speechiness": "Độ nói",
+ "talkative": "Độ nói",
"valence": "Tính tích cực",
"popularity": "Độ phổ biến",
"key": "Tông",
@@ -243,7 +243,7 @@
"sort_newest": "Sắp xếp theo mới nhất",
"sort_oldest": "Sắp xếp theo cũ nhất",
"sleep_timer": "Hẹn giờ tắt",
- "mins": "{minutes} Phút",
+ "minutes": "{minutes} Phút",
"hours": "{hours} Giờ",
"hour": "{hours} Giờ",
"custom_hours": "Giờ Tùy chỉnh",
@@ -254,7 +254,7 @@
"audio_source": "Nguồn âm thanh",
"ok": "Ok",
"failed_to_encrypt": "Mã hóa không thành công",
- "encryption_failed_warning": "Spotube không thành công trong việc mã hóa nhằm lưu trữ dữ liêu an toàn. vậy nên sẽ chuyển về lưu trữ không an toàn\nNếu bạn đang sử dụng Linux, đảm bảo rằng bạn có sử dụng dịch vụ bảo mật (gnome-keyring, kde-wallet, keepassxc, v.v.)",
+ "encryption_failed_warning": "Spotube không thành công trong việc mã hóa nhằm lưu trữ dữ liêu an toàn. vậy nên sẽ chuyển về lưu trữ không an toàn\nNếu bạn đang sử dụng Linux, đảm bảo rằng bạn có sử dụng dịch vụ bảo mật (gnome-keyring, kde-wallet, KeePassXC, v.v.)",
"querying_info": "Đang truy vấn thông tin...",
"piped_api_down": "API Piped đang gặp sự cố",
"piped_down_error_instructions": "Phiên bản Piped {pipedInstance} hiện đang gặp sự cố\n\nThay đổi phiên bản hoặc thay đổi 'Loại API' thành API YouTube official\n\nKhởi động lai ứng dụng sau khi thay đổi.",
@@ -366,7 +366,7 @@
"user_profile": "Hồ sơ người dùng",
"count_plays": "{count} lần phát",
"streaming_fees_hypothetical": "*Tính toán dựa trên thanh toán của Spotify cho mỗi lần phát\ntừ $0.003 đến $0.005. Đây là một tính toán giả định để\ngive người dùng cái nhìn về số tiền họ sẽ chi trả cho các nghệ sĩ nếu họ nghe\nbài hát của họ trên Spotify.",
- "count_mins": "{minutes} phút",
+ "count_minutes": "{minutes} phút",
"summary_minutes": "phút",
"summary_listened_to_music": "Đã nghe nhạc",
"summary_songs": "bài hát",
@@ -383,8 +383,8 @@
"streamed_songs": "Bài hát đã phát",
"count_streams": "{count} lượt phát",
"owned_by_you": "Thuộc sở hữu của bạn",
- "copied_shareurl_to_clipboard": "{shareUrl} đã sao chép vào bảng tạm",
- "spotify_hipotetical_calculation": "*Được tính toán dựa trên khoản thanh toán của Spotify cho mỗi lượt phát\ntừ $0.003 đến $0.005. Đây là một tính toán giả định để\ncung cấp cho người dùng cái nhìn về số tiền họ sẽ phải trả\ncho các nghệ sĩ nếu họ nghe bài hát của họ trên Spotify.",
+ "copied_share_url_to_clipboard": "{shareUrl} đã sao chép vào bảng tạm",
+ "spotify_hypothetical_calculation": "*Được tính toán dựa trên khoản thanh toán của Spotify cho mỗi lượt phát\ntừ $0.003 đến $0.005. Đây là một tính toán giả định để\ncung cấp cho người dùng cái nhìn về số tiền họ sẽ phải trả\ncho các nghệ sĩ nếu họ nghe bài hát của họ trên Spotify.",
"webview_not_found": "Không tìm thấy Webview",
"webview_not_found_description": "Không có runtime Webview nào được cài đặt trên thiết bị của bạn.\nNếu đã cài đặt, hãy đảm bảo rằng nó nằm trong environment PATH\n\nSau khi cài đặt, hãy khởi động lại ứng dụng",
"unsupported_platform": "Nền tảng không được hỗ trợ",
diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb
index 03ebae12..1b816db7 100644
--- a/lib/l10n/app_zh.arb
+++ b/lib/l10n/app_zh.arb
@@ -88,7 +88,7 @@
"mini_player": "小窗模式",
"slide_to_seek": "滑动以前进或后退",
"shuffle_playlist": "随机播放歌单",
- "unshuffle_playlist": "取消随机播放歌单",
+ "not_shuffle_playlist": "取消随机播放歌单",
"previous_track": "上一首歌曲",
"next_track": "下一首歌曲",
"pause_playback": "暂停播放",
@@ -173,7 +173,7 @@
"first_go_to": "首先,前往",
"login_if_not_logged_in": "如果尚未登录,请登录或者注册一个账户",
"step_2": "步骤 2",
- "step_2_steps": "1. 一旦你已经完成登录, 按 F12 键或者鼠标右击网页空白区域 > 选择“检查”以打开浏览器开发者工具(DevTools)\n2. 然后选择 \"应用(Application)\" 标签页(Chrome, Edge, Brave 等基于 Chromium 的浏览器) 或 \"存储(Storage)\" 标签页 (Firefox, Palemoon 等基于 Firefox 的浏览器))\n3. 选择 \"Cookies\" 栏目然后选择 \"https://accounts.spotify.com\" 子栏目",
+ "step_2_steps": "1. 一旦你已经完成登录, 按 F12 键或者鼠标右击网页空白区域 > 选择“检查”以打开浏览器开发者工具(DevTools)\n2. 然后选择 \"应用(Application)\" 标签页(Chrome, Edge, Brave 等基于 Chromium 的浏览器) 或 \"存储(Storage)\" 标签页 (Firefox, Pale Moon 等基于 Firefox 的浏览器))\n3. 选择 \"Cookies\" 栏目然后选择 \"https://accounts.spotify.com\" 子栏目",
"step_3": "步骤 3",
"success_emoji": "成功🥳",
"success_message": "你已经成功使用 Spotify 登录。干得漂亮!",
@@ -194,13 +194,13 @@
"add_genres": "添加曲风",
"country": "国家和地区",
"number_of_tracks_generate": "生成歌曲的数目",
- "acousticness": "原声程度",
- "danceability": "律动感",
+ "not_acoustic": "原声程度",
+ "dance_ability": "律动感",
"energy": "冲击感",
- "instrumentalness": "歌唱部分占比",
+ "not_instrumental": "歌唱部分占比",
"liveness": "现场感",
"loudness": "响度",
- "speechiness": "朗诵比例",
+ "talkative": "朗诵比例",
"valence": "心理感受",
"popularity": "流行度",
"key": "曲调",
@@ -239,7 +239,7 @@
"sort_newest": "按添加日期正序",
"sort_oldest": "按添加日期倒序",
"sleep_timer": "睡眠定时器",
- "mins": "{minutes} 分",
+ "minutes": "{minutes} 分",
"hours": "{hours} 时",
"hour": "{hours} 时",
"custom_hours": "自定义时间",
@@ -250,7 +250,7 @@
"audio_source": "音频源",
"ok": "确定",
"failed_to_encrypt": "加密失败",
- "encryption_failed_warning": "Spotube使用加密来安全地存储您的数据。但是失败了。因此,它将回退到不安全的存储\n如果您使用Linux,请确保已安装gnome-keyring、kde-wallet和keepassxc等秘密服务",
+ "encryption_failed_warning": "Spotube使用加密来安全地存储您的数据。但是失败了。因此,它将回退到不安全的存储\n如果您使用Linux,请确保已安装gnome-keyring、kde-wallet和KeePassXC等秘密服务",
"querying_info": "正在查询信息...",
"piped_api_down": "Piped API不可用",
"piped_down_error_instructions": "当前Piped实例{pipedInstance}不可用\n\n请更改实例或将'API类型'更改为官方YouTube API\n\n更改后请确保重新启动应用程序",
@@ -366,7 +366,7 @@
"user_profile": "用户资料",
"count_plays": "{count} 次播放",
"streaming_fees_hypothetical": "*基于 Spotify 每次播放的支付金额\n从 $0.003 到 $0.005 计算。这是一个假设性的\n计算,旨在让用户了解如果他们在 Spotify 上收听\n这些歌曲,可能会付给艺术家的金额。",
- "count_mins": "{minutes} 分钟",
+ "count_minutes": "{minutes} 分钟",
"summary_minutes": "分钟",
"summary_listened_to_music": "听音乐",
"summary_songs": "歌曲",
@@ -383,8 +383,8 @@
"streamed_songs": "已流媒体歌曲",
"count_streams": "{count} 次流媒体",
"owned_by_you": "由您拥有",
- "copied_shareurl_to_clipboard": "{shareUrl} 已复制到剪贴板",
- "spotify_hipotetical_calculation": "*根据 Spotify 每次流媒体的支付金额\n$0.003 到 $0.005 进行计算。这是一个假设性的\n计算,用于给用户了解他们如果在 Spotify 上\n收听歌曲会支付给艺术家的金额。",
+ "copied_share_url_to_clipboard": "{shareUrl} 已复制到剪贴板",
+ "spotify_hypothetical_calculation": "*根据 Spotify 每次流媒体的支付金额\n$0.003 到 $0.005 进行计算。这是一个假设性的\n计算,用于给用户了解他们如果在 Spotify 上\n收听歌曲会支付给艺术家的金额。",
"webview_not_found": "未找到 Webview",
"webview_not_found_description": "您的设备中未安装 Webview 运行时。\n如果已安装,请确保它在 environment PATH 中\n\n安装后,重新启动应用程序",
"unsupported_platform": "不支持的平台",
diff --git a/lib/l10n/generated/app_localizations.dart b/lib/l10n/generated/app_localizations.dart
index 457e29b6..c77ce6e7 100644
--- a/lib/l10n/generated/app_localizations.dart
+++ b/lib/l10n/generated/app_localizations.dart
@@ -701,11 +701,11 @@ abstract class AppLocalizations {
/// **'Shuffle playlist'**
String get shuffle_playlist;
- /// No description provided for @unshuffle_playlist.
+ /// No description provided for @not_shuffle_playlist.
///
/// In en, this message translates to:
/// **'Unshuffle playlist'**
- String get unshuffle_playlist;
+ String get not_shuffle_playlist;
/// No description provided for @previous_track.
///
@@ -1238,7 +1238,7 @@ abstract class AppLocalizations {
/// No description provided for @step_2_steps.
///
/// In en, this message translates to:
- /// **'1. Once you\'re logged in, press F12 or Mouse Right Click > Inspect to Open the Browser devtools.\n2. Then go the \"Application\" Tab (Chrome, Edge, Brave etc..) or \"Storage\" Tab (Firefox, Palemoon etc..)\n3. Go to the \"Cookies\" section then the \"https://accounts.spotify.com\" subsection'**
+ /// **'1. Once you\'re logged in, press F12 or Mouse Right Click > Inspect to Open the Browser devtools.\n2. Then go the \"Application\" Tab (Chrome, Edge, Brave etc..) or \"Storage\" Tab (Firefox, Pale Moon etc..)\n3. Go to the \"Cookies\" section then the \"https://accounts.spotify.com\" subsection'**
String get step_2_steps;
/// No description provided for @step_3.
@@ -1391,17 +1391,17 @@ abstract class AppLocalizations {
/// **'Number of tracks to generate'**
String get number_of_tracks_generate;
- /// No description provided for @acousticness.
+ /// No description provided for @not_acoustic.
///
/// In en, this message translates to:
- /// **'Acousticness'**
- String get acousticness;
+ /// **'not_acoustic'**
+ String get not_acoustic;
- /// No description provided for @danceability.
+ /// No description provided for @dance_ability.
///
/// In en, this message translates to:
- /// **'Danceability'**
- String get danceability;
+ /// **'dance_ability'**
+ String get dance_ability;
/// No description provided for @energy.
///
@@ -1409,11 +1409,11 @@ abstract class AppLocalizations {
/// **'Energy'**
String get energy;
- /// No description provided for @instrumentalness.
+ /// No description provided for @not_instrumental.
///
/// In en, this message translates to:
- /// **'Instrumentalness'**
- String get instrumentalness;
+ /// **'not_instrumental'**
+ String get not_instrumental;
/// No description provided for @liveness.
///
@@ -1427,11 +1427,11 @@ abstract class AppLocalizations {
/// **'Loudness'**
String get loudness;
- /// No description provided for @speechiness.
+ /// No description provided for @talkative.
///
/// In en, this message translates to:
- /// **'Speechiness'**
- String get speechiness;
+ /// **'talkative'**
+ String get talkative;
/// No description provided for @valence.
///
@@ -1661,11 +1661,11 @@ abstract class AppLocalizations {
/// **'Sleep Timer'**
String get sleep_timer;
- /// No description provided for @mins.
+ /// No description provided for @minutes.
///
/// In en, this message translates to:
/// **'{minutes} Minutes'**
- String mins(Object minutes);
+ String minutes(Object minutes);
/// No description provided for @hours.
///
@@ -1730,7 +1730,7 @@ abstract class AppLocalizations {
/// No description provided for @encryption_failed_warning.
///
/// In en, this message translates to:
- /// **'Spotube uses encryption to securely store your data. But failed to do so. So it\'ll fallback to insecure storage\nIf you\'re using linux, please make sure you\'ve any secret-service (gnome-keyring, kde-wallet, keepassxc etc) installed'**
+ /// **'Spotube uses encryption to securely store your data. But failed to do so. So it\'ll fallback to insecure storage\nIf you\'re using linux, please make sure you\'ve any secret-service (gnome-keyring, kde-wallet, KeePassXC etc) installed'**
String get encryption_failed_warning;
/// No description provided for @querying_info.
@@ -2405,23 +2405,23 @@ abstract class AppLocalizations {
/// **'Owned by you'**
String get owned_by_you;
- /// No description provided for @copied_shareurl_to_clipboard.
+ /// No description provided for @copied_share_url_to_clipboard.
///
/// In en, this message translates to:
/// **'Copied {shareUrl} to clipboard'**
- String copied_shareurl_to_clipboard(Object shareUrl);
+ String copied_share_url_to_clipboard(Object shareUrl);
- /// No description provided for @spotify_hipotetical_calculation.
+ /// No description provided for @spotify_hypothetical_calculation.
///
/// In en, this message translates to:
/// **'*This is calculated based on Spotify\'s per stream\npayout of \$0.003 to \$0.005. This is a hypothetical\ncalculation to give user insight about how much they\nwould have paid to the artists if they were to listen\ntheir song in Spotify.'**
- String get spotify_hipotetical_calculation;
+ String get spotify_hypothetical_calculation;
- /// No description provided for @count_mins.
+ /// No description provided for @count_minutes.
///
/// In en, this message translates to:
- /// **'{minutes} mins'**
- String count_mins(Object minutes);
+ /// **'{minutes} minutes'**
+ String count_minutes(Object minutes);
/// No description provided for @summary_minutes.
///
diff --git a/lib/l10n/generated/app_localizations_ar.dart b/lib/l10n/generated/app_localizations_ar.dart
index 19f23d09..85763335 100644
--- a/lib/l10n/generated/app_localizations_ar.dart
+++ b/lib/l10n/generated/app_localizations_ar.dart
@@ -315,7 +315,7 @@ class AppLocalizationsAr extends AppLocalizations {
String get shuffle_playlist => 'قائمة تشغيل عشوائية';
@override
- String get unshuffle_playlist => 'إلغاء ترتيب قائمة التشغيل';
+ String get not_shuffle_playlist => 'إلغاء ترتيب قائمة التشغيل';
@override
String get previous_track => 'المقطوعة السابقة';
@@ -590,7 +590,7 @@ class AppLocalizationsAr extends AppLocalizations {
String get step_2 => 'الخطوة 2';
@override
- String get step_2_steps => '1. بمجرد تسجيل الدخول، اضغط على F12 أو انقر بزر الماوس الأيمن > فحص لفتح أدوات تطوير المتصفح.\n2. ثم انتقل إلى علامة التبويب \"التطبيقات\" (Chrome وEdge وBrave وما إلى ذلك.) أو علامة التبويب \"التخزين\" (Firefox وPalemoon وما إلى ذلك..)\n3. انتقل إلى قسم \"ملفات تعريف الارتباط\" ثم القسم الفرعي \"https://accounts.spotify.com\"';
+ String get step_2_steps => '1. بمجرد تسجيل الدخول، اضغط على F12 أو انقر بزر الماوس الأيمن > فحص لفتح أدوات تطوير المتصفح.\n2. ثم انتقل إلى علامة التبويب \"التطبيقات\" (Chrome وEdge وBrave وما إلى ذلك.) أو علامة التبويب \"التخزين\" (Firefox وPale Moon وما إلى ذلك..)\n3. انتقل إلى قسم \"ملفات تعريف الارتباط\" ثم القسم الفرعي \"https://accounts.spotify.com\"';
@override
String get step_3 => 'الخطوة 3';
@@ -672,16 +672,16 @@ class AppLocalizationsAr extends AppLocalizations {
String get number_of_tracks_generate => 'عدد المسارات المقطوعات المراد توليدها';
@override
- String get acousticness => 'صوتية';
+ String get not_acoustic => 'صوتية';
@override
- String get danceability => 'قدرة على الرقص';
+ String get dance_ability => 'قدرة على الرقص';
@override
String get energy => 'طاقة';
@override
- String get instrumentalness => 'نفعية';
+ String get not_instrumental => 'نفعية';
@override
String get liveness => 'حيوية';
@@ -690,7 +690,7 @@ class AppLocalizationsAr extends AppLocalizations {
String get loudness => 'بريق';
@override
- String get speechiness => 'كلام';
+ String get talkative => 'كلام';
@override
String get valence => 'تكافؤ';
@@ -809,7 +809,7 @@ class AppLocalizationsAr extends AppLocalizations {
String get sleep_timer => 'مؤقت النوم';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes دقائق';
}
@@ -848,7 +848,7 @@ class AppLocalizationsAr extends AppLocalizations {
String get failed_to_encrypt => 'فشل في التشفير';
@override
- String get encryption_failed_warning => 'يستخدم Spotube التشفير لتخزين بياناتك بشكل آمن. لكنها فشلت في القيام بذلك. لذلك سيعود الأمر إلى التخزين غير الآمن\nإذا كنت تستخدم Linux، فيرجى التأكد من تثبيت أي خدمة سرية (gnome-keyring، kde-wallet، keepassxc، إلخ)';
+ String get encryption_failed_warning => 'يستخدم Spotube التشفير لتخزين بياناتك بشكل آمن. لكنها فشلت في القيام بذلك. لذلك سيعود الأمر إلى التخزين غير الآمن\nإذا كنت تستخدم Linux، فيرجى التأكد من تثبيت أي خدمة سرية (gnome-keyring، kde-wallet، KeePassXC، إلخ)';
@override
String get querying_info => 'جارٍ الاستعلام عن معلومات...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsAr extends AppLocalizations {
String get owned_by_you => 'مملوك لك';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return 'تم نسخ $shareUrl إلى الحافظة';
}
@override
- String get spotify_hipotetical_calculation => '*هذا محسوب بناءً على الدفع لكل بث من سبوتيفاي\nبقيمة 0.003 إلى 0.005 دولار. هذا حساب افتراضي\nلإعطاء المستخدم فكرة عن المبلغ الذي\nكان سيدفعه للفنانين إذا كانوا قد استمعوا\nإلى أغنيتهم على سبوتيفاي.';
+ String get spotify_hypothetical_calculation => '*هذا محسوب بناءً على الدفع لكل بث من سبوتيفاي\nبقيمة 0.003 إلى 0.005 دولار. هذا حساب افتراضي\nلإعطاء المستخدم فكرة عن المبلغ الذي\nكان سيدفعه للفنانين إذا كانوا قد استمعوا\nإلى أغنيتهم على سبوتيفاي.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes دقيقة';
}
diff --git a/lib/l10n/generated/app_localizations_bn.dart b/lib/l10n/generated/app_localizations_bn.dart
index 4009f3dd..8faf199c 100644
--- a/lib/l10n/generated/app_localizations_bn.dart
+++ b/lib/l10n/generated/app_localizations_bn.dart
@@ -315,7 +315,7 @@ class AppLocalizationsBn extends AppLocalizations {
String get shuffle_playlist => 'প্লেলিস্ট এলোমেলো করুন';
@override
- String get unshuffle_playlist => 'প্লেলিস্ট আগের মতো করুন';
+ String get not_shuffle_playlist => 'প্লেলিস্ট আগের মতো করুন';
@override
String get previous_track => 'আগের গানের ট্র্যাক';
@@ -590,7 +590,7 @@ class AppLocalizationsBn extends AppLocalizations {
String get step_2 => 'ধাপ 2';
@override
- String get step_2_steps => '১. একবার আপনি লগ ইন করলে, ব্রাউজার ডেভটুল খুলতে F12 বা মাউসের রাইট ক্লিক > \"Inspect to open Browser DevTools\" টিপুন।\n২. তারপর \"Application\" ট্যাবে যান (Chrome, Edge, Brave etc..) অথবা \"Storage\" Tab (Firefox, Palemoon etc..)\n৩. \"Cookies \" বিভাগে যান তারপর \"https://accounts.spotify.com\" উপবিভাগে যান';
+ String get step_2_steps => '১. একবার আপনি লগ ইন করলে, ব্রাউজার ডেভটুল খুলতে F12 বা মাউসের রাইট ক্লিক > \"Inspect to open Browser DevTools\" টিপুন।\n২. তারপর \"Application\" ট্যাবে যান (Chrome, Edge, Brave etc..) অথবা \"Storage\" Tab (Firefox, Pale Moon etc..)\n৩. \"Cookies \" বিভাগে যান তারপর \"https://accounts.spotify.com\" উপবিভাগে যান';
@override
String get step_3 => 'ধাপ 3';
@@ -672,16 +672,16 @@ class AppLocalizationsBn extends AppLocalizations {
String get number_of_tracks_generate => 'উত্পাদিত ট্র্যাকের সংখ্যা';
@override
- String get acousticness => 'অধ্যাত্মিকতা';
+ String get not_acoustic => 'অধ্যাত্মিকতা';
@override
- String get danceability => 'নৃত্যমূলকতা';
+ String get dance_ability => 'নৃত্যমূলকতা';
@override
String get energy => 'শক্তি';
@override
- String get instrumentalness => 'সাধারণতা';
+ String get not_instrumental => 'সাধারণতা';
@override
String get liveness => 'জীবনমুক্ততা';
@@ -690,7 +690,7 @@ class AppLocalizationsBn extends AppLocalizations {
String get loudness => 'স্বরের উচ্চতা';
@override
- String get speechiness => 'বক্তব্যমূলকতা';
+ String get talkative => 'বক্তব্যমূলকতা';
@override
String get valence => 'সন্তোষমূলকতা';
@@ -809,7 +809,7 @@ class AppLocalizationsBn extends AppLocalizations {
String get sleep_timer => 'স্লীপ টাইমার';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes মিনিট';
}
@@ -848,7 +848,7 @@ class AppLocalizationsBn extends AppLocalizations {
String get failed_to_encrypt => 'এনক্রিপ্ট করা ব্যর্থ হয়েছে';
@override
- String get encryption_failed_warning => 'Spotube আপনার তথ্যগুলি নিরাপদভাবে স্টোর করতে এনক্রিপশন ব্যবহার করে। কিন্তু এটি ব্যর্থ হয়েছে। তাই এটি অনিরাপদ স্টোরে ফলফল হবে\nযদি আপনি Linux ব্যবহার করেন, তবে দয়া করে নিশ্চিত হউন যে আপনার কোনও সিক্রেট-সার্ভিস gnome-keyring, kde-wallet, keepassxc ইত্যাদি ইনস্টল করা আছে';
+ String get encryption_failed_warning => 'Spotube আপনার তথ্যগুলি নিরাপদভাবে স্টোর করতে এনক্রিপশন ব্যবহার করে। কিন্তু এটি ব্যর্থ হয়েছে। তাই এটি অনিরাপদ স্টোরে ফলফল হবে\nযদি আপনি Linux ব্যবহার করেন, তবে দয়া করে নিশ্চিত হউন যে আপনার কোনও সিক্রেট-সার্ভিস gnome-keyring, kde-wallet, KeePassXC ইত্যাদি ইনস্টল করা আছে';
@override
String get querying_info => 'তথ্য অনুসন্ধান করা হচ্ছে';
@@ -1207,15 +1207,15 @@ class AppLocalizationsBn extends AppLocalizations {
String get owned_by_you => 'আপনার মালিকানাধীন';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl ক্লিপবোর্ডে কপি করা হয়েছে';
}
@override
- String get spotify_hipotetical_calculation => '*এটি স্পোটিফাইয়ের প্রতি স্ট্রিম\n\$0.003 থেকে \$0.005 পেআউটের ভিত্তিতে গণনা করা হয়েছে। এটি একটি ধারণাগত\nগণনা ব্যবহারকারীদেরকে জানাতে দেয় যে কত টাকা\nতারা শিল্পীদের দিতো যদি তারা স্পোটিফাইতে\nতাদের গান শুনতেন।';
+ String get spotify_hypothetical_calculation => '*এটি স্পোটিফাইয়ের প্রতি স্ট্রিম\n\$0.003 থেকে \$0.005 পেআউটের ভিত্তিতে গণনা করা হয়েছে। এটি একটি ধারণাগত\nগণনা ব্যবহারকারীদেরকে জানাতে দেয় যে কত টাকা\nতারা শিল্পীদের দিতো যদি তারা স্পোটিফাইতে\nতাদের গান শুনতেন।';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes মিনিট';
}
diff --git a/lib/l10n/generated/app_localizations_ca.dart b/lib/l10n/generated/app_localizations_ca.dart
index c9f80a5a..a1b3b1fb 100644
--- a/lib/l10n/generated/app_localizations_ca.dart
+++ b/lib/l10n/generated/app_localizations_ca.dart
@@ -315,7 +315,7 @@ class AppLocalizationsCa extends AppLocalizations {
String get shuffle_playlist => 'Mesclar la llista de reproducció';
@override
- String get unshuffle_playlist => 'No mesclar la llista de reproducció';
+ String get not_shuffle_playlist => 'No mesclar la llista de reproducció';
@override
String get previous_track => 'Cançó anterior';
@@ -590,7 +590,7 @@ class AppLocalizationsCa extends AppLocalizations {
String get step_2 => 'Pas 2';
@override
- String get step_2_steps => '1. Una vegada que hagi iniciat sessió, premi F12 o faci clic dret amb el ratolí > Inspeccionar per obrir les eines de desenvolulpador del navegador.\n2. Després vagi a la pestanya \"Application\" (Chrome, Edge, Brave, etc.) o \"Storage\" (Firefox, Palemoon, etc.)\n3. Vagi a la secció \"Cookies\" i després a la subsecció \"https://accounts.spotify.com\"';
+ String get step_2_steps => '1. Una vegada que hagi iniciat sessió, premi F12 o faci clic dret amb el ratolí > Inspeccionar per obrir les eines de desenvolulpador del navegador.\n2. Després vagi a la pestanya \"Application\" (Chrome, Edge, Brave, etc.) o \"Storage\" (Firefox, Pale Moon, etc.)\n3. Vagi a la secció \"Cookies\" i després a la subsecció \"https://accounts.spotify.com\"';
@override
String get step_3 => 'Pas 3';
@@ -672,16 +672,16 @@ class AppLocalizationsCa extends AppLocalizations {
String get number_of_tracks_generate => 'Número de cançons a generar';
@override
- String get acousticness => 'Acústica';
+ String get not_acoustic => 'Acústica';
@override
- String get danceability => 'Ballabilitat';
+ String get dance_ability => 'Ballabilitat';
@override
String get energy => 'Energia';
@override
- String get instrumentalness => 'Instrumental';
+ String get not_instrumental => 'Instrumental';
@override
String get liveness => 'En viu';
@@ -690,7 +690,7 @@ class AppLocalizationsCa extends AppLocalizations {
String get loudness => 'Sonoritat';
@override
- String get speechiness => 'Parla';
+ String get talkative => 'Parla';
@override
String get valence => 'Valencia';
@@ -809,7 +809,7 @@ class AppLocalizationsCa extends AppLocalizations {
String get sleep_timer => 'Temporitzador d\'apagat';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes minuts';
}
@@ -848,7 +848,7 @@ class AppLocalizationsCa extends AppLocalizations {
String get failed_to_encrypt => 'Error al xifrar';
@override
- String get encryption_failed_warning => 'Spotube utilitza el xifrado per emmagatzemar les seves dades de forma segura. Però ha fallat. Per tant, tornarà a un emmagatzament no segur\nSi estè utilizant Linux, asseguri\'s de tenir instal·lats els serveis secrets com gnome-keyring, kde-wallet i keepassxc';
+ String get encryption_failed_warning => 'Spotube utilitza el xifrado per emmagatzemar les seves dades de forma segura. Però ha fallat. Per tant, tornarà a un emmagatzament no segur\nSi estè utilizant Linux, asseguri\'s de tenir instal·lats els serveis secrets com gnome-keyring, kde-wallet i KeePassXC';
@override
String get querying_info => 'Consultant informació...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsCa extends AppLocalizations {
String get owned_by_you => 'De la teva propietat';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return 'S\'ha copiat $shareUrl al porta-retalls';
}
@override
- String get spotify_hipotetical_calculation => '*Això es calcula basant-se en els\npagaments per reproducció de Spotify de \$0.003 a \$0.005.\nAquest és un càlcul hipotètic per\ndonar als usuaris una idea de quant\nhaurien pagat als artistes si haguessin escoltat\nla seva cançó a Spotify.';
+ String get spotify_hypothetical_calculation => '*Això es calcula basant-se en els\npagaments per reproducció de Spotify de \$0.003 a \$0.005.\nAquest és un càlcul hipotètic per\ndonar als usuaris una idea de quant\nhaurien pagat als artistes si haguessin escoltat\nla seva cançó a Spotify.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes minuts';
}
diff --git a/lib/l10n/generated/app_localizations_cs.dart b/lib/l10n/generated/app_localizations_cs.dart
index 4bacb229..b5415678 100644
--- a/lib/l10n/generated/app_localizations_cs.dart
+++ b/lib/l10n/generated/app_localizations_cs.dart
@@ -315,7 +315,7 @@ class AppLocalizationsCs extends AppLocalizations {
String get shuffle_playlist => 'Zamíchat playlist';
@override
- String get unshuffle_playlist => 'Zrušit zamíchání playlistu';
+ String get not_shuffle_playlist => 'Zrušit zamíchání playlistu';
@override
String get previous_track => 'Předchozí skladba';
@@ -590,7 +590,7 @@ class AppLocalizationsCs extends AppLocalizations {
String get step_2 => 'Krok 2';
@override
- String get step_2_steps => '1. Jakmile jste přihlášeni, stiskněte F12 nebo pravé tlačítko myši > Prozkoumat, abyste otevřeli nástroje pro vývojáře prohlížeče.\n2. Poté přejděte na kartu \"Aplikace\" (Chrome, Edge, Brave atd.) nebo kartu \"Úložiště\" (Firefox, Palemoon atd.)\n3. Přejděte do sekce \"Cookies\" a pak do podsekce \"https://accounts.spotify.com\"';
+ String get step_2_steps => '1. Jakmile jste přihlášeni, stiskněte F12 nebo pravé tlačítko myši > Prozkoumat, abyste otevřeli nástroje pro vývojáře prohlížeče.\n2. Poté přejděte na kartu \"Aplikace\" (Chrome, Edge, Brave atd.) nebo kartu \"Úložiště\" (Firefox, Pale Moon atd.)\n3. Přejděte do sekce \"Cookies\" a pak do podsekce \"https://accounts.spotify.com\"';
@override
String get step_3 => 'Krok 3';
@@ -672,16 +672,16 @@ class AppLocalizationsCs extends AppLocalizations {
String get number_of_tracks_generate => 'Počet skladeb k vygenerování';
@override
- String get acousticness => 'Akustičnost';
+ String get not_acoustic => 'Akustičnost';
@override
- String get danceability => 'Tanečnost';
+ String get dance_ability => 'Tanečnost';
@override
String get energy => 'Energie';
@override
- String get instrumentalness => 'Instrumentálnost';
+ String get not_instrumental => 'Instrumentálnost';
@override
String get liveness => 'Živost';
@@ -690,7 +690,7 @@ class AppLocalizationsCs extends AppLocalizations {
String get loudness => 'Hlasitost';
@override
- String get speechiness => 'Mluvnost';
+ String get talkative => 'Mluvnost';
@override
String get valence => 'Valence';
@@ -809,7 +809,7 @@ class AppLocalizationsCs extends AppLocalizations {
String get sleep_timer => 'Časovač spánku';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes Minut';
}
@@ -848,7 +848,7 @@ class AppLocalizationsCs extends AppLocalizations {
String get failed_to_encrypt => 'Šifrování selhalo';
@override
- String get encryption_failed_warning => 'Spotube používá šifrování k bezpečnému ukládání vašich dat. Ale selhalo. Takže se vrátí k nezabezpečenému úložišti\nPokud používáte linux, ujistěte se, že máte nainstalovanou jakoukoli službu k ukládání bezpečnostních pověření (gnome-keyring, kde-wallet, keepassxc atd.)';
+ String get encryption_failed_warning => 'Spotube používá šifrování k bezpečnému ukládání vašich dat. Ale selhalo. Takže se vrátí k nezabezpečenému úložišti\nPokud používáte linux, ujistěte se, že máte nainstalovanou jakoukoli službu k ukládání bezpečnostních pověření (gnome-keyring, kde-wallet, KeePassXC atd.)';
@override
String get querying_info => 'Získávání informací...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsCs extends AppLocalizations {
String get owned_by_you => 'Vlastněno vámi';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return 'Zkopírováno $shareUrl do schránky';
}
@override
- String get spotify_hipotetical_calculation => '*Toto je vypočítáno na základě výplaty\nza stream Spotify od \$0.003 do \$0.005.\nToto je hypotetický výpočet,\nabyste měli představu o tom, kolik\nbyste zaplatili umělcům,\npokud byste poslouchali jejich píseň na Spotify.';
+ String get spotify_hypothetical_calculation => '*Toto je vypočítáno na základě výplaty\nza stream Spotify od \$0.003 do \$0.005.\nToto je hypotetický výpočet,\nabyste měli představu o tom, kolik\nbyste zaplatili umělcům,\npokud byste poslouchali jejich píseň na Spotify.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes minut';
}
diff --git a/lib/l10n/generated/app_localizations_de.dart b/lib/l10n/generated/app_localizations_de.dart
index a3b51c8a..1a6980c9 100644
--- a/lib/l10n/generated/app_localizations_de.dart
+++ b/lib/l10n/generated/app_localizations_de.dart
@@ -315,7 +315,7 @@ class AppLocalizationsDe extends AppLocalizations {
String get shuffle_playlist => 'Playlist mischen';
@override
- String get unshuffle_playlist => 'Playlist nicht mehr mischen';
+ String get not_shuffle_playlist => 'Playlist nicht mehr mischen';
@override
String get previous_track => 'Vorheriger Track';
@@ -590,7 +590,7 @@ class AppLocalizationsDe extends AppLocalizations {
String get step_2 => 'Schritt 2';
@override
- String get step_2_steps => '1. Wenn du angemeldet bist, drücke F12 oder klicke mit der rechten Maustaste > Inspektion, um die Browser-Entwicklertools zu öffnen.\n2. Gehe dann zum \"Anwendungs\"-Tab (Chrome, Edge, Brave usw.) oder zum \"Storage\"-Tab (Firefox, Palemoon usw.)\n3. Gehe zum Abschnitt \"Cookies\" und dann zum Unterabschnitt \"https://accounts.spotify.com\"';
+ String get step_2_steps => '1. Wenn du angemeldet bist, drücke F12 oder klicke mit der rechten Maustaste > Inspektion, um die Browser-Entwicklertools zu öffnen.\n2. Gehe dann zum \"Anwendungs\"-Tab (Chrome, Edge, Brave usw.) oder zum \"Storage\"-Tab (Firefox, Pale Moon usw.)\n3. Gehe zum Abschnitt \"Cookies\" und dann zum Unterabschnitt \"https://accounts.spotify.com\"';
@override
String get step_3 => 'Schritt 3';
@@ -672,16 +672,16 @@ class AppLocalizationsDe extends AppLocalizations {
String get number_of_tracks_generate => 'Anzahl der zu generierenden Titel';
@override
- String get acousticness => 'Akustik';
+ String get not_acoustic => 'Akustik';
@override
- String get danceability => 'Tanzbarkeit';
+ String get dance_ability => 'Tanzbarkeit';
@override
String get energy => 'Energie';
@override
- String get instrumentalness => 'Instrumentalität';
+ String get not_instrumental => 'Instrumentalität';
@override
String get liveness => 'Lebendigkeit';
@@ -690,7 +690,7 @@ class AppLocalizationsDe extends AppLocalizations {
String get loudness => 'Lautstärke';
@override
- String get speechiness => 'Sprechanteil';
+ String get talkative => 'Sprechanteil';
@override
String get valence => 'Stimmung';
@@ -809,7 +809,7 @@ class AppLocalizationsDe extends AppLocalizations {
String get sleep_timer => 'Schlaftimer';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes Minuten';
}
@@ -848,7 +848,7 @@ class AppLocalizationsDe extends AppLocalizations {
String get failed_to_encrypt => 'Verschlüsselung fehlgeschlagen';
@override
- String get encryption_failed_warning => 'Spotube verwendet Verschlüsselung, um Ihre Daten sicher zu speichern. Dies ist jedoch fehlgeschlagen. Daher wird es auf unsichere Speicherung zurückgreifen\nWenn Sie Linux verwenden, stellen Sie bitte sicher, dass Sie Secret-Services wie gnome-keyring, kde-wallet und keepassxc installiert haben';
+ String get encryption_failed_warning => 'Spotube verwendet Verschlüsselung, um Ihre Daten sicher zu speichern. Dies ist jedoch fehlgeschlagen. Daher wird es auf unsichere Speicherung zurückgreifen\nWenn Sie Linux verwenden, stellen Sie bitte sicher, dass Sie Secret-Services wie gnome-keyring, kde-wallet und KeePassXC installiert haben';
@override
String get querying_info => 'Abfrageinformationen...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsDe extends AppLocalizations {
String get owned_by_you => 'In Ihrem Besitz';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl in die Zwischenablage kopiert';
}
@override
- String get spotify_hipotetical_calculation => '*Dies ist basierend auf Spotifys\npro Stream Auszahlung von \$0,003 bis \$0,005\nberechnet. Dies ist eine hypothetische Berechnung,\num dem Benutzer Einblick zu geben,\nwieviel sie den Künstlern gezahlt hätten,\nwenn sie ihren Song auf Spotify gehört hätten.';
+ String get spotify_hypothetical_calculation => '*Dies ist basierend auf Spotifys\npro Stream Auszahlung von \$0,003 bis \$0,005\nberechnet. Dies ist eine hypothetische Berechnung,\num dem Benutzer Einblick zu geben,\nwieviel sie den Künstlern gezahlt hätten,\nwenn sie ihren Song auf Spotify gehört hätten.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes Minuten';
}
diff --git a/lib/l10n/generated/app_localizations_en.dart b/lib/l10n/generated/app_localizations_en.dart
index 8ad7ca57..b06fc558 100644
--- a/lib/l10n/generated/app_localizations_en.dart
+++ b/lib/l10n/generated/app_localizations_en.dart
@@ -315,7 +315,7 @@ class AppLocalizationsEn extends AppLocalizations {
String get shuffle_playlist => 'Shuffle playlist';
@override
- String get unshuffle_playlist => 'Unshuffle playlist';
+ String get not_shuffle_playlist => 'Unshuffle playlist';
@override
String get previous_track => 'Previous track';
@@ -590,7 +590,7 @@ class AppLocalizationsEn extends AppLocalizations {
String get step_2 => 'Step 2';
@override
- String get step_2_steps => '1. Once you\'re logged in, press F12 or Mouse Right Click > Inspect to Open the Browser devtools.\n2. Then go the \"Application\" Tab (Chrome, Edge, Brave etc..) or \"Storage\" Tab (Firefox, Palemoon etc..)\n3. Go to the \"Cookies\" section then the \"https://accounts.spotify.com\" subsection';
+ String get step_2_steps => '1. Once you\'re logged in, press F12 or Mouse Right Click > Inspect to Open the Browser devtools.\n2. Then go the \"Application\" Tab (Chrome, Edge, Brave etc..) or \"Storage\" Tab (Firefox, Pale Moon etc..)\n3. Go to the \"Cookies\" section then the \"https://accounts.spotify.com\" subsection';
@override
String get step_3 => 'Step 3';
@@ -672,16 +672,16 @@ class AppLocalizationsEn extends AppLocalizations {
String get number_of_tracks_generate => 'Number of tracks to generate';
@override
- String get acousticness => 'Acousticness';
+ String get not_acoustic => 'not_acoustic';
@override
- String get danceability => 'Danceability';
+ String get dance_ability => 'dance_ability';
@override
String get energy => 'Energy';
@override
- String get instrumentalness => 'Instrumentalness';
+ String get not_instrumental => 'not_instrumental';
@override
String get liveness => 'Liveness';
@@ -690,7 +690,7 @@ class AppLocalizationsEn extends AppLocalizations {
String get loudness => 'Loudness';
@override
- String get speechiness => 'Speechiness';
+ String get talkative => 'talkative';
@override
String get valence => 'Valence';
@@ -809,7 +809,7 @@ class AppLocalizationsEn extends AppLocalizations {
String get sleep_timer => 'Sleep Timer';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes Minutes';
}
@@ -848,7 +848,7 @@ class AppLocalizationsEn extends AppLocalizations {
String get failed_to_encrypt => 'Failed to encrypt';
@override
- String get encryption_failed_warning => 'Spotube uses encryption to securely store your data. But failed to do so. So it\'ll fallback to insecure storage\nIf you\'re using linux, please make sure you\'ve any secret-service (gnome-keyring, kde-wallet, keepassxc etc) installed';
+ String get encryption_failed_warning => 'Spotube uses encryption to securely store your data. But failed to do so. So it\'ll fallback to insecure storage\nIf you\'re using linux, please make sure you\'ve any secret-service (gnome-keyring, kde-wallet, KeePassXC etc) installed';
@override
String get querying_info => 'Querying info...';
@@ -1207,16 +1207,16 @@ class AppLocalizationsEn extends AppLocalizations {
String get owned_by_you => 'Owned by you';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return 'Copied $shareUrl to clipboard';
}
@override
- String get spotify_hipotetical_calculation => '*This is calculated based on Spotify\'s per stream\npayout of \$0.003 to \$0.005. This is a hypothetical\ncalculation to give user insight about how much they\nwould have paid to the artists if they were to listen\ntheir song in Spotify.';
+ String get spotify_hypothetical_calculation => '*This is calculated based on Spotify\'s per stream\npayout of \$0.003 to \$0.005. This is a hypothetical\ncalculation to give user insight about how much they\nwould have paid to the artists if they were to listen\ntheir song in Spotify.';
@override
- String count_mins(Object minutes) {
- return '$minutes mins';
+ String count_minutes(Object minutes) {
+ return '$minutes minutes';
}
@override
diff --git a/lib/l10n/generated/app_localizations_es.dart b/lib/l10n/generated/app_localizations_es.dart
index 7db6473a..3f1aaad1 100644
--- a/lib/l10n/generated/app_localizations_es.dart
+++ b/lib/l10n/generated/app_localizations_es.dart
@@ -315,7 +315,7 @@ class AppLocalizationsEs extends AppLocalizations {
String get shuffle_playlist => 'Reproducir lista en orden aleatorio';
@override
- String get unshuffle_playlist => 'Desactivar reproducción aleatoria';
+ String get not_shuffle_playlist => 'Desactivar reproducción aleatoria';
@override
String get previous_track => 'Pista anterior';
@@ -590,7 +590,7 @@ class AppLocalizationsEs extends AppLocalizations {
String get step_2 => 'Paso 2';
@override
- String get step_2_steps => '1. Una vez que hayas iniciado sesión, presiona F12 o haz clic derecho con el ratón > Inspeccionar para abrir las herramientas de desarrollo del navegador.\n2. Luego ve a la pestaña \"Application\" (Chrome, Edge, Brave, etc.) o \"Storage\" (Firefox, Palemoon, etc.)\n3. Ve a la sección \"Cookies\" y luego la subsección \"https://accounts.spotify.com\"';
+ String get step_2_steps => '1. Una vez que hayas iniciado sesión, presiona F12 o haz clic derecho con el ratón > Inspeccionar para abrir las herramientas de desarrollo del navegador.\n2. Luego ve a la pestaña \"Application\" (Chrome, Edge, Brave, etc.) o \"Storage\" (Firefox, Pale Moon, etc.)\n3. Ve a la sección \"Cookies\" y luego la subsección \"https://accounts.spotify.com\"';
@override
String get step_3 => 'Paso 3';
@@ -672,16 +672,16 @@ class AppLocalizationsEs extends AppLocalizations {
String get number_of_tracks_generate => 'Número de canciones a generar';
@override
- String get acousticness => 'Acousticness';
+ String get not_acoustic => 'not_acoustic';
@override
- String get danceability => 'Danceability';
+ String get dance_ability => 'dance_ability';
@override
String get energy => 'Energía';
@override
- String get instrumentalness => 'Instrumentalidad';
+ String get not_instrumental => 'Instrumentalidad';
@override
String get liveness => 'En vivo';
@@ -690,7 +690,7 @@ class AppLocalizationsEs extends AppLocalizations {
String get loudness => 'Volumen';
@override
- String get speechiness => 'Habla';
+ String get talkative => 'Habla';
@override
String get valence => 'Valencia';
@@ -809,7 +809,7 @@ class AppLocalizationsEs extends AppLocalizations {
String get sleep_timer => 'Temporizador de apagado';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes minutos';
}
@@ -848,7 +848,7 @@ class AppLocalizationsEs extends AppLocalizations {
String get failed_to_encrypt => 'Error al cifrar';
@override
- String get encryption_failed_warning => 'Spotube utiliza el cifrado para almacenar sus datos de forma segura. Pero ha fallado. Por lo tanto, volverá a un almacenamiento no seguro\nSi está utilizando Linux, asegúrese de tener instalados servicios secretos como gnome-keyring, kde-wallet y keepassxc';
+ String get encryption_failed_warning => 'Spotube utiliza el cifrado para almacenar sus datos de forma segura. Pero ha fallado. Por lo tanto, volverá a un almacenamiento no seguro\nSi está utilizando Linux, asegúrese de tener instalados servicios secretos como gnome-keyring, kde-wallet y KeePassXC';
@override
String get querying_info => 'Consultando información...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsEs extends AppLocalizations {
String get owned_by_you => 'En tu posesión';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return 'Copiado $shareUrl al portapapeles';
}
@override
- String get spotify_hipotetical_calculation => '*Esto se calcula en base al\npago por stream de Spotify de \$0.003 a \$0.005.\nEs un cálculo hipotético para dar\nuna idea de cuánto habría\npagado a los artistas si hubieras escuchado\nsu canción en Spotify.';
+ String get spotify_hypothetical_calculation => '*Esto se calcula en base al\npago por stream de Spotify de \$0.003 a \$0.005.\nEs un cálculo hipotético para dar\nuna idea de cuánto habría\npagado a los artistas si hubieras escuchado\nsu canción en Spotify.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes minutos';
}
diff --git a/lib/l10n/generated/app_localizations_eu.dart b/lib/l10n/generated/app_localizations_eu.dart
index 96615c5b..6dcfb549 100644
--- a/lib/l10n/generated/app_localizations_eu.dart
+++ b/lib/l10n/generated/app_localizations_eu.dart
@@ -315,7 +315,7 @@ class AppLocalizationsEu extends AppLocalizations {
String get shuffle_playlist => 'Erreproduzitu zerrenda ausazko ordenean';
@override
- String get unshuffle_playlist => 'Desgaitu ausazko erreprodukzioa';
+ String get not_shuffle_playlist => 'Desgaitu ausazko erreprodukzioa';
@override
String get previous_track => 'Aurreko pista';
@@ -590,7 +590,7 @@ class AppLocalizationsEu extends AppLocalizations {
String get step_2 => '2. pausua';
@override
- String get step_2_steps => '1. Saioa hasita duzularik, sakatu F12 edo saguaren eskuineko botoia klikatu > Ikuskatu nabigatzaileko garapen tresnak irekitzeko.\n2. Joan \"Aplikazio\" (Chrome, Edge, Brave, etab.) edo \"Biltegiratzea\" (Firefox, Palemoon, etab.)\n3. Joan \"Cookieak\" atalera eta gero \"https://accounts.spotify.com\" azpiatalera';
+ String get step_2_steps => '1. Saioa hasita duzularik, sakatu F12 edo saguaren eskuineko botoia klikatu > Ikuskatu nabigatzaileko garapen tresnak irekitzeko.\n2. Joan \"Aplikazio\" (Chrome, Edge, Brave, etab.) edo \"Biltegiratzea\" (Firefox, Pale Moon, etab.)\n3. Joan \"Cookieak\" atalera eta gero \"https://accounts.spotify.com\" azpiatalera';
@override
String get step_3 => '3. pausua';
@@ -672,16 +672,16 @@ class AppLocalizationsEu extends AppLocalizations {
String get number_of_tracks_generate => 'Sortzeko kanta kopurua';
@override
- String get acousticness => 'Akustikotasuna';
+ String get not_acoustic => 'Akustikotasuna';
@override
- String get danceability => 'Dantzagarritasuna';
+ String get dance_ability => 'Dantzagarritasuna';
@override
String get energy => 'Energia';
@override
- String get instrumentalness => 'Instrumentaltasuna';
+ String get not_instrumental => 'Instrumentaltasuna';
@override
String get liveness => 'Zuzenean';
@@ -690,7 +690,7 @@ class AppLocalizationsEu extends AppLocalizations {
String get loudness => 'Ozentasuna';
@override
- String get speechiness => 'Hitzaldia';
+ String get talkative => 'Hitzaldia';
@override
String get valence => 'Balentzia';
@@ -809,7 +809,7 @@ class AppLocalizationsEu extends AppLocalizations {
String get sleep_timer => 'Itzaltzeko tenporizadorea';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes minutu';
}
@@ -848,7 +848,7 @@ class AppLocalizationsEu extends AppLocalizations {
String get failed_to_encrypt => 'Errorea zifratzean';
@override
- String get encryption_failed_warning => 'Spotube-ek zifratzea darabil datuak modu seguruan biltegiratzeko. Baina huts egin du. Hori dela eta, biltegiratzea ez da segurua izango\nLinux erabiltzen ari bazara, ziurtatu edozein sekretu-zerbitzu (gnome-keyring, kde-wallet, keepassxc etab.) instalatuta duzula';
+ String get encryption_failed_warning => 'Spotube-ek zifratzea darabil datuak modu seguruan biltegiratzeko. Baina huts egin du. Hori dela eta, biltegiratzea ez da segurua izango\nLinux erabiltzen ari bazara, ziurtatu edozein sekretu-zerbitzu (gnome-keyring, kde-wallet, KeePassXC etab.) instalatuta duzula';
@override
String get querying_info => 'Informazioa egiaztatzen...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsEu extends AppLocalizations {
String get owned_by_you => 'Zure jabetzakoa';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl arbelera kopiatua';
}
@override
- String get spotify_hipotetical_calculation => '*Sportify-k stream bakoitzeko duen \$0.003 eta \$0.005\nordainsarian oinarritua da. Kalkulu hipotetiko bat,\nkanta hauek Spotify-n entzun bazenitu,\nberaiek artistari zenbat ordaiduko lioketen jakin dezazun.';
+ String get spotify_hypothetical_calculation => '*Sportify-k stream bakoitzeko duen \$0.003 eta \$0.005\nordainsarian oinarritua da. Kalkulu hipotetiko bat,\nkanta hauek Spotify-n entzun bazenitu,\nberaiek artistari zenbat ordaiduko lioketen jakin dezazun.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes minutu';
}
diff --git a/lib/l10n/generated/app_localizations_fa.dart b/lib/l10n/generated/app_localizations_fa.dart
index 657d01e1..9ea5caf4 100644
--- a/lib/l10n/generated/app_localizations_fa.dart
+++ b/lib/l10n/generated/app_localizations_fa.dart
@@ -315,7 +315,7 @@ class AppLocalizationsFa extends AppLocalizations {
String get shuffle_playlist => 'پخش تصادفی';
@override
- String get unshuffle_playlist => 'خاموش کردن پخش تصادفی';
+ String get not_shuffle_playlist => 'خاموش کردن پخش تصادفی';
@override
String get previous_track => 'آهنگ قبلی';
@@ -590,7 +590,7 @@ class AppLocalizationsFa extends AppLocalizations {
String get step_2 => 'گام 2';
@override
- String get step_2_steps => '1. پس از ورود به سیستم، F12 یا کلیک راست ماوس > Inspect را فشار دهید تا ابزارهای توسعه مرورگر باز شود..\n2. سپس به تب \"Application\" (Chrome, Edge, Brave etc..) یا \"Storage\" Tab (Firefox, Palemoon etc..)\n3. به قسمت \"Cookies\" و به پخش \"https://accounts.spotify.com\" بروید';
+ String get step_2_steps => '1. پس از ورود به سیستم، F12 یا کلیک راست ماوس > Inspect را فشار دهید تا ابزارهای توسعه مرورگر باز شود..\n2. سپس به تب \"Application\" (Chrome, Edge, Brave etc..) یا \"Storage\" Tab (Firefox, Pale Moon etc..)\n3. به قسمت \"Cookies\" و به پخش \"https://accounts.spotify.com\" بروید';
@override
String get step_3 => 'گام 3';
@@ -672,16 +672,16 @@ class AppLocalizationsFa extends AppLocalizations {
String get number_of_tracks_generate => 'تعداد آهنگ های ساخته شده';
@override
- String get acousticness => 'آکوستیک';
+ String get not_acoustic => 'آکوستیک';
@override
- String get danceability => 'رقصیدن';
+ String get dance_ability => 'رقصیدن';
@override
String get energy => 'انرژی';
@override
- String get instrumentalness => 'بی کلام';
+ String get not_instrumental => 'بی کلام';
@override
String get liveness => 'حس زندگی';
@@ -690,7 +690,7 @@ class AppLocalizationsFa extends AppLocalizations {
String get loudness => 'صدای بلند';
@override
- String get speechiness => 'دکلمه';
+ String get talkative => 'دکلمه';
@override
String get valence => 'ظرفیت';
@@ -809,7 +809,7 @@ class AppLocalizationsFa extends AppLocalizations {
String get sleep_timer => 'زمان خواب';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes دقیقه';
}
@@ -848,7 +848,7 @@ class AppLocalizationsFa extends AppLocalizations {
String get failed_to_encrypt => 'رمز گذاری نشده';
@override
- String get encryption_failed_warning => 'Spotube از رمزگذاری برای ذخیره ایمن داده های شما استفاده می کند. اما موفق به انجام این کار نشد. بنابراین به فضای ذخیرهسازی ناامن تبدیل میشود\nاگر از لینوکس استفاده میکنید، لطفاً مطمئن شوید که سرویس مخفی (gnome-keyring، kde-wallet، keepassxc و غیره) را نصب کردهاید.';
+ String get encryption_failed_warning => 'Spotube از رمزگذاری برای ذخیره ایمن داده های شما استفاده می کند. اما موفق به انجام این کار نشد. بنابراین به فضای ذخیرهسازی ناامن تبدیل میشود\nاگر از لینوکس استفاده میکنید، لطفاً مطمئن شوید که سرویس مخفی (gnome-keyring، kde-wallet، KeePassXC و غیره) را نصب کردهاید.';
@override
String get querying_info => 'جستجو درباره ';
@@ -1207,15 +1207,15 @@ class AppLocalizationsFa extends AppLocalizations {
String get owned_by_you => 'توسط شما مالکیت شده';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl به کلیپبورد کپی شد';
}
@override
- String get spotify_hipotetical_calculation => '*این بر اساس پرداخت هر پخش اسپاتیفای\nبه مبلغ 0.003 تا 0.005 دلار محاسبه شده است.\nاین یک محاسبه فرضی است که به کاربران نشان دهد چقدر ممکن است\nبه هنرمندان پرداخت میکردند اگر ترانه آنها را در اسپاتیفای گوش میدادند.';
+ String get spotify_hypothetical_calculation => '*این بر اساس پرداخت هر پخش اسپاتیفای\nبه مبلغ 0.003 تا 0.005 دلار محاسبه شده است.\nاین یک محاسبه فرضی است که به کاربران نشان دهد چقدر ممکن است\nبه هنرمندان پرداخت میکردند اگر ترانه آنها را در اسپاتیفای گوش میدادند.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes دقیقه';
}
diff --git a/lib/l10n/generated/app_localizations_fi.dart b/lib/l10n/generated/app_localizations_fi.dart
index a1c7579f..4ddec92c 100644
--- a/lib/l10n/generated/app_localizations_fi.dart
+++ b/lib/l10n/generated/app_localizations_fi.dart
@@ -315,7 +315,7 @@ class AppLocalizationsFi extends AppLocalizations {
String get shuffle_playlist => 'Sekoita soittolista';
@override
- String get unshuffle_playlist => 'Poista sekoitus soittolistasta';
+ String get not_shuffle_playlist => 'Poista sekoitus soittolistasta';
@override
String get previous_track => 'Äskeinen kappale';
@@ -590,7 +590,7 @@ class AppLocalizationsFi extends AppLocalizations {
String get step_2 => 'Vaihe 2';
@override
- String get step_2_steps => '1. Kun olet kirjautunut, paina F12 tai oikeaa hiiren näppäintä > Tarkista ja avaa selaimen kehittäjä työkalut.\n2. Mene sitten \"Application\"-välilehteen (Chrome, Edge, Brave jne..) tai \"Storage\"-välilehteen (Firefox, Palemoon jne..)\n3. Mene \"Cookies\"-osastoon, sitten \"https://accounts.spotify.com\" alakohtaan.';
+ String get step_2_steps => '1. Kun olet kirjautunut, paina F12 tai oikeaa hiiren näppäintä > Tarkista ja avaa selaimen kehittäjä työkalut.\n2. Mene sitten \"Application\"-välilehteen (Chrome, Edge, Brave jne..) tai \"Storage\"-välilehteen (Firefox, Pale Moon jne..)\n3. Mene \"Cookies\"-osastoon, sitten \"https://accounts.spotify.com\" alakohtaan.';
@override
String get step_3 => 'Vaihe 3';
@@ -672,16 +672,16 @@ class AppLocalizationsFi extends AppLocalizations {
String get number_of_tracks_generate => 'Numero tuotettavia kappaleita';
@override
- String get acousticness => 'Akustisuus';
+ String get not_acoustic => 'Akustisuus';
@override
- String get danceability => 'Tanssittavuus';
+ String get dance_ability => 'Tanssittavuus';
@override
String get energy => 'Energia';
@override
- String get instrumentalness => 'Instrumentaalisuus';
+ String get not_instrumental => 'Instrumentaalisuus';
@override
String get liveness => 'Elävyyttä';
@@ -690,7 +690,7 @@ class AppLocalizationsFi extends AppLocalizations {
String get loudness => 'Äänekkyys';
@override
- String get speechiness => 'Puheisuus';
+ String get talkative => 'Puheisuus';
@override
String get valence => 'Valenssi';
@@ -809,7 +809,7 @@ class AppLocalizationsFi extends AppLocalizations {
String get sleep_timer => 'Uniajastin';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes Minuuttia';
}
@@ -848,7 +848,7 @@ class AppLocalizationsFi extends AppLocalizations {
String get failed_to_encrypt => 'Salaaminen epäonnistui';
@override
- String get encryption_failed_warning => 'Spotube käyttää salausta tallentaakseen tietosi, mutta epäonnistui, joten se palaa epäturvalliseen tallennukseen\nJos käytät Linuxia, varmista että sinulla on turvallisuuspalvelu (gnome-keyring, kde-wallet, keepassxc jne) asennettu';
+ String get encryption_failed_warning => 'Spotube käyttää salausta tallentaakseen tietosi, mutta epäonnistui, joten se palaa epäturvalliseen tallennukseen\nJos käytät Linuxia, varmista että sinulla on turvallisuuspalvelu (gnome-keyring, kde-wallet, KeePassXC jne) asennettu';
@override
String get querying_info => 'Hankitaan tietoa...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsFi extends AppLocalizations {
String get owned_by_you => 'Sinun omistama';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl kopioitu leikepöydälle';
}
@override
- String get spotify_hipotetical_calculation => '*Tämä on laskettu Spotifyn suoratoiston\nmaksun perusteella, joka on 0,003–0,005 dollaria.\nTämä on hypoteettinen laskelma, joka antaa käyttäjälle käsityksen\nsiitä, kuinka paljon he olisivat maksaneet artisteille,\njollei heidän kappaleensa olisi kuunneltu Spotifyssa.';
+ String get spotify_hypothetical_calculation => '*Tämä on laskettu Spotifyn suoratoiston\nmaksun perusteella, joka on 0,003–0,005 dollaria.\nTämä on hypoteettinen laskelma, joka antaa käyttäjälle käsityksen\nsiitä, kuinka paljon he olisivat maksaneet artisteille,\njollei heidän kappaleensa olisi kuunneltu Spotifyssa.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes min';
}
diff --git a/lib/l10n/generated/app_localizations_fr.dart b/lib/l10n/generated/app_localizations_fr.dart
index 4e56d666..5fa0fd20 100644
--- a/lib/l10n/generated/app_localizations_fr.dart
+++ b/lib/l10n/generated/app_localizations_fr.dart
@@ -315,7 +315,7 @@ class AppLocalizationsFr extends AppLocalizations {
String get shuffle_playlist => 'Lecture aléatoire de la liste de lecture';
@override
- String get unshuffle_playlist => 'Annuler la lecture aléatoire de la liste de lecture';
+ String get not_shuffle_playlist => 'Annuler la lecture aléatoire de la liste de lecture';
@override
String get previous_track => 'Piste précédente';
@@ -590,7 +590,7 @@ class AppLocalizationsFr extends AppLocalizations {
String get step_2 => 'Étape 2';
@override
- String get step_2_steps => '1. Une fois connecté, appuyez sur F12 ou clic droit de la souris > Inspecter pour ouvrir les outils de développement du navigateur.\n2. Ensuite, allez dans l\'onglet \"Application\" (Chrome, Edge, Brave, etc.) ou l\'onglet \"Stockage\" (Firefox, Palemoon, etc.)\n3. Allez dans la section \"Cookies\", puis dans la sous-section \"https://accounts.spotify.com\"';
+ String get step_2_steps => '1. Une fois connecté, appuyez sur F12 ou clic droit de la souris > Inspecter pour ouvrir les outils de développement du navigateur.\n2. Ensuite, allez dans l\'onglet \"Application\" (Chrome, Edge, Brave, etc.) ou l\'onglet \"Stockage\" (Firefox, Pale Moon, etc.)\n3. Allez dans la section \"Cookies\", puis dans la sous-section \"https://accounts.spotify.com\"';
@override
String get step_3 => 'Étape 3';
@@ -672,16 +672,16 @@ class AppLocalizationsFr extends AppLocalizations {
String get number_of_tracks_generate => 'Nombre de pistes à générer';
@override
- String get acousticness => 'Acoustique';
+ String get not_acoustic => 'Acoustique';
@override
- String get danceability => 'Dansabilité';
+ String get dance_ability => 'Dansabilité';
@override
String get energy => 'Énergie';
@override
- String get instrumentalness => 'Instrumentalité';
+ String get not_instrumental => 'Instrumentalité';
@override
String get liveness => 'Interprétation en direct';
@@ -690,7 +690,7 @@ class AppLocalizationsFr extends AppLocalizations {
String get loudness => 'Sonorité';
@override
- String get speechiness => 'Parlé';
+ String get talkative => 'Parlé';
@override
String get valence => 'Valeur émotionnelle';
@@ -809,7 +809,7 @@ class AppLocalizationsFr extends AppLocalizations {
String get sleep_timer => 'Minuteur de veille';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes minutes';
}
@@ -848,7 +848,7 @@ class AppLocalizationsFr extends AppLocalizations {
String get failed_to_encrypt => 'Échec de la cryptage';
@override
- String get encryption_failed_warning => 'Spotube utilise le cryptage pour stocker vos données en toute sécurité. Mais cela a échoué. Il basculera donc vers un stockage non sécurisé\nSi vous utilisez Linux, assurez-vous d\'avoir installé des services secrets tels que gnome-keyring, kde-wallet et keepassxc';
+ String get encryption_failed_warning => 'Spotube utilise le cryptage pour stocker vos données en toute sécurité. Mais cela a échoué. Il basculera donc vers un stockage non sécurisé\nSi vous utilisez Linux, assurez-vous d\'avoir installé des services secrets tels que gnome-keyring, kde-wallet et KeePassXC';
@override
String get querying_info => 'Interrogation des info...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsFr extends AppLocalizations {
String get owned_by_you => 'Possédé par vous';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl copié dans le presse-papier';
}
@override
- String get spotify_hipotetical_calculation => '*Cela est calculé en fonction du\npaiement par stream de Spotify de 0,003 \$ à 0,005 \$.\nIl s\'agit d\'un calcul hypothétique pour donner\nune idée de combien vous auriez\npayé aux artistes si vous aviez\nécouté leur chanson sur Spotify.';
+ String get spotify_hypothetical_calculation => '*Cela est calculé en fonction du\npaiement par stream de Spotify de 0,003 \$ à 0,005 \$.\nIl s\'agit d\'un calcul hypothétique pour donner\nune idée de combien vous auriez\npayé aux artistes si vous aviez\nécouté leur chanson sur Spotify.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes minutes';
}
diff --git a/lib/l10n/generated/app_localizations_hi.dart b/lib/l10n/generated/app_localizations_hi.dart
index fc9ceda4..24708050 100644
--- a/lib/l10n/generated/app_localizations_hi.dart
+++ b/lib/l10n/generated/app_localizations_hi.dart
@@ -315,7 +315,7 @@ class AppLocalizationsHi extends AppLocalizations {
String get shuffle_playlist => 'प्लेलिस्ट शफल करें';
@override
- String get unshuffle_playlist => 'अनशफल प्लेलिस्ट';
+ String get not_shuffle_playlist => 'अनशफल प्लेलिस्ट';
@override
String get previous_track => 'पिछला ट्रैक';
@@ -590,7 +590,7 @@ class AppLocalizationsHi extends AppLocalizations {
String get step_2 => '2 चरण';
@override
- String get step_2_steps => '1. जब आप लॉगिन हो जाएँ, तो F12 दबाएं या माउस राइट क्लिक> निरीक्षण करें ताकि ब्राउज़र डेवटूल्स खुलें।\n2. फिर ब्राउज़र के \"एप्लिकेशन\" टैब (Chrome, Edge, Brave आदि) या \"स्टोरेज\" टैब (Firefox, Palemoon आदि) में जाएं\n3. \"कुकीज़\" अनुभाग में जाएं फिर \"https: //accounts.spotify.com\" उप-अनुभाग में जाएं';
+ String get step_2_steps => '1. जब आप लॉगिन हो जाएँ, तो F12 दबाएं या माउस राइट क्लिक> निरीक्षण करें ताकि ब्राउज़र डेवटूल्स खुलें।\n2. फिर ब्राउज़र के \"एप्लिकेशन\" टैब (Chrome, Edge, Brave आदि) या \"स्टोरेज\" टैब (Firefox, Pale Moon आदि) में जाएं\n3. \"कुकीज़\" अनुभाग में जाएं फिर \"https: //accounts.spotify.com\" उप-अनुभाग में जाएं';
@override
String get step_3 => 'स्टेप 3';
@@ -672,16 +672,16 @@ class AppLocalizationsHi extends AppLocalizations {
String get number_of_tracks_generate => 'उत्पन्न करने के लिए ट्रैक की संख्या';
@override
- String get acousticness => 'ध्वनिकता';
+ String get not_acoustic => 'ध्वनिकता';
@override
- String get danceability => 'नृत्यता';
+ String get dance_ability => 'नृत्यता';
@override
String get energy => 'ऊर्जा';
@override
- String get instrumentalness => 'आलापिकता';
+ String get not_instrumental => 'आलापिकता';
@override
String get liveness => 'जीवंतता';
@@ -690,7 +690,7 @@ class AppLocalizationsHi extends AppLocalizations {
String get loudness => 'शोर';
@override
- String get speechiness => 'बोलचालता';
+ String get talkative => 'बोलचालता';
@override
String get valence => 'मनोदयता';
@@ -809,7 +809,7 @@ class AppLocalizationsHi extends AppLocalizations {
String get sleep_timer => 'स्लीप टाइमर';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes मिनट';
}
@@ -848,7 +848,7 @@ class AppLocalizationsHi extends AppLocalizations {
String get failed_to_encrypt => 'एन्क्रिप्ट करने में विफल रहा';
@override
- String get encryption_failed_warning => 'Spotube आपके डेटा को सुरक्षित रूप से स्टोर करने के लिए एन्क्रिप्शन का उपयोग करता है। लेकिन इसमें विफल रहा। इसलिए, यह असुरक्षित स्टोरेज पर फॉलबैक करेगा\nयदि आप Linux का उपयोग कर रहे हैं, तो कृपया सुनिश्चित करें कि आपके पास gnome-keyring, kde-wallet, keepassxc आदि जैसी कोई सीक्रेट-सर्विस इंस्टॉल की गई है';
+ String get encryption_failed_warning => 'Spotube आपके डेटा को सुरक्षित रूप से स्टोर करने के लिए एन्क्रिप्शन का उपयोग करता है। लेकिन इसमें विफल रहा। इसलिए, यह असुरक्षित स्टोरेज पर फॉलबैक करेगा\nयदि आप Linux का उपयोग कर रहे हैं, तो कृपया सुनिश्चित करें कि आपके पास gnome-keyring, kde-wallet, KeePassXC आदि जैसी कोई सीक्रेट-सर्विस इंस्टॉल की गई है';
@override
String get querying_info => 'जानकारी प्राप्त करना';
@@ -1207,15 +1207,15 @@ class AppLocalizationsHi extends AppLocalizations {
String get owned_by_you => 'तपाईंले स्वामित्व गरेको';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl क्लिपबोर्डमा कपी गरियो';
}
@override
- String get spotify_hipotetical_calculation => '*यो Spotify को प्रति स्ट्रीम भुगतानको आधारमा\n\$0.003 देखि \$0.005 को बीचमा गणना गरिएको हो। यो एक काल्पनिक\nगणना हो जसले प्रयोगकर्तालाई देखाउँछ कि उनीहरूले कति\nअर्टिस्टहरूलाई तिनीहरूका गीतहरू Spotify मा सुनेमा\nभुक्तान गर्नुपर्ने थियो।';
+ String get spotify_hypothetical_calculation => '*यो Spotify को प्रति स्ट्रीम भुगतानको आधारमा\n\$0.003 देखि \$0.005 को बीचमा गणना गरिएको हो। यो एक काल्पनिक\nगणना हो जसले प्रयोगकर्तालाई देखाउँछ कि उनीहरूले कति\nअर्टिस्टहरूलाई तिनीहरूका गीतहरू Spotify मा सुनेमा\nभुक्तान गर्नुपर्ने थियो।';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes मिनट';
}
diff --git a/lib/l10n/generated/app_localizations_id.dart b/lib/l10n/generated/app_localizations_id.dart
index 3e07ed0c..05c8506b 100644
--- a/lib/l10n/generated/app_localizations_id.dart
+++ b/lib/l10n/generated/app_localizations_id.dart
@@ -315,7 +315,7 @@ class AppLocalizationsId extends AppLocalizations {
String get shuffle_playlist => 'Acak daftar putar';
@override
- String get unshuffle_playlist => 'Batalkan pengacakan daftar putar';
+ String get not_shuffle_playlist => 'Batalkan pengacakan daftar putar';
@override
String get previous_track => 'Lagu sebelumnya';
@@ -590,7 +590,7 @@ class AppLocalizationsId extends AppLocalizations {
String get step_2 => 'Langkah 2';
@override
- String get step_2_steps => '1. Setelah Anda masuk, tekan F12 atau Klik Kanan Mouse > Buka Browser Devtools.\n2. Lalu buka Tab \"Aplikasi\" (Chrome, Edge, Brave, dll.) atau Tab \"Penyimpanan\" (Firefox, Palemoon, dll.)\n3. Buka bagian \"Cookie\" lalu subbagian \"https://accounts.spotify.com\"';
+ String get step_2_steps => '1. Setelah Anda masuk, tekan F12 atau Klik Kanan Mouse > Buka Browser Devtools.\n2. Lalu buka Tab \"Aplikasi\" (Chrome, Edge, Brave, dll.) atau Tab \"Penyimpanan\" (Firefox, Pale Moon, dll.)\n3. Buka bagian \"Cookie\" lalu subbagian \"https://accounts.spotify.com\"';
@override
String get step_3 => 'Langkah 3';
@@ -672,16 +672,16 @@ class AppLocalizationsId extends AppLocalizations {
String get number_of_tracks_generate => 'Jumlah trek yang akan dihasilkan';
@override
- String get acousticness => 'Akustik';
+ String get not_acoustic => 'Akustik';
@override
- String get danceability => 'Menari';
+ String get dance_ability => 'Menari';
@override
String get energy => 'Energi';
@override
- String get instrumentalness => 'Instrumentalitas';
+ String get not_instrumental => 'Instrumentalitas';
@override
String get liveness => 'Kehidupan';
@@ -690,7 +690,7 @@ class AppLocalizationsId extends AppLocalizations {
String get loudness => 'Kekerasan';
@override
- String get speechiness => 'Berbicara';
+ String get talkative => 'Berbicara';
@override
String get valence => 'Valensi';
@@ -809,7 +809,7 @@ class AppLocalizationsId extends AppLocalizations {
String get sleep_timer => 'Pengatur Waktu Tidur';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes Menit';
}
@@ -848,7 +848,7 @@ class AppLocalizationsId extends AppLocalizations {
String get failed_to_encrypt => 'Gagal mengenkripsi';
@override
- String get encryption_failed_warning => 'Spotube menggunakan enkripsi untuk menyimpan data Anda dengan aman. Namun gagal melakukannya. Jadi itu akan kembali ke penyimpanan yang tidak aman\nJika Anda menggunakan linux, pastikan Anda telah menginstal layanan rahasia (gnome-keyring, kde-wallet, keepassxc, dll)';
+ String get encryption_failed_warning => 'Spotube menggunakan enkripsi untuk menyimpan data Anda dengan aman. Namun gagal melakukannya. Jadi itu akan kembali ke penyimpanan yang tidak aman\nJika Anda menggunakan linux, pastikan Anda telah menginstal layanan rahasia (gnome-keyring, kde-wallet, KeePassXC, dll)';
@override
String get querying_info => 'Mencari informasi...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsId extends AppLocalizations {
String get owned_by_you => 'Dimiliki oleh Anda';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl disalin ke clipboard';
}
@override
- String get spotify_hipotetical_calculation => '*Ini dihitung berdasarkan pembayaran\nper stream Spotify dari \$0,003 hingga \$0,005.\nIni adalah perhitungan hipotetis untuk memberi\npengguna gambaran tentang berapa banyak\nmereka akan membayar kepada artis jika\nmereka mendengarkan lagu mereka di Spotify.';
+ String get spotify_hypothetical_calculation => '*Ini dihitung berdasarkan pembayaran\nper stream Spotify dari \$0,003 hingga \$0,005.\nIni adalah perhitungan hipotetis untuk memberi\npengguna gambaran tentang berapa banyak\nmereka akan membayar kepada artis jika\nmereka mendengarkan lagu mereka di Spotify.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes menit';
}
diff --git a/lib/l10n/generated/app_localizations_it.dart b/lib/l10n/generated/app_localizations_it.dart
index abfc0fb4..d55c8f53 100644
--- a/lib/l10n/generated/app_localizations_it.dart
+++ b/lib/l10n/generated/app_localizations_it.dart
@@ -70,7 +70,7 @@ class AppLocalizationsIt extends AppLocalizations {
String get tracks => 'Tracce';
@override
- String get downloads => 'Downloads';
+ String get downloads => 'Scaricati';
@override
String get filter_playlists => 'Filtra le tue playlist...';
@@ -315,7 +315,7 @@ class AppLocalizationsIt extends AppLocalizations {
String get shuffle_playlist => 'Playlist casuale';
@override
- String get unshuffle_playlist => 'Ordina playlist';
+ String get not_shuffle_playlist => 'Ordina playlist';
@override
String get previous_track => 'Traccia precedente';
@@ -330,7 +330,7 @@ class AppLocalizationsIt extends AppLocalizations {
String get resume_playback => 'Riprendi Playback';
@override
- String get loop_track => 'Cicla traccia';
+ String get loop_track => 'Itera traccia';
@override
String get no_loop => 'Nessun ciclo';
@@ -437,10 +437,10 @@ class AppLocalizationsIt extends AppLocalizations {
String get system => 'Sistema';
@override
- String get accent_color => 'Colore accento';
+ String get accent_color => 'Colore principale';
@override
- String get sync_album_color => 'Syncronizza colore album';
+ String get sync_album_color => 'Sincronizza colore album';
@override
String get sync_album_color_description => 'Usa il colore dominante della copertina dell\'album come colore accento';
@@ -506,7 +506,7 @@ class AppLocalizationsIt extends AppLocalizations {
String get please_sponsor => 'Per favore sponsorizza/dona';
@override
- String get spotube_description => 'Spotube, un client spotify gratis per tutti, multipiattaforma e leggero';
+ String get spotube_description => 'Spotube, un client spotify gratis per tutti, multi-piattaforma e leggero';
@override
String get version => 'Versione';
@@ -590,7 +590,7 @@ class AppLocalizationsIt extends AppLocalizations {
String get step_2 => 'Passo 2';
@override
- String get step_2_steps => '1. Quando sei acceduto premi F12 o premi il tasto destro del Mouse > Ispeziona per aprire gli strumenti di sviluppo del browser.\n2. Vai quindi nel tab \"Applicazione\" (Chrome, Edge, Brave etc..) o tab \"Archiviazione\" (Firefox, Palemoon etc..)\n3. Vai nella sezione \"Cookies\" quindi nella sezione \"https://accounts.spotify.com\"';
+ String get step_2_steps => '1. Quando sei acceduto premi F12 o premi il tasto destro del Mouse > Ispeziona per aprire gli strumenti di sviluppo del browser.\n2. Vai quindi nel tab \"Applicazione\" (Chrome, Edge, Brave etc..) o tab \"Archiviazione\" (Firefox, Pale Moon etc..)\n3. Vai nella sezione \"Cookies\" quindi nella sezione \"https://accounts.spotify.com\"';
@override
String get step_3 => 'Passo 3';
@@ -617,10 +617,10 @@ class AppLocalizationsIt extends AppLocalizations {
String get piped_instance => 'Istanza Server Piped';
@override
- String get piped_description => 'L\'istanza server Piped da usare per il match della tracccia';
+ String get piped_description => 'L\'istanza server Piped da usare per il match della traccia';
@override
- String get piped_warning => 'Alcune di queste non funzioneranno benen. Usa quindi a tuo rischio';
+ String get piped_warning => 'Alcune di queste non funzioneranno bene. Usa quindi a tuo rischio';
@override
String get invidious_instance => 'Istanza del server Invidious';
@@ -669,19 +669,19 @@ class AppLocalizationsIt extends AppLocalizations {
String get country => 'Paese';
@override
- String get number_of_tracks_generate => 'Nnumero di tracce da generare';
+ String get number_of_tracks_generate => 'Numero di tracce da generare';
@override
- String get acousticness => 'Acustica';
+ String get not_acoustic => 'Acustica';
@override
- String get danceability => 'Ballabilità';
+ String get dance_ability => 'Ballabile';
@override
String get energy => 'Energia';
@override
- String get instrumentalness => 'Strumentalità';
+ String get not_instrumental => 'Strumentalità';
@override
String get liveness => 'Vitalità';
@@ -690,7 +690,7 @@ class AppLocalizationsIt extends AppLocalizations {
String get loudness => 'Sonorità';
@override
- String get speechiness => 'Loquacità';
+ String get talkative => 'Loquacità';
@override
String get valence => 'Valenza';
@@ -752,19 +752,19 @@ class AppLocalizationsIt extends AppLocalizations {
}
@override
- String get download_warning => 'Se scarichi tutte le Tracce in massa stai chiaramente piratando Musica e causando un danno alla società creativa della Musica. Spero che tu sia cosciente di questo. Cerca di rispettare e supportare sempre il duro lavoro degli Artisti';
+ String get download_warning => 'Se scarichi tutte le Tracce in massa stai chiaramente scaricando illegalmente Musica e causando un danno alla società creativa della Musica. Spero che tu sia cosciente di questo. Cerca di rispettare e supportare sempre il duro lavoro degli Artisti';
@override
- String get download_ip_ban_warning => 'A proposito, il tuo IP può essere bloccato da YouTube per il numero di richieste di download eccessive rispetto la norma. Il blocco IP significa che non puoi usare YoutTube (anche hai effettuato l\'accesso) per almeno 2-3 mesi dal dispositivo con questo IP. Spotube non ha responsabilità se questo dovesse accadere';
+ String get download_ip_ban_warning => 'A proposito, il tuo IP può essere bloccato da YouTube per il numero di richieste di download eccessive rispetto la norma. Il blocco IP significa che non puoi usare YouTube (anche hai effettuato l\'accesso) per almeno 2-3 mesi dal dispositivo con questo IP. Spotube non ha responsabilità se questo dovesse accadere';
@override
String get by_clicking_accept_terms => 'Cliccando su \'accetta\' concordi con i seguenti termini:';
@override
- String get download_agreement_1 => 'So che sto piratando Musica. Sono cattivo';
+ String get download_agreement_1 => 'So che sto scaricando illegalmente Musica. Sono cattivo';
@override
- String get download_agreement_2 => 'Supporterò l\'Artista come potrò e sto facendo questo solo perchè non ho denaro per acquistare il suo prodotto dell\'ingegno';
+ String get download_agreement_2 => 'Supporterò l\'Artista come potrò e sto facendo questo solo perché non ho denaro per acquistare il suo prodotto dell\'ingegno';
@override
String get download_agreement_3 => 'Sono completamente cosciente che il mio IP può essere bloccato da YouTube & non riterrò responsabili Spotube o i suoi autori/contributori per ogni inconveniente causato dalla mia azione corrente';
@@ -809,7 +809,7 @@ class AppLocalizationsIt extends AppLocalizations {
String get sleep_timer => 'Timer Dormire';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes Minuti';
}
@@ -848,7 +848,7 @@ class AppLocalizationsIt extends AppLocalizations {
String get failed_to_encrypt => 'Criptazione fallita';
@override
- String get encryption_failed_warning => 'Spotube usa la criptazione per memorizzare in modo sicuro i dati. Ma ha fallito a farlo. Passerà quindi in ripiego alla memorizzazione non siscura\nSe stai usando Linux assicurati di avere un servizio di segretezza installato (gnome-keyring, kde-wallet, keepassxc etc)';
+ String get encryption_failed_warning => 'Spotube usa la criptazione per memorizzare in modo sicuro i dati. Ma ha fallito a farlo. Passerà quindi in ripiego alla memorizzazione non sicura\n Se stai usando Linux assicurati di avere un servizio di segretezza installato (gnome-keyring, kde-wallet, KeePassXC etc)';
@override
String get querying_info => 'Richiesta informazioni...';
@@ -907,10 +907,10 @@ class AppLocalizationsIt extends AppLocalizations {
String get connect => 'Connetti';
@override
- String get disconnect_lastfm => 'Disconnetti Last.fm';
+ String get disconnect_lastfm => 'Scollega Last.fm';
@override
- String get disconnect => 'Disconnetti';
+ String get disconnect => 'Scollega';
@override
String get username => 'Nome utente';
@@ -1207,15 +1207,15 @@ class AppLocalizationsIt extends AppLocalizations {
String get owned_by_you => 'Di tua proprietà';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return 'Copiato $shareUrl negli appunti';
}
@override
- String get spotify_hipotetical_calculation => '*Questo è calcolato in base al pagamento per streaming di Spotify\nche va da \$0.003 a \$0.005. Questo è un calcolo ipotetico\nper dare all\'utente un\'idea di quanto avrebbe pagato agli artisti se avesse ascoltato\ne loro canzoni su Spotify.';
+ String get spotify_hypothetical_calculation => '*Questo è calcolato in base al pagamento per streaming di Spotify\nche va da \$0.003 a \$0.005. Questo è un calcolo ipotetico\nper dare all\'utente un\'idea di quanto avrebbe pagato agli artisti se avesse ascoltato\ne loro canzoni su Spotify.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes min';
}
diff --git a/lib/l10n/generated/app_localizations_ja.dart b/lib/l10n/generated/app_localizations_ja.dart
index a8233a1d..be1e2d26 100644
--- a/lib/l10n/generated/app_localizations_ja.dart
+++ b/lib/l10n/generated/app_localizations_ja.dart
@@ -315,7 +315,7 @@ class AppLocalizationsJa extends AppLocalizations {
String get shuffle_playlist => '再生リストをシャッフル';
@override
- String get unshuffle_playlist => '再生リストのシャッフル解除';
+ String get not_shuffle_playlist => '再生リストのシャッフル解除';
@override
String get previous_track => '前の曲';
@@ -590,7 +590,7 @@ class AppLocalizationsJa extends AppLocalizations {
String get step_2 => 'ステップ 2';
@override
- String get step_2_steps => '1. ログインしたら、F12を押すか、マウス右クリック > 調査(検証)でブラウザの開発者ツール (devtools) を開きます。\n2. アプリケーション (Application) タブ (Chrome, Edge, Brave など) またはストレージタブ (Firefox, Palemoon など)\n3. Cookies 欄を選択し、https://accounts.spotify.com の枝を選びます';
+ String get step_2_steps => '1. ログインしたら、F12を押すか、マウス右クリック > 調査(検証)でブラウザの開発者ツール (devtools) を開きます。\n2. アプリケーション (Application) タブ (Chrome, Edge, Brave など) またはストレージタブ (Firefox, Pale Moon など)\n3. Cookies 欄を選択し、https://accounts.spotify.com の枝を選びます';
@override
String get step_3 => 'ステップ 3';
@@ -672,16 +672,16 @@ class AppLocalizationsJa extends AppLocalizations {
String get number_of_tracks_generate => '生成する曲数';
@override
- String get acousticness => 'アコースティック感';
+ String get not_acoustic => 'アコースティック感';
@override
- String get danceability => 'ダンス感';
+ String get dance_ability => 'ダンス感';
@override
String get energy => 'エネルギー';
@override
- String get instrumentalness => 'インストゥルメンタル';
+ String get not_instrumental => 'インストゥルメンタル';
@override
String get liveness => 'ライブ感';
@@ -690,7 +690,7 @@ class AppLocalizationsJa extends AppLocalizations {
String get loudness => 'ラウドネス';
@override
- String get speechiness => '会話感';
+ String get talkative => '会話感';
@override
String get valence => '多幸性';
@@ -809,7 +809,7 @@ class AppLocalizationsJa extends AppLocalizations {
String get sleep_timer => 'スリープタイマー';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes 分';
}
@@ -848,7 +848,7 @@ class AppLocalizationsJa extends AppLocalizations {
String get failed_to_encrypt => '暗号化に失敗しました';
@override
- String get encryption_failed_warning => 'Spotubeはデータを安全に保存するために暗号化を使用しています。しかし、失敗しました。したがって、安全でないストレージにフォールバックします\nLinuxを使用している場合は、gnome-keyring、kde-wallet、keepassxcなどのシークレットサービスがインストールされていることを確認してください';
+ String get encryption_failed_warning => 'Spotubeはデータを安全に保存するために暗号化を使用しています。しかし、失敗しました。したがって、安全でないストレージにフォールバックします\nLinuxを使用している場合は、gnome-keyring、kde-wallet、KeePassXCなどのシークレットサービスがインストールされていることを確認してください';
@override
String get querying_info => '情報を取得中...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsJa extends AppLocalizations {
String get owned_by_you => 'あなたが所有';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl をクリップボードにコピーしました';
}
@override
- String get spotify_hipotetical_calculation => '*これは、Spotifyのストリームごとの支払い\nが \$0.003 から \$0.005 の範囲で計算されています。これは仮想的な\n計算で、Spotify で曲を聴いた場合に、アーティストに\nどれくらい支払ったかをユーザーに示すためのものです。';
+ String get spotify_hypothetical_calculation => '*これは、Spotifyのストリームごとの支払い\nが \$0.003 から \$0.005 の範囲で計算されています。これは仮想的な\n計算で、Spotify で曲を聴いた場合に、アーティストに\nどれくらい支払ったかをユーザーに示すためのものです。';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes 分';
}
diff --git a/lib/l10n/generated/app_localizations_ka.dart b/lib/l10n/generated/app_localizations_ka.dart
index cefdc73e..68a2d7c5 100644
--- a/lib/l10n/generated/app_localizations_ka.dart
+++ b/lib/l10n/generated/app_localizations_ka.dart
@@ -315,7 +315,7 @@ class AppLocalizationsKa extends AppLocalizations {
String get shuffle_playlist => 'ფლეილისტის არევა';
@override
- String get unshuffle_playlist => 'ფლეილისტის დალაგება';
+ String get not_shuffle_playlist => 'ფლეილისტის დალაგება';
@override
String get previous_track => 'წინა ტრეკი';
@@ -590,7 +590,7 @@ class AppLocalizationsKa extends AppLocalizations {
String get step_2 => 'ნაბიჯი 2';
@override
- String get step_2_steps => '1. როცა შეხვალთ, დააჭირეთ F12-ს ან მაუსის მარჯვენა ღილაკს > Inspect to Open the Browser devtools.\n2. შემდეგ გახსენით \"Application\" განყოფილება (Chrome, Edge, Brave etc..) ან \"Storage\" განყოფილება (Firefox, Palemoon etc..)\n3. შედით \"Cookies\" სექციაში და შემდეგ \"https://accounts.spotify.com\" სუბსექციაში';
+ String get step_2_steps => '1. როცა შეხვალთ, დააჭირეთ F12-ს ან მაუსის მარჯვენა ღილაკს > Inspect to Open the Browser devtools.\n2. შემდეგ გახსენით \"Application\" განყოფილება (Chrome, Edge, Brave etc..) ან \"Storage\" განყოფილება (Firefox, Pale Moon etc..)\n3. შედით \"Cookies\" სექციაში და შემდეგ \"https://accounts.spotify.com\" სუბსექციაში';
@override
String get step_3 => 'ნაბიჯი 3';
@@ -672,16 +672,16 @@ class AppLocalizationsKa extends AppLocalizations {
String get number_of_tracks_generate => 'დასაგენერირებელი ტრეკების რაოდენობა';
@override
- String get acousticness => 'Acousticness';
+ String get not_acoustic => 'not_acoustic';
@override
- String get danceability => 'Danceability';
+ String get dance_ability => 'dance_ability';
@override
String get energy => 'Energy';
@override
- String get instrumentalness => 'Instrumentalness';
+ String get not_instrumental => 'not_instrumental';
@override
String get liveness => 'Liveness';
@@ -690,7 +690,7 @@ class AppLocalizationsKa extends AppLocalizations {
String get loudness => 'Loudness';
@override
- String get speechiness => 'Speechiness';
+ String get talkative => 'talkative';
@override
String get valence => 'Valence';
@@ -809,7 +809,7 @@ class AppLocalizationsKa extends AppLocalizations {
String get sleep_timer => 'ძილის ტაიმერი';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes წუთი';
}
@@ -848,7 +848,7 @@ class AppLocalizationsKa extends AppLocalizations {
String get failed_to_encrypt => 'დაშიფვრა ვერ მოხერხდა';
@override
- String get encryption_failed_warning => 'Spotube uses encryption to securely store your data. But failed to do so. So it\'ll fallback to insecure storage\nIf you\'re using linux, please make sure you\'ve any secret-service (gnome-keyring, kde-wallet, keepassxc etc) installed';
+ String get encryption_failed_warning => 'Spotube uses encryption to securely store your data. But failed to do so. So it\'ll fallback to insecure storage\nIf you\'re using linux, please make sure you\'ve any secret-service (gnome-keyring, kde-wallet, KeePassXC etc) installed';
@override
String get querying_info => 'Querying info...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsKa extends AppLocalizations {
String get owned_by_you => 'შენ მიერ საკუთრებული';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl აიღო კლიპბორდზე';
}
@override
- String get spotify_hipotetical_calculation => '*ეს გამოითვლება Spotify-ის თითოეულ სტრიმზე\nგადახდის შესაბამისად, რომელიც \$0.003 დან \$0.005-მდეა. ეს არის ჰიპოთეტური\nგამოთვლა, რომელიც აჩვენებს მომხმარებელს რამდენი გადაიხდიდა\nარტისტებს, თუკი ისინი უსმენდნენ მათ სიმღერებს Spotify-ზე.';
+ String get spotify_hypothetical_calculation => '*ეს გამოითვლება Spotify-ის თითოეულ სტრიმზე\nგადახდის შესაბამისად, რომელიც \$0.003 დან \$0.005-მდეა. ეს არის ჰიპოთეტური\nგამოთვლა, რომელიც აჩვენებს მომხმარებელს რამდენი გადაიხდიდა\nარტისტებს, თუკი ისინი უსმენდნენ მათ სიმღერებს Spotify-ზე.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes წუთი';
}
diff --git a/lib/l10n/generated/app_localizations_ko.dart b/lib/l10n/generated/app_localizations_ko.dart
index 14628194..f959fcd4 100644
--- a/lib/l10n/generated/app_localizations_ko.dart
+++ b/lib/l10n/generated/app_localizations_ko.dart
@@ -315,7 +315,7 @@ class AppLocalizationsKo extends AppLocalizations {
String get shuffle_playlist => '플레이리스트를 섞기';
@override
- String get unshuffle_playlist => '플레이리스트를 섞지 않기';
+ String get not_shuffle_playlist => '플레이리스트를 섞지 않기';
@override
String get previous_track => '이전 곡';
@@ -590,7 +590,7 @@ class AppLocalizationsKo extends AppLocalizations {
String get step_2 => '2단계';
@override
- String get step_2_steps => '1. 로그인에 성공하면、F12나 마우스 우클릭 > 검사(Inspect)을 눌러 브라우저의 개발자 도구(devtools)를 열어주세요.\n2. 애플리케이션 (Application) 탭 (Chrome, Edge, Brave 등) 또는 스토리지 탭 (Firefox, Palemoon 등)을 열어주세요.\n3. 쿠키 (Cookies) 섹션으로 들어가서, https://accounts.spotify.com 서브섹션으로 들어가주세요.';
+ String get step_2_steps => '1. 로그인에 성공하면、F12나 마우스 우클릭 > 검사(Inspect)을 눌러 브라우저의 개발자 도구(devtools)를 열어주세요.\n2. 애플리케이션 (Application) 탭 (Chrome, Edge, Brave 등) 또는 스토리지 탭 (Firefox, Pale Moon 등)을 열어주세요.\n3. 쿠키 (Cookies) 섹션으로 들어가서, https://accounts.spotify.com 서브섹션으로 들어가주세요.';
@override
String get step_3 => '3단계';
@@ -672,16 +672,16 @@ class AppLocalizationsKo extends AppLocalizations {
String get number_of_tracks_generate => '생성할 곡 수';
@override
- String get acousticness => '반주 구간 (Acousticness)';
+ String get not_acoustic => '반주 구간 (not_acoustic)';
@override
- String get danceability => '흥겨운 정도 (Danceability)';
+ String get dance_ability => '흥겨운 정도 (dance_ability)';
@override
String get energy => '에너지 (Energy)';
@override
- String get instrumentalness => '기악성 (Instrumentalness)';
+ String get not_instrumental => '기악성 (not_instrumental)';
@override
String get liveness => '생동감 (Liveness)';
@@ -690,7 +690,7 @@ class AppLocalizationsKo extends AppLocalizations {
String get loudness => '라우드니스 (Loudness)';
@override
- String get speechiness => '회화성 (Speechniss)';
+ String get talkative => '회화성 (Speechniss)';
@override
String get valence => '감정가 (Valence)';
@@ -809,7 +809,7 @@ class AppLocalizationsKo extends AppLocalizations {
String get sleep_timer => '취침 타이머';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes 분';
}
@@ -848,7 +848,7 @@ class AppLocalizationsKo extends AppLocalizations {
String get failed_to_encrypt => '암호화에 실패했습니다';
@override
- String get encryption_failed_warning => 'Spotube는 암호화를 사용하여 데이터를 안전하게 저장합니다. 하지만 그렇게 하지 못했습니다. 따라서 안전하지 않은 저장소로 대체됩니다.\n리눅스를 사용하는 경우, 비밀 서비스(gnome-keyring, kde-wallet, keepassxc 등)가 설치되어 있는지 확인하세요.';
+ String get encryption_failed_warning => 'Spotube는 암호화를 사용하여 데이터를 안전하게 저장합니다. 하지만 그렇게 하지 못했습니다. 따라서 안전하지 않은 저장소로 대체됩니다.\n리눅스를 사용하는 경우, 비밀 서비스(gnome-keyring, kde-wallet, KeePassXC 등)가 설치되어 있는지 확인하세요.';
@override
String get querying_info => '정보를 얻는 중...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsKo extends AppLocalizations {
String get owned_by_you => '당신이 소유';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl를 클립보드에 복사했습니다';
}
@override
- String get spotify_hipotetical_calculation => '*Spotify의 스트림당 지불금 \$0.003에서 \$0.005까지의\n기준으로 계산되었습니다. 이는 사용자가 Spotify에서\n곡을 들을 때 아티스트에게 얼마를 지불했을지를\n알려주기 위한 가상의 계산입니다.';
+ String get spotify_hypothetical_calculation => '*Spotify의 스트림당 지불금 \$0.003에서 \$0.005까지의\n기준으로 계산되었습니다. 이는 사용자가 Spotify에서\n곡을 들을 때 아티스트에게 얼마를 지불했을지를\n알려주기 위한 가상의 계산입니다.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes 분';
}
diff --git a/lib/l10n/generated/app_localizations_ne.dart b/lib/l10n/generated/app_localizations_ne.dart
index 06fc54f9..6c750377 100644
--- a/lib/l10n/generated/app_localizations_ne.dart
+++ b/lib/l10n/generated/app_localizations_ne.dart
@@ -315,7 +315,7 @@ class AppLocalizationsNe extends AppLocalizations {
String get shuffle_playlist => 'प्लेलिस्ट शफल गर्नुहोस्';
@override
- String get unshuffle_playlist => 'प्लेलिस्ट शफल नगर्नुहोस्';
+ String get not_shuffle_playlist => 'प्लेलिस्ट शफल नगर्नुहोस्';
@override
String get previous_track => 'पूर्व ट्र्याक';
@@ -590,7 +590,7 @@ class AppLocalizationsNe extends AppLocalizations {
String get step_2 => 'कदम 2';
@override
- String get step_2_steps => '1. एकबार तपाईं लगइन गरे पछि, F12 थिच्नुहोस् वा माउस राइट क्लिक गर्नुहोस् > इन्स्पेक्ट गर्नुहोस् भने ब्राउजर डेभटुलहरू खुलाउनका लागि।\n2. तपाईंको \"एप्लिकेसन\" ट्याबमा जानुहोस् (Chrome, Edge, Brave इत्यादि) वा \"स्टोरेज\" ट्याबमा जानुहोस् (Firefox, Palemoon इत्यादि)\n3. तपाईंको इन्सेक्ट गरेको ब्राउजर डेभटुलहरूमा \"कुकीहरू\" खण्डमा जानुहोस् अनि \"https://accounts.spotify.com\" उपकोणमा जानुहोस्';
+ String get step_2_steps => '1. एकबार तपाईं लगइन गरे पछि, F12 थिच्नुहोस् वा माउस राइट क्लिक गर्नुहोस् > इन्स्पेक्ट गर्नुहोस् भने ब्राउजर डेभटुलहरू खुलाउनका लागि।\n2. तपाईंको \"एप्लिकेसन\" ट्याबमा जानुहोस् (Chrome, Edge, Brave इत्यादि) वा \"स्टोरेज\" ट्याबमा जानुहोस् (Firefox, Pale Moon इत्यादि)\n3. तपाईंको इन्सेक्ट गरेको ब्राउजर डेभटुलहरूमा \"कुकीहरू\" खण्डमा जानुहोस् अनि \"https://accounts.spotify.com\" उपकोणमा जानुहोस्';
@override
String get step_3 => 'कदम 3';
@@ -672,16 +672,16 @@ class AppLocalizationsNe extends AppLocalizations {
String get number_of_tracks_generate => 'बनाउनका लागि ट्र्याकहरूको संख्या';
@override
- String get acousticness => 'एकोस्टिकनेस';
+ String get not_acoustic => 'एकोस्टिकनेस';
@override
- String get danceability => 'नृत्यक्षमता';
+ String get dance_ability => 'नृत्यक्षमता';
@override
String get energy => 'ऊर्जा';
@override
- String get instrumentalness => 'साजा रहेकोता';
+ String get not_instrumental => 'साजा रहेकोता';
@override
String get liveness => 'प्राणिकता';
@@ -690,7 +690,7 @@ class AppLocalizationsNe extends AppLocalizations {
String get loudness => 'शोर';
@override
- String get speechiness => 'भाषण';
+ String get talkative => 'भाषण';
@override
String get valence => 'मानसिक स्वभाव';
@@ -809,7 +809,7 @@ class AppLocalizationsNe extends AppLocalizations {
String get sleep_timer => 'सुत्ने टाइमर';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes मिनेटहरू';
}
@@ -1207,15 +1207,15 @@ class AppLocalizationsNe extends AppLocalizations {
String get owned_by_you => 'तपाईंले स्वामित्व गरेको';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl क्लिपबोर्डमा कपी गरियो';
}
@override
- String get spotify_hipotetical_calculation => '*यो Spotify को प्रति स्ट्रीम भुगतानको आधारमा\n\$0.003 देखि \$0.005 को बीचमा गणना गरिएको हो। यो एक काल्पनिक\nगणना हो जसले प्रयोगकर्तालाई देखाउँछ कि उनीहरूले कति\nअर्टिस्टहरूलाई तिनीहरूका गीतहरू Spotify मा सुनेमा\nभुक्तान गर्नुपर्ने थियो।';
+ String get spotify_hypothetical_calculation => '*यो Spotify को प्रति स्ट्रीम भुगतानको आधारमा\n\$0.003 देखि \$0.005 को बीचमा गणना गरिएको हो। यो एक काल्पनिक\nगणना हो जसले प्रयोगकर्तालाई देखाउँछ कि उनीहरूले कति\nअर्टिस्टहरूलाई तिनीहरूका गीतहरू Spotify मा सुनेमा\nभुक्तान गर्नुपर्ने थियो।';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes मिनेट';
}
diff --git a/lib/l10n/generated/app_localizations_nl.dart b/lib/l10n/generated/app_localizations_nl.dart
index 3c17818f..94c61649 100644
--- a/lib/l10n/generated/app_localizations_nl.dart
+++ b/lib/l10n/generated/app_localizations_nl.dart
@@ -315,7 +315,7 @@ class AppLocalizationsNl extends AppLocalizations {
String get shuffle_playlist => 'Afspeellijst schuifelen';
@override
- String get unshuffle_playlist => 'Afspeellijst onschuifelen';
+ String get not_shuffle_playlist => 'Afspeellijst onschuifelen';
@override
String get previous_track => 'Vorige nummer';
@@ -590,7 +590,7 @@ class AppLocalizationsNl extends AppLocalizations {
String get step_2 => 'Stap 2';
@override
- String get step_2_steps => '1. Zodra je bent aangemeld, druk je op F12 of klik je met de rechtermuisknop > Inspect om de Browser devtools te openen.\n2. Ga vervolgens naar het tabblad \"Toepassing\" (Chrome, Edge, Brave enz..) of naar het tabblad \"Opslag\" (Firefox, Palemoon enz..).\n3. Ga naar de sectie \"Cookies\" en vervolgens naar de subsectie \"https://accounts.spotify.com\".';
+ String get step_2_steps => '1. Zodra je bent aangemeld, druk je op F12 of klik je met de rechtermuisknop > Inspect om de Browser devtools te openen.\n2. Ga vervolgens naar het tabblad \"Toepassing\" (Chrome, Edge, Brave enz..) of naar het tabblad \"Opslag\" (Firefox, Pale Moon enz..).\n3. Ga naar de sectie \"Cookies\" en vervolgens naar de subsectie \"https://accounts.spotify.com\".';
@override
String get step_3 => 'Stap 3';
@@ -672,16 +672,16 @@ class AppLocalizationsNl extends AppLocalizations {
String get number_of_tracks_generate => 'Aantal nummers om te genereren';
@override
- String get acousticness => 'Akoestiek';
+ String get not_acoustic => 'Akoestiek';
@override
- String get danceability => 'Dansbaarheid';
+ String get dance_ability => 'Dansbaarheid';
@override
String get energy => 'Energie';
@override
- String get instrumentalness => 'Instrumentaliteit';
+ String get not_instrumental => 'Instrumentaliteit';
@override
String get liveness => 'Levendigheid';
@@ -690,7 +690,7 @@ class AppLocalizationsNl extends AppLocalizations {
String get loudness => 'Luidheid';
@override
- String get speechiness => 'Spraak';
+ String get talkative => 'Spraak';
@override
String get valence => 'Valentie';
@@ -755,7 +755,7 @@ class AppLocalizationsNl extends AppLocalizations {
String get download_warning => 'Als je alle nummers in bulk downloadt, ben je duidelijk bezig met muziekpiraterij en breng je schade toe aan de creatieve muziekmaatschappij. Ik hoop dat je je hiervan bewust bent. Probeer altijd het harde werk van artiesten te respecteren en te steunen.';
@override
- String get download_ip_ban_warning => 'BTW, je IP-adres kan worden geblokkeerd op YouTube als gevolg van buitensporige downloadverzoeken. IP-blokkering betekent dat je YouTube niet kunt gebruiken (zelfs als je ingelogd bent) voor tenminste 2-3 maanden vanaf dat IP-apparaat. Spotube is niet verantwoordelijk als dit ooit gebeurt.';
+ String get download_ip_ban_warning => 'BTW, je IP-adres kan worden geblokkeerd op YouTube als gevolg van buitensporige downloadverzoeken. IP-blokkering betekent dat je YouTube niet kunt gebruiken (zelfs als je ingelogd bent) voor tenminuteste 2-3 maanden vanaf dat IP-apparaat. Spotube is niet verantwoordelijk als dit ooit gebeurt.';
@override
String get by_clicking_accept_terms => 'Door op \'accepteren\' te klikken ga je akkoord met de volgende voorwaarden:';
@@ -809,7 +809,7 @@ class AppLocalizationsNl extends AppLocalizations {
String get sleep_timer => 'Slaaptimer';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes minuten';
}
@@ -848,7 +848,7 @@ class AppLocalizationsNl extends AppLocalizations {
String get failed_to_encrypt => 'Versleuteling mislukt';
@override
- String get encryption_failed_warning => 'Spotube gebruikt versleuteling om je gegevens veilig op te slaan. Maar dat is niet gelukt. Dus zal het terugvallen op onveilige opslag.\nAls je linux gebruikt, zorg er dan voor dat je een geheim-dienst (gnome-keyring, kde-wallet, keepassxc etc) hebt geïnstalleerd.';
+ String get encryption_failed_warning => 'Spotube gebruikt versleuteling om je gegevens veilig op te slaan. Maar dat is niet gelukt. Dus zal het terugvallen op onveilige opslag.\nAls je linux gebruikt, zorg er dan voor dat je een geheim-dienst (gnome-keyring, kde-wallet, KeePassXC etc) hebt geïnstalleerd.';
@override
String get querying_info => 'Info opvragen…';
@@ -1207,15 +1207,15 @@ class AppLocalizationsNl extends AppLocalizations {
String get owned_by_you => 'Bezit door jou';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl gekopieerd naar klembord';
}
@override
- String get spotify_hipotetical_calculation => '*Dit is berekend op basis van Spotify\'s betaling per stream\nvan \$0.003 tot \$0.005. Dit is een hypothetische\nberekening om de gebruiker inzicht te geven in hoeveel ze\naan de artiesten zouden hebben betaald als ze hun liedjes op Spotify\nzouden luisteren.';
+ String get spotify_hypothetical_calculation => '*Dit is berekend op basis van Spotify\'s betaling per stream\nvan \$0.003 tot \$0.005. Dit is een hypothetische\nberekening om de gebruiker inzicht te geven in hoeveel ze\naan de artiesten zouden hebben betaald als ze hun liedjes op Spotify\nzouden luisteren.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes min';
}
diff --git a/lib/l10n/generated/app_localizations_pl.dart b/lib/l10n/generated/app_localizations_pl.dart
index d4001f8f..5ae4aaed 100644
--- a/lib/l10n/generated/app_localizations_pl.dart
+++ b/lib/l10n/generated/app_localizations_pl.dart
@@ -315,7 +315,7 @@ class AppLocalizationsPl extends AppLocalizations {
String get shuffle_playlist => 'Odtwarzaj losowo z playlisty';
@override
- String get unshuffle_playlist => 'Nie odtwarzaj losowo z playlisty';
+ String get not_shuffle_playlist => 'Nie odtwarzaj losowo z playlisty';
@override
String get previous_track => 'Poprzedni utwór';
@@ -590,7 +590,7 @@ class AppLocalizationsPl extends AppLocalizations {
String get step_2 => 'Krok 2';
@override
- String get step_2_steps => '1. Jeśli jesteś zalogowany, naciśnij klawisz F12 lub Kliknij prawym przyciskiem myszy > Zbadaj, aby odtworzyć narzędzia developerskie.\n2. Następnie przejdź do zakładki \"Application\" (Chrome, Edge, Brave etc..) lub zakładki \"Storage\" (Firefox, Palemoon etc..)\n3. Przejdź do sekcji \"Cookies\" a następnie do pod-sekcji \"https://accounts.spotify.com\"';
+ String get step_2_steps => '1. Jeśli jesteś zalogowany, naciśnij klawisz F12 lub Kliknij prawym przyciskiem myszy > Zbadaj, aby odtworzyć narzędzia developerskie.\n2. Następnie przejdź do zakładki \"Application\" (Chrome, Edge, Brave etc..) lub zakładki \"Storage\" (Firefox, Pale Moon etc..)\n3. Przejdź do sekcji \"Cookies\" a następnie do pod-sekcji \"https://accounts.spotify.com\"';
@override
String get step_3 => 'Krok 3';
@@ -672,16 +672,16 @@ class AppLocalizationsPl extends AppLocalizations {
String get number_of_tracks_generate => 'Liczba utworów do wygenerowania';
@override
- String get acousticness => 'Akustyczna';
+ String get not_acoustic => 'Akustyczna';
@override
- String get danceability => 'Taneczna';
+ String get dance_ability => 'Taneczna';
@override
String get energy => 'Energiczna';
@override
- String get instrumentalness => 'Instrumentalna';
+ String get not_instrumental => 'Instrumentalna';
@override
String get liveness => 'Żywa';
@@ -690,7 +690,7 @@ class AppLocalizationsPl extends AppLocalizations {
String get loudness => 'Głośna';
@override
- String get speechiness => 'Wymowna';
+ String get talkative => 'Wymowna';
@override
String get valence => 'Wartościowa';
@@ -809,7 +809,7 @@ class AppLocalizationsPl extends AppLocalizations {
String get sleep_timer => 'Minutnik';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes Minuty';
}
@@ -848,7 +848,7 @@ class AppLocalizationsPl extends AppLocalizations {
String get failed_to_encrypt => 'Nie można zaszyfrować :(';
@override
- String get encryption_failed_warning => 'Spotube używa szyfrowania do bezpiecznego przechowywania danych. Ale nie udało się tego zrobić. Więc powróci do niezabezpieczonego przechowywania\nJeśli używasz Linuksa, upewnij się, że masz zainstalowane jakieś usługi do szyfrowania (gnome-keyring, kde-wallet, keepassxc itp.)';
+ String get encryption_failed_warning => 'Spotube używa szyfrowania do bezpiecznego przechowywania danych. Ale nie udało się tego zrobić. Więc powróci do niezabezpieczonego przechowywania\nJeśli używasz Linuksa, upewnij się, że masz zainstalowane jakieś usługi do szyfrowania (gnome-keyring, kde-wallet, KeePassXC itp.)';
@override
String get querying_info => 'Szukam informacji...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsPl extends AppLocalizations {
String get owned_by_you => 'Własność Twoja';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl skopiowano do schowka';
}
@override
- String get spotify_hipotetical_calculation => '*Obliczone na podstawie płatności Spotify za strumień\nw zakresie od \$0.003 do \$0.005. Jest to hipotetyczne\nobliczenie mające na celu pokazanie użytkownikowi, ile\nzapłaciliby artystom, gdyby słuchali ich utworów na Spotify.';
+ String get spotify_hypothetical_calculation => '*Obliczone na podstawie płatności Spotify za strumień\nw zakresie od \$0.003 do \$0.005. Jest to hipotetyczne\nobliczenie mające na celu pokazanie użytkownikowi, ile\nzapłaciliby artystom, gdyby słuchali ich utworów na Spotify.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes min';
}
diff --git a/lib/l10n/generated/app_localizations_pt.dart b/lib/l10n/generated/app_localizations_pt.dart
index 87ac9bfa..35c675d8 100644
--- a/lib/l10n/generated/app_localizations_pt.dart
+++ b/lib/l10n/generated/app_localizations_pt.dart
@@ -315,7 +315,7 @@ class AppLocalizationsPt extends AppLocalizations {
String get shuffle_playlist => 'Embaralhar playlist';
@override
- String get unshuffle_playlist => 'Desembaralhar playlist';
+ String get not_shuffle_playlist => 'Desembaralhar playlist';
@override
String get previous_track => 'Faixa anterior';
@@ -590,7 +590,7 @@ class AppLocalizationsPt extends AppLocalizations {
String get step_2 => 'Passo 2';
@override
- String get step_2_steps => '1. Uma vez logado, pressione F12 ou clique com o botão direito do mouse > Inspecionar para abrir as ferramentas de desenvolvimento do navegador.\n2. Em seguida, vá para a guia \"Aplicativo\" (Chrome, Edge, Brave, etc.) ou \"Armazenamento\" (Firefox, Palemoon, etc.)\n3. Acesse a seção \"Cookies\" e depois a subseção \"https://accounts.spotify.com\"';
+ String get step_2_steps => '1. Uma vez logado, pressione F12 ou clique com o botão direito do mouse > Inspecionar para abrir as ferramentas de desenvolvimento do navegador.\n2. Em seguida, vá para a guia \"Aplicativo\" (Chrome, Edge, Brave, etc.) ou \"Armazenamento\" (Firefox, Pale Moon, etc.)\n3. Acesse a seção \"Cookies\" e depois a subseção \"https://accounts.spotify.com\"';
@override
String get step_3 => 'Passo 3';
@@ -672,16 +672,16 @@ class AppLocalizationsPt extends AppLocalizations {
String get number_of_tracks_generate => 'Número de faixas a gerar';
@override
- String get acousticness => 'Acústica';
+ String get not_acoustic => 'Acústica';
@override
- String get danceability => 'Dançabilidade';
+ String get dance_ability => 'Dançabilidade';
@override
String get energy => 'Energia';
@override
- String get instrumentalness => 'Instrumentalidade';
+ String get not_instrumental => 'Instrumentalidade';
@override
String get liveness => 'Vivacidade';
@@ -690,7 +690,7 @@ class AppLocalizationsPt extends AppLocalizations {
String get loudness => 'Volume';
@override
- String get speechiness => 'Discurso';
+ String get talkative => 'Discurso';
@override
String get valence => 'Valência';
@@ -809,7 +809,7 @@ class AppLocalizationsPt extends AppLocalizations {
String get sleep_timer => 'Temporizador de Sono';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes Minutos';
}
@@ -848,7 +848,7 @@ class AppLocalizationsPt extends AppLocalizations {
String get failed_to_encrypt => 'Falha ao criptografar';
@override
- String get encryption_failed_warning => 'O Spotube usa criptografia para armazenar seus dados com segurança, mas falhou em fazê-lo. Portanto, ele voltará para o armazenamento não seguro.\nSe você estiver usando o Linux, certifique-se de ter algum serviço secreto (gnome-keyring, kde-wallet, keepassxc, etc.) instalado';
+ String get encryption_failed_warning => 'O Spotube usa criptografia para armazenar seus dados com segurança, mas falhou em fazê-lo. Portanto, ele voltará para o armazenamento não seguro.\nSe você estiver usando o Linux, certifique-se de ter algum serviço secreto (gnome-keyring, kde-wallet, KeePassXC, etc.) instalado';
@override
String get querying_info => 'Consultando informações...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsPt extends AppLocalizations {
String get owned_by_you => 'De sua propriedade';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl copiado para a área de transferência';
}
@override
- String get spotify_hipotetical_calculation => '*Isso é calculado com base no pagamento por stream do Spotify\nque varia de \$0.003 a \$0.005. Esta é uma cálculo hipotético\npara dar ao usuário uma visão de quanto teriam pago aos artistas\nse eles ouvissem suas músicas no Spotify.';
+ String get spotify_hypothetical_calculation => '*Isso é calculado com base no pagamento por stream do Spotify\nque varia de \$0.003 a \$0.005. Esta é uma cálculo hipotético\npara dar ao usuário uma visão de quanto teriam pago aos artistas\nse eles ouvissem suas músicas no Spotify.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes min';
}
diff --git a/lib/l10n/generated/app_localizations_ru.dart b/lib/l10n/generated/app_localizations_ru.dart
index 7f38bb57..71c28202 100644
--- a/lib/l10n/generated/app_localizations_ru.dart
+++ b/lib/l10n/generated/app_localizations_ru.dart
@@ -315,7 +315,7 @@ class AppLocalizationsRu extends AppLocalizations {
String get shuffle_playlist => 'Перемешать плейлист';
@override
- String get unshuffle_playlist => 'Снять перемешивание плейлиста';
+ String get not_shuffle_playlist => 'Снять перемешивание плейлиста';
@override
String get previous_track => 'Предыдущий трек';
@@ -590,7 +590,7 @@ class AppLocalizationsRu extends AppLocalizations {
String get step_2 => 'Шаг 2';
@override
- String get step_2_steps => '1. После входа в систему нажмите F12 или щелкните правой кнопкой мыши > «Проверить», чтобы открыть инструменты разработчика браузера.\n2. Затем перейдите на вкладку \"Application\" (Chrome, Edge, Brave и т.д..) or \"Storage\" (Firefox, Palemoon и т.д..)\n3. Перейдите в раздел \"Cookies\", а затем в подраздел \"https://accounts.spotify.com\"';
+ String get step_2_steps => '1. После входа в систему нажмите F12 или щелкните правой кнопкой мыши > «Проверить», чтобы открыть инструменты разработчика браузера.\n2. Затем перейдите на вкладку \"Application\" (Chrome, Edge, Brave и т.д..) or \"Storage\" (Firefox, Pale Moon и т.д..)\n3. Перейдите в раздел \"Cookies\", а затем в подраздел \"https://accounts.spotify.com\"';
@override
String get step_3 => 'Шаг 3';
@@ -672,16 +672,16 @@ class AppLocalizationsRu extends AppLocalizations {
String get number_of_tracks_generate => 'Количество треков для создания';
@override
- String get acousticness => 'Акустичность';
+ String get not_acoustic => 'Акустичность';
@override
- String get danceability => 'Ритмичность';
+ String get dance_ability => 'Ритмичность';
@override
String get energy => 'Энергичность';
@override
- String get instrumentalness => 'Инструментальность';
+ String get not_instrumental => 'Инструментальность';
@override
String get liveness => 'Живость';
@@ -690,7 +690,7 @@ class AppLocalizationsRu extends AppLocalizations {
String get loudness => 'Громкость';
@override
- String get speechiness => 'Речевой характер';
+ String get talkative => 'Речевой характер';
@override
String get valence => 'Значимость';
@@ -809,7 +809,7 @@ class AppLocalizationsRu extends AppLocalizations {
String get sleep_timer => 'Таймер сна';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes Минут';
}
@@ -848,7 +848,7 @@ class AppLocalizationsRu extends AppLocalizations {
String get failed_to_encrypt => 'Не удалось зашифровать';
@override
- String get encryption_failed_warning => 'Spotube использует шифрование для безопасного хранения ваших данных. Однако в этом случае произошла ошибка. Поэтому будет использовано небезопасное хранилище.\nЕсли вы используете Linux, убедитесь, что у вас установлен какой-либо инструмент для работы с секретами (gnome-keyring, kde-wallet, keepassxc и т.д.)';
+ String get encryption_failed_warning => 'Spotube использует шифрование для безопасного хранения ваших данных. Однако в этом случае произошла ошибка. Поэтому будет использовано небезопасное хранилище.\nЕсли вы используете Linux, убедитесь, что у вас установлен какой-либо инструмент для работы с секретами (gnome-keyring, kde-wallet, KeePassXC и т.д.)';
@override
String get querying_info => 'Запрос информации...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsRu extends AppLocalizations {
String get owned_by_you => 'Ваша собственность';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl скопировано в буфер обмена';
}
@override
- String get spotify_hipotetical_calculation => '*Это рассчитано на основе выплат Spotify за стрим\nот \$0.003 до \$0.005. Это гипотетический расчет,\nчтобы дать пользователю представление о том, сколько бы он\nзаплатил артистам, если бы слушал их песни на Spotify.';
+ String get spotify_hypothetical_calculation => '*Это рассчитано на основе выплат Spotify за стрим\nот \$0.003 до \$0.005. Это гипотетический расчет,\nчтобы дать пользователю представление о том, сколько бы он\nзаплатил артистам, если бы слушал их песни на Spotify.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes мин';
}
diff --git a/lib/l10n/generated/app_localizations_ta.dart b/lib/l10n/generated/app_localizations_ta.dart
index be0826b6..fb65efc7 100644
--- a/lib/l10n/generated/app_localizations_ta.dart
+++ b/lib/l10n/generated/app_localizations_ta.dart
@@ -315,7 +315,7 @@ class AppLocalizationsTa extends AppLocalizations {
String get shuffle_playlist => 'பாடல் பட்டியலை கலக்கு';
@override
- String get unshuffle_playlist => 'பாடல் பட்டியலை கலக்காதே';
+ String get not_shuffle_playlist => 'பாடல் பட்டியலை கலக்காதே';
@override
String get previous_track => 'முந்தைய பாடல்';
@@ -590,7 +590,7 @@ class AppLocalizationsTa extends AppLocalizations {
String get step_2 => 'இரண்டாம் படி';
@override
- String get step_2_steps => '1. நீங்கள் உள்நுழைந்தவுடன், F12 ஐ அழுத்தவும் அல்லது வலது கிளிக் செய்து > ஆய்வு செய்யவும் உலாவி டெவ்டூல்களைத் திறக்கவும்.\n2. பின்னர் \"பயன்பாடு\" தாவலுக்குச் செல்லவும் (Chrome, Edge, Brave போன்றவை) அல்லது \"சேமிப்பகம்\" தாவல் (Firefox, Palemoon போன்றவை)\n3. \"குக்கிகள்\" பிரிவுக்குச் சென்று பின்னர் \"https://accounts.spotify.com\" பிரிவுக்குச் செல்லவும்';
+ String get step_2_steps => '1. நீங்கள் உள்நுழைந்தவுடன், F12 ஐ அழுத்தவும் அல்லது வலது கிளிக் செய்து > ஆய்வு செய்யவும் உலாவி டெவ்டூல்களைத் திறக்கவும்.\n2. பின்னர் \"பயன்பாடு\" தாவலுக்குச் செல்லவும் (Chrome, Edge, Brave போன்றவை) அல்லது \"சேமிப்பகம்\" தாவல் (Firefox, Pale Moon போன்றவை)\n3. \"குக்கிகள்\" பிரிவுக்குச் சென்று பின்னர் \"https://accounts.spotify.com\" பிரிவுக்குச் செல்லவும்';
@override
String get step_3 => 'மூன்றாம் படி';
@@ -672,16 +672,16 @@ class AppLocalizationsTa extends AppLocalizations {
String get number_of_tracks_generate => 'உருவாக்க வேண்டிய பாடல்களின் எண்ணிக்கை';
@override
- String get acousticness => 'அகவுஸ்டிக்னெஸ்';
+ String get not_acoustic => 'அகவுஸ்டிக்னெஸ்';
@override
- String get danceability => 'நடனத்தன்மை';
+ String get dance_ability => 'நடனத்தன்மை';
@override
String get energy => 'ஆற்றல்';
@override
- String get instrumentalness => 'கருவித்தன்மை';
+ String get not_instrumental => 'கருவித்தன்மை';
@override
String get liveness => 'உயிர்ப்புத்தன்மை';
@@ -690,7 +690,7 @@ class AppLocalizationsTa extends AppLocalizations {
String get loudness => 'ஒலி அளவு';
@override
- String get speechiness => 'பேச்சுத்தன்மை';
+ String get talkative => 'பேச்சுத்தன்மை';
@override
String get valence => 'உணர்வு';
@@ -809,7 +809,7 @@ class AppLocalizationsTa extends AppLocalizations {
String get sleep_timer => 'உறக்க நேரம்';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes நிமிடங்கள்';
}
@@ -848,7 +848,7 @@ class AppLocalizationsTa extends AppLocalizations {
String get failed_to_encrypt => 'குறியாக்கம் தோல்வியடைந்தது';
@override
- String get encryption_failed_warning => 'Spotube உங்கள் தரவை பாதுகாப்பாக சேமிக்க குறியாக்கத்தைப் பயன்படுத்துகிறது. ஆனால் அவ்வாறு செய்ய முடியவில்லை. எனவே இது பாதுகாப்பற்ற சேமிப்பகத்திற்கு மாறும்\nநீங்கள் லினக்ஸ் பயன்படுத்துகிறீர்கள் என்றால், எந்த ரகசிய சேவையும் (gnome-keyring, kde-wallet, keepassxc போன்றவை) நிறுவப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும்';
+ String get encryption_failed_warning => 'Spotube உங்கள் தரவை பாதுகாப்பாக சேமிக்க குறியாக்கத்தைப் பயன்படுத்துகிறது. ஆனால் அவ்வாறு செய்ய முடியவில்லை. எனவே இது பாதுகாப்பற்ற சேமிப்பகத்திற்கு மாறும்\nநீங்கள் லினக்ஸ் பயன்படுத்துகிறீர்கள் என்றால், எந்த ரகசிய சேவையும் (gnome-keyring, kde-wallet, KeePassXC போன்றவை) நிறுவப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும்';
@override
String get querying_info => 'தகவலைக் கேட்கிறது...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsTa extends AppLocalizations {
String get owned_by_you => 'உங்களால் கொண்டது';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return 'நகலெடுக்கப்பட்டது $shareUrl கிளிப்போர்டுக்காக';
}
@override
- String get spotify_hipotetical_calculation => '*இது Spotify இன் ஒவ்வொரு ஸ்ட்ரீமிற்கும்\n\$0.003 முதல் \$0.005 வரை அளவீடு அடிப்படையில் கணக்கிடப்படுகிறது. இது ஒரு கற்பனை\nகணக்கீடு ஆகும், பயனர் எந்த அளவிற்கு கலைஞர்களுக்கு\nஅதோர் பாடலை Spotify மென்பொருளில் கேட்டால் எவ்வளவு பணம் செலுத்தினார்கள் என்பதைக் கண்டுபிடிக்க.';
+ String get spotify_hypothetical_calculation => '*இது Spotify இன் ஒவ்வொரு ஸ்ட்ரீமிற்கும்\n\$0.003 முதல் \$0.005 வரை அளவீடு அடிப்படையில் கணக்கிடப்படுகிறது. இது ஒரு கற்பனை\nகணக்கீடு ஆகும், பயனர் எந்த அளவிற்கு கலைஞர்களுக்கு\nஅதோர் பாடலை Spotify மென்பொருளில் கேட்டால் எவ்வளவு பணம் செலுத்தினார்கள் என்பதைக் கண்டுபிடிக்க.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes நிமிடங்கள்';
}
diff --git a/lib/l10n/generated/app_localizations_th.dart b/lib/l10n/generated/app_localizations_th.dart
index 679a12da..86a8b940 100644
--- a/lib/l10n/generated/app_localizations_th.dart
+++ b/lib/l10n/generated/app_localizations_th.dart
@@ -315,7 +315,7 @@ class AppLocalizationsTh extends AppLocalizations {
String get shuffle_playlist => 'สุ่มเพลย์ลิสต์';
@override
- String get unshuffle_playlist => 'ยกเลิกการสุ่มเพลย์ลิสต์';
+ String get not_shuffle_playlist => 'ยกเลิกการสุ่มเพลย์ลิสต์';
@override
String get previous_track => 'แทร็กก่อนหน้า';
@@ -590,7 +590,7 @@ class AppLocalizationsTh extends AppLocalizations {
String get step_2 => 'ขั้นที่ 2';
@override
- String get step_2_steps => '1. หลังจากเข้าสู่ระบบแล้ว กด F12 หรือ คลิกขวาที่เมาส์ > ตรวจสอบเพื่อเปิด Devtools เบราว์เซอร์\n2. จากนั้นไปที่แท็บ \"แอปพลิเคชัน\" (Chrome, Edge, Brave เป็นต้น) หรือแท็บ \"ที่เก็บข้อมูล\" (Firefox, Palemoon เป็นต้น)\n3. ไปที่ส่วน \"คุกกี้\" แล้วไปที่ subsection \"https: //accounts.spotify.com\"';
+ String get step_2_steps => '1. หลังจากเข้าสู่ระบบแล้ว กด F12 หรือ คลิกขวาที่เมาส์ > ตรวจสอบเพื่อเปิด Devtools เบราว์เซอร์\n2. จากนั้นไปที่แท็บ \"แอปพลิเคชัน\" (Chrome, Edge, Brave เป็นต้น) หรือแท็บ \"ที่เก็บข้อมูล\" (Firefox, Pale Moon เป็นต้น)\n3. ไปที่ส่วน \"คุกกี้\" แล้วไปที่ subsection \"https: //accounts.spotify.com\"';
@override
String get step_3 => 'ขั้นที่ 3';
@@ -672,16 +672,16 @@ class AppLocalizationsTh extends AppLocalizations {
String get number_of_tracks_generate => 'จำนวนแทร็กที่จะสร้าง';
@override
- String get acousticness => 'อะคูสติก';
+ String get not_acoustic => 'อะคูสติก';
@override
- String get danceability => 'ความสามารถในการเต้น';
+ String get dance_ability => 'ความสามารถในการเต้น';
@override
String get energy => 'พลัง';
@override
- String get instrumentalness => 'บรรเลง';
+ String get not_instrumental => 'บรรเลง';
@override
String get liveness => 'ความสด';
@@ -690,7 +690,7 @@ class AppLocalizationsTh extends AppLocalizations {
String get loudness => 'ความดัง';
@override
- String get speechiness => 'การพูด';
+ String get talkative => 'การพูด';
@override
String get valence => 'ความสุข';
@@ -809,7 +809,7 @@ class AppLocalizationsTh extends AppLocalizations {
String get sleep_timer => 'ตั้งเวลาปิด';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes นาที';
}
@@ -848,7 +848,7 @@ class AppLocalizationsTh extends AppLocalizations {
String get failed_to_encrypt => 'เข้ารหัสล้มเหลว';
@override
- String get encryption_failed_warning => 'Spotube ใช้การเข้ารหัสเพื่อเก็บข้อมูลของคุณอย่างปลอดภัย แต่ไม่สามารถทำได้ ดังนั้นจะเปลี่ยนเป็นการจัดเก็บที่ไม่ปลอดภัย\nหากคุณใช้ Linux โปรดตรวจสอบว่าคุณได้ติดตั้งบริการลับ (gnome-keyring, kde-wallet, keepassxc เป็นต้น)';
+ String get encryption_failed_warning => 'Spotube ใช้การเข้ารหัสเพื่อเก็บข้อมูลของคุณอย่างปลอดภัย แต่ไม่สามารถทำได้ ดังนั้นจะเปลี่ยนเป็นการจัดเก็บที่ไม่ปลอดภัย\nหากคุณใช้ Linux โปรดตรวจสอบว่าคุณได้ติดตั้งบริการลับ (gnome-keyring, kde-wallet, KeePassXC เป็นต้น)';
@override
String get querying_info => 'กำลังดึงข้อมูล...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsTh extends AppLocalizations {
String get owned_by_you => 'เป็นเจ้าของโดยคุณ';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl คัดลอกไปที่คลิปบอร์ดแล้ว';
}
@override
- String get spotify_hipotetical_calculation => '*คำนวณตามการจ่ายต่อสตรีมของ Spotify\nซึ่งอยู่ในช่วง \$0.003 ถึง \$0.005 นี่เป็นการคำนวณสมมุติ\nเพื่อให้ผู้ใช้ทราบว่าพวกเขาจะจ่ายเงินให้ศิลปินเท่าไหร่\nหากพวกเขาฟังเพลงของพวกเขาใน Spotify.';
+ String get spotify_hypothetical_calculation => '*คำนวณตามการจ่ายต่อสตรีมของ Spotify\nซึ่งอยู่ในช่วง \$0.003 ถึง \$0.005 นี่เป็นการคำนวณสมมุติ\nเพื่อให้ผู้ใช้ทราบว่าพวกเขาจะจ่ายเงินให้ศิลปินเท่าไหร่\nหากพวกเขาฟังเพลงของพวกเขาใน Spotify.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes นาที';
}
diff --git a/lib/l10n/generated/app_localizations_tl.dart b/lib/l10n/generated/app_localizations_tl.dart
index 49452c3b..76757e90 100644
--- a/lib/l10n/generated/app_localizations_tl.dart
+++ b/lib/l10n/generated/app_localizations_tl.dart
@@ -315,7 +315,7 @@ class AppLocalizationsTl extends AppLocalizations {
String get shuffle_playlist => 'I-shuffle ang playlist';
@override
- String get unshuffle_playlist => 'I-unshuffle ang playlist';
+ String get not_shuffle_playlist => 'I-unshuffle ang playlist';
@override
String get previous_track => 'Nakaraang track';
@@ -590,7 +590,7 @@ class AppLocalizationsTl extends AppLocalizations {
String get step_2 => 'Hakbang 2';
@override
- String get step_2_steps => '1. Kapag naka-log in ka na, pindutin ang F12 o i-right click ang Mouse > Inspect para Buksan ang Browser devtools.\n2. Pagkatapos ay pumunta sa \"Application\" Tab (Chrome, Edge, Brave atbp..) o \"Storage\" Tab (Firefox, Palemoon atbp..)\n3. Pumunta sa \"Cookies\" na seksyon at pagkatapos sa \"https://accounts.spotify.com\" na subseksyon';
+ String get step_2_steps => '1. Kapag naka-log in ka na, pindutin ang F12 o i-right click ang Mouse > Inspect para Buksan ang Browser devtools.\n2. Pagkatapos ay pumunta sa \"Application\" Tab (Chrome, Edge, Brave atbp..) o \"Storage\" Tab (Firefox, Pale Moon atbp..)\n3. Pumunta sa \"Cookies\" na seksyon at pagkatapos sa \"https://accounts.spotify.com\" na subseksyon';
@override
String get step_3 => 'Hakbang 3';
@@ -672,16 +672,16 @@ class AppLocalizationsTl extends AppLocalizations {
String get number_of_tracks_generate => 'Bilang ng mga track na gagawin';
@override
- String get acousticness => 'Acoustic-ness';
+ String get not_acoustic => 'Acoustic-ness';
@override
- String get danceability => 'Kakayahang Sayawin';
+ String get dance_ability => 'Kakayahang Sayawin';
@override
String get energy => 'Enerhiya';
@override
- String get instrumentalness => 'Instrumental-ness';
+ String get not_instrumental => 'Instrumental-ness';
@override
String get liveness => 'Liveness';
@@ -690,7 +690,7 @@ class AppLocalizationsTl extends AppLocalizations {
String get loudness => 'Lakas';
@override
- String get speechiness => 'Pagsasalita';
+ String get talkative => 'Pagsasalita';
@override
String get valence => 'Valence';
@@ -809,7 +809,7 @@ class AppLocalizationsTl extends AppLocalizations {
String get sleep_timer => 'Sleep Timer';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes Minuto';
}
@@ -848,7 +848,7 @@ class AppLocalizationsTl extends AppLocalizations {
String get failed_to_encrypt => 'Nabigong i-encrypt';
@override
- String get encryption_failed_warning => 'Gumagamit ng encryption ang Spotube para ligtas na i-store ang iyong data. Ngunit nabigo. Kaya babalik ito sa hindi secure na storage\nKung gumagamit ka ng linux, mangyaring tiyakin na mayroon kang anumang secret-service na naka-install (gnome-keyring, kde-wallet, keepassxc atbp)';
+ String get encryption_failed_warning => 'Gumagamit ng encryption ang Spotube para ligtas na i-store ang iyong data. Ngunit nabigo. Kaya babalik ito sa hindi secure na storage\nKung gumagamit ka ng linux, mangyaring tiyakin na mayroon kang anumang secret-service na naka-install (gnome-keyring, kde-wallet, KeePassXC atbp)';
@override
String get querying_info => 'Kinukuha ang impormasyon...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsTl extends AppLocalizations {
String get owned_by_you => 'Pag-aari mo';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return 'Na-kopya ang $shareUrl sa clipboard';
}
@override
- String get spotify_hipotetical_calculation => '*Ito ay kinalkula batay sa bawat stream\nna bayad ng Spotify na \$0.003 hanggang \$0.005. Ito ay isang hypothetical\nna pagkalkula para bigyan ang user ng ideya kung magkano\nang kanilang ibabayad sa mga artista kung sila ay nakikinig\nng kanilang kanta sa Spotify.';
+ String get spotify_hypothetical_calculation => '*Ito ay kinalkula batay sa bawat stream\nna bayad ng Spotify na \$0.003 hanggang \$0.005. Ito ay isang hypothetical\nna pagkalkula para bigyan ang user ng ideya kung magkano\nang kanilang ibabayad sa mga artista kung sila ay nakikinig\nng kanilang kanta sa Spotify.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes minuto';
}
diff --git a/lib/l10n/generated/app_localizations_tr.dart b/lib/l10n/generated/app_localizations_tr.dart
index 11a78620..5e1f6d7d 100644
--- a/lib/l10n/generated/app_localizations_tr.dart
+++ b/lib/l10n/generated/app_localizations_tr.dart
@@ -315,7 +315,7 @@ class AppLocalizationsTr extends AppLocalizations {
String get shuffle_playlist => 'Oynatma listesini karıştır';
@override
- String get unshuffle_playlist => 'Oynatma listesinin karışıklığını kaldır';
+ String get not_shuffle_playlist => 'Oynatma listesinin karışıklığını kaldır';
@override
String get previous_track => 'Önceki parça';
@@ -590,7 +590,7 @@ class AppLocalizationsTr extends AppLocalizations {
String get step_2 => '2. Adım';
@override
- String get step_2_steps => '1. Oturum açtıktan sonra, tarayıcı geliştirme araçlarını açmak için F12\'ye veya fareye sağ tıklayın > İncele\'ye basın.\n2. Daha sonra \"Uygulama\" sekmesine (Chrome, Edge, Brave vb..) veya \"Depolama\" sekmesine (Firefox, Palemoon vb..) gidin\n3. \"Çerezler\" bölümüne, ardından \"https://accounts.spotify.com\" alt bölümüne gidin';
+ String get step_2_steps => '1. Oturum açtıktan sonra, tarayıcı geliştirme araçlarını açmak için F12\'ye veya fareye sağ tıklayın > İncele\'ye basın.\n2. Daha sonra \"Uygulama\" sekmesine (Chrome, Edge, Brave vb..) veya \"Depolama\" sekmesine (Firefox, Pale Moon vb..) gidin\n3. \"Çerezler\" bölümüne, ardından \"https://accounts.spotify.com\" alt bölümüne gidin';
@override
String get step_3 => '3. Adım';
@@ -672,16 +672,16 @@ class AppLocalizationsTr extends AppLocalizations {
String get number_of_tracks_generate => 'Oluşturulacak parça sayısı';
@override
- String get acousticness => 'Akustiklik';
+ String get not_acoustic => 'Akustiklik';
@override
- String get danceability => 'Dans Edilebilirlik';
+ String get dance_ability => 'Dans Edilebilirlik';
@override
String get energy => 'Enerji';
@override
- String get instrumentalness => 'Araçsallık';
+ String get not_instrumental => 'Araçsallık';
@override
String get liveness => 'Canlılık';
@@ -690,7 +690,7 @@ class AppLocalizationsTr extends AppLocalizations {
String get loudness => 'Ses yüksekliği';
@override
- String get speechiness => 'Konuşkanlık';
+ String get talkative => 'Konuşkanlık';
@override
String get valence => 'Değerlik';
@@ -809,7 +809,7 @@ class AppLocalizationsTr extends AppLocalizations {
String get sleep_timer => 'Uyku Zamanlayıcısı';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes Dakika';
}
@@ -848,7 +848,7 @@ class AppLocalizationsTr extends AppLocalizations {
String get failed_to_encrypt => 'Şifreleme başarısız oldu';
@override
- String get encryption_failed_warning => 'Spotube, verilerinizi güvenli bir şekilde depolamak için şifreleme kullanır. Ancak bunu başaramadı. Bu nedenle, güvensiz depolamaya geri dönecektir\nLinux kullanıyorsanız, lütfen gnome-keyring, kde-wallet, keepassxc vb. herhangi bir gizli servisin yüklü olduğundan emin olun.';
+ String get encryption_failed_warning => 'Spotube, verilerinizi güvenli bir şekilde depolamak için şifreleme kullanır. Ancak bunu başaramadı. Bu nedenle, güvensiz depolamaya geri dönecektir\nLinux kullanıyorsanız, lütfen gnome-keyring, kde-wallet, KeePassXC vb. herhangi bir gizli servisin yüklü olduğundan emin olun.';
@override
String get querying_info => 'Bilgi sorgulanıyor...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsTr extends AppLocalizations {
String get owned_by_you => 'Sahip olduğunuz';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl panoya kopyalandı';
}
@override
- String get spotify_hipotetical_calculation => '*Bu, Spotify\'ın her yayın başına ödemenin\n\$0.003 ile \$0.005 arasında olduğu varsayımıyla hesaplanmıştır. Bu\nhipotetik bir hesaplamadır, kullanıcıya şarkılarını Spotify\'da dinlediklerinde\nsanatçılara ne kadar ödeme yapacaklarını gösterir.';
+ String get spotify_hypothetical_calculation => '*Bu, Spotify\'ın her yayın başına ödemenin\n\$0.003 ile \$0.005 arasında olduğu varsayımıyla hesaplanmıştır. Bu\nhipotetik bir hesaplamadır, kullanıcıya şarkılarını Spotify\'da dinlediklerinde\nsanatçılara ne kadar ödeme yapacaklarını gösterir.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes dk';
}
diff --git a/lib/l10n/generated/app_localizations_uk.dart b/lib/l10n/generated/app_localizations_uk.dart
index 2511b2c2..2bec6823 100644
--- a/lib/l10n/generated/app_localizations_uk.dart
+++ b/lib/l10n/generated/app_localizations_uk.dart
@@ -315,7 +315,7 @@ class AppLocalizationsUk extends AppLocalizations {
String get shuffle_playlist => 'Випадковий порядок відтворення плейлиста';
@override
- String get unshuffle_playlist => 'Відключити випадковий порядок відтворення плейлиста';
+ String get not_shuffle_playlist => 'Відключити випадковий порядок відтворення плейлиста';
@override
String get previous_track => 'Попередній трек';
@@ -590,7 +590,7 @@ class AppLocalizationsUk extends AppLocalizations {
String get step_2 => 'Крок 2';
@override
- String get step_2_steps => '1. Після входу натисніть F12 або клацніть правою кнопкою миші > Інспектувати, щоб відкрити інструменти розробки браузера.\n2. Потім перейдіть на вкладку \'Програма\' (Chrome, Edge, Brave тощо) або вкладку \'Сховище\' (Firefox, Palemoon тощо).\n3. Перейдіть до розділу \'Кукі-файли\', а потім до підрозділу \'https://accounts.spotify.com\'';
+ String get step_2_steps => '1. Після входу натисніть F12 або клацніть правою кнопкою миші > Інспектувати, щоб відкрити інструменти розробки браузера.\n2. Потім перейдіть на вкладку \'Програма\' (Chrome, Edge, Brave тощо) або вкладку \'Сховище\' (Firefox, Pale Moon тощо).\n3. Перейдіть до розділу \'Кукі-файли\', а потім до підрозділу \'https://accounts.spotify.com\'';
@override
String get step_3 => 'Крок 3';
@@ -672,16 +672,16 @@ class AppLocalizationsUk extends AppLocalizations {
String get number_of_tracks_generate => 'Кількість треків для створення';
@override
- String get acousticness => 'Акустичність';
+ String get not_acoustic => 'Акустичність';
@override
- String get danceability => 'Танцювальність';
+ String get dance_ability => 'Танцювальність';
@override
String get energy => 'Енергія';
@override
- String get instrumentalness => 'Інструментальність';
+ String get not_instrumental => 'Інструментальність';
@override
String get liveness => 'Живість';
@@ -690,7 +690,7 @@ class AppLocalizationsUk extends AppLocalizations {
String get loudness => 'Гучність';
@override
- String get speechiness => 'Розмовність';
+ String get talkative => 'Розмовність';
@override
String get valence => 'Валентність';
@@ -809,7 +809,7 @@ class AppLocalizationsUk extends AppLocalizations {
String get sleep_timer => 'Таймер сну';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes хвилин';
}
@@ -848,7 +848,7 @@ class AppLocalizationsUk extends AppLocalizations {
String get failed_to_encrypt => 'Не вдалося зашифрувати';
@override
- String get encryption_failed_warning => 'Spotube використовує шифрування для безпечного зберігання ваших даних. Але не вдалося цього зробити. Тому він перейде до небезпечного зберігання\nЯкщо ви використовуєте Linux, переконайтеся, що у вас встановлено будь-який секретний сервіс (gnome-keyring, kde-wallet, keepassxc тощо)';
+ String get encryption_failed_warning => 'Spotube використовує шифрування для безпечного зберігання ваших даних. Але не вдалося цього зробити. Тому він перейде до небезпечного зберігання\nЯкщо ви використовуєте Linux, переконайтеся, що у вас встановлено будь-який секретний сервіс (gnome-keyring, kde-wallet, KeePassXC тощо)';
@override
String get querying_info => 'Запит інформації...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsUk extends AppLocalizations {
String get owned_by_you => 'Ваша власність';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl скопійовано в буфер обміну';
}
@override
- String get spotify_hipotetical_calculation => '*Це розраховано на основі виплат Spotify за стрім\nвід \$0.003 до \$0.005. Це гіпотетичний розрахунок,\nщоб дати користувачеві уявлення про те, скільки б він заплатив\nартистам, якби слухав їхні пісні на Spotify.';
+ String get spotify_hypothetical_calculation => '*Це розраховано на основі виплат Spotify за стрім\nвід \$0.003 до \$0.005. Це гіпотетичний розрахунок,\nщоб дати користувачеві уявлення про те, скільки б він заплатив\nартистам, якби слухав їхні пісні на Spotify.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes хв';
}
diff --git a/lib/l10n/generated/app_localizations_vi.dart b/lib/l10n/generated/app_localizations_vi.dart
index 0f773578..e31e03d6 100644
--- a/lib/l10n/generated/app_localizations_vi.dart
+++ b/lib/l10n/generated/app_localizations_vi.dart
@@ -315,7 +315,7 @@ class AppLocalizationsVi extends AppLocalizations {
String get shuffle_playlist => 'Xáo trộn bài hát';
@override
- String get unshuffle_playlist => 'Hủy xáo trộn bài hát';
+ String get not_shuffle_playlist => 'Hủy xáo trộn bài hát';
@override
String get previous_track => 'Bài hát trước';
@@ -590,7 +590,7 @@ class AppLocalizationsVi extends AppLocalizations {
String get step_2 => 'Bước 2';
@override
- String get step_2_steps => '1. Sau khi đăng nhập, nhấn F12 hoặc Chuột phải > Mở devtools của trình duyệt.\n2. Sau đó, chuyển đến Tab \"Ứng dụng/Application\" (Chrome, Edge, Brave, v.v.) hoặc Tab \"Lưu trữ/Storage\" (Firefox, Palemoon, v.v.)\n3. Chuyển đến phần \"Cookie\" sau đó phần con \"https://accounts.spotify.com\"';
+ String get step_2_steps => '1. Sau khi đăng nhập, nhấn F12 hoặc Chuột phải > Mở devtools của trình duyệt.\n2. Sau đó, chuyển đến Tab \"Ứng dụng/Application\" (Chrome, Edge, Brave, v.v.) hoặc Tab \"Lưu trữ/Storage\" (Firefox, Pale Moon, v.v.)\n3. Chuyển đến phần \"Cookie\" sau đó phần con \"https://accounts.spotify.com\"';
@override
String get step_3 => 'Bước 3';
@@ -672,16 +672,16 @@ class AppLocalizationsVi extends AppLocalizations {
String get number_of_tracks_generate => 'Số lượng bài hát để tạo';
@override
- String get acousticness => 'Độ âm thanh';
+ String get not_acoustic => 'Độ âm thanh';
@override
- String get danceability => 'Khả năng nhảy';
+ String get dance_ability => 'Khả năng nhảy';
@override
String get energy => 'Năng lượng';
@override
- String get instrumentalness => 'Độ nhạc cụ';
+ String get not_instrumental => 'Độ nhạc cụ';
@override
String get liveness => 'Sống động';
@@ -690,7 +690,7 @@ class AppLocalizationsVi extends AppLocalizations {
String get loudness => 'Độ ồn';
@override
- String get speechiness => 'Độ nói';
+ String get talkative => 'Độ nói';
@override
String get valence => 'Tính tích cực';
@@ -809,7 +809,7 @@ class AppLocalizationsVi extends AppLocalizations {
String get sleep_timer => 'Hẹn giờ tắt';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes Phút';
}
@@ -848,7 +848,7 @@ class AppLocalizationsVi extends AppLocalizations {
String get failed_to_encrypt => 'Mã hóa không thành công';
@override
- String get encryption_failed_warning => 'Spotube không thành công trong việc mã hóa nhằm lưu trữ dữ liêu an toàn. vậy nên sẽ chuyển về lưu trữ không an toàn\nNếu bạn đang sử dụng Linux, đảm bảo rằng bạn có sử dụng dịch vụ bảo mật (gnome-keyring, kde-wallet, keepassxc, v.v.)';
+ String get encryption_failed_warning => 'Spotube không thành công trong việc mã hóa nhằm lưu trữ dữ liêu an toàn. vậy nên sẽ chuyển về lưu trữ không an toàn\nNếu bạn đang sử dụng Linux, đảm bảo rằng bạn có sử dụng dịch vụ bảo mật (gnome-keyring, kde-wallet, KeePassXC, v.v.)';
@override
String get querying_info => 'Đang truy vấn thông tin...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsVi extends AppLocalizations {
String get owned_by_you => 'Thuộc sở hữu của bạn';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl đã sao chép vào bảng tạm';
}
@override
- String get spotify_hipotetical_calculation => '*Được tính toán dựa trên khoản thanh toán của Spotify cho mỗi lượt phát\ntừ \$0.003 đến \$0.005. Đây là một tính toán giả định để\ncung cấp cho người dùng cái nhìn về số tiền họ sẽ phải trả\ncho các nghệ sĩ nếu họ nghe bài hát của họ trên Spotify.';
+ String get spotify_hypothetical_calculation => '*Được tính toán dựa trên khoản thanh toán của Spotify cho mỗi lượt phát\ntừ \$0.003 đến \$0.005. Đây là một tính toán giả định để\ncung cấp cho người dùng cái nhìn về số tiền họ sẽ phải trả\ncho các nghệ sĩ nếu họ nghe bài hát của họ trên Spotify.';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes phút';
}
diff --git a/lib/l10n/generated/app_localizations_zh.dart b/lib/l10n/generated/app_localizations_zh.dart
index 58f7a37e..7917f6a5 100644
--- a/lib/l10n/generated/app_localizations_zh.dart
+++ b/lib/l10n/generated/app_localizations_zh.dart
@@ -315,7 +315,7 @@ class AppLocalizationsZh extends AppLocalizations {
String get shuffle_playlist => '随机播放歌单';
@override
- String get unshuffle_playlist => '取消随机播放歌单';
+ String get not_shuffle_playlist => '取消随机播放歌单';
@override
String get previous_track => '上一首歌曲';
@@ -590,7 +590,7 @@ class AppLocalizationsZh extends AppLocalizations {
String get step_2 => '步骤 2';
@override
- String get step_2_steps => '1. 一旦你已经完成登录, 按 F12 键或者鼠标右击网页空白区域 > 选择“检查”以打开浏览器开发者工具(DevTools)\n2. 然后选择 \"应用(Application)\" 标签页(Chrome, Edge, Brave 等基于 Chromium 的浏览器) 或 \"存储(Storage)\" 标签页 (Firefox, Palemoon 等基于 Firefox 的浏览器))\n3. 选择 \"Cookies\" 栏目然后选择 \"https://accounts.spotify.com\" 子栏目';
+ String get step_2_steps => '1. 一旦你已经完成登录, 按 F12 键或者鼠标右击网页空白区域 > 选择“检查”以打开浏览器开发者工具(DevTools)\n2. 然后选择 \"应用(Application)\" 标签页(Chrome, Edge, Brave 等基于 Chromium 的浏览器) 或 \"存储(Storage)\" 标签页 (Firefox, Pale Moon 等基于 Firefox 的浏览器))\n3. 选择 \"Cookies\" 栏目然后选择 \"https://accounts.spotify.com\" 子栏目';
@override
String get step_3 => '步骤 3';
@@ -672,16 +672,16 @@ class AppLocalizationsZh extends AppLocalizations {
String get number_of_tracks_generate => '生成歌曲的数目';
@override
- String get acousticness => '原声程度';
+ String get not_acoustic => '原声程度';
@override
- String get danceability => '律动感';
+ String get dance_ability => '律动感';
@override
String get energy => '冲击感';
@override
- String get instrumentalness => '歌唱部分占比';
+ String get not_instrumental => '歌唱部分占比';
@override
String get liveness => '现场感';
@@ -690,7 +690,7 @@ class AppLocalizationsZh extends AppLocalizations {
String get loudness => '响度';
@override
- String get speechiness => '朗诵比例';
+ String get talkative => '朗诵比例';
@override
String get valence => '心理感受';
@@ -809,7 +809,7 @@ class AppLocalizationsZh extends AppLocalizations {
String get sleep_timer => '睡眠定时器';
@override
- String mins(Object minutes) {
+ String minutes(Object minutes) {
return '$minutes 分';
}
@@ -848,7 +848,7 @@ class AppLocalizationsZh extends AppLocalizations {
String get failed_to_encrypt => '加密失败';
@override
- String get encryption_failed_warning => 'Spotube使用加密来安全地存储您的数据。但是失败了。因此,它将回退到不安全的存储\n如果您使用Linux,请确保已安装gnome-keyring、kde-wallet和keepassxc等秘密服务';
+ String get encryption_failed_warning => 'Spotube使用加密来安全地存储您的数据。但是失败了。因此,它将回退到不安全的存储\n如果您使用Linux,请确保已安装gnome-keyring、kde-wallet和KeePassXC等秘密服务';
@override
String get querying_info => '正在查询信息...';
@@ -1207,15 +1207,15 @@ class AppLocalizationsZh extends AppLocalizations {
String get owned_by_you => '由您拥有';
@override
- String copied_shareurl_to_clipboard(Object shareUrl) {
+ String copied_share_url_to_clipboard(Object shareUrl) {
return '$shareUrl 已复制到剪贴板';
}
@override
- String get spotify_hipotetical_calculation => '*根据 Spotify 每次流媒体的支付金额\n\$0.003 到 \$0.005 进行计算。这是一个假设性的\n计算,用于给用户了解他们如果在 Spotify 上\n收听歌曲会支付给艺术家的金额。';
+ String get spotify_hypothetical_calculation => '*根据 Spotify 每次流媒体的支付金额\n\$0.003 到 \$0.005 进行计算。这是一个假设性的\n计算,用于给用户了解他们如果在 Spotify 上\n收听歌曲会支付给艺术家的金额。';
@override
- String count_mins(Object minutes) {
+ String count_minutes(Object minutes) {
return '$minutes 分钟';
}
diff --git a/lib/l10n/l10n.dart b/lib/l10n/l10n.dart
index 0b974641..9983cf82 100644
--- a/lib/l10n/l10n.dart
+++ b/lib/l10n/l10n.dart
@@ -18,6 +18,7 @@
library l10n;
import 'package:shadcn_flutter/shadcn_flutter.dart';
+
export 'package:spotube/l10n/generated/app_localizations.dart';
class L10n {
diff --git a/lib/main.dart b/lib/main.dart
index f178b663..76ffaea3 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -6,14 +6,17 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart' as material;
import 'package:flutter/services.dart';
import 'package:flutter_discord_rpc/flutter_discord_rpc.dart';
+import 'package:flutter_displaymode/flutter_displaymode.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
-
+import 'package:flutter_native_splash/flutter_native_splash.dart';
+import 'package:flutter_new_pipe_extractor/flutter_new_pipe_extractor.dart';
import 'package:home_widget/home_widget.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:local_notifier/local_notifier.dart';
import 'package:media_kit/media_kit.dart';
import 'package:metadata_god/metadata_god.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:smtc_windows/smtc_windows.dart';
import 'package:spotube/collections/env.dart';
import 'package:spotube/collections/initializers.dart';
@@ -25,16 +28,16 @@ import 'package:spotube/hooks/configurators/use_disable_battery_optimizations.da
import 'package:spotube/hooks/configurators/use_fix_window_stretching.dart';
import 'package:spotube/hooks/configurators/use_get_storage_perms.dart';
import 'package:spotube/hooks/configurators/use_has_touch.dart';
+import 'package:spotube/l10n/l10n.dart';
import 'package:spotube/models/database/database.dart';
import 'package:spotube/modules/settings/color_scheme_picker_dialog.dart';
import 'package:spotube/provider/audio_player/audio_player_streams.dart';
+import 'package:spotube/provider/connect/clients.dart';
import 'package:spotube/provider/database/database.dart';
import 'package:spotube/provider/glance/glance.dart';
import 'package:spotube/provider/server/bonsoir.dart';
import 'package:spotube/provider/server/server.dart';
import 'package:spotube/provider/tray_manager/tray_manager.dart';
-import 'package:spotube/l10n/l10n.dart';
-import 'package:spotube/provider/connect/clients.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
import 'package:spotube/services/audio_player/audio_player.dart';
import 'package:spotube/services/cli/cli.dart';
@@ -44,13 +47,9 @@ import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/services/wm_tools/wm_tools.dart';
import 'package:spotube/utils/migrations/sandbox.dart';
import 'package:spotube/utils/platform.dart';
-import 'package:flutter_native_splash/flutter_native_splash.dart';
-import 'package:flutter_displaymode/flutter_displaymode.dart';
import 'package:timezone/data/latest.dart' as tz;
import 'package:window_manager/window_manager.dart';
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:yt_dlp_dart/yt_dlp_dart.dart';
-import 'package:flutter_new_pipe_extractor/flutter_new_pipe_extractor.dart';
Future main(List rawArgs) async {
if (rawArgs.contains("web_view_title_bar")) {
@@ -75,7 +74,6 @@ Future main(List rawArgs) async {
await migrateMacOsFromSandboxToNoSandbox();
- // force High Refresh Rate on some Android devices (like One Plus)
if (kIsAndroid) {
await FlutterDisplayMode.setHighRefreshRate();
await NewPipeExtractor.init();
@@ -162,8 +160,10 @@ class Spotube extends HookConsumerWidget {
}
return () {
- /// For enabling hot reload for audio player
- if (!kDebugMode) return;
+ if (!kDebugMode) {
+ return;
+ }
+
audioPlayer.dispose();
};
}, []);
diff --git a/lib/models/connect/connect.dart b/lib/models/connect/connect.dart
index a70520ad..a26ac7b0 100644
--- a/lib/models/connect/connect.dart
+++ b/lib/models/connect/connect.dart
@@ -10,6 +10,5 @@ import 'package:spotube/provider/audio_player/state.dart';
part 'connect.freezed.dart';
part 'connect.g.dart';
-
-part 'ws_event.dart';
part 'load.dart';
+part 'ws_event.dart';
diff --git a/lib/models/database/database.dart b/lib/models/database/database.dart
index 199e7147..720c302d 100644
--- a/lib/models/database/database.dart
+++ b/lib/models/database/database.dart
@@ -4,7 +4,9 @@ import 'dart:convert';
import 'dart:io';
import 'package:drift/drift.dart';
+import 'package:drift/native.dart';
import 'package:encrypt/encrypt.dart';
+import 'package:flutter/widgets.dart' hide Table, Key, View;
import 'package:media_kit/media_kit.dart' hide Track;
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
@@ -12,12 +14,10 @@ import 'package:shadcn_flutter/shadcn_flutter.dart' show ThemeMode, Colors;
import 'package:spotify/spotify.dart' hide Playlist;
import 'package:spotube/models/database/database.steps.dart';
import 'package:spotube/models/lyrics.dart';
+import 'package:spotube/modules/settings/color_scheme_picker_dialog.dart';
import 'package:spotube/services/kv_store/encrypted_kv_store.dart';
import 'package:spotube/services/kv_store/kv_store.dart';
import 'package:spotube/services/sourced_track/enums.dart';
-import 'package:flutter/widgets.dart' hide Table, Key, View;
-import 'package:spotube/modules/settings/color_scheme_picker_dialog.dart';
-import 'package:drift/native.dart';
import 'package:spotube/services/youtube_engine/newpipe_engine.dart';
import 'package:spotube/services/youtube_engine/youtube_explode_engine.dart';
import 'package:spotube/services/youtube_engine/yt_dlp_engine.dart';
@@ -25,22 +25,20 @@ import 'package:sqlite3/sqlite3.dart';
import 'package:sqlite3_flutter_libs/sqlite3_flutter_libs.dart';
part 'database.g.dart';
-
+part 'tables/audio_player_state.dart';
part 'tables/authentication.dart';
part 'tables/blacklist.dart';
+part 'tables/history.dart';
+part 'tables/lyrics.dart';
part 'tables/preferences.dart';
part 'tables/scrobbler.dart';
part 'tables/skip_segment.dart';
part 'tables/source_match.dart';
-part 'tables/audio_player_state.dart';
-part 'tables/history.dart';
-part 'tables/lyrics.dart';
-
part 'typeconverters/color.dart';
-part 'typeconverters/locale.dart';
-part 'typeconverters/string_list.dart';
part 'typeconverters/encrypted_text.dart';
+part 'typeconverters/locale.dart';
part 'typeconverters/map.dart';
+part 'typeconverters/string_list.dart';
part 'typeconverters/subtitle.dart';
@DriftDatabase(
diff --git a/lib/models/database/database.steps.dart b/lib/models/database/database.steps.dart
index 8e0f8e3f..7b13718d 100644
--- a/lib/models/database/database.steps.dart
+++ b/lib/models/database/database.steps.dart
@@ -1,7 +1,7 @@
// dart format width=80
-import 'package:drift/internal/versioned_schema.dart' as i0;
import 'package:drift/drift.dart' as i1;
import 'package:drift/drift.dart';
+import 'package:drift/internal/versioned_schema.dart' as i0;
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/models/database/database.dart';
diff --git a/lib/models/database/tables/preferences.dart b/lib/models/database/tables/preferences.dart
index 492ac1f9..d0427ac3 100644
--- a/lib/models/database/tables/preferences.dart
+++ b/lib/models/database/tables/preferences.dart
@@ -2,7 +2,7 @@ part of '../database.dart';
enum LayoutMode {
compact,
- extended,
+ // extended,
adaptive,
}
@@ -128,7 +128,7 @@ class PreferencesTable extends Table {
normalizeAudio: false,
showSystemTrayIcon: false,
systemTitleBar: false,
- skipNonMusic: false,
+ skipNonMusic: true,
closeBehavior: CloseBehavior.close,
accentColorScheme: SpotubeColor(Colors.blue.value, name: "Blue"),
layoutMode: LayoutMode.adaptive,
diff --git a/lib/models/spotify/recommendation_seeds.dart b/lib/models/spotify/recommendation_seeds.dart
index 0d874ad6..3322aedf 100644
--- a/lib/models/spotify/recommendation_seeds.dart
+++ b/lib/models/spotify/recommendation_seeds.dart
@@ -19,17 +19,17 @@ class GeneratePlaylistProviderInput with _$GeneratePlaylistProviderInput {
@freezed
class RecommendationSeeds with _$RecommendationSeeds {
factory RecommendationSeeds({
- num? acousticness,
- num? danceability,
+ num? not_acoustic,
+ num? dance_ability,
@JsonKey(name: "duration_ms") num? durationMs,
num? energy,
- num? instrumentalness,
+ num? not_instrumental,
num? key,
num? liveness,
num? loudness,
num? mode,
num? popularity,
- num? speechiness,
+ num? talkative,
num? tempo,
@JsonKey(name: "time_signature") num? timeSignature,
num? valence,
diff --git a/lib/models/spotify/recommendation_seeds.freezed.dart b/lib/models/spotify/recommendation_seeds.freezed.dart
index c55a4134..b9ecf675 100644
--- a/lib/models/spotify/recommendation_seeds.freezed.dart
+++ b/lib/models/spotify/recommendation_seeds.freezed.dart
@@ -347,18 +347,18 @@ RecommendationSeeds _$RecommendationSeedsFromJson(Map json) {
/// @nodoc
mixin _$RecommendationSeeds {
- num? get acousticness => throw _privateConstructorUsedError;
- num? get danceability => throw _privateConstructorUsedError;
+ num? get not_acoustic => throw _privateConstructorUsedError;
+ num? get dance_ability => throw _privateConstructorUsedError;
@JsonKey(name: "duration_ms")
num? get durationMs => throw _privateConstructorUsedError;
num? get energy => throw _privateConstructorUsedError;
- num? get instrumentalness => throw _privateConstructorUsedError;
+ num? get not_instrumental => throw _privateConstructorUsedError;
num? get key => throw _privateConstructorUsedError;
num? get liveness => throw _privateConstructorUsedError;
num? get loudness => throw _privateConstructorUsedError;
num? get mode => throw _privateConstructorUsedError;
num? get popularity => throw _privateConstructorUsedError;
- num? get speechiness => throw _privateConstructorUsedError;
+ num? get talkative => throw _privateConstructorUsedError;
num? get tempo => throw _privateConstructorUsedError;
@JsonKey(name: "time_signature")
num? get timeSignature => throw _privateConstructorUsedError;
@@ -381,17 +381,17 @@ abstract class $RecommendationSeedsCopyWith<$Res> {
_$RecommendationSeedsCopyWithImpl<$Res, RecommendationSeeds>;
@useResult
$Res call(
- {num? acousticness,
- num? danceability,
+ {num? not_acoustic,
+ num? dance_ability,
@JsonKey(name: "duration_ms") num? durationMs,
num? energy,
- num? instrumentalness,
+ num? not_instrumental,
num? key,
num? liveness,
num? loudness,
num? mode,
num? popularity,
- num? speechiness,
+ num? talkative,
num? tempo,
@JsonKey(name: "time_signature") num? timeSignature,
num? valence});
@@ -412,29 +412,29 @@ class _$RecommendationSeedsCopyWithImpl<$Res, $Val extends RecommendationSeeds>
@pragma('vm:prefer-inline')
@override
$Res call({
- Object? acousticness = freezed,
- Object? danceability = freezed,
+ Object? not_acoustic = freezed,
+ Object? dance_ability = freezed,
Object? durationMs = freezed,
Object? energy = freezed,
- Object? instrumentalness = freezed,
+ Object? not_instrumental = freezed,
Object? key = freezed,
Object? liveness = freezed,
Object? loudness = freezed,
Object? mode = freezed,
Object? popularity = freezed,
- Object? speechiness = freezed,
+ Object? talkative = freezed,
Object? tempo = freezed,
Object? timeSignature = freezed,
Object? valence = freezed,
}) {
return _then(_value.copyWith(
- acousticness: freezed == acousticness
- ? _value.acousticness
- : acousticness // ignore: cast_nullable_to_non_nullable
+ not_acoustic: freezed == not_acoustic
+ ? _value.not_acoustic
+ : not_acoustic // ignore: cast_nullable_to_non_nullable
as num?,
- danceability: freezed == danceability
- ? _value.danceability
- : danceability // ignore: cast_nullable_to_non_nullable
+ dance_ability: freezed == dance_ability
+ ? _value.dance_ability
+ : dance_ability // ignore: cast_nullable_to_non_nullable
as num?,
durationMs: freezed == durationMs
? _value.durationMs
@@ -444,9 +444,9 @@ class _$RecommendationSeedsCopyWithImpl<$Res, $Val extends RecommendationSeeds>
? _value.energy
: energy // ignore: cast_nullable_to_non_nullable
as num?,
- instrumentalness: freezed == instrumentalness
- ? _value.instrumentalness
- : instrumentalness // ignore: cast_nullable_to_non_nullable
+ not_instrumental: freezed == not_instrumental
+ ? _value.not_instrumental
+ : not_instrumental // ignore: cast_nullable_to_non_nullable
as num?,
key: freezed == key
? _value.key
@@ -468,9 +468,9 @@ class _$RecommendationSeedsCopyWithImpl<$Res, $Val extends RecommendationSeeds>
? _value.popularity
: popularity // ignore: cast_nullable_to_non_nullable
as num?,
- speechiness: freezed == speechiness
- ? _value.speechiness
- : speechiness // ignore: cast_nullable_to_non_nullable
+ talkative: freezed == talkative
+ ? _value.talkative
+ : talkative // ignore: cast_nullable_to_non_nullable
as num?,
tempo: freezed == tempo
? _value.tempo
@@ -497,17 +497,17 @@ abstract class _$$RecommendationSeedsImplCopyWith<$Res>
@override
@useResult
$Res call(
- {num? acousticness,
- num? danceability,
+ {num? not_acoustic,
+ num? dance_ability,
@JsonKey(name: "duration_ms") num? durationMs,
num? energy,
- num? instrumentalness,
+ num? not_instrumental,
num? key,
num? liveness,
num? loudness,
num? mode,
num? popularity,
- num? speechiness,
+ num? talkative,
num? tempo,
@JsonKey(name: "time_signature") num? timeSignature,
num? valence});
@@ -526,29 +526,29 @@ class __$$RecommendationSeedsImplCopyWithImpl<$Res>
@pragma('vm:prefer-inline')
@override
$Res call({
- Object? acousticness = freezed,
- Object? danceability = freezed,
+ Object? not_acoustic = freezed,
+ Object? dance_ability = freezed,
Object? durationMs = freezed,
Object? energy = freezed,
- Object? instrumentalness = freezed,
+ Object? not_instrumental = freezed,
Object? key = freezed,
Object? liveness = freezed,
Object? loudness = freezed,
Object? mode = freezed,
Object? popularity = freezed,
- Object? speechiness = freezed,
+ Object? talkative = freezed,
Object? tempo = freezed,
Object? timeSignature = freezed,
Object? valence = freezed,
}) {
return _then(_$RecommendationSeedsImpl(
- acousticness: freezed == acousticness
- ? _value.acousticness
- : acousticness // ignore: cast_nullable_to_non_nullable
+ not_acoustic: freezed == not_acoustic
+ ? _value.not_acoustic
+ : not_acoustic // ignore: cast_nullable_to_non_nullable
as num?,
- danceability: freezed == danceability
- ? _value.danceability
- : danceability // ignore: cast_nullable_to_non_nullable
+ dance_ability: freezed == dance_ability
+ ? _value.dance_ability
+ : dance_ability // ignore: cast_nullable_to_non_nullable
as num?,
durationMs: freezed == durationMs
? _value.durationMs
@@ -558,9 +558,9 @@ class __$$RecommendationSeedsImplCopyWithImpl<$Res>
? _value.energy
: energy // ignore: cast_nullable_to_non_nullable
as num?,
- instrumentalness: freezed == instrumentalness
- ? _value.instrumentalness
- : instrumentalness // ignore: cast_nullable_to_non_nullable
+ not_instrumental: freezed == not_instrumental
+ ? _value.not_instrumental
+ : not_instrumental // ignore: cast_nullable_to_non_nullable
as num?,
key: freezed == key
? _value.key
@@ -582,9 +582,9 @@ class __$$RecommendationSeedsImplCopyWithImpl<$Res>
? _value.popularity
: popularity // ignore: cast_nullable_to_non_nullable
as num?,
- speechiness: freezed == speechiness
- ? _value.speechiness
- : speechiness // ignore: cast_nullable_to_non_nullable
+ talkative: freezed == talkative
+ ? _value.talkative
+ : talkative // ignore: cast_nullable_to_non_nullable
as num?,
tempo: freezed == tempo
? _value.tempo
@@ -606,17 +606,17 @@ class __$$RecommendationSeedsImplCopyWithImpl<$Res>
@JsonSerializable()
class _$RecommendationSeedsImpl implements _RecommendationSeeds {
_$RecommendationSeedsImpl(
- {this.acousticness,
- this.danceability,
+ {this.not_acoustic,
+ this.dance_ability,
@JsonKey(name: "duration_ms") this.durationMs,
this.energy,
- this.instrumentalness,
+ this.not_instrumental,
this.key,
this.liveness,
this.loudness,
this.mode,
this.popularity,
- this.speechiness,
+ this.talkative,
this.tempo,
@JsonKey(name: "time_signature") this.timeSignature,
this.valence});
@@ -625,16 +625,16 @@ class _$RecommendationSeedsImpl implements _RecommendationSeeds {
_$$RecommendationSeedsImplFromJson(json);
@override
- final num? acousticness;
+ final num? not_acoustic;
@override
- final num? danceability;
+ final num? dance_ability;
@override
@JsonKey(name: "duration_ms")
final num? durationMs;
@override
final num? energy;
@override
- final num? instrumentalness;
+ final num? not_instrumental;
@override
final num? key;
@override
@@ -646,7 +646,7 @@ class _$RecommendationSeedsImpl implements _RecommendationSeeds {
@override
final num? popularity;
@override
- final num? speechiness;
+ final num? talkative;
@override
final num? tempo;
@override
@@ -657,7 +657,7 @@ class _$RecommendationSeedsImpl implements _RecommendationSeeds {
@override
String toString() {
- return 'RecommendationSeeds(acousticness: $acousticness, danceability: $danceability, durationMs: $durationMs, energy: $energy, instrumentalness: $instrumentalness, key: $key, liveness: $liveness, loudness: $loudness, mode: $mode, popularity: $popularity, speechiness: $speechiness, tempo: $tempo, timeSignature: $timeSignature, valence: $valence)';
+ return 'RecommendationSeeds(not_acoustic: $not_acoustic, dance_ability: $dance_ability, durationMs: $durationMs, energy: $energy, not_instrumental: $not_instrumental, key: $key, liveness: $liveness, loudness: $loudness, mode: $mode, popularity: $popularity, talkative: $talkative, tempo: $tempo, timeSignature: $timeSignature, valence: $valence)';
}
@override
@@ -665,15 +665,15 @@ class _$RecommendationSeedsImpl implements _RecommendationSeeds {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$RecommendationSeedsImpl &&
- (identical(other.acousticness, acousticness) ||
- other.acousticness == acousticness) &&
- (identical(other.danceability, danceability) ||
- other.danceability == danceability) &&
+ (identical(other.not_acoustic, not_acoustic) ||
+ other.not_acoustic == not_acoustic) &&
+ (identical(other.dance_ability, dance_ability) ||
+ other.dance_ability == dance_ability) &&
(identical(other.durationMs, durationMs) ||
other.durationMs == durationMs) &&
(identical(other.energy, energy) || other.energy == energy) &&
- (identical(other.instrumentalness, instrumentalness) ||
- other.instrumentalness == instrumentalness) &&
+ (identical(other.not_instrumental, not_instrumental) ||
+ other.not_instrumental == not_instrumental) &&
(identical(other.key, key) || other.key == key) &&
(identical(other.liveness, liveness) ||
other.liveness == liveness) &&
@@ -682,8 +682,8 @@ class _$RecommendationSeedsImpl implements _RecommendationSeeds {
(identical(other.mode, mode) || other.mode == mode) &&
(identical(other.popularity, popularity) ||
other.popularity == popularity) &&
- (identical(other.speechiness, speechiness) ||
- other.speechiness == speechiness) &&
+ (identical(other.talkative, talkative) ||
+ other.talkative == talkative) &&
(identical(other.tempo, tempo) || other.tempo == tempo) &&
(identical(other.timeSignature, timeSignature) ||
other.timeSignature == timeSignature) &&
@@ -694,17 +694,17 @@ class _$RecommendationSeedsImpl implements _RecommendationSeeds {
@override
int get hashCode => Object.hash(
runtimeType,
- acousticness,
- danceability,
+ not_acoustic,
+ dance_ability,
durationMs,
energy,
- instrumentalness,
+ not_instrumental,
key,
liveness,
loudness,
mode,
popularity,
- speechiness,
+ talkative,
tempo,
timeSignature,
valence);
@@ -728,17 +728,17 @@ class _$RecommendationSeedsImpl implements _RecommendationSeeds {
abstract class _RecommendationSeeds implements RecommendationSeeds {
factory _RecommendationSeeds(
- {final num? acousticness,
- final num? danceability,
+ {final num? not_acoustic,
+ final num? dance_ability,
@JsonKey(name: "duration_ms") final num? durationMs,
final num? energy,
- final num? instrumentalness,
+ final num? not_instrumental,
final num? key,
final num? liveness,
final num? loudness,
final num? mode,
final num? popularity,
- final num? speechiness,
+ final num? talkative,
final num? tempo,
@JsonKey(name: "time_signature") final num? timeSignature,
final num? valence}) = _$RecommendationSeedsImpl;
@@ -747,16 +747,16 @@ abstract class _RecommendationSeeds implements RecommendationSeeds {
_$RecommendationSeedsImpl.fromJson;
@override
- num? get acousticness;
+ num? get not_acoustic;
@override
- num? get danceability;
+ num? get dance_ability;
@override
@JsonKey(name: "duration_ms")
num? get durationMs;
@override
num? get energy;
@override
- num? get instrumentalness;
+ num? get not_instrumental;
@override
num? get key;
@override
@@ -768,7 +768,7 @@ abstract class _RecommendationSeeds implements RecommendationSeeds {
@override
num? get popularity;
@override
- num? get speechiness;
+ num? get talkative;
@override
num? get tempo;
@override
diff --git a/lib/models/spotify/recommendation_seeds.g.dart b/lib/models/spotify/recommendation_seeds.g.dart
index accb2ed1..cf8729e2 100644
--- a/lib/models/spotify/recommendation_seeds.g.dart
+++ b/lib/models/spotify/recommendation_seeds.g.dart
@@ -8,17 +8,17 @@ part of 'recommendation_seeds.dart';
_$RecommendationSeedsImpl _$$RecommendationSeedsImplFromJson(Map json) =>
_$RecommendationSeedsImpl(
- acousticness: json['acousticness'] as num?,
- danceability: json['danceability'] as num?,
+ not_acoustic: json['not_acoustic'] as num?,
+ dance_ability: json['dance_ability'] as num?,
durationMs: json['duration_ms'] as num?,
energy: json['energy'] as num?,
- instrumentalness: json['instrumentalness'] as num?,
+ not_instrumental: json['not_instrumental'] as num?,
key: json['key'] as num?,
liveness: json['liveness'] as num?,
loudness: json['loudness'] as num?,
mode: json['mode'] as num?,
popularity: json['popularity'] as num?,
- speechiness: json['speechiness'] as num?,
+ talkative: json['talkative'] as num?,
tempo: json['tempo'] as num?,
timeSignature: json['time_signature'] as num?,
valence: json['valence'] as num?,
@@ -27,17 +27,17 @@ _$RecommendationSeedsImpl _$$RecommendationSeedsImplFromJson(Map json) =>
Map _$$RecommendationSeedsImplToJson(
_$RecommendationSeedsImpl instance) =>
{
- 'acousticness': instance.acousticness,
- 'danceability': instance.danceability,
+ 'not_acoustic': instance.not_acoustic,
+ 'dance_ability': instance.dance_ability,
'duration_ms': instance.durationMs,
'energy': instance.energy,
- 'instrumentalness': instance.instrumentalness,
+ 'not_instrumental': instance.not_instrumental,
'key': instance.key,
'liveness': instance.liveness,
'loudness': instance.loudness,
'mode': instance.mode,
'popularity': instance.popularity,
- 'speechiness': instance.speechiness,
+ 'talkative': instance.talkative,
'tempo': instance.tempo,
'time_signature': instance.timeSignature,
'valence': instance.valence,
diff --git a/lib/modules/album/album_card.dart b/lib/modules/album/album_card.dart
index 84106594..d7c90c5a 100644
--- a/lib/modules/album/album_card.dart
+++ b/lib/modules/album/album_card.dart
@@ -12,10 +12,10 @@ import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/image.dart';
import 'package:spotube/extensions/track.dart';
import 'package:spotube/models/connect/connect.dart';
+import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/audio_player/querying_track_info.dart';
import 'package:spotube/provider/connect/connect.dart';
import 'package:spotube/provider/history/history.dart';
-import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/spotify/spotify.dart';
import 'package:spotube/services/audio_player/audio_player.dart';
diff --git a/lib/modules/artist/artist_card.dart b/lib/modules/artist/artist_card.dart
index e53070ef..608349b2 100644
--- a/lib/modules/artist/artist_card.dart
+++ b/lib/modules/artist/artist_card.dart
@@ -1,15 +1,12 @@
import 'package:auto_route/auto_route.dart';
import 'package:auto_size_text/auto_size_text.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
-
import 'package:spotify/spotify.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/components/image/universal_image.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/image.dart';
-
import 'package:spotube/provider/blacklist_provider.dart';
class ArtistCard extends HookConsumerWidget {
diff --git a/lib/modules/connect/connect_device.dart b/lib/modules/connect/connect_device.dart
index 2c8d612b..89d74769 100644
--- a/lib/modules/connect/connect_device.dart
+++ b/lib/modules/connect/connect_device.dart
@@ -9,7 +9,9 @@ import 'package:spotube/provider/connect/clients.dart';
class ConnectDeviceButton extends HookConsumerWidget {
final bool _sidebar;
+
const ConnectDeviceButton({super.key}) : _sidebar = false;
+
const ConnectDeviceButton.sidebar({super.key}) : _sidebar = true;
@override
@@ -37,10 +39,14 @@ class ConnectDeviceButton extends HookConsumerWidget {
onPressed: () {
context.navigateTo(const ConnectRoute());
},
- trailing: const Icon(SpotubeIcons.speaker),
+ trailing: const Icon(
+ SpotubeIcons.speaker,
+ color: Colors.white,
+ ),
child: Text(
"${context.l10n.devices}"
"${hasServices ? " (${connectClients.asData?.value.services.length})" : ""}",
+ style: const TextStyle(color: Colors.white),
),
),
);
diff --git a/lib/modules/home/sections/friends.dart b/lib/modules/home/sections/friends.dart
index 5c9c2178..710966d0 100644
--- a/lib/modules/home/sections/friends.dart
+++ b/lib/modules/home/sections/friends.dart
@@ -5,8 +5,8 @@ import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/collections/fake.dart';
-import 'package:spotube/modules/home/sections/friends/friend_item.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/modules/home/sections/friends/friend_item.dart';
import 'package:spotube/provider/authentication/authentication.dart';
import 'package:spotube/provider/spotify/spotify.dart';
diff --git a/lib/modules/home/sections/friends/friend_item.dart b/lib/modules/home/sections/friends/friend_item.dart
index bf04558f..37e06510 100644
--- a/lib/modules/home/sections/friends/friend_item.dart
+++ b/lib/modules/home/sections/friends/friend_item.dart
@@ -1,6 +1,5 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter/gestures.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
diff --git a/lib/modules/home/sections/genres/genres.dart b/lib/modules/home/sections/genres/genres.dart
index c9f3f9b2..3a4cdab2 100644
--- a/lib/modules/home/sections/genres/genres.dart
+++ b/lib/modules/home/sections/genres/genres.dart
@@ -1,6 +1,5 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
diff --git a/lib/modules/library/local_folder/cache_export_dialog.dart b/lib/modules/library/local_folder/cache_export_dialog.dart
index 0f10defc..5ccc41ac 100644
--- a/lib/modules/library/local_folder/cache_export_dialog.dart
+++ b/lib/modules/library/local_folder/cache_export_dialog.dart
@@ -1,9 +1,9 @@
import 'dart:io';
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:path/path.dart' as path;
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/services/sourced_track/enums.dart';
diff --git a/lib/modules/library/local_folder/local_folder_item.dart b/lib/modules/library/local_folder/local_folder_item.dart
index 78f1aa14..7037998b 100644
--- a/lib/modules/library/local_folder/local_folder_item.dart
+++ b/lib/modules/library/local_folder/local_folder_item.dart
@@ -2,7 +2,6 @@ import 'dart:math';
import 'package:auto_route/auto_route.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:path/path.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
diff --git a/lib/modules/library/playlist_generate/recommendation_attribute_fields.dart b/lib/modules/library/playlist_generate/recommendation_attribute_fields.dart
index b616b080..8a14c50f 100644
--- a/lib/modules/library/playlist_generate/recommendation_attribute_fields.dart
+++ b/lib/modules/library/playlist_generate/recommendation_attribute_fields.dart
@@ -1,9 +1,9 @@
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
-import 'package:spotube/hooks/controllers/use_shadcn_text_editing_controller.dart';
-import 'package:spotube/modules/library/playlist_generate/recommendation_attribute_dials.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/hooks/controllers/use_shadcn_text_editing_controller.dart';
+import 'package:spotube/modules/library/playlist_generate/recommendation_attribute_dials.dart';
import 'package:spotube/pages/library/playlist_generate/playlist_generate.dart';
class RecommendationAttributeFields extends HookWidget {
diff --git a/lib/modules/library/playlist_generate/simple_track_tile.dart b/lib/modules/library/playlist_generate/simple_track_tile.dart
index afa723f3..542618d6 100644
--- a/lib/modules/library/playlist_generate/simple_track_tile.dart
+++ b/lib/modules/library/playlist_generate/simple_track_tile.dart
@@ -2,7 +2,6 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/collections/spotube_icons.dart';
-
import 'package:spotube/components/image/universal_image.dart';
import 'package:spotube/components/ui/button_tile.dart';
import 'package:spotube/extensions/image.dart';
diff --git a/lib/modules/lyrics/zoom_controls.dart b/lib/modules/lyrics/zoom_controls.dart
index b4eeb9d6..26148240 100644
--- a/lib/modules/lyrics/zoom_controls.dart
+++ b/lib/modules/lyrics/zoom_controls.dart
@@ -1,7 +1,6 @@
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
-
import 'package:spotube/collections/spotube_icons.dart';
class ZoomControls extends HookWidget {
diff --git a/lib/modules/player/player.dart b/lib/modules/player/player.dart
index aa5171d5..dfde9f97 100644
--- a/lib/modules/player/player.dart
+++ b/lib/modules/player/player.dart
@@ -4,31 +4,29 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:sliding_up_panel/sliding_up_panel.dart';
-
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/components/framework/app_pop_scope.dart';
-import 'package:spotube/modules/player/player_actions.dart';
-import 'package:spotube/modules/player/player_controls.dart';
-import 'package:spotube/modules/player/volume_slider.dart';
import 'package:spotube/components/dialogs/track_details_dialog.dart';
+import 'package:spotube/components/framework/app_pop_scope.dart';
+import 'package:spotube/components/image/universal_image.dart';
import 'package:spotube/components/links/artist_link.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
-import 'package:spotube/components/image/universal_image.dart';
import 'package:spotube/extensions/artist_simple.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/image.dart';
import 'package:spotube/models/local_track.dart';
+import 'package:spotube/modules/player/player_actions.dart';
+import 'package:spotube/modules/player/player_controls.dart';
+import 'package:spotube/modules/player/volume_slider.dart';
import 'package:spotube/modules/root/spotube_navigation_bar.dart';
-import 'package:spotube/provider/authentication/authentication.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
+import 'package:spotube/provider/authentication/authentication.dart';
import 'package:spotube/provider/server/active_sourced_track.dart';
import 'package:spotube/provider/volume_provider.dart';
import 'package:spotube/services/sourced_track/sources/youtube.dart';
import 'package:spotube/utils/platform.dart';
-
import 'package:url_launcher/url_launcher_string.dart';
class PlayerView extends HookConsumerWidget {
diff --git a/lib/modules/player/player_actions.dart b/lib/modules/player/player_actions.dart
index 0ed56ed2..f39b534d 100644
--- a/lib/modules/player/player_actions.dart
+++ b/lib/modules/player/player_actions.dart
@@ -5,20 +5,19 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/routes.gr.dart';
-
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/extensions/constrains.dart';
-import 'package:spotube/modules/player/player_queue.dart';
-import 'package:spotube/modules/player/sibling_tracks_sheet.dart';
import 'package:spotube/components/adaptive/adaptive_pop_sheet_list.dart';
import 'package:spotube/components/heart_button/heart_button.dart';
import 'package:spotube/extensions/artist_simple.dart';
+import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/duration.dart';
import 'package:spotube/models/local_track.dart';
-import 'package:spotube/provider/download_manager_provider.dart';
-import 'package:spotube/provider/authentication/authentication.dart';
+import 'package:spotube/modules/player/player_queue.dart';
+import 'package:spotube/modules/player/sibling_tracks_sheet.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
+import 'package:spotube/provider/authentication/authentication.dart';
+import 'package:spotube/provider/download_manager_provider.dart';
import 'package:spotube/provider/sleep_timer_provider.dart';
class PlayerActions extends HookConsumerWidget {
@@ -67,8 +66,8 @@ class PlayerActions extends HookConsumerWidget {
final sleepTimerEntries = useMemoized(
() => {
- context.l10n.mins(15): const Duration(minutes: 15),
- context.l10n.mins(30): const Duration(minutes: 30),
+ context.l10n.minutes(15): const Duration(minutes: 15),
+ context.l10n.minutes(30): const Duration(minutes: 30),
context.l10n.hour(1): const Duration(hours: 1),
context.l10n.hour(2): const Duration(hours: 2),
},
diff --git a/lib/modules/player/player_controls.dart b/lib/modules/player/player_controls.dart
index 4d5d6deb..8a286550 100644
--- a/lib/modules/player/player_controls.dart
+++ b/lib/modules/player/player_controls.dart
@@ -4,9 +4,8 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:media_kit/media_kit.dart';
import 'package:palette_generator/palette_generator.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
-
-import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/collections/intents.dart';
+import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/duration.dart';
@@ -144,7 +143,7 @@ class PlayerControls extends HookConsumerWidget {
tooltip: TooltipContainer(
child: Text(
shuffled
- ? context.l10n.unshuffle_playlist
+ ? context.l10n.not_shuffle_playlist
: context.l10n.shuffle_playlist,
),
),
diff --git a/lib/modules/player/player_overlay.dart b/lib/modules/player/player_overlay.dart
index 3c3ff373..c0aaebda 100644
--- a/lib/modules/player/player_overlay.dart
+++ b/lib/modules/player/player_overlay.dart
@@ -1,10 +1,9 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:sliding_up_panel/sliding_up_panel.dart';
-import 'package:spotube/modules/player/player_overlay_collapsed.dart';
-
-import 'package:spotube/modules/root/spotube_navigation_bar.dart';
import 'package:spotube/modules/player/player.dart';
+import 'package:spotube/modules/player/player_overlay_collapsed.dart';
+import 'package:spotube/modules/root/spotube_navigation_bar.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
final playerOverlayControllerProvider = StateProvider((ref) {
diff --git a/lib/modules/player/player_queue.dart b/lib/modules/player/player_queue.dart
index 0ef86111..b09b9ac2 100644
--- a/lib/modules/player/player_queue.dart
+++ b/lib/modules/player/player_queue.dart
@@ -4,7 +4,6 @@ import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:fuzzywuzzy/fuzzywuzzy.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
-
import 'package:scroll_to_index/scroll_to_index.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotify/spotify.dart';
diff --git a/lib/modules/player/player_track_details.dart b/lib/modules/player/player_track_details.dart
index 2e38bf37..74b680b3 100644
--- a/lib/modules/player/player_track_details.dart
+++ b/lib/modules/player/player_track_details.dart
@@ -1,9 +1,7 @@
import 'package:auto_route/auto_route.dart';
-
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotify/spotify.dart';
-
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/components/image/universal_image.dart';
diff --git a/lib/modules/player/sibling_tracks_sheet.dart b/lib/modules/player/sibling_tracks_sheet.dart
index d026cea9..332a84bb 100644
--- a/lib/modules/player/sibling_tracks_sheet.dart
+++ b/lib/modules/player/sibling_tracks_sheet.dart
@@ -1,5 +1,4 @@
import 'package:collection/collection.dart';
-
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
diff --git a/lib/modules/player/volume_slider.dart b/lib/modules/player/volume_slider.dart
index ee4ac9c5..505d2a7b 100644
--- a/lib/modules/player/volume_slider.dart
+++ b/lib/modules/player/volume_slider.dart
@@ -1,5 +1,4 @@
import 'package:flutter/gestures.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/spotube_icons.dart';
diff --git a/lib/modules/playlist/playlist_card.dart b/lib/modules/playlist/playlist_card.dart
index 1e2ba1bf..edcf23c1 100644
--- a/lib/modules/playlist/playlist_card.dart
+++ b/lib/modules/playlist/playlist_card.dart
@@ -11,10 +11,10 @@ import 'package:spotube/components/playbutton_view/playbutton_tile.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/image.dart';
import 'package:spotube/models/connect/connect.dart';
+import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/audio_player/querying_track_info.dart';
import 'package:spotube/provider/connect/connect.dart';
import 'package:spotube/provider/history/history.dart';
-import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/spotify/spotify.dart';
import 'package:spotube/services/audio_player/audio_player.dart';
import 'package:stroke_text/stroke_text.dart';
diff --git a/lib/modules/playlist/playlist_create_dialog.dart b/lib/modules/playlist/playlist_create_dialog.dart
index 3ee39583..17523bce 100644
--- a/lib/modules/playlist/playlist_create_dialog.dart
+++ b/lib/modules/playlist/playlist_create_dialog.dart
@@ -4,14 +4,13 @@ import 'dart:io';
import 'package:auto_route/auto_route.dart';
import 'package:collection/collection.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';
-import 'package:form_builder_validators/form_builder_validators.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:form_builder_validators/form_builder_validators.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:image_picker/image_picker.dart';
import 'package:path/path.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotify/spotify.dart';
-
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/form/checkbox_form_field.dart';
import 'package:spotube/components/form/text_form_field.dart';
diff --git a/lib/modules/root/bottom_player.dart b/lib/modules/root/bottom_player.dart
index 18b4c221..ab6b726d 100644
--- a/lib/modules/root/bottom_player.dart
+++ b/lib/modules/root/bottom_player.dart
@@ -3,22 +3,20 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
-
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/models/database/database.dart';
-import 'package:spotube/modules/player/player_actions.dart';
-import 'package:spotube/modules/player/player_overlay.dart';
-import 'package:spotube/modules/player/player_track_details.dart';
-import 'package:spotube/modules/player/player_controls.dart';
-import 'package:spotube/modules/player/volume_slider.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/image.dart';
+import 'package:spotube/models/database/database.dart';
+import 'package:spotube/modules/player/player_actions.dart';
+import 'package:spotube/modules/player/player_controls.dart';
+import 'package:spotube/modules/player/player_overlay.dart';
+import 'package:spotube/modules/player/player_track_details.dart';
+import 'package:spotube/modules/player/volume_slider.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
-
import 'package:spotube/provider/volume_provider.dart';
import 'package:spotube/utils/platform.dart';
import 'package:window_manager/window_manager.dart';
diff --git a/lib/modules/root/sidebar/sidebar.dart b/lib/modules/root/sidebar/sidebar.dart
index 743b339b..cb56c895 100644
--- a/lib/modules/root/sidebar/sidebar.dart
+++ b/lib/modules/root/sidebar/sidebar.dart
@@ -2,14 +2,12 @@ import 'package:auto_route/auto_route.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
-
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/collections/side_bar_tiles.dart';
-import 'package:spotube/models/database/database.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/models/database/database.dart';
import 'package:spotube/modules/root/sidebar/sidebar_footer.dart';
-
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
class Sidebar extends HookConsumerWidget {
@@ -26,7 +24,7 @@ class Sidebar extends HookConsumerWidget {
color: Colors.black,
borderRadius: BorderRadius.circular(50),
),
- child: Assets.spotubeLogoPng.image(height: 50),
+ child: Assets.spotubeLogoStableNotWallpaper.image(height: 50),
);
}
diff --git a/lib/modules/root/sidebar/sidebar_footer.dart b/lib/modules/root/sidebar/sidebar_footer.dart
index fb3edddd..a2f1d5ae 100644
--- a/lib/modules/root/sidebar/sidebar_footer.dart
+++ b/lib/modules/root/sidebar/sidebar_footer.dart
@@ -2,13 +2,12 @@ import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart' show Badge;
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
-
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/image/universal_image.dart';
-import 'package:spotube/extensions/image.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/extensions/image.dart';
import 'package:spotube/modules/connect/connect_device.dart';
import 'package:spotube/provider/authentication/authentication.dart';
import 'package:spotube/provider/download_manager_provider.dart';
@@ -62,7 +61,7 @@ class SidebarFooter extends HookConsumerWidget implements NavigationBarItem {
}
return Container(
- padding: const EdgeInsets.only(left: 12),
+ padding: const EdgeInsets.only(left: 12, bottom: 48),
width: 180,
child: Column(
mainAxisSize: MainAxisSize.min,
diff --git a/lib/modules/root/spotube_navigation_bar.dart b/lib/modules/root/spotube_navigation_bar.dart
index 15417fa6..fb8ad075 100644
--- a/lib/modules/root/spotube_navigation_bar.dart
+++ b/lib/modules/root/spotube_navigation_bar.dart
@@ -6,7 +6,6 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
-
import 'package:spotube/collections/side_bar_tiles.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
@@ -44,11 +43,11 @@ class SpotubeNavigationBar extends HookConsumerWidget {
),
);
- if (layoutMode == LayoutMode.extended ||
- (mediaQuery.mdAndUp && layoutMode == LayoutMode.adaptive) ||
- panelHeight < 10) {
- return const SizedBox();
- }
+ // if (layoutMode == LayoutMode.extended ||
+ // (mediaQuery.mdAndUp && layoutMode == LayoutMode.adaptive) ||
+ // panelHeight < 10) {
+ // return const SizedBox();
+ // }
return AnimatedContainer(
duration: const Duration(milliseconds: 100),
diff --git a/lib/modules/root/update_dialog.dart b/lib/modules/root/update_dialog.dart
index 4aa2fd13..cb782b55 100644
--- a/lib/modules/root/update_dialog.dart
+++ b/lib/modules/root/update_dialog.dart
@@ -1,7 +1,7 @@
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/components/links/anchor_button.dart';
-import 'package:url_launcher/url_launcher_string.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:url_launcher/url_launcher_string.dart';
import 'package:version/version.dart';
class RootAppUpdateDialog extends StatelessWidget {
diff --git a/lib/modules/settings/color_scheme_picker_dialog.dart b/lib/modules/settings/color_scheme_picker_dialog.dart
index 8092f825..4fb76ce8 100644
--- a/lib/modules/settings/color_scheme_picker_dialog.dart
+++ b/lib/modules/settings/color_scheme_picker_dialog.dart
@@ -4,7 +4,6 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/extensions/context.dart';
-
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
class SpotubeColor extends Color {
diff --git a/lib/modules/stats/common/album_item.dart b/lib/modules/stats/common/album_item.dart
index cd0a6caf..5d25ff6c 100644
--- a/lib/modules/stats/common/album_item.dart
+++ b/lib/modules/stats/common/album_item.dart
@@ -2,11 +2,11 @@ import 'package:auto_route/auto_route.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/collections/routes.gr.dart';
-import 'package:spotube/components/ui/button_tile.dart';
-import 'package:spotube/modules/album/album_card.dart';
import 'package:spotube/components/image/universal_image.dart';
import 'package:spotube/components/links/artist_link.dart';
+import 'package:spotube/components/ui/button_tile.dart';
import 'package:spotube/extensions/image.dart';
+import 'package:spotube/modules/album/album_card.dart';
class StatsAlbumItem extends StatelessWidget {
final AlbumSimple album;
diff --git a/lib/modules/stats/summary/summary.dart b/lib/modules/stats/summary/summary.dart
index 30e68b1f..57ee893f 100644
--- a/lib/modules/stats/summary/summary.dart
+++ b/lib/modules/stats/summary/summary.dart
@@ -5,9 +5,9 @@ import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/collections/fake.dart';
import 'package:spotube/collections/formatters.dart';
import 'package:spotube/collections/routes.gr.dart';
-import 'package:spotube/modules/stats/summary/summary_card.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/modules/stats/summary/summary_card.dart';
import 'package:spotube/provider/history/summary.dart';
class StatsPageSummarySection extends HookConsumerWidget {
diff --git a/lib/modules/stats/top/albums.dart b/lib/modules/stats/top/albums.dart
index 09bf755c..fd6102d1 100644
--- a/lib/modules/stats/top/albums.dart
+++ b/lib/modules/stats/top/albums.dart
@@ -4,8 +4,8 @@ import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/collections/formatters.dart';
-import 'package:spotube/modules/stats/common/album_item.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/modules/stats/common/album_item.dart';
import 'package:spotube/provider/history/top.dart';
import 'package:spotube/provider/history/top/albums.dart';
import 'package:spotube/provider/spotify/spotify.dart';
diff --git a/lib/modules/stats/top/artists.dart b/lib/modules/stats/top/artists.dart
index c53c34fd..4ffdac25 100644
--- a/lib/modules/stats/top/artists.dart
+++ b/lib/modules/stats/top/artists.dart
@@ -5,8 +5,8 @@ import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/collections/formatters.dart';
-import 'package:spotube/modules/stats/common/artist_item.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/modules/stats/common/artist_item.dart';
import 'package:spotube/provider/history/top.dart';
import 'package:spotube/provider/history/top/tracks.dart';
import 'package:spotube/provider/spotify/spotify.dart';
diff --git a/lib/modules/stats/top/top.dart b/lib/modules/stats/top/top.dart
index 38f04ccb..9dbb3ef1 100644
--- a/lib/modules/stats/top/top.dart
+++ b/lib/modules/stats/top/top.dart
@@ -3,11 +3,10 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/extensions/constrains.dart';
+import 'package:spotube/extensions/context.dart';
import 'package:spotube/modules/stats/top/albums.dart';
import 'package:spotube/modules/stats/top/artists.dart';
import 'package:spotube/modules/stats/top/tracks.dart';
-import 'package:spotube/extensions/context.dart';
-
import 'package:spotube/provider/history/top.dart';
class StatsPageTopSection extends HookConsumerWidget {
diff --git a/lib/modules/stats/top/tracks.dart b/lib/modules/stats/top/tracks.dart
index c4015431..4fd3e82c 100644
--- a/lib/modules/stats/top/tracks.dart
+++ b/lib/modules/stats/top/tracks.dart
@@ -4,8 +4,8 @@ import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/collections/formatters.dart';
-import 'package:spotube/modules/stats/common/track_item.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/modules/stats/common/track_item.dart';
import 'package:spotube/provider/history/top.dart';
import 'package:spotube/provider/history/top/tracks.dart';
import 'package:spotube/provider/spotify/spotify.dart';
diff --git a/lib/pages/album/album.dart b/lib/pages/album/album.dart
index 5773f9fa..2fab5b79 100644
--- a/lib/pages/album/album.dart
+++ b/lib/pages/album/album.dart
@@ -1,5 +1,5 @@
-import 'package:flutter/material.dart' as material;
import 'package:auto_route/auto_route.dart';
+import 'package:flutter/material.dart' as material;
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotify/spotify.dart';
diff --git a/lib/pages/artist/artist.dart b/lib/pages/artist/artist.dart
index 2037174a..ca118d6c 100644
--- a/lib/pages/artist/artist.dart
+++ b/lib/pages/artist/artist.dart
@@ -1,20 +1,18 @@
+import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart' as material;
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/components/button/back_button.dart';
-
import 'package:spotube/components/titlebar/titlebar.dart';
-import 'package:spotube/modules/artist/artist_album_list.dart';
import 'package:spotube/extensions/context.dart';
-
+import 'package:spotube/modules/artist/artist_album_list.dart';
import 'package:spotube/pages/artist/section/footer.dart';
import 'package:spotube/pages/artist/section/header.dart';
import 'package:spotube/pages/artist/section/related_artists.dart';
import 'package:spotube/pages/artist/section/top_tracks.dart';
import 'package:spotube/provider/spotify/spotify.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class ArtistPage extends HookConsumerWidget {
diff --git a/lib/pages/artist/section/footer.dart b/lib/pages/artist/section/footer.dart
index 0fe2ab68..c3723efe 100644
--- a/lib/pages/artist/section/footer.dart
+++ b/lib/pages/artist/section/footer.dart
@@ -1,13 +1,12 @@
import 'package:flutter/gestures.dart';
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/image/universal_image.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/image.dart';
import 'package:spotube/provider/spotify/spotify.dart';
-
import 'package:url_launcher/url_launcher_string.dart';
class ArtistPageFooter extends ConsumerWidget {
diff --git a/lib/pages/artist/section/header.dart b/lib/pages/artist/section/header.dart
index b6224428..8a7f5bbf 100644
--- a/lib/pages/artist/section/header.dart
+++ b/lib/pages/artist/section/header.dart
@@ -17,6 +17,7 @@ import 'package:spotube/utils/primitive_utils.dart';
class ArtistPageHeader extends HookConsumerWidget {
final String artistId;
+
const ArtistPageHeader({super.key, required this.artistId});
@override
diff --git a/lib/pages/artist/section/related_artists.dart b/lib/pages/artist/section/related_artists.dart
index 2db9ca94..d7953b91 100644
--- a/lib/pages/artist/section/related_artists.dart
+++ b/lib/pages/artist/section/related_artists.dart
@@ -1,5 +1,5 @@
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/modules/artist/artist_card.dart';
import 'package:spotube/provider/spotify/spotify.dart';
diff --git a/lib/pages/artist/section/top_tracks.dart b/lib/pages/artist/section/top_tracks.dart
index 72709751..38ce834f 100644
--- a/lib/pages/artist/section/top_tracks.dart
+++ b/lib/pages/artist/section/top_tracks.dart
@@ -8,8 +8,8 @@ import 'package:spotube/components/dialogs/select_device_dialog.dart';
import 'package:spotube/components/track_tile/track_tile.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/models/connect/connect.dart';
-import 'package:spotube/provider/connect/connect.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
+import 'package:spotube/provider/connect/connect.dart';
import 'package:spotube/provider/spotify/spotify.dart';
class ArtistPageTopTracks extends HookConsumerWidget {
diff --git a/lib/pages/connect/connect.dart b/lib/pages/connect/connect.dart
index bb8bbfae..54a9387f 100644
--- a/lib/pages/connect/connect.dart
+++ b/lib/pages/connect/connect.dart
@@ -1,13 +1,13 @@
+import 'package:auto_route/auto_route.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/components/ui/button_tile.dart';
-import 'package:spotube/modules/connect/local_devices.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
+import 'package:spotube/components/ui/button_tile.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/modules/connect/local_devices.dart';
import 'package:spotube/provider/connect/clients.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class ConnectPage extends HookConsumerWidget {
diff --git a/lib/pages/connect/control/control.dart b/lib/pages/connect/control/control.dart
index 2511809c..855b0753 100644
--- a/lib/pages/connect/control/control.dart
+++ b/lib/pages/connect/control/control.dart
@@ -1,11 +1,10 @@
import 'package:auto_route/auto_route.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:shadcn_flutter/shadcn_flutter.dart';
+import 'package:media_kit/media_kit.dart' hide Track;
+import 'package:shadcn_flutter/shadcn_flutter.dart' hide Consumer;
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/modules/player/player_queue.dart';
-import 'package:spotube/modules/player/volume_slider.dart';
import 'package:spotube/components/image/universal_image.dart';
import 'package:spotube/components/links/anchor_button.dart';
import 'package:spotube/components/links/artist_link.dart';
@@ -14,9 +13,10 @@ import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/duration.dart';
import 'package:spotube/extensions/image.dart';
+import 'package:spotube/modules/player/player_queue.dart';
+import 'package:spotube/modules/player/volume_slider.dart';
import 'package:spotube/provider/connect/clients.dart';
import 'package:spotube/provider/connect/connect.dart';
-import 'package:media_kit/media_kit.dart' hide Track;
class RemotePlayerQueue extends ConsumerWidget {
const RemotePlayerQueue({super.key});
@@ -185,7 +185,7 @@ class ConnectControlPage extends HookConsumerWidget {
tooltip: TooltipContainer(
child: Text(
shuffled
- ? context.l10n.unshuffle_playlist
+ ? context.l10n.not_shuffle_playlist
: context.l10n.shuffle_playlist,
),
),
diff --git a/lib/pages/getting_started/getting_started.dart b/lib/pages/getting_started/getting_started.dart
index a576ed09..c61b22b1 100644
--- a/lib/pages/getting_started/getting_started.dart
+++ b/lib/pages/getting_started/getting_started.dart
@@ -1,14 +1,13 @@
+import 'package:auto_route/auto_route.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
-import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/pages/getting_started/sections/greeting.dart';
import 'package:spotube/pages/getting_started/sections/playback.dart';
import 'package:spotube/pages/getting_started/sections/region.dart';
import 'package:spotube/pages/getting_started/sections/support.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class GettingStartedPage extends HookConsumerWidget {
@@ -69,12 +68,7 @@ class GettingStartedPage extends HookConsumerWidget {
],
floatingHeader: true,
child: DecoratedBox(
- decoration: BoxDecoration(
- image: DecorationImage(
- image: Assets.bengaliPatternsBg.provider(),
- fit: BoxFit.cover,
- ),
- ),
+ decoration: const BoxDecoration(),
child: PageView(
controller: pageController,
children: [
diff --git a/lib/pages/getting_started/sections/greeting.dart b/lib/pages/getting_started/sections/greeting.dart
index 4b9c0a89..694a5d90 100644
--- a/lib/pages/getting_started/sections/greeting.dart
+++ b/lib/pages/getting_started/sections/greeting.dart
@@ -3,21 +3,25 @@ import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/extensions/context.dart';
-import 'package:spotube/modules/getting_started/blur_card.dart';
import 'package:spotube/utils/platform.dart';
class GettingStartedPageGreetingSection extends HookConsumerWidget {
final VoidCallback onNext;
- const GettingStartedPageGreetingSection({super.key, required this.onNext});
+
+ const GettingStartedPageGreetingSection({
+ super.key,
+ required this.onNext,
+ });
@override
- Widget build(BuildContext context, ref) {
+ Widget build(BuildContext context, WidgetRef ref) {
return Center(
- child: BlurCard(
+ child: Padding(
+ padding: const EdgeInsets.symmetric(horizontal: 24.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
- Assets.spotubeLogoPng.image(height: 200),
+ Assets.spotubeLogoStableNotWallpaper.image(height: 225),
const Gap(24),
const Text("Spotube").semiBold().h4(),
const Gap(4),
@@ -26,12 +30,18 @@ class GettingStartedPageGreetingSection extends HookConsumerWidget {
? context.l10n.freedom_of_music_palm
: context.l10n.freedom_of_music,
textAlign: TextAlign.center,
- ).light().large().italic(),
+ ).light().large().normal(),
const Gap(84),
Button.primary(
onPressed: onNext,
- trailing: const Icon(SpotubeIcons.angleRight),
- child: Text(context.l10n.get_started),
+ trailing: const Icon(
+ SpotubeIcons.angleRight,
+ color: Colors.white,
+ ),
+ child: Text(
+ context.l10n.get_started,
+ style: const TextStyle(color: Colors.white),
+ ),
),
],
),
diff --git a/lib/pages/getting_started/sections/playback.dart b/lib/pages/getting_started/sections/playback.dart
index f122dbcd..0520acbd 100644
--- a/lib/pages/getting_started/sections/playback.dart
+++ b/lib/pages/getting_started/sections/playback.dart
@@ -4,10 +4,9 @@ import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/ui/button_tile.dart';
-import 'package:spotube/models/database/database.dart';
-import 'package:spotube/modules/getting_started/blur_card.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/string.dart';
+import 'package:spotube/models/database/database.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
final audioSourceToIconMap = {
@@ -35,119 +34,129 @@ class GettingStartedPagePlaybackSection extends HookConsumerWidget {
});
@override
- Widget build(BuildContext context, ref) {
+ Widget build(BuildContext context, WidgetRef ref) {
final preferences = ref.watch(userPreferencesProvider);
final preferencesNotifier = ref.read(userPreferencesProvider.notifier);
- final audioSourceToDescription = useMemoized(
- () => {
- AudioSource.youtube: "${context.l10n.youtube_source_description}\n"
- "${context.l10n.highest_quality("148kbps mp4, 128kbps opus")}",
- AudioSource.piped: context.l10n.piped_source_description,
- AudioSource.jiosaavn:
- "${context.l10n.jiosaavn_source_description}\n"
- "${context.l10n.highest_quality("320kbps mp")}",
- AudioSource.invidious: context.l10n.invidious_source_description,
- },
- []);
+ final audioSourceToDescription = useMemoized(() => {
+ AudioSource.youtube: "${context.l10n.youtube_source_description}\n"
+ "${context.l10n.highest_quality("148kbps in mp4, 128kbps in opus")}",
+ AudioSource.piped: context.l10n.piped_source_description,
+ AudioSource.jiosaavn: "${context.l10n.jiosaavn_source_description}\n"
+ "${context.l10n.highest_quality("320kbps in mp3")}",
+ AudioSource.invidious: context.l10n.invidious_source_description,
+ });
- return Center(
- child: BlurCard(
- child: Column(
- mainAxisSize: MainAxisSize.min,
- children: [
- Row(
+ return SafeArea(
+ child: Center(
+ child: ConstrainedBox(
+ constraints: const BoxConstraints(maxWidth: 600),
+ child: Padding(
+ padding: const EdgeInsets.symmetric(horizontal: 24),
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
children: [
- const Icon(SpotubeIcons.album, size: 16),
- const Gap(8),
- Text(context.l10n.playback).semiBold().large(),
- ],
- ),
- const Gap(16),
- Align(
- alignment: Alignment.centerLeft,
- child: Text(context.l10n.select_audio_source).semiBold().large(),
- ),
- const Gap(16),
- Select(
- value: preferences.audioSource,
- onChanged: (value) {
- if (value == null) return;
- preferencesNotifier.setAudioSource(value);
- },
- placeholder: Text(preferences.audioSource.name.capitalize()),
- itemBuilder: (context, value) => Row(
- mainAxisSize: MainAxisSize.min,
- spacing: 6,
- children: [
- audioSourceToIconMap[value]!,
- Text(value.name.capitalize()),
- ],
- ),
- popup: (context) {
- return SelectPopup(
- items: SelectItemBuilder(
- childCount: AudioSource.values.length,
- builder: (context, index) {
- final source = AudioSource.values[index];
-
- return SelectItemButton(
- value: source,
- child: Row(
- mainAxisSize: MainAxisSize.min,
- spacing: 6,
- children: [
- audioSourceToIconMap[source]!,
- Text(source.name.capitalize()),
- ],
+ Row(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ const Icon(SpotubeIcons.album, size: 16),
+ const Gap(8),
+ Text(context.l10n.playback).semiBold().large(),
+ ],
+ ),
+ const Gap(24),
+ Align(
+ alignment: Alignment.centerLeft,
+ child: Text(context.l10n.select_audio_source)
+ .semiBold()
+ .large()
+ .center(),
+ ),
+ const Gap(16),
+ Select(
+ value: preferences.audioSource,
+ onChanged: (value) {
+ if (value != null) {
+ preferencesNotifier.setAudioSource(value);
+ }
+ },
+ placeholder: Text(preferences.audioSource.name.capitalize()),
+ itemBuilder: (context, value) => Row(
+ children: [
+ audioSourceToIconMap[value]!,
+ const SizedBox(width: 6),
+ Text(value.name.capitalize()),
+ ],
+ ),
+ popup: (context) {
+ return SelectPopup(
+ items: SelectItemBuilder(
+ childCount: AudioSource.values.length,
+ builder: (context, index) {
+ final source = AudioSource.values[index];
+ return SelectItemButton(
+ value: source,
+ child: Row(
+ children: [
+ audioSourceToIconMap[source]!,
+ const SizedBox(width: 6),
+ Text(source.name.capitalize()),
+ ],
+ ),
+ );
+ },
+ ),
+ );
+ },
+ ),
+ const Gap(16),
+ Text(
+ audioSourceToDescription[preferences.audioSource]!,
+ textAlign: TextAlign.center,
+ ).small().muted(),
+ const Gap(24),
+ ButtonTile(
+ title: Text(context.l10n.endless_playback),
+ subtitle: Text(context.l10n.endless_playback_description)
+ .small()
+ .muted(),
+ onPressed: () {
+ preferencesNotifier
+ .setEndlessPlayback(!preferences.endlessPlayback);
+ },
+ trailing: Switch(
+ value: preferences.endlessPlayback,
+ onChanged: preferencesNotifier.setEndlessPlayback,
+ ),
+ ),
+ const Gap(40),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Button.secondary(
+ leading: const Icon(SpotubeIcons.angleLeft),
+ onPressed: onPrevious,
+ child: Text(context.l10n.previous),
+ ),
+ Directionality(
+ textDirection: TextDirection.rtl,
+ child: Button.primary(
+ leading: const Icon(
+ SpotubeIcons.angleRight,
+ color: Colors.white,
),
- );
- },
- ),
- );
- },
- ),
- const Gap(16),
- Text(
- audioSourceToDescription[preferences.audioSource]!,
- ).small().muted(),
- const Gap(16),
- ButtonTile(
- title: Text(context.l10n.endless_playback),
- subtitle: Text(
- context.l10n.endless_playback_description,
- ).small().muted(),
- onPressed: () {
- preferencesNotifier
- .setEndlessPlayback(!preferences.endlessPlayback);
- },
- trailing: Switch(
- value: preferences.endlessPlayback,
- onChanged: (value) {
- preferencesNotifier.setEndlessPlayback(value);
- },
- ),
- ),
- const Gap(34),
- Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Button.secondary(
- leading: const Icon(SpotubeIcons.angleLeft),
- onPressed: onPrevious,
- child: Text(context.l10n.previous),
- ),
- Directionality(
- textDirection: TextDirection.rtl,
- child: Button.primary(
- leading: const Icon(SpotubeIcons.angleRight),
- onPressed: onNext,
- child: Text(context.l10n.next),
- ),
+ onPressed: onNext,
+ child: Text(
+ context.l10n.next,
+ style: const TextStyle(color: Colors.white),
+ ),
+ ),
+ ),
+ ],
),
],
),
- ],
+ ),
),
),
);
diff --git a/lib/pages/getting_started/sections/region.dart b/lib/pages/getting_started/sections/region.dart
index f657f9d9..19128c94 100644
--- a/lib/pages/getting_started/sections/region.dart
+++ b/lib/pages/getting_started/sections/region.dart
@@ -4,13 +4,13 @@ import 'package:spotify/spotify.dart';
import 'package:spotube/collections/language_codes.dart';
import 'package:spotube/collections/spotify_markets.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/modules/getting_started/blur_card.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/l10n/l10n.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
class GettingStartedPageLanguageRegionSection extends HookConsumerWidget {
final void Function() onNext;
+
const GettingStartedPageLanguageRegionSection(
{super.key, required this.onNext});
@@ -36,11 +36,17 @@ class GettingStartedPageLanguageRegionSection extends HookConsumerWidget {
return SafeArea(
child: Center(
- child: BlurCard(
+ child: ConstrainedBox(
+ constraints: const BoxConstraints(
+ maxWidth: 600,
+ ),
child: Column(
mainAxisSize: MainAxisSize.min,
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.center,
children: [
Row(
+ mainAxisAlignment: MainAxisAlignment.center,
children: [
const Icon(
SpotubeIcons.language,
@@ -52,13 +58,13 @@ class GettingStartedPageLanguageRegionSection extends HookConsumerWidget {
),
const Gap(30),
Column(
- crossAxisAlignment: CrossAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
- Text(context.l10n.choose_your_region).semiBold(),
+ // Text(context.l10n.choose_your_region).semiBold(),
Text(
context.l10n.choose_your_region_description,
- ).small().muted(),
+ ).small().muted().center(),
const Gap(16),
Text(context.l10n.market_place_region).small(),
const Gap(8),
@@ -179,9 +185,15 @@ class GettingStartedPageLanguageRegionSection extends HookConsumerWidget {
Align(
alignment: Alignment.centerRight,
child: Button.primary(
- trailing: const Icon(SpotubeIcons.angleRight),
+ trailing: const Icon(
+ SpotubeIcons.angleRight,
+ color: Colors.white,
+ ),
onPressed: onNext,
- child: Text(context.l10n.next),
+ child: Text(
+ context.l10n.next,
+ style: const TextStyle(color: Colors.white),
+ ),
),
),
],
diff --git a/lib/pages/getting_started/sections/support.dart b/lib/pages/getting_started/sections/support.dart
index 9559d28d..93e26ffa 100644
--- a/lib/pages/getting_started/sections/support.dart
+++ b/lib/pages/getting_started/sections/support.dart
@@ -4,7 +4,6 @@ import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/env.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/modules/getting_started/blur_card.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/pages/mobile_login/hooks/login_callback.dart';
import 'package:spotube/services/kv_store/kv_store.dart';
@@ -17,136 +16,151 @@ class GettingStartedScreenSupportSection extends HookConsumerWidget {
Widget build(BuildContext context, ref) {
final onLogin = useLoginCallback(ref);
- return Center(
+ return SafeArea(
+ child: Center(
+ child: ConstrainedBox(
+ constraints: const BoxConstraints(maxWidth: 500),
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ _buildSupportContent(context),
+ const Gap(48),
+ _buildActionButtons(context, ref, onLogin),
+ ],
+ ),
+ ),
+ ),
+ );
+ }
+
+ Widget _buildSupportContent(BuildContext context) {
+ return Column(
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Row(
+ children: [
+ // const Icon(SpotubeIcons.heartFilled, color: Colors.pink),
+ // const SizedBox(width: 8),
+ Text(
+ context.l10n.help_project_grow,
+ style: const TextStyle(color: Colors.pink),
+ ).semiBold(),
+ ],
+ ),
+ const Gap(16),
+ Text(context.l10n.help_project_grow_description),
+ const Gap(16),
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.stretch,
+ children: [
+ _buildButton(
+ label: context.l10n.contribute_on_github,
+ icon: const Icon(
+ SpotubeIcons.github,
+ color: Colors.white,
+ ),
+ backgroundColor: Colors.blue,
+ url: "https://github.com/KRTirtho/spotube",
+ ),
+ if (!Env.hideDonations) ...[
+ const Gap(16),
+ _buildButton(
+ label: context.l10n.donate_on_open_collective,
+ icon: const Icon(SpotubeIcons.openCollective),
+ backgroundColor: Colors.blue,
+ url: "https://opencollective.com/spotube",
+ ),
+ ],
+ ],
+ ),
+ ],
+ );
+ }
+
+ Widget _buildActionButtons(
+ BuildContext context, WidgetRef ref, Future Function() onLogin) {
+ return ConstrainedBox(
+ constraints: const BoxConstraints(maxWidth: 250),
child: Column(
- mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
- BlurCard(
- child: Column(
- mainAxisSize: MainAxisSize.min,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Row(
- children: [
- const Icon(SpotubeIcons.heartFilled, color: Colors.pink),
- const SizedBox(width: 8),
- Text(
- context.l10n.help_project_grow,
- style: const TextStyle(color: Colors.pink),
- ).semiBold(),
- ],
- ),
- const Gap(16),
- Text(context.l10n.help_project_grow_description),
- const Gap(16),
- Column(
- mainAxisSize: MainAxisSize.min,
- crossAxisAlignment: CrossAxisAlignment.stretch,
- children: [
- Button(
- leading: const Icon(SpotubeIcons.github),
- style: ButtonVariance.primary.copyWith(
- decoration: (context, states, value) {
- if (states.isNotEmpty) {
- return ButtonVariance.primary
- .decoration(context, states);
- }
-
- return BoxDecoration(
- color: Colors.black,
- borderRadius: BorderRadius.circular(8),
- );
- }),
- onPressed: () async {
- await launchUrlString(
- "https://github.com/KRTirtho/spotube",
- mode: LaunchMode.externalApplication,
- );
- },
- child: Text(
- context.l10n.contribute_on_github,
- style: const TextStyle(color: Colors.white),
- ),
- ),
- if (!Env.hideDonations) ...[
- const Gap(16),
- Button(
- leading: const Icon(SpotubeIcons.openCollective),
- style: ButtonVariance.primary.copyWith(
- decoration: (context, states, value) {
- if (states.isNotEmpty) {
- return ButtonVariance.primary
- .decoration(context, states);
- }
-
- return BoxDecoration(
- color: const Color(0xff4cb7f6),
- borderRadius: BorderRadius.circular(8),
- );
- }),
- onPressed: () async {
- await launchUrlString(
- "https://opencollective.com/spotube",
- mode: LaunchMode.externalApplication,
- );
- },
- child: Text(
- context.l10n.donate_on_open_collective,
- style: const TextStyle(color: Colors.white),
- ),
- ),
- ]
- ],
- ),
- ],
+ SizedBox(
+ width: double.infinity,
+ child: Button.secondary(
+ leading: const Icon(SpotubeIcons.anonymous),
+ onPressed: () async {
+ await KVStoreService.setDoneGettingStarted(true);
+ if (context.mounted) {
+ context.navigateTo(const HomeRoute());
+ }
+ },
+ child: Text(context.l10n.browse_anonymously),
),
),
- const Gap(48),
- ConstrainedBox(
- constraints: const BoxConstraints(maxWidth: 250),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.stretch,
- children: [
- Button.secondary(
- leading: const Icon(SpotubeIcons.anonymous),
- onPressed: () async {
- await KVStoreService.setDoneGettingStarted(true);
- if (context.mounted) {
- context.navigateTo(const HomeRoute());
- }
- },
- child: Text(context.l10n.browse_anonymously),
- ),
- const Gap(16),
- Button.primary(
- leading: const Icon(SpotubeIcons.spotify),
- style: ButtonVariance.primary.copyWith(
- decoration: (context, states, value) {
- if (states.isNotEmpty) {
- return ButtonVariance.primary
- .decoration(context, states);
- }
-
- return BoxDecoration(
- color: const Color(0xff1db954),
- borderRadius: BorderRadius.circular(8),
- );
- },
- ),
- onPressed: () async {
- await KVStoreService.setDoneGettingStarted(true);
- await onLogin();
- },
- child: Text(
- context.l10n.connect_with_spotify,
- style: const TextStyle(color: Colors.white),
- ),
- ),
- ],
+ const Gap(16),
+ SizedBox(
+ width: double.infinity,
+ child: Button.primary(
+ leading: const Icon(SpotubeIcons.spotify, color: Colors.white,),
+ style: ButtonVariance.primary.copyWith(
+ decoration: (context, states, value) {
+ return states.isNotEmpty
+ ? ButtonVariance.primary.decoration(context, states)
+ : BoxDecoration(
+ color: const Color(0xff1db954),
+ borderRadius: BorderRadius.circular(8),
+ );
+ },
+ ),
+ onPressed: () async {
+ await KVStoreService.setDoneGettingStarted(true);
+ await onLogin();
+ },
+ child: Text(
+ context.l10n.connect_with_spotify,
+ style: const TextStyle(color: Colors.white),
+ ),
),
),
],
),
);
}
+
+ Widget _buildButton({
+ required String label,
+ required Icon icon,
+ required Color backgroundColor,
+ required String url,
+ }) {
+ return SizedBox(
+ width: double.infinity,
+ child: ConstrainedBox(
+ constraints: const BoxConstraints(minHeight: 48),
+ child: Button(
+ leading: icon,
+ style: ButtonVariance.primary.copyWith(
+ decoration: (context, states, value) {
+ return states.isNotEmpty
+ ? ButtonVariance.primary.decoration(context, states)
+ : BoxDecoration(
+ color: backgroundColor,
+ borderRadius: BorderRadius.circular(8),
+ );
+ },
+ ),
+ onPressed: () async {
+ await launchUrlString(url, mode: LaunchMode.externalApplication);
+ },
+ child: Text(
+ label,
+ style: const TextStyle(color: Colors.white),
+ ),
+ ),
+ ),
+ );
+ }
}
diff --git a/lib/pages/home/feed/feed_section.dart b/lib/pages/home/feed/feed_section.dart
index 2b38d0ed..87457267 100644
--- a/lib/pages/home/feed/feed_section.dart
+++ b/lib/pages/home/feed/feed_section.dart
@@ -5,10 +5,10 @@ import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/collections/fake.dart';
import 'package:spotube/components/playbutton_view/playbutton_view.dart';
+import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/modules/album/album_card.dart';
import 'package:spotube/modules/artist/artist_card.dart';
import 'package:spotube/modules/playlist/playlist_card.dart';
-import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/provider/spotify/views/home_section.dart';
@RoutePage()
diff --git a/lib/pages/home/genres/genre_playlists.dart b/lib/pages/home/genres/genre_playlists.dart
index ea421cb4..62ef3bce 100644
--- a/lib/pages/home/genres/genre_playlists.dart
+++ b/lib/pages/home/genres/genre_playlists.dart
@@ -1,22 +1,20 @@
+import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart' show CollapseMode, FlexibleSpaceBar;
import 'package:flutter_hooks/flutter_hooks.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
-
import 'package:spotify/spotify.dart' hide Offset;
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/components/button/back_button.dart';
-import 'package:spotube/components/playbutton_view/playbutton_view.dart';
-import 'package:spotube/hooks/utils/use_custom_status_bar_color.dart';
-import 'package:spotube/modules/playlist/playlist_card.dart';
import 'package:spotube/components/image/universal_image.dart';
+import 'package:spotube/components/playbutton_view/playbutton_view.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/extensions/constrains.dart';
+import 'package:spotube/hooks/utils/use_custom_status_bar_color.dart';
+import 'package:spotube/modules/playlist/playlist_card.dart';
import 'package:spotube/provider/spotify/spotify.dart';
import 'package:spotube/utils/platform.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class GenrePlaylistsPage extends HookConsumerWidget {
diff --git a/lib/pages/home/genres/genres.dart b/lib/pages/home/genres/genres.dart
index 38d110db..bbc6466a 100644
--- a/lib/pages/home/genres/genres.dart
+++ b/lib/pages/home/genres/genres.dart
@@ -1,9 +1,8 @@
import 'dart:math';
+import 'package:auto_route/auto_route.dart';
import 'package:auto_size_text/auto_size_text.dart';
-
import 'package:flutter_hooks/flutter_hooks.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
@@ -13,7 +12,6 @@ import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/provider/spotify/spotify.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class GenrePage extends HookConsumerWidget {
diff --git a/lib/pages/home/home.dart b/lib/pages/home/home.dart
index 9ca71c04..121fc9fb 100644
--- a/lib/pages/home/home.dart
+++ b/lib/pages/home/home.dart
@@ -1,12 +1,13 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart';
+import 'package:spotube/components/titlebar/titlebar.dart';
+import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/models/database/database.dart';
import 'package:spotube/modules/connect/connect_device.dart';
import 'package:spotube/modules/home/sections/featured.dart';
@@ -16,8 +17,6 @@ import 'package:spotube/modules/home/sections/genres/genres.dart';
import 'package:spotube/modules/home/sections/made_for_user.dart';
import 'package:spotube/modules/home/sections/new_releases.dart';
import 'package:spotube/modules/home/sections/recent.dart';
-import 'package:spotube/components/titlebar/titlebar.dart';
-import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
import 'package:spotube/utils/platform.dart';
@@ -45,7 +44,7 @@ class HomePage extends HookConsumerWidget {
if (mediaQuery.smAndDown || layoutMode == LayoutMode.compact)
SliverAppBar(
floating: true,
- title: Assets.spotubeLogoPng.image(height: 45),
+ title: Assets.spotubeLogoStableNotWallpaper.image(height: 45),
backgroundColor: context.theme.colorScheme.background,
foregroundColor: context.theme.colorScheme.foreground,
actions: [
diff --git a/lib/pages/lastfm_login/lastfm_login.dart b/lib/pages/lastfm_login/lastfm_login.dart
index ca0f5693..67aa1acc 100644
--- a/lib/pages/lastfm_login/lastfm_login.dart
+++ b/lib/pages/lastfm_login/lastfm_login.dart
@@ -1,5 +1,5 @@
+import 'package:auto_route/auto_route.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/spotube_icons.dart';
@@ -8,7 +8,6 @@ import 'package:spotube/components/dialogs/prompt_dialog.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/provider/scrobbler/scrobbler.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class LastFMLoginPage extends HookConsumerWidget {
diff --git a/lib/pages/library/playlist_generate/playlist_generate.dart b/lib/pages/library/playlist_generate/playlist_generate.dart
index f1eca306..d6bc4657 100644
--- a/lib/pages/library/playlist_generate/playlist_generate.dart
+++ b/lib/pages/library/playlist_generate/playlist_generate.dart
@@ -1,7 +1,6 @@
+import 'package:auto_route/auto_route.dart';
import 'package:collection/collection.dart';
-
import 'package:flutter_hooks/flutter_hooks.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotify/spotify.dart';
@@ -9,21 +8,19 @@ import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotify_markets.dart';
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/button/back_button.dart';
-import 'package:spotube/components/ui/button_tile.dart';
-
-import 'package:spotube/modules/library/playlist_generate/recommendation_attribute_dials.dart';
-import 'package:spotube/modules/library/playlist_generate/recommendation_attribute_fields.dart';
-import 'package:spotube/modules/library/playlist_generate/seeds_multi_autocomplete.dart';
-import 'package:spotube/modules/library/playlist_generate/simple_track_tile.dart';
import 'package:spotube/components/image/universal_image.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
+import 'package:spotube/components/ui/button_tile.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/image.dart';
import 'package:spotube/models/spotify/recommendation_seeds.dart';
+import 'package:spotube/modules/library/playlist_generate/recommendation_attribute_dials.dart';
+import 'package:spotube/modules/library/playlist_generate/recommendation_attribute_fields.dart';
+import 'package:spotube/modules/library/playlist_generate/seeds_multi_autocomplete.dart';
+import 'package:spotube/modules/library/playlist_generate/simple_track_tile.dart';
import 'package:spotube/provider/spotify/spotify.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
-import 'package:auto_route/auto_route.dart';
const RecommendationAttribute zeroValues = (min: 0, target: 0, max: 0);
@@ -394,40 +391,40 @@ class PlaylistGeneratorPage extends HookConsumerWidget {
],
const SizedBox(height: 16),
RecommendationAttributeDials(
- title: Text(context.l10n.acousticness),
+ title: Text(context.l10n.not_acoustic),
values: (
- target: target.value.acousticness?.toDouble() ?? 0,
- min: min.value.acousticness?.toDouble() ?? 0,
- max: max.value.acousticness?.toDouble() ?? 0,
+ target: target.value.not_acoustic?.toDouble() ?? 0,
+ min: min.value.not_acoustic?.toDouble() ?? 0,
+ max: max.value.not_acoustic?.toDouble() ?? 0,
),
onChanged: (value) {
target.value = target.value.copyWith(
- acousticness: value.target,
+ not_acoustic: value.target,
);
min.value = min.value.copyWith(
- acousticness: value.min,
+ not_acoustic: value.min,
);
max.value = max.value.copyWith(
- acousticness: value.max,
+ not_acoustic: value.max,
);
},
),
RecommendationAttributeDials(
- title: Text(context.l10n.danceability),
+ title: Text(context.l10n.dance_ability),
values: (
- target: target.value.danceability?.toDouble() ?? 0,
- min: min.value.danceability?.toDouble() ?? 0,
- max: max.value.danceability?.toDouble() ?? 0,
+ target: target.value.dance_ability?.toDouble() ?? 0,
+ min: min.value.dance_ability?.toDouble() ?? 0,
+ max: max.value.dance_ability?.toDouble() ?? 0,
),
onChanged: (value) {
target.value = target.value.copyWith(
- danceability: value.target,
+ dance_ability: value.target,
);
min.value = min.value.copyWith(
- danceability: value.min,
+ dance_ability: value.min,
);
max.value = max.value.copyWith(
- danceability: value.max,
+ dance_ability: value.max,
);
},
),
@@ -451,22 +448,22 @@ class PlaylistGeneratorPage extends HookConsumerWidget {
},
),
RecommendationAttributeDials(
- title: Text(context.l10n.instrumentalness),
+ title: Text(context.l10n.not_instrumental),
values: (
target:
- target.value.instrumentalness?.toDouble() ?? 0,
- min: min.value.instrumentalness?.toDouble() ?? 0,
- max: max.value.instrumentalness?.toDouble() ?? 0,
+ target.value.not_instrumental?.toDouble() ?? 0,
+ min: min.value.not_instrumental?.toDouble() ?? 0,
+ max: max.value.not_instrumental?.toDouble() ?? 0,
),
onChanged: (value) {
target.value = target.value.copyWith(
- instrumentalness: value.target,
+ not_instrumental: value.target,
);
min.value = min.value.copyWith(
- instrumentalness: value.min,
+ not_instrumental: value.min,
);
max.value = max.value.copyWith(
- instrumentalness: value.max,
+ not_instrumental: value.max,
);
},
),
@@ -509,21 +506,21 @@ class PlaylistGeneratorPage extends HookConsumerWidget {
},
),
RecommendationAttributeDials(
- title: Text(context.l10n.speechiness),
+ title: Text(context.l10n.talkative),
values: (
- target: target.value.speechiness?.toDouble() ?? 0,
- min: min.value.speechiness?.toDouble() ?? 0,
- max: max.value.speechiness?.toDouble() ?? 0,
+ target: target.value.talkative?.toDouble() ?? 0,
+ min: min.value.talkative?.toDouble() ?? 0,
+ max: max.value.talkative?.toDouble() ?? 0,
),
onChanged: (value) {
target.value = target.value.copyWith(
- speechiness: value.target,
+ talkative: value.target,
);
min.value = min.value.copyWith(
- speechiness: value.min,
+ talkative: value.min,
);
max.value = max.value.copyWith(
- speechiness: value.max,
+ talkative: value.max,
);
},
),
diff --git a/lib/pages/library/playlist_generate/playlist_generate_result.dart b/lib/pages/library/playlist_generate/playlist_generate_result.dart
index 9e6f2987..968d1a13 100644
--- a/lib/pages/library/playlist_generate/playlist_generate_result.dart
+++ b/lib/pages/library/playlist_generate/playlist_generate_result.dart
@@ -1,18 +1,17 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/button/back_button.dart';
-import 'package:spotube/modules/library/playlist_generate/simple_track_tile.dart';
-import 'package:spotube/modules/playlist/playlist_create_dialog.dart';
import 'package:spotube/components/dialogs/playlist_add_track_dialog.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/models/spotify/recommendation_seeds.dart';
+import 'package:spotube/modules/library/playlist_generate/simple_track_tile.dart';
+import 'package:spotube/modules/playlist/playlist_create_dialog.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/spotify/spotify.dart';
diff --git a/lib/pages/library/user_albums.dart b/lib/pages/library/user_albums.dart
index 60ba7319..d7779bfa 100644
--- a/lib/pages/library/user_albums.dart
+++ b/lib/pages/library/user_albums.dart
@@ -1,22 +1,20 @@
-import 'package:flutter/material.dart' as material;
-import 'package:flutter_undraw/flutter_undraw.dart';
-import 'package:shadcn_flutter/shadcn_flutter.dart' hide Image;
-import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:auto_route/auto_route.dart';
import 'package:collection/collection.dart';
+import 'package:flutter/material.dart' as material;
+import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:flutter_undraw/flutter_undraw.dart';
import 'package:fuzzywuzzy/fuzzywuzzy.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart' hide Image;
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
-
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/components/playbutton_view/playbutton_view.dart';
-import 'package:spotube/modules/album/album_card.dart';
-import 'package:spotube/components/inter_scrollbar/inter_scrollbar.dart';
import 'package:spotube/components/fallbacks/anonymous_fallback.dart';
+import 'package:spotube/components/inter_scrollbar/inter_scrollbar.dart';
+import 'package:spotube/components/playbutton_view/playbutton_view.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/modules/album/album_card.dart';
import 'package:spotube/provider/authentication/authentication.dart';
import 'package:spotube/provider/spotify/spotify.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class UserAlbumsPage extends HookConsumerWidget {
diff --git a/lib/pages/library/user_artists.dart b/lib/pages/library/user_artists.dart
index 5f304f5e..abcfb261 100644
--- a/lib/pages/library/user_artists.dart
+++ b/lib/pages/library/user_artists.dart
@@ -1,25 +1,23 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:collection/collection.dart';
import 'package:flutter/material.dart' as material;
import 'package:flutter_hooks/flutter_hooks.dart';
-import 'package:collection/collection.dart';
import 'package:flutter_undraw/flutter_undraw.dart';
import 'package:fuzzywuzzy/fuzzywuzzy.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/collections/fake.dart';
-
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/fallbacks/anonymous_fallback.dart';
-import 'package:spotube/modules/artist/artist_card.dart';
import 'package:spotube/components/inter_scrollbar/inter_scrollbar.dart';
import 'package:spotube/components/waypoint.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/modules/artist/artist_card.dart';
import 'package:spotube/provider/authentication/authentication.dart';
import 'package:spotube/provider/spotify/spotify.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class UserArtistsPage extends HookConsumerWidget {
diff --git a/lib/pages/library/user_downloads.dart b/lib/pages/library/user_downloads.dart
index 1d8f560a..1def9273 100644
--- a/lib/pages/library/user_downloads.dart
+++ b/lib/pages/library/user_downloads.dart
@@ -1,11 +1,10 @@
+import 'package:auto_route/auto_route.dart';
import 'package:auto_size_text/auto_size_text.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
-
-import 'package:spotube/modules/library/user_downloads/download_item.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/modules/library/user_downloads/download_item.dart';
import 'package:spotube/provider/download_manager_provider.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class UserDownloadsPage extends HookConsumerWidget {
diff --git a/lib/pages/library/user_local_tracks/local_folder.dart b/lib/pages/library/user_local_tracks/local_folder.dart
index a6f3ad51..42e66965 100644
--- a/lib/pages/library/user_local_tracks/local_folder.dart
+++ b/lib/pages/library/user_local_tracks/local_folder.dart
@@ -1,9 +1,10 @@
import 'dart:io';
import 'dart:math';
-import 'package:flutter/material.dart' as material;
+import 'package:auto_route/auto_route.dart';
import 'package:collection/collection.dart';
import 'package:file_picker/file_picker.dart';
+import 'package:flutter/material.dart' as material;
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_undraw/flutter_undraw.dart';
import 'package:fuzzywuzzy/fuzzywuzzy.dart';
@@ -14,24 +15,23 @@ import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/collections/fake.dart';
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/button/back_button.dart';
-import 'package:spotube/extensions/constrains.dart';
-import 'package:spotube/extensions/string.dart';
-import 'package:spotube/hooks/controllers/use_shadcn_text_editing_controller.dart';
-import 'package:spotube/modules/library/local_folder/cache_export_dialog.dart';
-import 'package:spotube/pages/library/user_local_tracks/user_local_tracks.dart';
import 'package:spotube/components/expandable_search/expandable_search.dart';
import 'package:spotube/components/inter_scrollbar/inter_scrollbar.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/components/track_presentation/sort_tracks_dropdown.dart';
import 'package:spotube/components/track_tile/track_tile.dart';
import 'package:spotube/extensions/artist_simple.dart';
+import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/extensions/string.dart';
+import 'package:spotube/hooks/controllers/use_shadcn_text_editing_controller.dart';
import 'package:spotube/models/local_track.dart';
-import 'package:spotube/provider/local_tracks/local_tracks_provider.dart';
+import 'package:spotube/modules/library/local_folder/cache_export_dialog.dart';
+import 'package:spotube/pages/library/user_local_tracks/user_local_tracks.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
+import 'package:spotube/provider/local_tracks/local_tracks_provider.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
import 'package:spotube/utils/service_utils.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class LocalLibraryPage extends HookConsumerWidget {
diff --git a/lib/pages/library/user_local_tracks/user_local_tracks.dart b/lib/pages/library/user_local_tracks/user_local_tracks.dart
index 67e02b0b..89338487 100644
--- a/lib/pages/library/user_local_tracks/user_local_tracks.dart
+++ b/lib/pages/library/user_local_tracks/user_local_tracks.dart
@@ -4,11 +4,10 @@ import 'package:file_selector/file_selector.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
-
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/modules/library/local_folder/local_folder_item.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/modules/library/local_folder/local_folder_item.dart';
import 'package:spotube/provider/local_tracks/local_tracks_provider.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
import 'package:spotube/utils/platform.dart';
@@ -49,10 +48,9 @@ class UserLocalLibraryPage extends HookConsumerWidget {
String? dirStr = await getDirectoryPath(
initialDirectory: preferences.downloadLocation,
);
- if (dirStr == null) return;
if (preferences.localLibraryLocation.contains(dirStr)) return;
preferencesNotifier.setLocalLibraryLocation(
- [...preferences.localLibraryLocation, dirStr]);
+ [...preferences.localLibraryLocation, dirStr!]);
}
}, [preferences.localLibraryLocation]);
diff --git a/lib/pages/library/user_playlists.dart b/lib/pages/library/user_playlists.dart
index 8249726d..d40f0b11 100644
--- a/lib/pages/library/user_playlists.dart
+++ b/lib/pages/library/user_playlists.dart
@@ -1,23 +1,22 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:collection/collection.dart';
import 'package:flutter/material.dart' as material;
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:fuzzywuzzy/fuzzywuzzy.dart';
-import 'package:collection/collection.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart' hide Image;
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
-
import 'package:spotify/spotify.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/components/playbutton_view/playbutton_view.dart';
-import 'package:spotube/modules/playlist/playlist_create_dialog.dart';
-import 'package:spotube/components/inter_scrollbar/inter_scrollbar.dart';
import 'package:spotube/components/fallbacks/anonymous_fallback.dart';
-import 'package:spotube/modules/playlist/playlist_card.dart';
+import 'package:spotube/components/inter_scrollbar/inter_scrollbar.dart';
+import 'package:spotube/components/playbutton_view/playbutton_view.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/modules/playlist/playlist_card.dart';
+import 'package:spotube/modules/playlist/playlist_create_dialog.dart';
import 'package:spotube/provider/authentication/authentication.dart';
import 'package:spotube/provider/spotify/spotify.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class UserPlaylistsPage extends HookConsumerWidget {
diff --git a/lib/pages/lyrics/lyrics.dart b/lib/pages/lyrics/lyrics.dart
index d3e77bf0..814bf58c 100644
--- a/lib/pages/lyrics/lyrics.dart
+++ b/lib/pages/lyrics/lyrics.dart
@@ -1,19 +1,18 @@
+import 'package:auto_route/auto_route.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:shadcn_flutter/shadcn_flutter.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart' hide Consumer;
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
-
-import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/components/image/universal_image.dart';
+import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/image.dart';
import 'package:spotube/hooks/utils/use_palette_color.dart';
import 'package:spotube/pages/lyrics/plain_lyrics.dart';
import 'package:spotube/pages/lyrics/synced_lyrics.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
-import 'package:spotube/utils/platform.dart';
import 'package:spotube/provider/spotify/spotify.dart';
-import 'package:auto_route/auto_route.dart';
+import 'package:spotube/utils/platform.dart';
@RoutePage()
class LyricsPage extends HookConsumerWidget {
diff --git a/lib/pages/lyrics/mini_lyrics.dart b/lib/pages/lyrics/mini_lyrics.dart
index 3e50987d..4c6a7c07 100644
--- a/lib/pages/lyrics/mini_lyrics.dart
+++ b/lib/pages/lyrics/mini_lyrics.dart
@@ -1,27 +1,27 @@
+import 'package:auto_route/auto_route.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:palette_generator/palette_generator.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/modules/player/player_controls.dart';
-import 'package:spotube/modules/player/player_queue.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/hooks/utils/use_force_update.dart';
+import 'package:spotube/modules/player/player_controls.dart';
+import 'package:spotube/modules/player/player_queue.dart';
import 'package:spotube/pages/lyrics/plain_lyrics.dart';
import 'package:spotube/pages/lyrics/synced_lyrics.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/utils/platform.dart';
import 'package:window_manager/window_manager.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class MiniLyricsPage extends HookConsumerWidget {
static const name = "mini_lyrics";
final Size prevSize;
+
const MiniLyricsPage({super.key, required this.prevSize});
@override
@@ -268,7 +268,7 @@ class MiniLyricsPage extends HookConsumerWidget {
const Duration(milliseconds: 200));
} finally {
if (context.mounted) {
- context.navigateTo(LyricsRoute());
+ context.navigateTo(const LyricsRoute());
}
}
},
diff --git a/lib/pages/lyrics/plain_lyrics.dart b/lib/pages/lyrics/plain_lyrics.dart
index 0b5354a0..9ffaa99a 100644
--- a/lib/pages/lyrics/plain_lyrics.dart
+++ b/lib/pages/lyrics/plain_lyrics.dart
@@ -5,12 +5,11 @@ import 'package:palette_generator/palette_generator.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/modules/lyrics/zoom_controls.dart';
import 'package:spotube/components/shimmers/shimmer_lyrics.dart';
import 'package:spotube/extensions/artist_simple.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
-
+import 'package:spotube/modules/lyrics/zoom_controls.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/spotify/spotify.dart';
diff --git a/lib/pages/lyrics/synced_lyrics.dart b/lib/pages/lyrics/synced_lyrics.dart
index b7423e14..96e70c90 100644
--- a/lib/pages/lyrics/synced_lyrics.dart
+++ b/lib/pages/lyrics/synced_lyrics.dart
@@ -3,21 +3,20 @@ import 'dart:async';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:palette_generator/palette_generator.dart';
+import 'package:scroll_to_index/scroll_to_index.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/modules/lyrics/zoom_controls.dart';
import 'package:spotube/components/shimmers/shimmer_lyrics.dart';
import 'package:spotube/extensions/artist_simple.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/hooks/controllers/use_auto_scroll_controller.dart';
import 'package:spotube/modules/lyrics/use_synced_lyrics.dart';
-import 'package:scroll_to_index/scroll_to_index.dart';
+import 'package:spotube/modules/lyrics/zoom_controls.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/spotify/spotify.dart';
import 'package:spotube/services/audio_player/audio_player.dart';
import 'package:spotube/services/logger/logger.dart';
-
import 'package:stroke_text/stroke_text.dart';
class SyncedLyrics extends HookConsumerWidget {
diff --git a/lib/pages/mobile_login/hooks/login_callback.dart b/lib/pages/mobile_login/hooks/login_callback.dart
index 986b7f4a..4e5b9b3c 100644
--- a/lib/pages/mobile_login/hooks/login_callback.dart
+++ b/lib/pages/mobile_login/hooks/login_callback.dart
@@ -2,13 +2,12 @@ import 'dart:io';
import 'package:auto_route/auto_route.dart';
import 'package:desktop_webview_window/desktop_webview_window.dart';
-import 'package:shadcn_flutter/shadcn_flutter.dart' hide join;
import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart' hide join;
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/pages/mobile_login/no_webview_runtime_dialog.dart';
import 'package:spotube/provider/authentication/authentication.dart';
diff --git a/lib/pages/mobile_login/mobile_login.dart b/lib/pages/mobile_login/mobile_login.dart
index eb50316f..bad2f099 100644
--- a/lib/pages/mobile_login/mobile_login.dart
+++ b/lib/pages/mobile_login/mobile_login.dart
@@ -1,14 +1,12 @@
-import 'package:shadcn_flutter/shadcn_flutter.dart';
+import 'package:auto_route/auto_route.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/components/button/back_button.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
-
import 'package:spotube/provider/authentication/authentication.dart';
import 'package:spotube/utils/platform.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class WebViewLoginPage extends HookConsumerWidget {
diff --git a/lib/pages/playlist/liked_playlist.dart b/lib/pages/playlist/liked_playlist.dart
index 5f7591ab..eaf73579 100644
--- a/lib/pages/playlist/liked_playlist.dart
+++ b/lib/pages/playlist/liked_playlist.dart
@@ -1,3 +1,4 @@
+import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart' as material;
import 'package:flutter/widgets.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
@@ -6,7 +7,6 @@ import 'package:spotube/components/track_presentation/presentation_props.dart';
import 'package:spotube/components/track_presentation/track_presentation.dart';
import 'package:spotube/pages/playlist/playlist.dart';
import 'package:spotube/provider/spotify/spotify.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class LikedPlaylistPage extends HookConsumerWidget {
diff --git a/lib/pages/playlist/playlist.dart b/lib/pages/playlist/playlist.dart
index 62ced353..fdb97a54 100644
--- a/lib/pages/playlist/playlist.dart
+++ b/lib/pages/playlist/playlist.dart
@@ -1,5 +1,6 @@
-import 'package:flutter/material.dart' as material;
+import 'package:auto_route/auto_route.dart';
import 'package:collection/collection.dart';
+import 'package:flutter/material.dart' as material;
import 'package:flutter/material.dart' hide Page;
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotify/spotify.dart';
@@ -10,7 +11,6 @@ import 'package:spotube/components/track_presentation/use_is_user_playlist.dart'
import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/image.dart';
import 'package:spotube/provider/spotify/spotify.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class PlaylistPage extends HookConsumerWidget {
diff --git a/lib/pages/profile/profile.dart b/lib/pages/profile/profile.dart
index b6c4a2cd..1759510d 100644
--- a/lib/pages/profile/profile.dart
+++ b/lib/pages/profile/profile.dart
@@ -1,3 +1,4 @@
+import 'package:auto_route/auto_route.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
@@ -12,7 +13,6 @@ import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/image.dart';
import 'package:spotube/provider/spotify/spotify.dart';
import 'package:url_launcher/url_launcher_string.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class ProfilePage extends HookConsumerWidget {
@@ -30,7 +30,7 @@ class ProfilePage extends HookConsumerWidget {
context.l10n.email: meData.email ?? "N/A",
context.l10n.profile_followers:
meData.followers?.total.toString() ?? "N/A",
- context.l10n.birthday: meData.birthdate ?? context.l10n.not_born,
+ context.l10n.birthday: meData.birthdate ?? "N/A",
context.l10n.country: spotifyMarkets
.firstWhere((market) => market.$1 == meData.country)
.$2,
diff --git a/lib/pages/root/root_app.dart b/lib/pages/root/root_app.dart
index 65b97d4f..d4bc0e24 100644
--- a/lib/pages/root/root_app.dart
+++ b/lib/pages/root/root_app.dart
@@ -4,10 +4,10 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/hooks/configurators/use_check_yt_dlp_installed.dart';
+import 'package:spotube/hooks/configurators/use_endless_playback.dart';
import 'package:spotube/modules/root/bottom_player.dart';
import 'package:spotube/modules/root/sidebar/sidebar.dart';
import 'package:spotube/modules/root/spotube_navigation_bar.dart';
-import 'package:spotube/hooks/configurators/use_endless_playback.dart';
import 'package:spotube/modules/root/use_downloader_dialogs.dart';
import 'package:spotube/modules/root/use_global_subscriptions.dart';
import 'package:spotube/provider/glance/glance.dart';
diff --git a/lib/pages/search/search.dart b/lib/pages/search/search.dart
index 3826a0b6..7f2552d2 100644
--- a/lib/pages/search/search.dart
+++ b/lib/pages/search/search.dart
@@ -1,16 +1,15 @@
+import 'package:auto_route/auto_route.dart';
import 'package:flutter/services.dart';
-import 'package:flutter_undraw/flutter_undraw.dart';
-import 'package:shadcn_flutter/shadcn_flutter.dart';
-
-import 'package:spotify/spotify.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:flutter_undraw/flutter_undraw.dart';
import 'package:fuzzywuzzy/fuzzywuzzy.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
+import 'package:spotify/spotify.dart';
import 'package:spotube/collections/routes.gr.dart';
-
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/components/inter_scrollbar/inter_scrollbar.dart';
import 'package:spotube/components/fallbacks/anonymous_fallback.dart';
+import 'package:spotube/components/inter_scrollbar/inter_scrollbar.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
@@ -21,8 +20,11 @@ import 'package:spotube/pages/search/sections/playlists.dart';
import 'package:spotube/pages/search/sections/tracks.dart';
import 'package:spotube/provider/authentication/authentication.dart';
import 'package:spotube/provider/spotify/spotify.dart';
-import 'package:spotube/services/kv_store/kv_store.dart';
-import 'package:auto_route/auto_route.dart';
+import 'package:flutter/material.dart' show AnimatedCrossFade, AnimatedSwitcher, BoxConstraints, BuildContext, Column, Container, CrossAxisAlignment, CrossFadeState, EdgeInsets, Expanded, FontWeight, Icon, Icons, KeyboardListener, ListTile, ListenableBuilder, MainAxisAlignment, MediaQuery, Padding, PopScope, SafeArea, SingleChildScrollView, SizedBox, Text, TextInputAction, TextStyle, Widget;
+
+final recentSearchesProvider = StateProvider>((ref) {
+ return [];
+});
@RoutePage()
class SearchPage extends HookConsumerWidget {
@@ -48,14 +50,12 @@ class SearchPage extends HookConsumerWidget {
final searchArtist = ref.watch(searchProvider(SearchType.artist));
final queries = [searchTrack, searchAlbum, searchPlaylist, searchArtist];
-
final isFetching = queries.every((s) => s.isLoading);
useEffect(() {
controller.text = searchTerm;
-
return null;
- }, []);
+ }, [searchTerm]);
void onSubmitted(String value) {
ref.read(searchTermStateProvider.notifier).state = value;
@@ -63,11 +63,16 @@ class SearchPage extends HookConsumerWidget {
return;
}
KVStoreService.setRecentSearches(
- {
- value,
- ...KVStoreService.recentSearches,
- }.toList(),
+ [...{value, ...KVStoreService.recentSearches}].toList(),
);
+ controller.clear();
+ }
+
+ void removeRecentSearch(String search) {
+ final updatedSearches = List.from(ref.read(recentSearchesProvider));
+ updatedSearches.remove(search);
+ KVStoreService.setRecentSearches(updatedSearches);
+ ref.read(recentSearchesProvider.notifier).state = updatedSearches;
}
return PopScope(
@@ -78,160 +83,198 @@ class SearchPage extends HookConsumerWidget {
child: SafeArea(
bottom: false,
child: Scaffold(
- headers: [
- if (kTitlebarVisible)
- const TitleBar(automaticallyImplyLeading: false, height: 30)
- ],
child: auth.asData?.value == null
? const AnonymousFallback()
: Column(
- children: [
- Row(
- crossAxisAlignment: CrossAxisAlignment.center,
- children: [
- Expanded(
- child: Padding(
- padding: const EdgeInsets.all(20),
- child: ListenableBuilder(
- listenable: controller,
- builder: (context, _) {
- final suggestions = controller.text.isEmpty
- ? KVStoreService.recentSearches
- : KVStoreService.recentSearches
- .where(
- (s) =>
- weightedRatio(
- s.toLowerCase(),
- controller.text.toLowerCase(),
- ) >
- 50,
- )
- .toList();
+ children: [
+ Padding(
+ padding: const EdgeInsets.all(20),
+ child: ListenableBuilder(
+ listenable: controller,
+ builder: (context, _) {
+ final suggestions = controller.text.isEmpty
+ ? ref.watch(recentSearchesProvider)
+ : ref.watch(recentSearchesProvider)
+ .where(
+ (s) =>
+ weightedRatio(
+ s.toLowerCase(),
+ controller.text.toLowerCase(),
+ ) > 50,
+ )
+ .toList();
- return KeyboardListener(
- focusNode: focusNode,
- autofocus: true,
- onKeyEvent: (value) {
- final isEnter = value.logicalKey ==
- LogicalKeyboardKey.enter;
+ return KeyboardListener(
+ focusNode: focusNode,
+ autofocus: true,
+ onKeyEvent: (value) {
+ final isEnter =
+ value.logicalKey == LogicalKeyboardKey.enter;
- if (isEnter) {
- onSubmitted(controller.text);
- focusNode.unfocus();
- }
- },
- child: AutoComplete(
- suggestions: suggestions,
- child: TextField(
- autofocus: true,
- controller: controller,
- leading:
- const Icon(SpotubeIcons.search),
- textInputAction: TextInputAction.search,
- placeholder: Text(context.l10n.search),
- trailing: AnimatedCrossFade(
- duration:
- const Duration(milliseconds: 300),
- crossFadeState:
- controller.text.isNotEmpty
- ? CrossFadeState.showFirst
- : CrossFadeState.showSecond,
- firstChild: IconButton.ghost(
- size: ButtonSize.small,
- icon:
- const Icon(SpotubeIcons.close),
- onPressed: () {
- controller.clear();
- },
- ),
- secondChild: const SizedBox.square(
- dimension: 28),
- ),
- onSubmitted: onSubmitted,
- ),
- ),
- );
- }),
- ),
- ),
- ],
- ),
- Expanded(
- child: AnimatedSwitcher(
- duration: const Duration(milliseconds: 300),
- child: switch ((searchTerm.isEmpty, isFetching)) {
- (true, false) => Column(
- children: [
- SizedBox(
- height: mediaQuery.height * 0.2,
- ),
- Undraw(
- illustration: UndrawIllustration.explore,
- color: theme.colorScheme.primary,
- height: 200 * theme.scaling,
- ),
- const SizedBox(height: 20),
- Text(context.l10n.search_to_get_results)
- .large(),
- ],
+ if (isEnter) {
+ onSubmitted(controller.text);
+ focusNode.unfocus();
+ }
+ },
+ child: AutoComplete(
+ suggestions: suggestions,
+ child: TextField(
+ autofocus: true,
+ controller: controller,
+ leading: const Icon(SpotubeIcons.search),
+ trailing: AnimatedCrossFade(
+ duration: const Duration(milliseconds: 300),
+ crossFadeState: controller.text.isNotEmpty
+ ? CrossFadeState.showFirst
+ : CrossFadeState.showSecond,
+ firstChild: IconButton.ghost(
+ size: ButtonSize.small,
+ icon: const Icon(SpotubeIcons.close),
+ onPressed: () {
+ controller.clear();
+ },
),
- (false, true) => Container(
- constraints: BoxConstraints(
- maxWidth: mediaQuery.lgAndUp
- ? mediaQuery.width * 0.5
- : mediaQuery.width,
- ),
- padding: const EdgeInsets.symmetric(
- horizontal: 20,
+ secondChild: const SizedBox.square(dimension: 28),
+ ),
+ textInputAction: TextInputAction.search,
+ placeholder: Text(context.l10n.search),
+ onSubmitted: onSubmitted,
+ ),
+ ),
+ );
+ },
+ ),
+ ),
+
+ if (controller.text.isEmpty)
+ Padding(
+ padding: const EdgeInsets.symmetric(horizontal: 20),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ const SizedBox(height: 8),
+ ...ref.watch(recentSearchesProvider).map((search) {
+ return ListTile(
+ contentPadding: EdgeInsets.zero,
+ title: Text(search),
+ trailing: IconButton(
+ icon: const Icon(Icons.delete),
+ onPressed: () {
+ removeRecentSearch(search);
+ },
+ variance: ButtonVariance.card,
+ ),
+ );
+ }),
+ ],
+ ),
+ ),
+ Expanded(
+ child: Padding(
+ padding: const EdgeInsets.symmetric(vertical: 8),
+ child: AnimatedSwitcher(
+ duration: const Duration(milliseconds: 300),
+ child: switch ((searchTerm.isEmpty, isFetching)) {
+ (true, false) => Column(
+ children: [
+ SizedBox(
+ height: mediaQuery.height * 0.2,
+ ),
+ Undraw(
+ illustration: UndrawIllustration.explore,
+ color: theme.colorScheme.primary,
+ height: 200 * theme.scaling,
+ ),
+ const SizedBox(height: 20),
+ Text(context.l10n.search_to_get_results)
+ .large(),
+ ],
+ ),
+ (false, true) => Container(
+ constraints: BoxConstraints(
+ maxWidth: mediaQuery.lgAndUp
+ ? mediaQuery.width * 0.5
+ : mediaQuery.width,
+ ),
+ padding: const EdgeInsets.symmetric(
+ horizontal: 20,
+ ),
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Text(
+ context.l10n.crunching_results,
+ style: TextStyle(
+ fontSize: 20,
+ fontWeight: FontWeight.w900,
+ color: theme.colorScheme.foreground
+ .withOpacity(0.7),
),
+ ),
+ const SizedBox(height: 20),
+ const LinearProgressIndicator(),
+ ],
+ ),
+ ),
+ _ => InterScrollbar(
+ controller: scrollController,
+ child: SingleChildScrollView(
+ controller: scrollController,
+ child: const Padding(
+ padding: EdgeInsets.symmetric(vertical: 8),
+ child: SafeArea(
child: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- crossAxisAlignment: CrossAxisAlignment.center,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
children: [
- Text(
- context.l10n.crunching_results,
- style: TextStyle(
- fontSize: 20,
- fontWeight: FontWeight.w900,
- color: theme.colorScheme.foreground
- .withOpacity(0.7),
- ),
- ),
- const SizedBox(height: 20),
- const LinearProgressIndicator(),
+ SearchTracksSection(),
+ SearchPlaylistsSection(),
+ Gap(20),
+ SearchArtistsSection(),
+ Gap(20),
+ SearchAlbumsSection(),
],
),
),
- _ => InterScrollbar(
- controller: scrollController,
- child: SingleChildScrollView(
- controller: scrollController,
- child: const Padding(
- padding: EdgeInsets.symmetric(vertical: 8),
- child: SafeArea(
- child: Column(
- crossAxisAlignment:
- CrossAxisAlignment.start,
- children: [
- SearchTracksSection(),
- SearchPlaylistsSection(),
- Gap(20),
- SearchArtistsSection(),
- Gap(20),
- SearchAlbumsSection(),
- ],
- ),
- ),
- ),
- ),
- ),
- },
+ ),
+ ),
),
- ),
- ],
+ },
+ ),
),
+ ),
+ PreferredSize(
+ preferredSize: const Size.fromHeight(80),
+ child: Padding(
+ padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ const TitleBar(automaticallyImplyLeading: false, height: 30),
+ const SizedBox(height: 10),
+ Text(
+ "Search",
+ style: theme.typography.h3.copyWith(
+ fontWeight: FontWeight.bold,
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ],
+ ),
),
),
);
}
}
+
+class KVStoreService {
+ static List recentSearches = [];
+
+ static void setRecentSearches(List searches) {
+ recentSearches = searches;
+ }
+}
diff --git a/lib/pages/search/sections/albums.dart b/lib/pages/search/sections/albums.dart
index 105c23d5..9fc1d6a8 100644
--- a/lib/pages/search/sections/albums.dart
+++ b/lib/pages/search/sections/albums.dart
@@ -1,7 +1,6 @@
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
-
import 'package:spotify/spotify.dart';
import 'package:spotube/components/horizontal_playbutton_card_view/horizontal_playbutton_card_view.dart';
import 'package:spotube/extensions/album_simple.dart';
diff --git a/lib/pages/search/sections/artists.dart b/lib/pages/search/sections/artists.dart
index 9a94b3c1..ad984dcc 100644
--- a/lib/pages/search/sections/artists.dart
+++ b/lib/pages/search/sections/artists.dart
@@ -1,6 +1,5 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
-
import 'package:spotify/spotify.dart';
import 'package:spotube/components/horizontal_playbutton_card_view/horizontal_playbutton_card_view.dart';
import 'package:spotube/extensions/context.dart';
diff --git a/lib/pages/search/sections/tracks.dart b/lib/pages/search/sections/tracks.dart
index bacbbb57..993f40db 100644
--- a/lib/pages/search/sections/tracks.dart
+++ b/lib/pages/search/sections/tracks.dart
@@ -1,5 +1,4 @@
import 'package:collection/collection.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotify/spotify.dart';
@@ -8,8 +7,8 @@ import 'package:spotube/components/dialogs/select_device_dialog.dart';
import 'package:spotube/components/track_tile/track_tile.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/models/connect/connect.dart';
-import 'package:spotube/provider/connect/connect.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
+import 'package:spotube/provider/connect/connect.dart';
import 'package:spotube/provider/spotify/spotify.dart';
class SearchTracksSection extends HookConsumerWidget {
diff --git a/lib/pages/settings/about.dart b/lib/pages/settings/about.dart
index 27775f3c..bdd348e6 100644
--- a/lib/pages/settings/about.dart
+++ b/lib/pages/settings/about.dart
@@ -1,4 +1,6 @@
+import 'package:auto_route/auto_route.dart';
import 'package:flutter/services.dart';
+import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/collections/env.dart';
@@ -8,10 +10,7 @@ import 'package:spotube/components/links/hyper_link.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/hooks/controllers/use_package_info.dart';
-
-import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:url_launcher/url_launcher.dart';
-import 'package:auto_route/auto_route.dart';
final _licenseProvider = FutureProvider((ref) async {
return await rootBundle.loadString("LICENSE");
@@ -45,7 +44,7 @@ class AboutSpotubePage extends HookConsumerWidget {
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Column(
children: [
- Assets.spotubeLogoPng.image(
+ Assets.spotubeLogoStableNotWallpaper.image(
height: 200,
width: 200,
),
diff --git a/lib/pages/settings/blacklist.dart b/lib/pages/settings/blacklist.dart
index 8ac2c1b9..2c4bbb2d 100644
--- a/lib/pages/settings/blacklist.dart
+++ b/lib/pages/settings/blacklist.dart
@@ -1,9 +1,9 @@
-import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:auto_route/auto_route.dart';
import 'package:collection/collection.dart';
+import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:fuzzywuzzy/fuzzywuzzy.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
-
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/button/back_button.dart';
import 'package:spotube/components/inter_scrollbar/inter_scrollbar.dart';
@@ -11,7 +11,6 @@ import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/components/ui/button_tile.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/provider/blacklist_provider.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class BlackListPage extends HookConsumerWidget {
diff --git a/lib/pages/settings/logs.dart b/lib/pages/settings/logs.dart
index 4985b57a..9db9e32d 100644
--- a/lib/pages/settings/logs.dart
+++ b/lib/pages/settings/logs.dart
@@ -1,3 +1,4 @@
+import 'package:auto_route/auto_route.dart';
import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_undraw/flutter_undraw.dart';
@@ -11,7 +12,6 @@ import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/provider/logs/logs_provider.dart';
import 'package:spotube/services/logger/logger.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class LogsPage extends HookConsumerWidget {
diff --git a/lib/pages/settings/sections/about.dart b/lib/pages/settings/sections/about.dart
index 82c98e90..b249a886 100644
--- a/lib/pages/settings/sections/about.dart
+++ b/lib/pages/settings/sections/about.dart
@@ -1,15 +1,14 @@
import 'package:auto_route/auto_route.dart';
import 'package:auto_size_text/auto_size_text.dart';
import 'package:flutter/material.dart' show ListTile;
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart' hide ButtonStyle;
import 'package:spotube/collections/env.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/modules/settings/section_card_with_heading.dart';
import 'package:spotube/components/adaptive/adaptive_list_tile.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/modules/settings/section_card_with_heading.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
import 'package:url_launcher/url_launcher_string.dart';
diff --git a/lib/pages/settings/sections/accounts.dart b/lib/pages/settings/sections/accounts.dart
index 5e40b9ec..313e4940 100644
--- a/lib/pages/settings/sections/accounts.dart
+++ b/lib/pages/settings/sections/accounts.dart
@@ -1,16 +1,15 @@
import 'package:auto_route/auto_route.dart';
import 'package:auto_size_text/auto_size_text.dart';
import 'package:flutter/material.dart' show ListTile;
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/modules/settings/section_card_with_heading.dart';
import 'package:spotube/components/image/universal_image.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/image.dart';
+import 'package:spotube/modules/settings/section_card_with_heading.dart';
import 'package:spotube/pages/mobile_login/hooks/login_callback.dart';
import 'package:spotube/provider/authentication/authentication.dart';
import 'package:spotube/provider/scrobbler/scrobbler.dart';
@@ -49,7 +48,7 @@ class SettingsAccountSection extends HookConsumerWidget {
),
),
onTap: () {
- context.navigateTo(ProfileRoute());
+ context.navigateTo(const ProfileRoute());
},
),
if (auth.asData?.value == null)
diff --git a/lib/pages/settings/sections/appearance.dart b/lib/pages/settings/sections/appearance.dart
index 88f39a25..67ef10e2 100644
--- a/lib/pages/settings/sections/appearance.dart
+++ b/lib/pages/settings/sections/appearance.dart
@@ -1,13 +1,13 @@
import 'package:flutter/material.dart' show ListTile;
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/spotube_icons.dart';
+import 'package:spotube/components/adaptive/adaptive_select_tile.dart';
+import 'package:spotube/extensions/context.dart';
import 'package:spotube/models/database/database.dart';
import 'package:spotube/modules/settings/color_scheme_picker_dialog.dart';
import 'package:spotube/modules/settings/section_card_with_heading.dart';
-import 'package:spotube/components/adaptive/adaptive_select_tile.dart';
-import 'package:spotube/extensions/context.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
class SettingsAppearanceSection extends HookConsumerWidget {
@@ -49,10 +49,10 @@ class SettingsAppearanceSection extends HookConsumerWidget {
value: LayoutMode.compact,
child: Text(context.l10n.compact),
),
- SelectItemButton(
- value: LayoutMode.extended,
- child: Text(context.l10n.extended),
- ),
+ // SelectItemButton(
+ // value: LayoutMode.extended,
+ // child: Text(context.l10n.extended),
+ // ),
],
),
AdaptiveSelectTile(
diff --git a/lib/pages/settings/sections/desktop.dart b/lib/pages/settings/sections/desktop.dart
index ad45c689..67005ef0 100644
--- a/lib/pages/settings/sections/desktop.dart
+++ b/lib/pages/settings/sections/desktop.dart
@@ -2,10 +2,10 @@ import 'package:flutter/material.dart' show ListTile;
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/models/database/database.dart';
-import 'package:spotube/modules/settings/section_card_with_heading.dart';
import 'package:spotube/components/adaptive/adaptive_select_tile.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/models/database/database.dart';
+import 'package:spotube/modules/settings/section_card_with_heading.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
class SettingsDesktopSection extends HookConsumerWidget {
diff --git a/lib/pages/settings/sections/developers.dart b/lib/pages/settings/sections/developers.dart
index 0862e023..91afc441 100644
--- a/lib/pages/settings/sections/developers.dart
+++ b/lib/pages/settings/sections/developers.dart
@@ -1,12 +1,11 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart' show ListTile;
import 'package:flutter_hooks/flutter_hooks.dart';
-
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/modules/settings/section_card_with_heading.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/modules/settings/section_card_with_heading.dart';
class SettingsDevelopersSection extends HookWidget {
const SettingsDevelopersSection({super.key});
diff --git a/lib/pages/settings/sections/downloads.dart b/lib/pages/settings/sections/downloads.dart
index 516d2aca..f76fd9a7 100644
--- a/lib/pages/settings/sections/downloads.dart
+++ b/lib/pages/settings/sections/downloads.dart
@@ -5,8 +5,8 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/modules/settings/section_card_with_heading.dart';
import 'package:spotube/extensions/context.dart';
+import 'package:spotube/modules/settings/section_card_with_heading.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
import 'package:spotube/utils/platform.dart';
@@ -29,8 +29,7 @@ class SettingsDownloadsSection extends HookConsumerWidget {
String? dirStr = await getDirectoryPath(
initialDirectory: preferences.downloadLocation,
);
- if (dirStr == null) return;
- preferencesNotifier.setDownloadLocation(dirStr);
+ preferencesNotifier.setDownloadLocation(dirStr!);
}
}, [preferences.downloadLocation]);
diff --git a/lib/pages/settings/sections/language_region.dart b/lib/pages/settings/sections/language_region.dart
index 44b364af..91c5d7df 100644
--- a/lib/pages/settings/sections/language_region.dart
+++ b/lib/pages/settings/sections/language_region.dart
@@ -5,11 +5,11 @@ import 'package:spotify/spotify.dart';
import 'package:spotube/collections/language_codes.dart';
import 'package:spotube/collections/spotify_markets.dart';
import 'package:spotube/collections/spotube_icons.dart';
-import 'package:spotube/modules/settings/section_card_with_heading.dart';
import 'package:spotube/components/adaptive/adaptive_select_tile.dart';
import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/l10n/l10n.dart';
+import 'package:spotube/modules/settings/section_card_with_heading.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
final localWithName = L10n.all.map((e) {
diff --git a/lib/pages/settings/sections/playback.dart b/lib/pages/settings/sections/playback.dart
index f3b7d131..27f4accd 100644
--- a/lib/pages/settings/sections/playback.dart
+++ b/lib/pages/settings/sections/playback.dart
@@ -7,25 +7,23 @@ import 'package:flutter/material.dart' show ListTile;
import 'package:flutter_form_builder/flutter_form_builder.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:form_builder_validators/form_builder_validators.dart';
-
import 'package:google_fonts/google_fonts.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:piped_client/piped_client.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart';
+import 'package:spotube/components/adaptive/adaptive_select_tile.dart';
import 'package:spotube/components/form/text_form_field.dart';
+import 'package:spotube/extensions/context.dart';
import 'package:spotube/hooks/controllers/use_shadcn_text_editing_controller.dart';
import 'package:spotube/models/database/database.dart';
import 'package:spotube/modules/settings/section_card_with_heading.dart';
-import 'package:spotube/components/adaptive/adaptive_select_tile.dart';
-import 'package:spotube/extensions/context.dart';
import 'package:spotube/modules/settings/youtube_engine_not_installed_dialog.dart';
import 'package:spotube/provider/audio_player/sources/invidious_instances_provider.dart';
import 'package:spotube/provider/audio_player/sources/piped_instances_provider.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
import 'package:spotube/services/kv_store/kv_store.dart';
-
import 'package:spotube/services/sourced_track/enums.dart';
import 'package:spotube/services/youtube_engine/yt_dlp_engine.dart';
import 'package:spotube/utils/platform.dart';
diff --git a/lib/pages/settings/settings.dart b/lib/pages/settings/settings.dart
index 0948bdeb..094f32d6 100644
--- a/lib/pages/settings/settings.dart
+++ b/lib/pages/settings/settings.dart
@@ -1,3 +1,4 @@
+import 'package:auto_route/auto_route.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart' show Material, MaterialType;
import 'package:flutter_hooks/flutter_hooks.dart';
@@ -15,7 +16,6 @@ import 'package:spotube/pages/settings/sections/language_region.dart';
import 'package:spotube/pages/settings/sections/playback.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
import 'package:spotube/utils/platform.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class SettingsPage extends HookConsumerWidget {
diff --git a/lib/pages/stats/albums/albums.dart b/lib/pages/stats/albums/albums.dart
index 834837af..a228d3ef 100644
--- a/lib/pages/stats/albums/albums.dart
+++ b/lib/pages/stats/albums/albums.dart
@@ -1,16 +1,15 @@
+import 'package:auto_route/auto_route.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/collections/formatters.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
-import 'package:spotube/modules/stats/common/album_item.dart';
import 'package:spotube/extensions/context.dart';
-
+import 'package:spotube/modules/stats/common/album_item.dart';
import 'package:spotube/provider/history/top.dart';
import 'package:spotube/provider/history/top/albums.dart';
import 'package:spotube/provider/spotify/spotify.dart';
import 'package:very_good_infinite_list/very_good_infinite_list.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class StatsAlbumsPage extends HookConsumerWidget {
diff --git a/lib/pages/stats/artists/artists.dart b/lib/pages/stats/artists/artists.dart
index f3d2f0dd..d985972b 100644
--- a/lib/pages/stats/artists/artists.dart
+++ b/lib/pages/stats/artists/artists.dart
@@ -1,17 +1,16 @@
+import 'package:auto_route/auto_route.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/collections/formatters.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
-import 'package:spotube/modules/stats/common/artist_item.dart';
import 'package:spotube/extensions/context.dart';
-
+import 'package:spotube/modules/stats/common/artist_item.dart';
import 'package:spotube/provider/history/top.dart';
import 'package:spotube/provider/history/top/tracks.dart';
import 'package:spotube/provider/spotify/spotify.dart';
import 'package:very_good_infinite_list/very_good_infinite_list.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class StatsArtistsPage extends HookConsumerWidget {
diff --git a/lib/pages/stats/fees/fees.dart b/lib/pages/stats/fees/fees.dart
index 2f1e4107..a2f41842 100644
--- a/lib/pages/stats/fees/fees.dart
+++ b/lib/pages/stats/fees/fees.dart
@@ -1,3 +1,4 @@
+import 'package:auto_route/auto_route.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
@@ -5,14 +6,12 @@ import 'package:skeletonizer/skeletonizer.dart';
import 'package:sliver_tools/sliver_tools.dart';
import 'package:spotube/collections/formatters.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
-import 'package:spotube/modules/stats/common/artist_item.dart';
import 'package:spotube/extensions/context.dart';
-
+import 'package:spotube/modules/stats/common/artist_item.dart';
import 'package:spotube/provider/history/top.dart';
import 'package:spotube/provider/history/top/tracks.dart';
import 'package:spotube/provider/spotify/spotify.dart';
import 'package:very_good_infinite_list/very_good_infinite_list.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class StatsStreamFeesPage extends HookConsumerWidget {
@@ -67,7 +66,7 @@ class StatsStreamFeesPage extends HookConsumerWidget {
padding: const EdgeInsets.all(16.0),
sliver: SliverToBoxAdapter(
child: Text(
- context.l10n.spotify_hipotetical_calculation,
+ context.l10n.spotify_hypothetical_calculation,
).small().muted(),
),
),
diff --git a/lib/pages/stats/minutes/minutes.dart b/lib/pages/stats/minutes/minutes.dart
index 2ee4c8d7..88c0eeda 100644
--- a/lib/pages/stats/minutes/minutes.dart
+++ b/lib/pages/stats/minutes/minutes.dart
@@ -1,16 +1,15 @@
+import 'package:auto_route/auto_route.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/collections/formatters.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
-import 'package:spotube/modules/stats/common/track_item.dart';
import 'package:spotube/extensions/context.dart';
-
+import 'package:spotube/modules/stats/common/track_item.dart';
import 'package:spotube/provider/history/top.dart';
import 'package:spotube/provider/history/top/tracks.dart';
import 'package:spotube/provider/spotify/spotify.dart';
import 'package:very_good_infinite_list/very_good_infinite_list.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class StatsMinutesPage extends HookConsumerWidget {
@@ -52,7 +51,7 @@ class StatsMinutesPage extends HookConsumerWidget {
return StatsTrackItem(
track: track.track,
info: Text(
- context.l10n.count_mins(compactNumberFormatter
+ context.l10n.count_minutes(compactNumberFormatter
.format(track.count * track.track.duration!.inMinutes)),
),
);
diff --git a/lib/pages/stats/playlists/playlists.dart b/lib/pages/stats/playlists/playlists.dart
index 03ea5126..17c3d462 100644
--- a/lib/pages/stats/playlists/playlists.dart
+++ b/lib/pages/stats/playlists/playlists.dart
@@ -1,16 +1,15 @@
+import 'package:auto_route/auto_route.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/collections/formatters.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
-import 'package:spotube/modules/stats/common/playlist_item.dart';
import 'package:spotube/extensions/context.dart';
-
+import 'package:spotube/modules/stats/common/playlist_item.dart';
import 'package:spotube/provider/history/top.dart';
import 'package:spotube/provider/history/top/playlists.dart';
import 'package:spotube/provider/spotify/spotify.dart';
import 'package:very_good_infinite_list/very_good_infinite_list.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class StatsPlaylistsPage extends HookConsumerWidget {
diff --git a/lib/pages/stats/stats.dart b/lib/pages/stats/stats.dart
index da7c64f3..26ed55fe 100644
--- a/lib/pages/stats/stats.dart
+++ b/lib/pages/stats/stats.dart
@@ -1,3 +1,4 @@
+import 'package:auto_route/auto_route.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/routes.gr.dart';
@@ -5,7 +6,6 @@ import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/modules/stats/summary/summary.dart';
import 'package:spotube/modules/stats/top/top.dart';
import 'package:spotube/utils/platform.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class StatsPage extends HookConsumerWidget {
diff --git a/lib/pages/stats/streams/streams.dart b/lib/pages/stats/streams/streams.dart
index 0d919a44..09540c7c 100644
--- a/lib/pages/stats/streams/streams.dart
+++ b/lib/pages/stats/streams/streams.dart
@@ -1,16 +1,15 @@
+import 'package:auto_route/auto_route.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/collections/formatters.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
-import 'package:spotube/modules/stats/common/track_item.dart';
import 'package:spotube/extensions/context.dart';
-
+import 'package:spotube/modules/stats/common/track_item.dart';
import 'package:spotube/provider/history/top.dart';
import 'package:spotube/provider/history/top/tracks.dart';
import 'package:spotube/provider/spotify/spotify.dart';
import 'package:very_good_infinite_list/very_good_infinite_list.dart';
-import 'package:auto_route/auto_route.dart';
@RoutePage()
class StatsStreamsPage extends HookConsumerWidget {
diff --git a/lib/pages/track/track.dart b/lib/pages/track/track.dart
index 2918d1d7..acf61a7e 100644
--- a/lib/pages/track/track.dart
+++ b/lib/pages/track/track.dart
@@ -1,5 +1,6 @@
import 'dart:ui';
+import 'package:auto_route/auto_route.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:skeletonizer/skeletonizer.dart';
@@ -12,6 +13,7 @@ import 'package:spotube/components/links/artist_link.dart';
import 'package:spotube/components/links/link_text.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/components/track_tile/track_options.dart';
+import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/image.dart';
import 'package:spotube/extensions/list.dart';
@@ -19,9 +21,6 @@ import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/spotify/spotify.dart';
import 'package:spotube/services/audio_player/audio_player.dart';
-import 'package:spotube/extensions/constrains.dart';
-import 'package:auto_route/auto_route.dart';
-
@RoutePage()
class TrackPage extends HookConsumerWidget {
static const name = "track";
diff --git a/lib/provider/audio_player/audio_player_streams.dart b/lib/provider/audio_player/audio_player_streams.dart
index 54c6d7cd..1a826394 100644
--- a/lib/provider/audio_player/audio_player_streams.dart
+++ b/lib/provider/audio_player/audio_player_streams.dart
@@ -7,9 +7,9 @@ import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/audio_player/state.dart';
import 'package:spotube/provider/discord_provider.dart';
import 'package:spotube/provider/history/history.dart';
-import 'package:spotube/provider/skip_segments/skip_segments.dart';
import 'package:spotube/provider/scrobbler/scrobbler.dart';
import 'package:spotube/provider/server/sourced_track.dart';
+import 'package:spotube/provider/skip_segments/skip_segments.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
import 'package:spotube/services/audio_player/audio_player.dart';
import 'package:spotube/services/audio_services/audio_services.dart';
diff --git a/lib/provider/audio_player/sources/piped_instances_provider.dart b/lib/provider/audio_player/sources/piped_instances_provider.dart
index 3c5d5f04..965826dd 100644
--- a/lib/provider/audio_player/sources/piped_instances_provider.dart
+++ b/lib/provider/audio_player/sources/piped_instances_provider.dart
@@ -1,6 +1,6 @@
-import 'package:spotube/services/logger/logger.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:piped_client/piped_client.dart';
+import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/services/sourced_track/sources/piped.dart';
final pipedInstancesFutureProvider = FutureProvider>(
diff --git a/lib/provider/authentication/authentication.dart b/lib/provider/authentication/authentication.dart
index 583955b0..41fe9429 100644
--- a/lib/provider/authentication/authentication.dart
+++ b/lib/provider/authentication/authentication.dart
@@ -10,6 +10,9 @@ import 'package:drift/drift.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart'
hide X509Certificate;
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:otp_util/otp_util.dart';
+// ignore: implementation_imports
+import 'package:otp_util/src/utils/generic_util.dart';
import 'package:spotube/collections/routes.dart';
import 'package:spotube/components/dialogs/prompt_dialog.dart';
import 'package:spotube/extensions/context.dart';
@@ -17,9 +20,6 @@ import 'package:spotube/models/database/database.dart';
import 'package:spotube/provider/database/database.dart';
import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/utils/platform.dart';
-import 'package:otp_util/otp_util.dart';
-// ignore: implementation_imports
-import 'package:otp_util/src/utils/generic_util.dart';
import 'package:spotube/utils/service_utils.dart';
extension ExpirationAuthenticationTableData on AuthenticationTableData {
diff --git a/lib/provider/connect/connect.dart b/lib/provider/connect/connect.dart
index 000a28af..848ce4f3 100644
--- a/lib/provider/connect/connect.dart
+++ b/lib/provider/connect/connect.dart
@@ -1,16 +1,15 @@
import 'dart:convert';
-import 'package:media_kit/media_kit.dart' hide Track;
-import 'package:spotube/provider/audio_player/state.dart';
-import 'package:spotube/services/audio_player/audio_player.dart';
-import 'package:spotube/services/logger/logger.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:media_kit/media_kit.dart' hide Track;
import 'package:spotify/spotify.dart' hide Playlist;
import 'package:spotube/models/connect/connect.dart';
-
+import 'package:spotube/provider/audio_player/state.dart';
import 'package:spotube/provider/connect/clients.dart';
-import 'package:web_socket_channel/web_socket_channel.dart';
+import 'package:spotube/services/audio_player/audio_player.dart';
+import 'package:spotube/services/logger/logger.dart';
import 'package:web_socket_channel/status.dart' as status;
+import 'package:web_socket_channel/web_socket_channel.dart';
final playingProvider = StateProvider(
(ref) => false,
diff --git a/lib/provider/download_manager_provider.dart b/lib/provider/download_manager_provider.dart
index 5e9eda20..d7abf1c7 100644
--- a/lib/provider/download_manager_provider.dart
+++ b/lib/provider/download_manager_provider.dart
@@ -1,8 +1,6 @@
import 'dart:async';
import 'dart:io';
-import 'package:spotube/extensions/track.dart';
-import 'package:spotube/services/logger/logger.dart';
import 'package:collection/collection.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
@@ -11,8 +9,10 @@ import 'package:path/path.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/extensions/artist_simple.dart';
import 'package:spotube/extensions/image.dart';
+import 'package:spotube/extensions/track.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
import 'package:spotube/services/download_manager/download_manager.dart';
+import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/services/sourced_track/enums.dart';
import 'package:spotube/services/sourced_track/sourced_track.dart';
import 'package:spotube/utils/primitive_utils.dart';
diff --git a/lib/provider/local_tracks/local_tracks_provider.dart b/lib/provider/local_tracks/local_tracks_provider.dart
index b33fd7f6..d96618e2 100644
--- a/lib/provider/local_tracks/local_tracks_provider.dart
+++ b/lib/provider/local_tracks/local_tracks_provider.dart
@@ -1,20 +1,19 @@
import 'dart:async';
import 'dart:io';
-import 'package:spotube/services/logger/logger.dart';
import 'package:flutter/foundation.dart';
+// ignore: depend_on_referenced_packages
+import 'package:flutter_rust_bridge/flutter_rust_bridge.dart' show FrbException;
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:metadata_god/metadata_god.dart';
import 'package:mime/mime.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
-
import 'package:spotify/spotify.dart';
import 'package:spotube/extensions/track.dart';
import 'package:spotube/models/local_track.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
-// ignore: depend_on_referenced_packages
-import 'package:flutter_rust_bridge/flutter_rust_bridge.dart' show FrbException;
+import 'package:spotube/services/logger/logger.dart';
const supportedAudioTypes = [
"audio/webm",
diff --git a/lib/provider/server/routes/connect.dart b/lib/provider/server/routes/connect.dart
index 0d35b473..cc4ecfe1 100644
--- a/lib/provider/server/routes/connect.dart
+++ b/lib/provider/server/routes/connect.dart
@@ -7,9 +7,8 @@ import 'package:shelf/shelf.dart';
import 'package:shelf_web_socket/shelf_web_socket.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/models/connect/connect.dart';
-
-import 'package:spotube/provider/history/history.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
+import 'package:spotube/provider/history/history.dart';
import 'package:spotube/provider/volume_provider.dart';
import 'package:spotube/services/audio_player/audio_player.dart';
import 'package:spotube/services/logger/logger.dart';
diff --git a/lib/provider/server/routes/playback.dart b/lib/provider/server/routes/playback.dart
index 1c7d0de7..611eaf0b 100644
--- a/lib/provider/server/routes/playback.dart
+++ b/lib/provider/server/routes/playback.dart
@@ -1,8 +1,8 @@
import 'dart:io';
import 'dart:math';
-import 'package:dio/dio.dart' hide Response;
import 'package:dio/dio.dart' as dio_lib;
+import 'package:dio/dio.dart' hide Response;
import 'package:flutter/foundation.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:metadata_god/metadata_god.dart';
@@ -14,7 +14,6 @@ import 'package:spotube/extensions/track.dart';
import 'package:spotube/models/parser/range_headers.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/audio_player/state.dart';
-
import 'package:spotube/provider/server/active_sourced_track.dart';
import 'package:spotube/provider/server/sourced_track.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
diff --git a/lib/provider/skip_segments/skip_segments.dart b/lib/provider/skip_segments/skip_segments.dart
index 005797f4..77fad1dd 100644
--- a/lib/provider/skip_segments/skip_segments.dart
+++ b/lib/provider/skip_segments/skip_segments.dart
@@ -1,12 +1,11 @@
-import 'package:spotube/models/database/database.dart';
-import 'package:spotube/provider/database/database.dart';
-import 'package:spotube/services/logger/logger.dart';
import 'package:dio/dio.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:spotube/models/database/database.dart';
+import 'package:spotube/provider/database/database.dart';
import 'package:spotube/provider/server/active_sourced_track.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
-
import 'package:spotube/services/dio/dio.dart';
+import 'package:spotube/services/logger/logger.dart';
class SourcedSegments {
final String source;
diff --git a/lib/provider/spotify/spotify.dart b/lib/provider/spotify/spotify.dart
index a0753fcb..2b96bac6 100644
--- a/lib/provider/spotify/spotify.dart
+++ b/lib/provider/spotify/spotify.dart
@@ -3,80 +3,69 @@ library spotify;
import 'dart:async';
import 'dart:math';
-import 'package:drift/drift.dart';
-import 'package:spotube/collections/assets.gen.dart';
-import 'package:spotube/collections/env.dart';
-import 'package:spotube/models/database/database.dart';
-import 'package:spotube/provider/authentication/authentication.dart';
-import 'package:spotube/provider/database/database.dart';
-import 'package:spotube/services/logger/logger.dart';
import 'package:collection/collection.dart';
import 'package:dio/dio.dart';
-import 'package:shadcn_flutter/shadcn_flutter.dart';
+import 'package:drift/drift.dart';
+import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:intl/intl.dart';
import 'package:lrc/lrc.dart';
import 'package:package_info_plus/package_info_plus.dart';
-import 'package:spotify/spotify.dart';
-import 'package:hooks_riverpod/hooks_riverpod.dart';
// ignore: depend_on_referenced_packages, implementation_imports
import 'package:riverpod/src/async_notifier.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
+import 'package:spotify/spotify.dart';
+import 'package:spotube/collections/assets.gen.dart';
+import 'package:spotube/collections/env.dart';
import 'package:spotube/extensions/album_simple.dart';
import 'package:spotube/extensions/track.dart';
+import 'package:spotube/models/database/database.dart';
import 'package:spotube/models/lyrics.dart';
import 'package:spotube/models/spotify/recommendation_seeds.dart';
import 'package:spotube/models/spotify_friends.dart';
+import 'package:spotube/provider/authentication/authentication.dart';
import 'package:spotube/provider/custom_spotify_endpoint_provider.dart';
+import 'package:spotube/provider/database/database.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
import 'package:spotube/services/dio/dio.dart';
+import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/services/wikipedia/wikipedia.dart';
import 'package:spotube/utils/primitive_utils.dart';
-
import 'package:wikipedia_api/wikipedia_api.dart';
part 'album/favorite.dart';
-part 'album/tracks.dart';
-part 'album/releases.dart';
part 'album/is_saved.dart';
-
-part 'artist/artist.dart';
-part 'artist/is_following.dart';
-part 'artist/following.dart';
-part 'artist/top_tracks.dart';
+part 'album/releases.dart';
+part 'album/tracks.dart';
part 'artist/albums.dart';
-part 'artist/wikipedia.dart';
+part 'artist/artist.dart';
+part 'artist/following.dart';
+part 'artist/is_following.dart';
part 'artist/related.dart';
-
-part 'category/genres.dart';
+part 'artist/top_tracks.dart';
+part 'artist/wikipedia.dart';
part 'category/categories.dart';
+part 'category/genres.dart';
part 'category/playlists.dart';
-
part 'lyrics/synced.dart';
-
part 'playlist/favorite.dart';
-part 'playlist/playlist.dart';
-part 'playlist/liked.dart';
-part 'playlist/tracks.dart';
part 'playlist/featured.dart';
part 'playlist/generate.dart';
-
+part 'playlist/liked.dart';
+part 'playlist/playlist.dart';
+part 'playlist/tracks.dart';
part 'search/search.dart';
-
-part 'user/me.dart';
-part 'user/friends.dart';
-
part 'tracks/track.dart';
-
-part 'views/view.dart';
-
-part 'utils/mixin.dart';
-part 'utils/state.dart';
-part 'utils/provider.dart';
+part 'user/friends.dart';
+part 'user/me.dart';
part 'utils/async.dart';
-
-part 'utils/provider/paginated.dart';
+part 'utils/mixin.dart';
+part 'utils/provider.dart';
part 'utils/provider/cursor.dart';
-part 'utils/provider/paginated_family.dart';
part 'utils/provider/cursor_family.dart';
+part 'utils/provider/paginated.dart';
+part 'utils/provider/paginated_family.dart';
+part 'utils/state.dart';
+part 'views/view.dart';
class SpotifyApiWrapper {
final SpotifyApi api;
diff --git a/lib/provider/tray_manager/tray_menu.dart b/lib/provider/tray_manager/tray_menu.dart
index 42a3f948..07fbea51 100644
--- a/lib/provider/tray_manager/tray_menu.dart
+++ b/lib/provider/tray_manager/tray_menu.dart
@@ -1,9 +1,9 @@
import 'dart:io';
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:media_kit/media_kit.dart' hide Track;
import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/services/audio_player/audio_player.dart';
-import 'package:media_kit/media_kit.dart' hide Track;
import 'package:tray_manager/tray_manager.dart';
import 'package:window_manager/window_manager.dart';
diff --git a/lib/provider/user_preferences/user_preferences_provider.dart b/lib/provider/user_preferences/user_preferences_provider.dart
index 75234241..0bbd9d94 100644
--- a/lib/provider/user_preferences/user_preferences_provider.dart
+++ b/lib/provider/user_preferences/user_preferences_provider.dart
@@ -1,6 +1,6 @@
import 'package:drift/drift.dart';
-
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:open_file/open_file.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart' as paths;
import 'package:shadcn_flutter/shadcn_flutter.dart' hide join;
@@ -13,7 +13,6 @@ import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/services/sourced_track/enums.dart';
import 'package:spotube/utils/platform.dart';
import 'package:window_manager/window_manager.dart';
-import 'package:open_file/open_file.dart';
typedef UserPreferences = PreferencesTableData;
diff --git a/lib/services/audio_player/audio_player.dart b/lib/services/audio_player/audio_player.dart
index 4febecdf..04040e51 100644
--- a/lib/services/audio_player/audio_player.dart
+++ b/lib/services/audio_player/audio_player.dart
@@ -1,21 +1,19 @@
+import 'dart:async';
import 'dart:io';
-import 'package:media_kit/media_kit.dart' hide Track;
-import 'package:spotube/services/logger/logger.dart';
import 'package:flutter/foundation.dart';
+import 'package:media_kit/media_kit.dart' as mk;
+import 'package:media_kit/media_kit.dart' hide Track;
import 'package:spotify/spotify.dart' hide Playlist;
import 'package:spotube/models/local_track.dart';
import 'package:spotube/services/audio_player/custom_player.dart';
-import 'dart:async';
-
-import 'package:media_kit/media_kit.dart' as mk;
-
import 'package:spotube/services/audio_player/playback_state.dart';
+import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/services/sourced_track/sourced_track.dart';
import 'package:spotube/utils/platform.dart';
-part 'audio_players_streams_mixin.dart';
part 'audio_player_impl.dart';
+part 'audio_players_streams_mixin.dart';
class SpotubeMedia extends mk.Media {
final Track track;
@@ -63,20 +61,20 @@ class SpotubeMedia extends mk.Media {
);
}
- // @override
- // operator ==(Object other) {
- // if (other is! SpotubeMedia) return false;
+ @override
+ operator == (Object other) {
+ if (other is! SpotubeMedia) return false;
- // final isLocal = track is LocalTrack && other.track is LocalTrack;
- // return isLocal
- // ? (other.track as LocalTrack).path == (track as LocalTrack).path
- // : other.track.id == track.id;
- // }
+ final isLocal = track is LocalTrack && other.track is LocalTrack;
+ return isLocal
+ ? (other.track as LocalTrack).path == (track as LocalTrack).path
+ : other.track.id == track.id;
+ }
- // @override
- // int get hashCode => track is LocalTrack
- // ? (track as LocalTrack).path.hashCode
- // : track.id.hashCode;
+ @override
+ int get hashCode => track is LocalTrack
+ ? (track as LocalTrack).path.hashCode
+ : track.id.hashCode;
}
abstract class AudioPlayerInterface {
diff --git a/lib/services/audio_player/custom_player.dart b/lib/services/audio_player/custom_player.dart
index f0dc8f13..8860f4ca 100644
--- a/lib/services/audio_player/custom_player.dart
+++ b/lib/services/audio_player/custom_player.dart
@@ -1,11 +1,12 @@
import 'dart:async';
-import 'package:spotube/services/logger/logger.dart';
-import 'package:media_kit/media_kit.dart';
-import 'package:flutter_broadcasts/flutter_broadcasts.dart';
-import 'package:package_info_plus/package_info_plus.dart';
+
import 'package:audio_session/audio_session.dart';
+import 'package:flutter_broadcasts/flutter_broadcasts.dart';
+import 'package:media_kit/media_kit.dart';
+import 'package:package_info_plus/package_info_plus.dart';
// ignore: implementation_imports
import 'package:spotube/services/audio_player/playback_state.dart';
+import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/utils/platform.dart';
/// MediaKit [Player] by default doesn't have a state stream.
diff --git a/lib/services/audio_services/audio_services.dart b/lib/services/audio_services/audio_services.dart
index 060a7f41..3867d8af 100644
--- a/lib/services/audio_services/audio_services.dart
+++ b/lib/services/audio_services/audio_services.dart
@@ -1,6 +1,6 @@
import 'package:audio_service/audio_service.dart';
-import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/collections/env.dart';
import 'package:spotube/extensions/artist_simple.dart';
diff --git a/lib/services/audio_services/mobile_audio_service.dart b/lib/services/audio_services/mobile_audio_service.dart
index 16a3618e..28d282bd 100644
--- a/lib/services/audio_services/mobile_audio_service.dart
+++ b/lib/services/audio_services/mobile_audio_service.dart
@@ -3,10 +3,10 @@ import 'dart:io';
import 'package:audio_service/audio_service.dart';
import 'package:audio_session/audio_session.dart';
+import 'package:media_kit/media_kit.dart' hide Track;
import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/audio_player/state.dart';
import 'package:spotube/services/audio_player/audio_player.dart';
-import 'package:media_kit/media_kit.dart' hide Track;
import 'package:spotube/services/audio_player/playback_state.dart';
import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/utils/platform.dart';
diff --git a/lib/services/download_manager/download_manager.dart b/lib/services/download_manager/download_manager.dart
index d2072bd7..02686659 100644
--- a/lib/services/download_manager/download_manager.dart
+++ b/lib/services/download_manager/download_manager.dart
@@ -1,13 +1,12 @@
import 'dart:async';
import 'dart:collection';
import 'dart:io';
-import 'package:collection/collection.dart';
+import 'package:collection/collection.dart';
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:path/path.dart' as path;
import 'package:path_provider/path_provider.dart';
-
import 'package:spotube/services/download_manager/chunked_download.dart';
import 'package:spotube/services/download_manager/download_request.dart';
import 'package:spotube/services/download_manager/download_status.dart';
diff --git a/lib/services/kv_store/encrypted_kv_store.dart b/lib/services/kv_store/encrypted_kv_store.dart
index 4eca0007..69a73836 100644
--- a/lib/services/kv_store/encrypted_kv_store.dart
+++ b/lib/services/kv_store/encrypted_kv_store.dart
@@ -1,7 +1,7 @@
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:spotube/services/kv_store/kv_store.dart';
-import 'package:uuid/uuid.dart';
import 'package:spotube/utils/platform.dart';
+import 'package:uuid/uuid.dart';
abstract class EncryptedKvStoreService {
static const _storage = FlutterSecureStorage(
diff --git a/lib/services/logger/logger.dart b/lib/services/logger/logger.dart
index 1f15bf92..d8737043 100644
--- a/lib/services/logger/logger.dart
+++ b/lib/services/logger/logger.dart
@@ -3,13 +3,13 @@ import 'dart:io';
import 'dart:isolate';
import 'package:flutter/foundation.dart';
-import 'package:shadcn_flutter/shadcn_flutter.dart' hide join;
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:logger/logger.dart';
+import 'package:logging/logging.dart' as logging;
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
+import 'package:shadcn_flutter/shadcn_flutter.dart' hide join;
import 'package:spotube/utils/platform.dart';
-import 'package:logging/logging.dart' as logging;
final _loggingToLoggerLevel = {
logging.Level.ALL: Level.all,
diff --git a/lib/services/song_link/song_link.dart b/lib/services/song_link/song_link.dart
index e3cffa52..bbb72b3c 100644
--- a/lib/services/song_link/song_link.dart
+++ b/lib/services/song_link/song_link.dart
@@ -2,13 +2,12 @@ library song_link;
import 'dart:convert';
-import 'package:spotube/services/logger/logger.dart';
import 'package:dio/dio.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:html/parser.dart';
+import 'package:spotube/services/logger/logger.dart';
part 'model.dart';
-
part 'song_link.freezed.dart';
part 'song_link.g.dart';
diff --git a/lib/services/sourced_track/models/video_info.dart b/lib/services/sourced_track/models/video_info.dart
index e3452c61..65b45a79 100644
--- a/lib/services/sourced_track/models/video_info.dart
+++ b/lib/services/sourced_track/models/video_info.dart
@@ -1,7 +1,6 @@
import 'package:invidious/invidious.dart';
import 'package:piped_client/piped_client.dart';
import 'package:spotube/models/database/database.dart';
-
import 'package:youtube_explode_dart/youtube_explode_dart.dart';
class YoutubeVideoInfo {
diff --git a/lib/services/sourced_track/sourced_track.dart b/lib/services/sourced_track/sourced_track.dart
index bf0b22e6..1f6fc45e 100644
--- a/lib/services/sourced_track/sourced_track.dart
+++ b/lib/services/sourced_track/sourced_track.dart
@@ -2,7 +2,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/models/database/database.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
-
import 'package:spotube/services/sourced_track/enums.dart';
import 'package:spotube/services/sourced_track/models/source_info.dart';
import 'package:spotube/services/sourced_track/models/source_map.dart';
diff --git a/lib/services/sourced_track/sources/invidious.dart b/lib/services/sourced_track/sources/invidious.dart
index 4a32ad41..54d4a032 100644
--- a/lib/services/sourced_track/sources/invidious.dart
+++ b/lib/services/sourced_track/sources/invidious.dart
@@ -1,6 +1,7 @@
import 'package:collection/collection.dart';
import 'package:drift/drift.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:invidious/invidious.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/models/database/database.dart';
import 'package:spotube/provider/database/database.dart';
@@ -11,7 +12,6 @@ import 'package:spotube/services/sourced_track/models/source_info.dart';
import 'package:spotube/services/sourced_track/models/source_map.dart';
import 'package:spotube/services/sourced_track/models/video_info.dart';
import 'package:spotube/services/sourced_track/sourced_track.dart';
-import 'package:invidious/invidious.dart';
import 'package:spotube/services/sourced_track/sources/youtube.dart';
import 'package:spotube/utils/service_utils.dart';
diff --git a/lib/services/sourced_track/sources/jiosaavn.dart b/lib/services/sourced_track/sources/jiosaavn.dart
index 1434e4f7..bf1400d3 100644
--- a/lib/services/sourced_track/sources/jiosaavn.dart
+++ b/lib/services/sourced_track/sources/jiosaavn.dart
@@ -1,7 +1,9 @@
import 'package:collection/collection.dart';
import 'package:drift/drift.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:jiosaavn/jiosaavn.dart';
import 'package:spotify/spotify.dart';
+import 'package:spotube/extensions/string.dart';
import 'package:spotube/models/database/database.dart';
import 'package:spotube/provider/database/database.dart';
import 'package:spotube/services/sourced_track/enums.dart';
@@ -9,8 +11,6 @@ import 'package:spotube/services/sourced_track/exceptions.dart';
import 'package:spotube/services/sourced_track/models/source_info.dart';
import 'package:spotube/services/sourced_track/models/source_map.dart';
import 'package:spotube/services/sourced_track/sourced_track.dart';
-import 'package:jiosaavn/jiosaavn.dart';
-import 'package:spotube/extensions/string.dart';
final jiosaavnClient = JioSaavnClient();
diff --git a/lib/services/sourced_track/sources/piped.dart b/lib/services/sourced_track/sources/piped.dart
index 7ab9df44..941afbd8 100644
--- a/lib/services/sourced_track/sources/piped.dart
+++ b/lib/services/sourced_track/sources/piped.dart
@@ -6,7 +6,6 @@ import 'package:spotify/spotify.dart';
import 'package:spotube/models/database/database.dart';
import 'package:spotube/provider/database/database.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
-
import 'package:spotube/services/sourced_track/enums.dart';
import 'package:spotube/services/sourced_track/exceptions.dart';
import 'package:spotube/services/sourced_track/models/source_info.dart';
diff --git a/lib/services/youtube_engine/newpipe_engine.dart b/lib/services/youtube_engine/newpipe_engine.dart
index f58fc333..3d6ef458 100644
--- a/lib/services/youtube_engine/newpipe_engine.dart
+++ b/lib/services/youtube_engine/newpipe_engine.dart
@@ -1,9 +1,9 @@
import 'package:flutter_new_pipe_extractor/flutter_new_pipe_extractor.dart'
hide Engagement;
+import 'package:http_parser/http_parser.dart';
import 'package:spotube/services/youtube_engine/youtube_engine.dart';
import 'package:spotube/utils/platform.dart';
import 'package:youtube_explode_dart/youtube_explode_dart.dart';
-import 'package:http_parser/http_parser.dart';
class NewPipeEngine implements YouTubeEngine {
static bool get isAvailableForPlatform => kIsAndroid;
diff --git a/lib/services/youtube_engine/yt_dlp_engine.dart b/lib/services/youtube_engine/yt_dlp_engine.dart
index f3a16479..012d78fa 100644
--- a/lib/services/youtube_engine/yt_dlp_engine.dart
+++ b/lib/services/youtube_engine/yt_dlp_engine.dart
@@ -1,12 +1,12 @@
import 'dart:convert';
import 'package:collection/collection.dart';
+// ignore: depend_on_referenced_packages
+import 'package:http_parser/http_parser.dart';
import 'package:spotube/services/youtube_engine/youtube_engine.dart';
import 'package:spotube/utils/platform.dart';
import 'package:youtube_explode_dart/youtube_explode_dart.dart';
import 'package:yt_dlp_dart/yt_dlp_dart.dart';
-// ignore: depend_on_referenced_packages
-import 'package:http_parser/http_parser.dart';
class YtDlpEngine implements YouTubeEngine {
StreamManifest _parseFormats(List formats, videoId) {
diff --git a/lib/utils/primitive_utils.dart b/lib/utils/primitive_utils.dart
index 801c2e5a..aab4b2e0 100644
--- a/lib/utils/primitive_utils.dart
+++ b/lib/utils/primitive_utils.dart
@@ -1,4 +1,5 @@
import 'dart:math';
+
import 'package:uuid/uuid.dart';
abstract class PrimitiveUtils {
diff --git a/lib/utils/service_utils.dart b/lib/utils/service_utils.dart
index f0eeff05..1714bba7 100644
--- a/lib/utils/service_utils.dart
+++ b/lib/utils/service_utils.dart
@@ -1,31 +1,25 @@
+import 'dart:async';
import 'dart:math';
import 'dart:typed_data';
+import 'package:collection/collection.dart';
import 'package:dio/dio.dart';
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
-
+import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:html/dom.dart' hide Text;
+import 'package:html/parser.dart' as parser;
+import 'package:package_info_plus/package_info_plus.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart' hide Element;
import 'package:spotify/spotify.dart';
-import 'package:spotube/pages/library/user_local_tracks/user_local_tracks.dart';
-import 'package:spotube/modules/root/update_dialog.dart';
-
+import 'package:spotube/collections/env.dart';
import 'package:spotube/models/lyrics.dart';
+import 'package:spotube/modules/root/update_dialog.dart';
+import 'package:spotube/pages/library/user_local_tracks/user_local_tracks.dart';
import 'package:spotube/provider/database/database.dart';
import 'package:spotube/services/dio/dio.dart';
import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/services/sourced_track/sourced_track.dart';
-
import 'package:spotube/utils/primitive_utils.dart';
-import 'package:collection/collection.dart';
-import 'package:html/parser.dart' as parser;
-
-import 'dart:async';
-
-import 'package:flutter_riverpod/flutter_riverpod.dart';
-import 'package:package_info_plus/package_info_plus.dart';
-import 'package:spotube/collections/env.dart';
-
import 'package:version/version.dart';
enum UserAgentDevice {
diff --git a/scripts/update_flathub_version.py b/scripts/update_flathub_version.py
index 3ac5d6f7..1a7dc10a 100644
--- a/scripts/update_flathub_version.py
+++ b/scripts/update_flathub_version.py
@@ -1,8 +1,8 @@
#!/usr/bin/env python
import hashlib
-import sys
import requests
+import sys
import yaml
REPO = "KRTirtho/spotube"
diff --git a/test/drift/app_db/generated/schema.dart b/test/drift/app_db/generated/schema.dart
index bdaebe8f..cca7074a 100644
--- a/test/drift/app_db/generated/schema.dart
+++ b/test/drift/app_db/generated/schema.dart
@@ -3,10 +3,11 @@
// ignore_for_file: type=lint
import 'package:drift/drift.dart';
import 'package:drift/internal/migrations.dart';
-import 'schema_v4.dart' as v4;
-import 'schema_v3.dart' as v3;
-import 'schema_v2.dart' as v2;
+
import 'schema_v1.dart' as v1;
+import 'schema_v2.dart' as v2;
+import 'schema_v3.dart' as v3;
+import 'schema_v4.dart' as v4;
class GeneratedHelper implements SchemaInstantiationHelper {
@override
diff --git a/test/drift/app_db/migration_test.dart b/test/drift/app_db/migration_test.dart
index cdf646e9..6e1d7dc5 100644
--- a/test/drift/app_db/migration_test.dart
+++ b/test/drift/app_db/migration_test.dart
@@ -3,8 +3,8 @@ import 'package:drift/drift.dart';
import 'package:drift_dev/api/migrations.dart';
import 'package:spotube/models/database/database.dart';
import 'package:test/test.dart';
-import 'generated/schema.dart';
+import 'generated/schema.dart';
import 'generated/schema_v1.dart' as v1;
import 'generated/schema_v2.dart' as v2;
diff --git a/test/widget_test.dart b/test/widget_test.dart
index 9ad0195a..b0ad00f1 100644
--- a/test/widget_test.dart
+++ b/test/widget_test.dart
@@ -7,7 +7,6 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:spotube/collections/spotube_icons.dart';
-
import 'package:spotube/main.dart';
void main() {
diff --git a/website/.vscode/settings.json b/website/.vscode/settings.json
deleted file mode 100644
index e5c5673c..00000000
--- a/website/.vscode/settings.json
+++ /dev/null
@@ -1,120 +0,0 @@
-{
- "prettier.documentSelectors": [
- "**/*.svelte"
- ],
- "tailwindCSS.classAttributes": [
- "class",
- "accent",
- "active",
- "animIndeterminate",
- "aspectRatio",
- "background",
- "badge",
- "bgBackdrop",
- "bgDark",
- "bgDrawer",
- "bgLight",
- "blur",
- "border",
- "button",
- "buttonAction",
- "buttonBack",
- "buttonClasses",
- "buttonComplete",
- "buttonDismiss",
- "buttonNeutral",
- "buttonNext",
- "buttonPositive",
- "buttonTextCancel",
- "buttonTextConfirm",
- "buttonTextFirst",
- "buttonTextLast",
- "buttonTextNext",
- "buttonTextPrevious",
- "buttonTextSubmit",
- "caretClosed",
- "caretOpen",
- "chips",
- "color",
- "controlSeparator",
- "controlVariant",
- "cursor",
- "display",
- "element",
- "fill",
- "fillDark",
- "fillLight",
- "flex",
- "flexDirection",
- "gap",
- "gridColumns",
- "height",
- "hover",
- "inactive",
- "indent",
- "justify",
- "meter",
- "padding",
- "position",
- "regionAnchor",
- "regionBackdrop",
- "regionBody",
- "regionCaption",
- "regionCaret",
- "regionCell",
- "regionChildren",
- "regionChipList",
- "regionChipWrapper",
- "regionCone",
- "regionContent",
- "regionControl",
- "regionDefault",
- "regionDrawer",
- "regionFoot",
- "regionFootCell",
- "regionFooter",
- "regionHead",
- "regionHeadCell",
- "regionHeader",
- "regionIcon",
- "regionInput",
- "regionInterface",
- "regionInterfaceText",
- "regionLabel",
- "regionLead",
- "regionLegend",
- "regionList",
- "regionListItem",
- "regionNavigation",
- "regionPage",
- "regionPanel",
- "regionRowHeadline",
- "regionRowMain",
- "regionSummary",
- "regionSymbol",
- "regionTab",
- "regionTrail",
- "ring",
- "rounded",
- "select",
- "shadow",
- "slotDefault",
- "slotFooter",
- "slotHeader",
- "slotLead",
- "slotMessage",
- "slotMeta",
- "slotPageContent",
- "slotPageFooter",
- "slotPageHeader",
- "slotSidebarLeft",
- "slotSidebarRight",
- "slotTrail",
- "spacing",
- "text",
- "track",
- "transition",
- "width",
- "zIndex"
- ]
-}
\ No newline at end of file