Move all localizable strings from Aaru.Gui project to resources.

This commit is contained in:
2022-11-19 21:10:41 +00:00
parent 887e58c6e5
commit 81195f8630
42 changed files with 1128 additions and 1059 deletions

View File

@@ -40,6 +40,7 @@ using System.Runtime.InteropServices;
using System.Threading.Tasks;
using Aaru.Gui.Models;
using Aaru.Gui.Views.Dialogs;
using Aaru.Localization;
using JetBrains.Annotations;
using ReactiveUI;
@@ -88,13 +89,13 @@ public sealed class AboutViewModel : ViewModelBase
}
[NotNull]
public string AboutLabel => "About";
public string AboutLabel => UI.Label_About;
[NotNull]
public string LibrariesLabel => "Libraries";
public string LibrariesLabel => UI.Label_Libraries;
[NotNull]
public string AuthorsLabel => "Authors";
public string AuthorsLabel => UI.Label_Authors;
[NotNull]
public string Title => "About Aaru";
public string Title => UI.Title_About_Aaru;
[NotNull]
public string SoftwareName => "Aaru";
[NotNull]
@@ -104,27 +105,15 @@ public sealed class AboutViewModel : ViewModelBase
[NotNull]
public string Website => "https://aaru.app";
[NotNull]
public string License => "License: GNU General Public License Version 3";
public string License => UI.Label_License;
[NotNull]
public string CloseLabel => "Close";
public string CloseLabel => UI.ButtonLabel_Close;
[NotNull]
public string AssembliesLibraryText => "Library";
public string AssembliesLibraryText => UI.Title_Library;
[NotNull]
public string AssembliesVersionText => "Version";
public string AssembliesVersionText => UI.Title_Version;
[NotNull]
public string Authors => @"Developers:
Natalia Portillo
Michael Drüing
Rebecca Wallander
Testers:
Silas Laspada
Public relations:
Noah Bacon
Logo and art:
Juan Carlos Pastor Segura (Denymetanol)";
public string Authors => UI.Text_Authors;
public ReactiveCommand<Unit, Unit> WebsiteCommand { get; }
public ReactiveCommand<Unit, Unit> LicenseCommand { get; }
public ReactiveCommand<Unit, Unit> CloseCommand { get; }

View File

