Skip to content

Commit 6f761a4

Browse files
committed
More localization fixes
1 parent cb49e21 commit 6f761a4

11 files changed

Lines changed: 53 additions & 28 deletions

File tree

src/Platforms/SecureFolderFS.Maui/Platforms/Android/ServiceImplementation/VaultForegroundService.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ private void UpdateNotification()
103103
var title = count switch
104104
{
105105
0 => "VaultUnlocked".ToLocalized(),
106-
1 => "OneVaultIsUnlocked".ToLocalized(),
107106
_ => "VaultsUnlockedPlural".ToLocalized(count)
108107
};
109108

src/Platforms/SecureFolderFS.Maui/UserControls/Browser/BrowserControl.DragDrop.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,7 @@ await transferViewModel.TransferAsync(itemsToProcess, async (item, reporter, tok
461461
new FileViewModel(createdFile, browserViewModel, destinationViewModel),
462462
browserViewModel.Layouts.GetSorter());
463463
}
464-
}, cts.Token);
464+
}, x => x.Name, cts.Token);
465465
}
466466
catch (Exception ex) when (ex is TaskCanceledException or OperationCanceledException)
467467
{

src/Platforms/SecureFolderFS.Maui/UserControls/Browser/TransferControl.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
<uc:AnimatedRevealLayout.MainContent>
5757
<Label
5858
FontSize="16"
59+
LineBreakMode="TailTruncation"
5960
Text="{Binding Title, Mode=OneWay}"
6061
VerticalOptions="Center" />
6162
</uc:AnimatedRevealLayout.MainContent>

src/Platforms/SecureFolderFS.UI/Strings/en-US/Resources.resx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1176,13 +1176,13 @@
11761176
<value>Clear selection</value>
11771177
</data>
11781178
<data name="CopyingItemsPlural" xml:space="preserve">
1179-
<value>Copying {0:plural:{1}|{} items}</value>
1179+
<value>Copying {Total:choose(0):{Achieved} {Achieved:plural:item|items}|{Total:choose(1):{State}|{Achieved}/{Total} {Total:plural:item|items}}}</value>
11801180
</data>
11811181
<data name="MovingItemsPlural" xml:space="preserve">
1182-
<value>Moving {0:plural:{1}|{} items}</value>
1182+
<value>Moving {Total:choose(0):{Achieved} {Achieved:plural:item|items}|{Total:choose(1):{State}|{Achieved}/{Total} {Total:plural:item|items}}}</value>
11831183
</data>
11841184
<data name="DeletingItemsPlural" xml:space="preserve">
1185-
<value>Deleting {0:plural:{1}|{} items}</value>
1185+
<value>Deleting {Total:choose(0):{Achieved} {Achieved:plural:item|items}|{Total:choose(1):{State}|{Achieved}/{Total} {Total:plural:item|items}}}</value>
11861186
</data>
11871187
<data name="NotEnoughSpace" xml:space="preserve">
11881188
<value>Not enough space</value>
@@ -1254,7 +1254,7 @@
12541254
<value>This archive format is not supported for extraction</value>
12551255
</data>
12561256
<data name="ExtractingItemsPlural" xml:space="preserve">
1257-
<value>Extracting {0:plural:{1}|{} items}</value>
1257+
<value>Extracting {Total:choose(0):{Achieved} {Achieved:plural:item|items}|{Total:choose(1):{State}|{Achieved}/{Total} {Total:plural:item|items}}}</value>
12581258
</data>
12591259
<data name="Extracting" xml:space="preserve">
12601260
<value>Extracting...</value>

src/Sdk/SecureFolderFS.Sdk/AppModels/TotalProgress.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66
/// <param name="Achieved">The current achieved progress so far.</param>
77
/// <param name="Total">The total progress to achieve.</param>
88
/// <param name="State">The additional state of the progress.</param>
9-
public readonly record struct TotalProgress(int Achieved, int Total, object? State);
9+
public readonly record struct TotalProgress(int Achieved, int Total, object? State = null);
1010
}

