Compare commits

..

1 Commits

Author SHA1 Message Date
Guanciottaman
4459bc16c5
Merge ff252d6b14 into ea329f40e8 2025-09-03 10:27:09 +06:00
50 changed files with 193 additions and 6359 deletions

View File

@ -4,7 +4,6 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart'; import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/extensions/context.dart';
class ErrorBox extends StatelessWidget { class ErrorBox extends StatelessWidget {
final Object error; final Object error;
@ -28,10 +27,10 @@ class ErrorBox extends StatelessWidget {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
spacing: 12, spacing: 12,
children: [ children: [
Basic( const Basic(
leading: const Icon(SpotubeIcons.error), leading: Icon(SpotubeIcons.error),
contentSpacing: 8, contentSpacing: 8,
title: Text(context.l10n.an_error_occurred), title: Text("An error occurred"),
), ),
Card( Card(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
@ -71,7 +70,7 @@ class ErrorBox extends StatelessWidget {
spacing: 8, spacing: 8,
children: [ children: [
const Icon(SpotubeIcons.logs), const Icon(SpotubeIcons.logs),
Text(context.l10n.logs), const Text("Logs"),
const Spacer(), const Spacer(),
IconButton.ghost( IconButton.ghost(
icon: const Icon(SpotubeIcons.close), icon: const Icon(SpotubeIcons.close),
@ -87,7 +86,7 @@ class ErrorBox extends StatelessWidget {
leading: copied.value leading: copied.value
? const Icon(SpotubeIcons.done) ? const Icon(SpotubeIcons.done)
: const Icon(SpotubeIcons.clipboard), : const Icon(SpotubeIcons.clipboard),
child: Text(context.l10n.copy_to_clipboard), child: const Text("Copy to clipboard"),
onPressed: () { onPressed: () {
Clipboard.setData( Clipboard.setData(
ClipboardData(text: error.toString()), ClipboardData(text: error.toString()),
@ -119,13 +118,13 @@ class ErrorBox extends StatelessWidget {
}, },
); );
}, },
child: Text(context.l10n.view_logs), child: const Text("View logs"),
), ),
if (onRetry != null) if (onRetry != null)
Button.text( Button.text(
leading: const Icon(SpotubeIcons.refresh), leading: const Icon(SpotubeIcons.refresh),
onPressed: onRetry, onPressed: onRetry,
child: Text(context.l10n.retry), child: const Text("Retry"),
), ),
], ],
), ),

View File

@ -5,7 +5,6 @@ import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart'; import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/routes.gr.dart'; import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/extensions/context.dart';
class NoDefaultMetadataPlugin extends StatelessWidget { class NoDefaultMetadataPlugin extends StatelessWidget {
const NoDefaultMetadataPlugin({super.key}); const NoDefaultMetadataPlugin({super.key});
@ -24,13 +23,13 @@ class NoDefaultMetadataPlugin extends StatelessWidget {
color: context.theme.colorScheme.primary, color: context.theme.colorScheme.primary,
), ),
AutoSizeText( AutoSizeText(
context.l10n.no_default_metadata_provider_selected, "You've no default metadata provider set",
style: context.theme.typography.h4, style: context.theme.typography.h4,
maxLines: 1, maxLines: 1,
), ),
Button.primary( Button.primary(
leading: const Icon(SpotubeIcons.extensions), leading: const Icon(SpotubeIcons.extensions),
child: Text(context.l10n.manage_metadata_providers), child: const Text("Manage metadata providers"),
onPressed: () { onPressed: () {
context.pushRoute(const SettingsMetadataProviderRoute()); context.pushRoute(const SettingsMetadataProviderRoute());
}, },

View File

@ -3,7 +3,6 @@ import 'package:flutter/services.dart';
import 'package:flutter_markdown_plus/flutter_markdown_plus.dart'; import 'package:flutter_markdown_plus/flutter_markdown_plus.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/extensions/context.dart';
import 'package:url_launcher/url_launcher_string.dart'; import 'package:url_launcher/url_launcher_string.dart';
class AppMarkdown extends StatelessWidget { class AppMarkdown extends StatelessWidget {
@ -31,33 +30,36 @@ class AppMarkdown extends StatelessWidget {
return ConstrainedBox( return ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 450), constraints: const BoxConstraints(maxWidth: 450),
child: AlertDialog( child: AlertDialog(
title: Row( title: const Row(
spacing: 8, spacing: 8,
children: [ children: [
const Icon(SpotubeIcons.warning), Icon(SpotubeIcons.warning),
Text(context.l10n.open_link_in_browser), Text("Open Link in Browser?"),
], ],
), ),
content: Text.rich( content: Text.rich(
TextSpan( TextSpan(
children: [ children: [
TextSpan( const TextSpan(
text: text: "Do you want to open the following link:\n",
"${context.l10n.do_you_want_to_open_the_following_link}:\n",
), ),
if (href != null) if (href != null)
TextSpan( TextSpan(
text: "$href\n\n", text: "$href\n\n",
style: const TextStyle(color: Colors.blue), style: const TextStyle(color: Colors.blue),
), ),
TextSpan(text: context.l10n.unsafe_url_warning), const TextSpan(
text:
"It can be unsafe to open links from untrusted sources. Be cautious!\n"
"You can also copy the link to your clipboard.",
),
], ],
), ),
), ),
actions: [ actions: [
Button.ghost( Button.ghost(
onPressed: () => Navigator.of(context).pop(false), onPressed: () => Navigator.of(context).pop(false),
child: Text(context.l10n.cancel), child: const Text("Cancel"),
), ),
Button.ghost( Button.ghost(
onPressed: () { onPressed: () {
@ -66,7 +68,7 @@ class AppMarkdown extends StatelessWidget {
} }
Navigator.of(context).pop(false); Navigator.of(context).pop(false);
}, },
child: Text(context.l10n.copy_link), child: const Text("Copy Link"),
), ),
Button.destructive( Button.destructive(
onPressed: () { onPressed: () {
@ -78,7 +80,7 @@ class AppMarkdown extends StatelessWidget {
} }
Navigator.of(context).pop(true); Navigator.of(context).pop(true);
}, },
child: Text(context.l10n.open), child: const Text("Open"),
), ),
], ],
), ),

View File

@ -415,51 +415,5 @@
"edit_port": "Edit port", "edit_port": "Edit port",
"port_helper_msg": "Default is -1 which indicates random number. If you've firewall configured, setting this is recommended.", "port_helper_msg": "Default is -1 which indicates random number. If you've firewall configured, setting this is recommended.",
"connect_request": "Allow {client} to connect?", "connect_request": "Allow {client} to connect?",
"connection_request_denied": "Connection denied. User denied access.", "connection_request_denied": "Connection denied. User denied access."
"an_error_occurred": "An error occurred",
"copy_to_clipboard": "Copy to clipboard",
"view_logs": "View logs",
"retry": "Retry",
"no_default_metadata_provider_selected": "You've no default metadata provider set",
"manage_metadata_providers": "Manage metadata providers",
"open_link_in_browser": "Open Link in Browser?",
"do_you_want_to_open_the_following_link": "Do you want to open the following link",
"unsafe_url_warning": "It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.",
"copy_link": "Copy Link",
"building_your_timeline": "Building your timeline based on your listenings...",
"official": "Official",
"author_name": "Author: {author}",
"third_party": "Third-party",
"plugin_requires_authentication": "Plugin requires authentication",
"update_available": "Update available",
"supports_scrobbling": "Supports scrobbling",
"plugin_scrobbling_info": "This plugin scrobbles your music to generate your listening history.",
"default_plugin": "Default",
"set_default": "Set default",
"support": "Support",
"support_plugin_development": "Support plugin development",
"can_access_name_api": "- Can access **{name}** API",
"do_you_want_to_install_this_plugin": "Do you want to install this plugin?",
"third_party_plugin_warning": "This plugin is from a third-party repository. Please ensure you trust the source before installing.",
"author": "Author",
"this_plugin_can_do_following": "This plugin can do following",
"install": "Install",
"install_a_metadata_provider": "Install a Metadata Provider",
"no_tracks_playing": "No Track being played currently",
"synced_lyrics_not_available": "Synced lyrics are not available for this song. Please use the",
"plain_lyrics": "Plain Lyrics",
"tab_instead": "tab instead.",
"disclaimer": "Disclaimer",
"third_party_plugin_dmca_notice": "The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We're not curating them, so we cannot take any action on them.\n\n",
"input_does_not_match_format": "Input doesn't match the required format",
"metadata_provider_plugins": "Metadata Provider Plugins",
"paste_plugin_download_url": "Paste download url or GitHub/Codeberg repo url or direct link to .smplug file",
"download_and_install_plugin_from_url": "Download and install plugin from url",
"failed_to_add_plugin_error": "Failed to add plugin: {error}",
"upload_plugin_from_file": "Upload plugin from file",
"installed": "Installed",
"available_plugins": "Available plugins",
"configure_your_own_metadata_plugin": "Configure your own playlist/album/artist/feed metadata provider",
"audio_scrobblers": "Audio Scrobblers",
"scrobbling": "Scrobbling"
} }

View File

@ -2653,282 +2653,6 @@ abstract class AppLocalizations {
/// In en, this message translates to: /// In en, this message translates to:
/// **'Connection denied. User denied access.'** /// **'Connection denied. User denied access.'**
String get connection_request_denied; String get connection_request_denied;
/// No description provided for @an_error_occurred.
///
/// In en, this message translates to:
/// **'An error occurred'**
String get an_error_occurred;
/// No description provided for @copy_to_clipboard.
///
/// In en, this message translates to:
/// **'Copy to clipboard'**
String get copy_to_clipboard;
/// No description provided for @view_logs.
///
/// In en, this message translates to:
/// **'View logs'**
String get view_logs;
/// No description provided for @retry.
///
/// In en, this message translates to:
/// **'Retry'**
String get retry;
/// No description provided for @no_default_metadata_provider_selected.
///
/// In en, this message translates to:
/// **'You\'ve no default metadata provider set'**
String get no_default_metadata_provider_selected;
/// No description provided for @manage_metadata_providers.
///
/// In en, this message translates to:
/// **'Manage metadata providers'**
String get manage_metadata_providers;
/// No description provided for @open_link_in_browser.
///
/// In en, this message translates to:
/// **'Open Link in Browser?'**
String get open_link_in_browser;
/// No description provided for @do_you_want_to_open_the_following_link.
///
/// In en, this message translates to:
/// **'Do you want to open the following link'**
String get do_you_want_to_open_the_following_link;
/// No description provided for @unsafe_url_warning.
///
/// In en, this message translates to:
/// **'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.'**
String get unsafe_url_warning;
/// No description provided for @copy_link.
///
/// In en, this message translates to:
/// **'Copy Link'**
String get copy_link;
/// No description provided for @building_your_timeline.
///
/// In en, this message translates to:
/// **'Building your timeline based on your listenings...'**
String get building_your_timeline;
/// No description provided for @official.
///
/// In en, this message translates to:
/// **'Official'**
String get official;
/// No description provided for @author_name.
///
/// In en, this message translates to:
/// **'Author: {author}'**
String author_name(Object author);
/// No description provided for @third_party.
///
/// In en, this message translates to:
/// **'Third-party'**
String get third_party;
/// No description provided for @plugin_requires_authentication.
///
/// In en, this message translates to:
/// **'Plugin requires authentication'**
String get plugin_requires_authentication;
/// No description provided for @update_available.
///
/// In en, this message translates to:
/// **'Update available'**
String get update_available;
/// No description provided for @supports_scrobbling.
///
/// In en, this message translates to:
/// **'Supports scrobbling'**
String get supports_scrobbling;
/// No description provided for @plugin_scrobbling_info.
///
/// In en, this message translates to:
/// **'This plugin scrobbles your music to generate your listening history.'**
String get plugin_scrobbling_info;
/// No description provided for @default_plugin.
///
/// In en, this message translates to:
/// **'Default'**
String get default_plugin;
/// No description provided for @set_default.
///
/// In en, this message translates to:
/// **'Set default'**
String get set_default;
/// No description provided for @support.
///
/// In en, this message translates to:
/// **'Support'**
String get support;
/// No description provided for @support_plugin_development.
///
/// In en, this message translates to:
/// **'Support plugin development'**
String get support_plugin_development;
/// No description provided for @can_access_name_api.
///
/// In en, this message translates to:
/// **'- Can access **{name}** API'**
String can_access_name_api(Object name);
/// No description provided for @do_you_want_to_install_this_plugin.
///
/// In en, this message translates to:
/// **'Do you want to install this plugin?'**
String get do_you_want_to_install_this_plugin;
/// No description provided for @third_party_plugin_warning.
///
/// In en, this message translates to:
/// **'This plugin is from a third-party repository. Please ensure you trust the source before installing.'**
String get third_party_plugin_warning;
/// No description provided for @author.
///
/// In en, this message translates to:
/// **'Author'**
String get author;
/// No description provided for @this_plugin_can_do_following.
///
/// In en, this message translates to:
/// **'This plugin can do following'**
String get this_plugin_can_do_following;
/// No description provided for @install.
///
/// In en, this message translates to:
/// **'Install'**
String get install;
/// No description provided for @install_a_metadata_provider.
///
/// In en, this message translates to:
/// **'Install a Metadata Provider'**
String get install_a_metadata_provider;
/// No description provided for @no_tracks_playing.
///
/// In en, this message translates to:
/// **'No Track being played currently'**
String get no_tracks_playing;
/// No description provided for @synced_lyrics_not_available.
///
/// In en, this message translates to:
/// **'Synced lyrics are not available for this song. Please use the'**
String get synced_lyrics_not_available;
/// No description provided for @plain_lyrics.
///
/// In en, this message translates to:
/// **'Plain Lyrics'**
String get plain_lyrics;
/// No description provided for @tab_instead.
///
/// In en, this message translates to:
/// **'tab instead.'**
String get tab_instead;
/// No description provided for @disclaimer.
///
/// In en, this message translates to:
/// **'Disclaimer'**
String get disclaimer;
/// No description provided for @third_party_plugin_dmca_notice.
///
/// In en, this message translates to:
/// **'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n'**
String get third_party_plugin_dmca_notice;
/// No description provided for @input_does_not_match_format.
///
/// In en, this message translates to:
/// **'Input doesn\'t match the required format'**
String get input_does_not_match_format;
/// No description provided for @metadata_provider_plugins.
///
/// In en, this message translates to:
/// **'Metadata Provider Plugins'**
String get metadata_provider_plugins;
/// No description provided for @paste_plugin_download_url.
///
/// In en, this message translates to:
/// **'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file'**
String get paste_plugin_download_url;
/// No description provided for @download_and_install_plugin_from_url.
///
/// In en, this message translates to:
/// **'Download and install plugin from url'**
String get download_and_install_plugin_from_url;
/// No description provided for @failed_to_add_plugin_error.
///
/// In en, this message translates to:
/// **'Failed to add plugin: {error}'**
String failed_to_add_plugin_error(Object error);
/// No description provided for @upload_plugin_from_file.
///
/// In en, this message translates to:
/// **'Upload plugin from file'**
String get upload_plugin_from_file;
/// No description provided for @installed.
///
/// In en, this message translates to:
/// **'Installed'**
String get installed;
/// No description provided for @available_plugins.
///
/// In en, this message translates to:
/// **'Available plugins'**
String get available_plugins;
/// No description provided for @configure_your_own_metadata_plugin.
///
/// In en, this message translates to:
/// **'Configure your own playlist/album/artist/feed metadata provider'**
String get configure_your_own_metadata_plugin;
/// No description provided for @audio_scrobblers.
///
/// In en, this message translates to:
/// **'Audio Scrobblers'**
String get audio_scrobblers;
/// No description provided for @scrobbling.
///
/// In en, this message translates to:
/// **'Scrobbling'**
String get scrobbling;
} }
class _AppLocalizationsDelegate class _AppLocalizationsDelegate

View File

@ -1380,161 +1380,4 @@ class AppLocalizationsAr extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'تم رفض الاتصال. المستخدم رفض الوصول.'; 'تم رفض الاتصال. المستخدم رفض الوصول.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1380,161 +1380,4 @@ class AppLocalizationsBn extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'সংযোগ অস্বীকৃত। ব্যবহারকারী প্রবেশাধিকার অস্বীকার করেছে।'; 'সংযোগ অস্বীকৃত। ব্যবহারকারী প্রবেশাধিকার অস্বীকার করেছে।';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1386,161 +1386,4 @@ class AppLocalizationsCa extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Connexió denegada. L\'usuari ha denegat l\'accés.'; 'Connexió denegada. L\'usuari ha denegat l\'accés.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1379,161 +1379,4 @@ class AppLocalizationsCs extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Připojení bylo zamítnuto. Uživatel odmítl přístup.'; 'Připojení bylo zamítnuto. Uživatel odmítl přístup.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1391,161 +1391,4 @@ class AppLocalizationsDe extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Verbindung abgelehnt. Benutzer hat den Zugriff verweigert.'; 'Verbindung abgelehnt. Benutzer hat den Zugriff verweigert.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1379,161 +1379,4 @@ class AppLocalizationsEn extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Connection denied. User denied access.'; 'Connection denied. User denied access.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1388,161 +1388,4 @@ class AppLocalizationsEs extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Conexión denegada. El usuario denegó el acceso.'; 'Conexión denegada. El usuario denegó el acceso.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1387,161 +1387,4 @@ class AppLocalizationsEu extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Konektatzea ukatu da. Erabiltzaileak sarbidea ukatu du.'; 'Konektatzea ukatu da. Erabiltzaileak sarbidea ukatu du.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1378,161 +1378,4 @@ class AppLocalizationsFa extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'اتصال رد شد. کاربر دسترسی را رد کرد.'; 'اتصال رد شد. کاربر دسترسی را رد کرد.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1380,161 +1380,4 @@ class AppLocalizationsFi extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Yhteys evätty. Käyttäjä eväsi pääsyn.'; 'Yhteys evätty. Käyttäjä eväsi pääsyn.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1392,161 +1392,4 @@ class AppLocalizationsFr extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Connection denied. User denied access.'; 'Connection denied. User denied access.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1384,161 +1384,4 @@ class AppLocalizationsHi extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'कनेक्शन अस्वीकृत। उपयोगकर्ता ने पहुंच अस्वीकृत कर दी।'; 'कनेक्शन अस्वीकृत। उपयोगकर्ता ने पहुंच अस्वीकृत कर दी।';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1386,161 +1386,4 @@ class AppLocalizationsId extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Koneksi ditolak. Pengguna menolak akses.'; 'Koneksi ditolak. Pengguna menolak akses.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1384,161 +1384,4 @@ class AppLocalizationsIt extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Connessione negata. L\'utente ha negato l\'accesso.'; 'Connessione negata. L\'utente ha negato l\'accesso.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1359,161 +1359,4 @@ class AppLocalizationsJa extends AppLocalizations {
@override @override
String get connection_request_denied => '接続が拒否されました。ユーザーがアクセスを拒否しました。'; String get connection_request_denied => '接続が拒否されました。ユーザーがアクセスを拒否しました。';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1383,161 +1383,4 @@ class AppLocalizationsKa extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'კავშირი უარყოფილია. მომხმარებელმა უარყო წვდომა.'; 'კავშირი უარყოფილია. მომხმარებელმა უარყო წვდომა.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1361,161 +1361,4 @@ class AppLocalizationsKo extends AppLocalizations {
@override @override
String get connection_request_denied => '연결이 거부되었습니다. 사용자가 액세스를 거부했습니다.'; String get connection_request_denied => '연결이 거부되었습니다. 사용자가 액세스를 거부했습니다.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1390,161 +1390,4 @@ class AppLocalizationsNe extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'जडान अस्वीकृत। प्रयोगकर्ताले पहुँच अस्वीकृत गर्यो।'; 'जडान अस्वीकृत। प्रयोगकर्ताले पहुँच अस्वीकृत गर्यो।';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1384,161 +1384,4 @@ class AppLocalizationsNl extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Verbinding geweigerd. Gebruiker heeft toegang geweigerd.'; 'Verbinding geweigerd. Gebruiker heeft toegang geweigerd.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1385,161 +1385,4 @@ class AppLocalizationsPl extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Połączenie odrzucone. Użytkownik odmówił dostępu.'; 'Połączenie odrzucone. Użytkownik odmówił dostępu.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1383,161 +1383,4 @@ class AppLocalizationsPt extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Conexão negada. O usuário negou o acesso .'; 'Conexão negada. O usuário negou o acesso .';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1385,161 +1385,4 @@ class AppLocalizationsRu extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Подключение отклонено. Пользователь отказал в доступе.'; 'Подключение отклонено. Пользователь отказал в доступе.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1390,161 +1390,4 @@ class AppLocalizationsTa extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'இணைப்பு மறுக்கப்பட்டது. பயனர் அணுகலை மறுத்தார்.'; 'இணைப்பு மறுக்கப்பட்டது. பயனர் அணுகலை மறுத்தார்.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1376,161 +1376,4 @@ class AppLocalizationsTh extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'การเชื่อมต่อล้มเหลว ผู้ใช้ปฏิเสธการเข้าถึง'; 'การเชื่อมต่อล้มเหลว ผู้ใช้ปฏิเสธการเข้าถึง';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1391,161 +1391,4 @@ class AppLocalizationsTl extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Tanggihan ang koneksyon. Tinanggihan ng gumagamit ang pag-access.'; 'Tanggihan ang koneksyon. Tinanggihan ng gumagamit ang pag-access.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1386,161 +1386,4 @@ class AppLocalizationsTr extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Bağlantı reddedildi. Kullanıcı erişimi reddetti.'; 'Bağlantı reddedildi. Kullanıcı erişimi reddetti.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1383,161 +1383,4 @@ class AppLocalizationsUk extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Підключення відхилено. Користувач відмовив у доступі.'; 'Підключення відхилено. Користувач відмовив у доступі.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1387,161 +1387,4 @@ class AppLocalizationsVi extends AppLocalizations {
@override @override
String get connection_request_denied => String get connection_request_denied =>
'Kết nối bị từ chối. Người dùng đã từ chối quyền truy cập.'; 'Kết nối bị từ chối. Người dùng đã từ chối quyền truy cập.';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -1354,161 +1354,4 @@ class AppLocalizationsZh extends AppLocalizations {
@override @override
String get connection_request_denied => '连接被拒绝。用户拒绝访问。'; String get connection_request_denied => '连接被拒绝。用户拒绝访问。';
@override
String get an_error_occurred => 'An error occurred';
@override
String get copy_to_clipboard => 'Copy to clipboard';
@override
String get view_logs => 'View logs';
@override
String get retry => 'Retry';
@override
String get no_default_metadata_provider_selected =>
'You\'ve no default metadata provider set';
@override
String get manage_metadata_providers => 'Manage metadata providers';
@override
String get open_link_in_browser => 'Open Link in Browser?';
@override
String get do_you_want_to_open_the_following_link =>
'Do you want to open the following link';
@override
String get unsafe_url_warning =>
'It can be unsafe to open links from untrusted sources. Be cautious!\nYou can also copy the link to your clipboard.';
@override
String get copy_link => 'Copy Link';
@override
String get building_your_timeline =>
'Building your timeline based on your listenings...';
@override
String get official => 'Official';
@override
String author_name(Object author) {
return 'Author: $author';
}
@override
String get third_party => 'Third-party';
@override
String get plugin_requires_authentication => 'Plugin requires authentication';
@override
String get update_available => 'Update available';
@override
String get supports_scrobbling => 'Supports scrobbling';
@override
String get plugin_scrobbling_info =>
'This plugin scrobbles your music to generate your listening history.';
@override
String get default_plugin => 'Default';
@override
String get set_default => 'Set default';
@override
String get support => 'Support';
@override
String get support_plugin_development => 'Support plugin development';
@override
String can_access_name_api(Object name) {
return '- Can access **$name** API';
}
@override
String get do_you_want_to_install_this_plugin =>
'Do you want to install this plugin?';
@override
String get third_party_plugin_warning =>
'This plugin is from a third-party repository. Please ensure you trust the source before installing.';
@override
String get author => 'Author';
@override
String get this_plugin_can_do_following => 'This plugin can do following';
@override
String get install => 'Install';
@override
String get install_a_metadata_provider => 'Install a Metadata Provider';
@override
String get no_tracks_playing => 'No Track being played currently';
@override
String get synced_lyrics_not_available =>
'Synced lyrics are not available for this song. Please use the';
@override
String get plain_lyrics => 'Plain Lyrics';
@override
String get tab_instead => 'tab instead.';
@override
String get disclaimer => 'Disclaimer';
@override
String get third_party_plugin_dmca_notice =>
'The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\nPlease use them at your own risk. For any bugs/issues, please report them to the plugin repository.\n\nIf any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We\'re not curating them, so we cannot take any action on them.\n\n';
@override
String get input_does_not_match_format =>
'Input doesn\'t match the required format';
@override
String get metadata_provider_plugins => 'Metadata Provider Plugins';
@override
String get paste_plugin_download_url =>
'Paste download url or GitHub/Codeberg repo url or direct link to .smplug file';
@override
String get download_and_install_plugin_from_url =>
'Download and install plugin from url';
@override
String failed_to_add_plugin_error(Object error) {
return 'Failed to add plugin: $error';
}
@override
String get upload_plugin_from_file => 'Upload plugin from file';
@override
String get installed => 'Installed';
@override
String get available_plugins => 'Available plugins';
@override
String get configure_your_own_metadata_plugin =>
'Configure your own playlist/album/artist/feed metadata provider';
@override
String get audio_scrobblers => 'Audio Scrobblers';
@override
String get scrobbling => 'Scrobbling';
} }

View File

@ -37,7 +37,8 @@ class HomePageBrowseSection extends HookConsumerWidget {
spacing: 8, spacing: 8,
children: [ children: [
const CircularProgressIndicator(), const CircularProgressIndicator(),
Text(context.l10n.building_your_timeline).muted, const Text("Building your timeline based on your listenings...")
.muted,
], ],
), ),
const Gap(16), const Gap(16),

View File

@ -3,7 +3,6 @@ import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart'; import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/markdown/markdown.dart'; import 'package:spotube/components/markdown/markdown.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/models/metadata/metadata.dart'; import 'package:spotube/models/metadata/metadata.dart';
import 'package:spotube/modules/metadata_plugins/plugin_update_available_dialog.dart'; import 'package:spotube/modules/metadata_plugins/plugin_update_available_dialog.dart';
import 'package:spotube/provider/metadata_plugin/core/auth.dart'; import 'package:spotube/provider/metadata_plugin/core/auth.dart';
@ -85,15 +84,15 @@ class MetadataInstalledPluginItem extends HookConsumerWidget {
runSpacing: 8, runSpacing: 8,
children: [ children: [
if (isOfficial) if (isOfficial)
PrimaryBadge( const PrimaryBadge(
leading: const Icon(SpotubeIcons.done), leading: Icon(SpotubeIcons.done),
child: Text(context.l10n.official), child: Text("Official"),
) )
else ...[ else ...[
Text(context.l10n.author_name(plugin.author)), Text("Author: ${plugin.author}"),
DestructiveBadge( const DestructiveBadge(
leading: const Icon(SpotubeIcons.warning), leading: Icon(SpotubeIcons.warning),
child: Text(context.l10n.third_party), child: Text("Third-party"),
) )
], ],
SecondaryBadge( SecondaryBadge(
@ -132,11 +131,11 @@ class MetadataInstalledPluginItem extends HookConsumerWidget {
spacing: 12, spacing: 12,
children: [ children: [
if (requiresAuth && !isAuthenticated) if (requiresAuth && !isAuthenticated)
Row( const Row(
spacing: 8, spacing: 8,
children: [ children: [
const Icon(SpotubeIcons.warning, color: Colors.yellow), Icon(SpotubeIcons.warning, color: Colors.yellow),
Text(context.l10n.plugin_requires_authentication), Text("Plugin requires authentication"),
], ],
), ),
if (hasUpdate) if (hasUpdate)
@ -144,7 +143,7 @@ class MetadataInstalledPluginItem extends HookConsumerWidget {
width: double.infinity, width: double.infinity,
child: Basic( child: Basic(
leading: const Icon(SpotubeIcons.update), leading: const Icon(SpotubeIcons.update),
title: Text(context.l10n.update_available), title: const Text("Update available"),
subtitle: Text( subtitle: Text(
updateAvailable!.asData!.value!.version, updateAvailable!.asData!.value!.version,
), ),
@ -159,17 +158,19 @@ class MetadataInstalledPluginItem extends HookConsumerWidget {
), ),
); );
}, },
child: Text(context.l10n.update), child: const Text("Update"),
), ),
), ),
), ),
if (supportsScrobbling) if (supportsScrobbling)
SizedBox( const SizedBox(
width: double.infinity, width: double.infinity,
child: Basic( child: Basic(
leading: const Icon(SpotubeIcons.info), leading: Icon(SpotubeIcons.info),
title: Text(context.l10n.supports_scrobbling), title: Text("Supports scrobbling"),
subtitle: Text(context.l10n.plugin_scrobbling_info), subtitle: Text(
"This plugin scrobbles your music to generate your listening history.",
),
), ),
) )
], ],
@ -183,11 +184,9 @@ class MetadataInstalledPluginItem extends HookConsumerWidget {
onPressed: () async { onPressed: () async {
await pluginsNotifier.setDefaultPlugin(plugin); await pluginsNotifier.setDefaultPlugin(plugin);
}, },
child: Text( child: isDefault
isDefault ? const Text("Default")
? context.l10n.default_plugin : const Text("Set default"),
: context.l10n.set_default,
),
), ),
if (isDefault) if (isDefault)
Consumer(builder: (context, ref, _) { Consumer(builder: (context, ref, _) {
@ -227,14 +226,13 @@ class MetadataInstalledPluginItem extends HookConsumerWidget {
}, },
), ),
leading: const Icon(SpotubeIcons.heartFilled), leading: const Icon(SpotubeIcons.heartFilled),
child: Text(context.l10n.support), child: const Text("Support"),
onPressed: () { onPressed: () {
showDialog( showDialog(
context: context, context: context,
builder: (context) { builder: (context) {
return AlertDialog( return AlertDialog(
title: title: const Text("Support plugin development"),
Text(context.l10n.support_plugin_development),
content: ConstrainedBox( content: ConstrainedBox(
constraints: BoxConstraints( constraints: BoxConstraints(
maxHeight: mediaQuery.height * 0.8, maxHeight: mediaQuery.height * 0.8,
@ -254,7 +252,7 @@ class MetadataInstalledPluginItem extends HookConsumerWidget {
onPressed: () { onPressed: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
child: Text(context.l10n.close), child: const Text("Close"),
), ),
], ],
); );
@ -270,7 +268,7 @@ class MetadataInstalledPluginItem extends HookConsumerWidget {
await metadataPlugin.asData?.value?.auth.authenticate(); await metadataPlugin.asData?.value?.auth.authenticate();
}, },
leading: const Icon(SpotubeIcons.login), leading: const Icon(SpotubeIcons.login),
child: Text(context.l10n.login), child: const Text("Login"),
) )
else if (isDefault && requiresAuth && isAuthenticated) else if (isDefault && requiresAuth && isAuthenticated)
Button.destructive( Button.destructive(
@ -278,7 +276,7 @@ class MetadataInstalledPluginItem extends HookConsumerWidget {
await metadataPlugin.asData?.value?.auth.logout(); await metadataPlugin.asData?.value?.auth.logout();
}, },
leading: const Icon(SpotubeIcons.logout), leading: const Icon(SpotubeIcons.logout),
child: Text(context.l10n.logout), child: const Text("Logout"),
) )
], ],
) )

View File

@ -4,7 +4,6 @@ import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart'; import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/markdown/markdown.dart'; import 'package:spotube/components/markdown/markdown.dart';
import 'package:spotube/extensions/context.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:url_launcher/url_launcher_string.dart'; import 'package:url_launcher/url_launcher_string.dart';
@ -39,9 +38,9 @@ class MetadataPluginRepositoryItem extends HookConsumerWidget {
spacing: 8, spacing: 8,
children: [ children: [
if (pluginRepo.owner == "KRTirtho") ...[ if (pluginRepo.owner == "KRTirtho") ...[
PrimaryBadge( const PrimaryBadge(
leading: Icon(SpotubeIcons.done), leading: Icon(SpotubeIcons.done),
child: Text(context.l10n.official), child: Text("Official"),
), ),
SecondaryBadge( SecondaryBadge(
leading: host == "github.com" leading: host == "github.com"
@ -53,10 +52,10 @@ class MetadataPluginRepositoryItem extends HookConsumerWidget {
}, },
), ),
] else ...[ ] else ...[
Text(context.l10n.author_name(pluginRepo.owner)), Text("Author: ${pluginRepo.owner}"),
DestructiveBadge( const DestructiveBadge(
leading: const Icon(SpotubeIcons.warning), leading: Icon(SpotubeIcons.warning),
child: Text(context.l10n.third_party), child: Text("Third-party"),
) )
] ]
], ],
@ -80,19 +79,21 @@ class MetadataPluginRepositoryItem extends HookConsumerWidget {
context: context, context: context,
builder: (context) { builder: (context) {
final pluginAbilities = pluginConfig.apis final pluginAbilities = pluginConfig.apis
.map( .map((e) => "- Can access **${e.name}** API")
(e) => context.l10n.can_access_name_api(e.name))
.join("\n\n"); .join("\n\n");
return AlertDialog( return AlertDialog(
title: Text( title:
context.l10n.do_you_want_to_install_this_plugin), const Text("Do you want to install this plugin?"),
content: Column( content: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text(context.l10n.third_party_plugin_warning), const Text(
"This plugin is from a third-party repository. "
"Please ensure you trust the source before installing.",
),
const Gap(8), const Gap(8),
FutureBuilder( FutureBuilder(
future: future:
@ -125,10 +126,9 @@ class MetadataPluginRepositoryItem extends HookConsumerWidget {
), ),
const Gap(8), const Gap(8),
AppMarkdown( AppMarkdown(
data: data: "**Author**: ${pluginConfig.author}\n\n"
"**${context.l10n.author}**: ${pluginConfig.author}\n\n" "**Repository**: [${pluginConfig.repository ?? 'N/A'}](${pluginConfig.repository})\n\n\n\n"
"**${context.l10n.repository}**: [${pluginConfig.repository ?? 'N/A'}](${pluginConfig.repository})\n\n\n\n" "This plugin can do following:\n\n"
"${context.l10n.this_plugin_can_do_following}:\n\n"
"$pluginAbilities", "$pluginAbilities",
), ),
], ],
@ -138,13 +138,13 @@ class MetadataPluginRepositoryItem extends HookConsumerWidget {
onPressed: () { onPressed: () {
Navigator.of(context).pop(false); Navigator.of(context).pop(false);
}, },
child: Text(context.l10n.decline), child: const Text("Deny"),
), ),
Button.primary( Button.primary(
onPressed: () { onPressed: () {
Navigator.of(context).pop(true); Navigator.of(context).pop(true);
}, },
child: Text(context.l10n.accept), child: const Text("Allow"),
), ),
], ],
); );
@ -162,7 +162,7 @@ class MetadataPluginRepositoryItem extends HookConsumerWidget {
leading: isInstalling.value leading: isInstalling.value
? const CircularProgressIndicator() ? const CircularProgressIndicator()
: const Icon(SpotubeIcons.add), : const Icon(SpotubeIcons.add),
child: Text(context.l10n.install), child: const Text("Install"),
), ),
), ),
); );

