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:
zarzet
2026-07-09 19:52:42 +07:00
parent bb66cc470a
commit 32892bd4bd
19 changed files with 156 additions and 4 deletions
+12
View File
@@ -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:
+8
View File
@@ -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,
+8
View File
@@ -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,
+8
View File
@@ -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,
+8
View File
@@ -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,
+8
View File
@@ -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,
+8
View File
@@ -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,
+8
View File
@@ -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,
+8
View File
@@ -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,
+8
View File
@@ -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,
+8
View File
@@ -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,
+8
View File
@@ -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,
+8
View File
@@ -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,
+8
View File
@@ -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,
+8
View File
@@ -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,
+8
View File
@@ -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,
+8
View File
@@ -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"
+15 -3
View File
@@ -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(
+1 -1
View File
@@ -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');