src/Sdk/SecureFolderFS.Sdk/Extensions/LocalizationExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public static string ToLocalized(this string resourceKey, ILocalizationService?
4444
public static string ToLocalized(this string resourceKey, params object?[] interpolate)
4545
{
4646
var localized = ToLocalized(resourceKey);
47-
return SafetyHelpers.NoFailureResult(() => Smart.Format(localized, interpolate)) ?? localized;
47+
return SafetyHelpers.NoFailureResult(() => Smart.Format(localized, interpolate)) ?? $"{{{resourceKey}}}";
4848
}
4949

5050
/// <summary>
@@ -58,7 +58,7 @@ public static string ToLocalized(this string resourceKey, params object?[] inter
5858
public static string ToLocalized(this string resourceKey, ILocalizationService localizationService, params object?[] interpolate)
5959
{
6060
var localized = ToLocalized(resourceKey, localizationService);
61-
return SafetyHelpers.NoFailureResult(() => Smart.Format(localized, interpolate)) ?? localized;
61+
return SafetyHelpers.NoFailureResult(() => Smart.Format(localized, interpolate)) ?? $"{{{resourceKey}}}";
6262
}
6363
}
6464
}

src/Sdk/SecureFolderFS.Sdk/Extensions/LocalizationServiceExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ public static string LocalizeDate(this ILocalizationService localizationService,
2121
_ when dateTime.Year == 1 => "Unspecified",
2222
_ when dateTime.Date == DateTime.Today => "DateToday".ToLocalized(localizationService, interpolate: dateTime.ToString("t", cultureInfo)),
2323
_ when daysAgo == 1 => "DateYesterday".ToLocalized(localizationService, interpolate: dateTime.ToString("t", cultureInfo)),
24-
_ when daysAgo is >= 2 and <= 6 => "DateDaysAgoPlural".ToLocalized(localizationService, interpolate: daysAgo.ToString()),
25-
_ when daysAgo is >= 7 and < 14 => "DateWeekAgoPlural".ToLocalized(localizationService, interpolate: weeksAgo.ToString()),
24+
_ when daysAgo is >= 2 and <= 6 => "DateDaysAgoPlural".ToLocalized(localizationService, interpolate: daysAgo),
25+
_ when daysAgo is >= 7 and < 14 => "DateWeekAgoPlural".ToLocalized(localizationService, interpolate: weeksAgo),
2626
_ => null
2727
};
2828

