diff --git a/Aaru.Core/Aaru.Core.csproj b/Aaru.Core/Aaru.Core.csproj
index 8f8ecac6b..2e10d2487 100644
--- a/Aaru.Core/Aaru.Core.csproj
+++ b/Aaru.Core/Aaru.Core.csproj
@@ -139,6 +139,7 @@
+
diff --git a/Aaru.Core/DataFile.cs b/Aaru.Core/DataFile.cs
index 88d719b37..834a22a1a 100644
--- a/Aaru.Core/DataFile.cs
+++ b/Aaru.Core/DataFile.cs
@@ -137,21 +137,21 @@ public sealed class DataFile
File.Delete(filename);
else
{
- AaruConsole.ErrorWriteLine("Not overwriting file {0}", filename);
+ AaruConsole.ErrorWriteLine(Localization.Core.Not_overwriting_file_0, filename);
return;
}
try
{
- AaruConsole.DebugWriteLine(who, "Writing " + whatWriting + " to {0}", filename);
+ AaruConsole.DebugWriteLine(who, string.Format(Localization.Core.Writing_0_to_1, whatWriting, filename));
var outputFs = new FileStream(filename, FileMode.CreateNew);
outputFs.Write(data, 0, data.Length);
outputFs.Close();
}
catch
{
- AaruConsole.ErrorWriteLine("Unable to write file {0}", filename);
+ AaruConsole.ErrorWriteLine(Localization.Core.Unable_to_write_file_0, filename);
}
}
}
\ No newline at end of file
diff --git a/Aaru.Core/Devices/Dumping/ATA.cs b/Aaru.Core/Devices/Dumping/ATA.cs
index 5c8028c40..3e1c729c6 100644
--- a/Aaru.Core/Devices/Dumping/ATA.cs
+++ b/Aaru.Core/Devices/Dumping/ATA.cs
@@ -58,7 +58,7 @@ public partial class Dump
{
if(_outputPlugin is not IWritableImage outputFormat)
{
- StoppingErrorMessage?.Invoke("Image is not writable, aborting...");
+ StoppingErrorMessage?.Invoke(Localization.Core.Image_is_not_writable_aborting);
return;
}
@@ -66,10 +66,10 @@ public partial class Dump
if(_dumpRaw)
{
if(_force)
- ErrorMessage?.Invoke("Raw dumping not yet supported in ATA devices, continuing...");
+ ErrorMessage?.Invoke(Localization.Core.Raw_dumping_not_yet_supported_in_ATA_devices_continuing);
else
{
- StoppingErrorMessage?.Invoke("Raw dumping not yet supported in ATA devices, aborting...");
+ StoppingErrorMessage?.Invoke(Localization.Core.Raw_dumping_not_yet_supported_in_ATA_devices_aborting);
return;
}
@@ -80,8 +80,8 @@ public partial class Dump
double imageWriteDuration = 0;
MediaType mediaType = MediaType.Unknown;
- UpdateStatus?.Invoke("Requesting ATA IDENTIFY DEVICE.");
- _dumpLog.WriteLine("Requesting ATA IDENTIFY DEVICE.");
+ UpdateStatus?.Invoke(Localization.Core.Requesting_ATA_IDENTIFY_DEVICE);
+ _dumpLog.WriteLine(Localization.Core.Requesting_ATA_IDENTIFY_DEVICE);
bool sense = _dev.AtaIdentify(out byte[] cmdBuf, out AtaErrorRegistersChs errorChs);
if(sense)
@@ -104,8 +104,8 @@ public partial class Dump
double minSpeed = double.MaxValue;
// Initialize reader
- UpdateStatus?.Invoke("Initializing reader.");
- _dumpLog.WriteLine("Initializing reader.");
+ UpdateStatus?.Invoke(Localization.Core.Initializing_reader);
+ _dumpLog.WriteLine(Localization.Core.Initializing_reader);
var ataReader = new Reader(_dev, timeout, ataIdentify, _errorLog);
// Fill reader blocks
@@ -114,7 +114,7 @@ public partial class Dump
// Check block sizes
if(ataReader.GetBlockSize())
{
- _dumpLog.WriteLine("ERROR: Cannot get block size: {0}.", ataReader.ErrorMessage);
+ _dumpLog.WriteLine(Localization.Core.ERROR_Cannot_get_block_size_0, ataReader.ErrorMessage);
ErrorMessage(ataReader.ErrorMessage);
return;
@@ -125,7 +125,9 @@ public partial class Dump
if(ataReader.FindReadCommand())
{
- _dumpLog.WriteLine("ERROR: Cannot find correct read command: {0}.", ataReader.ErrorMessage);
+ _dumpLog.WriteLine(Localization.Core.ERROR_Cannot_find_correct_read_command_0,
+ ataReader.ErrorMessage);
+
ErrorMessage(ataReader.ErrorMessage);
return;
@@ -134,7 +136,7 @@ public partial class Dump
// Check how many blocks to read, if error show and return
if(ataReader.GetBlocksToRead(_maximumReadable))
{
- _dumpLog.WriteLine("ERROR: Cannot get blocks to read: {0}.", ataReader.ErrorMessage);
+ _dumpLog.WriteLine(Localization.Core.ERROR_Cannot_get_blocks_to_read_0, ataReader.ErrorMessage);
ErrorMessage(ataReader.ErrorMessage);
return;
@@ -145,22 +147,29 @@ public partial class Dump
byte heads = ataReader.Heads;
byte sectors = ataReader.Sectors;
- UpdateStatus?.Invoke($"Device reports {blocks} blocks ({blocks * blockSize} bytes).");
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_blocks_1_bytes, blocks,
+ blocks * blockSize));
- UpdateStatus?.Invoke($"Device reports {cylinders} cylinders {heads} heads {sectors
- } sectors per track.");
+ UpdateStatus?.
+ Invoke(string.Format(Localization.Core.Device_reports_0_cylinders_1_heads_2_sectors_per_track,
+ cylinders, heads, sectors));
- UpdateStatus?.Invoke($"Device can read {blocksToRead} blocks at a time.");
- UpdateStatus?.Invoke($"Device reports {blockSize} bytes per logical block.");
- UpdateStatus?.Invoke($"Device reports {physicalSectorSize} bytes per physical block.");
- _dumpLog.WriteLine("Device reports {0} blocks ({1} bytes).", blocks, blocks * blockSize);
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Device_can_read_0_blocks_at_a_time, blocksToRead));
- _dumpLog.WriteLine("Device reports {0} cylinders {1} heads {2} sectors per track.", cylinders, heads,
- sectors);
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_bytes_per_logical_block,
+ blockSize));
- _dumpLog.WriteLine("Device can read {0} blocks at a time.", blocksToRead);
- _dumpLog.WriteLine("Device reports {0} bytes per logical block.", blockSize);
- _dumpLog.WriteLine("Device reports {0} bytes per physical block.", physicalSectorSize);
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_bytes_per_physical_block,
+ physicalSectorSize));
+
+ _dumpLog.WriteLine(Localization.Core.Device_reports_0_blocks_1_bytes, blocks, blocks * blockSize);
+
+ _dumpLog.WriteLine(Localization.Core.Device_reports_0_cylinders_1_heads_2_sectors_per_track, cylinders,
+ heads, sectors);
+
+ _dumpLog.WriteLine(Localization.Core.Device_can_read_0_blocks_at_a_time, blocksToRead);
+ _dumpLog.WriteLine(Localization.Core.Device_reports_0_bytes_per_logical_block, blockSize);
+ _dumpLog.WriteLine(Localization.Core.Device_reports_0_bytes_per_physical_block, physicalSectorSize);
bool removable = !_dev.IsCompactFlash &&
ataId.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.Removable);
@@ -175,7 +184,7 @@ public partial class Dump
if(currentTry == null ||
extents == null)
{
- StoppingErrorMessage?.Invoke("Could not process resume file, not continuing...");
+ StoppingErrorMessage?.Invoke(Localization.Core.Could_not_process_resume_file_not_continuing);
return;
}
@@ -191,8 +200,8 @@ public partial class Dump
!outputFormat.SupportedMediaTags.Contains(MediaTagType.USB_Descriptors))
{
ret = false;
- _dumpLog.WriteLine("Output format does not support USB descriptors.");
- ErrorMessage("Output format does not support USB descriptors.");
+ _dumpLog.WriteLine(Localization.Core.Output_format_does_not_support_USB_descriptors);
+ ErrorMessage(Localization.Core.Output_format_does_not_support_USB_descriptors);
}
if(_dev.IsPcmcia &&
@@ -200,26 +209,28 @@ public partial class Dump
!outputFormat.SupportedMediaTags.Contains(MediaTagType.PCMCIA_CIS))
{
ret = false;
- _dumpLog.WriteLine("Output format does not support PCMCIA CIS descriptors.");
- ErrorMessage("Output format does not support PCMCIA CIS descriptors.");
+ _dumpLog.WriteLine(Localization.Core.Output_format_does_not_support_PCMCIA_CIS_descriptors);
+ ErrorMessage(Localization.Core.Output_format_does_not_support_PCMCIA_CIS_descriptors);
}
if(!outputFormat.SupportedMediaTags.Contains(MediaTagType.ATA_IDENTIFY))
{
ret = false;
- _dumpLog.WriteLine("Output format does not support ATA IDENTIFY.");
- ErrorMessage("Output format does not support ATA IDENTIFY.");
+ _dumpLog.WriteLine(Localization.Core.Dump_Ata_Output_format_does_not_support_ATA_IDENTIFY_);
+ ErrorMessage(Localization.Core.Dump_Ata_Output_format_does_not_support_ATA_IDENTIFY_);
}
if(!ret)
{
- _dumpLog.WriteLine("Several media tags not supported, {0}continuing...", _force ? "" : "not ");
-
if(_force)
- ErrorMessage("Several media tags not supported, continuing...");
+ {
+ _dumpLog.WriteLine(Localization.Core.Several_media_tags_not_supported_continuing);
+ ErrorMessage(Localization.Core.Several_media_tags_not_supported_continuing);
+ }
else
{
- StoppingErrorMessage?.Invoke("Several media tags not supported, not continuing...");
+ _dumpLog.WriteLine(Localization.Core.Several_media_tags_not_supported_not_continuing);
+ StoppingErrorMessage?.Invoke(Localization.Core.Several_media_tags_not_supported_not_continuing);
return;
}
@@ -233,11 +244,11 @@ public partial class Dump
// Cannot create image
if(!ret)
{
- _dumpLog.WriteLine("Error creating output image, not continuing.");
+ _dumpLog.WriteLine(Localization.Core.Error_creating_output_image_not_continuing);
_dumpLog.WriteLine(outputFormat.ErrorMessage);
- StoppingErrorMessage?.Invoke("Error creating output image, not continuing." + Environment.NewLine +
- outputFormat.ErrorMessage);
+ StoppingErrorMessage?.Invoke(Localization.Core.Error_creating_output_image_not_continuing +
+ Environment.NewLine + outputFormat.ErrorMessage);
return;
}
@@ -249,7 +260,7 @@ public partial class Dump
if(ataReader.IsLba)
{
- UpdateStatus?.Invoke($"Reading {blocksToRead} sectors at a time.");
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Reading_0_sectors_at_a_time, blocksToRead));
if(_skip < blocksToRead)
_skip = blocksToRead;
@@ -261,8 +272,8 @@ public partial class Dump
if(_resume.NextBlock > 0)
{
- UpdateStatus?.Invoke($"Resuming from block {_resume.NextBlock}.");
- _dumpLog.WriteLine("Resuming from block {0}.", _resume.NextBlock);
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Resuming_from_block_0, _resume.NextBlock));
+ _dumpLog.WriteLine(Localization.Core.Resuming_from_block_0, _resume.NextBlock);
}
bool newTrim = false;
@@ -277,8 +288,8 @@ public partial class Dump
if(_aborted)
{
currentTry.Extents = ExtentsConverter.ToMetadata(extents);
- UpdateStatus?.Invoke("Aborted!");
- _dumpLog.WriteLine("Aborted!");
+ UpdateStatus?.Invoke(Localization.Core.Aborted);
+ _dumpLog.WriteLine(Localization.Core.Aborted);
break;
}
@@ -294,8 +305,9 @@ public partial class Dump
currentSpeed > 0)
minSpeed = currentSpeed;
- UpdateProgress?.Invoke($"Reading sector {i} of {blocks} ({currentSpeed:F3} MiB/sec.)", (long)i,
- (long)blocks);
+ UpdateProgress?.
+ Invoke(string.Format(Localization.Core.Reading_sector_0_of_1_2_MiB_sec, i, blocks, currentSpeed),
+ (long)i, (long)blocks);
bool error = ataReader.ReadBlocks(out cmdBuf, i, blocksToRead, out duration, out _, out _);
@@ -322,7 +334,7 @@ public partial class Dump
DateTime writeStart = DateTime.Now;
outputFormat.WriteSectors(new byte[blockSize * _skip], i, _skip);
imageWriteDuration += (DateTime.Now - writeStart).TotalSeconds;
- _dumpLog.WriteLine("Skipping {0} blocks from errored block {1}.", _skip, i);
+ _dumpLog.WriteLine(Localization.Core.Skipping_0_blocks_from_errored_block_1, _skip, i);
i += _skip - blocksToRead;
newTrim = true;
}
@@ -349,20 +361,22 @@ public partial class Dump
ibgLog.Close(_dev, blocks, blockSize, (end - start).TotalSeconds, currentSpeed * 1024,
blockSize * (double)(blocks + 1) / 1024 / (totalDuration / 1000), _devicePath);
- UpdateStatus?.Invoke($"Dump finished in {(end - start).TotalSeconds} seconds.");
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Dump_finished_in_0_seconds,
+ (end - start).TotalSeconds));
- UpdateStatus?.Invoke($"Average dump speed {
- blockSize * (double)(blocks + 1) / 1024 / (totalDuration / 1000):F3} KiB/sec.");
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Average_dump_speed_0_KiB_sec,
+ blockSize * (double)(blocks + 1) / 1024 /
+ (totalDuration / 1000)));
- UpdateStatus?.Invoke($"Average write speed {
- blockSize * (double)(blocks + 1) / 1024 / imageWriteDuration:F3} KiB/sec.");
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Average_write_speed_0_KiB_sec,
+ blockSize * (double)(blocks + 1) / 1024 / imageWriteDuration));
- _dumpLog.WriteLine("Dump finished in {0} seconds.", (end - start).TotalSeconds);
+ _dumpLog.WriteLine(Localization.Core.Dump_finished_in_0_seconds, (end - start).TotalSeconds);
- _dumpLog.WriteLine("Average dump speed {0:F3} KiB/sec.",
+ _dumpLog.WriteLine(Localization.Core.Average_dump_speed_0_KiB_sec,
blockSize * (double)(blocks + 1) / 1024 / (totalDuration / 1000));
- _dumpLog.WriteLine("Average write speed {0:F3} KiB/sec.",
+ _dumpLog.WriteLine(Localization.Core.Average_write_speed_0_KiB_sec,
blockSize * (double)(blocks + 1) / 1024 / imageWriteDuration);
#region Trimming
@@ -372,8 +386,8 @@ public partial class Dump
newTrim)
{
start = DateTime.UtcNow;
- UpdateStatus?.Invoke("Trimming skipped sectors");
- _dumpLog.WriteLine("Trimming skipped sectors");
+ UpdateStatus?.Invoke(Localization.Core.Trimming_skipped_sectors);
+ _dumpLog.WriteLine(Localization.Core.Trimming_skipped_sectors);
ulong[] tmpArray = _resume.BadBlocks.ToArray();
InitProgress?.Invoke();
@@ -383,13 +397,13 @@ public partial class Dump
if(_aborted)
{
currentTry.Extents = ExtentsConverter.ToMetadata(extents);
- UpdateStatus?.Invoke("Aborted!");
- _dumpLog.WriteLine("Aborted!");
+ UpdateStatus?.Invoke(Localization.Core.Aborted);
+ _dumpLog.WriteLine(Localization.Core.Aborted);
break;
}
- PulseProgress?.Invoke($"Trimming sector {badSector}");
+ PulseProgress?.Invoke(string.Format(Localization.Core.Trimming_sector_0, badSector));
bool error =
ataReader.ReadBlock(out cmdBuf, badSector, out duration, out recoveredError, out _);
@@ -406,8 +420,12 @@ public partial class Dump
EndProgress?.Invoke();
end = DateTime.UtcNow;
- UpdateStatus?.Invoke($"Trimming finished in {(end - start).TotalSeconds} seconds.");
- _dumpLog.WriteLine("Trimming finished in {0} seconds.", (end - start).TotalSeconds);
+
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Trimming_finished_in_0_seconds,
+ (end - start).TotalSeconds));
+
+ _dumpLog.WriteLine(Localization.Core.Trimming_finished_in_0_seconds,
+ (end - start).TotalSeconds);
}
#endregion Trimming
@@ -428,15 +446,28 @@ public partial class Dump
if(_aborted)
{
currentTry.Extents = ExtentsConverter.ToMetadata(extents);
- UpdateStatus?.Invoke("Aborted!");
- _dumpLog.WriteLine("Aborted!");
+ UpdateStatus?.Invoke(Localization.Core.Aborted);
+ _dumpLog.WriteLine(Localization.Core.Aborted);
break;
}
- PulseProgress?.Invoke(string.Format("Retrying sector {0}, pass {1}, {3}{2}", badSector,
- pass, forward ? "forward" : "reverse",
- _persistent ? "recovering partial data, " : ""));
+ if(forward)
+ PulseProgress?.Invoke(_persistent
+ ? string.
+ Format(Localization.Core.Retrying_sector_0_pass_1_recovering_partial_data_forward,
+ badSector, pass)
+ : string.
+ Format(Localization.Core.Retrying_sector_0_pass_1_forward,
+ badSector, pass));
+ else
+ PulseProgress?.Invoke(_persistent
+ ? string.
+ Format(Localization.Core.Retrying_sector_0_pass_1_recovering_partial_data_reverse,
+ badSector, pass)
+ : string.
+ Format(Localization.Core.Retrying_sector_0_pass_1_reverse,
+ badSector, pass));
bool error =
ataReader.ReadBlock(out cmdBuf, badSector, out duration, out recoveredError, out _);
@@ -448,8 +479,13 @@ public partial class Dump
_resume.BadBlocks.Remove(badSector);
extents.Add(badSector);
outputFormat.WriteSector(cmdBuf, badSector);
- UpdateStatus?.Invoke($"Correctly retried block {badSector} in pass {pass}.");
- _dumpLog.WriteLine("Correctly retried block {0} in pass {1}.", badSector, pass);
+
+ UpdateStatus?.
+ Invoke(string.Format(Localization.Core.Correctly_retried_block_0_in_pass_1,
+ badSector, pass));
+
+ _dumpLog.WriteLine(Localization.Core.Correctly_retried_block_0_in_pass_1, badSector,
+ pass);
}
else if(_persistent)
outputFormat.WriteSector(cmdBuf, badSector);
@@ -498,8 +534,8 @@ public partial class Dump
if(_aborted)
{
currentTry.Extents = ExtentsConverter.ToMetadata(extents);
- UpdateStatus?.Invoke("Aborted!");
- _dumpLog.WriteLine("Aborted!");
+ UpdateStatus?.Invoke(Localization.Core.Aborted);
+ _dumpLog.WriteLine(Localization.Core.Aborted);
break;
}
@@ -512,8 +548,9 @@ public partial class Dump
currentSpeed > 0)
minSpeed = currentSpeed;
- PulseProgress?.Invoke($"Reading cylinder {cy} head {hd} sector {sc} ({currentSpeed
- :F3} MiB/sec.)");
+ PulseProgress?.
+ Invoke(string.Format(Localization.Core.Reading_cylinder_0_head_1_sector_2_3_MiB_sec,
+ cy, hd, sc, currentSpeed));
bool error =
ataReader.ReadChs(out cmdBuf, cy, hd, sc, out duration, out recoveredError);
@@ -532,7 +569,8 @@ public partial class Dump
imageWriteDuration += (DateTime.Now - writeStart).TotalSeconds;
extents.Add(currentBlock);
- _dumpLog.WriteLine("Error reading cylinder {0} head {1} sector {2}.", cy, hd, sc);
+ _dumpLog.WriteLine(Localization.Core.Error_reading_cylinder_0_head_1_sector_2, cy,
+ hd, sc);
}
else
{
@@ -572,25 +610,28 @@ public partial class Dump
ibgLog.Close(_dev, blocks, blockSize, (end - start).TotalSeconds, currentSpeed * 1024,
blockSize * (double)(blocks + 1) / 1024 / (totalDuration / 1000), _devicePath);
- UpdateStatus?.Invoke($"Dump finished in {(end - start).TotalSeconds} seconds.");
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Dump_finished_in_0_seconds,
+ (end - start).TotalSeconds));
- UpdateStatus?.Invoke($"Average dump speed {
- blockSize * (double)(blocks + 1) / 1024 / (totalDuration / 1000):F3} KiB/sec.");
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Average_dump_speed_0_KiB_sec,
+ blockSize * (double)(blocks + 1) / 1024 /
+ (totalDuration / 1000)));
- UpdateStatus?.Invoke($"Average write speed {
- blockSize * (double)(blocks + 1) / 1024 / (imageWriteDuration / 1000):F3} KiB/sec.");
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Average_write_speed_0_KiB_sec,
+ blockSize * (double)(blocks + 1) / 1024 /
+ (imageWriteDuration / 1000)));
- _dumpLog.WriteLine("Dump finished in {0} seconds.", (end - start).TotalSeconds);
+ _dumpLog.WriteLine(Localization.Core.Dump_finished_in_0_seconds, (end - start).TotalSeconds);
- _dumpLog.WriteLine("Average dump speed {0:F3} KiB/sec.",
+ _dumpLog.WriteLine(Localization.Core.Average_dump_speed_0_KiB_sec,
blockSize * (double)(blocks + 1) / 1024 / (totalDuration / 1000));
- _dumpLog.WriteLine("Average write speed {0:F3} KiB/sec.",
+ _dumpLog.WriteLine(Localization.Core.Average_write_speed_0_KiB_sec,
blockSize * (double)(blocks + 1) / 1024 / (imageWriteDuration / 1000));
}
foreach(ulong bad in _resume.BadBlocks)
- _dumpLog.WriteLine("Sector {0} could not be read.", bad);
+ _dumpLog.WriteLine(Localization.Core.Sector_0_could_not_be_read, bad);
outputFormat.SetDumpHardware(_resume.Tries);
@@ -602,24 +643,27 @@ public partial class Dump
};
if(!outputFormat.SetMetadata(metadata))
- ErrorMessage?.Invoke("Error {0} setting metadata, continuing..." + Environment.NewLine +
+ ErrorMessage?.Invoke(Localization.Core.Error_0_setting_metadata + Environment.NewLine +
outputFormat.ErrorMessage);
if(_preSidecar != null)
outputFormat.SetCicmMetadata(_preSidecar);
- _dumpLog.WriteLine("Closing output file.");
- UpdateStatus?.Invoke("Closing output file.");
+ _dumpLog.WriteLine(Localization.Core.Closing_output_file);
+ UpdateStatus?.Invoke(Localization.Core.Closing_output_file);
DateTime closeStart = DateTime.Now;
outputFormat.Close();
DateTime closeEnd = DateTime.Now;
- UpdateStatus?.Invoke($"Closed in {(closeEnd - closeStart).TotalSeconds} seconds.");
- _dumpLog.WriteLine("Closed in {0} seconds.", (closeEnd - closeStart).TotalSeconds);
+
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Closed_in_0_seconds,
+ (closeEnd - closeStart).TotalSeconds));
+
+ _dumpLog.WriteLine(Localization.Core.Closed_in_0_seconds, (closeEnd - closeStart).TotalSeconds);
if(_aborted)
{
- _dumpLog.WriteLine("Aborted!");
- UpdateStatus?.Invoke("Aborted!");
+ _dumpLog.WriteLine(Localization.Core.Aborted);
+ UpdateStatus?.Invoke(Localization.Core.Aborted);
return;
}
@@ -638,8 +682,8 @@ public partial class Dump
if(_metadata)
{
- _dumpLog.WriteLine("Creating sidecar.");
- UpdateStatus?.Invoke("Creating sidecar.");
+ _dumpLog.WriteLine(Localization.Core.Creating_sidecar);
+ UpdateStatus?.Invoke(Localization.Core.Creating_sidecar);
var filters = new FiltersList();
IFilter filter = filters.GetFilter(_outputPath);
var inputPlugin = ImageFormat.Detect(filter) as IMediaImage;
@@ -647,7 +691,8 @@ public partial class Dump
if(opened != ErrorNumber.NoError)
{
- StoppingErrorMessage?.Invoke($"Error {opened} opening created image.");
+ StoppingErrorMessage?.Invoke(string.Format(Localization.Core.Error_0_opening_created_image,
+ opened));
return;
}
@@ -676,8 +721,8 @@ public partial class Dump
if(_dev.IsUsb &&
_dev.UsbDescriptors != null)
{
- _dumpLog.WriteLine("Reading USB descriptors.");
- UpdateStatus?.Invoke("Reading USB descriptors.");
+ _dumpLog.WriteLine(Localization.Core.Reading_USB_descriptors);
+ UpdateStatus?.Invoke(Localization.Core.Reading_USB_descriptors);
sidecar.BlockMedia[0].USB = new USBType
{
@@ -695,8 +740,8 @@ public partial class Dump
if(_dev.IsPcmcia &&
_dev.Cis != null)
{
- _dumpLog.WriteLine("Reading PCMCIA CIS.");
- UpdateStatus?.Invoke("Reading PCMCIA CIS.");
+ _dumpLog.WriteLine(Localization.Core.Reading_PCMCIA_CIS);
+ UpdateStatus?.Invoke(Localization.Core.Reading_PCMCIA_CIS);
sidecar.BlockMedia[0].PCMCIA = new PCMCIAType
{
@@ -708,8 +753,8 @@ public partial class Dump
}
};
- _dumpLog.WriteLine("Decoding PCMCIA CIS.");
- UpdateStatus?.Invoke("Decoding PCMCIA CIS.");
+ _dumpLog.WriteLine(Localization.Core.Decoding_PCMCIA_CIS);
+ UpdateStatus?.Invoke(Localization.Core.Decoding_PCMCIA_CIS);
Tuple[] tuples = CIS.GetTuples(_dev.Cis);
if(tuples != null)
@@ -766,14 +811,18 @@ public partial class Dump
DateTime chkEnd = DateTime.UtcNow;
totalChkDuration = (chkEnd - chkStart).TotalMilliseconds;
- UpdateStatus?.Invoke($"Sidecar created in {(chkEnd - chkStart).TotalSeconds} seconds.");
- UpdateStatus?.Invoke($"Average checksum speed {
- blockSize * (double)(blocks + 1) / 1024 / (totalChkDuration / 1000):F3} KiB/sec.");
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Sidecar_created_in_0_seconds,
+ (chkEnd - chkStart).TotalSeconds));
- _dumpLog.WriteLine("Sidecar created in {0} seconds.", (chkEnd - chkStart).TotalSeconds);
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Average_checksum_speed_0_KiB_sec,
+ blockSize * (double)(blocks + 1) / 1024 /
+ (totalChkDuration / 1000)));
- _dumpLog.WriteLine("Average checksum speed {0:F3} KiB/sec.",
+ _dumpLog.WriteLine(Localization.Core.Sidecar_created_in_0_seconds,
+ (chkEnd - chkStart).TotalSeconds);
+
+ _dumpLog.WriteLine(Localization.Core.Average_checksum_speed_0_KiB_sec,
blockSize * (double)(blocks + 1) / 1024 / (totalChkDuration / 1000));
List<(ulong start, string type)> filesystems = new();
@@ -791,10 +840,10 @@ public partial class Dump
o.type
}).Distinct())
{
- UpdateStatus?.Invoke($"Found filesystem {filesystem.type} at sector {filesystem.start
- }");
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Found_filesystem_0_at_sector_1,
+ filesystem.type, filesystem.start));
- _dumpLog.WriteLine("Found filesystem {0} at sector {1}", filesystem.type,
+ _dumpLog.WriteLine(Localization.Core.Found_filesystem_0_at_sector_1, filesystem.type,
filesystem.start);
}
@@ -826,7 +875,7 @@ public partial class Dump
sidecar.BlockMedia[0].SectorsPerTrackSpecified = true;
}
- UpdateStatus?.Invoke("Writing metadata sidecar");
+ UpdateStatus?.Invoke(Localization.Core.Writing_metadata_sidecar);
var xmlFs = new FileStream(_outputPrefix + ".cicm.xml", FileMode.Create);
@@ -838,20 +887,23 @@ public partial class Dump
UpdateStatus?.Invoke("");
- UpdateStatus?.Invoke($"Took a total of {(end - start).TotalSeconds:F3} seconds ({totalDuration / 1000
- :F3} processing commands, {totalChkDuration / 1000:F3} checksumming, {imageWriteDuration
- :F3} writing, {(closeEnd - closeStart).TotalSeconds:F3} closing).");
+ UpdateStatus?.
+ Invoke(string.Format(Localization.Core.Took_a_total_of_0_seconds_1_processing_commands_2_checksumming_3_writing_4_closing,
+ (end - start).TotalSeconds, totalDuration / 1000, totalChkDuration / 1000,
+ imageWriteDuration, (closeEnd - closeStart).TotalSeconds));
- UpdateStatus?.Invoke($"Average speed: {
- blockSize * (double)(blocks + 1) / 1048576 / (totalDuration / 1000):F3} MiB/sec.");
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Average_speed_0_MiB_sec,
+ blockSize * (double)(blocks + 1) / 1048576 /
+ (totalDuration / 1000)));
if(maxSpeed > 0)
- UpdateStatus?.Invoke($"Fastest speed burst: {maxSpeed:F3} MiB/sec.");
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Fastest_speed_burst_0_MiB_sec, maxSpeed));
if(minSpeed is > 0 and < double.MaxValue)
- UpdateStatus?.Invoke($"Slowest speed burst: {minSpeed:F3} MiB/sec.");
+ UpdateStatus?.Invoke(string.Format(Localization.Core.Slowest_speed_burst_0_MiB_sec, minSpeed));
- UpdateStatus?.Invoke($"{_resume.BadBlocks.Count} sectors could not be read.");
+ UpdateStatus?.Invoke(string.Format(Localization.Core._0_sectors_could_not_be_read,
+ _resume.BadBlocks.Count));
if(_resume.BadBlocks.Count > 0)
_resume.BadBlocks.Sort();
@@ -862,6 +914,6 @@ public partial class Dump
Statistics.AddMedia(mediaType, true);
}
else
- StoppingErrorMessage?.Invoke("Unable to communicate with ATA device.");
+ StoppingErrorMessage?.Invoke(Localization.Core.Unable_to_communicate_with_ATA_device);
}
}
\ No newline at end of file
diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/CdiReady.cs b/Aaru.Core/Devices/Dumping/CompactDisc/CdiReady.cs
index 1883f2e94..970251e8f 100644
--- a/Aaru.Core/Devices/Dumping/CompactDisc/CdiReady.cs
+++ b/Aaru.Core/Devices/Dumping/CompactDisc/CdiReady.cs
@@ -170,8 +170,8 @@ partial class Dump
if(cdiReadyReadAsAudio)
{
- _dumpLog.WriteLine("Setting speed to 8x for CD-i Ready reading as audio.");
- UpdateStatus?.Invoke("Setting speed to 8x for CD-i Ready reading as audio.");
+ _dumpLog.WriteLine(Localization.Core.Setting_speed_to_8x_for_CD_i_Ready_reading_as_audio);
+ UpdateStatus?.Invoke(Localization.Core.Setting_speed_to_8x_for_CD_i_Ready_reading_as_audio);
_dev.SetCdSpeed(out _, RotationalControl.ClvAndImpureCav, 1416, 0, _dev.Timeout, out _);
}
@@ -183,8 +183,8 @@ partial class Dump
if(_aborted)
{
currentTry.Extents = ExtentsConverter.ToMetadata(extents);
- UpdateStatus?.Invoke("Aborted!");
- _dumpLog.WriteLine("Aborted!");
+ UpdateStatus?.Invoke(Localization.Core.Aborted);
+ _dumpLog.WriteLine(Localization.Core.Aborted);
break;
}
@@ -213,8 +213,9 @@ partial class Dump
currentSpeed > 0)
minSpeed = currentSpeed;
- UpdateProgress?.Invoke($"Reading sector {i} of {blocks} ({currentSpeed:F3} MiB/sec.)", (long)i,
- (long)blocks);
+ UpdateProgress?.
+ Invoke(string.Format(Localization.Core.Reading_sector_0_of_1_2_MiB_sec, i, blocks, currentSpeed),
+ (long)i, (long)blocks);
sense = _dev.ReadCd(out cmdBuf, out senseBuf, firstSectorToRead, blockSize, blocksToRead,
MmcSectorTypes.AllTypes, false, false, true, MmcHeaderCodes.AllHeaders, true, true,
@@ -228,8 +229,9 @@ partial class Dump
if(sense)
for(uint r = 0; r < _maximumReadable; r++)
{
- UpdateProgress?.Invoke($"Reading sector {i + r} of {blocks} ({currentSpeed:F3} MiB/sec.)",
- (long)i + r, (long)blocks);
+ UpdateProgress?.
+ Invoke(string.Format(Localization.Core.Reading_sector_0_of_1_2_MiB_sec, i + r, blocks, currentSpeed),
+ (long)i + r, (long)blocks);
sense = _dev.ReadCd(out cmdBuf, out senseBuf, (uint)(i + r), blockSize, (uint)sectorsForOffset + 1,
MmcSectorTypes.AllTypes, false, false, true, MmcHeaderCodes.AllHeaders, true,
@@ -289,10 +291,11 @@ partial class Dump
leadOutExtents.Add(i + r, firstTrack.EndSector);
- UpdateStatus?.Invoke($"Adding CD-i Ready hole from LBA {i + r} to {firstTrack.EndSector
- } inclusive.");
+ UpdateStatus?.
+ Invoke(string.Format(Localization.Core.Adding_CD_i_Ready_hole_from_LBA_0_to_1_inclusive,
+ i + r, firstTrack.EndSector));
- _dumpLog.WriteLine("Adding CD-i Ready hole from LBA {0} to {1} inclusive.", i + r,
+ _dumpLog.WriteLine(Localization.Core.Adding_CD_i_Ready_hole_from_LBA_0_to_1_inclusive, i + r,
firstTrack.EndSector);
break;
diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/Data.cs b/Aaru.Core/Devices/Dumping/CompactDisc/Data.cs
index 68afd0f7f..b5bf57800 100644
--- a/Aaru.Core/Devices/Dumping/CompactDisc/Data.cs
+++ b/Aaru.Core/Devices/Dumping/CompactDisc/Data.cs
@@ -130,8 +130,8 @@ partial class Dump
if(_aborted)
{
currentTry.Extents = ExtentsConverter.ToMetadata(extents);
- UpdateStatus?.Invoke("Aborted!");
- _dumpLog.WriteLine("Aborted!");
+ UpdateStatus?.Invoke(Localization.Core.Aborted);
+ _dumpLog.WriteLine(Localization.Core.Aborted);
break;
}
@@ -224,8 +224,8 @@ partial class Dump
switch(inData)
{
case false when currentReadSpeed == 0xFFFF:
- _dumpLog.WriteLine("Setting speed to 8x for audio reading.");
- UpdateStatus?.Invoke("Setting speed to 8x for audio reading.");
+ _dumpLog.WriteLine(Localization.Core.Setting_speed_to_8x_for_audio_reading);
+ UpdateStatus?.Invoke(Localization.Core.Setting_speed_to_8x_for_audio_reading);
_dev.SetCdSpeed(out _, RotationalControl.ClvAndImpureCav, 1416, 0, _dev.Timeout, out _);
@@ -234,11 +234,13 @@ partial class Dump
break;
case true when currentReadSpeed != _speed:
{
- _dumpLog.WriteLine($"Setting speed to {(_speed == 0xFFFF ? "MAX for data reading" : $"{_speed}x")
- }.");
+ _dumpLog.WriteLine(_speed == 0xFFFF ? Localization.Core.Setting_speed_to_MAX_for_data_reading
+ : string.Format(Localization.Core.Setting_speed_to_0_x_for_data_reading,
+ _speed));
- UpdateStatus?.Invoke($"Setting speed to {(_speed == 0xFFFF ? "MAX for data reading" : $"{_speed}x")
- }.");
+ UpdateStatus?.Invoke(_speed == 0xFFFF ? Localization.Core.Setting_speed_to_MAX_for_data_reading
+ : string.Format(Localization.Core.Setting_speed_to_0_x_for_data_reading,
+ _speed));
_speed *= _speedMultiplier;
@@ -268,8 +270,9 @@ partial class Dump
currentSpeed > 0)
minSpeed = currentSpeed;
- UpdateProgress?.Invoke($"Reading sector {i} of {blocks} ({currentSpeed:F3} MiB/sec.)", (long)i,
- (long)blocks);
+ UpdateProgress?.
+ Invoke(string.Format(Localization.Core.Reading_sector_0_of_1_2_MiB_sec, i, blocks, currentSpeed),
+ (long)i, (long)blocks);
if(crossingLeadOut &&
failedCrossingLeadOut &&
@@ -419,8 +422,9 @@ partial class Dump
{
for(uint r = 0; r < blocksToRead; r++)
{
- UpdateProgress?.Invoke($"Reading sector {i + r} of {blocks} ({currentSpeed:F3} MiB/sec.)",
- (long)i + r, (long)blocks);
+ UpdateProgress?.
+ Invoke(string.Format(Localization.Core.Reading_sector_0_of_1_2_MiB_sec, i + r, blocks, currentSpeed),
+ (long)i + r, (long)blocks);
if(_supportsPlextorD8)
{
@@ -585,11 +589,13 @@ partial class Dump
_resume.BadBlocks.Add(i + r);
- AaruConsole.DebugWriteLine("Dump-Media", "READ error:\n{0}", Sense.PrettifySense(senseBuf));
+ AaruConsole.DebugWriteLine("Dump-Media", Localization.Core.READ_error_0,
+ Sense.PrettifySense(senseBuf));
+
mhddLog.Write(i + r, cmdDuration < 500 ? 65535 : cmdDuration);
- ibgLog.Write(i + r, 0);
- _dumpLog.WriteLine("Skipping {0} blocks from errored block {1}.", 1, i + r);
+ ibgLog.Write(i + r, 0);
+ _dumpLog.WriteLine(Localization.Core.Skipping_0_blocks_from_errored_block_1, 1, i + r);
newTrim = true;
}
@@ -761,11 +767,11 @@ partial class Dump
for(ulong b = i; b < i + _skip; b++)
_resume.BadBlocks.Add(b);
- AaruConsole.DebugWriteLine("Dump-Media", "READ error:\n{0}", Sense.PrettifySense(senseBuf));
+ AaruConsole.DebugWriteLine("Dump-Media", Localization.Core.READ_error_0, Sense.PrettifySense(senseBuf));
mhddLog.Write(i, cmdDuration < 500 ? 65535 : cmdDuration);
ibgLog.Write(i, 0);
- _dumpLog.WriteLine("Skipping {0} blocks from errored block {1}.", _skip, i);
+ _dumpLog.WriteLine(Localization.Core.Skipping_0_blocks_from_errored_block_1, _skip, i);
i += _skip - blocksToRead;
newTrim = true;
}
@@ -791,7 +797,7 @@ partial class Dump
if(!failedCrossingLeadOut)
return;
- _dumpLog.WriteLine("Failed crossing into Lead-Out, dump may not be correct.");
- UpdateStatus?.Invoke("Failed crossing into Lead-Out, dump may not be correct.");
+ _dumpLog.WriteLine(Localization.Core.Failed_crossing_into_Lead_Out);
+ UpdateStatus?.Invoke(Localization.Core.Failed_crossing_into_Lead_Out);
}
}
\ No newline at end of file
diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/Dump.cs b/Aaru.Core/Devices/Dumping/CompactDisc/Dump.cs
index f9bc1174d..045f4fdfe 100644
--- a/Aaru.Core/Devices/Dumping/CompactDisc/Dump.cs
+++ b/Aaru.Core/Devices/Dumping/CompactDisc/Dump.cs
@@ -126,8 +126,8 @@ sealed partial class Dump
if(_dumpRaw)
{
- _dumpLog.WriteLine("Raw CD dumping not yet implemented");
- StoppingErrorMessage?.Invoke("Raw CD dumping not yet implemented");
+ _dumpLog.WriteLine(Localization.Core.Raw_CD_dumping_not_yet_implemented);
+ StoppingErrorMessage?.Invoke(Localization.Core.Raw_CD_dumping_not_yet_implemented);
return;
}
@@ -137,8 +137,8 @@ sealed partial class Dump
if(tracks is null)
{
- _dumpLog.WriteLine("Could not get tracks!");
- StoppingErrorMessage?.Invoke("Could not get tracks!");
+ _dumpLog.WriteLine(Localization.Core.Could_not_get_tracks);
+ StoppingErrorMessage?.Invoke(Localization.Core.Could_not_get_tracks);
return;
}
@@ -172,10 +172,11 @@ sealed partial class Dump
desiredSubchannel = MmcSubchannel.Raw;
else
{
- _dumpLog.WriteLine("Drive does not support the requested subchannel format, not continuing...");
+ _dumpLog.WriteLine(Localization.Core.
+ Drive_does_not_support_the_requested_subchannel_format_not_continuing);
- StoppingErrorMessage?.
- Invoke("Drive does not support the requested subchannel format, not continuing...");
+ StoppingErrorMessage?.Invoke(Localization.Core.
+ Drive_does_not_support_the_requested_subchannel_format_not_continuing);
return;
}
@@ -188,10 +189,11 @@ sealed partial class Dump
desiredSubchannel = MmcSubchannel.Q16;
else
{
- _dumpLog.WriteLine("Drive does not support the requested subchannel format, not continuing...");
+ _dumpLog.WriteLine(Localization.Core.
+ Drive_does_not_support_the_requested_subchannel_format_not_continuing);
- StoppingErrorMessage?.
- Invoke("Drive does not support the requested subchannel format, not continuing...");
+ StoppingErrorMessage?.Invoke(Localization.Core.
+ Drive_does_not_support_the_requested_subchannel_format_not_continuing);
return;
}
@@ -202,10 +204,11 @@ sealed partial class Dump
desiredSubchannel = MmcSubchannel.Q16;
else
{
- _dumpLog.WriteLine("Drive does not support the requested subchannel format, not continuing...");
+ _dumpLog.WriteLine(Localization.Core.
+ Drive_does_not_support_the_requested_subchannel_format_not_continuing);
- StoppingErrorMessage?.
- Invoke("Drive does not support the requested subchannel format, not continuing...");
+ StoppingErrorMessage?.Invoke(Localization.Core.
+ Drive_does_not_support_the_requested_subchannel_format_not_continuing);
return;
}
@@ -227,13 +230,15 @@ sealed partial class Dump
{
if(_force || _subchannel == DumpSubchannel.None)
{
- _dumpLog.WriteLine("Output format does not support subchannels, continuing...");
- UpdateStatus?.Invoke("Output format does not support subchannels, continuing...");
+ _dumpLog.WriteLine(Localization.Core.Output_format_does_not_support_subchannels_continuing);
+ UpdateStatus?.Invoke(Localization.Core.Output_format_does_not_support_subchannels_continuing);
}
else
{
- _dumpLog.WriteLine("Output format does not support subchannels, not continuing...");
- StoppingErrorMessage?.Invoke("Output format does not support subchannels, not continuing...");
+ _dumpLog.WriteLine(Localization.Core.Output_format_does_not_support_subchannels_not_continuing);
+
+ StoppingErrorMessage?.Invoke(Localization.Core.
+ Output_format_does_not_support_subchannels_not_continuing);
return;
}
@@ -244,8 +249,8 @@ sealed partial class Dump
switch(supportedSubchannel)
{
case MmcSubchannel.None:
- _dumpLog.WriteLine("Checking if drive supports reading without subchannel...");
- UpdateStatus?.Invoke("Checking if drive supports reading without subchannel...");
+ _dumpLog.WriteLine(Localization.Core.Checking_if_drive_supports_reading_without_subchannel);
+ UpdateStatus?.Invoke(Localization.Core.Checking_if_drive_supports_reading_without_subchannel);
readcd = !_dev.ReadCd(out cmdBuf, out _, firstLba, sectorSize, 1, MmcSectorTypes.AllTypes, false, false,
true, MmcHeaderCodes.AllHeaders, true, true, MmcErrorField.None,
@@ -253,26 +258,26 @@ sealed partial class Dump
if(!readcd)
{
- _dumpLog.WriteLine("Drive does not support READ CD, trying SCSI READ commands...");
- ErrorMessage?.Invoke("Drive does not support READ CD, trying SCSI READ commands...");
+ _dumpLog.WriteLine(Localization.Core.Drive_does_not_support_READ_CD_trying_SCSI_READ_commands);
+ ErrorMessage?.Invoke(Localization.Core.Drive_does_not_support_READ_CD_trying_SCSI_READ_commands);
- _dumpLog.WriteLine("Checking if drive supports READ(6)...");
- UpdateStatus?.Invoke("Checking if drive supports READ(6)...");
+ _dumpLog.WriteLine(Localization.Core.Checking_if_drive_supports_READ_6);
+ UpdateStatus?.Invoke(Localization.Core.Checking_if_drive_supports_READ_6);
read6 = !_dev.Read6(out cmdBuf, out _, firstLba, 2048, 1, _dev.Timeout, out _);
- _dumpLog.WriteLine("Checking if drive supports READ(10)...");
- UpdateStatus?.Invoke("Checking if drive supports READ(10)...");
+ _dumpLog.WriteLine(Localization.Core.Checking_if_drive_supports_READ_10);
+ UpdateStatus?.Invoke(Localization.Core.Checking_if_drive_supports_READ_10);
read10 = !_dev.Read10(out cmdBuf, out _, 0, false, true, false, false, firstLba, 2048, 0, 1,
_dev.Timeout, out _);
- _dumpLog.WriteLine("Checking if drive supports READ(12)...");
- UpdateStatus?.Invoke("Checking if drive supports READ(12)...");
+ _dumpLog.WriteLine(Localization.Core.Checking_if_drive_supports_READ_12);
+ UpdateStatus?.Invoke(Localization.Core.Checking_if_drive_supports_READ_12);
read12 = !_dev.Read12(out cmdBuf, out _, 0, false, true, false, false, firstLba, 2048, 0, 1, false,
_dev.Timeout, out _);
- _dumpLog.WriteLine("Checking if drive supports READ(16)...");
- UpdateStatus?.Invoke("Checking if drive supports READ(16)...");
+ _dumpLog.WriteLine(Localization.Core.Checking_if_drive_supports_READ_16);
+ UpdateStatus?.Invoke(Localization.Core.Checking_if_drive_supports_READ_16);
read16 = !_dev.Read16(out cmdBuf, out _, 0, false, true, false, firstLba, 2048, 0, 1, false,
_dev.Timeout, out _);
@@ -280,57 +285,56 @@ sealed partial class Dump
switch(read6)
{
case false when !read10 && !read12 && !read16:
- _dumpLog.WriteLine("Cannot read from disc, not continuing...");
- StoppingErrorMessage?.Invoke("Cannot read from disc, not continuing...");
+ _dumpLog.WriteLine(Localization.Core.Cannot_read_from_disc_not_continuing);
+ StoppingErrorMessage?.Invoke(Localization.Core.Cannot_read_from_disc_not_continuing);
return;
case true:
- _dumpLog.WriteLine("Drive supports READ(6)...");
- UpdateStatus?.Invoke("Drive supports READ(6)...");
+ _dumpLog.WriteLine(Localization.Core.Drive_supports_READ_6);
+ UpdateStatus?.Invoke(Localization.Core.Drive_supports_READ_6);
break;
}
if(read10)
{
- _dumpLog.WriteLine("Drive supports READ(10)...");
- UpdateStatus?.Invoke("Drive supports READ(10)...");
+ _dumpLog.WriteLine(Localization.Core.Drive_supports_READ_10);
+ UpdateStatus?.Invoke(Localization.Core.Drive_supports_READ_10);
}
if(read12)
{
- _dumpLog.WriteLine("Drive supports READ(12)...");
- UpdateStatus?.Invoke("Drive supports READ(12)...");
+ _dumpLog.WriteLine(Localization.Core.Drive_supports_READ_12);
+ UpdateStatus?.Invoke(Localization.Core.Drive_supports_READ_12);
}
if(read16)
{
- _dumpLog.WriteLine("Drive supports READ(16)...");
- UpdateStatus?.Invoke("Drive supports READ(16)...");
+ _dumpLog.WriteLine(Localization.Core.Drive_supports_READ_16);
+ UpdateStatus?.Invoke(Localization.Core.Drive_supports_READ_16);
}
}
- _dumpLog.WriteLine("Drive can read without subchannel...");
- UpdateStatus?.Invoke("Drive can read without subchannel...");
+ _dumpLog.WriteLine(Localization.Core.Drive_can_read_without_subchannel);
+ UpdateStatus?.Invoke(Localization.Core.Drive_can_read_without_subchannel);
subSize = 0;
subType = TrackSubchannelType.None;
break;
case MmcSubchannel.Raw:
- _dumpLog.WriteLine("Full raw subchannel reading supported...");
- UpdateStatus?.Invoke("Full raw subchannel reading supported...");
+ _dumpLog.WriteLine(Localization.Core.Full_raw_subchannel_reading_supported);
+ UpdateStatus?.Invoke(Localization.Core.Full_raw_subchannel_reading_supported);
subType = TrackSubchannelType.Raw;
subSize = 96;
break;
case MmcSubchannel.Q16:
- _dumpLog.WriteLine("PQ subchannel reading supported...");
- _dumpLog.WriteLine("WARNING: If disc says CD+G, CD+EG, CD-MIDI, CD Graphics or CD Enhanced Graphics, dump will be incorrect!");
- UpdateStatus?.Invoke("PQ subchannel reading supported...");
+ _dumpLog.WriteLine(Localization.Core.PQ_subchannel_reading_supported);
+ _dumpLog.WriteLine(Localization.Core.WARNING_If_disc_says_CDG_CDEG_CDMIDI_dump_will_be_incorrect);
+ UpdateStatus?.Invoke(Localization.Core.PQ_subchannel_reading_supported);
- UpdateStatus?.
- Invoke("WARNING: If disc says CD+G, CD+EG, CD-MIDI, CD Graphics or CD Enhanced Graphics, dump will be incorrect!");
+ UpdateStatus?.Invoke(Localization.Core.WARNING_If_disc_says_CDG_CDEG_CDMIDI_dump_will_be_incorrect);
subType = TrackSubchannelType.Q16;
subSize = 16;
@@ -377,13 +381,13 @@ sealed partial class Dump
if(bcdSubchannel)
{
- _dumpLog.WriteLine("Drive returns subchannel in BCD...");
- UpdateStatus?.Invoke("Drive returns subchannel in BCD...");
+ _dumpLog.WriteLine(Localization.Core.Drive_returns_subchannel_in_BCD);
+ UpdateStatus?.Invoke(Localization.Core.Drive_returns_subchannel_in_BCD);
}
else
{
- _dumpLog.WriteLine("Drive does not returns subchannel in BCD...");
- UpdateStatus?.Invoke("Drive does not returns subchannel in BCD...");
+ _dumpLog.WriteLine(Localization.Core.Drive_does_not_returns_subchannel_in_BCD);
+ UpdateStatus?.Invoke(Localization.Core.Drive_does_not_returns_subchannel_in_BCD);
}
}
}
@@ -391,44 +395,42 @@ sealed partial class Dump
foreach(Track trk in tracks)
trk.SubchannelType = subType;
- _dumpLog.WriteLine("Calculating pregaps, can take some time...");
- UpdateStatus?.Invoke("Calculating pregaps, can take some time...");
+ _dumpLog.WriteLine(Localization.Core.Calculating_pregaps__can_take_some_time);
+ UpdateStatus?.Invoke(Localization.Core.Calculating_pregaps__can_take_some_time);
SolveTrackPregaps(_dev, _dumpLog, UpdateStatus, tracks, supportsPqSubchannel, supportsRwSubchannel, _dbDev,
out bool inexactPositioning, true);
if(inexactPositioning)
{
- _dumpLog.WriteLine("WARNING: The drive has returned incorrect Q positioning when calculating pregaps. A best effort has been tried but they may be incorrect.");
+ _dumpLog.WriteLine(Localization.Core.The_drive_has_returned_incorrect_Q_positioning_calculating_pregaps);
- UpdateStatus?.
- Invoke("WARNING: The drive has returned incorrect Q positioning when calculating pregaps. A best effort has been tried but they may be incorrect.");
+ UpdateStatus?.Invoke(Localization.Core.The_drive_has_returned_incorrect_Q_positioning_calculating_pregaps);
}
if(!outputOptical.OpticalCapabilities.HasFlag(OpticalImageCapabilities.CanStoreRawData))
{
if(!_force)
{
- _dumpLog.WriteLine("Output format does not support storing raw data, this may end in a loss of data, not continuing...");
+ _dumpLog.WriteLine(Localization.Core.Output_format_does_not_support_storing_raw_data_not_continuing);
- StoppingErrorMessage?.
- Invoke("Output format does not support storing raw data, this may end in a loss of data, not continuing...");
+ StoppingErrorMessage?.Invoke(Localization.Core.
+ Output_format_does_not_support_storing_raw_data_not_continuing);
return;
}
- _dumpLog.WriteLine("Output format does not support storing raw data, this may end in a loss of data, continuing...");
+ _dumpLog.WriteLine(Localization.Core.Output_format_does_not_support_storing_raw_data_continuing);
- ErrorMessage?.
- Invoke("Output format does not support storing raw data, this may end in a loss of data, continuing...");
+ ErrorMessage?.Invoke(Localization.Core.Output_format_does_not_support_storing_raw_data_continuing);
}
if(!outputOptical.OpticalCapabilities.HasFlag(OpticalImageCapabilities.CanStoreAudioTracks) &&
tracks.Any(track => track.Type == TrackType.Audio))
{
- _dumpLog.WriteLine("Output format does not support audio tracks, cannot continue...");
+ _dumpLog.WriteLine(Localization.Core.Output_format_does_not_support_audio_tracks_cannot_continue);
- StoppingErrorMessage?.Invoke("Output format does not support audio tracks, cannot continue...");
+ StoppingErrorMessage?.Invoke(Localization.Core.Output_format_does_not_support_audio_tracks_cannot_continue);
return;
}
@@ -439,18 +441,16 @@ sealed partial class Dump
{
if(!_force)
{
- _dumpLog.WriteLine("Output format does not support pregaps, this may end in a loss of data, not continuing...");
+ _dumpLog.WriteLine(Localization.Core.Output_format_does_not_support_pregaps_not_continuing);
- StoppingErrorMessage?.
- Invoke("Output format does not support pregaps, this may end in a loss of data, not continuing...");
+ StoppingErrorMessage?.Invoke(Localization.Core.Output_format_does_not_support_pregaps_not_continuing);
return;
}
- _dumpLog.WriteLine("Output format does not support pregaps, this may end in a loss of data, continuing...");
+ _dumpLog.WriteLine(Localization.Core.Output_format_does_not_support_pregaps_continuing);
- ErrorMessage?.
- Invoke("Output format does not support pregaps, this may end in a loss of data, continuing...");
+ ErrorMessage?.Invoke(Localization.Core.Output_format_does_not_support_pregaps_continuing);
}
for(int t = 1; t < tracks.Length; t++)
@@ -461,7 +461,7 @@ sealed partial class Dump
if(blocks == 0)
{
- StoppingErrorMessage?.Invoke("Cannot dump blank media.");
+ StoppingErrorMessage?.Invoke(Localization.Core.Cannot_dump_blank_media);
return;
}
@@ -472,7 +472,7 @@ sealed partial class Dump
if(currentTry == null ||
extents == null)
{
- StoppingErrorMessage?.Invoke("Could not process resume file, not continuing...");
+ StoppingErrorMessage?.Invoke(Localization.Core.Could_not_process_resume_file_not_continuing);
return;
}
@@ -486,10 +486,9 @@ sealed partial class Dump
// TODO: Disabled until 6.0
/*if(!_force)
{*/
- _dumpLog.WriteLine("Output format does not support sessions, this will end in a loss of data, not continuing...");
+ _dumpLog.WriteLine(Localization.Core.Output_format_does_not_support_sessions);
- StoppingErrorMessage?.
- Invoke("Output format does not support sessions, this will end in a loss of data, not continuing...");
+ StoppingErrorMessage?.Invoke(Localization.Core.Output_format_does_not_support_sessions);
return;
/*}
@@ -504,20 +503,22 @@ sealed partial class Dump
foreach(MediaTagType tag in mediaTags.Keys.Where(tag => !outputOptical.SupportedMediaTags.Contains(tag)))
if(_force)
{
- _dumpLog.WriteLine("Output format does not support {0}, continuing...", tag);
- ErrorMessage?.Invoke($"Output format does not support {tag}, continuing...");
+ _dumpLog.WriteLine(Localization.Core.Output_format_does_not_support_0_continuing, tag);
+ ErrorMessage?.Invoke(string.Format(Localization.Core.Output_format_does_not_support_0_continuing, tag));
}
else
{
- _dumpLog.WriteLine("Output format does not support {0}, not continuing...", tag);
- StoppingErrorMessage?.Invoke($"Output format does not support {tag}, not continuing...");
+ _dumpLog.WriteLine(Localization.Core.Output_format_does_not_support_0_not_continuing, tag);
+
+ StoppingErrorMessage?.
+ Invoke(string.Format(Localization.Core.Output_format_does_not_support_0_not_continuing, tag));
return;
}
if(leadOutStarts.Any())
{
- UpdateStatus?.Invoke("Solving lead-outs...");
+ UpdateStatus?.Invoke(Localization.Core.Solving_lead_outs);
foreach(KeyValuePair leadOuts in leadOutStarts)
foreach(Track trk in tracks.Where(trk => trk.Session == leadOuts.Key).
@@ -535,16 +536,16 @@ sealed partial class Dump
leadOutExtents.Add(dataExtentsArray[i].Item2 + 1, dataExtentsArray[i + 1].Item1 - 1);
}
- _dumpLog.WriteLine("Detecting disc type...");
- UpdateStatus?.Invoke("Detecting disc type...");
+ _dumpLog.WriteLine(Localization.Core.Detecting_disc_type);
+ UpdateStatus?.Invoke(Localization.Core.Detecting_disc_type);
MMC.DetectDiscType(ref dskType, sessions, toc, _dev, out hiddenTrack, out hiddenData, firstTrackLastSession,
blocks);
if(hiddenTrack || firstLba > 0)
{
- _dumpLog.WriteLine("Disc contains a hidden track...");
- UpdateStatus?.Invoke("Disc contains a hidden track...");
+ _dumpLog.WriteLine(Localization.Core.Disc_contains_a_hidden_track);
+ UpdateStatus?.Invoke(Localization.Core.Disc_contains_a_hidden_track);
List