@@ -39,6 +39,7 @@ using System.Reflection;
using System.Threading.Tasks;
using Aaru.CommonTypes.Interop;
using Aaru.Console;
using Aaru.Localization;
using Avalonia.Controls;
using JetBrains.Annotations;
using MessageBox.Avalonia;
@@ -62,21 +63,21 @@ public sealed class ConsoleViewModel : ViewModelBase
}
[NotNull]
public string Title => "Console";
public string Title => UI.Title_Console;
public ReactiveCommand<Unit, Unit> ClearCommand { get; }
public ReactiveCommand<Unit, Task> SaveCommand { get; }
public ObservableCollection<LogEntry> Entries => ConsoleHandler.Entries;
[NotNull]
public string DebugText => "Enable debug console";
public string DebugText => UI.Enable_debug_console;
[NotNull]
public string SaveLabel => "Save";
public string SaveLabel => UI.ButtonLabel_Save;
[NotNull]
public string ClearLabel => "Clear";
public string ClearLabel => UI.ButtonLabel_Clear;
public string TimeLabel => "Time";
public string TypeLabel => "Type";
public string ModuleLabel => "Module";
public string MessageLabel => "Message";
public string TimeLabel => UI.Title_Time;
public string TypeLabel => UI.Title_Type;
public string ModuleLabel => UI.Title_Module;
public string MessageLabel => UI.Title_Message;
public bool DebugChecked
{
@@ -98,7 +99,7 @@ public sealed class ConsoleViewModel : ViewModelBase
{
"log"
}),
Name = "Log files"
Name = UI.Dialog_Log_files
});
string result = await dlgSave.ShowAsync(_view);
@@ -111,7 +112,7 @@ public sealed class ConsoleViewModel : ViewModelBase
var logFs = new FileStream(result, FileMode.Create, FileAccess.ReadWrite);
var logSw = new StreamWriter(logFs);
logSw.WriteLine("Log saved at {0}", DateTime.Now);
logSw.WriteLine(UI.Log_saved_at_0, DateTime.Now);
PlatformID platId = DetectOS.GetRealPlatformID();
string platVer = DetectOS.GetVersion();
@@ -121,7 +122,7 @@ public sealed class ConsoleViewModel : ViewModelBase
typeof(AssemblyInformationalVersionAttribute)) as
AssemblyInformationalVersionAttribute;
logSw.WriteLine("################# System information #################");
logSw.WriteLine(UI.System_information);
logSw.WriteLine("{0} {1} ({2}-bit)", DetectOS.GetPlatformName(platId, platVer), platVer,
Environment.Is64BitOperatingSystem ? 64 : 32);
@@ -130,19 +131,19 @@ public sealed class ConsoleViewModel : ViewModelBase
logSw.WriteLine();
logSw.WriteLine("################# Program information ################");
logSw.WriteLine(UI.Program_information);
logSw.WriteLine("Aaru {0}", assemblyVersion?.InformationalVersion);
logSw.WriteLine("Running in {0}-bit", Environment.Is64BitProcess ? 64 : 32);
logSw.WriteLine(UI.Running_in_0_bit, Environment.Is64BitProcess ? 64 : 32);
#if DEBUG
logSw.WriteLine("DEBUG version");
logSw.WriteLine(UI.DEBUG_version);
#endif
logSw.WriteLine("Command line: {0}", Environment.CommandLine);
logSw.WriteLine(UI.Command_line_0, Environment.CommandLine);
logSw.WriteLine();
logSw.WriteLine("################# Console ################");
logSw.WriteLine(UI.Console_with_ornament);
foreach(LogEntry entry in ConsoleHandler.Entries)
if(entry.Type != "Info")
if(entry.Type != UI.LogEntry_Type_Info)
logSw.WriteLine("{0}: ({1}) {2}", entry.Timestamp, entry.Type.ToLower(), entry.Message);
else
logSw.WriteLine("{0}: {1}", entry.Timestamp, entry.Message);
@@ -153,10 +154,11 @@ public sealed class ConsoleViewModel : ViewModelBase
catch(Exception exception)
{
await MessageBoxManager.
GetMessageBoxStandardWindow("Error",
$"Exception {exception.Message
} trying to save logfile, details has been sent to console.",
ButtonEnum.Ok, Icon.Error).ShowDialog(_view);
GetMessageBoxStandardWindow(UI.Title_Error,
string.
Format(UI.Exception_0_trying_to_save_logfile_details_has_been_sent_to_console,
exception.Message), ButtonEnum.Ok, Icon.Error).
ShowDialog(_view);
AaruConsole.ErrorWriteLine("Console", exception.Message);
AaruConsole.ErrorWriteLine("Console", exception.StackTrace);

View File

@@ -38,6 +38,7 @@ using System.Text;
using System.Threading.Tasks;
using Aaru.Gui.Models;
using Aaru.Gui.Views.Dialogs;
using Aaru.Localization;
using JetBrains.Annotations;
using ReactiveUI;
@@ -73,12 +74,12 @@ public sealed class EncodingsViewModel : ViewModelBase
}
[NotNull]
public string Title => "Encodings";
public string Title => UI.Encodings;
[NotNull]
public string CloseLabel => "Close";
public string CloseLabel => UI.ButtonLabel_Close;
public string CodeLabel => "Code";
public string NameLabel => "Name";
public string CodeLabel => UI.Title_Code_for_encoding;
public string NameLabel => UI.Title_Name;
public ReactiveCommand<Unit, Unit> CloseCommand { get; }
public ObservableCollection<EncodingModel> Encodings { get; }

View File

@@ -34,6 +34,7 @@ using System.IO;
using System.Reactive;
using System.Reflection;
using Aaru.Gui.Views.Dialogs;
using Aaru.Localization;
using JetBrains.Annotations;
using ReactiveUI;
@@ -49,6 +50,7 @@ public sealed class LicenseViewModel : ViewModelBase
_view = view;
CloseCommand = ReactiveCommand.Create(ExecuteCloseCommand);
// TODO: Localize
using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Aaru.Gui.LICENSE");
if(stream == null)
@@ -60,9 +62,9 @@ public sealed class LicenseViewModel : ViewModelBase
}
[NotNull]
public string Title => "Aaru's license";
public string Title => UI.Title_Aaru_license;
[NotNull]
public string CloseLabel => "Close";
public string CloseLabel => UI.ButtonLabel_Close;
public string LicenseText { get; }
public ReactiveCommand<Unit, Unit> CloseCommand { get; }

