Compare commits

...

7 Commits

Author SHA1 Message Date
Kingkor Roy Tirtho
4838656dcc chore: fix alternative sources not persisting 2025-11-14 16:17:37 +06:00
Kingkor Roy Tirtho
7ad2066684 website: add AppImage link 2025-11-14 15:07:51 +06:00
Kingkor Roy Tirtho
77c32a27cf chor: idkl 2025-11-14 14:26:46 +06:00
Kingkor Roy Tirtho
89c67e4f89 docs: update readme credits 2025-11-14 14:19:12 +06:00
Kingkor Roy Tirtho
b142928412 chore: remove buffer size limit 2025-11-14 13:38:47 +06:00
Kingkor Roy Tirtho
bf2eb0ffac chore: bump version and generate CHANGELOG 2025-11-14 13:36:20 +06:00
Kingkor Roy Tirtho
3f5291ec92 chore: upgrade hetu_std 2025-11-14 13:09:46 +06:00
85 changed files with 987 additions and 969 deletions

View File

@ -1,5 +1,29 @@
# Changelog # Changelog
## [5.1.0](https://github.com/KRTirtho/spotube/compare/v5.0.0...v5.1.0) (2025-11-14)
### Features
- Show plugin source and set the only plugin as default if no plugin is there
- **playback**: Add dab music source
- **playback**: Add uncompressed flac playback support
- Add plugin audio source models and api service
- **plugins**: Filter plugins by abilities in plugins page and show abilities as badge
- Add setting default audio source support
- Move away from track source query and preferences audio quality and codec
- Add NewPipe support for desktop platforms
- Add default plugin loading capability
- **queue**: Add multi-select and bulk actions to queue ([#2839](https://github.com/KRTirtho/spotube/issues/2839))
- **android**: Add 16KB page size support
### Bug Fixes
- Change plugin download directory to application support
- **playback**: Play next not working
- Downloaded tracks are not tagged with metadata
- Download not working in different devices and slow
- **playback**: Use stream instead of chunked serving of audio bytes
## [5.0.0](https://github.com/KRTirtho/spotube/compare/v4.0.2...v5.0.0) (2025-09-08) ## [5.0.0](https://github.com/KRTirtho/spotube/compare/v4.0.2...v5.0.0) (2025-09-08)
### Features ### Features

View File

@ -2,7 +2,7 @@
<img width="600" src="assets/branding/spotube_banner.png" alt="Spotube Logo"> <img width="600" src="assets/branding/spotube_banner.png" alt="Spotube Logo">
A cross-platform extensible open-source music streaming platform.<br> A cross-platform extensible open-source music streaming platform.<br>
Bring your own music metadata/playlist with plugins created by community or by yourself. A small step towards the decentralized music streaming era! Bring your own music metadata/playlist/audio-source with plugins created by community or by yourself. A small step towards the decentralized music streaming era!
Btw it's not just another Electron app 😉 Btw it's not just another Electron app 😉
@ -202,6 +202,7 @@ If you are curious, you can [read the reason of choosing this license](https://d
1. [Invidious](https://invidious.io/) - Invidious is an open source alternative front-end to YouTube. 1. [Invidious](https://invidious.io/) - Invidious is an open source alternative front-end to YouTube.
1. [yt-dlp](https://github.com/yt-dlp/yt-dlp) - A feature-rich command-line audio/video downloader. 1. [yt-dlp](https://github.com/yt-dlp/yt-dlp) - A feature-rich command-line audio/video downloader.
1. [NewPipeExtractor](https://github.com/TeamNewPipe/NewPipeExtractor) - NewPipe's core library for extracting data from streaming sites. 1. [NewPipeExtractor](https://github.com/TeamNewPipe/NewPipeExtractor) - NewPipe's core library for extracting data from streaming sites.
1. [YouTubeExplodeDart](https://github.com/Hexer10/youtube_explode_dart) - A port in dart of the youtube explode library. Supports several API functions without the need of Youtube API Key.
1. [LRCLib](https://lrclib.net/) - A public synced lyric API. 1. [LRCLib](https://lrclib.net/) - A public synced lyric API.
1. [Linux](https://www.linux.org) - Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged in a Linux distribution 1. [Linux](https://www.linux.org) - Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged in a Linux distribution
1. [AUR](https://aur.archlinux.org) - AUR stands for Arch User Repository. It is a community-driven repository for Arch-based Linux distributions users 1. [AUR](https://aur.archlinux.org) - AUR stands for Arch User Repository. It is a community-driven repository for Arch-based Linux distributions users
@ -215,7 +216,6 @@ If you are curious, you can [read the reason of choosing this license](https://d
1. [app_links](https://github.com/llfbandit/app_links) - Android App Links, Deep Links, iOs Universal Links and Custom URL schemes handler for Flutter (desktop included). 1. [app_links](https://github.com/llfbandit/app_links) - Android App Links, Deep Links, iOs Universal Links and Custom URL schemes handler for Flutter (desktop included).
1. [args](https://pub.dev/packages/args) - Library for defining parsers for parsing raw command-line arguments into a set of options and values using GNU and POSIX style options. 1. [args](https://pub.dev/packages/args) - Library for defining parsers for parsing raw command-line arguments into a set of options and values using GNU and POSIX style options.
1. [async](https://pub.dev/packages/async) - Utility functions and classes related to the 'dart:async' library.
1. [audio_service](https://pub.dev/packages/audio_service) - Flutter plugin to play audio in the background while the screen is off. 1. [audio_service](https://pub.dev/packages/audio_service) - Flutter plugin to play audio in the background while the screen is off.
1. [audio_service_mpris](https://github.com/bdrazhzhov/audio-service-mpris) - audio_service platform interface supporting Media Player Remote Interfacing Specification. 1. [audio_service_mpris](https://github.com/bdrazhzhov/audio-service-mpris) - audio_service platform interface supporting Media Player Remote Interfacing Specification.
1. [audio_session](https://github.com/ryanheise/audio_session) - Sets the iOS audio session category and Android audio attributes for your app, and manages your app's audio focus, mixing and ducking behaviour. 1. [audio_session](https://github.com/ryanheise/audio_session) - Sets the iOS audio session category and Android audio attributes for your app, and manages your app's audio focus, mixing and ducking behaviour.
@ -242,15 +242,11 @@ If you are curious, you can [read the reason of choosing this license](https://d
1. [flutter_inappwebview](https://inappwebview.dev/) - A Flutter plugin that allows you to add an inline webview, to use an headless webview, and to open an in-app browser window. 1. [flutter_inappwebview](https://inappwebview.dev/) - A Flutter plugin that allows you to add an inline webview, to use an headless webview, and to open an in-app browser window.
1. [flutter_native_splash](https://pub.dev/packages/flutter_native_splash) - Customize Flutter's default white native splash screen with background color and splash image. Supports dark mode, full screen, and more. 1. [flutter_native_splash](https://pub.dev/packages/flutter_native_splash) - Customize Flutter's default white native splash screen with background color and splash image. Supports dark mode, full screen, and more.
1. [flutter_riverpod](https://riverpod.dev) - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze. 1. [flutter_riverpod](https://riverpod.dev) - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
1. [flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage) - Flutter Secure Storage provides API to store data in secure storage. Keychain is used in iOS, KeyStore based solution is used in Android.
1. [flutter_sharing_intent](https://github.com/bhagat-techind/flutter_sharing_intent.git) - A flutter plugin that allow flutter apps to receive photos, videos, text, urls or any other file types from another app. 1. [flutter_sharing_intent](https://github.com/bhagat-techind/flutter_sharing_intent.git) - A flutter plugin that allow flutter apps to receive photos, videos, text, urls or any other file types from another app.
1. [flutter_undraw](https://github.com/KRTirtho/flutter_undraw) - Undraw.co Illustrations for Flutter with customization options 1. [flutter_undraw](https://github.com/KRTirtho/flutter_undraw) - Undraw.co Illustrations for Flutter with customization options
1. [form_builder_validators](https://github.com/flutter-form-builder-ecosystem) - Form Builder Validators set of validators for FlutterFormBuilder. Provides common validators and a way to make your own. 1. [form_builder_validators](https://github.com/flutter-form-builder-ecosystem) - Form Builder Validators set of validators for FlutterFormBuilder. Provides common validators and a way to make your own.
1. [form_validator](https://github.com/TheMisir/form-validator) - Simplest form validation library for flutter's form field widgets
1. [freezed_annotation](https://pub.dev/packages/freezed_annotation) - Annotations for the freezed code-generator. This package does nothing without freezed too. 1. [freezed_annotation](https://pub.dev/packages/freezed_annotation) - Annotations for the freezed code-generator. This package does nothing without freezed too.
1. [fuzzywuzzy](https://github.com/sphericalkat/dart-fuzzywuzzy) - An implementation of the popular fuzzywuzzy package in Dart, to suit all your fuzzy string matching/searching needs! 1. [fuzzywuzzy](https://github.com/sphericalkat/dart-fuzzywuzzy) - An implementation of the popular fuzzywuzzy package in Dart, to suit all your fuzzy string matching/searching needs!
1. [gap](https://github.com/letsar/gap) - Flutter widgets for easily adding gaps inside Flex widgets such as Columns and Rows or scrolling views.
1. [google_fonts](https://pub.dev/packages/google_fonts) - A Flutter package to use fonts from fonts.google.com. Supports HTTP fetching, caching, and asset bundling.
1. [home_widget](https://pub.dev/packages/home_widget) - A plugin to provide a common interface for creating HomeScreen Widgets for Android and iOS. 1. [home_widget](https://pub.dev/packages/home_widget) - A plugin to provide a common interface for creating HomeScreen Widgets for Android and iOS.
1. [hooks_riverpod](https://riverpod.dev) - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze. 1. [hooks_riverpod](https://riverpod.dev) - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
1. [html](https://pub.dev/packages/html) - APIs for parsing and manipulating HTML content outside the browser. 1. [html](https://pub.dev/packages/html) - APIs for parsing and manipulating HTML content outside the browser.
@ -258,15 +254,10 @@ If you are curious, you can [read the reason of choosing this license](https://d
1. [http](https://pub.dev/packages/http) - A composable, multi-platform, Future-based API for HTTP requests. 1. [http](https://pub.dev/packages/http) - A composable, multi-platform, Future-based API for HTTP requests.
1. [image_picker](https://pub.dev/packages/image_picker) - Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera. 1. [image_picker](https://pub.dev/packages/image_picker) - Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera.
1. [intl](https://pub.dev/packages/intl) - Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional text, and other internationalization issues. 1. [intl](https://pub.dev/packages/intl) - Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional text, and other internationalization issues.
1. [invidious](https://pub.dev/packages/invidious) - Invidious API client for Dart and Flutter.
1. [jiosaavn](https://github.com/KRTirtho/jiosaavn) - Unofficial API client for jiosaavn.com
1. [json_annotation](https://pub.dev/packages/json_annotation) - Classes and helper functions that support JSON code generation via the `json_serializable` package.
1. [local_notifier](https://github.com/leanflutter/local_notifier) - This plugin allows Flutter desktop apps to displaying local notifications. 1. [local_notifier](https://github.com/leanflutter/local_notifier) - This plugin allows Flutter desktop apps to displaying local notifications.
1. [logger](https://pub.dev/packages/logger) - Small, easy to use and extensible logger which prints beautiful logs. 1. [logger](https://pub.dev/packages/logger) - Small, easy to use and extensible logger which prints beautiful logs.
1. [logging](https://pub.dev/packages/logging) - Provides APIs for debugging and error logging, similar to loggers in other languages, such as the Closure JS Logger and java.util.logging.Logger. 1. [logging](https://pub.dev/packages/logging) - Provides APIs for debugging and error logging, similar to loggers in other languages, such as the Closure JS Logger and java.util.logging.Logger.
1. [lrc](https://pub.dev/packages/lrc) - A Dart-only package that creates, parses, and handles LRC, which is a format that stores song lyrics. 1. [lrc](https://pub.dev/packages/lrc) - A Dart-only package that creates, parses, and handles LRC, which is a format that stores song lyrics.
1. [media_kit](https://github.com/media-kit/media-kit) - A cross-platform video player & audio player for Flutter & Dart. Performant, stable, feature-proof & modular.
1. [media_kit_libs_audio](https://github.com/media-kit/media-kit.git) - package:media_kit audio (only) playback native libraries for all platforms.
1. [metadata_god](https://pub.dev/packages/metadata_god) - Plugin for retrieving and writing audio tags/metadata from audio files 1. [metadata_god](https://pub.dev/packages/metadata_god) - Plugin for retrieving and writing audio tags/metadata from audio files
1. [mime](https://pub.dev/packages/mime) - Utilities for handling media (MIME) types, including determining a type from a file extension and file contents. 1. [mime](https://pub.dev/packages/mime) - Utilities for handling media (MIME) types, including determining a type from a file extension and file contents.
1. [open_file](https://pub.dev/packages/open_file) - A plug-in that can call native APP to open files with string result in flutter, support iOS(UTI) / android(intent) / PC(ffi) / web(dart:html) 1. [open_file](https://pub.dev/packages/open_file) - A plug-in that can call native APP to open files with string result in flutter, support iOS(UTI) / android(intent) / PC(ffi) / web(dart:html)
@ -275,7 +266,6 @@ If you are curious, you can [read the reason of choosing this license](https://d
1. [path](https://pub.dev/packages/path) - A string-based path manipulation library. All of the path operations you know and love, with solid support for Windows, POSIX (Linux and Mac OS X), and the web. 1. [path](https://pub.dev/packages/path) - A string-based path manipulation library. All of the path operations you know and love, with solid support for Windows, POSIX (Linux and Mac OS X), and the web.
1. [path_provider](https://pub.dev/packages/path_provider) - Flutter plugin for getting commonly used locations on host platform file systems, such as the temp and app data directories. 1. [path_provider](https://pub.dev/packages/path_provider) - Flutter plugin for getting commonly used locations on host platform file systems, such as the temp and app data directories.
1. [permission_handler](https://pub.dev/packages/permission_handler) - Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions. 1. [permission_handler](https://pub.dev/packages/permission_handler) - Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.
1. [piped_client](https://github.com/KRTirtho/piped_client) - API Client for piped.video
1. [riverpod](https://riverpod.dev) - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze. 1. [riverpod](https://riverpod.dev) - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
1. [scroll_to_index](https://github.com/quire-io/scroll-to-index) - Scroll to a specific child of any scrollable widget in Flutter 1. [scroll_to_index](https://github.com/quire-io/scroll-to-index) - Scroll to a specific child of any scrollable widget in Flutter
1. [shadcn_flutter](https://github.com/sunarya-thito/shadcn_flutter) - Beautifully designed components from Shadcn/UI is now available for Flutter 1. [shadcn_flutter](https://github.com/sunarya-thito/shadcn_flutter) - Beautifully designed components from Shadcn/UI is now available for Flutter
@ -290,9 +280,6 @@ If you are curious, you can [read the reason of choosing this license](https://d
1. [smtc_windows](https://pub.dev/packages/smtc_windows) - Windows `SystemMediaTransportControls` implementation for Flutter giving access to Windows OS Media Control applet. 1. [smtc_windows](https://pub.dev/packages/smtc_windows) - Windows `SystemMediaTransportControls` implementation for Flutter giving access to Windows OS Media Control applet.
1. [sqlite3](https://github.com/simolus3/sqlite3.dart/tree/main/sqlite3) - Provides lightweight yet convenient bindings to SQLite by using dart:ffi 1. [sqlite3](https://github.com/simolus3/sqlite3.dart/tree/main/sqlite3) - Provides lightweight yet convenient bindings to SQLite by using dart:ffi
1. [sqlite3_flutter_libs](https://github.com/simolus3/sqlite3.dart/tree/main/sqlite3_flutter_libs) - Flutter plugin to include native sqlite3 libraries with your app 1. [sqlite3_flutter_libs](https://github.com/simolus3/sqlite3.dart/tree/main/sqlite3_flutter_libs) - Flutter plugin to include native sqlite3 libraries with your app
1. [stroke_text](https://github.com/MohamedAbd0/stroke_text) - A Simple Flutter plugin for applying stroke (border) style to a text widget
1. [system_theme](https://github.com/bdlukaa/system_theme/tree/master/system_theme) - A plugin to get the current system theme info. Supports Android, Web, Windows, Linux and macOS
1. [test](https://pub.dev/packages/test) - A full featured library for writing and running Dart tests across platforms.
1. [timezone](https://pub.dev/packages/timezone) - Time zone database and time zone aware DateTime. 1. [timezone](https://pub.dev/packages/timezone) - Time zone database and time zone aware DateTime.
1. [titlebar_buttons](https://github.com/gtk-flutter/titlebar_buttons) - A package which provides most of the titlebar buttons from windows, linux and macos. 1. [titlebar_buttons](https://github.com/gtk-flutter/titlebar_buttons) - A package which provides most of the titlebar buttons from windows, linux and macos.
1. [tray_manager](https://github.com/leanflutter/tray_manager) - This plugin allows Flutter desktop apps to defines system tray. 1. [tray_manager](https://github.com/leanflutter/tray_manager) - This plugin allows Flutter desktop apps to defines system tray.
@ -304,12 +291,17 @@ If you are curious, you can [read the reason of choosing this license](https://d
1. [web_socket_channel](https://pub.dev/packages/web_socket_channel) - StreamChannel wrappers for WebSockets. Provides a cross-platform WebSocketChannel API, a cross-platform implementation of that API that communicates over an underlying StreamChannel. 1. [web_socket_channel](https://pub.dev/packages/web_socket_channel) - StreamChannel wrappers for WebSockets. Provides a cross-platform WebSocketChannel API, a cross-platform implementation of that API that communicates over an underlying StreamChannel.
1. [wikipedia_api](https://github.com/KRTirtho/wikipedia_api) - Wikipedia API for dart and flutter 1. [wikipedia_api](https://github.com/KRTirtho/wikipedia_api) - Wikipedia API for dart and flutter
1. [win32_registry](https://pub.dev/packages/win32_registry) - A package that provides a friendly Dart API for accessing the Windows Registry. 1. [win32_registry](https://pub.dev/packages/win32_registry) - A package that provides a friendly Dart API for accessing the Windows Registry.
1. [window_manager](https://github.com/leanflutter/window_manager) - This plugin allows Flutter desktop apps to resizing and repositioning the window. 1. [window_manager](https://leanflutter.dev) - This plugin allows Flutter desktop apps to resizing and repositioning the window.
1. [youtube_explode_dart](https://github.com/Hexer10/youtube_explode_dart) - A port in dart of the youtube explode library. Supports several API functions without the need of Youtube API Key. 1. [youtube_explode_dart](https://github.com/Hexer10/youtube_explode_dart) - A port in dart of the youtube explode library. Supports several API functions without the need of Youtube API Key.
1. [http_parser](https://pub.dev/packages/http_parser) - A platform-independent package for parsing and serializing HTTP formats. 1. [http_parser](https://pub.dev/packages/http_parser) - A platform-independent package for parsing and serializing HTTP formats.
1. [collection](https://pub.dev/packages/collection) - Collections and utilities functions and classes related to collections. 1. [collection](https://pub.dev/packages/collection) - Collections and utilities functions and classes related to collections.
1. [otp_util](https://github.com/dushiling) - otp_util is a dart package to generate and verify one-time passwords,it It provides two methods TOPT and HOTP.They are Time-based OTPs and Counter-based OTPs. 1. [archive](https://pub.dev/packages/archive) - Provides encoders and decoders for various archive and compression formats such as zip, tar, bzip2, gzip, and zlib.
1. [dio_http2_adapter](https://github.com/cfug/dio) - An adapter that combines HTTP/2 and dio. Supports reusing connections, header compression, etc. 1. [hetu_script](https://github.com/hetu-script/hetu-script) - Hetu is a lightweight scripting language for embedding in Flutter apps.
1. [get_it](https://github.com/flutter-it/get_it) - Simple direct Service Locator that allows to decouple the interface from a concrete implementation and to access the concrete implementation from everywhere in your App"
1. [flutter_markdown_plus](https://pub.dev/packages/flutter_markdown_plus) - A Markdown renderer for Flutter. Create rich text output, including text styles, tables, links, and more, from plain text data formatted with simple Markdown tags.
1. [pub_semver](https://pub.dev/packages/pub_semver) - Versions and version constraints implementing pub's versioning policy. This is very similar to vanilla semver, with a few corner cases.
1. [change_case](https://github.com/mrgnhnt96/change_case) - An extension on String for the missing methods for camelCase, PascalCase, Capital Case, snake_case, param-case, CONSTANT_CASE and others.
1. [flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage) - Flutter Secure Storage provides API to store data in secure storage. Keychain is used in iOS, KeyStore based solution is used in Android.
1. [build_runner](https://pub.dev/packages/build_runner) - A build system for Dart code generation and modular compilation. 1. [build_runner](https://pub.dev/packages/build_runner) - A build system for Dart code generation and modular compilation.
1. [envied_generator](https://github.com/petercinibulk/envied) - Generator for the Envied package. See https://pub.dev/packages/envied. 1. [envied_generator](https://github.com/petercinibulk/envied) - Generator for the Envied package. See https://pub.dev/packages/envied.
1. [flutter_gen_runner](https://github.com/FlutterGen/flutter_gen) - The Flutter code generator for your assets, fonts, colors, … — Get rid of all String-based APIs. 1. [flutter_gen_runner](https://github.com/FlutterGen/flutter_gen) - The Flutter code generator for your assets, fonts, colors, … — Get rid of all String-based APIs.
@ -320,17 +312,23 @@ If you are curious, you can [read the reason of choosing this license](https://d
1. [process_run](https://github.com/tekartik/process_run.dart/blob/master/packages/process_run) - Process run helpers for Linux/Win/Mac and which like feature for finding executables. 1. [process_run](https://github.com/tekartik/process_run.dart/blob/master/packages/process_run) - Process run helpers for Linux/Win/Mac and which like feature for finding executables.
1. [pubspec_parse](https://pub.dev/packages/pubspec_parse) - Simple package for parsing pubspec.yaml files with a type-safe API and rich error reporting. 1. [pubspec_parse](https://pub.dev/packages/pubspec_parse) - Simple package for parsing pubspec.yaml files with a type-safe API and rich error reporting.
1. [pub_api_client](https://github.com/leoafarias/pub_api_client) - An API Client for Pub to interact with public package information. 1. [pub_api_client](https://github.com/leoafarias/pub_api_client) - An API Client for Pub to interact with public package information.
1. [xml](https://github.com/renggli/dart-xml) - A lightweight library for parsing, traversing, querying, transforming and building XML documents.
1. [io](https://pub.dev/packages/io) - Utilities for the Dart VM Runtime including support for ANSI colors, file copying, and standard exit code values. 1. [io](https://pub.dev/packages/io) - Utilities for the Dart VM Runtime including support for ANSI colors, file copying, and standard exit code values.
1. [drift_dev](https://drift.simonbinder.eu/) - Dev-dependency for users of drift. Contains the generator and development tools. 1. [drift_dev](https://drift.simonbinder.eu/) - Dev-dependency for users of drift. Contains the generator and development tools.
1. [test](https://pub.dev/packages/test) - A full featured library for writing and running Dart tests across platforms.
1. [auto_route_generator](https://github.com/Milad-Akarie/auto_route_library) - AutoRoute is a declarative routing solution, where everything needed for navigation is automatically generated for you. 1. [auto_route_generator](https://github.com/Milad-Akarie/auto_route_library) - AutoRoute is a declarative routing solution, where everything needed for navigation is automatically generated for you.
1. [desktop_webview_window](https://github.com/MixinNetwork/flutter-plugins/tree/main/packages/desktop_webview_window) - Show a webview window on your flutter desktop application. 1. [desktop_webview_window](https://github.com/MixinNetwork/flutter-plugins/tree/main/packages/desktop_webview_window) - Show a webview window on your flutter desktop application.
1. [disable_battery_optimization](https://github.com/pvsvamsi/Disable-Battery-Optimizations) - Flutter plugin to check and disable battery optimizations. Also shows custom steps to disable the optimizations in devices like mi, xiaomi, samsung, oppo, huawei, oneplus etc 1. [disable_battery_optimization](https://github.com/pvsvamsi/Disable-Battery-Optimizations) - Flutter plugin to check and disable battery optimizations. Also shows custom steps to disable the optimizations in devices like mi, xiaomi, samsung, oppo, huawei, oneplus etc
1. [draggable_scrollbar](https://github.com/fluttercommunity/flutter-draggable-scrollbar) - A scrollbar that can be dragged for quickly navigation through a vertical list. Additional option is showing label next to scrollthumb with information about current item. 1. [draggable_scrollbar](https://github.com/fluttercommunity/flutter-draggable-scrollbar) - A scrollbar that can be dragged for quickly navigation through a vertical list. Additional option is showing label next to scrollthumb with information about current item.
1. [flutter_broadcasts](https://github.com/KRTirtho/flutter_broadcasts.git) - A plugin for sending and receiving broadcasts with Android intents and iOS notifications. 1. [flutter_broadcasts](https://github.com/KRTirtho/flutter_broadcasts.git) - A plugin for sending and receiving broadcasts with Android intents and iOS notifications.
1. [scrobblenaut](https://github.com/Nebulino/Scrobblenaut) - A deadly simple LastFM API Wrapper for Dart. So deadly simple that it's gonna hit the mark. 1. [scrobblenaut](https://github.com/Nebulino/Scrobblenaut) - A deadly simple LastFM API Wrapper for Dart. So deadly simple that it's gonna hit the mark.
1. [yt_dlp_dart](https://github.com/KRTirtho/yt_dlp_dart.git) - yt-dlp binding in Dart 1. [yt_dlp_dart](https://github.com/KRTirtho/yt_dlp_dart.git) - A starting point for Dart libraries or applications.
1. [flutter_new_pipe_extractor](https://github.com/KRTirtho/flutter_new_pipe_extractor) - NewPipeExtractor binding for Flutter (Android only) 1. [flutter_new_pipe_extractor](https://github.com/KRTirtho/flutter_new_pipe_extractor) - NewPipeExtractor binding for Flutter (Android only)
1. [hetu_std](https://github.com/hetu-community/hetu_std.git) - A sample command-line application.
1. [hetu_otp_util](https://github.com/hetu-community/hetu_otp_util.git) - A sample command-line application.
1. [hetu_spotube_plugin](https://github.com/KRTirtho/hetu_spotube_plugin) - A new Flutter package project.
1. [media_kit](https://github.com/media-kit/media-kit) - A cross-platform video player & audio player for Flutter & Dart. Performant, stable, feature-proof & modular.
1. [media_kit_libs_audio](https://github.com/media-kit/media-kit.git) - package:media_kit audio (only) playback native libraries for all platforms.
</details> </details>
<div align="center"><h4>© Copyright Spotube 2025</h4></div> <div align="center"><h4>© Copyright Spotube 2025</h4></div>

View File

@ -477,5 +477,18 @@
"available_plugins": "الإضافات المتوفّرة", "available_plugins": "الإضافات المتوفّرة",
"configure_your_own_metadata_plugin": "تهيئة مزوّد بيانات للقائمة/الألبوم/الفنان/المصدر خاص بك", "configure_your_own_metadata_plugin": "تهيئة مزوّد بيانات للقائمة/الألبوم/الفنان/المصدر خاص بك",
"audio_scrobblers": "أجهزة تتبع الصوت", "audio_scrobblers": "أجهزة تتبع الصوت",
"scrobbling": "التتبع" "scrobbling": "التتبع",
"download_music_format": "تنسيق تنزيل الموسيقى",
"streaming_music_format": "تنسيق بث الموسيقى",
"download_music_quality": "جودة تنزيل الموسيقى",
"streaming_music_quality": "جودة بث الموسيقى",
"default_metadata_source": "مصدر البيانات الوصفية الافتراضي",
"set_default_metadata_source": "تعيين مصدر البيانات الوصفية الافتراضي",
"default_audio_source": "مصدر الصوت الافتراضي",
"set_default_audio_source": "تعيين مصدر الصوت الافتراضي",
"plugins": "الإضافات",
"configure_plugins": "قم بتكوين مزود البيانات الوصفية ومكونات مصدر الصوت الخاصة بك",
"source": "المصدر: ",
"uncompressed": "غير مضغوط",
"dab_music_source_description": "لمحبي الصوتيات. يوفر تدفقات صوتية عالية الجودة/بدون فقدان. مطابقة دقيقة للمسارات بناءً على ISRC."
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "উপলব্ধ প্লাগইনগুলো", "available_plugins": "উপলব্ধ প্লাগইনগুলো",
"configure_your_own_metadata_plugin": "নিজস্ব প্লেলিস্ট/অ্যালবাম/শিল্পী/ফিড মেটাডেটা প্রদানকারী কনফিগার করুন", "configure_your_own_metadata_plugin": "নিজস্ব প্লেলিস্ট/অ্যালবাম/শিল্পী/ফিড মেটাডেটা প্রদানকারী কনফিগার করুন",
"audio_scrobblers": "অডিও স্ক্রোব্বলার্স", "audio_scrobblers": "অডিও স্ক্রোব্বলার্স",
"scrobbling": "স্ক্রোব্বলিং" "scrobbling": "স্ক্রোব্বলিং",
"download_music_format": "গান ডাউনলোডের বিন্যাস",
"streaming_music_format": "গান স্ট্রিমিং এর বিন্যাস",
"download_music_quality": "গান ডাউনলোডের মান",
"streaming_music_quality": "গান স্ট্রিমিং এর মান",
"default_metadata_source": "ডিফল্ট মেটাডেটা উৎস",
"set_default_metadata_source": "ডিফল্ট মেটাডেটা উৎস সেট করুন",
"default_audio_source": "ডিফল্ট অডিও উৎস",
"set_default_audio_source": "ডিফল্ট অডিও উৎস সেট করুন",
"plugins": "প্লাগইন",
"configure_plugins": "আপনার নিজের মেটাডেটা প্রদানকারী এবং অডিও উৎস প্লাগইন কনফিগার করুন",
"source": "উৎস: ",
"uncompressed": "অ-সংকুচিত",
"dab_music_source_description": "অডিওফাইলদের জন্য। উচ্চ-মানের/লসলেস অডিও স্ট্রিম প্রদান করে। সঠিক ISRC ভিত্তিক ট্র্যাক ম্যাচিং।"
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "Complements disponibles", "available_plugins": "Complements disponibles",
"configure_your_own_metadata_plugin": "Configura el teu propi proveïdor de metadades per llistes/reproduccions àlbum/artista/flux", "configure_your_own_metadata_plugin": "Configura el teu propi proveïdor de metadades per llistes/reproduccions àlbum/artista/flux",
"audio_scrobblers": "Scrobblers dàudio", "audio_scrobblers": "Scrobblers dàudio",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "Format de descàrrega de música",
"streaming_music_format": "Format de reproducció de música en temps real",
"download_music_quality": "Qualitat de descàrrega de música",
"streaming_music_quality": "Qualitat de reproducció de música en temps real",
"default_metadata_source": "Font de metadades per defecte",
"set_default_metadata_source": "Estableix la font de metadades per defecte",
"default_audio_source": "Font d'àudio per defecte",
"set_default_audio_source": "Estableix la font d'àudio per defecte",
"plugins": "Connectors",
"configure_plugins": "Configura els teus propis connectors de proveïdor de metadades i de font d'àudio",
"source": "Font: ",
"uncompressed": "Sense comprimir",
"dab_music_source_description": "Per als audiòfils. Ofereix fluxos d'àudio d'alta qualitat/sense pèrdua. Coincidència precisa de pistes basada en ISRC."
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "Dostupné pluginy", "available_plugins": "Dostupné pluginy",
"configure_your_own_metadata_plugin": "Nakonfigurujte si vlastního poskytovatele metadat pro playlist/album/umělec/fid", "configure_your_own_metadata_plugin": "Nakonfigurujte si vlastního poskytovatele metadat pro playlist/album/umělec/fid",
"audio_scrobblers": "Audio scrobblers", "audio_scrobblers": "Audio scrobblers",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "Formát stahování hudby",
"streaming_music_format": "Formát streamování hudby",
"download_music_quality": "Kvalita stahování hudby",
"streaming_music_quality": "Kvalita streamování hudby",
"default_metadata_source": "Výchozí zdroj metadat",
"set_default_metadata_source": "Nastavit výchozí zdroj metadat",
"default_audio_source": "Výchozí zdroj zvuku",
"set_default_audio_source": "Nastavit výchozí zdroj zvuku",
"plugins": "Pluginy",
"configure_plugins": "Konfigurujte své vlastní pluginy poskytovatele metadat a zdroje zvuku",
"source": "Zdroj: ",
"uncompressed": "Nekomprimováno",
"dab_music_source_description": "Pro audiofily. Poskytuje vysoce kvalitní/bezztrátové zvukové toky. Přesná shoda skladeb na základě ISRC."
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "Verfügbare Plugins", "available_plugins": "Verfügbare Plugins",
"configure_your_own_metadata_plugin": "Eigenen Anbieter für Playlist-/Album-/Künstler-/Feed-Metadaten konfigurieren", "configure_your_own_metadata_plugin": "Eigenen Anbieter für Playlist-/Album-/Künstler-/Feed-Metadaten konfigurieren",
"audio_scrobblers": "Audio-Scrobbler", "audio_scrobblers": "Audio-Scrobbler",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "Musik-Downloadformat",
"streaming_music_format": "Musik-Streamingformat",
"download_music_quality": "Musik-Downloadqualität",
"streaming_music_quality": "Musik-Streamingqualität",
"default_metadata_source": "Standard-Metadatenquelle",
"set_default_metadata_source": "Standard-Metadatenquelle festlegen",
"default_audio_source": "Standard-Audioquelle",
"set_default_audio_source": "Standard-Audioquelle festlegen",
"plugins": "Plugins",
"configure_plugins": "Richte deine eigenen Metadatenanbieter- und Audioquellen-Plugins ein",
"source": "Quelle: ",
"uncompressed": "Unkomprimiert",
"dab_music_source_description": "Für Audiophile. Bietet hochwertige/verlustfreie Audiostreams. Präzises ISRC-basiertes Track-Matching."
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "Complementos disponibles", "available_plugins": "Complementos disponibles",
"configure_your_own_metadata_plugin": "Configura tu propio proveedor de metadatos para listas/álbum/artista/feeds", "configure_your_own_metadata_plugin": "Configura tu propio proveedor de metadatos para listas/álbum/artista/feeds",
"audio_scrobblers": "Scrobblers de audio", "audio_scrobblers": "Scrobblers de audio",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "Formato de descarga de música",
"streaming_music_format": "Formato de transmisión de música",
"download_music_quality": "Calidad de descarga de música",
"streaming_music_quality": "Calidad de transmisión de música",
"default_metadata_source": "Fuente de metadatos predeterminada",
"set_default_metadata_source": "Establecer fuente de metadatos predeterminada",
"default_audio_source": "Fuente de audio predeterminada",
"set_default_audio_source": "Establecer fuente de audio predeterminada",
"plugins": "Plugins",
"configure_plugins": "Configura tus propios plugins de proveedor de metadatos y fuente de audio",
"source": "Fuente: ",
"uncompressed": "Sin comprimir",
"dab_music_source_description": "Para audiófilos. Proporciona transmisiones de audio de alta calidad/sin pérdida. Coincidencia precisa de pistas basada en ISRC."
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "Eskaintzen diren pluginak", "available_plugins": "Eskaintzen diren pluginak",
"configure_your_own_metadata_plugin": "Konfiguratu zureko playlists-/album-/artista-/feed-metadaten hornitzailea", "configure_your_own_metadata_plugin": "Konfiguratu zureko playlists-/album-/artista-/feed-metadaten hornitzailea",
"audio_scrobblers": "Audio scrobbler-ak", "audio_scrobblers": "Audio scrobbler-ak",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "Musika deskargatzeko formatua",
"streaming_music_format": "Musika streaming bidezko formatua",
"download_music_quality": "Musika deskargaren kalitatea",
"streaming_music_quality": "Streaming bidezko musika kalitatea",
"default_metadata_source": "Metadatu-iturburu lehenetsia",
"set_default_metadata_source": "Ezarri metadatu-iturburu lehenetsia",
"default_audio_source": "Audio-iturburu lehenetsia",
"set_default_audio_source": "Ezarri audio-iturburu lehenetsia",
"plugins": "Pluginak",
"configure_plugins": "Konfiguratu zure metadatu-hornitzaile eta audio-iturburu pluginak",
"source": "Iturburua: ",
"uncompressed": "Konprimitu gabea",
"dab_music_source_description": "Audiozaleentzat. Kalitate handiko/galerarik gabeko audio-streamak eskaintzen ditu. ISRC oinarritutako pistaren parekatze zehatza."
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "افزونه‌های موجود", "available_plugins": "افزونه‌های موجود",
"configure_your_own_metadata_plugin": "پیکربندی ارائه‌دهندهٔ متادیتا برای پلی‌لیست/آلبوم/هنرمند/فید به‌صورت سفارشی", "configure_your_own_metadata_plugin": "پیکربندی ارائه‌دهندهٔ متادیتا برای پلی‌لیست/آلبوم/هنرمند/فید به‌صورت سفارشی",
"audio_scrobblers": "اسکراب‌بلرهای صوتی", "audio_scrobblers": "اسکراب‌بلرهای صوتی",
"scrobbling": "اسکراب‌بلینگ" "scrobbling": "اسکراب‌بلینگ",
"download_music_format": "فرمت دانلود موسیقی",
"streaming_music_format": "فرمت پخش آنلاین موسیقی",
"download_music_quality": "کیفیت دانلود موسیقی",
"streaming_music_quality": "کیفیت پخش آنلاین موسیقی",
"default_metadata_source": "منبع پیش‌فرض فراداده",
"set_default_metadata_source": "تنظیم منبع پیش‌فرض فراداده",
"default_audio_source": "منبع پیش‌فرض صوت",
"set_default_audio_source": "تنظیم منبع پیش‌فرض صوت",
"plugins": "افزونه‌ها",
"configure_plugins": "افزونه‌های منبع صوت و ارائه‌دهنده فراداده خود را پیکربندی کنید",
"source": "منبع: ",
"uncompressed": "بدون فشرده‌سازی",
"dab_music_source_description": "مخصوص علاقه‌مندان صدا. ارائه‌دهنده استریم‌های باکیفیت/بدون افت. تطبیق دقیق آهنگ بر اساس ISRC."
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "Saatavilla olevat lisäosat", "available_plugins": "Saatavilla olevat lisäosat",
"configure_your_own_metadata_plugin": "Määritä oma soittolistan/albumin/artistin/syötteen metatietojen tarjoaja", "configure_your_own_metadata_plugin": "Määritä oma soittolistan/albumin/artistin/syötteen metatietojen tarjoaja",
"audio_scrobblers": "Äänen scrobblerit", "audio_scrobblers": "Äänen scrobblerit",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "Musiikin latausmuoto",
"streaming_music_format": "Musiikin suoratoistomuoto",
"download_music_quality": "Musiikin latauslaatu",
"streaming_music_quality": "Musiikin suoratoistolaadun",
"default_metadata_source": "Oletusarvoinen metatietolähde",
"set_default_metadata_source": "Aseta oletusmetatietolähde",
"default_audio_source": "Oletusarvoinen äänilähde",
"set_default_audio_source": "Aseta oletusäänilähde",
"plugins": "Laajennukset",
"configure_plugins": "Määritä omat metatietojen tarjoaja- ja äänilähdelaajennukset",
"source": "Lähde: ",
"uncompressed": "Pakkaamaton",
"dab_music_source_description": "Audiofiileille. Tarjoaa korkealaatuisia/häviöttömiä äänivirtoja. Tarkka ISRC-pohjainen kappaleiden tunnistus."
} }

View File

@ -478,5 +478,18 @@
"available_plugins": "Plugins disponibles", "available_plugins": "Plugins disponibles",
"configure_your_own_metadata_plugin": "Configurer votre propre fournisseur de métadonnées de playlist/album/artiste/flux", "configure_your_own_metadata_plugin": "Configurer votre propre fournisseur de métadonnées de playlist/album/artiste/flux",
"audio_scrobblers": "Scrobblers audio", "audio_scrobblers": "Scrobblers audio",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "Format de téléchargement de musique",
"streaming_music_format": "Format de streaming de musique",
"download_music_quality": "Qualité de téléchargement de musique",
"streaming_music_quality": "Qualité de streaming de musique",
"default_metadata_source": "Source de métadonnées par défaut",
"set_default_metadata_source": "Définir la source de métadonnées par défaut",
"default_audio_source": "Source audio par défaut",
"set_default_audio_source": "Définir la source audio par défaut",
"plugins": "Plugins",
"configure_plugins": "Configurez vos propres plugins de fournisseur de métadonnées et de source audio",
"source": "Source : ",
"uncompressed": "Non compressé",
"dab_music_source_description": "Pour les audiophiles. Fournit des flux audio de haute qualité/sans perte. Correspondance précise des pistes basée sur ISRC."
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "उपलब्ध प्लगइन", "available_plugins": "उपलब्ध प्लगइन",
"configure_your_own_metadata_plugin": "अपनी खुद की प्लेलिस्ट/एल्बम/कलाकार/फ़ीड मेटाडेटा प्रदाता कॉन्फ़िगर करें", "configure_your_own_metadata_plugin": "अपनी खुद की प्लेलिस्ट/एल्बम/कलाकार/फ़ीड मेटाडेटा प्रदाता कॉन्फ़िगर करें",
"audio_scrobblers": "ऑडियो स्क्रॉबलर्स", "audio_scrobblers": "ऑडियो स्क्रॉबलर्स",
"scrobbling": "स्क्रॉबलिंग" "scrobbling": "स्क्रॉबलिंग",
"download_music_format": "संगीत डाउनलोड प्रारूप",
"streaming_music_format": "संगीत स्ट्रीमिंग प्रारूप",
"download_music_quality": "संगीत डाउनलोड गुणवत्ता",
"streaming_music_quality": "संगीत स्ट्रीमिंग गुणवत्ता",
"default_metadata_source": "डिफ़ॉल्ट मेटाडेटा स्रोत",
"set_default_metadata_source": "डिफ़ॉल्ट मेटाडेटा स्रोत सेट करें",
"default_audio_source": "डिफ़ॉल्ट ऑडियो स्रोत",
"set_default_audio_source": "डिफ़ॉल्ट ऑडियो स्रोत सेट करें",
"plugins": "प्लगइन्स",
"configure_plugins": "अपने स्वयं के मेटाडेटा प्रदाता और ऑडियो स्रोत प्लगइन्स कॉन्फ़िगर करें",
"source": "स्रोत: ",
"uncompressed": "असंपीड़ित",
"dab_music_source_description": "ऑडियोफाइलों के लिए। उच्च-गुणवत्ता/बिना हानि वाले ऑडियो स्ट्रीम प्रदान करता है। सटीक ISRC आधारित ट्रैक मिलान।"
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "Plugin yang tersedia", "available_plugins": "Plugin yang tersedia",
"configure_your_own_metadata_plugin": "Konfigurasi penyedia metadata playlist/album/artis/feed Anda sendiri", "configure_your_own_metadata_plugin": "Konfigurasi penyedia metadata playlist/album/artis/feed Anda sendiri",
"audio_scrobblers": "Scrobblers Audio", "audio_scrobblers": "Scrobblers Audio",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "Format unduh musik",
"streaming_music_format": "Format streaming musik",
"download_music_quality": "Kualitas unduh musik",
"streaming_music_quality": "Kualitas streaming musik",
"default_metadata_source": "Sumber metadata default",
"set_default_metadata_source": "Atur sumber metadata default",
"default_audio_source": "Sumber audio default",
"set_default_audio_source": "Atur sumber audio default",
"plugins": "Plugin",
"configure_plugins": "Konfigurasi plugin penyedia metadata dan sumber audio Anda sendiri",
"source": "Sumber: ",
"uncompressed": "Tidak terkompresi",
"dab_music_source_description": "Untuk audiophile. Menyediakan aliran audio berkualitas tinggi/tanpa kehilangan. Pencocokkan trek yang akurat berdasarkan ISRC."
} }

View File

@ -478,5 +478,18 @@
"available_plugins": "Plugin disponibili", "available_plugins": "Plugin disponibili",
"configure_your_own_metadata_plugin": "Configura il tuo provider di metadati per playlist/album/artista/feed", "configure_your_own_metadata_plugin": "Configura il tuo provider di metadati per playlist/album/artista/feed",
"audio_scrobblers": "Scrobbler audio", "audio_scrobblers": "Scrobbler audio",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "Formato download musica",
"streaming_music_format": "Formato streaming musica",
"download_music_quality": "Qualità download musica",
"streaming_music_quality": "Qualità streaming musica",
"default_metadata_source": "Fonte metadati predefinita",
"set_default_metadata_source": "Imposta fonte metadati predefinita",
"default_audio_source": "Fonte audio predefinita",
"set_default_audio_source": "Imposta fonte audio predefinita",
"plugins": "Plugin",
"configure_plugins": "Configura i tuoi plugin per fornitore metadati e fonte audio",
"source": "Fonte: ",
"uncompressed": "Non compresso",
"dab_music_source_description": "Per audiophile. Fornisce flussi audio di alta qualità/senza perdita. Abbinamento traccia accurato basato su ISRC."
} }

View File

@ -476,5 +476,18 @@
"available_plugins": "利用可能なプラグイン", "available_plugins": "利用可能なプラグイン",
"configure_your_own_metadata_plugin": "独自のプレイリスト/アルバム/アーティスト/フィードのメタデータプロバイダーを構成", "configure_your_own_metadata_plugin": "独自のプレイリスト/アルバム/アーティスト/フィードのメタデータプロバイダーを構成",
"audio_scrobblers": "オーディオスクロッブラー", "audio_scrobblers": "オーディオスクロッブラー",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "音楽ダウンロード形式",
"streaming_music_format": "音楽ストリーミング形式",
"download_music_quality": "音楽ダウンロード品質",
"streaming_music_quality": "音楽ストリーミング品質",
"default_metadata_source": "デフォルトメタデータソース",
"set_default_metadata_source": "デフォルトメタデータソースを設定",
"default_audio_source": "デフォルトオーディオソース",
"set_default_audio_source": "デフォルトオーディオソースを設定",
"plugins": "プラグイン",
"configure_plugins": "独自のメタデータプロバイダーとオーディオソースプラグインを設定",
"source": "ソース: ",
"uncompressed": "非圧縮",
"dab_music_source_description": "オーディオファイル向け。高品質/ロスレスオーディオストリームを提供。正確なISRCベースのトラックマッチング。"
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "ხელმისაწვდომი პლაგინები", "available_plugins": "ხელმისაწვდომი პლაგინები",
"configure_your_own_metadata_plugin": "დააყენეთ თქვენი საკუთარი პლეილისტის/ალბომის/არტისტის/ფიდის მეტამონაცემების პროვაიდერი", "configure_your_own_metadata_plugin": "დააყენეთ თქვენი საკუთარი პლეილისტის/ალბომის/არტისტის/ფიდის მეტამონაცემების პროვაიდერი",
"audio_scrobblers": "აუდიო სქრობლერები", "audio_scrobblers": "აუდიო სქრობლერები",
"scrobbling": "სქრობლინგი" "scrobbling": "სქრობლინგი",
"download_music_format": "მუსიკის ჩამოტვირთვის ფორმატი",
"streaming_music_format": "სტრიმინგის მუსიკის ფორმატი",
"download_music_quality": "ჩამოტვირთვის ხარისხი",
"streaming_music_quality": "სტრიმინგის ხარისხი",
"default_metadata_source": "ნაგულისხმევი მეტამონაცემების წყარო",
"set_default_metadata_source": "ნაგულისხმევი მეტამონაცემების წყაროს დაყენება",
"default_audio_source": "ნაგულისხმევი აუდიო წყარო",
"set_default_audio_source": "ნაგულისხმევი აუდიო წყაროს დაყენება",
"plugins": "პლაგინები",
"configure_plugins": "თქვენი საკუთარი მეტამონაცემებისა და აუდიო წყაროს პლაგინების კონფიგურაცია",
"source": "წყარო: ",
"uncompressed": "შეუკუმშავი",
"dab_music_source_description": "აუდიოფილებისთვის. უზრუნველყოფს მაღალი ხარისხის/უკომპრესო აუდიო სტრიმებს. ზუსტი შესაბამისობა ISRC-ის მიხედვით."
} }

View File

@ -478,5 +478,18 @@
"available_plugins": "사용 가능한 플러그인", "available_plugins": "사용 가능한 플러그인",
"configure_your_own_metadata_plugin": "자신만의 플레이리스트/앨범/아티스트/피드 메타데이터 제공자 구성", "configure_your_own_metadata_plugin": "자신만의 플레이리스트/앨범/아티스트/피드 메타데이터 제공자 구성",
"audio_scrobblers": "오디오 스크로블러", "audio_scrobblers": "오디오 스크로블러",
"scrobbling": "스크로블링" "scrobbling": "스크로블링",
"download_music_format": "다운로드 음악 포맷",
"streaming_music_format": "스트리밍 음악 포맷",
"download_music_quality": "다운로드 음질",
"streaming_music_quality": "스트리밍 음질",
"default_metadata_source": "기본 메타데이터 소스",
"set_default_metadata_source": "기본 메타데이터 소스 설정",
"default_audio_source": "기본 오디오 소스",
"set_default_audio_source": "기본 오디오 소스 설정",
"plugins": "플러그인",
"configure_plugins": "직접 메타데이터 제공자와 오디오 소스 플러그인을 구성하세요",
"source": "출처: ",
"uncompressed": "비압축",
"dab_music_source_description": "오디오파일을 위한 소스입니다. 고음질/무손실 오디오 스트림을 제공하며 ISRC 기반으로 정확한 트랙 매칭을 지원합니다."
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "उपलब्ध प्लगइनहरू", "available_plugins": "उपलब्ध प्लगइनहरू",
"configure_your_own_metadata_plugin": "तपाईंको आफ्नै प्लेलिस्ट/एल्बम/कलाकार/फिड मेटाडेटा प्रदायक कन्फिगर गर्नुहोस्", "configure_your_own_metadata_plugin": "तपाईंको आफ्नै प्लेलिस्ट/एल्बम/कलाकार/फिड मेटाडेटा प्रदायक कन्फिगर गर्नुहोस्",
"audio_scrobblers": "अडियो स्क्रब्बलरहरू", "audio_scrobblers": "अडियो स्क्रब्बलरहरू",
"scrobbling": "स्क्रब्बलिंग" "scrobbling": "स्क्रब्बलिंग",
"download_music_format": "सङ्गीत डाउनलोड ढाँचा",
"streaming_music_format": "स्ट्रिमिङ सङ्गीत ढाँचा",
"download_music_quality": "डाउनलोड गुणस्तर",
"streaming_music_quality": "स्ट्रिमिङ गुणस्तर",
"default_metadata_source": "पूर्वनिर्धारित मेटाडाटा स्रोत",
"set_default_metadata_source": "पूर्वनिर्धारित मेटाडाटा स्रोत सेट गर्नुहोस्",
"default_audio_source": "पूर्वनिर्धारित अडियो स्रोत",
"set_default_audio_source": "पूर्वनिर्धारित अडियो स्रोत सेट गर्नुहोस्",
"plugins": "प्लगइनहरू",
"configure_plugins": "आफ्नै मेटाडाटा प्रदायक र अडियो स्रोत प्लगइनहरू कन्फिगर गर्नुहोस्",
"source": "स्रोत: ",
"uncompressed": "असंक्षिप्त",
"dab_music_source_description": "अडियोप्रेमीहरूका लागि। उच्च गुणस्तर/लसलेस अडियो स्ट्रिमहरू उपलब्ध गराउँछ। ISRC-मा आधारित सटीक ट्र्याक मिलान।"
} }

View File

@ -477,5 +477,19 @@
"available_plugins": "Beschikbare plugins", "available_plugins": "Beschikbare plugins",
"configure_your_own_metadata_plugin": "Configureer uw eigen metadata-aanbieder voor afspeellijst/album/artiest/feed", "configure_your_own_metadata_plugin": "Configureer uw eigen metadata-aanbieder voor afspeellijst/album/artiest/feed",
"audio_scrobblers": "Audioscrobblers", "audio_scrobblers": "Audioscrobblers",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "Download muziekformaat",
"streaming_music_format": "Streaming muziekformaat",
"download_music_quality": "Downloadkwaliteit",
"streaming_music_quality": "Streamingkwaliteit",
"default_metadata_source": "Standaard metadata-bron",
"set_default_metadata_source": "Standaard metadata-bron instellen",
"default_audio_source": "Standaard audiobron",
"set_default_audio_source": "Standaard audiobron instellen",
"plugins": "Plug-ins",
"configure_plugins": "Configureer je eigen metadata- en audiobron-plug-ins",
"source": "Bron: ",
"uncompressed": "Ongecomprimeerd",
"dab_music_source_description": "Voor audiofielen. Biedt hoge kwaliteit/lossless audiostreams. Nauwkeurige trackmatching op basis van ISRC.",
"audio_source": "Audiobron"
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "Dostępne wtyczki", "available_plugins": "Dostępne wtyczki",
"configure_your_own_metadata_plugin": "Skonfiguruj własnego dostawcę metadanych dla playlisty/albumu/artysty/kanału", "configure_your_own_metadata_plugin": "Skonfiguruj własnego dostawcę metadanych dla playlisty/albumu/artysty/kanału",
"audio_scrobblers": "Scrobblery audio", "audio_scrobblers": "Scrobblery audio",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "Format pobierania muzyki",
"streaming_music_format": "Format strumieniowania muzyki",
"download_music_quality": "Jakość pobierania",
"streaming_music_quality": "Jakość strumieniowania",
"default_metadata_source": "Domyślne źródło metadanych",
"set_default_metadata_source": "Ustaw domyślne źródło metadanych",
"default_audio_source": "Domyślne źródło audio",
"set_default_audio_source": "Ustaw domyślne źródło audio",
"plugins": "Wtyczki",
"configure_plugins": "Skonfiguruj własne wtyczki dostawców metadanych i źródeł audio",
"source": "Źródło: ",
"uncompressed": "Nieskompresowany",
"dab_music_source_description": "Dla audiofilów. Oferuje strumienie audio wysokiej jakości/lossless. Precyzyjne dopasowanie utworów na podstawie ISRC."
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "Plugins disponíveis", "available_plugins": "Plugins disponíveis",
"configure_your_own_metadata_plugin": "Configure seu próprio provedor de metadados de playlist/álbum/artista/feed", "configure_your_own_metadata_plugin": "Configure seu próprio provedor de metadados de playlist/álbum/artista/feed",
"audio_scrobblers": "Scrobblers de áudio", "audio_scrobblers": "Scrobblers de áudio",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "Formato de download de música",
"streaming_music_format": "Formato de streaming de música",
"download_music_quality": "Qualidade de download",
"streaming_music_quality": "Qualidade de streaming",
"default_metadata_source": "Fonte padrão de metadados",
"set_default_metadata_source": "Definir fonte padrão de metadados",
"default_audio_source": "Fonte de áudio padrão",
"set_default_audio_source": "Definir fonte de áudio padrão",
"plugins": "Plugins",
"configure_plugins": "Configure seus próprios plugins de provedores de metadados e fontes de áudio",
"source": "Fonte: ",
"uncompressed": "Não comprimido",
"dab_music_source_description": "Para audiófilos. Fornece streams de áudio de alta qualidade/sem perdas. Correspondência precisa de faixas baseada em ISRC."
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "Доступные плагины", "available_plugins": "Доступные плагины",
"configure_your_own_metadata_plugin": "Настройте свой собственный поставщик метаданных для плейлиста/альбома/артиста/ленты", "configure_your_own_metadata_plugin": "Настройте свой собственный поставщик метаданных для плейлиста/альбома/артиста/ленты",
"audio_scrobblers": "Аудио скробблеры", "audio_scrobblers": "Аудио скробблеры",
"scrobbling": "Скробблинг" "scrobbling": "Скробблинг",
"download_music_format": "Формат загрузки музыки",
"streaming_music_format": "Формат потоковой музыки",
"download_music_quality": "Качество загрузки",
"streaming_music_quality": "Качество стриминга",
"default_metadata_source": "Источник метаданных по умолчанию",
"set_default_metadata_source": "Задать источник метаданных по умолчанию",
"default_audio_source": "Источник аудио по умолчанию",
"set_default_audio_source": "Задать источник аудио по умолчанию",
"plugins": "Плагины",
"configure_plugins": "Настройте собственные плагины провайдеров метаданных и источников аудио",
"source": "Источник: ",
"uncompressed": "Несжатый",
"dab_music_source_description": "Для аудиофилов. Предоставляет высококачественные/lossless аудиопотоки. Точное совпадение треков по ISRC."
} }

View File

@ -475,5 +475,18 @@
"available_plugins": "கிடைக்கக்கூடிய பிளகின்கள்", "available_plugins": "கிடைக்கக்கூடிய பிளகின்கள்",
"configure_your_own_metadata_plugin": "உங்கள் சொந்த பிளேலிஸ்ட்/ஆல்பம்/கலைஞர்/ஊட்ட மெட்டாடேட்டா வழங்குநரை உள்ளமைக்கவும்", "configure_your_own_metadata_plugin": "உங்கள் சொந்த பிளேலிஸ்ட்/ஆல்பம்/கலைஞர்/ஊட்ட மெட்டாடேட்டா வழங்குநரை உள்ளமைக்கவும்",
"audio_scrobblers": "ஆடியோ ஸ்க்ரோப்ளர்கள்", "audio_scrobblers": "ஆடியோ ஸ்க்ரோப்ளர்கள்",
"scrobbling": "ஸ்க்ரோப்ளிங்" "scrobbling": "ஸ்க்ரோப்ளிங்",
"download_music_format": "இசை பதிவிறக்க வடிவம்",
"streaming_music_format": "இசை ஸ்ட்ரீமிங் வடிவம்",
"download_music_quality": "பதிவிறக்க தரம்",
"streaming_music_quality": "ஸ்ட்ரீமிங் தரம்",
"default_metadata_source": "இயல்புநிலை மெட்டாடேட்டா மூலம்",
"set_default_metadata_source": "இயல்புநிலை மெட்டாடேட்டா மூலத்தை அமை",
"default_audio_source": "இயல்புநிலை ஆடியோ மூலம்",
"set_default_audio_source": "இயல்புநிலை ஆடியோ மூலத்தை அமை",
"plugins": "செருகுநிரல்கள்",
"configure_plugins": "உங்கள் சொந்த மெட்டாடேட்டா வழங்குநர் மற்றும் ஆடியோ மூல செருகுநிரல்களை அமைக்கவும்",
"source": "மூலம்: ",
"uncompressed": "அழுத்தப்படாத",
"dab_music_source_description": "ஆடியோஃபைல்களுக்காக. உயர்தர/லாஸ்லெஸ் ஆடியோ ஸ்ட்ரீம்களை வழங்குகிறது. ISRC அடிப்படையில் துல்லியமான பாடல் பொருத்தம்."
} }

View File

@ -478,5 +478,18 @@
"available_plugins": "ปลั๊กอินที่มีอยู่", "available_plugins": "ปลั๊กอินที่มีอยู่",
"configure_your_own_metadata_plugin": "กำหนดค่าผู้ให้บริการเมตาดาต้าเพลย์ลิสต์/อัลบั้ม/ศิลปิน/ฟีดของคุณเอง", "configure_your_own_metadata_plugin": "กำหนดค่าผู้ให้บริการเมตาดาต้าเพลย์ลิสต์/อัลบั้ม/ศิลปิน/ฟีดของคุณเอง",
"audio_scrobblers": "เครื่อง scrobbler เสียง", "audio_scrobblers": "เครื่อง scrobbler เสียง",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "รูปแบบการดาวน์โหลดเพลง",
"streaming_music_format": "รูปแบบการสตรีมเพลง",
"download_music_quality": "คุณภาพการดาวน์โหลด",
"streaming_music_quality": "คุณภาพการสตรีม",
"default_metadata_source": "แหล่งเมตาดาต้าพื้นฐาน",
"set_default_metadata_source": "ตั้งค่าแหล่งเมตาดาต้าพื้นฐาน",
"default_audio_source": "แหล่งเสียงพื้นฐาน",
"set_default_audio_source": "ตั้งค่าแหล่งเสียงพื้นฐาน",
"plugins": "ปลั๊กอิน",
"configure_plugins": "กำหนดค่าปลั๊กอินผู้ให้บริการเมตาดาต้าและแหล่งเสียงของคุณเอง",
"source": "แหล่งที่มา: ",
"uncompressed": "ไม่บีบอัด",
"dab_music_source_description": "สำหรับคนรักเสียงเพลง ให้สตรีมเสียงคุณภาพสูง/ไร้การสูญเสียการบีบอัด การจับคู่แทร็กแม่นยำตาม ISRC"
} }

View File

@ -475,5 +475,18 @@
"available_plugins": "Mga available na plugin", "available_plugins": "Mga available na plugin",
"configure_your_own_metadata_plugin": "I-configure ang iyong sariling playlist/album/artist/feed metadata provider", "configure_your_own_metadata_plugin": "I-configure ang iyong sariling playlist/album/artist/feed metadata provider",
"audio_scrobblers": "Mga Audio Scrobbler", "audio_scrobblers": "Mga Audio Scrobbler",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "I-download na format ng musika",
"streaming_music_format": "Format ng streaming ng musika",
"download_music_quality": "Kalidad ng i-download na musika",
"streaming_music_quality": "Kalidad ng streaming ng musika",
"default_metadata_source": "Default na pinagmulan ng metadata",
"set_default_metadata_source": "Itakda ang default na pinagmulan ng metadata",
"default_audio_source": "Default na pinagmulan ng audio",
"set_default_audio_source": "Itakda ang default na pinagmulan ng audio",
"plugins": "Mga plugin",
"configure_plugins": "I-configure ang sarili mong metadata provider at mga audio source plugin",
"source": "Pinagmulan: ",
"uncompressed": "Hindi naka-compress",
"dab_music_source_description": "Para sa mga audiophile. Nagbibigay ng de-kalidad/walang loss na audio streams. Tumpak na pagtutugma ng track batay sa ISRC."
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "Mevcut eklentiler", "available_plugins": "Mevcut eklentiler",
"configure_your_own_metadata_plugin": "Kendi çalma listenizi/albümünüzü/sanatçınızı/akış meta veri sağlayıcınızı yapılandırın", "configure_your_own_metadata_plugin": "Kendi çalma listenizi/albümünüzü/sanatçınızı/akış meta veri sağlayıcınızı yapılandırın",
"audio_scrobblers": "Ses Scrobbler'lar", "audio_scrobblers": "Ses Scrobbler'lar",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "Müzik indirme formatı",
"streaming_music_format": "Müzik akış formatı",
"download_music_quality": "İndirilen müzik kalitesi",
"streaming_music_quality": "Yayınlanan müzik kalitesi",
"default_metadata_source": "Varsayılan meta veri kaynağı",
"set_default_metadata_source": "Varsayılan meta veri kaynağını ayarla",
"default_audio_source": "Varsayılan ses kaynağı",
"set_default_audio_source": "Varsayılan ses kaynağını ayarla",
"plugins": "Eklentiler",
"configure_plugins": "Kendi meta veri sağlayıcı ve ses kaynağı eklentilerinizi yapılandırın",
"source": "Kaynak: ",
"uncompressed": "Sıkıştırılmamış",
"dab_music_source_description": "Audiophile'ler için. Yüksek kaliteli/kayıpsız ses akışları sağlar. Doğru ISRC tabanlı parça eşleştirme."
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "Доступні плагіни", "available_plugins": "Доступні плагіни",
"configure_your_own_metadata_plugin": "Налаштуйте свій власний провайдер метаданих для плейлиста/альбому/виконавця/стрічки", "configure_your_own_metadata_plugin": "Налаштуйте свій власний провайдер метаданих для плейлиста/альбому/виконавця/стрічки",
"audio_scrobblers": "Аудіо скробблери", "audio_scrobblers": "Аудіо скробблери",
"scrobbling": "Скроблінг" "scrobbling": "Скроблінг",
"download_music_format": "Формат завантаження музики",
"streaming_music_format": "Формат потокової музики",
"download_music_quality": "Якість завантаженої музики",
"streaming_music_quality": "Якість потокової музики",
"default_metadata_source": "Джерело метаданих за замовчуванням",
"set_default_metadata_source": "Встановити джерело метаданих за замовчуванням",
"default_audio_source": "Джерело аудіо за замовчуванням",
"set_default_audio_source": "Встановити джерело аудіо за замовчуванням",
"plugins": "Плагіни",
"configure_plugins": "Налаштуйте власні плагіни метаданих і аудіоджерела",
"source": "Джерело: ",
"uncompressed": "Без стиснення",
"dab_music_source_description": "Для аудіофілів. Забезпечує високоякісні/без втрат аудіопотоки. Точна відповідність треків на основі ISRC."
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "Các plugin có sẵn", "available_plugins": "Các plugin có sẵn",
"configure_your_own_metadata_plugin": "Cấu hình nhà cung cấp siêu dữ liệu danh sách phát/album/nghệ sĩ/nguồn cấp dữ liệu của riêng bạn", "configure_your_own_metadata_plugin": "Cấu hình nhà cung cấp siêu dữ liệu danh sách phát/album/nghệ sĩ/nguồn cấp dữ liệu của riêng bạn",
"audio_scrobblers": "Bộ scrobbler âm thanh", "audio_scrobblers": "Bộ scrobbler âm thanh",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "Định dạng nhạc tải về",
"streaming_music_format": "Định dạng nhạc phát trực tuyến",
"download_music_quality": "Chất lượng nhạc tải về",
"streaming_music_quality": "Chất lượng nhạc phát trực tuyến",
"default_metadata_source": "Nguồn siêu dữ liệu mặc định",
"set_default_metadata_source": "Đặt nguồn siêu dữ liệu mặc định",
"default_audio_source": "Nguồn âm thanh mặc định",
"set_default_audio_source": "Đặt nguồn âm thanh mặc định",
"plugins": "Tiện ích bổ sung",
"configure_plugins": "Cấu hình nhà cung cấp siêu dữ liệu và tiện ích nguồn âm thanh riêng",
"source": "Nguồn: ",
"uncompressed": "Không nén",
"dab_music_source_description": "Dành cho người yêu âm nhạc chất lượng cao. Cung cấp luồng âm thanh chất lượng cao/không nén. Phù hợp bài hát dựa trên ISRC chính xác."
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "可用插件", "available_plugins": "可用插件",
"configure_your_own_metadata_plugin": "配置您自己的播放列表/专辑/艺人/订阅元数据提供者", "configure_your_own_metadata_plugin": "配置您自己的播放列表/专辑/艺人/订阅元数据提供者",
"audio_scrobblers": "音频 Scrobblers", "audio_scrobblers": "音频 Scrobblers",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "下载音乐格式",
"streaming_music_format": "流媒体音乐格式",
"download_music_quality": "下载音乐质量",
"streaming_music_quality": "流媒体音乐质量",
"default_metadata_source": "默认元数据源",
"set_default_metadata_source": "设置默认元数据源",
"default_audio_source": "默认音频源",
"set_default_audio_source": "设置默认音频源",
"plugins": "插件",
"configure_plugins": "配置您自己的元数据提供者和音频源插件",
"source": "来源:",
"uncompressed": "无损",
"dab_music_source_description": "适合发烧友。提供高质量/无损音频流。基于 ISRC 的精确曲目匹配。"
} }

View File

@ -477,5 +477,18 @@
"available_plugins": "可用的外掛程式", "available_plugins": "可用的外掛程式",
"configure_your_own_metadata_plugin": "設定您自己的播放清單/專輯/藝人/動態中繼資料供應商", "configure_your_own_metadata_plugin": "設定您自己的播放清單/專輯/藝人/動態中繼資料供應商",
"audio_scrobblers": "音訊 Scrobblers", "audio_scrobblers": "音訊 Scrobblers",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling",
"download_music_format": "下載音樂格式",
"streaming_music_format": "串流音樂格式",
"download_music_quality": "下載音樂品質",
"streaming_music_quality": "串流音樂品質",
"default_metadata_source": "預設中繼資料來源",
"set_default_metadata_source": "設定預設中繼資料來源",
"default_audio_source": "預設音訊來源",
"set_default_audio_source": "設定預設音訊來源",
"plugins": "外掛程式",
"configure_plugins": "配置您自己的中繼資料提供者和音訊來源外掛程式",
"source": "來源:",
"uncompressed": "未壓縮",
"dab_music_source_description": "適合音響發燒友。提供高品質/無損音訊串流。精確的 ISRC 曲目比對。"
} }

View File

@ -874,16 +874,16 @@ class AppLocalizationsAr extends AppLocalizations {
String get restore_defaults => 'استعادة الإعدادات الافتراضية'; String get restore_defaults => 'استعادة الإعدادات الافتراضية';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'تنسيق تنزيل الموسيقى';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'تنسيق بث الموسيقى';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'جودة تنزيل الموسيقى';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'جودة بث الموسيقى';
@override @override
String get login_with_lastfm => 'تسجيل الدخول باستخدام Last.fm'; String get login_with_lastfm => 'تسجيل الدخول باستخدام Last.fm';
@ -1449,16 +1449,17 @@ class AppLocalizationsAr extends AppLocalizations {
'تقوم هذه الإضافة بتتبع مقاطعك الموسيقية لإنشاء سجل الاستماع الخاص بك.'; 'تقوم هذه الإضافة بتتبع مقاطعك الموسيقية لإنشاء سجل الاستماع الخاص بك.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'مصدر البيانات الوصفية الافتراضي';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source =>
'تعيين مصدر البيانات الوصفية الافتراضي';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'مصدر الصوت الافتراضي';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'تعيين مصدر الصوت الافتراضي';
@override @override
String get set_default => 'تعيين كافتراضي'; String get set_default => 'تعيين كافتراضي';
@ -1519,7 +1520,7 @@ class AppLocalizationsAr extends AppLocalizations {
'المدخل لا يتوافق مع التنسيق المطلوب'; 'المدخل لا يتوافق مع التنسيق المطلوب';
@override @override
String get plugins => 'Plugins'; String get plugins => 'الإضافات';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1545,7 +1546,7 @@ class AppLocalizationsAr extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'قم بتكوين مزود البيانات الوصفية ومكونات مصدر الصوت الخاصة بك';
@override @override
String get audio_scrobblers => 'أجهزة تتبع الصوت'; String get audio_scrobblers => 'أجهزة تتبع الصوت';
@ -1554,12 +1555,12 @@ class AppLocalizationsAr extends AppLocalizations {
String get scrobbling => 'التتبع'; String get scrobbling => 'التتبع';
@override @override
String get source => 'Source: '; String get source => 'المصدر: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'غير مضغوط';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'لمحبي الصوتيات. يوفر تدفقات صوتية عالية الجودة/بدون فقدان. مطابقة دقيقة للمسارات بناءً على ISRC.';
} }

View File

@ -873,16 +873,16 @@ class AppLocalizationsBn extends AppLocalizations {
String get restore_defaults => 'ডিফল্ট সেটিংস পুনরুদ্ধার করুন'; String get restore_defaults => 'ডিফল্ট সেটিংস পুনরুদ্ধার করুন';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'গান ডাউনলোডের বিন্যাস';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'গান স্ট্রিমিং এর বিন্যাস';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'গান ডাউনলোডের মান';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'গান স্ট্রিমিং এর মান';
@override @override
String get login_with_lastfm => 'Last.fm দিয়ে লগইন করুন'; String get login_with_lastfm => 'Last.fm দিয়ে লগইন করুন';
@ -1449,16 +1449,16 @@ class AppLocalizationsBn extends AppLocalizations {
'এই প্লাগইনটি আপনার সঙ্গীত স্ক্রোব্বল করে আপনার শোনা ইতিহাস তৈরি করে।'; 'এই প্লাগইনটি আপনার সঙ্গীত স্ক্রোব্বল করে আপনার শোনা ইতিহাস তৈরি করে।';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'ডিফল্ট মেটাডেটা উৎস';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source => 'ডিফল্ট মেটাডেটা উৎস সেট করুন';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'ডিফল্ট অডিও উৎস';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'ডিফল্ট অডিও উৎস সেট করুন';
@override @override
String get set_default => 'ডিফল্ট হিসাবে নির্ধারণ করুন'; String get set_default => 'ডিফল্ট হিসাবে নির্ধারণ করুন';
@ -1520,7 +1520,7 @@ class AppLocalizationsBn extends AppLocalizations {
'ইনপুট প্রয়োজনীয় ফরম্যাটের সাথে মেলে না'; 'ইনপুট প্রয়োজনীয় ফরম্যাটের সাথে মেলে না';
@override @override
String get plugins => 'Plugins'; String get plugins => 'প্লাগইন';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1546,7 +1546,7 @@ class AppLocalizationsBn extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'আপনার নিজের মেটাডেটা প্রদানকারী এবং অডিও উৎস প্লাগইন কনফিগার করুন';
@override @override
String get audio_scrobblers => 'অডিও স্ক্রোব্বলার্স'; String get audio_scrobblers => 'অডিও স্ক্রোব্বলার্স';
@ -1555,12 +1555,12 @@ class AppLocalizationsBn extends AppLocalizations {
String get scrobbling => 'স্ক্রোব্বলিং'; String get scrobbling => 'স্ক্রোব্বলিং';
@override @override
String get source => 'Source: '; String get source => 'উৎস: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'অ-সংকুচিত';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'অডিওফাইলদের জন্য। উচ্চ-মানের/লসলেস অডিও স্ট্রিম প্রদান করে। সঠিক ISRC ভিত্তিক ট্র্যাক ম্যাচিং।';
} }

View File

@ -876,16 +876,18 @@ class AppLocalizationsCa extends AppLocalizations {
String get restore_defaults => 'Restaura els valors per defecte'; String get restore_defaults => 'Restaura els valors per defecte';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Format de descàrrega de música';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format =>
'Format de reproducció de música en temps real';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Qualitat de descàrrega de música';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality =>
'Qualitat de reproducció de música en temps real';
@override @override
String get login_with_lastfm => 'Inicia la sessió amb Last.fm'; String get login_with_lastfm => 'Inicia la sessió amb Last.fm';
@ -1456,16 +1458,18 @@ class AppLocalizationsCa extends AppLocalizations {
'Aquest complement fa scrobbling de la teva música per generar lhistorial descoltes.'; 'Aquest complement fa scrobbling de la teva música per generar lhistorial descoltes.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Font de metadades per defecte';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source =>
'Estableix la font de metadades per defecte';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Font d\'àudio per defecte';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source =>
'Estableix la font d\'àudio per defecte';
@override @override
String get set_default => 'Establir com a predeterminat'; String get set_default => 'Establir com a predeterminat';
@ -1529,7 +1533,7 @@ class AppLocalizationsCa extends AppLocalizations {
'Lentrada no coincideix amb el format requerit'; 'Lentrada no coincideix amb el format requerit';
@override @override
String get plugins => 'Plugins'; String get plugins => 'Connectors';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1555,7 +1559,7 @@ class AppLocalizationsCa extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Configura els teus propis connectors de proveïdor de metadades i de font d\'àudio';
@override @override
String get audio_scrobblers => 'Scrobblers dàudio'; String get audio_scrobblers => 'Scrobblers dàudio';
@ -1564,12 +1568,12 @@ class AppLocalizationsCa extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'Font: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Sense comprimir';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Per als audiòfils. Ofereix fluxos d\'àudio d\'alta qualitat/sense pèrdua. Coincidència precisa de pistes basada en ISRC.';
} }

View File

@ -869,16 +869,16 @@ class AppLocalizationsCs extends AppLocalizations {
String get restore_defaults => 'Obnovit výchozí'; String get restore_defaults => 'Obnovit výchozí';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Formát stahování hudby';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Formát streamování hudby';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Kvalita stahování hudby';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Kvalita streamování hudby';
@override @override
String get login_with_lastfm => 'Přihlásit se pomocí Last.fm'; String get login_with_lastfm => 'Přihlásit se pomocí Last.fm';
@ -1448,16 +1448,16 @@ class AppLocalizationsCs extends AppLocalizations {
'Tento plugin scrobbles vaši hudbu pro vytvoření historie poslechů.'; 'Tento plugin scrobbles vaši hudbu pro vytvoření historie poslechů.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Výchozí zdroj metadat';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source => 'Nastavit výchozí zdroj metadat';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Výchozí zdroj zvuku';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'Nastavit výchozí zdroj zvuku';
@override @override
String get set_default => 'Nastavit jako výchozí'; String get set_default => 'Nastavit jako výchozí';
@ -1520,7 +1520,7 @@ class AppLocalizationsCs extends AppLocalizations {
'Vstup neodpovídá požadovanému formátu'; 'Vstup neodpovídá požadovanému formátu';
@override @override
String get plugins => 'Plugins'; String get plugins => 'Pluginy';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1546,7 +1546,7 @@ class AppLocalizationsCs extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Konfigurujte své vlastní pluginy poskytovatele metadat a zdroje zvuku';
@override @override
String get audio_scrobblers => 'Audio scrobblers'; String get audio_scrobblers => 'Audio scrobblers';
@ -1555,12 +1555,12 @@ class AppLocalizationsCs extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'Zdroj: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Nekomprimováno';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Pro audiofily. Poskytuje vysoce kvalitní/bezztrátové zvukové toky. Přesná shoda skladeb na základě ISRC.';
} }

View File

@ -879,16 +879,16 @@ class AppLocalizationsDe extends AppLocalizations {
String get restore_defaults => 'Standardeinstellungen wiederherstellen'; String get restore_defaults => 'Standardeinstellungen wiederherstellen';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Musik-Downloadformat';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Musik-Streamingformat';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Musik-Downloadqualität';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Musik-Streamingqualität';
@override @override
String get login_with_lastfm => 'Mit Last.fm anmelden'; String get login_with_lastfm => 'Mit Last.fm anmelden';
@ -1461,16 +1461,17 @@ class AppLocalizationsDe extends AppLocalizations {
'Dieses Plugin scrobbelt Ihre Musik, um Ihre Hörhistorie zu erstellen.'; 'Dieses Plugin scrobbelt Ihre Musik, um Ihre Hörhistorie zu erstellen.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Standard-Metadatenquelle';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source =>
'Standard-Metadatenquelle festlegen';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Standard-Audioquelle';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'Standard-Audioquelle festlegen';
@override @override
String get set_default => 'Als Standard festlegen'; String get set_default => 'Als Standard festlegen';
@ -1558,7 +1559,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Richte deine eigenen Metadatenanbieter- und Audioquellen-Plugins ein';
@override @override
String get audio_scrobblers => 'Audio-Scrobbler'; String get audio_scrobblers => 'Audio-Scrobbler';
@ -1567,12 +1568,12 @@ class AppLocalizationsDe extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'Quelle: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Unkomprimiert';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Für Audiophile. Bietet hochwertige/verlustfreie Audiostreams. Präzises ISRC-basiertes Track-Matching.';
} }

View File

@ -876,16 +876,16 @@ class AppLocalizationsEs extends AppLocalizations {
String get restore_defaults => 'Restaurar valores predeterminados'; String get restore_defaults => 'Restaurar valores predeterminados';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Formato de descarga de música';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Formato de transmisión de música';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Calidad de descarga de música';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Calidad de transmisión de música';
@override @override
String get login_with_lastfm => 'Iniciar sesión con Last.fm'; String get login_with_lastfm => 'Iniciar sesión con Last.fm';
@ -1458,16 +1458,18 @@ class AppLocalizationsEs extends AppLocalizations {
'Este complemento scrobblea tu música para generar tu historial de reproducción.'; 'Este complemento scrobblea tu música para generar tu historial de reproducción.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Fuente de metadatos predeterminada';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source =>
'Establecer fuente de metadatos predeterminada';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Fuente de audio predeterminada';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source =>
'Establecer fuente de audio predeterminada';
@override @override
String get set_default => 'Establecer como predeterminado'; String get set_default => 'Establecer como predeterminado';
@ -1558,7 +1560,7 @@ class AppLocalizationsEs extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Configura tus propios plugins de proveedor de metadatos y fuente de audio';
@override @override
String get audio_scrobblers => 'Scrobblers de audio'; String get audio_scrobblers => 'Scrobblers de audio';
@ -1567,12 +1569,12 @@ class AppLocalizationsEs extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'Fuente: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Sin comprimir';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Para audiófilos. Proporciona transmisiones de audio de alta calidad/sin pérdida. Coincidencia precisa de pistas basada en ISRC.';
} }

View File

@ -876,16 +876,16 @@ class AppLocalizationsEu extends AppLocalizations {
String get restore_defaults => 'Berrezarri berezko balioak'; String get restore_defaults => 'Berrezarri berezko balioak';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Musika deskargatzeko formatua';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Musika streaming bidezko formatua';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Musika deskargaren kalitatea';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Streaming bidezko musika kalitatea';
@override @override
String get login_with_lastfm => 'Hasi saioa Last.fm-n'; String get login_with_lastfm => 'Hasi saioa Last.fm-n';
@ -1457,16 +1457,17 @@ class AppLocalizationsEu extends AppLocalizations {
'Plugin honek zure musika scrobbled egiten du zure entzuteen historia sortzeko.'; 'Plugin honek zure musika scrobbled egiten du zure entzuteen historia sortzeko.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Metadatu-iturburu lehenetsia';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source =>
'Ezarri metadatu-iturburu lehenetsia';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Audio-iturburu lehenetsia';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'Ezarri audio-iturburu lehenetsia';
@override @override
String get set_default => 'Lehenetsi gisa ezarri'; String get set_default => 'Lehenetsi gisa ezarri';
@ -1530,7 +1531,7 @@ class AppLocalizationsEu extends AppLocalizations {
'Sarrera ezin da beharrezko formatutik desberdina izan'; 'Sarrera ezin da beharrezko formatutik desberdina izan';
@override @override
String get plugins => 'Plugins'; String get plugins => 'Pluginak';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1556,7 +1557,7 @@ class AppLocalizationsEu extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Konfiguratu zure metadatu-hornitzaile eta audio-iturburu pluginak';
@override @override
String get audio_scrobblers => 'Audio scrobbler-ak'; String get audio_scrobblers => 'Audio scrobbler-ak';
@ -1565,12 +1566,12 @@ class AppLocalizationsEu extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'Iturburua: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Konprimitu gabea';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Audiozaleentzat. Kalitate handiko/galerarik gabeko audio-streamak eskaintzen ditu. ISRC oinarritutako pistaren parekatze zehatza.';
} }

View File

@ -870,16 +870,16 @@ class AppLocalizationsFa extends AppLocalizations {
String get restore_defaults => 'بازیابی پیش فرض ها'; String get restore_defaults => 'بازیابی پیش فرض ها';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'فرمت دانلود موسیقی';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'فرمت پخش آنلاین موسیقی';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'کیفیت دانلود موسیقی';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'کیفیت پخش آنلاین موسیقی';
@override @override
String get login_with_lastfm => 'ورود با Last.fm'; String get login_with_lastfm => 'ورود با Last.fm';
@ -1447,16 +1447,16 @@ class AppLocalizationsFa extends AppLocalizations {
'این افزونه موسیقی شما را اسکراب می‌کند تا تاریخچهٔ شنیداری‌تان را تولید کند.'; 'این افزونه موسیقی شما را اسکراب می‌کند تا تاریخچهٔ شنیداری‌تان را تولید کند.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'منبع پیش‌فرض فراداده';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source => 'تنظیم منبع پیش‌فرض فراداده';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'منبع پیش‌فرض صوت';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'تنظیم منبع پیش‌فرض صوت';
@override @override
String get set_default => 'تنظیم به عنوان پیش‌فرض'; String get set_default => 'تنظیم به عنوان پیش‌فرض';
@ -1518,7 +1518,7 @@ class AppLocalizationsFa extends AppLocalizations {
'ورودی با قالب مورد نیاز تطابق ندارد'; 'ورودی با قالب مورد نیاز تطابق ندارد';
@override @override
String get plugins => 'Plugins'; String get plugins => 'افزونه‌ها';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1544,7 +1544,7 @@ class AppLocalizationsFa extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'افزونه‌های منبع صوت و ارائه‌دهنده فراداده خود را پیکربندی کنید';
@override @override
String get audio_scrobblers => 'اسکراب‌بلرهای صوتی'; String get audio_scrobblers => 'اسکراب‌بلرهای صوتی';
@ -1553,12 +1553,12 @@ class AppLocalizationsFa extends AppLocalizations {
String get scrobbling => 'اسکراب‌بلینگ'; String get scrobbling => 'اسکراب‌بلینگ';
@override @override
String get source => 'Source: '; String get source => 'منبع: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'بدون فشرده‌سازی';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'مخصوص علاقه‌مندان صدا. ارائه‌دهنده استریم‌های باکیفیت/بدون افت. تطبیق دقیق آهنگ بر اساس ISRC.';
} }

View File

@ -872,16 +872,16 @@ class AppLocalizationsFi extends AppLocalizations {
String get restore_defaults => 'Palauta oletukset'; String get restore_defaults => 'Palauta oletukset';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Musiikin latausmuoto';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Musiikin suoratoistomuoto';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Musiikin latauslaatu';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Musiikin suoratoistolaadun';
@override @override
String get login_with_lastfm => 'Kirjaudu sisään Last.fm:llä'; String get login_with_lastfm => 'Kirjaudu sisään Last.fm:llä';
@ -1449,16 +1449,16 @@ class AppLocalizationsFi extends AppLocalizations {
'Tämä lisäosa scrobblaa musiikkisi luodakseen kuunteluhistoriasi.'; 'Tämä lisäosa scrobblaa musiikkisi luodakseen kuunteluhistoriasi.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Oletusarvoinen metatietolähde';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source => 'Aseta oletusmetatietolähde';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Oletusarvoinen äänilähde';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'Aseta oletusäänilähde';
@override @override
String get set_default => 'Aseta oletukseksi'; String get set_default => 'Aseta oletukseksi';
@ -1518,7 +1518,7 @@ class AppLocalizationsFi extends AppLocalizations {
String get input_does_not_match_format => 'Syöte ei vastaa vaadittua muotoa'; String get input_does_not_match_format => 'Syöte ei vastaa vaadittua muotoa';
@override @override
String get plugins => 'Plugins'; String get plugins => 'Laajennukset';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1544,7 +1544,7 @@ class AppLocalizationsFi extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Määritä omat metatietojen tarjoaja- ja äänilähdelaajennukset';
@override @override
String get audio_scrobblers => 'Äänen scrobblerit'; String get audio_scrobblers => 'Äänen scrobblerit';
@ -1553,12 +1553,12 @@ class AppLocalizationsFi extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'Lähde: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Pakkaamaton';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Audiofiileille. Tarjoaa korkealaatuisia/häviöttömiä äänivirtoja. Tarkka ISRC-pohjainen kappaleiden tunnistus.';
} }

View File

@ -880,16 +880,16 @@ class AppLocalizationsFr extends AppLocalizations {
String get restore_defaults => 'Restaurer les valeurs par défaut'; String get restore_defaults => 'Restaurer les valeurs par défaut';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Format de téléchargement de musique';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Format de streaming de musique';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Qualité de téléchargement de musique';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Qualité de streaming de musique';
@override @override
String get login_with_lastfm => 'Se connecter avec Last.fm'; String get login_with_lastfm => 'Se connecter avec Last.fm';
@ -1463,16 +1463,17 @@ class AppLocalizationsFr extends AppLocalizations {
'Ce plugin scrobble votre musique pour générer votre historique d\'écoute.'; 'Ce plugin scrobble votre musique pour générer votre historique d\'écoute.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Source de métadonnées par défaut';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source =>
'Définir la source de métadonnées par défaut';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Source audio par défaut';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'Définir la source audio par défaut';
@override @override
String get set_default => 'Définir par défaut'; String get set_default => 'Définir par défaut';
@ -1563,7 +1564,7 @@ class AppLocalizationsFr extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Configurez vos propres plugins de fournisseur de métadonnées et de source audio';
@override @override
String get audio_scrobblers => 'Scrobblers audio'; String get audio_scrobblers => 'Scrobblers audio';
@ -1572,12 +1573,12 @@ class AppLocalizationsFr extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'Source : ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Non compressé';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Pour les audiophiles. Fournit des flux audio de haute qualité/sans perte. Correspondance précise des pistes basée sur ISRC.';
} }

View File

@ -872,16 +872,16 @@ class AppLocalizationsHi extends AppLocalizations {
String get restore_defaults => 'डिफ़ॉल्ट सेटिंग्स को बहाल करें'; String get restore_defaults => 'डिफ़ॉल्ट सेटिंग्स को बहाल करें';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'संगीत डाउनलोड प्रारूप';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'संगीत स्ट्रीमिंग प्रारूप';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'संगीत डाउनलोड गुणवत्ता';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'संगीत स्ट्रीमिंग गुणवत्ता';
@override @override
String get login_with_lastfm => 'Last.fm से लॉगिन करें'; String get login_with_lastfm => 'Last.fm से लॉगिन करें';
@ -1454,16 +1454,16 @@ class AppLocalizationsHi extends AppLocalizations {
'यह प्लगइन आपके सुनने के इतिहास को उत्पन्न करने के लिए आपके संगीत को स्क्रॉबल करता है।'; 'यह प्लगइन आपके सुनने के इतिहास को उत्पन्न करने के लिए आपके संगीत को स्क्रॉबल करता है।';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'डिफ़ॉल्ट मेटाडेटा स्रोत';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source => 'डिफ़ॉल्ट मेटाडेटा स्रोत सेट करें';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'डिफ़ॉल्ट ऑडियो स्रोत';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'डिफ़ॉल्ट ऑडियो स्रोत सेट करें';
@override @override
String get set_default => 'डिफ़ॉल्ट सेट करें'; String get set_default => 'डिफ़ॉल्ट सेट करें';
@ -1524,7 +1524,7 @@ class AppLocalizationsHi extends AppLocalizations {
'इनपुट आवश्यक प्रारूप से मेल नहीं खाता है'; 'इनपुट आवश्यक प्रारूप से मेल नहीं खाता है';
@override @override
String get plugins => 'Plugins'; String get plugins => 'प्लगइन्स';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1550,7 +1550,7 @@ class AppLocalizationsHi extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'अपने स्वयं के मेटाडेटा प्रदाता और ऑडियो स्रोत प्लगइन्स कॉन्फ़िगर करें';
@override @override
String get audio_scrobblers => 'ऑडियो स्क्रॉबलर्स'; String get audio_scrobblers => 'ऑडियो स्क्रॉबलर्स';
@ -1559,12 +1559,12 @@ class AppLocalizationsHi extends AppLocalizations {
String get scrobbling => 'स्क्रॉबलिंग'; String get scrobbling => 'स्क्रॉबलिंग';
@override @override
String get source => 'Source: '; String get source => 'स्रोत: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'असंपीड़ित';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'ऑडियोफाइलों के लिए। उच्च-गुणवत्ता/बिना हानि वाले ऑडियो स्ट्रीम प्रदान करता है। सटीक ISRC आधारित ट्रैक मिलान।';
} }

View File

@ -874,16 +874,16 @@ class AppLocalizationsId extends AppLocalizations {
String get restore_defaults => 'Kembalikan semula'; String get restore_defaults => 'Kembalikan semula';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Format unduh musik';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Format streaming musik';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Kualitas unduh musik';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Kualitas streaming musik';
@override @override
String get login_with_lastfm => 'Masuk dengan Last.fm'; String get login_with_lastfm => 'Masuk dengan Last.fm';
@ -1455,16 +1455,16 @@ class AppLocalizationsId extends AppLocalizations {
'Plugin ini scrobble musik Anda untuk menghasilkan riwayat mendengarkan Anda.'; 'Plugin ini scrobble musik Anda untuk menghasilkan riwayat mendengarkan Anda.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Sumber metadata default';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source => 'Atur sumber metadata default';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Sumber audio default';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'Atur sumber audio default';
@override @override
String get set_default => 'Atur sebagai bawaan'; String get set_default => 'Atur sebagai bawaan';
@ -1526,7 +1526,7 @@ class AppLocalizationsId extends AppLocalizations {
'Masukan tidak cocok dengan format yang diperlukan'; 'Masukan tidak cocok dengan format yang diperlukan';
@override @override
String get plugins => 'Plugins'; String get plugins => 'Plugin';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1552,7 +1552,7 @@ class AppLocalizationsId extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Konfigurasi plugin penyedia metadata dan sumber audio Anda sendiri';
@override @override
String get audio_scrobblers => 'Scrobblers Audio'; String get audio_scrobblers => 'Scrobblers Audio';
@ -1561,12 +1561,12 @@ class AppLocalizationsId extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'Sumber: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Tidak terkompresi';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Untuk audiophile. Menyediakan aliran audio berkualitas tinggi/tanpa kehilangan. Pencocokkan trek yang akurat berdasarkan ISRC.';
} }

View File

@ -874,16 +874,16 @@ class AppLocalizationsIt extends AppLocalizations {
String get restore_defaults => 'Ripristina default'; String get restore_defaults => 'Ripristina default';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Formato download musica';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Formato streaming musica';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Qualità download musica';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Qualità streaming musica';
@override @override
String get login_with_lastfm => 'Accesso a Last.fm'; String get login_with_lastfm => 'Accesso a Last.fm';
@ -1454,16 +1454,17 @@ class AppLocalizationsIt extends AppLocalizations {
'Questo plugin scrobbla la tua musica per generare la tua cronologia di ascolti.'; 'Questo plugin scrobbla la tua musica per generare la tua cronologia di ascolti.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Fonte metadati predefinita';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source =>
'Imposta fonte metadati predefinita';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Fonte audio predefinita';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'Imposta fonte audio predefinita';
@override @override
String get set_default => 'Imposta come predefinito'; String get set_default => 'Imposta come predefinito';
@ -1525,7 +1526,7 @@ class AppLocalizationsIt extends AppLocalizations {
'L\'input non corrisponde al formato richiesto'; 'L\'input non corrisponde al formato richiesto';
@override @override
String get plugins => 'Plugins'; String get plugins => 'Plugin';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1551,7 +1552,7 @@ class AppLocalizationsIt extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Configura i tuoi plugin per fornitore metadati e fonte audio';
@override @override
String get audio_scrobblers => 'Scrobbler audio'; String get audio_scrobblers => 'Scrobbler audio';
@ -1560,12 +1561,12 @@ class AppLocalizationsIt extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'Fonte: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Non compresso';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Per audiophile. Fornisce flussi audio di alta qualità/senza perdita. Abbinamento traccia accurato basato su ISRC.';
} }

View File

@ -861,16 +861,16 @@ class AppLocalizationsJa extends AppLocalizations {
String get restore_defaults => '設定を初期化'; String get restore_defaults => '設定を初期化';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => '音楽ダウンロード形式';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => '音楽ストリーミング形式';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => '音楽ダウンロード品質';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => '音楽ストリーミング品質';
@override @override
String get login_with_lastfm => 'Last.fmでログイン'; String get login_with_lastfm => 'Last.fmでログイン';
@ -1422,16 +1422,16 @@ class AppLocalizationsJa extends AppLocalizations {
String get plugin_scrobbling_info => 'このプラグインは、あなたの音楽をscrobbleして視聴履歴を生成します。'; String get plugin_scrobbling_info => 'このプラグインは、あなたの音楽をscrobbleして視聴履歴を生成します。';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'デフォルトメタデータソース';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source => 'デフォルトメタデータソースを設定';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'デフォルトオーディオソース';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'デフォルトオーディオソースを設定';
@override @override
String get set_default => 'デフォルトに設定'; String get set_default => 'デフォルトに設定';
@ -1489,7 +1489,7 @@ class AppLocalizationsJa extends AppLocalizations {
String get input_does_not_match_format => '入力が必須フォーマットと一致しません'; String get input_does_not_match_format => '入力が必須フォーマットと一致しません';
@override @override
String get plugins => 'Plugins'; String get plugins => 'プラグイン';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1514,8 +1514,7 @@ class AppLocalizationsJa extends AppLocalizations {
String get available_plugins => '利用可能なプラグイン'; String get available_plugins => '利用可能なプラグイン';
@override @override
String get configure_plugins => String get configure_plugins => '独自のメタデータプロバイダーとオーディオソースプラグインを設定';
'Configure your own metadata provider and audio source plugins';
@override @override
String get audio_scrobblers => 'オーディオスクロッブラー'; String get audio_scrobblers => 'オーディオスクロッブラー';
@ -1524,12 +1523,12 @@ class AppLocalizationsJa extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'ソース: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => '非圧縮';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'オーディオファイル向け。高品質/ロスレスオーディオストリームを提供。正確なISRCベースのトラックマッチング。';
} }

View File

@ -872,16 +872,16 @@ class AppLocalizationsKa extends AppLocalizations {
String get restore_defaults => 'ნაგულისხმევი პარამეტრების აღდგენა'; String get restore_defaults => 'ნაგულისხმევი პარამეტრების აღდგენა';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'მუსიკის ჩამოტვირთვის ფორმატი';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'სტრიმინგის მუსიკის ფორმატი';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'ჩამოტვირთვის ხარისხი';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'სტრიმინგის ხარისხი';
@override @override
String get login_with_lastfm => 'Last.fm-ით შესვლა'; String get login_with_lastfm => 'Last.fm-ით შესვლა';
@ -1454,16 +1454,17 @@ class AppLocalizationsKa extends AppLocalizations {
'ეს პლაგინი აწარმოებს თქვენი მუსიკის სქრობლინგს, რათა შექმნას თქვენი მოსმენის ისტორია.'; 'ეს პლაგინი აწარმოებს თქვენი მუსიკის სქრობლინგს, რათა შექმნას თქვენი მოსმენის ისტორია.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'ნაგულისხმევი მეტამონაცემების წყარო';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source =>
'ნაგულისხმევი მეტამონაცემების წყაროს დაყენება';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'ნაგულისხმევი აუდიო წყარო';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'ნაგულისხმევი აუდიო წყაროს დაყენება';
@override @override
String get set_default => 'ნაგულისხმევად დაყენება'; String get set_default => 'ნაგულისხმევად დაყენება';
@ -1526,7 +1527,7 @@ class AppLocalizationsKa extends AppLocalizations {
'შეყვანა არ ემთხვევა საჭირო ფორმატს'; 'შეყვანა არ ემთხვევა საჭირო ფორმატს';
@override @override
String get plugins => 'Plugins'; String get plugins => 'პლაგინები';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1552,7 +1553,7 @@ class AppLocalizationsKa extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'თქვენი საკუთარი მეტამონაცემებისა და აუდიო წყაროს პლაგინების კონფიგურაცია';
@override @override
String get audio_scrobblers => 'აუდიო სქრობლერები'; String get audio_scrobblers => 'აუდიო სქრობლერები';
@ -1561,12 +1562,12 @@ class AppLocalizationsKa extends AppLocalizations {
String get scrobbling => 'სქრობლინგი'; String get scrobbling => 'სქრობლინგი';
@override @override
String get source => 'Source: '; String get source => 'წყარო: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'შეუკუმშავი';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'აუდიოფილებისთვის. უზრუნველყოფს მაღალი ხარისხის/უკომპრესო აუდიო სტრიმებს. ზუსტი შესაბამისობა ISRC-ის მიხედვით.';
} }

View File

@ -862,16 +862,16 @@ class AppLocalizationsKo extends AppLocalizations {
String get restore_defaults => '기본값으로 복원'; String get restore_defaults => '기본값으로 복원';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => '다운로드 음악 포맷';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => '스트리밍 음악 포맷';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => '다운로드 음질';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => '스트리밍 음질';
@override @override
String get login_with_lastfm => 'Last.fm에 로그인'; String get login_with_lastfm => 'Last.fm에 로그인';
@ -1427,16 +1427,16 @@ class AppLocalizationsKo extends AppLocalizations {
String get plugin_scrobbling_info => '이 플러그인은 음악을 스크로블하여 청취 기록을 생성합니다.'; String get plugin_scrobbling_info => '이 플러그인은 음악을 스크로블하여 청취 기록을 생성합니다.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => '기본 메타데이터 소스';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source => '기본 메타데이터 소스 설정';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => '기본 오디오 소스';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => '기본 오디오 소스 설정';
@override @override
String get set_default => '기본값으로 설정'; String get set_default => '기본값으로 설정';
@ -1494,7 +1494,7 @@ class AppLocalizationsKo extends AppLocalizations {
String get input_does_not_match_format => '입력이 필요한 형식과 일치하지 않습니다'; String get input_does_not_match_format => '입력이 필요한 형식과 일치하지 않습니다';
@override @override
String get plugins => 'Plugins'; String get plugins => '플러그인';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1518,8 +1518,7 @@ class AppLocalizationsKo extends AppLocalizations {
String get available_plugins => '사용 가능한 플러그인'; String get available_plugins => '사용 가능한 플러그인';
@override @override
String get configure_plugins => String get configure_plugins => '직접 메타데이터 제공자와 오디오 소스 플러그인을 구성하세요';
'Configure your own metadata provider and audio source plugins';
@override @override
String get audio_scrobblers => '오디오 스크로블러'; String get audio_scrobblers => '오디오 스크로블러';
@ -1528,12 +1527,12 @@ class AppLocalizationsKo extends AppLocalizations {
String get scrobbling => '스크로블링'; String get scrobbling => '스크로블링';
@override @override
String get source => 'Source: '; String get source => '출처: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => '비압축';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; '오디오파일을 위한 소스입니다. 고음질/무손실 오디오 스트림을 제공하며 ISRC 기반으로 정확한 트랙 매칭을 지원합니다.';
} }

View File

@ -880,16 +880,16 @@ class AppLocalizationsNe extends AppLocalizations {
String get restore_defaults => 'पूर्वनिर्धारितहरू पुनः स्थापित गर्नुहोस्'; String get restore_defaults => 'पूर्वनिर्धारितहरू पुनः स्थापित गर्नुहोस्';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'सङ्गीत डाउनलोड ढाँचा';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'स्ट्रिमिङ सङ्गीत ढाँचा';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'डाउनलोड गुणस्तर';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'स्ट्रिमिङ गुणस्तर';
@override @override
String get login_with_lastfm => 'लास्ट.एफ.एम सँग लगइन गर्नुहोस्'; String get login_with_lastfm => 'लास्ट.एफ.एम सँग लगइन गर्नुहोस्';
@ -1460,16 +1460,18 @@ class AppLocalizationsNe extends AppLocalizations {
'यो प्लगइनले तपाईंको सुन्ने इतिहास उत्पन्न गर्न तपाईंको संगीतलाई स्क्रब्बल गर्दछ।'; 'यो प्लगइनले तपाईंको सुन्ने इतिहास उत्पन्न गर्न तपाईंको संगीतलाई स्क्रब्बल गर्दछ।';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'पूर्वनिर्धारित मेटाडाटा स्रोत';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source =>
'पूर्वनिर्धारित मेटाडाटा स्रोत सेट गर्नुहोस्';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'पूर्वनिर्धारित अडियो स्रोत';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source =>
'पूर्वनिर्धारित अडियो स्रोत सेट गर्नुहोस्';
@override @override
String get set_default => 'पूर्वनिर्धारित सेट गर्नुहोस्'; String get set_default => 'पूर्वनिर्धारित सेट गर्नुहोस्';
@ -1530,7 +1532,7 @@ class AppLocalizationsNe extends AppLocalizations {
String get input_does_not_match_format => 'इनपुट आवश्यक ढाँचासँग मेल खाँदैन'; String get input_does_not_match_format => 'इनपुट आवश्यक ढाँचासँग मेल खाँदैन';
@override @override
String get plugins => 'Plugins'; String get plugins => 'प्लगइनहरू';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1556,7 +1558,7 @@ class AppLocalizationsNe extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'आफ्नै मेटाडाटा प्रदायक र अडियो स्रोत प्लगइनहरू कन्फिगर गर्नुहोस्';
@override @override
String get audio_scrobblers => 'अडियो स्क्रब्बलरहरू'; String get audio_scrobblers => 'अडियो स्क्रब्बलरहरू';
@ -1565,12 +1567,12 @@ class AppLocalizationsNe extends AppLocalizations {
String get scrobbling => 'स्क्रब्बलिंग'; String get scrobbling => 'स्क्रब्बलिंग';
@override @override
String get source => 'Source: '; String get source => 'स्रोत: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'असंक्षिप्त';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'अडियोप्रेमीहरूका लागि। उच्च गुणस्तर/लसलेस अडियो स्ट्रिमहरू उपलब्ध गराउँछ। ISRC-मा आधारित सटीक ट्र्याक मिलान।';
} }

View File

@ -815,7 +815,7 @@ class AppLocalizationsNl extends AppLocalizations {
String get search_mode => 'Zoekmodus'; String get search_mode => 'Zoekmodus';
@override @override
String get audio_source => 'Audio Source'; String get audio_source => 'Audiobron';
@override @override
String get ok => 'Oké'; String get ok => 'Oké';
@ -872,16 +872,16 @@ class AppLocalizationsNl extends AppLocalizations {
String get restore_defaults => 'Standaardwaarden herstellen'; String get restore_defaults => 'Standaardwaarden herstellen';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Download muziekformaat';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Streaming muziekformaat';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Downloadkwaliteit';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Streamingkwaliteit';
@override @override
String get login_with_lastfm => 'Inloggen met Last.fm'; String get login_with_lastfm => 'Inloggen met Last.fm';
@ -1452,16 +1452,16 @@ class AppLocalizationsNl extends AppLocalizations {
'Deze plugin scrobblet uw muziek om uw luistergeschiedenis te genereren.'; 'Deze plugin scrobblet uw muziek om uw luistergeschiedenis te genereren.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Standaard metadata-bron';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source => 'Standaard metadata-bron instellen';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Standaard audiobron';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'Standaard audiobron instellen';
@override @override
String get set_default => 'Instellen als standaard'; String get set_default => 'Instellen als standaard';
@ -1524,7 +1524,7 @@ class AppLocalizationsNl extends AppLocalizations {
'Invoer komt niet overeen met het vereiste formaat'; 'Invoer komt niet overeen met het vereiste formaat';
@override @override
String get plugins => 'Plugins'; String get plugins => 'Plug-ins';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1550,7 +1550,7 @@ class AppLocalizationsNl extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Configureer je eigen metadata- en audiobron-plug-ins';
@override @override
String get audio_scrobblers => 'Audioscrobblers'; String get audio_scrobblers => 'Audioscrobblers';
@ -1559,12 +1559,12 @@ class AppLocalizationsNl extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'Bron: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Ongecomprimeerd';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Voor audiofielen. Biedt hoge kwaliteit/lossless audiostreams. Nauwkeurige trackmatching op basis van ISRC.';
} }

View File

@ -873,16 +873,16 @@ class AppLocalizationsPl extends AppLocalizations {
String get restore_defaults => 'Przywróć domyślne'; String get restore_defaults => 'Przywróć domyślne';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Format pobierania muzyki';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Format strumieniowania muzyki';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Jakość pobierania';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Jakość strumieniowania';
@override @override
String get login_with_lastfm => 'Zaloguj się z Last.fm'; String get login_with_lastfm => 'Zaloguj się z Last.fm';
@ -1455,16 +1455,16 @@ class AppLocalizationsPl extends AppLocalizations {
'Ta wtyczka scrobbluje Twoją muzykę, aby wygenerować historię odsłuchań.'; 'Ta wtyczka scrobbluje Twoją muzykę, aby wygenerować historię odsłuchań.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Domyślne źródło metadanych';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source => 'Ustaw domyślne źródło metadanych';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Domyślne źródło audio';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'Ustaw domyślne źródło audio';
@override @override
String get set_default => 'Ustaw jako domyślną'; String get set_default => 'Ustaw jako domyślną';
@ -1526,7 +1526,7 @@ class AppLocalizationsPl extends AppLocalizations {
'Wprowadzony tekst nie pasuje do wymaganego formatu'; 'Wprowadzony tekst nie pasuje do wymaganego formatu';
@override @override
String get plugins => 'Plugins'; String get plugins => 'Wtyczki';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1552,7 +1552,7 @@ class AppLocalizationsPl extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Skonfiguruj własne wtyczki dostawców metadanych i źródeł audio';
@override @override
String get audio_scrobblers => 'Scrobblery audio'; String get audio_scrobblers => 'Scrobblery audio';
@ -1561,12 +1561,12 @@ class AppLocalizationsPl extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'Źródło: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Nieskompresowany';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Dla audiofilów. Oferuje strumienie audio wysokiej jakości/lossless. Precyzyjne dopasowanie utworów na podstawie ISRC.';
} }

View File

@ -873,16 +873,16 @@ class AppLocalizationsPt extends AppLocalizations {
String get restore_defaults => 'Restaurar padrões'; String get restore_defaults => 'Restaurar padrões';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Formato de download de música';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Formato de streaming de música';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Qualidade de download';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Qualidade de streaming';
@override @override
String get login_with_lastfm => 'Iniciar sessão com o Last.fm'; String get login_with_lastfm => 'Iniciar sessão com o Last.fm';
@ -1452,16 +1452,16 @@ class AppLocalizationsPt extends AppLocalizations {
'Este plugin faz o scrobbling de sua música para gerar seu histórico de audição.'; 'Este plugin faz o scrobbling de sua música para gerar seu histórico de audição.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Fonte padrão de metadados';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source => 'Definir fonte padrão de metadados';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Fonte de áudio padrão';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'Definir fonte de áudio padrão';
@override @override
String get set_default => 'Definir como padrão'; String get set_default => 'Definir como padrão';
@ -1549,7 +1549,7 @@ class AppLocalizationsPt extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Configure seus próprios plugins de provedores de metadados e fontes de áudio';
@override @override
String get audio_scrobblers => 'Scrobblers de áudio'; String get audio_scrobblers => 'Scrobblers de áudio';
@ -1558,12 +1558,12 @@ class AppLocalizationsPt extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'Fonte: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Não comprimido';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Para audiófilos. Fornece streams de áudio de alta qualidade/sem perdas. Correspondência precisa de faixas baseada em ISRC.';
} }

View File

@ -874,16 +874,16 @@ class AppLocalizationsRu extends AppLocalizations {
String get restore_defaults => 'Восстановить настройки по умолчанию'; String get restore_defaults => 'Восстановить настройки по умолчанию';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Формат загрузки музыки';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Формат потоковой музыки';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Качество загрузки';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Качество стриминга';
@override @override
String get login_with_lastfm => 'Войти с помощью Last.fm'; String get login_with_lastfm => 'Войти с помощью Last.fm';
@ -1454,16 +1454,17 @@ class AppLocalizationsRu extends AppLocalizations {
'Этот плагин скробблит вашу музыку для создания вашей истории прослушиваний.'; 'Этот плагин скробблит вашу музыку для создания вашей истории прослушиваний.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Источник метаданных по умолчанию';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source =>
'Задать источник метаданных по умолчанию';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Источник аудио по умолчанию';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'Задать источник аудио по умолчанию';
@override @override
String get set_default => 'Установить по умолчанию'; String get set_default => 'Установить по умолчанию';
@ -1526,7 +1527,7 @@ class AppLocalizationsRu extends AppLocalizations {
'Введенные данные не соответствуют требуемому формату'; 'Введенные данные не соответствуют требуемому формату';
@override @override
String get plugins => 'Plugins'; String get plugins => 'Плагины';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1552,7 +1553,7 @@ class AppLocalizationsRu extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Настройте собственные плагины провайдеров метаданных и источников аудио';
@override @override
String get audio_scrobblers => 'Аудио скробблеры'; String get audio_scrobblers => 'Аудио скробблеры';
@ -1561,12 +1562,12 @@ class AppLocalizationsRu extends AppLocalizations {
String get scrobbling => 'Скробблинг'; String get scrobbling => 'Скробблинг';
@override @override
String get source => 'Source: '; String get source => 'Источник: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Несжатый';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Для аудиофилов. Предоставляет высококачественные/lossless аудиопотоки. Точное совпадение треков по ISRC.';
} }

View File

@ -879,16 +879,16 @@ class AppLocalizationsTa extends AppLocalizations {
String get restore_defaults => 'இயல்புநிலைகளை மீட்டமை'; String get restore_defaults => 'இயல்புநிலைகளை மீட்டமை';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'இசை பதிவிறக்க வடிவம்';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'இசை ஸ்ட்ரீமிங் வடிவம்';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'பதிவிறக்க தரம்';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'ஸ்ட்ரீமிங் தரம்';
@override @override
String get login_with_lastfm => 'Last.fm உடன் உள்நுழைக'; String get login_with_lastfm => 'Last.fm உடன் உள்நுழைக';
@ -1461,16 +1461,17 @@ class AppLocalizationsTa extends AppLocalizations {
'இந்த பிளகின் உங்கள் கேட்பதின் வரலாற்றை உருவாக்க உங்கள் இசையை ஸ்க்ரோப்ள் செய்கிறது.'; 'இந்த பிளகின் உங்கள் கேட்பதின் வரலாற்றை உருவாக்க உங்கள் இசையை ஸ்க்ரோப்ள் செய்கிறது.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'இயல்புநிலை மெட்டாடேட்டா மூலம்';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source =>
'இயல்புநிலை மெட்டாடேட்டா மூலத்தை அமை';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'இயல்புநிலை ஆடியோ மூலம்';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'இயல்புநிலை ஆடியோ மூலத்தை அமை';
@override @override
String get set_default => 'இயல்புநிலையாக அமைக்கவும்'; String get set_default => 'இயல்புநிலையாக அமைக்கவும்';
@ -1532,7 +1533,7 @@ class AppLocalizationsTa extends AppLocalizations {
'உள்ளீடு தேவையான வடிவத்துடன் பொருந்தவில்லை'; 'உள்ளீடு தேவையான வடிவத்துடன் பொருந்தவில்லை';
@override @override
String get plugins => 'Plugins'; String get plugins => 'செருகுநிரல்கள்';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1558,7 +1559,7 @@ class AppLocalizationsTa extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'உங்கள் சொந்த மெட்டாடேட்டா வழங்குநர் மற்றும் ஆடியோ மூல செருகுநிரல்களை அமைக்கவும்';
@override @override
String get audio_scrobblers => 'ஆடியோ ஸ்க்ரோப்ளர்கள்'; String get audio_scrobblers => 'ஆடியோ ஸ்க்ரோப்ளர்கள்';
@ -1567,12 +1568,12 @@ class AppLocalizationsTa extends AppLocalizations {
String get scrobbling => 'ஸ்க்ரோப்ளிங்'; String get scrobbling => 'ஸ்க்ரோப்ளிங்';
@override @override
String get source => 'Source: '; String get source => 'மூலம்: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'அழுத்தப்படாத';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'ஆடியோஃபைல்களுக்காக. உயர்தர/லாஸ்லெஸ் ஆடியோ ஸ்ட்ரீம்களை வழங்குகிறது. ISRC அடிப்படையில் துல்லியமான பாடல் பொருத்தம்.';
} }

View File

@ -872,16 +872,16 @@ class AppLocalizationsTh extends AppLocalizations {
String get restore_defaults => 'คืนค่าเริ่มต้น'; String get restore_defaults => 'คืนค่าเริ่มต้น';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'รูปแบบการดาวน์โหลดเพลง';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'รูปแบบการสตรีมเพลง';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'คุณภาพการดาวน์โหลด';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'คุณภาพการสตรีม';
@override @override
String get login_with_lastfm => 'เข้าสู่ระบบด้วย Last.fm'; String get login_with_lastfm => 'เข้าสู่ระบบด้วย Last.fm';
@ -1446,16 +1446,16 @@ class AppLocalizationsTh extends AppLocalizations {
'ปลั๊กอินนี้จะ scrobble เพลงของคุณเพื่อสร้างประวัติการฟังของคุณ'; 'ปลั๊กอินนี้จะ scrobble เพลงของคุณเพื่อสร้างประวัติการฟังของคุณ';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'แหล่งเมตาดาต้าพื้นฐาน';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source => 'ตั้งค่าแหล่งเมตาดาต้าพื้นฐาน';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'แหล่งเสียงพื้นฐาน';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'ตั้งค่าแหล่งเสียงพื้นฐาน';
@override @override
String get set_default => 'ตั้งค่าเริ่มต้น'; String get set_default => 'ตั้งค่าเริ่มต้น';
@ -1515,7 +1515,7 @@ class AppLocalizationsTh extends AppLocalizations {
String get input_does_not_match_format => 'อินพุตไม่ตรงกับรูปแบบที่ต้องการ'; String get input_does_not_match_format => 'อินพุตไม่ตรงกับรูปแบบที่ต้องการ';
@override @override
String get plugins => 'Plugins'; String get plugins => 'ปลั๊กอิน';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1541,7 +1541,7 @@ class AppLocalizationsTh extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'กำหนดค่าปลั๊กอินผู้ให้บริการเมตาดาต้าและแหล่งเสียงของคุณเอง';
@override @override
String get audio_scrobblers => 'เครื่อง scrobbler เสียง'; String get audio_scrobblers => 'เครื่อง scrobbler เสียง';
@ -1550,12 +1550,12 @@ class AppLocalizationsTh extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'แหล่งที่มา: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'ไม่บีบอัด';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'สำหรับคนรักเสียงเพลง ให้สตรีมเสียงคุณภาพสูง/ไร้การสูญเสียการบีบอัด การจับคู่แทร็กแม่นยำตาม ISRC';
} }

View File

@ -878,16 +878,16 @@ class AppLocalizationsTl extends AppLocalizations {
String get restore_defaults => 'Ibalik ang mga default'; String get restore_defaults => 'Ibalik ang mga default';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'I-download na format ng musika';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Format ng streaming ng musika';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Kalidad ng i-download na musika';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Kalidad ng streaming ng musika';
@override @override
String get login_with_lastfm => 'Mag-login gamit ang Last.fm'; String get login_with_lastfm => 'Mag-login gamit ang Last.fm';
@ -1462,16 +1462,18 @@ class AppLocalizationsTl extends AppLocalizations {
'Sinis-scrobble ng plugin na ito ang iyong musika upang mabuo ang iyong kasaysayan ng pakikinig.'; 'Sinis-scrobble ng plugin na ito ang iyong musika upang mabuo ang iyong kasaysayan ng pakikinig.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Default na pinagmulan ng metadata';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source =>
'Itakda ang default na pinagmulan ng metadata';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Default na pinagmulan ng audio';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source =>
'Itakda ang default na pinagmulan ng audio';
@override @override
String get set_default => 'Itakda bilang default'; String get set_default => 'Itakda bilang default';
@ -1533,7 +1535,7 @@ class AppLocalizationsTl extends AppLocalizations {
'Ang input ay hindi tumutugma sa kinakailangang format'; 'Ang input ay hindi tumutugma sa kinakailangang format';
@override @override
String get plugins => 'Plugins'; String get plugins => 'Mga plugin';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1559,7 +1561,7 @@ class AppLocalizationsTl extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'I-configure ang sarili mong metadata provider at mga audio source plugin';
@override @override
String get audio_scrobblers => 'Mga Audio Scrobbler'; String get audio_scrobblers => 'Mga Audio Scrobbler';
@ -1568,12 +1570,12 @@ class AppLocalizationsTl extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'Pinagmulan: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Hindi naka-compress';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Para sa mga audiophile. Nagbibigay ng de-kalidad/walang loss na audio streams. Tumpak na pagtutugma ng track batay sa ISRC.';
} }

View File

@ -875,16 +875,16 @@ class AppLocalizationsTr extends AppLocalizations {
String get restore_defaults => 'Varsayılanları geri yükle'; String get restore_defaults => 'Varsayılanları geri yükle';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Müzik indirme formatı';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Müzik akış formatı';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'İndirilen müzik kalitesi';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Yayınlanan müzik kalitesi';
@override @override
String get login_with_lastfm => 'Last.fm ile giriş yap'; String get login_with_lastfm => 'Last.fm ile giriş yap';
@ -1456,16 +1456,17 @@ class AppLocalizationsTr extends AppLocalizations {
'Bu eklenti, dinleme geçmişinizi oluşturmak için müziğinizi scrobble eder.'; 'Bu eklenti, dinleme geçmişinizi oluşturmak için müziğinizi scrobble eder.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Varsayılan meta veri kaynağı';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source =>
'Varsayılan meta veri kaynağını ayarla';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Varsayılan ses kaynağı';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'Varsayılan ses kaynağını ayarla';
@override @override
String get set_default => 'Varsayılan olarak ayarla'; String get set_default => 'Varsayılan olarak ayarla';
@ -1526,7 +1527,7 @@ class AppLocalizationsTr extends AppLocalizations {
String get input_does_not_match_format => 'Girdi, gerekli biçimle eşleşmiyor'; String get input_does_not_match_format => 'Girdi, gerekli biçimle eşleşmiyor';
@override @override
String get plugins => 'Plugins'; String get plugins => 'Eklentiler';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1552,7 +1553,7 @@ class AppLocalizationsTr extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Kendi meta veri sağlayıcı ve ses kaynağı eklentilerinizi yapılandırın';
@override @override
String get audio_scrobblers => 'Ses Scrobbler\'lar'; String get audio_scrobblers => 'Ses Scrobbler\'lar';
@ -1561,12 +1562,12 @@ class AppLocalizationsTr extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'Kaynak: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Sıkıştırılmamış';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Audiophile\'ler için. Yüksek kaliteli/kayıpsız ses akışları sağlar. Doğru ISRC tabanlı parça eşleştirme.';
} }

View File

@ -875,16 +875,16 @@ class AppLocalizationsUk extends AppLocalizations {
String get restore_defaults => 'Відновити налаштування за замовчуванням'; String get restore_defaults => 'Відновити налаштування за замовчуванням';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Формат завантаження музики';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Формат потокової музики';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Якість завантаженої музики';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Якість потокової музики';
@override @override
String get login_with_lastfm => 'Увійти з Last.fm'; String get login_with_lastfm => 'Увійти з Last.fm';
@ -1452,16 +1452,18 @@ class AppLocalizationsUk extends AppLocalizations {
'Цей плагін скроббить вашу музику, щоб створити вашу історію прослуховувань.'; 'Цей плагін скроббить вашу музику, щоб створити вашу історію прослуховувань.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Джерело метаданих за замовчуванням';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source =>
'Встановити джерело метаданих за замовчуванням';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Джерело аудіо за замовчуванням';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source =>
'Встановити джерело аудіо за замовчуванням';
@override @override
String get set_default => 'Встановити за замовчуванням'; String get set_default => 'Встановити за замовчуванням';
@ -1522,7 +1524,7 @@ class AppLocalizationsUk extends AppLocalizations {
'Введені дані не відповідають необхідному формату'; 'Введені дані не відповідають необхідному формату';
@override @override
String get plugins => 'Plugins'; String get plugins => 'Плагіни';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1548,7 +1550,7 @@ class AppLocalizationsUk extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Налаштуйте власні плагіни метаданих і аудіоджерела';
@override @override
String get audio_scrobblers => 'Аудіо скробблери'; String get audio_scrobblers => 'Аудіо скробблери';
@ -1557,12 +1559,12 @@ class AppLocalizationsUk extends AppLocalizations {
String get scrobbling => 'Скроблінг'; String get scrobbling => 'Скроблінг';
@override @override
String get source => 'Source: '; String get source => 'Джерело: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Без стиснення';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Для аудіофілів. Забезпечує високоякісні/без втрат аудіопотоки. Точна відповідність треків на основі ISRC.';
} }

View File

@ -875,16 +875,16 @@ class AppLocalizationsVi extends AppLocalizations {
String get restore_defaults => 'Khôi phục mặc định'; String get restore_defaults => 'Khôi phục mặc định';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => 'Định dạng nhạc tải về';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => 'Định dạng nhạc phát trực tuyến';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => 'Chất lượng nhạc tải về';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => 'Chất lượng nhạc phát trực tuyến';
@override @override
String get login_with_lastfm => 'Đăng nhập bằng tài khoản Last.fm'; String get login_with_lastfm => 'Đăng nhập bằng tài khoản Last.fm';
@ -1456,16 +1456,16 @@ class AppLocalizationsVi extends AppLocalizations {
'Plugin này scrobble nhạc của bạn để tạo lịch sử nghe của bạn.'; 'Plugin này scrobble nhạc của bạn để tạo lịch sử nghe của bạn.';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => 'Nguồn siêu dữ liệu mặc định';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source => 'Đặt nguồn siêu dữ liệu mặc định';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => 'Nguồn âm thanh mặc định';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => 'Đặt nguồn âm thanh mặc định';
@override @override
String get set_default => 'Đặt làm mặc định'; String get set_default => 'Đặt làm mặc định';
@ -1528,7 +1528,7 @@ class AppLocalizationsVi extends AppLocalizations {
'Đầu vào không khớp với định dạng yêu cầu'; 'Đầu vào không khớp với định dạng yêu cầu';
@override @override
String get plugins => 'Plugins'; String get plugins => 'Tiện ích bổ sung';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1554,7 +1554,7 @@ class AppLocalizationsVi extends AppLocalizations {
@override @override
String get configure_plugins => String get configure_plugins =>
'Configure your own metadata provider and audio source plugins'; 'Cấu hình nhà cung cấp siêu dữ liệu và tiện ích nguồn âm thanh riêng';
@override @override
String get audio_scrobblers => 'Bộ scrobbler âm thanh'; String get audio_scrobblers => 'Bộ scrobbler âm thanh';
@ -1563,12 +1563,12 @@ class AppLocalizationsVi extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => 'Nguồn: ';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => 'Không nén';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; 'Dành cho người yêu âm nhạc chất lượng cao. Cung cấp luồng âm thanh chất lượng cao/không nén. Phù hợp bài hát dựa trên ISRC chính xác.';
} }

View File

@ -859,16 +859,16 @@ class AppLocalizationsZh extends AppLocalizations {
String get restore_defaults => '恢复默认值'; String get restore_defaults => '恢复默认值';
@override @override
String get download_music_format => 'Download music format'; String get download_music_format => '下载音乐格式';
@override @override
String get streaming_music_format => 'Streaming music format'; String get streaming_music_format => '流媒体音乐格式';
@override @override
String get download_music_quality => 'Download music quality'; String get download_music_quality => '下载音乐质量';
@override @override
String get streaming_music_quality => 'Streaming music quality'; String get streaming_music_quality => '流媒体音乐质量';
@override @override
String get login_with_lastfm => '使用 Last.fm 登录'; String get login_with_lastfm => '使用 Last.fm 登录';
@ -1418,16 +1418,16 @@ class AppLocalizationsZh extends AppLocalizations {
String get plugin_scrobbling_info => '此插件会 scrobble 您的音乐以生成您的收听历史记录。'; String get plugin_scrobbling_info => '此插件会 scrobble 您的音乐以生成您的收听历史记录。';
@override @override
String get default_metadata_source => 'Default metadata source'; String get default_metadata_source => '默认元数据源';
@override @override
String get set_default_metadata_source => 'Set default metadata source'; String get set_default_metadata_source => '设置默认元数据源';
@override @override
String get default_audio_source => 'Default audio source'; String get default_audio_source => '默认音频源';
@override @override
String get set_default_audio_source => 'Set default audio source'; String get set_default_audio_source => '设置默认音频源';
@override @override
String get set_default => '设为默认'; String get set_default => '设为默认';
@ -1484,7 +1484,7 @@ class AppLocalizationsZh extends AppLocalizations {
String get input_does_not_match_format => '输入与所需格式不匹配'; String get input_does_not_match_format => '输入与所需格式不匹配';
@override @override
String get plugins => 'Plugins'; String get plugins => '插件';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
@ -1508,8 +1508,7 @@ class AppLocalizationsZh extends AppLocalizations {
String get available_plugins => '可用插件'; String get available_plugins => '可用插件';
@override @override
String get configure_plugins => String get configure_plugins => '配置您自己的元数据提供者和音频源插件';
'Configure your own metadata provider and audio source plugins';
@override @override
String get audio_scrobblers => '音频 Scrobblers'; String get audio_scrobblers => '音频 Scrobblers';
@ -1518,14 +1517,14 @@ class AppLocalizationsZh extends AppLocalizations {
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override @override
String get source => 'Source: '; String get source => '来源:';
@override @override
String get uncompressed => 'Uncompressed'; String get uncompressed => '无损';
@override @override
String get dab_music_source_description => String get dab_music_source_description =>
'For audiophiles. Provides high-quality/lossless audio streams. Accurate ISRC based track matching.'; '适合发烧友。提供高质量/无损音频流。基于 ISRC 的精确曲目匹配。';
} }
/// The translations for Chinese, as used in Taiwan (`zh_TW`). /// The translations for Chinese, as used in Taiwan (`zh_TW`).
@ -2382,6 +2381,18 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
@override @override
String get restore_defaults => '恢復預設值'; String get restore_defaults => '恢復預設值';
@override
String get download_music_format => '下載音樂格式';
@override
String get streaming_music_format => '串流音樂格式';
@override
String get download_music_quality => '下載音樂品質';
@override
String get streaming_music_quality => '串流音樂品質';
@override @override
String get login_with_lastfm => '使用 Last.fm 登入'; String get login_with_lastfm => '使用 Last.fm 登入';
@ -2929,6 +2940,18 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
@override @override
String get plugin_scrobbling_info => '此外掛程式會 Scrobble 您的音樂以產生您的收聽記錄。'; String get plugin_scrobbling_info => '此外掛程式會 Scrobble 您的音樂以產生您的收聽記錄。';
@override
String get default_metadata_source => '預設中繼資料來源';
@override
String get set_default_metadata_source => '設定預設中繼資料來源';
@override
String get default_audio_source => '預設音訊來源';
@override
String get set_default_audio_source => '設定預設音訊來源';
@override @override
String get set_default => '設為預設'; String get set_default => '設為預設';
@ -2983,6 +3006,9 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
@override @override
String get input_does_not_match_format => '輸入不符合所需格式'; String get input_does_not_match_format => '輸入不符合所需格式';
@override
String get plugins => '外掛程式';
@override @override
String get paste_plugin_download_url => String get paste_plugin_download_url =>
'貼上下載網址、GitHub/Codeberg 儲存庫網址或 .smplug 檔案的直接連結'; '貼上下載網址、GitHub/Codeberg 儲存庫網址或 .smplug 檔案的直接連結';
@ -3004,9 +3030,22 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
@override @override
String get available_plugins => '可用的外掛程式'; String get available_plugins => '可用的外掛程式';
@override
String get configure_plugins => '配置您自己的中繼資料提供者和音訊來源外掛程式';
@override @override
String get audio_scrobblers => '音訊 Scrobblers'; String get audio_scrobblers => '音訊 Scrobblers';
@override @override
String get scrobbling => 'Scrobbling'; String get scrobbling => 'Scrobbling';
@override
String get source => '來源:';
@override
String get uncompressed => '未壓縮';
@override
String get dab_music_source_description =>
'適合音響發燒友。提供高品質/無損音訊串流。精確的 ISRC 曲目比對。';
} }

View File

@ -28,7 +28,7 @@ class HomeNewReleasesSection extends HookConsumerWidget {
if (newReleases.error if (newReleases.error
case MetadataPluginException( case MetadataPluginException(
errorCode: MetadataPluginErrorCode.noDefaultPlugin, errorCode: MetadataPluginErrorCode.noDefaultMetadataPlugin,
message: _, message: _,
)) { )) {
return const SizedBox.shrink(); return const SizedBox.shrink();

View File

@ -48,7 +48,7 @@ class HomePageBrowseSection extends HookConsumerWidget {
if (browseSections.error if (browseSections.error
case MetadataPluginException( case MetadataPluginException(
errorCode: MetadataPluginErrorCode.noDefaultPlugin, errorCode: MetadataPluginErrorCode.noDefaultMetadataPlugin,
message: _, message: _,
)) { )) {
return const SliverFillRemaining( return const SliverFillRemaining(

View File

@ -55,7 +55,7 @@ class UserAlbumsPage extends HookConsumerWidget {
if (albumsQuery.error if (albumsQuery.error
case MetadataPluginException( case MetadataPluginException(
errorCode: MetadataPluginErrorCode.noDefaultPlugin, errorCode: MetadataPluginErrorCode.noDefaultMetadataPlugin,
message: _, message: _,
)) { )) {
return const Center(child: NoDefaultMetadataPlugin()); return const Center(child: NoDefaultMetadataPlugin());

View File

@ -60,7 +60,7 @@ class UserArtistsPage extends HookConsumerWidget {
if (artistQuery.error if (artistQuery.error
case MetadataPluginException( case MetadataPluginException(
errorCode: MetadataPluginErrorCode.noDefaultPlugin, errorCode: MetadataPluginErrorCode.noDefaultMetadataPlugin,
message: _, message: _,
)) { )) {
return const Center(child: NoDefaultMetadataPlugin()); return const Center(child: NoDefaultMetadataPlugin());

View File

@ -83,7 +83,7 @@ class UserPlaylistsPage extends HookConsumerWidget {
if (playlistsQuery.error if (playlistsQuery.error
case MetadataPluginException( case MetadataPluginException(
errorCode: MetadataPluginErrorCode.noDefaultPlugin, errorCode: MetadataPluginErrorCode.noDefaultMetadataPlugin,
message: _, message: _,
)) { )) {
return const Center(child: NoDefaultMetadataPlugin()); return const Center(child: NoDefaultMetadataPlugin());

View File

@ -85,7 +85,7 @@ class SearchPage extends HookConsumerWidget {
child: Builder(builder: (context) { child: Builder(builder: (context) {
if (searchChipSnapshot.error if (searchChipSnapshot.error
case MetadataPluginException( case MetadataPluginException(
errorCode: MetadataPluginErrorCode.noDefaultPlugin, errorCode: MetadataPluginErrorCode.noDefaultMetadataPlugin,
message: _ message: _
)) { )) {
return const NoDefaultMetadataPlugin(); return const NoDefaultMetadataPlugin();

View File

@ -144,40 +144,8 @@ class AudioPlayerNotifier extends Notifier<AudioPlayerState> {
}), }),
audioPlayer.playlistStream.listen((playlist) async { audioPlayer.playlistStream.listen((playlist) async {
try { try {
// Playlist and state has to be in sync. This is only meant for final tracks =
// the shuffle/re-ordering indices to be in sync playlist.medias.map((e) => SpotubeMedia.media(e).track).toList();
if (playlist.medias.length != state.tracks.length) {
AppLogger.log.w(
"Playlist length does not match state tracks length. Ignoring... "
"Playlist length: ${playlist.medias.length}, "
"State tracks length: ${state.tracks.length}",
);
return;
}
final trackGroupedById = groupBy(
state.tracks,
(query) => query.id,
);
final tracks = <SpotubeTrackObject>[];
for (final media in playlist.medias) {
final track = trackGroupedById[SpotubeMedia.media(media).track.id]
?.firstOrNull;
if (track != null) {
tracks.add(track);
}
}
if (tracks.length != state.tracks.length) {
AppLogger.log.w("Mismatch in tracks after reordering/shuffling.");
final missingTracks =
state.tracks.where((track) => !tracks.contains(track)).toList();
AppLogger.log.w(
"Missing tracks: ${missingTracks.map((e) => e.id).join(", ")}",
);
}
state = state.copyWith( state = state.copyWith(
tracks: tracks, tracks: tracks,
@ -434,13 +402,31 @@ class AudioPlayerNotifier extends Notifier<AudioPlayerState> {
return; return;
} }
final currentIndex = state.currentIndex; final oldState = state;
final currentTrack = state.activeTrack as SpotubeFullTrackObject; await audioPlayer.stop();
final swappedMedia = SpotubeMedia(currentTrack);
await audioPlayer.addTrackAt(swappedMedia, currentIndex + 1); await load(
await audioPlayer.skipToNext(); oldState.tracks,
await audioPlayer.removeTrack(currentIndex); initialIndex: oldState.currentIndex,
autoPlay: true,
);
state = state.copyWith(
collections: oldState.collections,
loopMode: oldState.loopMode,
playing: oldState.playing,
shuffled: false,
);
await audioPlayer.setLoopMode(oldState.loopMode);
await _updatePlayerState(
AudioPlayerStateTableCompanion(
tracks: Value(state.tracks),
currentIndex: Value(state.currentIndex),
collections: Value(state.collections),
loopMode: Value(state.loopMode),
playing: Value(state.playing),
shuffled: Value(state.shuffled),
),
);
} }
Future<void> jumpToTrack(SpotubeTrackObject track) async { Future<void> jumpToTrack(SpotubeTrackObject track) async {

View File

@ -12,7 +12,7 @@ final metadataPluginAlbumProvider =
final metadataPlugin = await ref.watch(metadataPluginProvider.future); final metadataPlugin = await ref.watch(metadataPluginProvider.future);
if (metadataPlugin == null) { if (metadataPlugin == null) {
throw MetadataPluginException.noDefaultPlugin(); throw MetadataPluginException.noDefaultMetadataPlugin();
} }
return metadataPlugin.album.getAlbum(id); return metadataPlugin.album.getAlbum(id);

View File

@ -12,7 +12,7 @@ final metadataPluginArtistProvider =
final metadataPlugin = await ref.watch(metadataPluginProvider.future); final metadataPlugin = await ref.watch(metadataPluginProvider.future);
if (metadataPlugin == null) { if (metadataPlugin == null) {
throw MetadataPluginException.noDefaultPlugin(); throw MetadataPluginException.noDefaultMetadataPlugin();
} }
return metadataPlugin.artist.getArtist(artistId); return metadataPlugin.artist.getArtist(artistId);

View File

@ -6,6 +6,7 @@ import 'package:shared_preferences/shared_preferences.dart';
import 'package:spotube/models/metadata/metadata.dart'; import 'package:spotube/models/metadata/metadata.dart';
import 'package:spotube/provider/metadata_plugin/metadata_plugin_provider.dart'; import 'package:spotube/provider/metadata_plugin/metadata_plugin_provider.dart';
import 'package:spotube/services/audio_player/audio_player.dart'; import 'package:spotube/services/audio_player/audio_player.dart';
import 'package:spotube/services/metadata/errors/exceptions.dart';
import 'package:spotube/services/metadata/metadata.dart'; import 'package:spotube/services/metadata/metadata.dart';
part 'quality_presets.g.dart'; part 'quality_presets.g.dart';
@ -61,7 +62,7 @@ class AudioSourceAvailableQualityPresetsNotifier
audioSourceConfigSnapshot.whenData((audioSourceConfig) { audioSourceConfigSnapshot.whenData((audioSourceConfig) {
audioSourceSnapshot.whenData((audioSource) async { audioSourceSnapshot.whenData((audioSource) async {
if (audioSource == null || audioSourceConfig == null) { if (audioSource == null || audioSourceConfig == null) {
throw Exception("Dude wat?"); throw MetadataPluginException.noDefaultAudioSourcePlugin();
} }
final preferences = await SharedPreferences.getInstance(); final preferences = await SharedPreferences.getInstance();
final persistedStateStr = final persistedStateStr =
@ -114,7 +115,7 @@ class AudioSourceAvailableQualityPresetsNotifier
final audioSourceConfig = await ref.read(metadataPluginsProvider final audioSourceConfig = await ref.read(metadataPluginsProvider
.selectAsync((data) => data.defaultAudioSourcePluginConfig)); .selectAsync((data) => data.defaultAudioSourcePluginConfig));
if (audioSourceConfig == null) { if (audioSourceConfig == null) {
throw Exception("Dude wat?"); throw MetadataPluginException.noDefaultAudioSourcePlugin();
} }
final preferences = await SharedPreferences.getInstance(); final preferences = await SharedPreferences.getInstance();

View File

@ -131,7 +131,7 @@ final metadataPluginIsSavedPlaylistProvider =
final plugin = await ref.watch(metadataPluginProvider.future); final plugin = await ref.watch(metadataPluginProvider.future);
if (plugin == null) { if (plugin == null) {
throw MetadataPluginException.noDefaultPlugin(); throw MetadataPluginException.noDefaultMetadataPlugin();
} }
final savedPlaylists = final savedPlaylists =

View File

@ -13,7 +13,7 @@ class MetadataPluginPlaylistNotifier
final metadataPlugin = await ref.read(metadataPluginProvider.future); final metadataPlugin = await ref.read(metadataPluginProvider.future);
if (metadataPlugin == null) { if (metadataPlugin == null) {
throw MetadataPluginException.noDefaultPlugin(); throw MetadataPluginException.noDefaultMetadataPlugin();
} }
return metadataPlugin; return metadataPlugin;

View File

@ -9,7 +9,7 @@ final metadataPluginSearchAllProvider =
final metadataPlugin = await ref.watch(metadataPluginProvider.future); final metadataPlugin = await ref.watch(metadataPluginProvider.future);
if (metadataPlugin == null) { if (metadataPlugin == null) {
throw MetadataPluginException.noDefaultPlugin(); throw MetadataPluginException.noDefaultMetadataPlugin();
} }
return metadataPlugin.search.all(query); return metadataPlugin.search.all(query);
@ -20,7 +20,7 @@ final metadataPluginSearchChipsProvider = FutureProvider((ref) async {
final metadataPlugin = await ref.watch(metadataPluginProvider.future); final metadataPlugin = await ref.watch(metadataPluginProvider.future);
if (metadataPlugin == null) { if (metadataPlugin == null) {
throw MetadataPluginException.noDefaultPlugin(); throw MetadataPluginException.noDefaultMetadataPlugin();
} }
return metadataPlugin.search.chips; return metadataPlugin.search.chips;
}); });

View File

@ -8,7 +8,7 @@ final metadataPluginTrackProvider =
final metadataPlugin = await ref.watch(metadataPluginProvider.future); final metadataPlugin = await ref.watch(metadataPluginProvider.future);
if (metadataPlugin == null) { if (metadataPlugin == null) {
throw MetadataPluginException.noDefaultPlugin(); throw MetadataPluginException.noDefaultMetadataPlugin();
} }
return metadataPlugin.track.getTrack(trackId); return metadataPlugin.track.getTrack(trackId);

View File

@ -20,7 +20,7 @@ mixin MetadataPluginMixin<K>
final plugin = await ref.read(metadataPluginProvider.future); final plugin = await ref.read(metadataPluginProvider.future);
if (plugin == null) { if (plugin == null) {
throw MetadataPluginException.noDefaultPlugin(); throw MetadataPluginException.noDefaultMetadataPlugin();
} }
return plugin; return plugin;

View File

@ -2,7 +2,6 @@ import 'dart:async';
import 'dart:io'; import 'dart:io';
import 'dart:math'; import 'dart:math';
import 'package:collection/collection.dart';
import 'package:dio/dio.dart' hide Response; import 'package:dio/dio.dart' hide Response;
import 'package:dio/dio.dart' as dio_lib; import 'package:dio/dio.dart' as dio_lib;
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';

View File

@ -95,7 +95,7 @@ class TrackOptionsActions {
final metadataPlugin = await ref.read(metadataPluginProvider.future); final metadataPlugin = await ref.read(metadataPluginProvider.future);
if (metadataPlugin == null) { if (metadataPlugin == null) {
throw MetadataPluginException.noDefaultPlugin(); throw MetadataPluginException.noDefaultMetadataPlugin();
} }
final tracks = await metadataPlugin.track.radio(track.id); final tracks = await metadataPlugin.track.radio(track.id);

View File

@ -49,7 +49,6 @@ abstract class AudioPlayerInterface {
configuration: const mk.PlayerConfiguration( configuration: const mk.PlayerConfiguration(
title: "Spotube", title: "Spotube",
logLevel: kDebugMode ? mk.MPVLogLevel.info : mk.MPVLogLevel.error, logLevel: kDebugMode ? mk.MPVLogLevel.info : mk.MPVLogLevel.error,
bufferSize: 4 * 1024 * 1024, // 4MB buffer
async: true, async: true,
), ),
) { ) {

View File

@ -9,7 +9,8 @@ enum MetadataPluginErrorCode {
pluginDownloadFailed, pluginDownloadFailed,
duplicatePlugin, duplicatePlugin,
pluginByteCodeFileNotFound, pluginByteCodeFileNotFound,
noDefaultPlugin, noDefaultMetadataPlugin,
noDefaultAudiSourcePlugin,
} }
class MetadataPluginException implements Exception { class MetadataPluginException implements Exception {
@ -68,10 +69,15 @@ class MetadataPluginException implements Exception {
'Plugin byte code file, plugin.out not found. Please ensure the plugin is correctly packaged.', 'Plugin byte code file, plugin.out not found. Please ensure the plugin is correctly packaged.',
errorCode: MetadataPluginErrorCode.pluginByteCodeFileNotFound, errorCode: MetadataPluginErrorCode.pluginByteCodeFileNotFound,
); );
MetadataPluginException.noDefaultPlugin() MetadataPluginException.noDefaultMetadataPlugin()
: this._( : this._(
'No default metadata plugin is set. Please set a default plugin in the settings.', 'No default metadata plugin is set. Please set a default plugin in the settings.',
errorCode: MetadataPluginErrorCode.noDefaultPlugin, errorCode: MetadataPluginErrorCode.noDefaultMetadataPlugin,
);
MetadataPluginException.noDefaultAudioSourcePlugin()
: this._(
'No default audio source plugin is set. Please set a default plugin in the settings.',
errorCode: MetadataPluginErrorCode.noDefaultAudiSourcePlugin,
); );
@override @override

View File

@ -12,6 +12,7 @@ import 'package:spotube/provider/metadata_plugin/audio_source/quality_presets.da
import 'package:spotube/provider/metadata_plugin/metadata_plugin_provider.dart'; import 'package:spotube/provider/metadata_plugin/metadata_plugin_provider.dart';
import 'package:spotube/services/dio/dio.dart'; import 'package:spotube/services/dio/dio.dart';
import 'package:spotube/services/logger/logger.dart'; import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/services/metadata/errors/exceptions.dart';
import 'package:spotube/services/sourced_track/exceptions.dart'; import 'package:spotube/services/sourced_track/exceptions.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';
@ -41,7 +42,7 @@ class SourcedTrack extends BasicSourcedTrack {
final audioSourceConfig = await ref.read(metadataPluginsProvider final audioSourceConfig = await ref.read(metadataPluginsProvider
.selectAsync((data) => data.defaultAudioSourcePluginConfig)); .selectAsync((data) => data.defaultAudioSourcePluginConfig));
if (audioSource == null || audioSourceConfig == null) { if (audioSource == null || audioSourceConfig == null) {
throw Exception("Dude wat?"); throw MetadataPluginException.noDefaultAudioSourcePlugin();
} }
final database = ref.read(databaseProvider); final database = ref.read(databaseProvider);
@ -157,7 +158,7 @@ class SourcedTrack extends BasicSourcedTrack {
final audioSource = await ref.read(audioSourcePluginProvider.future); final audioSource = await ref.read(audioSourcePluginProvider.future);
if (audioSource == null) { if (audioSource == null) {
throw Exception("Dude wat?"); throw MetadataPluginException.noDefaultAudioSourcePlugin();
} }
final videoResults = <SpotubeAudioSourceMatchObject>[]; final videoResults = <SpotubeAudioSourceMatchObject>[];
@ -190,7 +191,8 @@ class SourcedTrack extends BasicSourcedTrack {
} }
Future<SourcedTrack?> swapWithSibling( Future<SourcedTrack?> swapWithSibling(
SpotubeAudioSourceMatchObject sibling) async { SpotubeAudioSourceMatchObject sibling,
) async {
if (sibling.id == info.id) { if (sibling.id == info.id) {
return null; return null;
} }
@ -199,7 +201,7 @@ class SourcedTrack extends BasicSourcedTrack {
final audioSourceConfig = await ref.read(metadataPluginsProvider final audioSourceConfig = await ref.read(metadataPluginsProvider
.selectAsync((data) => data.defaultAudioSourcePluginConfig)); .selectAsync((data) => data.defaultAudioSourcePluginConfig));
if (audioSource == null || audioSourceConfig == null) { if (audioSource == null || audioSourceConfig == null) {
throw Exception("Dude wat?"); throw MetadataPluginException.noDefaultAudioSourcePlugin();
} }
// a sibling source that was fetched from the search results // a sibling source that was fetched from the search results
@ -216,10 +218,19 @@ class SourcedTrack extends BasicSourcedTrack {
final database = ref.read(databaseProvider); final database = ref.read(databaseProvider);
// Delete the old Entry
await (database.sourceMatchTable.delete()
..where(
(table) =>
table.trackId.equals(query.id) &
table.sourceType.equals(audioSourceConfig.slug),
))
.go();
await database.into(database.sourceMatchTable).insert( await database.into(database.sourceMatchTable).insert(
SourceMatchTableCompanion.insert( SourceMatchTableCompanion.insert(
trackId: query.id, trackId: query.id,
sourceInfo: Value(jsonEncode(siblings.first)), sourceInfo: Value(jsonEncode(sibling)),
sourceType: audioSourceConfig.slug, sourceType: audioSourceConfig.slug,
createdAt: Value(DateTime.now()), createdAt: Value(DateTime.now()),
), ),
@ -245,7 +256,7 @@ class SourcedTrack extends BasicSourcedTrack {
final audioSourceConfig = await ref.read(metadataPluginsProvider final audioSourceConfig = await ref.read(metadataPluginsProvider
.selectAsync((data) => data.defaultAudioSourcePluginConfig)); .selectAsync((data) => data.defaultAudioSourcePluginConfig));
if (audioSource == null || audioSourceConfig == null) { if (audioSource == null || audioSourceConfig == null) {
throw Exception("Dude wat?"); throw MetadataPluginException.noDefaultAudioSourcePlugin();
} }
List<SpotubeAudioSourceStreamObject> validStreams = []; List<SpotubeAudioSourceStreamObject> validStreams = [];

View File

@ -154,7 +154,7 @@ packages:
source: hosted source: hosted
version: "3.0.0" version: "3.0.0"
base32: base32:
dependency: transitive dependency: "direct main"
description: description:
name: base32 name: base32
sha256: "37548444aaee8bd5e91db442ce69ee3a79d3652ed47c1fa7568aa3bb9af0aea5" sha256: "37548444aaee8bd5e91db442ce69ee3a79d3652ed47c1fa7568aa3bb9af0aea5"
@ -1198,7 +1198,7 @@ packages:
description: description:
path: "." path: "."
ref: main ref: main
resolved-ref: "577ad115dce0514afc53e2b3ab7b96bcd88d3be3" resolved-ref: "401fde426339cf8f1e00dee22cc95f64c3e60053"
url: "https://github.com/hetu-community/hetu_std.git" url: "https://github.com/hetu-community/hetu_std.git"
source: git source: git
version: "1.0.0" version: "1.0.0"

View File

@ -3,7 +3,7 @@ description: Open source extensible music streaming platform and app, based on B
publish_to: "none" publish_to: "none"
version: 5.0.0+42 version: 5.1.0+43
homepage: https://spotube.krtirtho.dev homepage: https://spotube.krtirtho.dev
repository: https://github.com/KRTirtho/spotube repository: https://github.com/KRTirtho/spotube
@ -152,6 +152,7 @@ dependencies:
git: git:
url: https://github.com/media-kit/media-kit url: https://github.com/media-kit/media-kit
path: libs/universal/media_kit_libs_audio path: libs/universal/media_kit_libs_audio
base32: ^2.2.0
dev_dependencies: dev_dependencies:
build_runner: ^2.4.13 build_runner: ^2.4.13

View File

@ -1,466 +1 @@
{ {}
"ar": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"bn": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"ca": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"cs": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"de": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"es": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"eu": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"fa": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"fi": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"fr": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"hi": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"id": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"it": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"ja": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"ka": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"ko": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"ne": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"nl": [
"audio_source",
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"pl": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"pt": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"ru": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"ta": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"th": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"tl": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"tr": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"uk": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"vi": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"zh": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
],
"zh_TW": [
"download_music_format",
"streaming_music_format",
"download_music_quality",
"streaming_music_quality",
"default_metadata_source",
"set_default_metadata_source",
"default_audio_source",
"set_default_audio_source",
"plugins",
"configure_plugins",
"source",
"uncompressed",
"dab_music_source_description"
]
}

View File

@ -8,6 +8,7 @@ import {
FaUbuntu, FaUbuntu,
FaWindows, FaWindows,
FaRedhat, FaRedhat,
FaLinux,
} from "react-icons/fa6"; } from "react-icons/fa6";
import { LuHouse, LuNewspaper, LuDownload, LuBook } from "react-icons/lu"; import { LuHouse, LuNewspaper, LuDownload, LuBook } from "react-icons/lu";
@ -61,11 +62,21 @@ export const extendedDownloadLinks: Record<
[FaUbuntu, FaDebian], [FaUbuntu, FaDebian],
"deb", "deb",
], ],
// "Fedora, Redhat, Opensuse": [ "Fedora, Redhat, Opensuse": [
// `${releasesUrl}/Spotube-linux-x86_64.rpm`, `${releasesUrl}/Spotube-linux-x86_64.rpm`,
// [FaFedora, FaRedhat, FaOpensuse], [FaFedora, FaRedhat, FaOpensuse],
// "rpm", "rpm",
// ], ],
"Linux AppImage (x64)": [
`${releasesUrl}/Spotube-linux-x86_64.AppImage`,
[FaLinux],
"AppImage",
],
"Linux AppImage (arm64)": [
`${releasesUrl}/Spotube-linux-aarch64.AppImage`,
[FaLinux],
"AppImage",
],
iPhone: [`${releasesUrl}/Spotube-iOS.ipa`, [FaApple], "ipa"], iPhone: [`${releasesUrl}/Spotube-iOS.ipa`, [FaApple], "ipa"],
}; };
@ -76,28 +87,39 @@ export const extendedNightlyDownloadLinks: Record<
string, string,
[string, IconType[], string] [string, IconType[], string]
> = { > = {
Android: [ Android: [`${releasesUrl}/Spotube-android-all-arch.apk`, [FaAndroid], "apk"],
`${nightlyReleaseUrl}/Spotube-android-all-arch.apk`,
[FaAndroid],
"apk",
],
Windows: [ Windows: [
`${nightlyReleaseUrl}/Spotube-windows-x86_64-setup.exe`, `${releasesUrl}/Spotube-windows-x86_64-setup.exe`,
[FaWindows], [FaWindows],
"exe", "exe",
], ],
macOS: [`${nightlyReleaseUrl}/Spotube-macos-universal.dmg`, [FaApple], "dmg"], macOS: [`${releasesUrl}/Spotube-macos-universal.dmg`, [FaApple], "dmg"],
"Ubuntu, Debian": [ "Ubuntu, Debian (x64)": [
`${nightlyReleaseUrl}/Spotube-linux-x86_64.deb`, `${releasesUrl}/Spotube-linux-x86_64.deb`,
[FaUbuntu, FaDebian],
"deb",
],
"Ubuntu, Debian (arm64)": [
`${releasesUrl}/Spotube-linux-aarch64.deb`,
[FaUbuntu, FaDebian], [FaUbuntu, FaDebian],
"deb", "deb",
], ],
"Fedora, Redhat, Opensuse": [ "Fedora, Redhat, Opensuse": [
`${nightlyReleaseUrl}/Spotube-linux-x86_64.rpm`, `${releasesUrl}/Spotube-linux-x86_64.rpm`,
[FaFedora, FaRedhat, FaOpensuse], [FaFedora, FaRedhat, FaOpensuse],
"rpm", "rpm",
], ],
iPhone: [`${nightlyReleaseUrl}/Spotube-iOS.ipa`, [FaApple], "ipa"], "Linux AppImage (x64)": [
`${releasesUrl}/Spotube-linux-x86_64.AppImage`,
[FaLinux],
"AppImage",
],
"Linux AppImage (arm64)": [
`${releasesUrl}/Spotube-linux-aarch64.AppImage`,
[FaLinux],
"AppImage",
],
iPhone: [`${releasesUrl}/Spotube-iOS.ipa`, [FaApple], "ipa"],
}; };
export const ADS_SLOTS = Object.freeze({ export const ADS_SLOTS = Object.freeze({

View File

@ -21,7 +21,7 @@ const { links } = Astro.props;
const Icon = icon; const Icon = icon;
return <Icon />; return <Icon />;
})} })}
<p class="chip preset-tonal-warning text-warning-400 absolute right-2 uppercase"> <p class="chip preset-tonal-warning text-warning-700-300 absolute right-2 uppercase font-bold">
{link[1][2]} {link[1][2]}
</p> </p>
</div> </div>