From 005355e267b0a28175b9fc5662c37120182a90bc Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Wed, 3 Sep 2025 18:45:38 +0600 Subject: [PATCH] chore(translation): add l10n support for new metadata plugin pages --- lib/components/fallbacks/error_box.dart | 15 +- .../fallbacks/no_default_metadata_plugin.dart | 5 +- lib/components/markdown/markdown.dart | 24 +- lib/l10n/app_en.arb | 48 +- lib/l10n/generated/app_localizations.dart | 276 ++++ lib/l10n/generated/app_localizations_ar.dart | 157 ++ lib/l10n/generated/app_localizations_bn.dart | 157 ++ lib/l10n/generated/app_localizations_ca.dart | 157 ++ lib/l10n/generated/app_localizations_cs.dart | 157 ++ lib/l10n/generated/app_localizations_de.dart | 157 ++ lib/l10n/generated/app_localizations_en.dart | 157 ++ lib/l10n/generated/app_localizations_es.dart | 157 ++ lib/l10n/generated/app_localizations_eu.dart | 157 ++ lib/l10n/generated/app_localizations_fa.dart | 157 ++ lib/l10n/generated/app_localizations_fi.dart | 157 ++ lib/l10n/generated/app_localizations_fr.dart | 157 ++ lib/l10n/generated/app_localizations_hi.dart | 157 ++ lib/l10n/generated/app_localizations_id.dart | 157 ++ lib/l10n/generated/app_localizations_it.dart | 157 ++ lib/l10n/generated/app_localizations_ja.dart | 157 ++ lib/l10n/generated/app_localizations_ka.dart | 157 ++ lib/l10n/generated/app_localizations_ko.dart | 157 ++ lib/l10n/generated/app_localizations_ne.dart | 157 ++ lib/l10n/generated/app_localizations_nl.dart | 157 ++ lib/l10n/generated/app_localizations_pl.dart | 157 ++ lib/l10n/generated/app_localizations_pt.dart | 157 ++ lib/l10n/generated/app_localizations_ru.dart | 157 ++ lib/l10n/generated/app_localizations_ta.dart | 157 ++ lib/l10n/generated/app_localizations_th.dart | 157 ++ lib/l10n/generated/app_localizations_tl.dart | 157 ++ lib/l10n/generated/app_localizations_tr.dart | 157 ++ lib/l10n/generated/app_localizations_uk.dart | 157 ++ lib/l10n/generated/app_localizations_vi.dart | 157 ++ lib/l10n/generated/app_localizations_zh.dart | 157 ++ lib/modules/home/sections/sections.dart | 3 +- .../metadata_plugins/installed_plugin.dart | 54 +- .../metadata_plugins/plugin_repository.dart | 38 +- lib/pages/connect/control/control.dart | 2 +- .../getting_started/sections/support.dart | 2 +- lib/pages/lyrics/plain_lyrics.dart | 2 +- lib/pages/lyrics/synced_lyrics.dart | 9 +- .../settings/metadata/metadata_form.dart | 2 +- lib/pages/settings/metadata_plugins.dart | 49 +- lib/pages/settings/scrobbling/scrobbling.dart | 2 +- lib/pages/settings/sections/accounts.dart | 7 +- untranslated_messages.json | 1344 ++++++++++++++++- 46 files changed, 6298 insertions(+), 137 deletions(-) diff --git a/lib/components/fallbacks/error_box.dart b/lib/components/fallbacks/error_box.dart index 68d0b66f..fd56cb58 100644 --- a/lib/components/fallbacks/error_box.dart +++ b/lib/components/fallbacks/error_box.dart @@ -4,6 +4,7 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter_extension.dart'; import 'package:spotube/collections/spotube_icons.dart'; +import 'package:spotube/extensions/context.dart'; class ErrorBox extends StatelessWidget { final Object error; @@ -27,10 +28,10 @@ class ErrorBox extends StatelessWidget { mainAxisSize: MainAxisSize.min, spacing: 12, children: [ - const Basic( - leading: Icon(SpotubeIcons.error), + Basic( + leading: const Icon(SpotubeIcons.error), contentSpacing: 8, - title: Text("An error occurred"), + title: Text(context.l10n.an_error_occurred), ), Card( padding: const EdgeInsets.all(8.0), @@ -70,7 +71,7 @@ class ErrorBox extends StatelessWidget { spacing: 8, children: [ const Icon(SpotubeIcons.logs), - const Text("Logs"), + Text(context.l10n.logs), const Spacer(), IconButton.ghost( icon: const Icon(SpotubeIcons.close), @@ -86,7 +87,7 @@ class ErrorBox extends StatelessWidget { leading: copied.value ? const Icon(SpotubeIcons.done) : const Icon(SpotubeIcons.clipboard), - child: const Text("Copy to clipboard"), + child: Text(context.l10n.copy_to_clipboard), onPressed: () { Clipboard.setData( ClipboardData(text: error.toString()), @@ -118,13 +119,13 @@ class ErrorBox extends StatelessWidget { }, ); }, - child: const Text("View logs"), + child: Text(context.l10n.view_logs), ), if (onRetry != null) Button.text( leading: const Icon(SpotubeIcons.refresh), onPressed: onRetry, - child: const Text("Retry"), + child: Text(context.l10n.retry), ), ], ), diff --git a/lib/components/fallbacks/no_default_metadata_plugin.dart b/lib/components/fallbacks/no_default_metadata_plugin.dart index d5d00259..1cabcdb1 100644 --- a/lib/components/fallbacks/no_default_metadata_plugin.dart +++ b/lib/components/fallbacks/no_default_metadata_plugin.dart @@ -5,6 +5,7 @@ import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter_extension.dart'; import 'package:spotube/collections/routes.gr.dart'; import 'package:spotube/collections/spotube_icons.dart'; +import 'package:spotube/extensions/context.dart'; class NoDefaultMetadataPlugin extends StatelessWidget { const NoDefaultMetadataPlugin({super.key}); @@ -23,13 +24,13 @@ class NoDefaultMetadataPlugin extends StatelessWidget { color: context.theme.colorScheme.primary, ), AutoSizeText( - "You've no default metadata provider set", + context.l10n.no_default_metadata_provider_selected, style: context.theme.typography.h4, maxLines: 1, ), Button.primary( leading: const Icon(SpotubeIcons.extensions), - child: const Text("Manage metadata providers"), + child: Text(context.l10n.manage_metadata_providers), onPressed: () { context.pushRoute(const SettingsMetadataProviderRoute()); }, diff --git a/lib/components/markdown/markdown.dart b/lib/components/markdown/markdown.dart index 52c7f488..9ea2e77c 100644 --- a/lib/components/markdown/markdown.dart +++ b/lib/components/markdown/markdown.dart @@ -3,6 +3,7 @@ import 'package:flutter/services.dart'; import 'package:flutter_markdown_plus/flutter_markdown_plus.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:spotube/collections/spotube_icons.dart'; +import 'package:spotube/extensions/context.dart'; import 'package:url_launcher/url_launcher_string.dart'; class AppMarkdown extends StatelessWidget { @@ -30,36 +31,33 @@ class AppMarkdown extends StatelessWidget { return ConstrainedBox( constraints: const BoxConstraints(maxWidth: 450), child: AlertDialog( - title: const Row( + title: Row( spacing: 8, children: [ - Icon(SpotubeIcons.warning), - Text("Open Link in Browser?"), + const Icon(SpotubeIcons.warning), + Text(context.l10n.open_link_in_browser), ], ), content: Text.rich( TextSpan( children: [ - const TextSpan( - text: "Do you want to open the following link:\n", + TextSpan( + text: + "${context.l10n.do_you_want_to_open_the_following_link}:\n", ), if (href != null) TextSpan( text: "$href\n\n", style: const TextStyle(color: Colors.blue), ), - 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.", - ), + TextSpan(text: context.l10n.unsafe_url_warning), ], ), ), actions: [ Button.ghost( onPressed: () => Navigator.of(context).pop(false), - child: const Text("Cancel"), + child: Text(context.l10n.cancel), ), Button.ghost( onPressed: () { @@ -68,7 +66,7 @@ class AppMarkdown extends StatelessWidget { } Navigator.of(context).pop(false); }, - child: const Text("Copy Link"), + child: Text(context.l10n.copy_link), ), Button.destructive( onPressed: () { @@ -80,7 +78,7 @@ class AppMarkdown extends StatelessWidget { } Navigator.of(context).pop(true); }, - child: const Text("Open"), + child: Text(context.l10n.open), ), ], ), diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index cb81d3ce..34b56489 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -415,5 +415,51 @@ "edit_port": "Edit port", "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?", - "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" } diff --git a/lib/l10n/generated/app_localizations.dart b/lib/l10n/generated/app_localizations.dart index 1758532a..81c98612 100644 --- a/lib/l10n/generated/app_localizations.dart +++ b/lib/l10n/generated/app_localizations.dart @@ -2653,6 +2653,282 @@ abstract class AppLocalizations { /// In en, this message translates to: /// **'Connection denied. User denied access.'** 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 diff --git a/lib/l10n/generated/app_localizations_ar.dart b/lib/l10n/generated/app_localizations_ar.dart index 362ab69d..35336619 100644 --- a/lib/l10n/generated/app_localizations_ar.dart +++ b/lib/l10n/generated/app_localizations_ar.dart @@ -1380,4 +1380,161 @@ class AppLocalizationsAr extends AppLocalizations { @override 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'; } diff --git a/lib/l10n/generated/app_localizations_bn.dart b/lib/l10n/generated/app_localizations_bn.dart index 1014254a..ef539877 100644 --- a/lib/l10n/generated/app_localizations_bn.dart +++ b/lib/l10n/generated/app_localizations_bn.dart @@ -1380,4 +1380,161 @@ class AppLocalizationsBn extends AppLocalizations { @override 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'; } diff --git a/lib/l10n/generated/app_localizations_ca.dart b/lib/l10n/generated/app_localizations_ca.dart index 7069651f..3a373f14 100644 --- a/lib/l10n/generated/app_localizations_ca.dart +++ b/lib/l10n/generated/app_localizations_ca.dart @@ -1386,4 +1386,161 @@ class AppLocalizationsCa extends AppLocalizations { @override String get connection_request_denied => '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'; } diff --git a/lib/l10n/generated/app_localizations_cs.dart b/lib/l10n/generated/app_localizations_cs.dart index 0b084314..344d52ac 100644 --- a/lib/l10n/generated/app_localizations_cs.dart +++ b/lib/l10n/generated/app_localizations_cs.dart @@ -1379,4 +1379,161 @@ class AppLocalizationsCs extends AppLocalizations { @override String get connection_request_denied => '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'; } diff --git a/lib/l10n/generated/app_localizations_de.dart b/lib/l10n/generated/app_localizations_de.dart index 1187eadd..3676525c 100644 --- a/lib/l10n/generated/app_localizations_de.dart +++ b/lib/l10n/generated/app_localizations_de.dart @@ -1391,4 +1391,161 @@ class AppLocalizationsDe extends AppLocalizations { @override String get connection_request_denied => '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'; } diff --git a/lib/l10n/generated/app_localizations_en.dart b/lib/l10n/generated/app_localizations_en.dart index cbecb68c..e6d4db1e 100644 --- a/lib/l10n/generated/app_localizations_en.dart +++ b/lib/l10n/generated/app_localizations_en.dart @@ -1379,4 +1379,161 @@ class AppLocalizationsEn extends AppLocalizations { @override String get connection_request_denied => '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'; } diff --git a/lib/l10n/generated/app_localizations_es.dart b/lib/l10n/generated/app_localizations_es.dart index 9fc35f31..19631eb9 100644 --- a/lib/l10n/generated/app_localizations_es.dart +++ b/lib/l10n/generated/app_localizations_es.dart @@ -1388,4 +1388,161 @@ class AppLocalizationsEs extends AppLocalizations { @override String get connection_request_denied => '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'; } diff --git a/lib/l10n/generated/app_localizations_eu.dart b/lib/l10n/generated/app_localizations_eu.dart index 0dba9560..0f167a18 100644 --- a/lib/l10n/generated/app_localizations_eu.dart +++ b/lib/l10n/generated/app_localizations_eu.dart @@ -1387,4 +1387,161 @@ class AppLocalizationsEu extends AppLocalizations { @override String get connection_request_denied => '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'; } diff --git a/lib/l10n/generated/app_localizations_fa.dart b/lib/l10n/generated/app_localizations_fa.dart index 86c0cbbb..f5a59ef7 100644 --- a/lib/l10n/generated/app_localizations_fa.dart +++ b/lib/l10n/generated/app_localizations_fa.dart @@ -1378,4 +1378,161 @@ class AppLocalizationsFa extends AppLocalizations { @override 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'; } diff --git a/lib/l10n/generated/app_localizations_fi.dart b/lib/l10n/generated/app_localizations_fi.dart index 6fbd9cb4..9b9b1fba 100644 --- a/lib/l10n/generated/app_localizations_fi.dart +++ b/lib/l10n/generated/app_localizations_fi.dart @@ -1380,4 +1380,161 @@ class AppLocalizationsFi extends AppLocalizations { @override String get connection_request_denied => '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'; } diff --git a/lib/l10n/generated/app_localizations_fr.dart b/lib/l10n/generated/app_localizations_fr.dart index d19a31f8..0827e249 100644 --- a/lib/l10n/generated/app_localizations_fr.dart +++ b/lib/l10n/generated/app_localizations_fr.dart @@ -1392,4 +1392,161 @@ class AppLocalizationsFr extends AppLocalizations { @override String get connection_request_denied => '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'; } diff --git a/lib/l10n/generated/app_localizations_hi.dart b/lib/l10n/generated/app_localizations_hi.dart index a3f56a25..58e3d9a4 100644 --- a/lib/l10n/generated/app_localizations_hi.dart +++ b/lib/l10n/generated/app_localizations_hi.dart @@ -1384,4 +1384,161 @@ class AppLocalizationsHi extends AppLocalizations { @override 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'; } diff --git a/lib/l10n/generated/app_localizations_id.dart b/lib/l10n/generated/app_localizations_id.dart index 2ec73009..6aa53d44 100644 --- a/lib/l10n/generated/app_localizations_id.dart +++ b/lib/l10n/generated/app_localizations_id.dart @@ -1386,4 +1386,161 @@ class AppLocalizationsId extends AppLocalizations { @override String get connection_request_denied => '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'; } diff --git a/lib/l10n/generated/app_localizations_it.dart b/lib/l10n/generated/app_localizations_it.dart index 8039552f..0fcb76ff 100644 --- a/lib/l10n/generated/app_localizations_it.dart +++ b/lib/l10n/generated/app_localizations_it.dart @@ -1384,4 +1384,161 @@ class AppLocalizationsIt extends AppLocalizations { @override String get connection_request_denied => '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'; } diff --git a/lib/l10n/generated/app_localizations_ja.dart b/lib/l10n/generated/app_localizations_ja.dart index a4b6795d..19ce0a74 100644 --- a/lib/l10n/generated/app_localizations_ja.dart +++ b/lib/l10n/generated/app_localizations_ja.dart @@ -1359,4 +1359,161 @@ class AppLocalizationsJa extends AppLocalizations { @override 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'; } diff --git a/lib/l10n/generated/app_localizations_ka.dart b/lib/l10n/generated/app_localizations_ka.dart index 1dbbeb20..fe179321 100644 --- a/lib/l10n/generated/app_localizations_ka.dart +++ b/lib/l10n/generated/app_localizations_ka.dart @@ -1383,4 +1383,161 @@ class AppLocalizationsKa extends AppLocalizations { @override 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'; } diff --git a/lib/l10n/generated/app_localizations_ko.dart b/lib/l10n/generated/app_localizations_ko.dart index dbe0c06f..8e5f5940 100644 --- a/lib/l10n/generated/app_localizations_ko.dart +++ b/lib/l10n/generated/app_localizations_ko.dart @@ -1361,4 +1361,161 @@ class AppLocalizationsKo extends AppLocalizations { @override 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'; } diff --git a/lib/l10n/generated/app_localizations_ne.dart b/lib/l10n/generated/app_localizations_ne.dart index f0aa95ad..d1bad523 100644 --- a/lib/l10n/generated/app_localizations_ne.dart +++ b/lib/l10n/generated/app_localizations_ne.dart @@ -1390,4 +1390,161 @@ class AppLocalizationsNe extends AppLocalizations { @override 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'; } diff --git a/lib/l10n/generated/app_localizations_nl.dart b/lib/l10n/generated/app_localizations_nl.dart index 072daff7..3ba77a3f 100644 --- a/lib/l10n/generated/app_localizations_nl.dart +++ b/lib/l10n/generated/app_localizations_nl.dart @@ -1384,4 +1384,161 @@ class AppLocalizationsNl extends AppLocalizations { @override String get connection_request_denied => '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'; } diff --git a/lib/l10n/generated/app_localizations_pl.dart b/lib/l10n/generated/app_localizations_pl.dart index 51bd0283..c7c82db3 100644 --- a/lib/l10n/generated/app_localizations_pl.dart +++ b/lib/l10n/generated/app_localizations_pl.dart @@ -1385,4 +1385,161 @@ class AppLocalizationsPl extends AppLocalizations { @override String get connection_request_denied => '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'; } diff --git a/lib/l10n/generated/app_localizations_pt.dart b/lib/l10n/generated/app_localizations_pt.dart index f4d7d57a..21e31133 100644 --- a/lib/l10n/generated/app_localizations_pt.dart +++ b/lib/l10n/generated/app_localizations_pt.dart @@ -1383,4 +1383,161 @@ class AppLocalizationsPt extends AppLocalizations { @override String get connection_request_denied => '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'; } diff --git a/lib/l10n/generated/app_localizations_ru.dart b/lib/l10n/generated/app_localizations_ru.dart index 7403a674..ff3dcc0c 100644 --- a/lib/l10n/generated/app_localizations_ru.dart +++ b/lib/l10n/generated/app_localizations_ru.dart @@ -1385,4 +1385,161 @@ class AppLocalizationsRu extends AppLocalizations { @override 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'; } diff --git a/lib/l10n/generated/app_localizations_ta.dart b/lib/l10n/generated/app_localizations_ta.dart index 22507186..149d9673 100644 --- a/lib/l10n/generated/app_localizations_ta.dart +++ b/lib/l10n/generated/app_localizations_ta.dart @@ -1390,4 +1390,161 @@ class AppLocalizationsTa extends AppLocalizations { @override 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'; } diff --git a/lib/l10n/generated/app_localizations_th.dart b/lib/l10n/generated/app_localizations_th.dart index 69c08b0d..7948e660 100644 --- a/lib/l10n/generated/app_localizations_th.dart +++ b/lib/l10n/generated/app_localizations_th.dart @@ -1376,4 +1376,161 @@ class AppLocalizationsTh extends AppLocalizations { @override 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'; } diff --git a/lib/l10n/generated/app_localizations_tl.dart b/lib/l10n/generated/app_localizations_tl.dart index 3c4de958..b61079b1 100644 --- a/lib/l10n/generated/app_localizations_tl.dart +++ b/lib/l10n/generated/app_localizations_tl.dart @@ -1391,4 +1391,161 @@ class AppLocalizationsTl extends AppLocalizations { @override String get connection_request_denied => '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'; } diff --git a/lib/l10n/generated/app_localizations_tr.dart b/lib/l10n/generated/app_localizations_tr.dart index 93ec14fb..56c81c4d 100644 --- a/lib/l10n/generated/app_localizations_tr.dart +++ b/lib/l10n/generated/app_localizations_tr.dart @@ -1386,4 +1386,161 @@ class AppLocalizationsTr extends AppLocalizations { @override String get connection_request_denied => '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'; } diff --git a/lib/l10n/generated/app_localizations_uk.dart b/lib/l10n/generated/app_localizations_uk.dart index 51ab48d5..86c8fd71 100644 --- a/lib/l10n/generated/app_localizations_uk.dart +++ b/lib/l10n/generated/app_localizations_uk.dart @@ -1383,4 +1383,161 @@ class AppLocalizationsUk extends AppLocalizations { @override 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'; } diff --git a/lib/l10n/generated/app_localizations_vi.dart b/lib/l10n/generated/app_localizations_vi.dart index c7f339bc..7fc29d71 100644 --- a/lib/l10n/generated/app_localizations_vi.dart +++ b/lib/l10n/generated/app_localizations_vi.dart @@ -1387,4 +1387,161 @@ class AppLocalizationsVi extends AppLocalizations { @override 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.'; + + @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'; } diff --git a/lib/l10n/generated/app_localizations_zh.dart b/lib/l10n/generated/app_localizations_zh.dart index 53a6c3dc..bef02fb0 100644 --- a/lib/l10n/generated/app_localizations_zh.dart +++ b/lib/l10n/generated/app_localizations_zh.dart @@ -1354,4 +1354,161 @@ class AppLocalizationsZh extends AppLocalizations { @override 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'; } diff --git a/lib/modules/home/sections/sections.dart b/lib/modules/home/sections/sections.dart index a4a0d82d..b04e7a9e 100644 --- a/lib/modules/home/sections/sections.dart +++ b/lib/modules/home/sections/sections.dart @@ -37,8 +37,7 @@ class HomePageBrowseSection extends HookConsumerWidget { spacing: 8, children: [ const CircularProgressIndicator(), - const Text("Building your timeline based on your listenings...") - .muted, + Text(context.l10n.building_your_timeline).muted, ], ), const Gap(16), diff --git a/lib/modules/metadata_plugins/installed_plugin.dart b/lib/modules/metadata_plugins/installed_plugin.dart index daba3797..0a37e020 100644 --- a/lib/modules/metadata_plugins/installed_plugin.dart +++ b/lib/modules/metadata_plugins/installed_plugin.dart @@ -3,6 +3,7 @@ import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter_extension.dart'; import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/markdown/markdown.dart'; +import 'package:spotube/extensions/context.dart'; import 'package:spotube/models/metadata/metadata.dart'; import 'package:spotube/modules/metadata_plugins/plugin_update_available_dialog.dart'; import 'package:spotube/provider/metadata_plugin/core/auth.dart'; @@ -84,15 +85,15 @@ class MetadataInstalledPluginItem extends HookConsumerWidget { runSpacing: 8, children: [ if (isOfficial) - const PrimaryBadge( - leading: Icon(SpotubeIcons.done), - child: Text("Official"), + PrimaryBadge( + leading: const Icon(SpotubeIcons.done), + child: Text(context.l10n.official), ) else ...[ - Text("Author: ${plugin.author}"), - const DestructiveBadge( - leading: Icon(SpotubeIcons.warning), - child: Text("Third-party"), + Text(context.l10n.author_name(plugin.author)), + DestructiveBadge( + leading: const Icon(SpotubeIcons.warning), + child: Text(context.l10n.third_party), ) ], SecondaryBadge( @@ -131,11 +132,11 @@ class MetadataInstalledPluginItem extends HookConsumerWidget { spacing: 12, children: [ if (requiresAuth && !isAuthenticated) - const Row( + Row( spacing: 8, children: [ - Icon(SpotubeIcons.warning, color: Colors.yellow), - Text("Plugin requires authentication"), + const Icon(SpotubeIcons.warning, color: Colors.yellow), + Text(context.l10n.plugin_requires_authentication), ], ), if (hasUpdate) @@ -143,7 +144,7 @@ class MetadataInstalledPluginItem extends HookConsumerWidget { width: double.infinity, child: Basic( leading: const Icon(SpotubeIcons.update), - title: const Text("Update available"), + title: Text(context.l10n.update_available), subtitle: Text( updateAvailable!.asData!.value!.version, ), @@ -158,19 +159,17 @@ class MetadataInstalledPluginItem extends HookConsumerWidget { ), ); }, - child: const Text("Update"), + child: Text(context.l10n.update), ), ), ), if (supportsScrobbling) - const SizedBox( + SizedBox( width: double.infinity, child: Basic( - leading: Icon(SpotubeIcons.info), - title: Text("Supports scrobbling"), - subtitle: Text( - "This plugin scrobbles your music to generate your listening history.", - ), + leading: const Icon(SpotubeIcons.info), + title: Text(context.l10n.supports_scrobbling), + subtitle: Text(context.l10n.plugin_scrobbling_info), ), ) ], @@ -184,9 +183,11 @@ class MetadataInstalledPluginItem extends HookConsumerWidget { onPressed: () async { await pluginsNotifier.setDefaultPlugin(plugin); }, - child: isDefault - ? const Text("Default") - : const Text("Set default"), + child: Text( + isDefault + ? context.l10n.default_plugin + : context.l10n.set_default, + ), ), if (isDefault) Consumer(builder: (context, ref, _) { @@ -226,13 +227,14 @@ class MetadataInstalledPluginItem extends HookConsumerWidget { }, ), leading: const Icon(SpotubeIcons.heartFilled), - child: const Text("Support"), + child: Text(context.l10n.support), onPressed: () { showDialog( context: context, builder: (context) { return AlertDialog( - title: const Text("Support plugin development"), + title: + Text(context.l10n.support_plugin_development), content: ConstrainedBox( constraints: BoxConstraints( maxHeight: mediaQuery.height * 0.8, @@ -252,7 +254,7 @@ class MetadataInstalledPluginItem extends HookConsumerWidget { onPressed: () { Navigator.of(context).pop(); }, - child: const Text("Close"), + child: Text(context.l10n.close), ), ], ); @@ -268,7 +270,7 @@ class MetadataInstalledPluginItem extends HookConsumerWidget { await metadataPlugin.asData?.value?.auth.authenticate(); }, leading: const Icon(SpotubeIcons.login), - child: const Text("Login"), + child: Text(context.l10n.login), ) else if (isDefault && requiresAuth && isAuthenticated) Button.destructive( @@ -276,7 +278,7 @@ class MetadataInstalledPluginItem extends HookConsumerWidget { await metadataPlugin.asData?.value?.auth.logout(); }, leading: const Icon(SpotubeIcons.logout), - child: const Text("Logout"), + child: Text(context.l10n.logout), ) ], ) diff --git a/lib/modules/metadata_plugins/plugin_repository.dart b/lib/modules/metadata_plugins/plugin_repository.dart index 80714cc6..f140b9ee 100644 --- a/lib/modules/metadata_plugins/plugin_repository.dart +++ b/lib/modules/metadata_plugins/plugin_repository.dart @@ -4,6 +4,7 @@ import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter_extension.dart'; import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/markdown/markdown.dart'; +import 'package:spotube/extensions/context.dart'; import 'package:spotube/models/metadata/metadata.dart'; import 'package:spotube/provider/metadata_plugin/metadata_plugin_provider.dart'; import 'package:url_launcher/url_launcher_string.dart'; @@ -38,9 +39,9 @@ class MetadataPluginRepositoryItem extends HookConsumerWidget { spacing: 8, children: [ if (pluginRepo.owner == "KRTirtho") ...[ - const PrimaryBadge( + PrimaryBadge( leading: Icon(SpotubeIcons.done), - child: Text("Official"), + child: Text(context.l10n.official), ), SecondaryBadge( leading: host == "github.com" @@ -52,10 +53,10 @@ class MetadataPluginRepositoryItem extends HookConsumerWidget { }, ), ] else ...[ - Text("Author: ${pluginRepo.owner}"), - const DestructiveBadge( - leading: Icon(SpotubeIcons.warning), - child: Text("Third-party"), + Text(context.l10n.author_name(pluginRepo.owner)), + DestructiveBadge( + leading: const Icon(SpotubeIcons.warning), + child: Text(context.l10n.third_party), ) ] ], @@ -79,21 +80,19 @@ class MetadataPluginRepositoryItem extends HookConsumerWidget { context: context, builder: (context) { final pluginAbilities = pluginConfig.apis - .map((e) => "- Can access **${e.name}** API") + .map( + (e) => context.l10n.can_access_name_api(e.name)) .join("\n\n"); return AlertDialog( - title: - const Text("Do you want to install this plugin?"), + title: Text( + context.l10n.do_you_want_to_install_this_plugin), content: Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ - const Text( - "This plugin is from a third-party repository. " - "Please ensure you trust the source before installing.", - ), + Text(context.l10n.third_party_plugin_warning), const Gap(8), FutureBuilder( future: @@ -126,9 +125,10 @@ class MetadataPluginRepositoryItem extends HookConsumerWidget { ), const Gap(8), AppMarkdown( - data: "**Author**: ${pluginConfig.author}\n\n" - "**Repository**: [${pluginConfig.repository ?? 'N/A'}](${pluginConfig.repository})\n\n\n\n" - "This plugin can do following:\n\n" + data: + "**${context.l10n.author}**: ${pluginConfig.author}\n\n" + "**${context.l10n.repository}**: [${pluginConfig.repository ?? 'N/A'}](${pluginConfig.repository})\n\n\n\n" + "${context.l10n.this_plugin_can_do_following}:\n\n" "$pluginAbilities", ), ], @@ -138,13 +138,13 @@ class MetadataPluginRepositoryItem extends HookConsumerWidget { onPressed: () { Navigator.of(context).pop(false); }, - child: const Text("Deny"), + child: Text(context.l10n.decline), ), Button.primary( onPressed: () { Navigator.of(context).pop(true); }, - child: const Text("Allow"), + child: Text(context.l10n.accept), ), ], ); @@ -162,7 +162,7 @@ class MetadataPluginRepositoryItem extends HookConsumerWidget { leading: isInstalling.value ? const CircularProgressIndicator() : const Icon(SpotubeIcons.add), - child: const Text("Install"), + child: Text(context.l10n.install), ), ), ); diff --git a/lib/pages/connect/control/control.dart b/lib/pages/connect/control/control.dart index 6abb11eb..164e5d43 100644 --- a/lib/pages/connect/control/control.dart +++ b/lib/pages/connect/control/control.dart @@ -3,7 +3,7 @@ import 'dart:convert'; import 'package:auto_route/auto_route.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' hide Consumer; +import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter_extension.dart'; import 'package:spotube/collections/routes.gr.dart'; import 'package:spotube/collections/spotube_icons.dart'; diff --git a/lib/pages/getting_started/sections/support.dart b/lib/pages/getting_started/sections/support.dart index d85433d8..ef549296 100644 --- a/lib/pages/getting_started/sections/support.dart +++ b/lib/pages/getting_started/sections/support.dart @@ -112,7 +112,7 @@ class GettingStartedScreenSupportSection extends HookConsumerWidget { context.pushRoute(const SettingsMetadataProviderRoute()); } }, - child: const Text("Install a Metadata Provider"), + child: Text(context.l10n.install_a_metadata_provider), ), ], ), diff --git a/lib/pages/lyrics/plain_lyrics.dart b/lib/pages/lyrics/plain_lyrics.dart index 69f71cf4..3f0d7d1b 100644 --- a/lib/pages/lyrics/plain_lyrics.dart +++ b/lib/pages/lyrics/plain_lyrics.dart @@ -118,7 +118,7 @@ class PlainLyrics extends HookConsumerWidget { ), child: SelectableText( lyrics == null && playlist.activeTrack == null - ? "No Track being played currently" + ? context.l10n.no_tracks_playing : lyrics ?? "", textAlign: TextAlign.center, ), diff --git a/lib/pages/lyrics/synced_lyrics.dart b/lib/pages/lyrics/synced_lyrics.dart index 5319d7ad..6559e0e7 100644 --- a/lib/pages/lyrics/synced_lyrics.dart +++ b/lib/pages/lyrics/synced_lyrics.dart @@ -236,18 +236,17 @@ class SyncedLyrics extends HookConsumerWidget { text: TextSpan( style: bodyTextTheme, children: [ - const TextSpan( - text: - "Synced lyrics are not available for this song. Please use the", + TextSpan( + text: context.l10n.synced_lyrics_not_available, ), TextSpan( - text: " Plain Lyrics ", + text: " ${context.l10n.plain_lyrics} ", style: typography.large.copyWith( color: palette.bodyTextColor, fontWeight: FontWeight.bold, ), ), - const TextSpan(text: "tab instead."), + TextSpan(text: context.l10n.tab_instead), ], ), ), diff --git a/lib/pages/settings/metadata/metadata_form.dart b/lib/pages/settings/metadata/metadata_form.dart index a82d405c..b0aeb8bb 100644 --- a/lib/pages/settings/metadata/metadata_form.dart +++ b/lib/pages/settings/metadata/metadata_form.dart @@ -73,7 +73,7 @@ class SettingsMetadataProviderFormPage extends HookConsumerWidget { FormBuilderValidators.match( RegExp(field.regex!), errorText: - "Input doesn't match the required format", + context.l10n.input_does_not_match_format, ), ]), builder: (formField) { diff --git a/lib/pages/settings/metadata_plugins.dart b/lib/pages/settings/metadata_plugins.dart index 8366ac18..35c55639 100644 --- a/lib/pages/settings/metadata_plugins.dart +++ b/lib/pages/settings/metadata_plugins.dart @@ -9,6 +9,7 @@ import 'package:skeletonizer/skeletonizer.dart'; import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/form/text_form_field.dart'; import 'package:spotube/components/titlebar/titlebar.dart'; +import 'package:spotube/extensions/context.dart'; import 'package:spotube/models/metadata/metadata.dart'; import 'package:spotube/modules/metadata_plugins/installed_plugin.dart'; import 'package:spotube/modules/metadata_plugins/plugin_repository.dart'; @@ -56,9 +57,9 @@ class SettingsMetadataProviderPage extends HookConsumerWidget { return SafeArea( bottom: false, child: Scaffold( - headers: const [ + headers: [ TitleBar( - title: Text("Metadata provider plugin"), + title: Text(context.l10n.metadata_provider_plugins), ) ], child: Padding( @@ -76,10 +77,8 @@ class SettingsMetadataProviderPage extends HookConsumerWidget { name: "plugin_url", validator: FormBuilderValidators.url( protocols: ["http", "https"]), - placeholder: const Text( - "Paste download url or GitHub/Codeberg repo url" - "or direct link to .smplug file", - ), + placeholder: + Text(context.l10n.paste_plugin_download_url), ), ), ), @@ -87,8 +86,9 @@ class SettingsMetadataProviderPage extends HookConsumerWidget { final isLoading = useState(false); return Tooltip( - tooltip: const TooltipContainer( - child: Text("Download and install plugin from url"), + tooltip: TooltipContainer( + child: Text(context + .l10n.download_and_install_plugin_from_url), ).call, child: IconButton.secondary( icon: isLoading.value @@ -130,7 +130,11 @@ class SettingsMetadataProviderPage extends HookConsumerWidget { SpotubeIcons.error, color: Colors.red, ), - title: Text("Failed to add plugin: $e"), + title: Text( + context.l10n + .failed_to_add_plugin_error( + e.toString()), + ), ), ); }, @@ -144,8 +148,8 @@ class SettingsMetadataProviderPage extends HookConsumerWidget { ); }), Tooltip( - tooltip: const TooltipContainer( - child: Text("Upload plugin from file"), + tooltip: TooltipContainer( + child: Text(context.l10n.upload_plugin_from_file), ).call, child: IconButton.primary( icon: const Icon(SpotubeIcons.upload), @@ -177,7 +181,7 @@ class SettingsMetadataProviderPage extends HookConsumerWidget { child: Row( children: [ const Gap(8), - const Text("Installed").h4, + Text(context.l10n.installed).h4, const Gap(8), const Expanded(child: Divider()), const Gap(8), @@ -203,7 +207,7 @@ class SettingsMetadataProviderPage extends HookConsumerWidget { child: Row( children: [ const Gap(8), - const Text("Available plugins").h4, + Text(context.l10n.available_plugins).h4, const Gap(8), const Expanded(child: Divider()), const Gap(8), @@ -256,21 +260,16 @@ class SettingsMetadataProviderPage extends HookConsumerWidget { spacing: 8, children: [ const Icon(SpotubeIcons.warning, size: 16), - const Text( - "Disclaimer", - style: TextStyle(fontWeight: FontWeight.bold), + Text( + context.l10n.disclaimer, + style: const TextStyle( + fontWeight: FontWeight.bold), ).bold, ], ), - const Text( - "The Spotube team does not hold any responsibility (including legal) for any \"Third-party\" plugins.\n" - "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, + Text(context.l10n.third_party_plugin_dmca_notice) + .muted + .xSmall, ], ), ), diff --git a/lib/pages/settings/scrobbling/scrobbling.dart b/lib/pages/settings/scrobbling/scrobbling.dart index 2827781b..9c7f3296 100644 --- a/lib/pages/settings/scrobbling/scrobbling.dart +++ b/lib/pages/settings/scrobbling/scrobbling.dart @@ -38,7 +38,7 @@ class SettingsScrobblingPage extends HookConsumerWidget { child: SafeArea( bottom: false, child: Scaffold( - headers: const [TitleBar(title: Text("Scrobbling"))], + headers: [TitleBar(title: Text(context.l10n.scrobbling))], child: ListView( padding: const EdgeInsets.all(8), children: [ diff --git a/lib/pages/settings/sections/accounts.dart b/lib/pages/settings/sections/accounts.dart index 6dd01a2b..af8e1b80 100644 --- a/lib/pages/settings/sections/accounts.dart +++ b/lib/pages/settings/sections/accounts.dart @@ -21,9 +21,8 @@ class SettingsAccountSection extends HookConsumerWidget { children: [ ListTile( leading: const Icon(SpotubeIcons.extensions), - title: const Text("Metadata provider plugins"), - subtitle: const Text( - "Configure your own playlist/album/artist/feed metadata provider"), + title: Text(context.l10n.metadata_provider_plugins), + subtitle: Text(context.l10n.configure_your_own_metadata_plugin), onTap: () { context.pushRoute(const SettingsMetadataProviderRoute()); }, @@ -32,7 +31,7 @@ class SettingsAccountSection extends HookConsumerWidget { if (scrobbler.asData?.value == null) ListTile( leading: const Icon(SpotubeIcons.music), - title: const Text("Audio scrobblers"), + title: Text(context.l10n.audio_scrobblers), onTap: () { context.pushRoute(const SettingsScrobblingRoute()); }, diff --git a/untranslated_messages.json b/untranslated_messages.json index 5ae99b72..36e02b77 100644 --- a/untranslated_messages.json +++ b/untranslated_messages.json @@ -1,114 +1,1402 @@ { "ar": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "bn": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "ca": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "cs": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "de": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "es": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "eu": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "fa": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "fi": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "fr": [ "hipotetical_calculation", - "connection_request_denied" + "connection_request_denied", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "hi": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "id": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "it": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "ja": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "ka": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "ko": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "ne": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "nl": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "pl": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "pt": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "ru": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "ta": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "th": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "tl": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "tr": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "uk": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "vi": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ], "zh": [ - "hipotetical_calculation" + "hipotetical_calculation", + "an_error_occurred", + "copy_to_clipboard", + "view_logs", + "retry", + "no_default_metadata_provider_selected", + "manage_metadata_providers", + "open_link_in_browser", + "do_you_want_to_open_the_following_link", + "unsafe_url_warning", + "copy_link", + "building_your_timeline", + "official", + "author_name", + "third_party", + "plugin_requires_authentication", + "update_available", + "supports_scrobbling", + "plugin_scrobbling_info", + "default_plugin", + "set_default", + "support", + "support_plugin_development", + "can_access_name_api", + "do_you_want_to_install_this_plugin", + "third_party_plugin_warning", + "author", + "this_plugin_can_do_following", + "install", + "install_a_metadata_provider", + "no_tracks_playing", + "synced_lyrics_not_available", + "plain_lyrics", + "tab_instead", + "disclaimer", + "third_party_plugin_dmca_notice", + "input_does_not_match_format", + "metadata_provider_plugins", + "paste_plugin_download_url", + "download_and_install_plugin_from_url", + "failed_to_add_plugin_error", + "upload_plugin_from_file", + "installed", + "available_plugins", + "configure_your_own_metadata_plugin", + "audio_scrobblers", + "scrobbling" ] }