View File

@@ -37,6 +37,7 @@ using Aaru.CommonTypes.Interfaces;
using Aaru.Core;
using Aaru.Gui.Models;
using Aaru.Gui.Views.Dialogs;
using Aaru.Localization;
using JetBrains.Annotations;
using ReactiveUI;
@@ -139,29 +140,29 @@ public sealed class PluginsViewModel : ViewModelBase
}
[NotNull]
public string Title => "Plugins";
public string Title => UI.Title_Plugins;
[NotNull]
public string FiltersLabel => "Filters";
public string FiltersLabel => UI.Title_Filters;
[NotNull]
public string PartitionsLabel => "Partitions";
public string PartitionsLabel => UI.Title_Partitions;
[NotNull]
public string FilesystemsLabel => "Filesystems";
public string FilesystemsLabel => UI.Title_Filesystems;
[NotNull]
public string IdentifyLabel => "Identify only:";
public string IdentifyLabel => UI.Title_Identify_only;
[NotNull]
public string ImagesLabel => "Media images";
public string ImagesLabel => UI.Title_Media_images;
[NotNull]
public string FloppyImagesLabel => "Floppy images";
public string FloppyImagesLabel => UI.Title_Floppy_images;
[NotNull]
public string ReadableLabel => "Readable:";
public string ReadableLabel => UI.Title_Readable;
[NotNull]
public string WritableLabel => "Writable:";
public string WritableLabel => UI.Title_Writable;
[NotNull]
public string CloseLabel => "Close";
public string NameLabel => "Name";
public string UUIDLabel => "UUID";
public string VersionLabel => "Version";
public string AuthorLabel => "Author";
public string CloseLabel => UI.ButtonLabel_Close;
public string NameLabel => UI.Title_Name;
public string UUIDLabel => UI.Title_UUID;
public string VersionLabel => UI.Title_Version;
public string AuthorLabel => UI.Title_Author;
public ReactiveCommand<Unit, Unit> CloseCommand { get; }
public ObservableCollection<PluginModel> Filters { get; }

View File

