mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-07-26 05:51:18 +02:00
chore(i18n): localize folder-access download errors, drop em dashes
The two folder-access failure messages are stored on items as fixed English sentinels so code can match on them; translate the known sentinels at display time (error dialog and failed-row message) via new downloadErrorSafPermissionLost / downloadErrorFolderAccessLost keys. Also replace em dashes in recently added comments.
This commit is contained in:
@@ -5353,6 +5353,18 @@ abstract class AppLocalizations {
|
||||
/// **'Re-select folder'**
|
||||
String get downloadFolderReselect;
|
||||
|
||||
/// Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'SAF permission invalid or revoked. Please reconfigure download location in Settings.'**
|
||||
String get downloadErrorSafPermissionLost;
|
||||
|
||||
/// Error shown on downloads that failed because the iOS download folder bookmark could not be opened
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Download folder access lost. Please re-select your download folder in Settings.'**
|
||||
String get downloadErrorFolderAccessLost;
|
||||
|
||||
/// Description shown in filename format editor
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
||||
@@ -3139,6 +3139,14 @@ class AppLocalizationsAr extends AppLocalizations {
|
||||
@override
|
||||
String get downloadFolderReselect => 'Re-select folder';
|
||||
|
||||
@override
|
||||
String get downloadErrorSafPermissionLost =>
|
||||
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
|
||||
|
||||
@override
|
||||
String get downloadErrorFolderAccessLost =>
|
||||
'Download folder access lost. Please re-select your download folder in Settings.';
|
||||
|
||||
@override
|
||||
String downloadFilenameDescription(
|
||||
Object album,
|
||||
|
||||
@@ -3179,6 +3179,14 @@ class AppLocalizationsDe extends AppLocalizations {
|
||||
@override
|
||||
String get downloadFolderReselect => 'Re-select folder';
|
||||
|
||||
@override
|
||||
String get downloadErrorSafPermissionLost =>
|
||||
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
|
||||
|
||||
@override
|
||||
String get downloadErrorFolderAccessLost =>
|
||||
'Download folder access lost. Please re-select your download folder in Settings.';
|
||||
|
||||
@override
|
||||
String downloadFilenameDescription(
|
||||
Object album,
|
||||
|
||||
@@ -3139,6 +3139,14 @@ class AppLocalizationsEn extends AppLocalizations {
|
||||
@override
|
||||
String get downloadFolderReselect => 'Re-select folder';
|
||||
|
||||
@override
|
||||
String get downloadErrorSafPermissionLost =>
|
||||
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
|
||||
|
||||
@override
|
||||
String get downloadErrorFolderAccessLost =>
|
||||
'Download folder access lost. Please re-select your download folder in Settings.';
|
||||
|
||||
@override
|
||||
String downloadFilenameDescription(
|
||||
Object album,
|
||||
|
||||
@@ -3139,6 +3139,14 @@ class AppLocalizationsEs extends AppLocalizations {
|
||||
@override
|
||||
String get downloadFolderReselect => 'Re-select folder';
|
||||
|
||||
@override
|
||||
String get downloadErrorSafPermissionLost =>
|
||||
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
|
||||
|
||||
@override
|
||||
String get downloadErrorFolderAccessLost =>
|
||||
'Download folder access lost. Please re-select your download folder in Settings.';
|
||||
|
||||
@override
|
||||
String downloadFilenameDescription(
|
||||
Object album,
|
||||
|
||||
@@ -3223,6 +3223,14 @@ class AppLocalizationsFr extends AppLocalizations {
|
||||
@override
|
||||
String get downloadFolderReselect => 'Re-select folder';
|
||||
|
||||
@override
|
||||
String get downloadErrorSafPermissionLost =>
|
||||
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
|
||||
|
||||
@override
|
||||
String get downloadErrorFolderAccessLost =>
|
||||
'Download folder access lost. Please re-select your download folder in Settings.';
|
||||
|
||||
@override
|
||||
String downloadFilenameDescription(
|
||||
Object album,
|
||||
|
||||
@@ -3139,6 +3139,14 @@ class AppLocalizationsHi extends AppLocalizations {
|
||||
@override
|
||||
String get downloadFolderReselect => 'Re-select folder';
|
||||
|
||||
@override
|
||||
String get downloadErrorSafPermissionLost =>
|
||||
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
|
||||
|
||||
@override
|
||||
String get downloadErrorFolderAccessLost =>
|
||||
'Download folder access lost. Please re-select your download folder in Settings.';
|
||||
|
||||
@override
|
||||
String downloadFilenameDescription(
|
||||
Object album,
|
||||
|
||||
@@ -3122,6 +3122,14 @@ class AppLocalizationsId extends AppLocalizations {
|
||||
@override
|
||||
String get downloadFolderReselect => 'Re-select folder';
|
||||
|
||||
@override
|
||||
String get downloadErrorSafPermissionLost =>
|
||||
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
|
||||
|
||||
@override
|
||||
String get downloadErrorFolderAccessLost =>
|
||||
'Download folder access lost. Please re-select your download folder in Settings.';
|
||||
|
||||
@override
|
||||
String downloadFilenameDescription(
|
||||
Object album,
|
||||
|
||||
@@ -3126,6 +3126,14 @@ class AppLocalizationsJa extends AppLocalizations {
|
||||
@override
|
||||
String get downloadFolderReselect => 'Re-select folder';
|
||||
|
||||
@override
|
||||
String get downloadErrorSafPermissionLost =>
|
||||
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
|
||||
|
||||
@override
|
||||
String get downloadErrorFolderAccessLost =>
|
||||
'Download folder access lost. Please re-select your download folder in Settings.';
|
||||
|
||||
@override
|
||||
String downloadFilenameDescription(
|
||||
Object album,
|
||||
|
||||
@@ -3124,6 +3124,14 @@ class AppLocalizationsKo extends AppLocalizations {
|
||||
@override
|
||||
String get downloadFolderReselect => 'Re-select folder';
|
||||
|
||||
@override
|
||||
String get downloadErrorSafPermissionLost =>
|
||||
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
|
||||
|
||||
@override
|
||||
String get downloadErrorFolderAccessLost =>
|
||||
'Download folder access lost. Please re-select your download folder in Settings.';
|
||||
|
||||
@override
|
||||
String downloadFilenameDescription(
|
||||
Object album,
|
||||
|
||||
@@ -3139,6 +3139,14 @@ class AppLocalizationsNl extends AppLocalizations {
|
||||
@override
|
||||
String get downloadFolderReselect => 'Re-select folder';
|
||||
|
||||
@override
|
||||
String get downloadErrorSafPermissionLost =>
|
||||
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
|
||||
|
||||
@override
|
||||
String get downloadErrorFolderAccessLost =>
|
||||
'Download folder access lost. Please re-select your download folder in Settings.';
|
||||
|
||||
@override
|
||||
String downloadFilenameDescription(
|
||||
Object album,
|
||||
|
||||
@@ -3139,6 +3139,14 @@ class AppLocalizationsPt extends AppLocalizations {
|
||||
@override
|
||||
String get downloadFolderReselect => 'Re-select folder';
|
||||
|
||||
@override
|
||||
String get downloadErrorSafPermissionLost =>
|
||||
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
|
||||
|
||||
@override
|
||||
String get downloadErrorFolderAccessLost =>
|
||||
'Download folder access lost. Please re-select your download folder in Settings.';
|
||||
|
||||
@override
|
||||
String downloadFilenameDescription(
|
||||
Object album,
|
||||
|
||||
@@ -3194,6 +3194,14 @@ class AppLocalizationsRu extends AppLocalizations {
|
||||
@override
|
||||
String get downloadFolderReselect => 'Re-select folder';
|
||||
|
||||
@override
|
||||
String get downloadErrorSafPermissionLost =>
|
||||
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
|
||||
|
||||
@override
|
||||
String get downloadErrorFolderAccessLost =>
|
||||
'Download folder access lost. Please re-select your download folder in Settings.';
|
||||
|
||||
@override
|
||||
String downloadFilenameDescription(
|
||||
Object album,
|
||||
|
||||
@@ -3170,6 +3170,14 @@ class AppLocalizationsTr extends AppLocalizations {
|
||||
@override
|
||||
String get downloadFolderReselect => 'Re-select folder';
|
||||
|
||||
@override
|
||||
String get downloadErrorSafPermissionLost =>
|
||||
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
|
||||
|
||||
@override
|
||||
String get downloadErrorFolderAccessLost =>
|
||||
'Download folder access lost. Please re-select your download folder in Settings.';
|
||||
|
||||
@override
|
||||
String downloadFilenameDescription(
|
||||
Object album,
|
||||
|
||||
@@ -3186,6 +3186,14 @@ class AppLocalizationsUk extends AppLocalizations {
|
||||
@override
|
||||
String get downloadFolderReselect => 'Re-select folder';
|
||||
|
||||
@override
|
||||
String get downloadErrorSafPermissionLost =>
|
||||
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
|
||||
|
||||
@override
|
||||
String get downloadErrorFolderAccessLost =>
|
||||
'Download folder access lost. Please re-select your download folder in Settings.';
|
||||
|
||||
@override
|
||||
String downloadFilenameDescription(
|
||||
Object album,
|
||||
|
||||
@@ -3139,6 +3139,14 @@ class AppLocalizationsZh extends AppLocalizations {
|
||||
@override
|
||||
String get downloadFolderReselect => 'Re-select folder';
|
||||
|
||||
@override
|
||||
String get downloadErrorSafPermissionLost =>
|
||||
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
|
||||
|
||||
@override
|
||||
String get downloadErrorFolderAccessLost =>
|
||||
'Download folder access lost. Please re-select your download folder in Settings.';
|
||||
|
||||
@override
|
||||
String downloadFilenameDescription(
|
||||
Object album,
|
||||
|
||||
@@ -4122,6 +4122,14 @@
|
||||
"@downloadFolderReselect": {
|
||||
"description": "Button that reopens the folder picker to restore download folder access"
|
||||
},
|
||||
"downloadErrorSafPermissionLost": "SAF permission invalid or revoked. Please reconfigure download location in Settings.",
|
||||
"@downloadErrorSafPermissionLost": {
|
||||
"description": "Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid"
|
||||
},
|
||||
"downloadErrorFolderAccessLost": "Download folder access lost. Please re-select your download folder in Settings.",
|
||||
"@downloadErrorFolderAccessLost": {
|
||||
"description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened"
|
||||
},
|
||||
"downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.",
|
||||
"@downloadFilenameDescription": {
|
||||
"description": "Description shown in filename format editor"
|
||||
|
||||
@@ -3421,7 +3421,7 @@ class _QueueTabState extends ConsumerState<QueueTab> {
|
||||
final message = isRateLimit
|
||||
? context.l10n.queueRateLimitMessage
|
||||
: (item.errorMessage.trim().isNotEmpty
|
||||
? item.errorMessage
|
||||
? _localizedDownloadError(context, item.errorMessage)
|
||||
: context.l10n.updateDownloadFailed);
|
||||
final action = await showDialog<String>(
|
||||
context: context,
|
||||
@@ -4239,7 +4239,7 @@ class _QueueTabState extends ConsumerState<QueueTab> {
|
||||
final expired =
|
||||
addedAt == null || now.difference(addedAt).inSeconds >= 6;
|
||||
if (activeDownloadIds.contains(id)) {
|
||||
// Re-queued (retry) — the live row takes over from the bridge.
|
||||
// Re-queued (retry): the live row takes over from the bridge.
|
||||
stale.add(id);
|
||||
} else if (hasActiveDownloads) {
|
||||
// Keep just-completed tracks pinned in the lead zone while the
|
||||
@@ -6603,6 +6603,18 @@ class _QueueTabState extends ConsumerState<QueueTab> {
|
||||
);
|
||||
}
|
||||
|
||||
/// Download error messages are stored as fixed English sentinels on the
|
||||
/// item (so code can match on them); translate the known ones for display.
|
||||
String _localizedDownloadError(BuildContext context, String raw) {
|
||||
if (raw == safPermissionLostErrorMessage) {
|
||||
return context.l10n.downloadErrorSafPermissionLost;
|
||||
}
|
||||
if (raw == downloadFolderAccessLostErrorMessage) {
|
||||
return context.l10n.downloadErrorFolderAccessLost;
|
||||
}
|
||||
return raw;
|
||||
}
|
||||
|
||||
Widget _buildDownloadFailureMessage(
|
||||
BuildContext context,
|
||||
DownloadItem item,
|
||||
@@ -6610,7 +6622,7 @@ class _QueueTabState extends ConsumerState<QueueTab> {
|
||||
) {
|
||||
if (item.errorType != DownloadErrorType.rateLimit) {
|
||||
return Text(
|
||||
item.errorMessage,
|
||||
_localizedDownloadError(context, item.errorMessage),
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: Theme.of(
|
||||
|
||||
@@ -2068,7 +2068,7 @@ class PlatformBridge {
|
||||
|
||||
/// Present the native iOS folder picker. The security-scoped bookmark is
|
||||
/// created inside the picker callback while its access grant is still
|
||||
/// active — creating it later from a bare path loses the grant.
|
||||
/// active; creating it later from a bare path loses the grant.
|
||||
/// Returns null when the user cancels; throws on picker/bookmark failure.
|
||||
static Future<IosPickedDirectory?> pickIosDirectory() async {
|
||||
final result = await _channel.invokeMethod('pickIosDirectory');
|
||||
|
||||
Reference in New Issue
Block a user