View File

@ -3,7 +3,7 @@ import 'dart:convert';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart' hide Consumer;
import 'package:shadcn_flutter/shadcn_flutter_extension.dart'; import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/routes.gr.dart'; import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/collections/spotube_icons.dart';

View File

@ -112,7 +112,7 @@ class GettingStartedScreenSupportSection extends HookConsumerWidget {
context.pushRoute(const SettingsMetadataProviderRoute()); context.pushRoute(const SettingsMetadataProviderRoute());
} }
}, },
child: Text(context.l10n.install_a_metadata_provider), child: const Text("Install a Metadata Provider"),
), ),
], ],
), ),

View File

@ -118,7 +118,7 @@ class PlainLyrics extends HookConsumerWidget {
), ),
child: SelectableText( child: SelectableText(
lyrics == null && playlist.activeTrack == null lyrics == null && playlist.activeTrack == null
? context.l10n.no_tracks_playing ? "No Track being played currently"
: lyrics ?? "", : lyrics ?? "",
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),

View File

@ -236,17 +236,18 @@ class SyncedLyrics extends HookConsumerWidget {
text: TextSpan( text: TextSpan(
style: bodyTextTheme, style: bodyTextTheme,
children: [ children: [
TextSpan( const TextSpan(
text: context.l10n.synced_lyrics_not_available, text:
"Synced lyrics are not available for this song. Please use the",
), ),
TextSpan( TextSpan(
text: " ${context.l10n.plain_lyrics} ", text: " Plain Lyrics ",
style: typography.large.copyWith( style: typography.large.copyWith(
color: palette.bodyTextColor, color: palette.bodyTextColor,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
TextSpan(text: context.l10n.tab_instead), const TextSpan(text: "tab instead."),
], ],
), ),
), ),

View File

@ -73,7 +73,7 @@ class SettingsMetadataProviderFormPage extends HookConsumerWidget {
FormBuilderValidators.match( FormBuilderValidators.match(
RegExp(field.regex!), RegExp(field.regex!),
errorText: errorText:
context.l10n.input_does_not_match_format, "Input doesn't match the required format",
), ),
]), ]),
builder: (formField) { builder: (formField) {

View File

@ -9,7 +9,6 @@ import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/form/text_form_field.dart'; import 'package:spotube/components/form/text_form_field.dart';
import 'package:spotube/components/titlebar/titlebar.dart'; import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/models/metadata/metadata.dart'; import 'package:spotube/models/metadata/metadata.dart';
import 'package:spotube/modules/metadata_plugins/installed_plugin.dart'; import 'package:spotube/modules/metadata_plugins/installed_plugin.dart';
import 'package:spotube/modules/metadata_plugins/plugin_repository.dart'; import 'package:spotube/modules/metadata_plugins/plugin_repository.dart';
@ -57,9 +56,9 @@ class SettingsMetadataProviderPage extends HookConsumerWidget {
return SafeArea( return SafeArea(
bottom: false, bottom: false,
child: Scaffold( child: Scaffold(
headers: [ headers: const [
TitleBar( TitleBar(
title: Text(context.l10n.metadata_provider_plugins), title: Text("Metadata provider plugin"),
) )
], ],
child: Padding( child: Padding(
@ -77,8 +76,10 @@ class SettingsMetadataProviderPage extends HookConsumerWidget {
name: "plugin_url", name: "plugin_url",
validator: FormBuilderValidators.url( validator: FormBuilderValidators.url(
protocols: ["http", "https"]), protocols: ["http", "https"]),
placeholder: placeholder: const Text(
Text(context.l10n.paste_plugin_download_url), "Paste download url or GitHub/Codeberg repo url"
"or direct link to .smplug file",
),
), ),
), ),
), ),
@ -86,9 +87,8 @@ class SettingsMetadataProviderPage extends HookConsumerWidget {
final isLoading = useState(false); final isLoading = useState(false);
return Tooltip( return Tooltip(
tooltip: TooltipContainer( tooltip: const TooltipContainer(
child: Text(context child: Text("Download and install plugin from url"),
.l10n.download_and_install_plugin_from_url),
).call, ).call,
child: IconButton.secondary( child: IconButton.secondary(
icon: isLoading.value icon: isLoading.value
@ -130,11 +130,7 @@ class SettingsMetadataProviderPage extends HookConsumerWidget {
SpotubeIcons.error, SpotubeIcons.error,
color: Colors.red, color: Colors.red,
), ),
title: Text( title: Text("Failed to add plugin: $e"),
context.l10n
.failed_to_add_plugin_error(
e.toString()),
),
), ),
); );
}, },
@ -148,8 +144,8 @@ class SettingsMetadataProviderPage extends HookConsumerWidget {
); );
}), }),
Tooltip( Tooltip(
tooltip: TooltipContainer( tooltip: const TooltipContainer(
child: Text(context.l10n.upload_plugin_from_file), child: Text("Upload plugin from file"),
).call, ).call,
child: IconButton.primary( child: IconButton.primary(
icon: const Icon(SpotubeIcons.upload), icon: const Icon(SpotubeIcons.upload),
@ -181,7 +177,7 @@ class SettingsMetadataProviderPage extends HookConsumerWidget {
child: Row( child: Row(
children: [ children: [
const Gap(8), const Gap(8),
Text(context.l10n.installed).h4, const Text("Installed").h4,
const Gap(8), const Gap(8),
const Expanded(child: Divider()), const Expanded(child: Divider()),
const Gap(8), const Gap(8),
@ -207,7 +203,7 @@ class SettingsMetadataProviderPage extends HookConsumerWidget {
child: Row( child: Row(
children: [ children: [
const Gap(8), const Gap(8),
Text(context.l10n.available_plugins).h4, const Text("Available plugins").h4,
const Gap(8), const Gap(8),
const Expanded(child: Divider()), const Expanded(child: Divider()),
const Gap(8), const Gap(8),
@ -260,16 +256,21 @@ class SettingsMetadataProviderPage extends HookConsumerWidget {
spacing: 8, spacing: 8,
children: [ children: [
const Icon(SpotubeIcons.warning, size: 16), const Icon(SpotubeIcons.warning, size: 16),
Text( const Text(
context.l10n.disclaimer, "Disclaimer",
style: const TextStyle( style: TextStyle(fontWeight: FontWeight.bold),
fontWeight: FontWeight.bold),
).bold, ).bold,
], ],
), ),
Text(context.l10n.third_party_plugin_dmca_notice) const Text(
.muted "The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\n"
.xSmall, "Please use them at your own risk. For any bugs/issues, please report them to the plugin repository."
"\n\n"
"If any \"Third-party\" plugin is breaking ToS/DMCA of any service/legal entity, "
"please ask the \"Third-party\" plugin author or the hosting platform .e.g GitHub/Codeberg to take action. "
"Above listed (\"Third-party\" labelled) are all public/community maintained plugins. We're not curating them, "
"so we cannot take any action on them.\n\n",
).muted.xSmall,
], ],
), ),
), ),

View File

@ -38,7 +38,7 @@ class SettingsScrobblingPage extends HookConsumerWidget {
child: SafeArea( child: SafeArea(
bottom: false, bottom: false,
child: Scaffold( child: Scaffold(
headers: [TitleBar(title: Text(context.l10n.scrobbling))], headers: const [TitleBar(title: Text("Scrobbling"))],
child: ListView( child: ListView(
padding: const EdgeInsets.all(8), padding: const EdgeInsets.all(8),
children: [ children: [

View File

@ -21,8 +21,9 @@ class SettingsAccountSection extends HookConsumerWidget {
children: [ children: [
ListTile( ListTile(
leading: const Icon(SpotubeIcons.extensions), leading: const Icon(SpotubeIcons.extensions),
title: Text(context.l10n.metadata_provider_plugins), title: const Text("Metadata provider plugins"),
subtitle: Text(context.l10n.configure_your_own_metadata_plugin), subtitle: const Text(
"Configure your own playlist/album/artist/feed metadata provider"),
onTap: () { onTap: () {
context.pushRoute(const SettingsMetadataProviderRoute()); context.pushRoute(const SettingsMetadataProviderRoute());
}, },
@ -31,7 +32,7 @@ class SettingsAccountSection extends HookConsumerWidget {
if (scrobbler.asData?.value == null) if (scrobbler.asData?.value == null)
ListTile( ListTile(
leading: const Icon(SpotubeIcons.music), leading: const Icon(SpotubeIcons.music),
title: Text(context.l10n.audio_scrobblers), title: const Text("Audio scrobblers"),
onTap: () { onTap: () {
context.pushRoute(const SettingsScrobblingRoute()); context.pushRoute(const SettingsScrobblingRoute());
}, },

View File

@ -9,20 +9,9 @@ enum SourceCodecs {
} }
enum SourceQualities { enum SourceQualities {
high(2), high,
medium(1), medium,
low(0); low,
final int priority;
const SourceQualities(this.priority);
bool operator <(SourceQualities other) {
return priority < other.priority;
}
operator >(SourceQualities other) {
return priority > other.priority;
}
} }
typedef SiblingType<T extends TrackSourceInfo> = ({ typedef SiblingType<T extends TrackSourceInfo> = ({

View File

@ -179,7 +179,7 @@ abstract class SourcedTrack extends BasicSourcedTrack {
}).toList(); }).toList();
if (sameCodecSources.isNotEmpty) { if (sameCodecSources.isNotEmpty) {
return preferences.audioQuality > SourceQualities.low return preferences.audioQuality != SourceQualities.low
? sameCodecSources.first.url ? sameCodecSources.first.url
: sameCodecSources.last.url; : sameCodecSources.last.url;
} }
@ -190,7 +190,7 @@ abstract class SourcedTrack extends BasicSourcedTrack {
return aDiff != bDiff ? aDiff - bDiff : a.quality.index - b.quality.index; return aDiff != bDiff ? aDiff - bDiff : a.quality.index - b.quality.index;
}); });
return preferences.audioQuality > SourceQualities.low return preferences.audioQuality != SourceQualities.low
? fallbackSource.firstOrNull?.url ? fallbackSource.firstOrNull?.url
: fallbackSource.lastOrNull?.url; : fallbackSource.lastOrNull?.url;
} }

View File

@ -1,5 +1,4 @@
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:dio/dio.dart';
import 'package:drift/drift.dart'; import 'package:drift/drift.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:spotube/models/database/database.dart'; import 'package:spotube/models/database/database.dart';
@ -7,7 +6,6 @@ import 'package:spotube/models/playback/track_sources.dart';
import 'package:spotube/provider/database/database.dart'; import 'package:spotube/provider/database/database.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart'; import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
import 'package:spotube/provider/youtube_engine/youtube_engine.dart'; import 'package:spotube/provider/youtube_engine/youtube_engine.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/song_link/song_link.dart'; import 'package:spotube/services/song_link/song_link.dart';
import 'package:spotube/services/sourced_track/enums.dart'; import 'package:spotube/services/sourced_track/enums.dart';
@ -391,32 +389,14 @@ class YoutubeSourcedTrack extends SourcedTrack {
@override @override
Future<SourcedTrack> refreshStream() async { Future<SourcedTrack> refreshStream() async {
List<TrackSource> validStreams = [];
for (final source in sources) {
final res = await globalDio.head(
source.url,
options:
Options(validateStatus: (status) => status != null && status < 500),
);
if (res.statusCode! < 400) {
validStreams.add(source);
}
}
if (validStreams.isEmpty) {
final manifest = final manifest =
await ref.read(youtubeEngineProvider).getStreamManifest(info.id); await ref.read(youtubeEngineProvider).getStreamManifest(info.id);
validStreams = toTrackSources(manifest);
}
final sourcedTrack = YoutubeSourcedTrack( final sourcedTrack = YoutubeSourcedTrack(
ref: ref, ref: ref,
siblings: siblings, siblings: siblings,
source: source, source: source,
sources: validStreams, sources: toTrackSources(manifest),
info: info, info: info,
query: query, query: query,
); );

View File

@ -1,6 +1,9 @@
import 'dart:isolate'; import 'dart:isolate';
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:spotube/services/dio/dio.dart';
import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/services/youtube_engine/youtube_engine.dart'; import 'package:spotube/services/youtube_engine/youtube_engine.dart';
import 'package:youtube_explode_dart/youtube_explode_dart.dart'; import 'package:youtube_explode_dart/youtube_explode_dart.dart';
@ -167,13 +170,31 @@ class YouTubeExplodeEngine implements YouTubeEngine {
], ],
); );
final audioStreams = streamManifest.audioOnly.where( final accessibleStreams = <AudioOnlyStreamInfo>[];
(stream) => stream.bitrate.bitsPerSecond >= 40960, final stringBuffer = StringBuffer();
for (final stream in streamManifest.audioOnly) {
// Call dio head request to check if the stream is accessible
final response = await globalDio.headUri(
stream.url,
options: Options(
followRedirects: true,
validateStatus: (status) {
return status != null && status < 500;
},
),
); );
return StreamManifest( stringBuffer.writeln(
audioStreams.map( "Stream $videoId Status ${response.statusCode} Codec ${stream.audioCodec} "
(stream) => AudioOnlyStreamInfo( "Bitrate ${stream.bitrate} Container ${stream.container}",
);
if (response.statusCode != null &&
response.statusCode! >= 200 &&
response.statusCode! < 400) {
accessibleStreams.add(
AudioOnlyStreamInfo(
stream.videoId, stream.videoId,
stream.tag, stream.tag,
stream.url, stream.url,
@ -190,9 +211,14 @@ class YouTubeExplodeEngine implements YouTubeEngine {
stream.codec, stream.codec,
stream.audioTrack, stream.audioTrack,
), ),
),
); );
} }
}
AppLogger.log.d(stringBuffer.toString());
return StreamManifest(accessibleStreams);
}
@override @override
Future<Video> getVideo(String videoId) async { Future<Video> getVideo(String videoId) async {

File diff suppressed because it is too large Load Diff