@@ -32,6 +32,7 @@
using System.Reactive;
using Aaru.Gui.Views.Dialogs;
using Aaru.Localization;
using Aaru.Settings;
using JetBrains.Annotations;
using ReactiveUI;
@@ -90,85 +91,61 @@ public sealed class SettingsViewModel : ViewModelBase
// TODO: Show Preferences in macOS
[NotNull]
public string Title => "Settings";
public string Title => UI.Title_Settings;
[NotNull]
public string GdprLabel => "GDPR";
public string GdprLabel => UI.Title_GDPR;
[NotNull]
public string ReportsLabel => "Reports";
public string ReportsLabel => UI.Title_Reports;
[NotNull]
public string StatisticsLabel => "Statistics";
public string StatisticsLabel => UI.Title_Statistics;
[NotNull]
public string SaveLabel => "Save";
public string SaveLabel => UI.ButtonLabel_Save;
[NotNull]
public string CancelLabel => "Cancel";
public string CancelLabel => UI.ButtonLabel_Cancel;
[NotNull]
public string GdprText1 =>
@"In compliance with the European Union General Data Protection Regulation 2016/679 (GDPR),
we must give you the following information about Aaru and ask if you want to opt-in
in some information sharing.";
public string GdprText1 => UI.GDPR_Compliance;
[NotNull]
public string GdprText2 => @"Disclaimer: Because Aaru is an open source software this information, and therefore,
compliance with GDPR only holds true if you obtained a certificated copy from its original
authors. In case of doubt, close Aaru now and ask in our IRC support channel.";
public string GdprText2 => UI.GDPR_Open_Source_Disclaimer;
[NotNull]
public string GdprText3 =>
@"For any information sharing your IP address may be stored in our server, in a way that is not
possible for any person, manual, or automated process, to link with your identity, unless
specified otherwise.";
public string GdprText3 => UI.GDPR_Information_sharing;
[NotNull]
public string ReportsGloballyText =>
@"With the 'device-report' command, Aaru creates a report of a device, that includes its
manufacturer, model, firmware revision and/or version, attached bus, size, and supported commands.
The serial number of the device is not stored in the report. If used with the debug parameter,
extra information about the device will be stored in the report. This information is known to contain
the device serial number in non-standard places that prevent the automatic removal of it on a handful
of devices. A human-readable copy of the report in XML format is always created in the same directory
where Aaru is being run from.";
public string ReportsGloballyText => UI.Configure_Device_Report_information_disclaimer;
[NotNull]
public string SaveReportsGloballyText => "Save device reports in shared folder of your computer?";
public string SaveReportsGloballyText => UI.Save_device_reports_in_shared_folder_of_your_computer_Q;
[NotNull]
public string ReportsText =>
@"Sharing a report with us will send it to our server, that's in the european union territory, where it
will be manually analyzed by an european union citizen to remove any trace of personal identification
from it. Once that is done, it will be shared in our stats website, https://www.aaru.app
These report will be used to improve Aaru support, and in some cases, to provide emulation of the
devices to other open-source projects. In any case, no information linking the report to you will be stored.";
public string ReportsText => UI.Configure_share_report_disclaimer;
[NotNull]
public string ShareReportsText => "Share your device reports with us?";
public string ShareReportsText => UI.Share_your_device_reports_with_us_Q;
[NotNull]
public string StatisticsText =>
@"Aaru can store some usage statistics. These statistics are limited to the number of times a
command is executed, a filesystem, partition, or device is used, the operating system version, and other.
In no case, any information besides pure statistical usage numbers is stored, and they're just joint to the
pool with no way of using them to identify you.";
public string StatisticsText => UI.Statistics_disclaimer;
[NotNull]
public string SaveStatsText => "Save stats about your Aaru usage?";
public string SaveStatsText => UI.Save_stats_about_your_Aaru_usage_Q;
[NotNull]
public string ShareStatsText => "Share your stats (anonymously)?";
public string ShareStatsText => UI.Share_your_stats_anonymously_Q;
[NotNull]
public string CommandStatsText => "Gather statistics about command usage?";
public string CommandStatsText => UI.Gather_statistics_about_command_usage_Q;
[NotNull]
public string DeviceStatsText => "Gather statistics about found devices?";
public string DeviceStatsText => UI.Gather_statistics_about_found_devices_Q;
[NotNull]
public string FilesystemStatsText => "Gather statistics about found filesystems?";
public string FilesystemStatsText => UI.Gather_statistics_about_found_filesystems_Q;
[NotNull]
public string FilterStatsText => "Gather statistics about found file filters?";
public string FilterStatsText => UI.Gather_statistics_about_found_file_filters_Q;
[NotNull]
public string MediaImageStatsText => "Gather statistics about found media image formats?";
public string MediaImageStatsText => UI.Gather_statistics_about_found_media_image_formats_Q;
[NotNull]
public string MediaScanStatsText => "Gather statistics about scanned media?";
public string MediaScanStatsText => UI.Gather_statistics_about_scanned_media_Q;
[NotNull]
public string PartitionStatsText => "Gather statistics about found partitioning schemes?";
public string PartitionStatsText => UI.Gather_statistics_about_found_partitioning_schemes_Q;
[NotNull]
public string MediaStatsText => "Gather statistics about media types?";
public string MediaStatsText => UI.Gather_statistics_about_media_types_Q;
[NotNull]
public string VerifyStatsText => "Gather statistics about media image verifications?";
public string VerifyStatsText => UI.Gather_statistics_about_media_image_verifications_Q;
public ReactiveCommand<Unit, Unit> CancelCommand { get; }
public ReactiveCommand<Unit, Unit> SaveCommand { get; }

View File

