From 73fe997840e2281844aa1497c8c49e1d34c2ac11 Mon Sep 17 00:00:00 2001 From: SilverGreen93 Date: Wed, 23 Jul 2025 18:52:46 +0300 Subject: [PATCH 1/2] Code Quality: Improved display of plural strings in Status Center --- src/Files.App/Strings/en-US/Resources.resw | 54 +-- .../Utils/StatusCenter/StatusCenterHelper.cs | 315 +++++++++--------- 2 files changed, 179 insertions(+), 190 deletions(-) diff --git a/src/Files.App/Strings/en-US/Resources.resw b/src/Files.App/Strings/en-US/Resources.resw index fb30d3afa016..f0544d8098ca 100644 --- a/src/Files.App/Strings/en-US/Resources.resw +++ b/src/Files.App/Strings/en-US/Resources.resw @@ -3490,27 +3490,27 @@ Shown in a StatusCenter card. - Compressed {0} item(s) to "{1}" + Compressed {0, plural, one {# item} other {# items}} to "{1}" Shown in a StatusCenter card. - Compressed {0} item(s) from "{1}" to "{2}" + Compressed {0, plural, one {# item} other {# items}} from "{1}" to "{2}" Shown in a StatusCenter card. - Error compressing {0} item(s) to "{1}" + Error compressing {0, plural, one {# item} other {# items}} to "{1}" Shown in a StatusCenter card. - Failed to compress {0} item(s) from "{1}" to "{2}" + Failed to compress {0, plural, one {# item} other {# items}} from "{1}" to "{2}" Shown in a StatusCenter card. - Compressing {0} item(s) to "{1}" + Compressing {0, plural, one {# item} other {# items}} to "{1}" Shown in a StatusCenter card. - Compressing {0} item(s) from "{1}" to "{2}" + Compressing {0, plural, one {# item} other {# items}} from "{1}" to "{2}" Shown in a StatusCenter card. @@ -3578,35 +3578,35 @@ Shown in a StatusCenter card. - Canceled copying {0} item(s) to "{1}" + Canceled copying {0, plural, one {# item} other {# items}} to "{1}" Shown in a StatusCenter card. - Canceled copying {0} item(s) from "{1}" to "{2}" + Canceled copying {0, plural, one {# item} other {# items}} from "{1}" to "{2}" Shown in a StatusCenter card. - Copied {0} item(s) to "{1}" + Copied {0, plural, one {# item} other {# items}} to "{1}" Shown in a StatusCenter card. - Copied {0} item(s) from "{1}" to "{2}" + Copied {0, plural, one {# item} other {# items}} from "{1}" to "{2}" Shown in a StatusCenter card. - Error copying {0} item(s) to "{1}" + Error copying {0, plural, one {# item} other {# items}} to "{1}" Shown in a StatusCenter card. - Failed to copy {0} item(s) from "{1}" to "{2}" + Failed to copy {0, plural, one {# item} other {# items}} from "{1}" to "{2}" Shown in a StatusCenter card. - Copying {0} item(s) to "{1}" + Copying {0, plural, one {# item} other {# items}} to "{1}" Shown in a StatusCenter card. - Copying {0} item(s) from "{1}" to "{2}" + Copying {0, plural, one {# item} other {# items}} from "{1}" to "{2}" Shown in a StatusCenter card. @@ -3642,55 +3642,55 @@ Shown in a StatusCenter card. - Canceled deleting {0} item(s) from "{1}" + Canceled deleting {0, plural, one {# item} other {# items}} from "{1}" Shown in a StatusCenter card. - Deleted {0} item(s) from "{1}" + Deleted {0, plural, one {# item} other {# items}} from "{1}" Shown in a StatusCenter card. - Error deleting {0} item(s) from "{1}" + Error deleting {0, plural, one {# item} other {# items}} from "{1}" Shown in a StatusCenter card. - Failed to delete {0} item(s) from "{1}" + Failed to delete {0, plural, one {# item} other {# items}} from "{1}" Shown in a StatusCenter card. - Deleting {0} item(s) from "{1}" + Deleting {0, plural, one {# item} other {# items}} from "{1}" Shown in a StatusCenter card. - Canceled moving {0} item(s) to "{1}" + Canceled moving {0, plural, one {# item} other {# items}} to "{1}" Shown in a StatusCenter card. - Canceled moving {0} item(s) from "{1}" to "{2}" + Canceled moving {0, plural, one {# item} other {# items}} from "{1}" to "{2}" Shown in a StatusCenter card. - Moved {0} item(s) to "{1}" + Moved {0, plural, one {# item} other {# items}} to "{1}" Shown in a StatusCenter card. - Moved {0} item(s) from "{1}" to "{2}" + Moved {0, plural, one {# item} other {# items}} from "{1}" to "{2}" Shown in a StatusCenter card. - Moving {0} item(s) to "{1}" + Moving {0, plural, one {# item} other {# items}} to "{1}" Shown in a StatusCenter card. - Moving {0} item(s) from "{1}" to "{2}" + Moving {0, plural, one {# item} other {# items}} from "{1}" to "{2}" Shown in a StatusCenter card. - Error moving {0} item(s) to "{1}" + Error moving {0, plural, one {# item} other {# items}} to "{1}" Shown in a StatusCenter card. - Failed to move {0} item(s) from "{1}" to "{2}" + Failed to move {0, plural, one {# item} other {# items}} from "{1}" to "{2}" Shown in a StatusCenter card. diff --git a/src/Files.App/Utils/StatusCenter/StatusCenterHelper.cs b/src/Files.App/Utils/StatusCenter/StatusCenterHelper.cs index 48b818cffb4d..97976df8129e 100644 --- a/src/Files.App/Utils/StatusCenter/StatusCenterHelper.cs +++ b/src/Files.App/Utils/StatusCenter/StatusCenterHelper.cs @@ -640,218 +640,207 @@ public static void UpdateCardStrings(StatusCenterItem card) destinationDirName = destinationPath.Split('\\').Last(); } - string headerString = string.IsNullOrWhiteSpace(card.HeaderStringResource) ? string.Empty : card.HeaderStringResource.GetLocalizedResource(); - string subHeaderString = string.IsNullOrWhiteSpace(card.SubHeaderStringResource) ? string.Empty : card.SubHeaderStringResource.GetLocalizedResource(); - // Update string resources switch (card.Operation) { case FileOperationType.Copy: { - if (headerString is not null) + string headerString = string.IsNullOrWhiteSpace(card.HeaderStringResource) ? string.Empty + : card.HeaderStringResource.GetLocalizedFormatResource(card.TotalItemsCount, destinationDirName); + card.Header = card.FileSystemOperationReturnResult switch { - card.Header = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(headerString, card.TotalItemsCount, destinationDirName), - ReturnResult.Success => string.Format(headerString, card.TotalItemsCount, destinationDirName), - ReturnResult.Failed => string.Format(headerString, card.TotalItemsCount, destinationDirName), - ReturnResult.InProgress => string.Format(headerString, card.TotalItemsCount, destinationDirName), - _ => string.Format(headerString, card.TotalItemsCount, destinationDirName), - }; - } - if (subHeaderString is not null) + ReturnResult.Cancelled => string.Format(headerString, card.TotalItemsCount, destinationDirName), + ReturnResult.Success => string.Format(headerString, card.TotalItemsCount, destinationDirName), + ReturnResult.Failed => string.Format(headerString, card.TotalItemsCount, destinationDirName), + ReturnResult.InProgress => string.Format(headerString, card.TotalItemsCount, destinationDirName), + _ => string.Format(headerString, card.TotalItemsCount, destinationDirName), + }; + + string subHeaderString = string.IsNullOrWhiteSpace(card.SubHeaderStringResource) ? string.Empty + : card.SubHeaderStringResource.GetLocalizedFormatResource(card.TotalItemsCount, sourcePath, destinationPath); + card.SubHeader = card.FileSystemOperationReturnResult switch { - card.SubHeader = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - ReturnResult.Success => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - ReturnResult.Failed => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - ReturnResult.InProgress => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - _ => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - }; - } + ReturnResult.Cancelled => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + ReturnResult.Success => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + ReturnResult.Failed => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + ReturnResult.InProgress => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + _ => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + }; break; } case FileOperationType.Move: { - if (headerString is not null) + string headerString = string.IsNullOrWhiteSpace(card.HeaderStringResource) ? string.Empty + : card.HeaderStringResource.GetLocalizedFormatResource(card.TotalItemsCount, destinationDirName); + card.Header = card.FileSystemOperationReturnResult switch { - card.Header = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(headerString, card.TotalItemsCount, destinationDirName), - ReturnResult.Success => string.Format(headerString, card.TotalItemsCount, destinationDirName), - ReturnResult.Failed => string.Format(headerString, card.TotalItemsCount, destinationDirName), - ReturnResult.InProgress => string.Format(headerString, card.TotalItemsCount, destinationDirName), - _ => string.Format(headerString, card.TotalItemsCount, destinationDirName), - }; - } - if (subHeaderString is not null) + ReturnResult.Cancelled => string.Format(headerString, card.TotalItemsCount, destinationDirName), + ReturnResult.Success => string.Format(headerString, card.TotalItemsCount, destinationDirName), + ReturnResult.Failed => string.Format(headerString, card.TotalItemsCount, destinationDirName), + ReturnResult.InProgress => string.Format(headerString, card.TotalItemsCount, destinationDirName), + _ => string.Format(headerString, card.TotalItemsCount, destinationDirName), + }; + + string subHeaderString = string.IsNullOrWhiteSpace(card.SubHeaderStringResource) ? string.Empty + : card.SubHeaderStringResource.GetLocalizedFormatResource(card.TotalItemsCount, sourcePath, destinationPath); + card.SubHeader = card.FileSystemOperationReturnResult switch { - card.SubHeader = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - ReturnResult.Success => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - ReturnResult.Failed => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - ReturnResult.InProgress => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - _ => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - }; - } + ReturnResult.Cancelled => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + ReturnResult.Success => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + ReturnResult.Failed => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + ReturnResult.InProgress => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + _ => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + }; break; } case FileOperationType.Delete: { - if (headerString is not null) + string headerString = string.IsNullOrWhiteSpace(card.HeaderStringResource) ? string.Empty + : card.HeaderStringResource.GetLocalizedFormatResource(card.TotalItemsCount, sourceDirName); + card.Header = card.FileSystemOperationReturnResult switch { - card.Header = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(headerString, card.TotalItemsCount, sourceDirName), - ReturnResult.Success => string.Format(headerString, card.TotalItemsCount, sourceDirName), - ReturnResult.Failed => string.Format(headerString, card.TotalItemsCount, sourceDirName), - ReturnResult.InProgress => string.Format(headerString, card.TotalItemsCount, sourceDirName), - _ => string.Format(headerString, card.TotalItemsCount, sourceDirName), - }; - } - if (subHeaderString is not null) + ReturnResult.Cancelled => string.Format(headerString, card.TotalItemsCount, sourceDirName), + ReturnResult.Success => string.Format(headerString, card.TotalItemsCount, sourceDirName), + ReturnResult.Failed => string.Format(headerString, card.TotalItemsCount, sourceDirName), + ReturnResult.InProgress => string.Format(headerString, card.TotalItemsCount, sourceDirName), + _ => string.Format(headerString, card.TotalItemsCount, sourceDirName), + }; + + string subHeaderString = string.IsNullOrWhiteSpace(card.SubHeaderStringResource) ? string.Empty + : card.SubHeaderStringResource.GetLocalizedFormatResource(card.TotalItemsCount, sourcePath); + card.SubHeader = card.FileSystemOperationReturnResult switch { - card.SubHeader = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), - ReturnResult.Success => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), - ReturnResult.Failed => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), - ReturnResult.InProgress => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), - _ => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), - }; - } + ReturnResult.Cancelled => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), + ReturnResult.Success => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), + ReturnResult.Failed => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), + ReturnResult.InProgress => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), + _ => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), + }; break; } case FileOperationType.Recycle: { - if (headerString is not null) + string headerString = string.IsNullOrWhiteSpace(card.HeaderStringResource) ? string.Empty + : card.HeaderStringResource.GetLocalizedFormatResource(card.TotalItemsCount, sourceDirName); + card.Header = card.FileSystemOperationReturnResult switch { - card.Header = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(headerString, card.TotalItemsCount, sourceDirName), - ReturnResult.Success => string.Format(headerString, card.TotalItemsCount, sourceDirName), - ReturnResult.Failed => string.Format(headerString, card.TotalItemsCount, sourceDirName), - ReturnResult.InProgress => string.Format(headerString, card.TotalItemsCount, sourceDirName), - _ => string.Format(headerString, card.TotalItemsCount, sourceDirName), - }; - } - if (subHeaderString is not null) + ReturnResult.Cancelled => string.Format(headerString, card.TotalItemsCount, sourceDirName), + ReturnResult.Success => string.Format(headerString, card.TotalItemsCount, sourceDirName), + ReturnResult.Failed => string.Format(headerString, card.TotalItemsCount, sourceDirName), + ReturnResult.InProgress => string.Format(headerString, card.TotalItemsCount, sourceDirName), + _ => string.Format(headerString, card.TotalItemsCount, sourceDirName), + }; + + string subHeaderString = string.IsNullOrWhiteSpace(card.SubHeaderStringResource) ? string.Empty + : card.SubHeaderStringResource.GetLocalizedFormatResource(card.TotalItemsCount, sourcePath); + card.SubHeader = card.FileSystemOperationReturnResult switch { - card.SubHeader = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), - ReturnResult.Success => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), - ReturnResult.Failed => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), - ReturnResult.InProgress => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), - _ => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), - }; - } + ReturnResult.Cancelled => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), + ReturnResult.Success => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), + ReturnResult.Failed => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), + ReturnResult.InProgress => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), + _ => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), + }; break; } case FileOperationType.Extract: { - if (headerString is not null) + string headerString = string.IsNullOrWhiteSpace(card.HeaderStringResource) ? string.Empty + : card.HeaderStringResource.GetLocalizedFormatResource(sourceFileName, destinationDirName); + card.Header = card.FileSystemOperationReturnResult switch { - card.Header = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(headerString, sourceFileName, destinationDirName), - ReturnResult.Success => string.Format(headerString, sourceFileName, destinationDirName), - ReturnResult.Failed => string.Format(headerString, sourceFileName, destinationDirName), - ReturnResult.InProgress => string.Format(headerString, sourceFileName, destinationDirName), - _ => string.Format(headerString, sourceFileName, destinationDirName), - }; - } - if (subHeaderString is not null) + ReturnResult.Cancelled => string.Format(headerString, sourceFileName, destinationDirName), + ReturnResult.Success => string.Format(headerString, sourceFileName, destinationDirName), + ReturnResult.Failed => string.Format(headerString, sourceFileName, destinationDirName), + ReturnResult.InProgress => string.Format(headerString, sourceFileName, destinationDirName), + _ => string.Format(headerString, sourceFileName, destinationDirName), + }; + + string subHeaderString = string.IsNullOrWhiteSpace(card.SubHeaderStringResource) ? string.Empty + : card.SubHeaderStringResource.GetLocalizedFormatResource(sourceFileName, sourcePath, destinationPath); + card.SubHeader = card.FileSystemOperationReturnResult switch { - card.SubHeader = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(subHeaderString, sourceFileName, sourcePath, destinationPath), - ReturnResult.Success => string.Format(subHeaderString, sourceFileName, sourcePath, destinationPath), - ReturnResult.Failed => string.Format(subHeaderString, sourceFileName, sourcePath, destinationPath), - ReturnResult.InProgress => string.Format(subHeaderString, sourceFileName, sourcePath, destinationPath), - _ => string.Format(subHeaderString, sourceFileName, sourcePath, destinationPath), - }; - } + ReturnResult.Cancelled => string.Format(subHeaderString, sourceFileName, sourcePath, destinationPath), + ReturnResult.Success => string.Format(subHeaderString, sourceFileName, sourcePath, destinationPath), + ReturnResult.Failed => string.Format(subHeaderString, sourceFileName, sourcePath, destinationPath), + ReturnResult.InProgress => string.Format(subHeaderString, sourceFileName, sourcePath, destinationPath), + _ => string.Format(subHeaderString, sourceFileName, sourcePath, destinationPath), + }; break; } case FileOperationType.Compressed: { - if (headerString is not null) + string headerString = string.IsNullOrWhiteSpace(card.HeaderStringResource) ? string.Empty + : card.HeaderStringResource.GetLocalizedFormatResource(card.TotalItemsCount, destinationDirName); + card.Header = card.FileSystemOperationReturnResult switch { - card.Header = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(headerString, card.TotalItemsCount, destinationDirName), - ReturnResult.Success => string.Format(headerString, card.TotalItemsCount, destinationDirName), - ReturnResult.Failed => string.Format(headerString, card.TotalItemsCount, destinationDirName), - ReturnResult.InProgress => string.Format(headerString, card.TotalItemsCount, destinationDirName), - _ => string.Format(headerString, card.TotalItemsCount, destinationDirName), - }; - } - if (subHeaderString is not null) + ReturnResult.Cancelled => string.Format(headerString, card.TotalItemsCount, destinationDirName), + ReturnResult.Success => string.Format(headerString, card.TotalItemsCount, destinationDirName), + ReturnResult.Failed => string.Format(headerString, card.TotalItemsCount, destinationDirName), + ReturnResult.InProgress => string.Format(headerString, card.TotalItemsCount, destinationDirName), + _ => string.Format(headerString, card.TotalItemsCount, destinationDirName), + }; + + string subHeaderString = string.IsNullOrWhiteSpace(card.SubHeaderStringResource) ? string.Empty + : card.SubHeaderStringResource.GetLocalizedFormatResource(card.TotalItemsCount, sourcePath, destinationPath); + card.SubHeader = card.FileSystemOperationReturnResult switch { - card.SubHeader = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - ReturnResult.Success => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - ReturnResult.Failed => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - ReturnResult.InProgress => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - _ => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - }; - } + ReturnResult.Cancelled => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + ReturnResult.Success => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + ReturnResult.Failed => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + ReturnResult.InProgress => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + _ => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + }; break; } case FileOperationType.GitClone: { - if (headerString is not null) + string headerString = string.IsNullOrWhiteSpace(card.HeaderStringResource) ? string.Empty + : card.HeaderStringResource.GetLocalizedFormatResource(sourcePath, destinationDirName); + card.Header = card.FileSystemOperationReturnResult switch { - card.Header = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(headerString, sourcePath, destinationDirName), - ReturnResult.Success => string.Format(headerString, sourcePath, destinationDirName), - ReturnResult.Failed => string.Format(headerString, sourcePath, destinationDirName), - ReturnResult.InProgress => string.Format(headerString, sourcePath, destinationDirName), - _ => string.Format(headerString, sourcePath, destinationDirName), - }; - } - if (subHeaderString is not null) + ReturnResult.Cancelled => string.Format(headerString, sourcePath, destinationDirName), + ReturnResult.Success => string.Format(headerString, sourcePath, destinationDirName), + ReturnResult.Failed => string.Format(headerString, sourcePath, destinationDirName), + ReturnResult.InProgress => string.Format(headerString, sourcePath, destinationDirName), + _ => string.Format(headerString, sourcePath, destinationDirName), + }; + + string subHeaderString = string.IsNullOrWhiteSpace(card.SubHeaderStringResource) ? string.Empty + : card.SubHeaderStringResource.GetLocalizedFormatResource(card.TotalItemsCount, sourcePath, destinationPath); + card.SubHeader = card.FileSystemOperationReturnResult switch { - card.SubHeader = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - ReturnResult.Success => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - ReturnResult.Failed => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - ReturnResult.InProgress => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - _ => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), - }; - } + ReturnResult.Cancelled => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + ReturnResult.Success => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + ReturnResult.Failed => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + ReturnResult.InProgress => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + _ => string.Format(subHeaderString, card.TotalItemsCount, sourcePath, destinationPath), + }; break; } case FileOperationType.InstallFont: { - if (headerString is not null) + string headerString = string.IsNullOrWhiteSpace(card.HeaderStringResource) ? string.Empty + : card.HeaderStringResource.GetLocalizedFormatResource(card.TotalItemsCount); + card.Header = card.FileSystemOperationReturnResult switch { - card.Header = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(headerString, card.TotalItemsCount), - ReturnResult.Success => string.Format(headerString, card.TotalItemsCount), - ReturnResult.Failed => string.Format(headerString, card.TotalItemsCount), - ReturnResult.InProgress => string.Format(headerString, card.TotalItemsCount), - _ => string.Format(headerString, card.TotalItemsCount), - }; - } - if (subHeaderString is not null) + ReturnResult.Cancelled => string.Format(headerString, card.TotalItemsCount), + ReturnResult.Success => string.Format(headerString, card.TotalItemsCount), + ReturnResult.Failed => string.Format(headerString, card.TotalItemsCount), + ReturnResult.InProgress => string.Format(headerString, card.TotalItemsCount), + _ => string.Format(headerString, card.TotalItemsCount), + }; + + string subHeaderString = string.IsNullOrWhiteSpace(card.SubHeaderStringResource) ? string.Empty + : card.SubHeaderStringResource.GetLocalizedFormatResource(card.TotalItemsCount, sourcePath); + card.SubHeader = card.FileSystemOperationReturnResult switch { - card.SubHeader = card.FileSystemOperationReturnResult switch - { - ReturnResult.Cancelled => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), - ReturnResult.Success => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), - ReturnResult.Failed => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), - ReturnResult.InProgress => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), - _ => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), - }; - } + ReturnResult.Cancelled => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), + ReturnResult.Success => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), + ReturnResult.Failed => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), + ReturnResult.InProgress => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), + _ => string.Format(subHeaderString, card.TotalItemsCount, sourcePath), + }; break; } } From 4c10addc0a825ffb125f8072b01556395756d264 Mon Sep 17 00:00:00 2001 From: SilverGreen93 Date: Wed, 23 Jul 2025 19:02:45 +0300 Subject: [PATCH 2/2] change font(s) as well --- src/Files.App/Strings/en-US/Resources.resw | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Files.App/Strings/en-US/Resources.resw b/src/Files.App/Strings/en-US/Resources.resw index f0544d8098ca..0f191c20aee3 100644 --- a/src/Files.App/Strings/en-US/Resources.resw +++ b/src/Files.App/Strings/en-US/Resources.resw @@ -3550,31 +3550,31 @@ Shown in a StatusCenter card. - Canceled installing {0} font(s) from "{1}" + Canceled installing {0, plural, one {# font} other {# fonts}} from "{1}" Shown in a StatusCenter card. - Installed {0} font(s) + Installed {0, plural, one {# font} other {# fonts}} Shown in a StatusCenter card. - Installed {0} font(s) from "{1}" + Installed {0, plural, one {# font} other {# fonts}} from "{1}" Shown in a StatusCenter card. - Error installing {0} font(s) + Error installing {0, plural, one {# font} other {# fonts}} Shown in a StatusCenter card. - Failed to install {0} font(s) from "{1}" + Failed to install {0, plural, one {# font} other {# fonts}} from "{1}" Shown in a StatusCenter card. - Installing {0} font(s) + Installing {0, plural, one {# font} other {# fonts}} Shown in a StatusCenter card. - Installing {0} font(s) from "{1}" + Installing {0, plural, one {# font} other {# fonts}} from "{1}" Shown in a StatusCenter card.