src/Sdk/SecureFolderFS.Sdk/Extensions/TransferExtensions.cs

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,35 @@ public static async Task TransferAsync<TTransferred>(
3030
IEnumerable<TTransferred> items,
3131
Func<TTransferred, IProgress<IStorable>, CancellationToken, Task> callback,
3232
CancellationToken cancellationToken = default)
33+
where TTransferred : IStorable
34+
{
35+
await TransferAsync(transferViewModel, items, callback, x => x.Name, cancellationToken);
36+
}
37+
38+
public static async Task TransferAsync<TTransferred>(
39+
this TransferViewModel transferViewModel,
40+
IEnumerable<TTransferred> items,
41+
Func<TTransferred, IProgress<IStorable>, CancellationToken, Task> callback,
42+
Func<TTransferred, string> itemName,
43+
CancellationToken cancellationToken = default)
3344
{
3445
var collection = items.ToOrAsCollection();
3546
transferViewModel.IsProgressing = true;
3647
transferViewModel.IsVisible = true;
37-
transferViewModel.Report(new(0, 0, 0));
48+
transferViewModel.Report(new(0, collection.Count, collection.Count));
3849
var counter = 0;
39-
var reporter = new Progress<IStorable>(_ =>
50+
var reporter = new Progress<IStorable>(x =>
4051
{
4152
counter++;
42-
transferViewModel.Report(new(counter, 0, 1));
53+
transferViewModel.Report(new(counter, 0, x.Name));
4354
});
4455

4556
for (var i = 0; i < collection.Count; i++)
4657
{
4758
cancellationToken.ThrowIfCancellationRequested();
4859

4960
var item = collection.ElementAt(i);
61+
transferViewModel.Report(new(i, collection.Count, itemName(item)));
5062
await callback(item, reporter, cancellationToken);
5163
}
5264

@@ -61,6 +73,16 @@ public static async Task TransferAsync<TTransferred>(
6173
Func<TTransferred, CancellationToken, Task> callback,
6274
CancellationToken cancellationToken = default)
6375
where TTransferred : IStorable
76+
{
77+
await TransferAsync(transferViewModel, items, callback, x => x.Name, cancellationToken);
78+
}
79+
80+
public static async Task TransferAsync<TTransferred>(
81+
this TransferViewModel transferViewModel,
82+
IEnumerable<TTransferred> items,
83+
Func<TTransferred, CancellationToken, Task> callback,
84+
Func<TTransferred, string> itemName,
85+
CancellationToken cancellationToken = default)
6486
{
6587
var collection = items.ToOrAsCollection();
6688
transferViewModel.IsProgressing = true;
@@ -72,8 +94,8 @@ public static async Task TransferAsync<TTransferred>(
7294
cancellationToken.ThrowIfCancellationRequested();
7395

7496
var item = collection.ElementAt(i);
97+
transferViewModel.Report(new(i, collection.Count, itemName(item)));
7598
await callback(item, cancellationToken);
76-
transferViewModel.Report(new((i + 1), collection.Count, item.Name));
7799
}
78100

79101
await Task.Delay(1000, CancellationToken.None);

src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Storage/Browser/FolderViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public async Task ListContentsAsync(CancellationToken cancellationToken = defaul
8282
Items.DisposeAll();
8383
Items.Clear();
8484

85-
var isPickingFolder = BrowserViewModel.TransferViewModel?.IsPickingFolder ?? false;
85+
var isPickingFolder = BrowserViewModel.IsPickingFolder;
8686
var items = await Folder.GetItemsAsync(isPickingFolder ? StorableType.Folder : StorableType.All, cancellationToken).ToArrayAsyncImpl(cancellationToken: cancellationToken);
8787
BrowserViewModel.Layouts.GetSorter().SortCollection(items.Where(x => !isPickingFolder || x is IFolder).Select(x => (BrowserItemViewModel)(x switch
8888
{

src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Transfer/TransferViewModel.cs

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.ComponentModel;
3+
using System.Runtime.CompilerServices;
34
using System.Threading;
45
using System.Threading.Tasks;
56
using CommunityToolkit.Mvvm.ComponentModel;
@@ -44,23 +45,18 @@ public void Report(TotalProgress value)
4445

4546
Title = TransferType switch
4647
{
47-
TransferType.Copy => "CopyingItemsPlural".ToLocalized(GetItemsCount(value), value.State),
48-
TransferType.Move => "MovingItemsPlural".ToLocalized(GetItemsCount(value), value.State),
49-
TransferType.Delete => "DeletingItemsPlural".ToLocalized(GetItemsCount(value), value.State),
50-
TransferType.Extract => "ExtractingItemsPlural".ToLocalized(GetItemsCount(value), value.State),
48+
TransferType.Copy => "CopyingItemsPlural".ToLocalized(GetInterpolation()),
49+
TransferType.Move => "MovingItemsPlural".ToLocalized(GetInterpolation()),
50+
TransferType.Delete => "DeletingItemsPlural".ToLocalized(GetInterpolation()),
51+
TransferType.Extract => "ExtractingItemsPlural".ToLocalized(GetInterpolation()),
5152
_ => "Loading".ToLocalized()
5253
};
53-
5454
return;
5555

56-
static string GetItemsCount(TotalProgress totalProgress)
56+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
57+
object GetInterpolation()
5758
{
58-
return totalProgress switch
59-
{
60-
{ Achieved: < 0 } => totalProgress.Total.ToString(),
61-
{ Total: <= 0 } => totalProgress.Achieved.ToString(),
62-
_ => $"{totalProgress.Achieved}/{totalProgress.Total}"
63-
};
59+
return new { value.State, value.Achieved, value.Total };
6460
}
6561
}
6662

0 commit comments

Comments
 (0)