@@ -37,6 +37,7 @@ using Aaru.Database;
using Aaru.Database.Models;
using Aaru.Gui.Models;
using Aaru.Gui.Views.Dialogs;
using Aaru.Localization;
using JetBrains.Annotations;
using ReactiveUI;
using NameCountModel = Aaru.Gui.Models.NameCountModel;
@@ -135,7 +136,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "fs-info" && !c.Synchronized);
FsInfoVisible = true;
FsInfoText = $"You have called the Filesystem Info command {count} times";
FsInfoText = string.Format(UI.You_have_called_the_Filesystem_Info_command_0_times, count);
}
if(ctx.Commands.Any(c => c.Name == "checksum"))
@@ -146,7 +147,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "checksum" && !c.Synchronized);
ChecksumVisible = true;
ChecksumText = $"You have called the Checksum command {count} times";
ChecksumText = string.Format(UI.You_have_called_the_Checksum_command_0_times, count);
}
if(ctx.Commands.Any(c => c.Name == "compare"))
@@ -157,7 +158,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "compare" && !c.Synchronized);
CompareVisible = true;
CompareText = $"You have called the Compare command {count} times";
CompareText = string.Format(UI.You_have_called_the_Compare_command_0_times, count);
}
if(ctx.Commands.Any(c => c.Name == "convert-image"))
@@ -168,7 +169,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "convert-image" && !c.Synchronized);
ConvertImageVisible = true;
ConvertImageText = $"You have called the Convert-Image command {count} times";
ConvertImageText = string.Format(UI.You_have_called_the_Convert_Image_command_0_times, count);
}
if(ctx.Commands.Any(c => c.Name == "create-sidecar"))
@@ -179,7 +180,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "create-sidecar" && !c.Synchronized);
CreateSidecarVisible = true;
CreateSidecarText = $"You have called the Create-Sidecar command {count} times";
CreateSidecarText = string.Format(UI.You_have_called_the_Create_Sidecar_command_0_times, count);
}
if(ctx.Commands.Any(c => c.Name == "decode"))
@@ -190,7 +191,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "decode" && !c.Synchronized);
DecodeVisible = true;
DecodeText = $"You have called the Decode command {count} times";
DecodeText = string.Format(UI.You_have_called_the_Decode_command_0_times, count);
}
if(ctx.Commands.Any(c => c.Name == "device-info"))
@@ -201,7 +202,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "device-info" && !c.Synchronized);
DeviceInfoVisible = true;
DeviceInfoText = $"You have called the Device-Info command {count} times";
DeviceInfoText = string.Format(UI.You_have_called_the_Device_Info_command_0_times, count);
}
if(ctx.Commands.Any(c => c.Name == "device-report"))
@@ -212,7 +213,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "device-report" && !c.Synchronized);
DeviceReportVisible = true;
DeviceReportText = $"You have called the Device-Report command {count} times";
DeviceReportText = string.Format(UI.You_have_called_the_Device_Report_command_0_times, count);
}
if(ctx.Commands.Any(c => c.Name == "dump-media"))
@@ -223,7 +224,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "dump-media" && !c.Synchronized);
DumpMediaVisible = true;
DumpMediaText = $"You have called the Dump-Media command {count} times";
DumpMediaText = string.Format(UI.You_have_called_the_Dump_Media_command_0_times, count);
}
if(ctx.Commands.Any(c => c.Name == "entropy"))
@@ -234,7 +235,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "entropy" && !c.Synchronized);
EntropyVisible = true;
EntropyText = $"You have called the Entropy command {count} times";
EntropyText = string.Format(UI.You_have_called_the_Entropy_command_0_times, count);
}
if(ctx.Commands.Any(c => c.Name == "formats"))
@@ -245,7 +246,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "formats" && !c.Synchronized);
FormatsCommandVisible = true;
FormatsCommandText = $"You have called the Formats command {count} times";
FormatsCommandText = string.Format(UI.You_have_called_the_Formats_command_0_times, count);
}
if(ctx.Commands.Any(c => c.Name == "image-info"))
@@ -256,7 +257,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "image-info" && !c.Synchronized);
ImageInfoVisible = true;
ImageInfoText = $"You have called the Image-Info command {count} times";
ImageInfoText = string.Format(UI.You_have_called_the_Image_Info_command_0_times, count);
}
if(ctx.Commands.Any(c => c.Name == "media-info"))
@@ -267,7 +268,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "media-info" && !c.Synchronized);
MediaInfoVisible = true;
MediaInfoText = $"You have called the Media-Info command {count} times";
MediaInfoText = string.Format(UI.You_have_called_the_Media_Info_command_0_times, count);
}
if(ctx.Commands.Any(c => c.Name == "media-scan"))
@@ -278,7 +279,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "media-scan" && !c.Synchronized);
MediaScanVisible = true;
MediaScanText = $"You have called the Media-Scan command {count} times";
MediaScanText = string.Format(UI.You_have_called_the_Media_Scan_command_0_times, count);
}
if(ctx.Commands.Any(c => c.Name == "printhex"))
@@ -289,7 +290,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "printhex" && !c.Synchronized);
PrintHexVisible = true;
PrintHexText = $"You have called the Print-Hex command {count} times";
PrintHexText = string.Format(UI.You_have_called_the_Print_Hex_command_0_times, count);
}
if(ctx.Commands.Any(c => c.Name == "verify"))
@@ -300,7 +301,7 @@ public sealed class StatisticsViewModel : ViewModelBase
count += (ulong)ctx.Commands.LongCount(c => c.Name == "verify" && !c.Synchronized);
VerifyVisible = true;
VerifyText = $"You have called the Verify command {count} times";
VerifyText = string.Format(UI.You_have_called_the_Verify_command_0_times, count);
}
CommandsVisible = FsInfoVisible || ChecksumVisible || CompareVisible || ConvertImageVisible ||
@@ -417,7 +418,7 @@ public sealed class StatisticsViewModel : ViewModelBase
{
Name = media,
Count = count,
Type = "real"
Type = UI.Media_found_type_real
});
count = ctx.Medias.Where(c => c.Type == media && c.Synchronized && !c.Real).Select(c => c.Count).
@@ -432,7 +433,7 @@ public sealed class StatisticsViewModel : ViewModelBase
{
Name = media,
Count = count,
Type = "image"
Type = UI.Media_found_type_image
});
}
}
@@ -672,45 +673,45 @@ public sealed class StatisticsViewModel : ViewModelBase
}
[NotNull]
public string CommandsLabel => "Commands";
public string CommandsLabel => UI.Title_Commands;
[NotNull]
public string FilterLabel => "Filter";
public string FilterLabel => UI.Title_Filter;
[NotNull]
public string PartitionLabel => "Partition";
public string PartitionLabel => UI.Title_Partition;
[NotNull]
public string PartitionsLabel => "Partitions";
public string PartitionsLabel => UI.Title_Partitions;
[NotNull]
public string FiltersLabel => "Filters";
public string FiltersLabel => UI.Title_Filters;
[NotNull]
public string FormatsLabel => "Formats";
public string FormatsLabel => UI.Title_Formats;
[NotNull]
public string FormatLabel => "Format";
public string FormatLabel => UI.Title_Format;
[NotNull]
public string FilesystemsLabel => "Filesystems";
public string FilesystemsLabel => UI.Title_Filesystems;
[NotNull]
public string FilesystemLabel => "Filesystem";
public string FilesystemLabel => UI.Title_Filesystem;
[NotNull]
public string TimesFoundLabel => "Times found";
public string TimesFoundLabel => UI.Title_Times_used;
[NotNull]
public string DevicesLabel => "Devices";
public string DevicesLabel => UI.Title_Devices;
[NotNull]
public string DeviceLabel => "Device";
public string DeviceLabel => UI.Title_Device;
[NotNull]
public string ManufacturerLabel => "Manufacturer";
public string ManufacturerLabel => UI.Title_Manufacturer;
[NotNull]
public string RevisionLabel => "Revision";
public string RevisionLabel => UI.Title_Revision;
[NotNull]
public string BusLabel => "Bus";
public string BusLabel => UI.Title_Bus;
[NotNull]
public string MediasLabel => "Medias";
public string MediasLabel => UI.Title_Medias;
[NotNull]
public string MediaLabel => "Media";
public string MediaLabel => UI.Title_Media;
[NotNull]
public string TypeLabel => "Type";
public string TypeLabel => UI.Title_Type_for_media;
[NotNull]
public string Title => "Encodings";
public string Title => UI.Encodings;
[NotNull]
public string CloseLabel => "Close";
public string CloseLabel => UI.ButtonLabel_Close;
public ReactiveCommand<Unit, Unit> CloseCommand { get; }
public ObservableCollection<NameCountModel> Filters { get; }