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 trkList = new() { @@ -568,10 +569,9 @@ sealed partial class Dump if(tracks.Any(t => t.Type == TrackType.Audio) && desiredSubchannel != MmcSubchannel.Raw) { - _dumpLog.WriteLine("WARNING: If disc says CD+G, CD+EG, CD-MIDI, CD Graphics or CD Enhanced Graphics, dump will be incorrect!"); + _dumpLog.WriteLine(Localization.Core.WARNING_If_disc_says_CDG_CDEG_CDMIDI_dump_will_be_incorrect); - 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); } // Check mode for tracks @@ -584,8 +584,8 @@ sealed partial class Dump continue; } - _dumpLog.WriteLine("Checking mode for track {0}...", trk.Sequence); - UpdateStatus?.Invoke($"Checking mode for track {trk.Sequence}..."); + _dumpLog.WriteLine(Localization.Core.Checking_mode_for_track_0, trk.Sequence); + UpdateStatus?.Invoke(string.Format(Localization.Core.Checking_mode_for_track_0, trk.Sequence)); sense = _dev.ReadCd(out cmdBuf, out _, (uint)(trk.StartSector + trk.Pregap), blockSize, 1, MmcSectorTypes.AllTypes, false, false, true, MmcHeaderCodes.AllHeaders, true, true, @@ -593,9 +593,10 @@ sealed partial class Dump if(sense) { - _dumpLog.WriteLine("Unable to guess mode for track {0}, continuing...", trk.Sequence); + _dumpLog.WriteLine(Localization.Core.Unable_to_guess_mode_for_track_0_continuing, trk.Sequence); - UpdateStatus?.Invoke($"Unable to guess mode for track {trk.Sequence}, continuing..."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Unable_to_guess_mode_for_track_0_continuing, + trk.Sequence)); continue; } @@ -625,8 +626,8 @@ sealed partial class Dump { case 1: case 0x61: // Scrambled - UpdateStatus?.Invoke($"Track {trk.Sequence} is MODE1"); - _dumpLog.WriteLine("Track {0} is MODE1", trk.Sequence); + UpdateStatus?.Invoke(string.Format(Localization.Core.Track_0_is_MODE1, trk.Sequence)); + _dumpLog.WriteLine(Localization.Core.Track_0_is_MODE1, trk.Sequence); trk.Type = TrackType.CdMode1; break; @@ -634,8 +635,8 @@ sealed partial class Dump case 0x62: // Scrambled if(dskType is MediaType.CDI or MediaType.CDIREADY) { - UpdateStatus?.Invoke($"Track {trk.Sequence} is MODE2"); - _dumpLog.WriteLine("Track {0} is MODE2", trk.Sequence); + UpdateStatus?.Invoke(string.Format(Localization.Core.Track_0_is_MODE2, trk.Sequence)); + _dumpLog.WriteLine(Localization.Core.Track_0_is_MODE2, trk.Sequence); trk.Type = TrackType.CdMode2Formless; break; @@ -643,15 +644,15 @@ sealed partial class Dump if((cmdBuf[0x012] & 0x20) == 0x20) // mode 2 form 2 { - UpdateStatus?.Invoke($"Track {trk.Sequence} is MODE2 FORM 2"); - _dumpLog.WriteLine("Track {0} is MODE2 FORM 2", trk.Sequence); + UpdateStatus?.Invoke(string.Format(Localization.Core.Track_0_is_MODE2_FORM_2, trk.Sequence)); + _dumpLog.WriteLine(Localization.Core.Track_0_is_MODE2_FORM_2, trk.Sequence); trk.Type = TrackType.CdMode2Form2; break; } - UpdateStatus?.Invoke($"Track {trk.Sequence} is MODE2 FORM 1"); - _dumpLog.WriteLine("Track {0} is MODE2 FORM 1", trk.Sequence); + UpdateStatus?.Invoke(string.Format(Localization.Core.Track_0_is_MODE2_FORM_1, trk.Sequence)); + _dumpLog.WriteLine(Localization.Core.Track_0_is_MODE2_FORM_1, trk.Sequence); trk.Type = TrackType.CdMode2Form1; // These media type specifications do not legally allow mode 2 tracks to be present @@ -660,8 +661,10 @@ sealed partial class Dump break; default: - UpdateStatus?.Invoke($"Track {trk.Sequence} is unknown mode {cmdBuf[15]}"); - _dumpLog.WriteLine("Track {0} is unknown mode {1}", trk.Sequence, cmdBuf[15]); + UpdateStatus?.Invoke(string.Format(Localization.Core.Track_0_is_unknown_mode_1, trk.Sequence, + cmdBuf[15])); + + _dumpLog.WriteLine(Localization.Core.Track_0_is_unknown_mode_1, trk.Sequence, cmdBuf[15]); break; } @@ -671,24 +674,30 @@ sealed partial class Dump { if(tracks.Length > 1) { - StoppingErrorMessage?.Invoke("Output format does not support more than 1 track, not continuing..."); - _dumpLog.WriteLine("Output format does not support more than 1 track, not continuing..."); + StoppingErrorMessage?.Invoke(Localization.Core. + Output_format_does_not_support_more_than_1_track_not_continuing); + + _dumpLog.WriteLine(Localization.Core.Output_format_does_not_support_more_than_1_track_not_continuing); return; } if(tracks.Any(t => t.Type == TrackType.Audio)) { - StoppingErrorMessage?.Invoke("Output format does not support audio tracks, not continuing..."); - _dumpLog.WriteLine("Output format does not support audio tracks, not continuing..."); + StoppingErrorMessage?.Invoke(Localization.Core. + Output_format_does_not_support_audio_tracks_not_continuing); + + _dumpLog.WriteLine(Localization.Core.Output_format_does_not_support_audio_tracks_not_continuing); return; } if(tracks.Any(t => t.Type != TrackType.CdMode1)) { - StoppingErrorMessage?.Invoke("Output format only supports MODE 1 tracks, not continuing..."); - _dumpLog.WriteLine("Output format only supports MODE 1 tracks, not continuing..."); + StoppingErrorMessage?.Invoke(Localization.Core. + Output_format_only_supports_MODE_1_tracks_not_continuing); + + _dumpLog.WriteLine(Localization.Core.Output_format_only_supports_MODE_1_tracks_not_continuing); return; } @@ -702,15 +711,19 @@ sealed partial class Dump { if(_force) { - _dumpLog.WriteLine("Output format does not support CD first track pregap, continuing..."); - ErrorMessage?.Invoke("Output format does not support CD first track pregap, continuing..."); + _dumpLog.WriteLine(Localization.Core. + Output_format_does_not_support_CD_first_track_pregap_continuing); + + ErrorMessage?.Invoke(Localization.Core. + Output_format_does_not_support_CD_first_track_pregap_continuing); } else { - _dumpLog.WriteLine("Output format does not support CD first track pregap, not continuing..."); + _dumpLog.WriteLine(Localization.Core. + Output_format_does_not_support_CD_first_track_pregap_not_continuing); - StoppingErrorMessage?. - Invoke("Output format does not support CD first track pregap, not continuing..."); + StoppingErrorMessage?.Invoke(Localization.Core. + Output_format_does_not_support_CD_first_track_pregap_not_continuing); return; } @@ -769,8 +782,11 @@ sealed partial class Dump if(_dev.Error || sense) { - _dumpLog.WriteLine("Device error {0} trying to guess ideal transfer length.", _dev.LastError); - StoppingErrorMessage?.Invoke($"Device error {_dev.LastError} trying to guess ideal transfer length."); + _dumpLog.WriteLine(Localization.Core.Device_error_0_trying_to_guess_ideal_transfer_length, _dev.LastError); + + StoppingErrorMessage?. + Invoke(string.Format(Localization.Core.Device_error_0_trying_to_guess_ideal_transfer_length, + _dev.LastError)); } bool cdiWithHiddenTrack1 = false; @@ -786,19 +802,22 @@ sealed partial class Dump if(_dumpFirstTrackPregap && readcd) ReadCdFirstTrackPregap(blockSize, ref currentSpeed, mediaTags, supportedSubchannel, ref totalDuration); - _dumpLog.WriteLine("Reading {0} sectors at a time.", _maximumReadable); - _dumpLog.WriteLine("Device reports {0} blocks ({1} bytes).", blocks, blocks * blockSize); - _dumpLog.WriteLine("Device can read {0} blocks at a time.", _maximumReadable); - _dumpLog.WriteLine("Device reports {0} bytes per logical block.", blockSize); - _dumpLog.WriteLine("SCSI device type: {0}.", _dev.ScsiType); - _dumpLog.WriteLine("Media identified as {0}.", dskType); + _dumpLog.WriteLine(Localization.Core.Reading_0_sectors_at_a_time, _maximumReadable); + _dumpLog.WriteLine(Localization.Core.Device_reports_0_blocks_1_bytes, blocks, blocks * blockSize); + _dumpLog.WriteLine(Localization.Core.Device_can_read_0_blocks_at_a_time, _maximumReadable); + _dumpLog.WriteLine(Localization.Core.Device_reports_0_bytes_per_logical_block, blockSize); + _dumpLog.WriteLine(Localization.Core.SCSI_device_type_0, _dev.ScsiType); + _dumpLog.WriteLine(Localization.Core.Media_identified_as_0, dskType); - UpdateStatus?.Invoke($"Reading {_maximumReadable} sectors at a time."); - UpdateStatus?.Invoke($"Device reports {blocks} blocks ({blocks * blockSize} bytes)."); - UpdateStatus?.Invoke($"Device can read {_maximumReadable} blocks at a time."); - UpdateStatus?.Invoke($"Device reports {blockSize} bytes per logical block."); - UpdateStatus?.Invoke($"SCSI device type: {_dev.ScsiType}."); - UpdateStatus?.Invoke($"Media identified as {dskType}."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Reading_0_sectors_at_a_time, _maximumReadable)); + + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_blocks_1_bytes, blocks, + blocks * blockSize)); + + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_can_read_0_blocks_at_a_time, _maximumReadable)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_bytes_per_logical_block, blockSize)); + UpdateStatus?.Invoke(string.Format(Localization.Core.SCSI_device_type_0, _dev.ScsiType)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Media_identified_as_0, dskType)); ret = outputOptical.Create(_outputPath, dskType, _formatOptions, blocks, supportsLongSectors ? blockSize : 2048); @@ -806,11 +825,11 @@ sealed 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(outputOptical.ErrorMessage); - StoppingErrorMessage?.Invoke("Error creating output image, not continuing." + Environment.NewLine + - outputOptical.ErrorMessage); + StoppingErrorMessage?.Invoke(Localization.Core.Error_creating_output_image_not_continuing + + Environment.NewLine + outputOptical.ErrorMessage); return; } @@ -847,11 +866,11 @@ sealed partial class Dump if(!ret && desiredSubchannel == MmcSubchannel.None) { - _dumpLog.WriteLine("Error sending tracks to output image, not continuing."); + _dumpLog.WriteLine(Localization.Core.Error_sending_tracks_to_output_image_not_continuing); _dumpLog.WriteLine(outputOptical.ErrorMessage); - StoppingErrorMessage?.Invoke("Error sending tracks to output image, not continuing." + Environment.NewLine + - outputOptical.ErrorMessage); + StoppingErrorMessage?.Invoke(Localization.Core.Error_sending_tracks_to_output_image_not_continuing + + Environment.NewLine + outputOptical.ErrorMessage); return; } @@ -860,13 +879,17 @@ sealed partial class Dump if(desiredSubchannel != MmcSubchannel.None && !outputOptical.OpticalCapabilities.HasFlag(OpticalImageCapabilities.CanStoreSubchannelRw)) { - _dumpLog.WriteLine("Output image does not support subchannels, {0}continuing...", _force ? "" : "not "); - if(_force) - ErrorMessage?.Invoke("Output image does not support subchannels, continuing..."); + { + _dumpLog.WriteLine(Localization.Core.Output_image_does_not_support_subchannels_continuing); + ErrorMessage?.Invoke(Localization.Core.Output_image_does_not_support_subchannels_continuing); + } else { - StoppingErrorMessage?.Invoke("Output image does not support subchannels, not continuing..."); + _dumpLog.WriteLine(Localization.Core.Output_image_does_not_support_subchannels_not_continuing); + + StoppingErrorMessage?.Invoke(Localization.Core. + Output_image_does_not_support_subchannels_not_continuing); return; } @@ -874,7 +897,9 @@ sealed partial class Dump if(supportedSubchannel != MmcSubchannel.None) { - _dumpLog.WriteLine($"Creating subchannel log in {_outputPrefix + ".sub.log"}"); + _dumpLog.WriteLine(string.Format(Localization.Core.Creating_subchannel_log_in_0, + _outputPrefix + ".sub.log")); + subLog = new SubchannelLog(_outputPrefix + ".sub.log", bcdSubchannel); } @@ -886,8 +911,8 @@ sealed partial class Dump if(track is null) continue; - _dumpLog.WriteLine("Setting flags for track {0}...", track.Sequence); - UpdateStatus?.Invoke($"Setting flags for track {track.Sequence}..."); + _dumpLog.WriteLine(Localization.Core.Setting_flags_for_track_0, track.Sequence); + UpdateStatus?.Invoke(string.Format(Localization.Core.Setting_flags_for_track_0, track.Sequence)); outputOptical.WriteSectorTag(new[] { @@ -904,8 +929,8 @@ sealed partial class Dump mcn != null && mcn != "0000000000000") { - UpdateStatus?.Invoke($"Found Media Catalogue Number: {mcn}"); - _dumpLog.WriteLine("Found Media Catalogue Number: {0}", mcn); + UpdateStatus?.Invoke(string.Format(Localization.Core.Found_Media_Catalogue_Number_0, mcn)); + _dumpLog.WriteLine(Localization.Core.Found_Media_Catalogue_Number_0, mcn); } else mcn = null; @@ -922,8 +947,8 @@ sealed partial class Dump isrcs[(byte)trk.Sequence] = isrc; - UpdateStatus?.Invoke($"Found ISRC for track {trk.Sequence}: {isrc}"); - _dumpLog.WriteLine($"Found ISRC for track {trk.Sequence}: {isrc}"); + UpdateStatus?.Invoke(string.Format(Localization.Core.Found_ISRC_for_track_0_1, trk.Sequence, isrc)); + _dumpLog.WriteLine(string.Format(Localization.Core.Found_ISRC_for_track_0_1, trk.Sequence, isrc)); } if(supportedSubchannel != MmcSubchannel.None && @@ -943,8 +968,8 @@ sealed 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); } if(_skip < _maximumReadable) @@ -952,8 +977,8 @@ sealed partial class Dump #if DEBUG foreach(Track trk in tracks) - UpdateStatus?.Invoke($"Track {trk.Sequence} starts at LBA {trk.StartSector} and ends at LBA {trk.EndSector - }"); + UpdateStatus?.Invoke(string.Format(Localization.Core.Track_0_starts_at_LBA_1_and_ends_at_LBA_2, + trk.Sequence, trk.StartSector, trk.EndSector)); #endif // Check offset @@ -962,26 +987,30 @@ sealed partial class Dump if(tracks.All(t => t.Type != TrackType.Audio)) { // No audio tracks so no need to fix offset - _dumpLog.WriteLine("No audio tracks, disabling offset fix."); - UpdateStatus.Invoke("No audio tracks, disabling offset fix."); + _dumpLog.WriteLine(Localization.Core.No_audio_tracks_disabling_offset_fix); + UpdateStatus.Invoke(Localization.Core.No_audio_tracks_disabling_offset_fix); _fixOffset = false; } if(!readcd) { - _dumpLog.WriteLine("READ CD command is not supported, disabling offset fix. Dump may not be correct."); + _dumpLog.WriteLine(Localization.Core. + READ_CD_command_is_not_supported_disabling_offset_fix_Dump_may_not_be_correct); - UpdateStatus?. - Invoke("READ CD command is not supported, disabling offset fix. Dump may not be correct."); + UpdateStatus?.Invoke(Localization.Core. + READ_CD_command_is_not_supported_disabling_offset_fix_Dump_may_not_be_correct); _fixOffset = false; } } else if(tracks.Any(t => t.Type == TrackType.Audio)) { - _dumpLog.WriteLine("There are audio tracks and offset fixing is disabled, dump may not be correct."); - UpdateStatus?.Invoke("There are audio tracks and offset fixing is disabled, dump may not be correct."); + _dumpLog.WriteLine(Localization.Core. + There_are_audio_tracks_and_offset_fixing_is_disabled_dump_may_not_be_correct); + + UpdateStatus?.Invoke(Localization.Core. + There_are_audio_tracks_and_offset_fixing_is_disabled_dump_may_not_be_correct); } // Search for read offset in main database @@ -997,16 +1026,16 @@ sealed partial class Dump { if(driveOffset is null) { - _dumpLog.WriteLine("Drive reading offset not found in database."); - UpdateStatus?.Invoke("Drive reading offset not found in database."); - _dumpLog.WriteLine("Disc offset cannot be calculated."); - UpdateStatus?.Invoke("Disc offset cannot be calculated."); + _dumpLog.WriteLine(Localization.Core.Drive_reading_offset_not_found_in_database); + UpdateStatus?.Invoke(Localization.Core.Drive_reading_offset_not_found_in_database); + _dumpLog.WriteLine(Localization.Core.Disc_offset_cannot_be_calculated); + UpdateStatus?.Invoke(Localization.Core.Disc_offset_cannot_be_calculated); if(tracks.Any(t => t.Type == TrackType.Audio)) { - _dumpLog.WriteLine("Dump may not be correct."); + _dumpLog.WriteLine(Localization.Core.Dump_may_not_be_correct); - UpdateStatus?.Invoke("Dump may not be correct."); + UpdateStatus?.Invoke(Localization.Core.Dump_may_not_be_correct); } if(_fixOffset) @@ -1014,11 +1043,14 @@ sealed partial class Dump } else { - _dumpLog.WriteLine($"Drive reading offset is {driveOffset} bytes ({driveOffset / 4} samples)."); - UpdateStatus?.Invoke($"Drive reading offset is {driveOffset} bytes ({driveOffset / 4} samples)."); + _dumpLog.WriteLine(string.Format(Localization.Core.Drive_reading_offset_is_0_bytes_1_samples, + driveOffset, driveOffset / 4)); - _dumpLog.WriteLine("Disc write offset is unknown, dump may not be correct."); - UpdateStatus?.Invoke("Disc write offset is unknown, dump may not be correct."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Drive_reading_offset_is_0_bytes_1_samples, + driveOffset, driveOffset / 4)); + + _dumpLog.WriteLine(Localization.Core.Disc_write_offset_is_unknown_dump_may_not_be_correct); + UpdateStatus?.Invoke(Localization.Core.Disc_write_offset_is_unknown_dump_may_not_be_correct); offsetBytes = driveOffset.Value; @@ -1044,25 +1076,31 @@ sealed partial class Dump if(driveOffset is null) { - _dumpLog.WriteLine("Drive reading offset not found in database."); - UpdateStatus?.Invoke("Drive reading offset not found in database."); + _dumpLog.WriteLine(Localization.Core.Drive_reading_offset_not_found_in_database); + UpdateStatus?.Invoke(Localization.Core.Drive_reading_offset_not_found_in_database); - _dumpLog.WriteLine($"Combined disc and drive offsets are {offsetBytes} bytes ({offsetBytes / 4 - } samples)."); + _dumpLog.WriteLine(string.Format(Localization.Core.Combined_disc_and_drive_offset_are_0_bytes_1_samples, + offsetBytes, offsetBytes / 4)); - UpdateStatus?.Invoke($"Combined disc and drive offsets are {offsetBytes} bytes ({offsetBytes / 4 - } samples)."); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Combined_disc_and_drive_offset_are_0_bytes_1_samples, + offsetBytes, offsetBytes / 4)); } else { - _dumpLog.WriteLine($"Drive reading offset is {driveOffset} bytes ({driveOffset / 4} samples)."); - UpdateStatus?.Invoke($"Drive reading offset is {driveOffset} bytes ({driveOffset / 4} samples)."); + _dumpLog.WriteLine(string.Format(Localization.Core.Drive_reading_offset_is_0_bytes_1_samples, + driveOffset, driveOffset / 4)); + + UpdateStatus?.Invoke(string.Format(Localization.Core.Drive_reading_offset_is_0_bytes_1_samples, + driveOffset, driveOffset / 4)); discOffset = offsetBytes - driveOffset; - _dumpLog.WriteLine($"Disc offsets is {discOffset} bytes ({discOffset / 4} samples)"); + _dumpLog.WriteLine(string.Format(Localization.Core.Disc_offset_is_0_bytes_1_samples, discOffset, + discOffset / 4)); - UpdateStatus?.Invoke($"Disc offsets is {discOffset} bytes ({discOffset / 4} samples)"); + UpdateStatus?.Invoke(string.Format(Localization.Core.Disc_offset_is_0_bytes_1_samples, discOffset, + discOffset / 4)); } } @@ -1084,8 +1122,11 @@ sealed partial class Dump // Set speed if(_speedMultiplier >= 0) { - _dumpLog.WriteLine($"Setting speed to {(_speed == 0 ? "MAX for data reading" : $"{_speed}x")}."); - UpdateStatus?.Invoke($"Setting speed to {(_speed == 0 ? "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(_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; @@ -1106,19 +1147,22 @@ sealed partial class Dump if(!supportsLongSectors) { - _dumpLog.WriteLine("Dumping CD-i Ready requires the output image format to support long sectors."); + _dumpLog.WriteLine(Localization.Core. + Dumping_CD_i_Ready_requires_the_output_image_format_to_support_long_sectors); - StoppingErrorMessage?. - Invoke("Dumping CD-i Ready requires the output image format to support long sectors."); + StoppingErrorMessage?.Invoke(Localization.Core. + Dumping_CD_i_Ready_requires_the_output_image_format_to_support_long_sectors); return; } if(!readcd) { - _dumpLog.WriteLine("Dumping CD-i Ready requires the drive to support the READ CD command."); + _dumpLog.WriteLine(Localization.Core. + Dumping_CD_i_Ready_requires_the_drive_to_support_the_READ_CD_command); - StoppingErrorMessage?.Invoke("Dumping CD-i Ready requires the drive to support the READ CD command."); + StoppingErrorMessage?.Invoke(Localization.Core. + Dumping_CD_i_Ready_requires_the_drive_to_support_the_READ_CD_command); return; } @@ -1144,45 +1188,54 @@ sealed partial class Dump if(offsetBytes % sectorSize != 0) sectorsForOffset++; - _dumpLog.WriteLine("Enabling skipping CD-i Ready hole because drive returns data as audio."); + _dumpLog.WriteLine(Localization.Core. + Enabling_skipping_CD_i_Ready_hole_because_drive_returns_data_as_audio); - UpdateStatus?.Invoke("Enabling skipping CD-i Ready hole because drive returns data as audio."); + UpdateStatus?.Invoke(Localization.Core. + Enabling_skipping_CD_i_Ready_hole_because_drive_returns_data_as_audio); _skipCdireadyHole = true; if(driveOffset is null) { - _dumpLog.WriteLine("Drive reading offset not found in database."); - UpdateStatus?.Invoke("Drive reading offset not found in database."); + _dumpLog.WriteLine(Localization.Core.Drive_reading_offset_not_found_in_database); + UpdateStatus?.Invoke(Localization.Core.Drive_reading_offset_not_found_in_database); - _dumpLog.WriteLine($"Combined disc and drive offsets are {offsetBytes} bytes ({offsetBytes / 4 - } samples)."); + _dumpLog. + WriteLine(string. + Format(Localization.Core.Combined_disc_and_drive_offset_are_0_bytes_1_samples, + offsetBytes, offsetBytes / 4)); - UpdateStatus?.Invoke($"Combined disc and drive offsets are {offsetBytes} bytes ({offsetBytes / 4 - } samples)."); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Combined_disc_and_drive_offset_are_0_bytes_1_samples, + offsetBytes, offsetBytes / 4)); } else { - _dumpLog.WriteLine($"Drive reading offset is {driveOffset} bytes ({driveOffset / 4} samples)."); + _dumpLog.WriteLine(string.Format(Localization.Core.Drive_reading_offset_is_0_bytes_1_samples, + driveOffset, driveOffset / 4)); - UpdateStatus?.Invoke($"Drive reading offset is {driveOffset} bytes ({driveOffset / 4 - } samples)."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Drive_reading_offset_is_0_bytes_1_samples, + driveOffset, driveOffset / 4)); discOffset = offsetBytes - driveOffset; - _dumpLog.WriteLine($"Disc offsets is {discOffset} bytes ({discOffset / 4} samples)"); + _dumpLog.WriteLine(string.Format(Localization.Core.Disc_offset_is_0_bytes_1_samples, discOffset, + discOffset / 4)); - UpdateStatus?.Invoke($"Disc offsets is {discOffset} bytes ({discOffset / 4} samples)"); + UpdateStatus?.Invoke(string.Format(Localization.Core.Disc_offset_is_0_bytes_1_samples, + discOffset, discOffset / 4)); } } } if(!_skipCdireadyHole) { - _dumpLog.WriteLine("There will be thousand of errors between track 0 and track 1, that is normal and you can ignore them."); + _dumpLog.WriteLine(Localization.Core. + There_will_be_thousand_of_errors_between_track_0_and_track_1_that_is_normal_and_you_can_ignore_them); - UpdateStatus?. - Invoke("There will be thousand of errors between track 0 and track 1, that is normal and you can ignore them."); + UpdateStatus?.Invoke(Localization.Core. + There_will_be_thousand_of_errors_between_track_0_and_track_1_that_is_normal_and_you_can_ignore_them); } if(_skipCdireadyHole) @@ -1212,20 +1265,20 @@ sealed 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); TrimCdUserData(audioExtents, blockSize, currentTry, extents, newTrim, offsetBytes, read6, read10, read12, @@ -1259,7 +1312,7 @@ sealed partial class Dump { if(tag.Value is null) { - AaruConsole.ErrorWriteLine("Error: Tag type {0} is null, skipping...", tag.Key); + AaruConsole.ErrorWriteLine(Localization.Core.Error_Tag_type_0_is_null_skipping, tag.Key); continue; } @@ -1270,7 +1323,7 @@ sealed partial class Dump continue; // Cannot write tag to image - _dumpLog.WriteLine($"Cannot write tag {tag.Key}."); + _dumpLog.WriteLine(string.Format(Localization.Core.Cannot_write_tag_0, tag.Key)); StoppingErrorMessage?.Invoke(outputOptical.ErrorMessage); return; @@ -1279,7 +1332,7 @@ sealed partial class Dump _resume.BadBlocks.Sort(); 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); currentTry.Extents = ExtentsConverter.ToMetadata(extents); @@ -1301,7 +1354,7 @@ sealed partial class Dump }; if(!outputOptical.SetMetadata(metadata)) - ErrorMessage?.Invoke("Error {0} setting metadata, continuing..." + Environment.NewLine + + ErrorMessage?.Invoke(Localization.Core.Error_0_setting_metadata + Environment.NewLine + outputOptical.ErrorMessage); outputOptical.SetDumpHardware(_resume.Tries); @@ -1315,15 +1368,15 @@ sealed partial class Dump if(!outputOptical.WriteSectorTag(Encoding.ASCII.GetBytes(isrc.Value), isrc.Key, SectorTagType.CdTrackIsrc)) continue; - UpdateStatus?.Invoke($"Setting ISRC for track {isrc.Key} to {isrc.Value}"); - _dumpLog.WriteLine("Setting ISRC for track {0} to {1}", isrc.Key, isrc.Value); + UpdateStatus?.Invoke(string.Format(Localization.Core.Setting_ISRC_for_track_0_to_1, isrc.Key, isrc.Value)); + _dumpLog.WriteLine(Localization.Core.Setting_ISRC_for_track_0_to_1, isrc.Key, isrc.Value); } if(mcn != null && outputOptical.WriteMediaTag(Encoding.ASCII.GetBytes(mcn), MediaTagType.CD_MCN)) { - UpdateStatus?.Invoke($"Setting disc Media Catalogue Number to {mcn}"); - _dumpLog.WriteLine("Setting disc Media Catalogue Number to {0}", mcn); + UpdateStatus?.Invoke(string.Format(Localization.Core.Setting_disc_Media_Catalogue_Number_to_0, mcn)); + _dumpLog.WriteLine(Localization.Core.Setting_disc_Media_Catalogue_Number_to_0, mcn); } foreach(Track trk in tracks) @@ -1348,18 +1401,20 @@ sealed partial class Dump outputOptical.SetTracks(tracks.ToList()); - _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; outputOptical.Close(); DateTime closeEnd = DateTime.Now; - UpdateStatus?.Invoke($"Closed in {(closeEnd - closeStart).TotalSeconds} seconds."); + + UpdateStatus?.Invoke(string.Format(Localization.Core.Closed_in_0_seconds, + (closeEnd - closeStart).TotalSeconds)); subLog?.Close(); if(_aborted) { - _dumpLog.WriteLine("Aborted!"); + _dumpLog.WriteLine(Localization.Core.Aborted); return; } @@ -1373,21 +1428,25 @@ sealed partial class Dump end = DateTime.UtcNow; UpdateStatus?.Invoke(""); - UpdateStatus?.Invoke($"Took a total of {(end - dumpStart).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 - dumpStart).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(string.Format(Localization.Core._0_sectors_could_not_be_read, _resume.BadBlocks.Count)); + + UpdateStatus?.Invoke(string.Format(Localization.Core._0_subchannels_could_not_be_read, + _resume.BadSubchannels.Count)); - UpdateStatus?.Invoke($"{_resume.BadBlocks.Count} sectors could not be read."); - UpdateStatus?.Invoke($"{_resume.BadSubchannels.Count} subchannels could not be read."); UpdateStatus?.Invoke(""); Statistics.AddMedia(dskType, true); diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/Error.cs b/Aaru.Core/Devices/Dumping/CompactDisc/Error.cs index 915447d16..7be1b079c 100644 --- a/Aaru.Core/Devices/Dumping/CompactDisc/Error.cs +++ b/Aaru.Core/Devices/Dumping/CompactDisc/Error.cs @@ -181,8 +181,8 @@ partial class Dump md6 = Modes.EncodeMode6(md, _dev.ScsiType); md10 = Modes.EncodeMode10(md, _dev.ScsiType); - UpdateStatus?.Invoke("Sending MODE SELECT to drive (return damaged blocks)."); - _dumpLog.WriteLine("Sending MODE SELECT to drive (return damaged blocks)."); + UpdateStatus?.Invoke(Localization.Core.Sending_MODE_SELECT_to_drive_return_damaged_blocks); + _dumpLog.WriteLine(Localization.Core.Sending_MODE_SELECT_to_drive_return_damaged_blocks); sense = _dev.ModeSelect(md6, out senseBuf, true, false, _dev.Timeout, out _); if(sense) @@ -190,12 +190,13 @@ partial class Dump if(sense) { - UpdateStatus?. - Invoke("Drive did not accept MODE SELECT command for persistent error reading, try another drive."); + UpdateStatus?.Invoke(Localization.Core. + Drive_did_not_accept_MODE_SELECT_command_for_persistent_error_reading); - AaruConsole.DebugWriteLine("Error: {0}", Sense.PrettifySense(senseBuf)); + AaruConsole.DebugWriteLine(Localization.Core.Error_0, Sense.PrettifySense(senseBuf)); - _dumpLog.WriteLine("Drive did not accept MODE SELECT command for persistent error reading, try another drive."); + _dumpLog.WriteLine(Localization.Core. + Drive_did_not_accept_MODE_SELECT_command_for_persistent_error_reading); } else runningPersistent = true; @@ -213,14 +214,25 @@ partial class Dump if(_aborted) { currentTry.Extents = ExtentsConverter.ToMetadata(extents); - _dumpLog.WriteLine("Aborted!"); + _dumpLog.WriteLine(Localization.Core.Aborted); break; } - PulseProgress?.Invoke(string.Format("Retrying sector {0}, pass {1}, {3}{2}", badSector, pass, - forward ? "forward" : "reverse", - runningPersistent ? "recovering partial data, " : "")); + if(forward) + PulseProgress?.Invoke(runningPersistent + ? 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(runningPersistent + ? 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)); Track track = tracks.OrderBy(t => t.StartSector).LastOrDefault(t => badSector >= t.StartSector); @@ -327,8 +339,11 @@ partial class Dump { _resume.BadBlocks.Remove(badSector); extents.Add(badSector); - UpdateStatus?.Invoke($"Correctly retried sector {badSector} in pass {pass}."); - _dumpLog.WriteLine("Correctly retried sector {0} in pass {1}.", badSector, pass); + + UpdateStatus?.Invoke(string.Format(Localization.Core.Correctly_retried_sector_0_in_pass_1, badSector, + pass)); + + _dumpLog.WriteLine(Localization.Core.Correctly_retried_sector_0_in_pass_1, badSector, pass); sectorsNotEvenPartial.Remove(badSector); } else @@ -421,7 +436,7 @@ partial class Dump md6 = Modes.EncodeMode6(md, _dev.ScsiType); md10 = Modes.EncodeMode10(md, _dev.ScsiType); - _dumpLog.WriteLine("Sending MODE SELECT to drive (ignore error correction)."); + _dumpLog.WriteLine(Localization.Core.Sending_MODE_SELECT_to_drive_ignore_error_correction); sense = _dev.ModeSelect(md6, out senseBuf, true, false, _dev.Timeout, out _); if(sense) @@ -440,12 +455,13 @@ partial class Dump if(_aborted) { currentTry.Extents = ExtentsConverter.ToMetadata(extents); - _dumpLog.WriteLine("Aborted!"); + _dumpLog.WriteLine(Localization.Core.Aborted); break; } - PulseProgress?.Invoke($"Trying to get partial data for sector {badSector}"); + PulseProgress?.Invoke(string.Format(Localization.Core.Trying_to_get_partial_data_for_sector_0, + badSector)); Track track = tracks.OrderBy(t => t.StartSector).LastOrDefault(t => badSector >= t.StartSector); @@ -466,7 +482,7 @@ partial class Dump continue; } - _dumpLog.WriteLine("Got partial data for sector {0} in pass {1}.", badSector, pass); + _dumpLog.WriteLine(Localization.Core.Got_partial_data_for_sector_0_in_pass_1, badSector, pass); if(supportedSubchannel != MmcSubchannel.None) { @@ -519,7 +535,7 @@ partial class Dump md6 = Modes.EncodeMode6(md, _dev.ScsiType); md10 = Modes.EncodeMode10(md, _dev.ScsiType); - _dumpLog.WriteLine("Sending MODE SELECT to drive (return device to previous status)."); + _dumpLog.WriteLine(Localization.Core.Sending_MODE_SELECT_to_drive_return_device_to_previous_status); sense = _dev.ModeSelect(md6, out senseBuf, true, false, _dev.Timeout, out _); if(sense) @@ -592,13 +608,16 @@ partial class Dump if(_aborted) { - _dumpLog.WriteLine("Aborted!"); + _dumpLog.WriteLine(Localization.Core.Aborted); break; } - PulseProgress?.Invoke($"Retrying sector {badSector} subchannel, pass {pass}, { - (forward ? "forward" : "reverse")}"); + PulseProgress?.Invoke(forward + ? string.Format(Localization.Core.Retrying_sector_0_subchannel_pass_1_forward, + badSector, pass) + : string.Format(Localization.Core.Retrying_sector_0_subchannel_pass_1_reverse, + badSector, pass)); uint startSector = badSector - 2; @@ -635,8 +654,10 @@ partial class Dump if(subchannelExtents.Contains(bs)) continue; - UpdateStatus?.Invoke($"Correctly retried sector {badSector} subchannel in pass {pass}."); - _dumpLog.WriteLine("Correctly retried sector {0} subchannel in pass {1}.", badSector, pass); + UpdateStatus?.Invoke(string.Format(Localization.Core.Correctly_retried_sector_0_subchannel_in_pass_1, + badSector, pass)); + + _dumpLog.WriteLine(Localization.Core.Correctly_retried_sector_0_subchannel_in_pass_1, badSector, pass); } if(pass < _retryPasses && diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/LeadOuts.cs b/Aaru.Core/Devices/Dumping/CompactDisc/LeadOuts.cs index 3d0437a84..02537cd70 100644 --- a/Aaru.Core/Devices/Dumping/CompactDisc/LeadOuts.cs +++ b/Aaru.Core/Devices/Dumping/CompactDisc/LeadOuts.cs @@ -93,8 +93,8 @@ partial class Dump byte[] senseBuf = null; var outputOptical = _outputPlugin as IWritableOpticalImage; - UpdateStatus?.Invoke("Reading lead-outs"); - _dumpLog.WriteLine("Reading lead-outs"); + UpdateStatus?.Invoke(Localization.Core.Reading_lead_outs); + _dumpLog.WriteLine(Localization.Core.Reading_lead_outs); InitProgress?.Invoke(); @@ -104,7 +104,7 @@ partial class Dump if(_aborted) { currentTry.Extents = ExtentsConverter.ToMetadata(extents); - _dumpLog.WriteLine("Aborted!"); + _dumpLog.WriteLine(Localization.Core.Aborted); break; } @@ -119,7 +119,8 @@ partial class Dump currentSpeed > 0) minSpeed = currentSpeed; - PulseProgress?.Invoke($"Reading sector {i} at lead-out ({currentSpeed:F3} MiB/sec.)"); + PulseProgress?.Invoke(string.Format(Localization.Core.Reading_sector_0_at_lead_out_1_MiB_sec, i, + currentSpeed)); if(readcd) { @@ -275,7 +276,7 @@ partial class Dump if(_aborted) { currentTry.Extents = ExtentsConverter.ToMetadata(extents); - _dumpLog.WriteLine("Aborted!"); + _dumpLog.WriteLine(Localization.Core.Aborted); break; } @@ -290,7 +291,8 @@ partial class Dump currentSpeed > 0) minSpeed = currentSpeed; - PulseProgress?.Invoke($"Reading sector {i} at lead-out ({currentSpeed:F3} MiB/sec.)"); + PulseProgress?.Invoke(string.Format(Localization.Core.Reading_sector_0_at_lead_out_1_MiB_sec, i, + currentSpeed)); if(readcd) { diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/Pregap.cs b/Aaru.Core/Devices/Dumping/CompactDisc/Pregap.cs index a551a3b5a..e40a0feb4 100644 --- a/Aaru.Core/Devices/Dumping/CompactDisc/Pregap.cs +++ b/Aaru.Core/Devices/Dumping/CompactDisc/Pregap.cs @@ -69,8 +69,8 @@ partial class Dump int firstTrackPregapSectorsGood = 0; var firstTrackPregapMs = new MemoryStream(); - _dumpLog.WriteLine("Reading first track pregap"); - UpdateStatus?.Invoke("Reading first track pregap"); + _dumpLog.WriteLine(Localization.Core.Reading_first_track_pregap); + UpdateStatus?.Invoke(Localization.Core.Reading_first_track_pregap); InitProgress?.Invoke(); timeSpeedStart = DateTime.UtcNow; @@ -79,14 +79,14 @@ partial class Dump { if(_aborted) { - _dumpLog.WriteLine("Aborted!"); - UpdateStatus?.Invoke("Aborted!"); + _dumpLog.WriteLine(Localization.Core.Aborted); + UpdateStatus?.Invoke(Localization.Core.Aborted); break; } - PulseProgress?.Invoke($"Trying to read first track pregap sector {firstTrackPregapBlock} ({currentSpeed - :F3} MiB/sec.)"); + PulseProgress?.Invoke(string.Format(Localization.Core.Trying_to_read_first_track_pregap_sector_0_1_MiB_sec, + firstTrackPregapBlock, currentSpeed)); // ReSharper disable IntVariableOverflowInUncheckedContext sense = _dev.ReadCd(out cmdBuf, out _, (uint)firstTrackPregapBlock, blockSize, 1, MmcSectorTypes.AllTypes, @@ -126,8 +126,11 @@ partial class Dump mediaTags.Add(MediaTagType.CD_FirstTrackPregap, firstTrackPregapMs.ToArray()); EndProgress?.Invoke(); - UpdateStatus?.Invoke($"Got {firstTrackPregapSectorsGood} first track pregap sectors."); - _dumpLog.WriteLine("Got {0} first track pregap sectors.", firstTrackPregapSectorsGood); + + UpdateStatus?.Invoke(string.Format(Localization.Core.Got_0_first_track_pregap_sectors, + firstTrackPregapSectorsGood)); + + _dumpLog.WriteLine(Localization.Core.Got_0_first_track_pregap_sectors, firstTrackPregapSectorsGood); firstTrackPregapMs.Close(); } @@ -175,17 +178,18 @@ partial class Dump AaruConsole.DebugWriteLine("Pregap calculator", bcd switch { - true => "Subchannel is BCD", - false => "Subchannel is not BCD", - _ => "Could not detect drive subchannel BCD" + true => Localization.Core.Subchannel_is_BCD, + false => Localization.Core.Subchannel_is_not_BCD, + _ => Localization.Core.Could_not_detect_drive_subchannel_BCD }); if(bcd is null) { - dumpLog?.WriteLine("Could not detect if drive subchannel is BCD or not, pregaps could not be calculated, dump may be incorrect..."); + dumpLog?.WriteLine(Localization.Core. + Could_not_detect_if_drive_subchannel_is_BCD_or_not_pregaps_could_not_be_calculated_dump_may_be_incorrect); - updateStatus?. - Invoke("Could not detect if drive subchannel is BCD or not, pregaps could not be calculated, dump may be incorrect..."); + updateStatus?.Invoke(Localization.Core. + Could_not_detect_if_drive_subchannel_is_BCD_or_not_pregaps_could_not_be_calculated_dump_may_be_incorrect); return; } @@ -202,7 +206,7 @@ partial class Dump // First track of each session has at least 150 sectors of pregap and is not always readable if(tracks.Where(trk => trk.Session == track.Session).MinBy(trk => trk.Sequence).Sequence == track.Sequence) { - AaruConsole.DebugWriteLine("Pregap calculator", "Skipping track {0}", track.Sequence); + AaruConsole.DebugWriteLine("Pregap calculator", Localization.Core.Skipping_track_0, track.Sequence); if(track.Sequence > 1) pregaps[track.Sequence] = 150; @@ -214,20 +218,21 @@ partial class Dump tracks[t - 1].Type == tracks[t].Type && dumping) { - AaruConsole.DebugWriteLine("Pregap calculator", "Skipping track {0}", track.Sequence); + AaruConsole.DebugWriteLine("Pregap calculator", Localization.Core.Skipping_track_0, track.Sequence); continue; } if(dumping && dev.Manufacturer.ToLowerInvariant().StartsWith("plextor", StringComparison.Ordinal)) { - AaruConsole.DebugWriteLine("Pregap calculator", "Skipping track {0} due to Plextor firmware bug", + AaruConsole.DebugWriteLine("Pregap calculator", + Localization.Core.Skipping_track_0_due_to_Plextor_firmware_bug, track.Sequence); continue; } - AaruConsole.DebugWriteLine("Pregap calculator", "Track {0}", track.Sequence); + AaruConsole.DebugWriteLine("Pregap calculator", Localization.Core.Track_0, track.Sequence); int lba = (int)track.StartSector - 1; bool pregapFound = false; @@ -248,8 +253,8 @@ partial class Dump if(sense) { - AaruConsole.DebugWriteLine("Pregap calculator", "LBA: {0}, Try {1}, Sense {2}", lba, retries + 1, - sense); + AaruConsole.DebugWriteLine("Pregap calculator", Localization.Core.LBA_0_Try_1_Sense_2, lba, + retries + 1, sense); continue; } @@ -260,7 +265,8 @@ partial class Dump CRC16CCITTContext.Data(subBuf, 10, out crc); AaruConsole.DebugWriteLine("Pregap calculator", - "LBA: {0}, Try {1}, Sense {2}, Q: {3:X2} {4:X2} {5:X2} {6:X2} {7:X2} {8:X2} {9:X2} {10:X2} {11:X2} {12:X2} CRC 0x{13:X2}{14:X2}, Calculated CRC: 0x{15:X2}{16:X2}", + Localization.Core. + LBA_0_Try_1_Sense_2_Q_3_4_5_6_7_8_9_10_11_12_CRC_13_14_Calculated_CRC_15_16, lba, retries + 1, sense, subBuf[0], subBuf[1], subBuf[2], subBuf[3], subBuf[4], subBuf[5], subBuf[6], subBuf[7], subBuf[8], subBuf[9], subBuf[10], subBuf[11], crc[0], crc[1]); @@ -300,7 +306,8 @@ partial class Dump if(crcOk) AaruConsole.DebugWriteLine("Pregap calculator", - "LBA: {0}, Try {1}, Sense {2}, Q (FIXED): {3:X2} {4:X2} {5:X2} {6:X2} {7:X2} {8:X2} {9:X2} {10:X2} {11:X2} {12:X2} CRC 0x{13:X2}{14:X2}, Calculated CRC: 0x{15:X2}{16:X2}", + Localization.Core. + LBA_0_Try_1_Sense_2_Q_FIXED_3_4_5_6_7_8_9_10_11_12_CRC_13_14_Calculated_CRC_15_16, lba, retries + 1, sense, subBuf[0], subBuf[1], subBuf[2], subBuf[3], subBuf[4], subBuf[5], subBuf[6], subBuf[7], subBuf[8], subBuf[9], subBuf[10], subBuf[11], crc[0], crc[1]); @@ -358,7 +365,8 @@ partial class Dump CRC16CCITTContext.Data(subBuf, 10, out crc); AaruConsole.DebugWriteLine("Pregap calculator", - "LBA: {0}, Try {1}, Sense {2}, Q: {3:X2} {4:X2} {5:X2} {6:X2} {7:X2} {8:X2} {9:X2} {10:X2} {11:X2} {12:X2} CRC 0x{13:X2}{14:X2}, Calculated CRC: 0x{15:X2}{16:X2}", + Localization.Core. + LBA_0_Try_1_Sense_2_Q_3_4_5_6_7_8_9_10_11_12_CRC_13_14_Calculated_CRC_15_16, lba, retries + 1, sense, subBuf[0], subBuf[1], subBuf[2], subBuf[3], subBuf[4], subBuf[5], subBuf[6], subBuf[7], subBuf[8], subBuf[9], subBuf[10], subBuf[11], crc[0], crc[1]); @@ -399,7 +407,8 @@ partial class Dump if(crcOk) { AaruConsole.DebugWriteLine("Pregap calculator", - "LBA: {0}, Try {1}, Sense {2}, Q (FIXED): {3:X2} {4:X2} {5:X2} {6:X2} {7:X2} {8:X2} {9:X2} {10:X2} {11:X2} {12:X2} CRC 0x{13:X2}{14:X2}, Calculated CRC: 0x{15:X2}{16:X2}", + Localization.Core. + LBA_0_Try_1_Sense_2_Q_FIXED_3_4_5_6_7_8_9_10_11_12_CRC_13_14_Calculated_CRC_15_16, lba, retries + 1, sense, subBuf[0], subBuf[1], subBuf[2], subBuf[3], subBuf[4], subBuf[5], subBuf[6], subBuf[7], subBuf[8], subBuf[9], subBuf[10], subBuf[11], crc[0], crc[1]); @@ -425,35 +434,42 @@ partial class Dump if((previousTrack.Type == TrackType.Audio && track.Type != TrackType.Audio) || (previousTrack.Type != TrackType.Audio && track.Type == TrackType.Audio)) { - dumpLog?. - WriteLine("Could not read subchannel for this track, supposing 150 sectors."); + dumpLog?.WriteLine(Localization.Core. + Could_not_read_subchannel_for_this_track_supposing_hundred_fifty_sectors); - updateStatus?. - Invoke("Could not read subchannel for this track, supposing 150 sectors."); + updateStatus?.Invoke(Localization.Core. + Could_not_read_subchannel_for_this_track_supposing_hundred_fifty_sectors); } else { - dumpLog?. - WriteLine("Could not read subchannel for this track, supposing 0 sectors."); + dumpLog?.WriteLine(Localization.Core. + Could_not_read_subchannel_for_this_track_supposing_zero_sectors); - updateStatus?. - Invoke("Could not read subchannel for this track, supposing 0 sectors."); + updateStatus?.Invoke(Localization.Core. + Could_not_read_subchannel_for_this_track_supposing_zero_sectors); } } else { - dumpLog?.WriteLine($"Could not read subchannel for this track, supposing { - pregaps[track.Sequence]} sectors."); + dumpLog?. + WriteLine(string. + Format(Localization.Core.Could_not_read_subchannel_for_this_track_supposing_0_sectors, + pregaps[track.Sequence])); - updateStatus?.Invoke($"Could not read subchannel for this track, supposing { - pregaps[track.Sequence]} sectors."); + updateStatus?. + Invoke(string. + Format(Localization.Core.Could_not_read_subchannel_for_this_track_supposing_0_sectors, + pregaps[track.Sequence])); } break; } - dumpLog?.WriteLine($"Could not read subchannel for sector {lba}"); - updateStatus?.Invoke($"Could not read subchannel for sector {lba}"); + dumpLog?.WriteLine(string.Format(Localization.Core.Could_not_read_subchannel_for_sector_0, + lba)); + + updateStatus?.Invoke(string.Format(Localization.Core.Could_not_read_subchannel_for_sector_0, + lba)); lba++; forward = true; @@ -461,15 +477,18 @@ partial class Dump continue; } - dumpLog?.WriteLine($"Could not get correct subchannel for sector {lba}"); - updateStatus?.Invoke($"Could not get correct subchannel for sector {lba}"); + dumpLog?.WriteLine(string.Format(Localization.Core.Could_not_get_correct_subchannel_for_sector_0, + lba)); + + updateStatus?.Invoke(string.Format(Localization.Core.Could_not_get_correct_subchannel_for_sector_0, + lba)); } if(subBuf.All(b => b == 0)) { inexactPositioning = true; - AaruConsole.DebugWriteLine("Pregap calculator", "All Q empty for LBA {0}", lba); + AaruConsole.DebugWriteLine("Pregap calculator", Localization.Core.All_Q_empty_for_LBA_0, lba); break; } @@ -535,8 +554,8 @@ partial class Dump if(diff != 0) { - AaruConsole.DebugWriteLine("Pregap calculator", "Invalid Q position for LBA {0}, got {1}", lba, - posQ); + AaruConsole.DebugWriteLine("Pregap calculator", + Localization.Core.Invalid_Q_position_for_LBA_0_got_1, lba, posQ); inexactPositioning = true; } @@ -558,8 +577,8 @@ partial class Dump // If CRC is not OK, only accept pregaps less than 10 sectors longer than previously now if(crcOk || pregapQ - pregaps[track.Sequence] < 10) { - AaruConsole.DebugWriteLine("Pregap calculator", "Pregap for track {0}: {1}", track.Sequence, - pregapQ); + AaruConsole.DebugWriteLine("Pregap calculator", Localization.Core.Pregap_for_track_0_1, + track.Sequence, pregapQ); pregaps[track.Sequence] = pregapQ; } @@ -604,8 +623,10 @@ partial class Dump trk.StartSector -= trk.Pregap; #if DEBUG - dumpLog?.WriteLine($"Track {trk.Sequence} pregap is {trk.Pregap} sectors"); - updateStatus?.Invoke($"Track {trk.Sequence} pregap is {trk.Pregap} sectors"); + dumpLog?.WriteLine(string.Format(Localization.Core.Track_0_pregap_is_1_sectors, trk.Sequence, trk.Pregap)); + + updateStatus?.Invoke(string.Format(Localization.Core.Track_0_pregap_is_1_sectors, trk.Sequence, + trk.Pregap)); #endif } } diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/Recordable.cs b/Aaru.Core/Devices/Dumping/CompactDisc/Recordable.cs index d445f0d87..b5c23437e 100644 --- a/Aaru.Core/Devices/Dumping/CompactDisc/Recordable.cs +++ b/Aaru.Core/Devices/Dumping/CompactDisc/Recordable.cs @@ -63,11 +63,11 @@ partial class Dump if(runOutSectors.Count == 0) return; - _dumpLog.WriteLine($"{runOutSectors.Count - } sectors at the end of the disc are unreadable. This is normal in CD-R(W) discs as these sectors are created by burning software as part of the recording process. Empty ones will be generated and stored in the image."); + _dumpLog.WriteLine(string.Format(Localization.Core._0_sectors_at_the_end_of_the_disc_are_unreadable, + runOutSectors.Count)); - UpdateStatus?.Invoke($"{runOutSectors.Count - } sectors at the end of the disc are unreadable. This is normal in CD-R(W) discs as these sectors are created by burning software as part of the recording process. Empty ones will be generated and stored in the image."); + UpdateStatus?.Invoke(string.Format(Localization.Core._0_sectors_at_the_end_of_the_disc_are_unreadable, + runOutSectors.Count)); foreach(ulong s in runOutSectors) { diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/Subchannel.cs b/Aaru.Core/Devices/Dumping/CompactDisc/Subchannel.cs index e5060b5f8..613a4cba9 100644 --- a/Aaru.Core/Devices/Dumping/CompactDisc/Subchannel.cs +++ b/Aaru.Core/Devices/Dumping/CompactDisc/Subchannel.cs @@ -50,8 +50,8 @@ partial class Dump /// true if read correctly, false otherwise public static bool SupportsRwSubchannel(Device dev, DumpLog dumpLog, UpdateStatusHandler updateStatus, uint lba) { - dumpLog?.WriteLine("Checking if drive supports full raw subchannel reading..."); - updateStatus?.Invoke("Checking if drive supports full raw subchannel reading..."); + dumpLog?.WriteLine(Localization.Core.Checking_if_drive_supports_full_raw_subchannel_reading); + updateStatus?.Invoke(Localization.Core.Checking_if_drive_supports_full_raw_subchannel_reading); return !dev.ReadCd(out _, out _, lba, 2352 + 96, 1, MmcSectorTypes.AllTypes, false, false, true, MmcHeaderCodes.AllHeaders, true, true, MmcErrorField.None, MmcSubchannel.Raw, dev.Timeout, @@ -66,8 +66,8 @@ partial class Dump /// true if read correctly, false otherwise public static bool SupportsPqSubchannel(Device dev, DumpLog dumpLog, UpdateStatusHandler updateStatus, uint lba) { - dumpLog?.WriteLine("Checking if drive supports PQ subchannel reading..."); - updateStatus?.Invoke("Checking if drive supports PQ subchannel reading..."); + dumpLog?.WriteLine(Localization.Core.Checking_if_drive_supports_PQ_subchannel_reading); + updateStatus?.Invoke(Localization.Core.Checking_if_drive_supports_PQ_subchannel_reading); return !dev.ReadCd(out _, out _, lba, 2352 + 16, 1, MmcSectorTypes.AllTypes, false, false, true, MmcHeaderCodes.AllHeaders, true, true, MmcErrorField.None, MmcSubchannel.Q16, dev.Timeout, diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/Tags.cs b/Aaru.Core/Devices/Dumping/CompactDisc/Tags.cs index 836e383a5..122e83c0c 100644 --- a/Aaru.Core/Devices/Dumping/CompactDisc/Tags.cs +++ b/Aaru.Core/Devices/Dumping/CompactDisc/Tags.cs @@ -61,8 +61,8 @@ partial class Dump firstTrackLastSession = 1; // ATIP exists on blank CDs - _dumpLog.WriteLine("Reading ATIP"); - UpdateStatus?.Invoke("Reading ATIP"); + _dumpLog.WriteLine(Localization.Core.Reading_ATIP); + UpdateStatus?.Invoke(Localization.Core.Reading_ATIP); sense = _dev.ReadAtip(out cmdBuf, out _, _dev.Timeout, out _); if(!sense) @@ -80,8 +80,8 @@ partial class Dump } } - _dumpLog.WriteLine("Reading Disc Information"); - UpdateStatus?.Invoke("Reading Disc Information"); + _dumpLog.WriteLine(Localization.Core.Reading_Disc_Information); + UpdateStatus?.Invoke(Localization.Core.Reading_Disc_Information); sense = _dev.ReadDiscInformation(out cmdBuf, out _, MmcDiscInformationDataTypes.DiscInformation, _dev.Timeout, out _); @@ -100,8 +100,8 @@ partial class Dump }; } - _dumpLog.WriteLine("Reading PMA"); - UpdateStatus?.Invoke("Reading PMA"); + _dumpLog.WriteLine(Localization.Core.Reading_PMA); + UpdateStatus?.Invoke(Localization.Core.Reading_PMA); sense = _dev.ReadPma(out cmdBuf, out _, _dev.Timeout, out _); if(!sense && @@ -112,8 +112,8 @@ partial class Dump mediaTags.Add(MediaTagType.CD_PMA, tmpBuf); } - _dumpLog.WriteLine("Reading Session Information"); - UpdateStatus?.Invoke("Reading Session Information"); + _dumpLog.WriteLine(Localization.Core.Reading_Session_Information); + UpdateStatus?.Invoke(Localization.Core.Reading_Session_Information); sense = _dev.ReadSessionInfo(out cmdBuf, out _, _dev.Timeout, out _); if(!sense) @@ -127,8 +127,8 @@ partial class Dump } } - _dumpLog.WriteLine("Reading CD-Text from Lead-In"); - UpdateStatus?.Invoke("Reading CD-Text from Lead-In"); + _dumpLog.WriteLine(Localization.Core.Reading_CD_Text_from_Lead_In); + UpdateStatus?.Invoke(Localization.Core.Reading_CD_Text_from_Lead_In); sense = _dev.ReadCdText(out cmdBuf, out _, _dev.Timeout, out _); if(sense || !CDTextOnLeadIn.Decode(cmdBuf).HasValue) diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/Tracks.cs b/Aaru.Core/Devices/Dumping/CompactDisc/Tracks.cs index 85ca00b6c..39c298ac3 100644 --- a/Aaru.Core/Devices/Dumping/CompactDisc/Tracks.cs +++ b/Aaru.Core/Devices/Dumping/CompactDisc/Tracks.cs @@ -76,8 +76,8 @@ partial class Dump // We discarded all discs that falsify a TOC before requesting a real TOC // No TOC, no CD (or an empty one) - dumpLog?.WriteLine("Reading full TOC"); - updateStatus?.Invoke("Reading full TOC"); + dumpLog?.WriteLine(Localization.Core.Reading_full_TOC); + updateStatus?.Invoke(Localization.Core.Reading_full_TOC); sense = dev.ReadRawToc(out cmdBuf, out _, 0, dev.Timeout, out _); if(!sense) @@ -92,8 +92,8 @@ partial class Dump } } - updateStatus?.Invoke("Building track map..."); - dumpLog?.WriteLine("Building track map..."); + updateStatus?.Invoke(Localization.Core.Building_track_map); + dumpLog?.WriteLine(Localization.Core.Building_track_map); if(toc.HasValue) { @@ -175,8 +175,8 @@ partial class Dump } else { - updateStatus?.Invoke("Cannot read RAW TOC, requesting processed one..."); - dumpLog?.WriteLine("Cannot read RAW TOC, requesting processed one..."); + updateStatus?.Invoke(Localization.Core.Cannot_read_RAW_TOC_requesting_processed_one); + dumpLog?.WriteLine(Localization.Core.Cannot_read_RAW_TOC_requesting_processed_one); sense = dev.ReadToc(out cmdBuf, out _, false, 0, dev.Timeout, out _); TOC.CDTOC? oldToc = TOC.Decode(cmdBuf); @@ -184,10 +184,11 @@ partial class Dump if((sense || !oldToc.HasValue) && !force) { - dumpLog?.WriteLine("Could not read TOC, if you want to continue, use force, and will try from LBA 0 to 360000..."); + dumpLog?.WriteLine(Localization.Core. + Could_not_read_TOC_if_you_want_to_continue_use_force_and_will_try_from_LBA_0_to_360000); - stoppingErrorMessage?. - Invoke("Could not read TOC, if you want to continue, use force, and will try from LBA 0 to 360000..."); + stoppingErrorMessage?.Invoke(Localization.Core. + Could_not_read_TOC_if_you_want_to_continue_use_force_and_will_try_from_LBA_0_to_360000); return null; } @@ -227,8 +228,8 @@ partial class Dump if(trackList.Count == 0) { - updateStatus?.Invoke("No tracks found, adding a single track from 0 to Lead-Out"); - dumpLog?.WriteLine("No tracks found, adding a single track from 0 to Lead-Out"); + updateStatus?.Invoke(Localization.Core.No_tracks_found_adding_a_single_track_from_zero_to_Lead_Out); + dumpLog?.WriteLine(Localization.Core.No_tracks_found_adding_a_single_track_from_zero_to_Lead_Out); trackList.Add(new Track { @@ -269,18 +270,17 @@ partial class Dump if(!force) { - stoppingErrorMessage?. - Invoke("Could not find Lead-Out, if you want to continue use force option and will continue until 360000 sectors..."); + stoppingErrorMessage?.Invoke(Localization.Core. + Could_not_find_Lead_Out_if_you_want_to_continue_use_force_option); - dumpLog?.WriteLine("Could not find Lead-Out, if you want to continue use force option and will continue until 360000 sectors..."); + dumpLog?.WriteLine(Localization.Core.Could_not_find_Lead_Out_if_you_want_to_continue_use_force_option); return null; } - updateStatus?. - Invoke("WARNING: Could not find Lead-Out start, will try to read up to 360000 sectors, probably will fail before..."); + updateStatus?.Invoke(Localization.Core.WARNING_Could_not_find_Lead_Out_start_will_try_to_read_up_to); - dumpLog?.WriteLine("WARNING: Could not find Lead-Out start, will try to read up to 360000 sectors, probably will fail before..."); + dumpLog?.WriteLine(Localization.Core.WARNING_Could_not_find_Lead_Out_start_will_try_to_read_up_to); lastSector = 360000; return trackList.ToArray(); diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/Trim.cs b/Aaru.Core/Devices/Dumping/CompactDisc/Trim.cs index 3729e9322..be301747b 100644 --- a/Aaru.Core/Devices/Dumping/CompactDisc/Trim.cs +++ b/Aaru.Core/Devices/Dumping/CompactDisc/Trim.cs @@ -106,8 +106,8 @@ partial class Dump return; 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); InitProgress?.Invoke(); trimStart: @@ -120,13 +120,13 @@ 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)); Track track = tracks.OrderBy(t => t.StartSector).LastOrDefault(t => badSector >= t.StartSector); @@ -286,7 +286,10 @@ 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); } } \ No newline at end of file diff --git a/Aaru.Core/Devices/Dumping/Dump.cs b/Aaru.Core/Devices/Dumping/Dump.cs index 8659e6c5e..a204907aa 100644 --- a/Aaru.Core/Devices/Dumping/Dump.cs +++ b/Aaru.Core/Devices/Dumping/Dump.cs @@ -212,15 +212,14 @@ public partial class Dump if(_dbDev is null) { - _dumpLog.WriteLine("Device not in database, please create a device report and attach it to a Github issue."); + _dumpLog.WriteLine(Localization.Core.Device_not_in_database); - UpdateStatus?. - Invoke("Device not in database, please create a device report and attach it to a Github issue."); + UpdateStatus?.Invoke(Localization.Core.Device_not_in_database); } else { - _dumpLog.WriteLine($"Device in database since {_dbDev.LastSynchronized}."); - UpdateStatus?.Invoke($"Device in database since {_dbDev.LastSynchronized}."); + _dumpLog.WriteLine(string.Format(Localization.Core.Device_in_database_since_0, _dbDev.LastSynchronized)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_in_database_since_0, _dbDev.LastSynchronized)); if(_dbDev.OptimalMultipleSectorsRead > 0) _maximumReadable = (uint)_dbDev.OptimalMultipleSectorsRead; @@ -258,9 +257,9 @@ public partial class Dump break; default: - _dumpLog.WriteLine("Unknown device type."); + _dumpLog.WriteLine(Localization.Core.Unknown_device_type); _dumpLog.Close(); - StoppingErrorMessage?.Invoke("Unknown device type."); + StoppingErrorMessage?.Invoke(Localization.Core.Unknown_device_type); return; } diff --git a/Aaru.Core/Devices/Dumping/LinearMemory/Retrode.cs b/Aaru.Core/Devices/Dumping/LinearMemory/Retrode.cs index 9834cd582..9abd47d13 100644 --- a/Aaru.Core/Devices/Dumping/LinearMemory/Retrode.cs +++ b/Aaru.Core/Devices/Dumping/LinearMemory/Retrode.cs @@ -84,8 +84,8 @@ public partial class Dump if(sense) { - _dumpLog.WriteLine("Could not read..."); - StoppingErrorMessage?.Invoke("Could not read..."); + _dumpLog.WriteLine(Localization.Core.Could_not_read); + StoppingErrorMessage?.Invoke(Localization.Core.Could_not_read); return; } @@ -97,8 +97,8 @@ public partial class Dump // UMDs are stored inside a FAT16 volume if(!tmp.SequenceEqual(_fatSignature)) { - _dumpLog.WriteLine("Retrode partition not recognized, not dumping..."); - StoppingErrorMessage?.Invoke("Retrode partition not recognized, not dumping..."); + _dumpLog.WriteLine(Localization.Core.Retrode_partition_not_recognized_not_dumping); + StoppingErrorMessage?.Invoke(Localization.Core.Retrode_partition_not_recognized_not_dumping); return; } @@ -109,15 +109,15 @@ public partial class Dump ushort rootSize = (ushort)(((buffer[0x12] << 8) + buffer[0x11]) * 32 / 512); byte sectorsPerCluster = buffer[0x0D]; - UpdateStatus?.Invoke($"Reading root directory in sector {rootStart}..."); - _dumpLog.WriteLine("Reading root directory in sector {0}...", rootStart); + UpdateStatus?.Invoke(string.Format(Localization.Core.Reading_root_directory_in_sector_0, rootStart)); + _dumpLog.WriteLine(Localization.Core.Reading_root_directory_in_sector_0, rootStart); sense = _dev.Read10(out buffer, out _, 0, false, true, false, false, rootStart, 512, 0, 1, _dev.Timeout, out _); if(sense) { - StoppingErrorMessage?.Invoke("Could not read..."); - _dumpLog.WriteLine("Could not read..."); + StoppingErrorMessage?.Invoke(Localization.Core.Could_not_read); + _dumpLog.WriteLine(Localization.Core.Could_not_read); return; } @@ -191,8 +191,8 @@ public partial class Dump !smsFound && !n64Found) { - StoppingErrorMessage?.Invoke("No cartridge found, not dumping..."); - _dumpLog.WriteLine("No cartridge found, not dumping..."); + StoppingErrorMessage?.Invoke(Localization.Core.No_cartridge_found_not_dumping); + _dumpLog.WriteLine(Localization.Core.No_cartridge_found_not_dumping); return; } @@ -222,8 +222,10 @@ public partial class Dump if(_outputPlugin is not IByteAddressableImage outputBai || !outputBai.SupportedMediaTypes.Contains(mediaType)) { - _dumpLog.WriteLine("The specified format does not support the inserted cartridge..."); - StoppingErrorMessage?.Invoke("The specified format does not support the inserted cartridge..."); + _dumpLog.WriteLine(Localization.Core.The_specified_format_does_not_support_the_inserted_cartridge); + + StoppingErrorMessage?.Invoke(Localization.Core. + The_specified_format_does_not_support_the_inserted_cartridge); return; } @@ -233,8 +235,8 @@ public partial class Dump if(sense) { - _dumpLog.WriteLine("Could not read..."); - StoppingErrorMessage?.Invoke("Could not read..."); + _dumpLog.WriteLine(Localization.Core.Could_not_read); + StoppingErrorMessage?.Invoke(Localization.Core.Could_not_read); return; } @@ -246,36 +248,39 @@ public partial class Dump switch(romSize) { case > 1073741824: - UpdateStatus?.Invoke($"Cartridge has {romSize} bytes ({romSize / 1073741824d:F3} GiB)"); + UpdateStatus?.Invoke(string.Format(Localization.Core.Cartridge_has_0_bytes_1_GiB, romSize, + romSize / 1073741824d)); break; case > 1048576: - UpdateStatus?.Invoke($"Cartridge has {romSize} bytes ({romSize / 1048576d:F3} MiB)"); + UpdateStatus?.Invoke(string.Format(Localization.Core.Cartridge_has_0_bytes_1_MiB, romSize, + romSize / 1048576d)); break; case > 1024: - UpdateStatus?.Invoke($"Cartridge has {romSize} bytes ({romSize / 1024d:F3} KiB)"); + UpdateStatus?.Invoke(string.Format(Localization.Core.Cartridge_has_0_bytes_1_KiB, romSize, + romSize / 1024d)); break; default: - UpdateStatus?.Invoke($"Cartridge has {romSize} bytes"); + UpdateStatus?.Invoke(string.Format(Localization.Core.Cartridge_has_0_bytes, romSize)); break; } - UpdateStatus?.Invoke($"Media identified as {mediaType}."); - _dumpLog.WriteLine("Media identified as {0}.", mediaType); + UpdateStatus?.Invoke(string.Format(Localization.Core.Media_identified_as_0, mediaType)); + _dumpLog.WriteLine(Localization.Core.Media_identified_as_0, mediaType); ErrorNumber ret = outputBai.Create(_outputPath, mediaType, _formatOptions, romSize); // Cannot create image if(ret != ErrorNumber.NoError) { - _dumpLog.WriteLine("Error {0} creating output image, not continuing.", ret); + _dumpLog.WriteLine(Localization.Core.Error_0_creating_output_image_not_continuing, ret); _dumpLog.WriteLine(outputBai.ErrorMessage); - StoppingErrorMessage?.Invoke("Error creating output image, not continuing." + Environment.NewLine + - outputBai.ErrorMessage); + StoppingErrorMessage?.Invoke(Localization.Core.Error_creating_output_image_not_continuing + + Environment.NewLine + outputBai.ErrorMessage); return; } @@ -291,8 +296,8 @@ public partial class Dump { if(_aborted) { - UpdateStatus?.Invoke("Aborted!"); - _dumpLog.WriteLine("Aborted!"); + UpdateStatus?.Invoke(Localization.Core.Aborted); + _dumpLog.WriteLine(Localization.Core.Aborted); break; } @@ -308,8 +313,9 @@ public partial class Dump currentSpeed > 0) minSpeed = currentSpeed; - UpdateProgress?.Invoke($"Reading byte {i * 512} of {romSize} ({currentSpeed:F3} MiB/sec.)", (long)i * 512, - romSize); + UpdateProgress?. + Invoke(string.Format(Localization.Core.Reading_byte_0_of_1_2_MiB_sec_, i * 512, romSize, currentSpeed), + (long)i * 512, romSize); sense = _dev.Read10(out readBuffer, out senseBuf, 0, false, true, false, false, (uint)(startSector + i), 512, 0, (ushort)blocksToRead, _dev.Timeout, out double cmdDuration); @@ -331,7 +337,7 @@ public partial class Dump if(_stopOnError) return; // TODO: Return more cleanly - _dumpLog.WriteLine("Skipping {0} bytes from errored byte {1}.", _skip * 512, i * 512); + _dumpLog.WriteLine(Localization.Core.Skipping_0_bytes_from_errored_byte_1, _skip * 512, i * 512); i += _skip - blocksToRead; } @@ -358,8 +364,9 @@ public partial class Dump currentSpeed > 0) minSpeed = currentSpeed; - UpdateProgress?.Invoke($"Reading byte {romSectors * 512} of {romSize} ({currentSpeed:F3} MiB/sec.)", - (long)romSectors * 512, romSize); + UpdateProgress?. + Invoke(string.Format(Localization.Core.Reading_byte_0_of_1_2_MiB_sec_, romSectors * 512, romSize, currentSpeed), + (long)romSectors * 512, romSize); sense = _dev.Read10(out readBuffer, out senseBuf, 0, false, true, false, false, romSectors, 512, 0, 1, _dev.Timeout, out double cmdDuration); @@ -381,27 +388,28 @@ public partial class Dump if(_stopOnError) return; // TODO: Return more cleanly - _dumpLog.WriteLine("Skipping {0} bytes from errored byte {1}.", _skip * 512, romSectors * 512); + _dumpLog.WriteLine(Localization.Core.Skipping_0_bytes_from_errored_byte_1, _skip * 512, + romSectors * 512); } } DateTime end = DateTime.UtcNow; EndProgress?.Invoke(); - 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 {512 * (double)(romSectors + 1) / 1024 / (totalDuration / 1000) - :F3} KiB/sec."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Average_dump_speed_0_KiB_sec, + 512 * (double)(romSectors + 1) / 1024 / (totalDuration / 1000))); - UpdateStatus?.Invoke($"Average write speed {512 * (double)(romSectors + 1) / 1024 / imageWriteDuration - :F3} KiB/sec."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Average_write_speed_0_KiB_sec, + 512 * (double)(romSectors + 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, 512 * (double)(romSectors + 1) / 1024 / (totalDuration / 1000)); - _dumpLog.WriteLine("Average write speed {0:F3} KiB/sec.", + _dumpLog.WriteLine(Localization.Core.Average_write_speed_0_KiB_sec, 512 * (double)(romSectors + 1) / 1024 / imageWriteDuration); var metadata = new CommonTypes.Structs.ImageInfo @@ -411,7 +419,7 @@ public partial class Dump }; if(!outputBai.SetMetadata(metadata)) - ErrorMessage?.Invoke("Error {0} setting metadata, continuing..." + Environment.NewLine + + ErrorMessage?.Invoke(Localization.Core.Error_0_setting_metadata + Environment.NewLine + outputBai.ErrorMessage); // TODO: Set dump hardware @@ -420,17 +428,17 @@ public partial class Dump if(_preSidecar != null) outputBai.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; outputBai.Close(); DateTime closeEnd = DateTime.Now; - _dumpLog.WriteLine("Closed in {0} seconds.", (closeEnd - closeStart).TotalSeconds); + _dumpLog.WriteLine(Localization.Core.Closed_in_0_seconds, (closeEnd - closeStart).TotalSeconds); if(_aborted) { - UpdateStatus?.Invoke("Aborted!"); - _dumpLog.WriteLine("Aborted!"); + UpdateStatus?.Invoke(Localization.Core.Aborted); + _dumpLog.WriteLine(Localization.Core.Aborted); return; } @@ -443,18 +451,19 @@ 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: {512 * (double)(romSectors + 1) / 1048576 / (totalDuration / 1000) - :F3} MiB/sec."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Average_speed_0_MiB_sec, + 512 * (double)(romSectors + 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(""); diff --git a/Aaru.Core/Devices/Dumping/MMC.cs b/Aaru.Core/Devices/Dumping/MMC.cs index e289aa050..ab8a08637 100644 --- a/Aaru.Core/Devices/Dumping/MMC.cs +++ b/Aaru.Core/Devices/Dumping/MMC.cs @@ -76,7 +76,7 @@ partial class Dump { gotConfiguration = true; Features.SeparatedFeatures ftr = Features.Separate(cmdBuf); - _dumpLog.WriteLine("Device reports current profile is 0x{0:X4}", ftr.CurrentProfile); + _dumpLog.WriteLine(Localization.Core.Device_reports_current_profile_is_0, ftr.CurrentProfile); switch(ftr.CurrentProfile) { @@ -277,7 +277,7 @@ partial class Dump var scsiReader = new Reader(_dev, _dev.Timeout, null, _errorLog, _dumpRaw); ulong blocks = scsiReader.GetDeviceBlocks(); - _dumpLog.WriteLine("Device reports disc has {0} blocks", blocks); + _dumpLog.WriteLine(Localization.Core.Device_reports_disc_has_0_blocks, blocks); Dictionary mediaTags = new(); if(dskType == MediaType.PD650) @@ -294,7 +294,7 @@ partial class Dump switch(dskType) { case MediaType.Unknown when blocks > 0: - _dumpLog.WriteLine("Reading Physical Format Information"); + _dumpLog.WriteLine(Localization.Core.Reading_Physical_Format_Information); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.PhysicalInformation, 0, _dev.Timeout, out _); @@ -305,9 +305,11 @@ partial class Dump if(nintendoPfi is { DiskCategory: DiskCategory.Nintendo, PartVersion: 15 }) { - _dumpLog.WriteLine("Dumping Nintendo GameCube or Wii discs is not yet implemented."); + _dumpLog.WriteLine(Localization.Core. + Dumping_Nintendo_GameCube_or_Wii_discs_is_not_yet_implemented); - StoppingErrorMessage?.Invoke("Dumping Nintendo GameCube or Wii discs is not yet implemented."); + StoppingErrorMessage?.Invoke(Localization.Core. + Dumping_Nintendo_GameCube_or_Wii_discs_is_not_yet_implemented); return; } @@ -331,7 +333,7 @@ partial class Dump case MediaType.HDDVDROM: case MediaType.HDDVDRW: case MediaType.HDDVDRWDL: - _dumpLog.WriteLine("Reading Physical Format Information"); + _dumpLog.WriteLine(Localization.Core.Reading_Physical_Format_Information); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.PhysicalInformation, 0, _dev.Timeout, out _); @@ -370,7 +372,7 @@ partial class Dump } } - _dumpLog.WriteLine("Reading Disc Manufacturing Information"); + _dumpLog.WriteLine(Localization.Core.Reading_Disc_Manufacturing_Information); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.DiscManufacturingInformation, 0, _dev.Timeout, @@ -400,10 +402,11 @@ partial class Dump if(sense || Inquiry.Decode(inqBuf)?.KreonPresent != true) { - _dumpLog.WriteLine("Dumping Xbox Game Discs requires a drive with Kreon firmware."); + _dumpLog.WriteLine(Localization.Core. + Dumping_Xbox_Game_Discs_requires_a_drive_with_Kreon_firmware); - StoppingErrorMessage?. - Invoke("Dumping Xbox Game Discs requires a drive with Kreon firmware."); + StoppingErrorMessage?.Invoke(Localization.Core. + Dumping_Xbox_Game_Discs_requires_a_drive_with_Kreon_firmware); if(!_force) return; @@ -413,8 +416,8 @@ partial class Dump if(_dumpRaw && !_force) { - StoppingErrorMessage?. - Invoke("Not continuing. If you want to continue reading cooked data when raw is not available use the force option."); + StoppingErrorMessage?.Invoke(Localization.Core. + If_you_want_to_continue_reading_cooked_data_when_raw_is_not_available_use_the_force_option); // TODO: Exit more gracefully return; @@ -439,7 +442,7 @@ partial class Dump #region DVD-ROM if(dskType is MediaType.DVDDownload or MediaType.DVDROM) { - _dumpLog.WriteLine("Reading Lead-in Copyright Information."); + _dumpLog.WriteLine(Localization.Core.Reading_Lead_in_Copyright_Information); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.CopyrightInformation, 0, _dev.Timeout, out _); @@ -454,17 +457,17 @@ partial class Dump CSS_CPRM.LeadInCopyright? cmi = CSS_CPRM.DecodeLeadInCopyright(cmdBuf); if(cmi?.CopyrightType == CopyrightType.NoProtection) - UpdateStatus?.Invoke("Drive reports no copy protection on disc."); + UpdateStatus?.Invoke(Localization.Core.Drive_reports_no_copy_protection_on_disc); else { if(!Settings.Settings.Current.EnableDecryption) - UpdateStatus?.Invoke("Drive reports the disc uses copy protection. " + - "The dump will be incorrect unless decryption is enabled."); + UpdateStatus?.Invoke(Localization.Core. + Drive_reports_the_disc_uses_copy_protection_The_dump_will_be_incorrect_unless_decryption_is_enabled); else { if(cmi?.CopyrightType == CopyrightType.CSS) { - UpdateStatus?.Invoke("Drive reports disc uses CSS copy protection."); + UpdateStatus?.Invoke(Localization.Core.Drive_reports_disc_uses_CSS_copy_protection); dvdDecrypt = new DVDDecryption(_dev); @@ -476,7 +479,7 @@ partial class Dump { byte[] busKey = cmdBuf; - UpdateStatus?.Invoke("Reading disc key."); + UpdateStatus?.Invoke(Localization.Core.Reading_disc_key); sense = dvdDecrypt.ReadDiscKey(out cmdBuf, out _, _dev.Timeout, out _); if(!sense) @@ -489,7 +492,8 @@ partial class Dump if(!sense) if(cmdBuf[7] == 1) { - UpdateStatus?.Invoke("Disc and drive authentication succeeded."); + UpdateStatus?.Invoke(Localization.Core. + Disc_and_drive_authentication_succeeded); sense = dvdDecrypt.ReadRpc(out cmdBuf, out _, DvdCssKeyClass.DvdCssCppmOrCprm, @@ -502,35 +506,41 @@ partial class Dump if(rpc.HasValue) UpdateStatus?.Invoke(CSS.CheckRegion(rpc.Value, cmi.Value) - ? "Disc and drive regions match." - : "Disc and drive regions do not match. The dump will be incorrect"); + ? Localization.Core. + Disc_and_drive_regions_match + : Localization.Core. + Disc_and_drive_regions_do_not_match_The_dump_will_be_incorrect); } if(decodedDiscKey.HasValue) { mediaTags.Add(MediaTagType.DVD_DiscKey, decodedDiscKey.Value.Key); - UpdateStatus?.Invoke("Decrypting disc key."); + UpdateStatus?.Invoke(Localization.Core.Decrypting_disc_key); CSS.DecryptDiscKey(decodedDiscKey.Value.Key, out byte[] discKey); if(discKey != null) { - UpdateStatus?.Invoke("Decryption of disc key succeeded."); + UpdateStatus?.Invoke(Localization.Core. + Decryption_of_disc_key_succeeded); + mediaTags.Add(MediaTagType.DVD_DiscKey_Decrypted, discKey); } else - UpdateStatus?.Invoke("Decryption of disc key failed."); + UpdateStatus?.Invoke(Localization.Core. + Decryption_of_disc_key_failed); } } } } } else - UpdateStatus?.Invoke($"Drive reports disc uses { - (CSS_CPRM.DecodeLeadInCopyright(cmdBuf)?.CopyrightType ?? - CopyrightType.NoProtection).ToString()} copy protection. " + - "This is not yet supported and the dump will be incorrect."); + UpdateStatus?. + Invoke(string. + Format(Localization.Core.Drive_reports_0_copy_protection_not_yet_supported_dump_incorrect, + (CSS_CPRM.DecodeLeadInCopyright(cmdBuf)?.CopyrightType ?? + CopyrightType.NoProtection).ToString())); } } } @@ -543,7 +553,7 @@ partial class Dump case MediaType.DVDDownload: case MediaType.DVDROM: case MediaType.HDDVDROM: - _dumpLog.WriteLine("Reading Burst Cutting Area."); + _dumpLog.WriteLine(Localization.Core.Reading_Burst_Cutting_Area); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.BurstCuttingArea, 0, _dev.Timeout, out _); @@ -561,7 +571,7 @@ partial class Dump #region DVD-RAM and HD DVD-RAM case MediaType.DVDRAM: case MediaType.HDDVDRAM: - _dumpLog.WriteLine("Reading Disc Description Structure."); + _dumpLog.WriteLine(Localization.Core.Reading_Disc_Description_Structure); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.DvdramDds, 0, _dev.Timeout, out _); @@ -574,7 +584,7 @@ partial class Dump mediaTags.Add(MediaTagType.DVDRAM_DDS, tmpBuf); } - _dumpLog.WriteLine("Reading Spare Area Information."); + _dumpLog.WriteLine(Localization.Core.Reading_Spare_Area_Information); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.DvdramSpareAreaInformation, 0, _dev.Timeout, @@ -594,7 +604,7 @@ partial class Dump #region DVD-R and DVD-RW case MediaType.DVDR: case MediaType.DVDRW: - _dumpLog.WriteLine("Reading Pre-Recorded Information."); + _dumpLog.WriteLine(Localization.Core.Reading_Pre_Recorded_Information); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.PreRecordedInfo, 0, _dev.Timeout, out _); @@ -616,7 +626,7 @@ partial class Dump case MediaType.DVDR: case MediaType.DVDRW: case MediaType.HDDVDR: - _dumpLog.WriteLine("Reading Media Identifier."); + _dumpLog.WriteLine(Localization.Core.Reading_Media_Identifier); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.DvdrMediaIdentifier, 0, _dev.Timeout, out _); @@ -628,7 +638,7 @@ partial class Dump mediaTags.Add(MediaTagType.DVDR_MediaIdentifier, tmpBuf); } - _dumpLog.WriteLine("Reading Recordable Physical Information."); + _dumpLog.WriteLine(Localization.Core.Reading_Recordable_Physical_Information); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.DvdrPhysicalInformation, 0, _dev.Timeout, out _); @@ -648,7 +658,7 @@ partial class Dump case MediaType.DVDPRDL: case MediaType.DVDPRW: case MediaType.DVDPRWDL: - _dumpLog.WriteLine("Reading ADdress In Pregroove."); + _dumpLog.WriteLine(Localization.Core.Reading_ADdress_In_Pregroove); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.Adip, 0, _dev.Timeout, out _); @@ -660,7 +670,7 @@ partial class Dump mediaTags.Add(MediaTagType.DVD_ADIP, tmpBuf); } - _dumpLog.WriteLine("Reading Disc Control Blocks."); + _dumpLog.WriteLine(Localization.Core.Reading_Disc_Control_Blocks); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.Dcb, 0, _dev.Timeout, out _); @@ -677,7 +687,7 @@ partial class Dump #region HD DVD-ROM case MediaType.HDDVDROM: - _dumpLog.WriteLine("Reading Lead-in Copyright Information."); + _dumpLog.WriteLine(Localization.Core.Reading_Lead_in_Copyright_Information); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.HddvdCopyrightInformation, 0, _dev.Timeout, @@ -700,7 +710,7 @@ partial class Dump case MediaType.BDRXL: case MediaType.BDREXL: case MediaType.UHDBD: - _dumpLog.WriteLine("Reading Disc Information."); + _dumpLog.WriteLine(Localization.Core.Reading_Disc_Information); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Bd, 0, 0, MmcDiscStructureFormat.DiscInformation, 0, _dev.Timeout, out _); @@ -733,7 +743,7 @@ partial class Dump #region BD-ROM only case MediaType.BDROM: case MediaType.UHDBD: - _dumpLog.WriteLine("Reading Burst Cutting Area."); + _dumpLog.WriteLine(Localization.Core.Reading_Burst_Cutting_Area); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Bd, 0, 0, MmcDiscStructureFormat.BdBurstCuttingArea, 0, _dev.Timeout, out _); @@ -753,7 +763,7 @@ partial class Dump case MediaType.BDRE: case MediaType.BDRXL: case MediaType.BDREXL: - _dumpLog.WriteLine("Reading Disc Definition Structure."); + _dumpLog.WriteLine(Localization.Core.Reading_Disc_Definition_Structure); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Bd, 0, 0, MmcDiscStructureFormat.BdDds, 0, _dev.Timeout, out _); @@ -765,7 +775,7 @@ partial class Dump mediaTags.Add(MediaTagType.BD_DDS, tmpBuf); } - _dumpLog.WriteLine("Reading Spare Area Information."); + _dumpLog.WriteLine(Localization.Core.Reading_Spare_Area_Information); sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Bd, 0, 0, MmcDiscStructureFormat.BdSpareAreaInformation, 0, _dev.Timeout, out _); diff --git a/Aaru.Core/Devices/Dumping/Metadata.cs b/Aaru.Core/Devices/Dumping/Metadata.cs index bdda29a20..0357f9dfd 100644 --- a/Aaru.Core/Devices/Dumping/Metadata.cs +++ b/Aaru.Core/Devices/Dumping/Metadata.cs @@ -59,14 +59,14 @@ partial class Dump Dictionary mediaTags, int sessions, out double totalChkDuration, int? discOffset) { - _dumpLog.WriteLine("Creating sidecar."); + _dumpLog.WriteLine(Localization.Core.Creating_sidecar); var filters = new FiltersList(); IFilter filter = filters.GetFilter(_outputPath); totalChkDuration = 0; if(ImageFormat.Detect(filter) is not IMediaImage inputPlugin) { - StoppingErrorMessage?.Invoke("Could not detect image format."); + StoppingErrorMessage?.Invoke(Localization.Core.Could_not_detect_image_format); return; } @@ -75,7 +75,7 @@ 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; } @@ -98,9 +98,9 @@ partial class Dump return; totalChkDuration = (end - chkStart).TotalMilliseconds; - _dumpLog.WriteLine("Sidecar created in {0} seconds.", (end - chkStart).TotalSeconds); + _dumpLog.WriteLine(Localization.Core.Sidecar_created_in_0_seconds, (end - chkStart).TotalSeconds); - _dumpLog.WriteLine("Average checksum speed {0:F3} KiB/sec.", + _dumpLog.WriteLine(Localization.Core.Average_checksum_speed_0_KiB_sec, blockSize * (double)(blocks + 1) / 1024 / (totalChkDuration / 1000)); if(_preSidecar != null) @@ -124,7 +124,7 @@ partial class Dump o.start, o.type }).Distinct()) - _dumpLog.WriteLine("Found filesystem {0} at sector {1}", filesystem.type, filesystem.start); + _dumpLog.WriteLine(Localization.Core.Found_filesystem_0_at_sector_1, filesystem.type, filesystem.start); sidecar.OpticalDisc[0].Dimensions = Dimensions.DimensionsFromMediaType(mediaType); (string type, string subType) discType = CommonTypes.Metadata.MediaType.MediaTypeToString(mediaType); @@ -145,7 +145,7 @@ partial class Dump Contains(tag.Key))) AddMediaTagToSidecar(_outputPath, tag.Key, tag.Value, ref sidecar); - UpdateStatus?.Invoke("Writing metadata sidecar"); + UpdateStatus?.Invoke(Localization.Core.Writing_metadata_sidecar); var xmlFs = new FileStream(_outputPrefix + ".cicm.xml", FileMode.Create); diff --git a/Aaru.Core/Devices/Dumping/MiniDisc.cs b/Aaru.Core/Devices/Dumping/MiniDisc.cs index e6181b018..51a5d5123 100644 --- a/Aaru.Core/Devices/Dumping/MiniDisc.cs +++ b/Aaru.Core/Devices/Dumping/MiniDisc.cs @@ -74,18 +74,18 @@ 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; } - _dumpLog.WriteLine("Initializing reader."); + _dumpLog.WriteLine(Localization.Core.Initializing_reader); var scsiReader = new Reader(_dev, _dev.Timeout, null, _errorLog); ulong blocks = scsiReader.GetDeviceBlocks(); uint blockSize = scsiReader.LogicalBlockSize; - _dumpLog.WriteLine("Requesting MODE SENSE (6)."); - UpdateStatus?.Invoke("Requesting MODE SENSE (6)."); + _dumpLog.WriteLine(Localization.Core.Requesting_MODE_SENSE_6); + UpdateStatus?.Invoke(Localization.Core.Requesting_MODE_SENSE_6); sense = _dev.ModeSense6(out byte[] cmdBuf, out _, true, ScsiModeSensePageControl.Current, 0x3F, 5, out _); @@ -99,10 +99,11 @@ partial class Dump if(blockSize != 2048) { - _dumpLog.WriteLine("MiniDisc albums, NetMD discs or user-written audio MiniDisc cannot be dumped."); + _dumpLog.WriteLine(Localization.Core. + MiniDisc_albums_NetMD_discs_or_user_written_audio_MiniDisc_cannot_be_dumped); - StoppingErrorMessage?. - Invoke("MiniDisc albums, NetMD discs or user-written audio MiniDisc cannot be dumped."); + StoppingErrorMessage?.Invoke(Localization.Core. + MiniDisc_albums_NetMD_discs_or_user_written_audio_MiniDisc_cannot_be_dumped); return; } @@ -111,8 +112,8 @@ partial class Dump if(scsiReader.FindReadCommand()) { - _dumpLog.WriteLine("ERROR: Cannot find correct read command: {0}.", scsiReader.ErrorMessage); - StoppingErrorMessage?.Invoke("Unable to read medium."); + _dumpLog.WriteLine(Localization.Core.ERROR_Cannot_find_correct_read_command_0, scsiReader.ErrorMessage); + StoppingErrorMessage?.Invoke(Localization.Core.Unable_to_read_medium); return; } @@ -126,28 +127,33 @@ partial class Dump switch(totalSize) { case > 1099511627776: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize / 1099511627776d:F3} TiB)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_TiB, + blocks, blockSize, totalSize / 1099511627776d)); break; case > 1073741824: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize / 1073741824d:F3} GiB)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_GiB, + blocks, blockSize, totalSize / 1073741824d)); break; case > 1048576: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize / 1048576d:F3} MiB)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_MiB, + blocks, blockSize, totalSize / 1048576d)); break; case > 1024: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize / 1024d:F3} KiB)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_KiB, + blocks, blockSize, totalSize / 1024d)); break; default: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize} bytes)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_bytes, + blocks, blockSize, totalSize)); break; } @@ -157,7 +163,7 @@ partial class Dump // 64 works, gets maximum speed (150KiB/s), slow I know... if(scsiReader.GetBlocksToRead()) { - _dumpLog.WriteLine("ERROR: Cannot get blocks to read: {0}.", scsiReader.ErrorMessage); + _dumpLog.WriteLine(Localization.Core.ERROR_Cannot_get_blocks_to_read_0, scsiReader.ErrorMessage); StoppingErrorMessage?.Invoke(scsiReader.ErrorMessage); return; @@ -168,27 +174,32 @@ partial class Dump if(blocks == 0) { - _dumpLog.WriteLine("ERROR: Unable to read medium or empty medium present..."); - StoppingErrorMessage?.Invoke("Unable to read medium or empty medium present..."); + _dumpLog.WriteLine(Localization.Core.ERROR_Unable_to_read_medium_or_empty_medium_present); + StoppingErrorMessage?.Invoke(Localization.Core.Unable_to_read_medium_or_empty_medium_present); return; } - UpdateStatus?.Invoke($"Device reports {blocks} blocks ({blocks * blockSize} bytes)."); - UpdateStatus?.Invoke($"Device can read {blocksToRead} blocks at a time."); - UpdateStatus?.Invoke($"Device reports {blockSize} bytes per logical block."); - UpdateStatus?.Invoke($"Device reports {scsiReader.LongBlockSize} bytes per physical block."); - UpdateStatus?.Invoke($"SCSI device type: {_dev.ScsiType}."); - UpdateStatus?.Invoke($"SCSI medium type: {scsiMediumType}."); - UpdateStatus?.Invoke($"Media identified as {dskType}"); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_blocks_1_bytes, blocks, + blocks * blockSize)); - _dumpLog.WriteLine("Device reports {0} blocks ({1} bytes).", blocks, blocks * 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.", scsiReader.LongBlockSize); - _dumpLog.WriteLine("SCSI device type: {0}.", _dev.ScsiType); - _dumpLog.WriteLine("SCSI medium type: {0}.", scsiMediumType); - _dumpLog.WriteLine("Media identified as {0}.", dskType); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_can_read_0_blocks_at_a_time, blocksToRead)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_bytes_per_logical_block, blockSize)); + + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_bytes_per_physical_block, + scsiReader.LongBlockSize)); + + UpdateStatus?.Invoke(string.Format(Localization.Core.SCSI_device_type_0, _dev.ScsiType)); + UpdateStatus?.Invoke(string.Format(Localization.Core.SCSI_medium_type_0, scsiMediumType)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Media_identified_as_0, dskType)); + + _dumpLog.WriteLine(Localization.Core.Device_reports_0_blocks_1_bytes, blocks, blocks * blockSize); + _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, scsiReader.LongBlockSize); + _dumpLog.WriteLine(Localization.Core.SCSI_device_type_0, _dev.ScsiType); + _dumpLog.WriteLine(Localization.Core.SCSI_medium_type_0, scsiMediumType); + _dumpLog.WriteLine(Localization.Core.Media_identified_as_0, dskType); sense = _dev.MiniDiscGetType(out cmdBuf, out _, _dev.Timeout, out _); @@ -228,28 +239,28 @@ partial class Dump foreach(MediaTagType tag in mediaTags.Keys.Where(tag => !outputFormat.SupportedMediaTags.Contains(tag))) { ret = false; - _dumpLog.WriteLine($"Output format does not support {tag}."); - ErrorMessage?.Invoke($"Output format does not support {tag}."); + _dumpLog.WriteLine(string.Format(Localization.Core.Output_format_does_not_support_0, tag)); + ErrorMessage?.Invoke(string.Format(Localization.Core.Output_format_does_not_support_0, tag)); } if(!ret) { if(_force) { - _dumpLog.WriteLine("Several media tags not supported, continuing..."); - ErrorMessage?.Invoke("Several media tags not supported, continuing..."); + _dumpLog.WriteLine(Localization.Core.Several_media_tags_not_supported_continuing); + ErrorMessage?.Invoke(Localization.Core.Several_media_tags_not_supported_continuing); } else { - _dumpLog.WriteLine("Several media tags not supported, not continuing..."); - 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; } } - UpdateStatus?.Invoke($"Reading {blocksToRead} sectors at a time."); - _dumpLog.WriteLine("Reading {0} sectors at a time.", blocksToRead); + UpdateStatus?.Invoke(string.Format(Localization.Core.Reading_0_sectors_at_a_time, blocksToRead)); + _dumpLog.WriteLine(Localization.Core.Reading_0_sectors_at_a_time, blocksToRead); var mhddLog = new MhddLog(_outputPrefix + ".mhddlog.bin", _dev, blocks, blockSize, blocksToRead, _private); var ibgLog = new IbgLog(_outputPrefix + ".ibg", sbcProfile); @@ -258,11 +269,11 @@ 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; } @@ -284,14 +295,16 @@ partial class Dump if(!rigidPage.HasValue || setGeometry) continue; - _dumpLog.WriteLine("Setting geometry to {0} cylinders, {1} heads, {2} sectors per track", - rigidPage.Value.Cylinders, rigidPage.Value.Heads, - (uint)(blocks / (rigidPage.Value.Cylinders * rigidPage.Value.Heads))); + _dumpLog. + WriteLine(Localization.Core.Setting_geometry_to_0_cylinders_1_heads_2_sectors_per_track, + rigidPage.Value.Cylinders, rigidPage.Value.Heads, + (uint)(blocks / (rigidPage.Value.Cylinders * rigidPage.Value.Heads))); - UpdateStatus?.Invoke($"Setting geometry to {rigidPage.Value.Cylinders} cylinders, { - rigidPage.Value.Heads} heads, { - (uint)(blocks / (rigidPage.Value.Cylinders * rigidPage.Value.Heads)) - } sectors per track"); + UpdateStatus?. + Invoke(string. + Format(Localization.Core.Setting_geometry_to_0_cylinders_1_heads_2_sectors_per_track, + rigidPage.Value.Cylinders, rigidPage.Value.Heads, + (uint)(blocks / (rigidPage.Value.Cylinders * rigidPage.Value.Heads)))); outputFormat.SetGeometry(rigidPage.Value.Cylinders, rigidPage.Value.Heads, (uint)(blocks / (rigidPage.Value.Cylinders * rigidPage.Value.Heads))); @@ -307,12 +320,16 @@ partial class Dump if(!flexiblePage.HasValue) continue; - _dumpLog.WriteLine("Setting geometry to {0} cylinders, {1} heads, {2} sectors per track", - flexiblePage.Value.Cylinders, flexiblePage.Value.Heads, - flexiblePage.Value.SectorsPerTrack); + _dumpLog. + WriteLine(Localization.Core.Setting_geometry_to_0_cylinders_1_heads_2_sectors_per_track, + flexiblePage.Value.Cylinders, flexiblePage.Value.Heads, + flexiblePage.Value.SectorsPerTrack); - UpdateStatus?.Invoke($"Setting geometry to {flexiblePage.Value.Cylinders} cylinders, { - flexiblePage.Value.Heads} heads, {flexiblePage.Value.SectorsPerTrack} sectors per track"); + UpdateStatus?. + Invoke(string. + Format(Localization.Core.Setting_geometry_to_0_cylinders_1_heads_2_sectors_per_track, + flexiblePage.Value.Cylinders, flexiblePage.Value.Heads, + flexiblePage.Value.SectorsPerTrack)); outputFormat.SetGeometry(flexiblePage.Value.Cylinders, flexiblePage.Value.Heads, flexiblePage.Value.SectorsPerTrack); @@ -334,15 +351,15 @@ 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; } 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; @@ -355,8 +372,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; } @@ -372,8 +389,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.Read6(out readBuffer, out _, (uint)i, blockSize, (byte)blocksToRead, _dev.Timeout, out double cmdDuration); @@ -410,7 +428,7 @@ partial class Dump 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; } @@ -437,20 +455,20 @@ 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 @@ -460,8 +478,8 @@ 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(); @@ -471,13 +489,13 @@ 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)); sense = _dev.Read6(out readBuffer, out _, (uint)badSector, blockSize, 1, _dev.Timeout, out double _); @@ -491,8 +509,11 @@ 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 @@ -579,18 +600,19 @@ partial class Dump md6 = Modes.EncodeMode6(md, _dev.ScsiType); - UpdateStatus?.Invoke("Sending MODE SELECT to drive (return damaged blocks)."); - _dumpLog.WriteLine("Sending MODE SELECT to drive (return damaged blocks)."); + UpdateStatus?.Invoke(Localization.Core.Sending_MODE_SELECT_to_drive_return_damaged_blocks); + _dumpLog.WriteLine(Localization.Core.Sending_MODE_SELECT_to_drive_return_damaged_blocks); sense = _dev.ModeSelect(md6, out byte[] senseBuf, true, false, _dev.Timeout, out _); if(sense) { - UpdateStatus?. - Invoke("Drive did not accept MODE SELECT command for persistent error reading, try another drive."); + UpdateStatus?.Invoke(Localization.Core. + Drive_did_not_accept_MODE_SELECT_command_for_persistent_error_reading); - AaruConsole.DebugWriteLine("Error: {0}", Sense.PrettifySense(senseBuf)); + AaruConsole.DebugWriteLine(Localization.Core.Error_0, Sense.PrettifySense(senseBuf)); - _dumpLog.WriteLine("Drive did not accept MODE SELECT command for persistent error reading, try another drive."); + _dumpLog.WriteLine(Localization.Core. + Drive_did_not_accept_MODE_SELECT_command_for_persistent_error_reading); } else runningPersistent = true; @@ -605,15 +627,26 @@ 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", - runningPersistent ? "recovering partial data, " : "")); + if(forward) + PulseProgress?.Invoke(runningPersistent + ? 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(runningPersistent + ? 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)); sense = _dev.Read6(out readBuffer, out _, (uint)badSector, blockSize, 1, _dev.Timeout, out double cmdDuration); @@ -626,8 +659,11 @@ partial class Dump _resume.BadBlocks.Remove(badSector); extents.Add(badSector); outputFormat.WriteSector(readBuffer, 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(runningPersistent) outputFormat.WriteSector(readBuffer, badSector); @@ -660,8 +696,8 @@ partial class Dump md6 = Modes.EncodeMode6(md, _dev.ScsiType); - UpdateStatus?.Invoke("Sending MODE SELECT to drive (return device to previous status)."); - _dumpLog.WriteLine("Sending MODE SELECT to drive (return device to previous status)."); + UpdateStatus?.Invoke(Localization.Core.Sending_MODE_SELECT_to_drive_return_device_to_previous_status); + _dumpLog.WriteLine(Localization.Core.Sending_MODE_SELECT_to_drive_return_device_to_previous_status); _dev.ModeSelect(md6, out _, true, false, _dev.Timeout, out _); } @@ -672,7 +708,7 @@ partial class Dump _resume.BadBlocks.Sort(); 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); currentTry.Extents = ExtentsConverter.ToMetadata(extents); @@ -685,24 +721,27 @@ 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) { - UpdateStatus?.Invoke("Aborted!"); - _dumpLog.WriteLine("Aborted!"); + UpdateStatus?.Invoke(Localization.Core.Aborted); + _dumpLog.WriteLine(Localization.Core.Aborted); return; } @@ -711,8 +750,8 @@ partial class Dump if(_metadata) { - UpdateStatus?.Invoke("Creating sidecar."); - _dumpLog.WriteLine("Creating sidecar."); + UpdateStatus?.Invoke(Localization.Core.Creating_sidecar); + _dumpLog.WriteLine(Localization.Core.Creating_sidecar); var filters = new FiltersList(); IFilter filter = filters.GetFilter(_outputPath); var inputPlugin = ImageFormat.Detect(filter) as IMediaImage; @@ -720,7 +759,7 @@ 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; } @@ -740,14 +779,17 @@ partial class Dump if(!_aborted) { totalChkDuration = (end - chkStart).TotalMilliseconds; - UpdateStatus?.Invoke($"Sidecar created in {(end - 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, + (end - chkStart).TotalSeconds)); - _dumpLog.WriteLine("Sidecar created in {0} seconds.", (end - 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, (end - chkStart).TotalSeconds); + + _dumpLog.WriteLine(Localization.Core.Average_checksum_speed_0_KiB_sec, blockSize * (double)(blocks + 1) / 1024 / (totalChkDuration / 1000)); if(_preSidecar != null) @@ -770,8 +812,11 @@ partial class Dump o.type }).Distinct()) { - UpdateStatus?.Invoke($"Found filesystem {filesystem.type} at sector {filesystem.start}"); - _dumpLog.WriteLine("Found filesystem {0} at sector {1}", filesystem.type, filesystem.start); + UpdateStatus?.Invoke(string.Format(Localization.Core.Found_filesystem_0_at_sector_1, + filesystem.type, filesystem.start)); + + _dumpLog.WriteLine(Localization.Core.Found_filesystem_0_at_sector_1, filesystem.type, + filesystem.start); } sidecar.BlockMedia[0].Dimensions = Dimensions.DimensionsFromMediaType(dskType); @@ -804,7 +849,7 @@ partial class Dump if(_dev.IsRemovable) sidecar.BlockMedia[0].DumpHardwareArray = _resume.Tries.ToArray(); - UpdateStatus?.Invoke("Writing metadata sidecar"); + UpdateStatus?.Invoke(Localization.Core.Writing_metadata_sidecar); var xmlFs = new FileStream(_outputPrefix + ".cicm.xml", FileMode.Create); @@ -816,20 +861,21 @@ 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)); UpdateStatus?.Invoke(""); Statistics.AddMedia(dskType, true); diff --git a/Aaru.Core/Devices/Dumping/NVMe.cs b/Aaru.Core/Devices/Dumping/NVMe.cs index 614c881f7..f691e29b2 100644 --- a/Aaru.Core/Devices/Dumping/NVMe.cs +++ b/Aaru.Core/Devices/Dumping/NVMe.cs @@ -37,5 +37,5 @@ namespace Aaru.Core.Devices.Dumping; public partial class Dump { /// Dumps an NVMe device - public void NVMe() => StoppingErrorMessage?.Invoke("NVMe devices not yet supported."); + public void NVMe() => StoppingErrorMessage?.Invoke(Localization.Core.NVMe_devices_not_yet_supported); } \ No newline at end of file diff --git a/Aaru.Core/Devices/Dumping/PlayStationPortable/MemoryStick.cs b/Aaru.Core/Devices/Dumping/PlayStationPortable/MemoryStick.cs index b49e09842..09ae51b68 100644 --- a/Aaru.Core/Devices/Dumping/PlayStationPortable/MemoryStick.cs +++ b/Aaru.Core/Devices/Dumping/PlayStationPortable/MemoryStick.cs @@ -72,7 +72,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; } @@ -81,8 +81,8 @@ public partial class Dump if(sense) { - _dumpLog.WriteLine("Could not detect capacity..."); - StoppingErrorMessage?.Invoke("Could not detect capacity..."); + _dumpLog.WriteLine(Localization.Core.Could_not_detect_capacity); + StoppingErrorMessage?.Invoke(Localization.Core.Could_not_detect_capacity); return; } @@ -96,56 +96,63 @@ public partial class Dump switch(totalSize) { case > 1099511627776: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize / 1099511627776d:F3} TiB)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_TiB, + blocks, blockSize, totalSize / 1099511627776d)); break; case > 1073741824: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize / 1073741824d:F3} GiB)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_GiB, + blocks, blockSize, totalSize / 1073741824d)); break; case > 1048576: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize / 1048576d:F3} MiB)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_MiB, + blocks, blockSize, totalSize / 1048576d)); break; case > 1024: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize / 1024d:F3} KiB)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_KiB, + blocks, blockSize, totalSize / 1024d)); break; default: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of {totalSize - } bytes)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_bytes, + blocks, blockSize, totalSize)); break; } if(blocks == 0) { - _dumpLog.WriteLine("ERROR: Unable to read medium or empty medium present..."); - StoppingErrorMessage?.Invoke("Unable to read medium or empty medium present..."); + _dumpLog.WriteLine(Localization.Core.ERROR_Unable_to_read_medium_or_empty_medium_present); + StoppingErrorMessage?.Invoke(Localization.Core.Unable_to_read_medium_or_empty_medium_present); return; } - UpdateStatus?.Invoke($"Device reports {blocks} blocks ({blocks * blockSize} bytes)."); - UpdateStatus?.Invoke($"Device can read {blocksToRead} blocks at a time."); - UpdateStatus?.Invoke($"Device reports {blockSize} bytes per logical block."); - UpdateStatus?.Invoke($"SCSI device type: {_dev.ScsiType}."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_blocks_1_bytes, blocks, + blocks * blockSize)); + + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_can_read_0_blocks_at_a_time, blocksToRead)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_bytes_per_logical_block, blockSize)); + UpdateStatus?.Invoke(string.Format(Localization.Core.SCSI_device_type_0, _dev.ScsiType)); if(blocks > 262144) { dskType = MediaType.MemoryStickProDuo; - _dumpLog.WriteLine("Media detected as MemoryStick Pro Duo..."); - UpdateStatus?.Invoke("Media detected as MemoryStick Pro Duo..."); + _dumpLog.WriteLine(Localization.Core.Media_detected_as_MemoryStick_Pro_Duo); + UpdateStatus?.Invoke(Localization.Core.Media_detected_as_MemoryStick_Pro_Duo); } else { dskType = MediaType.MemoryStickDuo; - _dumpLog.WriteLine("Media detected as MemoryStick Duo..."); - UpdateStatus?.Invoke("Media detected as MemoryStick Duo..."); + _dumpLog.WriteLine(Localization.Core.Media_detected_as_MemoryStick_Duo); + UpdateStatus?.Invoke(Localization.Core.Media_detected_as_MemoryStick_Duo); } bool ret; @@ -157,11 +164,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; } @@ -179,13 +186,13 @@ 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; } if(_resume.NextBlock > 0) - _dumpLog.WriteLine("Resuming from block {0}.", _resume.NextBlock); + _dumpLog.WriteLine(Localization.Core.Resuming_from_block_0, _resume.NextBlock); bool newTrim = false; @@ -198,8 +205,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; } @@ -215,7 +222,9 @@ public partial class Dump currentSpeed > 0) minSpeed = currentSpeed; - UpdateProgress?.Invoke($"Reading sector {i} of {blocks} ({currentSpeed:F3} MiB/sec.)", (long)i, blocks); + UpdateProgress?. + Invoke(string.Format(Localization.Core.Reading_sector_0_of_1_2_MiB_sec, i, blocks, currentSpeed), + (long)i, blocks); sense = _dev.Read12(out readBuffer, out senseBuf, 0, false, true, false, false, (uint)i, blockSize, 0, blocksToRead, false, _dev.Timeout, out double cmdDuration); @@ -254,7 +263,7 @@ public partial class Dump 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; } @@ -281,20 +290,20 @@ 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 @@ -304,8 +313,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(); @@ -315,13 +324,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)); sense = _dev.Read12(out readBuffer, out senseBuf, 0, false, true, false, false, (uint)badSector, blockSize, 0, 1, false, _dev.Timeout, out double _); @@ -340,7 +349,7 @@ public partial class Dump EndProgress?.Invoke(); end = DateTime.UtcNow; - _dumpLog.WriteLine("Trimming finished in {0} seconds.", (end - start).TotalSeconds); + _dumpLog.WriteLine(Localization.Core.Trimming_finished_in_0_seconds, (end - start).TotalSeconds); } #endregion Trimming @@ -442,18 +451,19 @@ public partial class Dump md6 = Modes.EncodeMode6(md, _dev.ScsiType); - UpdateStatus?.Invoke("Sending MODE SELECT to drive (return damaged blocks)."); - _dumpLog.WriteLine("Sending MODE SELECT to drive (return damaged blocks)."); + UpdateStatus?.Invoke(Localization.Core.Sending_MODE_SELECT_to_drive_return_damaged_blocks); + _dumpLog.WriteLine(Localization.Core.Sending_MODE_SELECT_to_drive_return_damaged_blocks); sense = _dev.ModeSelect(md6, out senseBuf, true, false, _dev.Timeout, out _); if(sense) { - UpdateStatus?. - Invoke("Drive did not accept MODE SELECT command for persistent error reading, try another drive."); + UpdateStatus?.Invoke(Localization.Core. + Drive_did_not_accept_MODE_SELECT_command_for_persistent_error_reading); - AaruConsole.DebugWriteLine("Error: {0}", Sense.PrettifySense(senseBuf)); + AaruConsole.DebugWriteLine(Localization.Core.Error_0, Sense.PrettifySense(senseBuf)); - _dumpLog.WriteLine("Drive did not accept MODE SELECT command for persistent error reading, try another drive."); + _dumpLog.WriteLine(Localization.Core. + Drive_did_not_accept_MODE_SELECT_command_for_persistent_error_reading); } else runningPersistent = true; @@ -468,14 +478,25 @@ public partial class Dump if(_aborted) { currentTry.Extents = ExtentsConverter.ToMetadata(extents); - _dumpLog.WriteLine("Aborted!"); + _dumpLog.WriteLine(Localization.Core.Aborted); break; } - PulseProgress?.Invoke(string.Format("Retrying sector {0}, pass {1}, {3}{2}", badSector, pass, - forward ? "forward" : "reverse", - runningPersistent ? "recovering partial data, " : "")); + if(forward) + PulseProgress?.Invoke(runningPersistent + ? 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(runningPersistent + ? 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)); sense = _dev.Read12(out readBuffer, out senseBuf, 0, false, true, false, false, (uint)badSector, blockSize, 0, 1, false, _dev.Timeout, out double cmdDuration); @@ -491,8 +512,11 @@ public partial class Dump _resume.BadBlocks.Remove(badSector); extents.Add(badSector); outputFormat.WriteSector(readBuffer, 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(runningPersistent) outputFormat.WriteSector(readBuffer, badSector); @@ -525,8 +549,8 @@ public partial class Dump md6 = Modes.EncodeMode6(md, _dev.ScsiType); - UpdateStatus?.Invoke("Sending MODE SELECT to drive (return device to previous status)."); - _dumpLog.WriteLine("Sending MODE SELECT to drive (return device to previous status)."); + UpdateStatus?.Invoke(Localization.Core.Sending_MODE_SELECT_to_drive_return_device_to_previous_status); + _dumpLog.WriteLine(Localization.Core.Sending_MODE_SELECT_to_drive_return_device_to_previous_status); _dev.ModeSelect(md6, out _, true, false, _dev.Timeout, out _); } @@ -537,7 +561,7 @@ public partial class Dump _resume.BadBlocks.Sort(); 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); currentTry.Extents = ExtentsConverter.ToMetadata(extents); @@ -548,7 +572,7 @@ 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); outputFormat.SetDumpHardware(_resume.Tries); @@ -556,18 +580,21 @@ public partial class Dump 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) { - UpdateStatus?.Invoke("Aborted!"); - _dumpLog.WriteLine("Aborted!"); + UpdateStatus?.Invoke(Localization.Core.Aborted); + _dumpLog.WriteLine(Localization.Core.Aborted); return; } @@ -576,8 +603,8 @@ public partial class Dump if(_metadata) { - UpdateStatus?.Invoke("Creating sidecar."); - _dumpLog.WriteLine("Creating sidecar."); + UpdateStatus?.Invoke(Localization.Core.Creating_sidecar); + _dumpLog.WriteLine(Localization.Core.Creating_sidecar); var filters = new FiltersList(); IFilter filter = filters.GetFilter(_outputPath); var inputPlugin = ImageFormat.Detect(filter) as IMediaImage; @@ -585,7 +612,7 @@ 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; } @@ -605,14 +632,17 @@ public partial class Dump if(!_aborted) { totalChkDuration = (end - chkStart).TotalMilliseconds; - UpdateStatus?.Invoke($"Sidecar created in {(end - 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, + (end - chkStart).TotalSeconds)); - _dumpLog.WriteLine("Sidecar created in {0} seconds.", (end - 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, (end - chkStart).TotalSeconds); + + _dumpLog.WriteLine(Localization.Core.Average_checksum_speed_0_KiB_sec, blockSize * (double)(blocks + 1) / 1024 / (totalChkDuration / 1000)); if(_preSidecar != null) @@ -635,8 +665,11 @@ public partial class Dump o.type }).Distinct()) { - UpdateStatus?.Invoke($"Found filesystem {filesystem.type} at sector {filesystem.start}"); - _dumpLog.WriteLine("Found filesystem {0} at sector {1}", filesystem.type, filesystem.start); + UpdateStatus?.Invoke(string.Format(Localization.Core.Found_filesystem_0_at_sector_1, + filesystem.type, filesystem.start)); + + _dumpLog.WriteLine(Localization.Core.Found_filesystem_0_at_sector_1, filesystem.type, + filesystem.start); } sidecar.BlockMedia[0].Dimensions = Dimensions.DimensionsFromMediaType(dskType); @@ -658,7 +691,7 @@ public partial class Dump if(_dev.IsRemovable) sidecar.BlockMedia[0].DumpHardwareArray = _resume.Tries.ToArray(); - UpdateStatus?.Invoke("Writing metadata sidecar"); + UpdateStatus?.Invoke(Localization.Core.Writing_metadata_sidecar); var xmlFs = new FileStream(_outputPrefix + ".cicm.xml", FileMode.Create); @@ -670,20 +703,21 @@ 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)); UpdateStatus?.Invoke(""); Statistics.AddMedia(dskType, true); diff --git a/Aaru.Core/Devices/Dumping/PlayStationPortable/PlayStationPortable.cs b/Aaru.Core/Devices/Dumping/PlayStationPortable/PlayStationPortable.cs index f15566c02..d2eb4cdf5 100644 --- a/Aaru.Core/Devices/Dumping/PlayStationPortable/PlayStationPortable.cs +++ b/Aaru.Core/Devices/Dumping/PlayStationPortable/PlayStationPortable.cs @@ -58,24 +58,25 @@ public partial class Dump !_outputPlugin.SupportedMediaTypes.Contains(MediaType.MemoryStickProDuo) && !_outputPlugin.SupportedMediaTypes.Contains(MediaType.UMD)) { - _dumpLog.WriteLine("Selected output plugin does not support MemoryStick Duo or UMD, cannot dump..."); + _dumpLog.WriteLine(Localization.Core. + Selected_output_plugin_does_not_support_MemoryStick_Duo_or_UMD_cannot_dump); - StoppingErrorMessage?. - Invoke("Selected output plugin does not support MemoryStick Duo or UMD, cannot dump..."); + StoppingErrorMessage?.Invoke(Localization.Core. + Selected_output_plugin_does_not_support_MemoryStick_Duo_or_UMD_cannot_dump); return; } - UpdateStatus?.Invoke("Checking if media is UMD or MemoryStick..."); - _dumpLog.WriteLine("Checking if media is UMD or MemoryStick..."); + UpdateStatus?.Invoke(Localization.Core.Checking_if_media_is_UMD_or_MemoryStick); + _dumpLog.WriteLine(Localization.Core.Checking_if_media_is_UMD_or_MemoryStick); bool sense = _dev.ModeSense6(out byte[] buffer, out _, false, ScsiModeSensePageControl.Current, 0, _dev.Timeout, out _); if(sense) { - _dumpLog.WriteLine("Could not get MODE SENSE..."); - StoppingErrorMessage?.Invoke("Could not get MODE SENSE..."); + _dumpLog.WriteLine(Localization.Core.Could_not_get_MODE_SENSE); + StoppingErrorMessage?.Invoke(Localization.Core.Could_not_get_MODE_SENSE); return; } @@ -84,8 +85,8 @@ public partial class Dump if(!decoded.HasValue) { - _dumpLog.WriteLine("Could not decode MODE SENSE..."); - StoppingErrorMessage?.Invoke("Could not decode MODE SENSE..."); + _dumpLog.WriteLine(Localization.Core.Could_not_decode_MODE_SENSE); + StoppingErrorMessage?.Invoke(Localization.Core.Could_not_decode_MODE_SENSE); return; } @@ -102,8 +103,8 @@ public partial class Dump if(sense) { - _dumpLog.WriteLine("Could not read..."); - StoppingErrorMessage?.Invoke("Could not read..."); + _dumpLog.WriteLine(Localization.Core.Could_not_read); + StoppingErrorMessage?.Invoke(Localization.Core.Could_not_read); return; } @@ -124,16 +125,16 @@ public partial class Dump ushort sectorsPerFat = (ushort)((buffer[0x17] << 8) + buffer[0x16]); ushort rootStart = (ushort)((sectorsPerFat * 2) + fatStart); - UpdateStatus?.Invoke($"Reading root directory in sector {rootStart}..."); - _dumpLog.WriteLine("Reading root directory in sector {0}...", rootStart); + UpdateStatus?.Invoke(string.Format(Localization.Core.Reading_root_directory_in_sector_0, rootStart)); + _dumpLog.WriteLine(Localization.Core.Reading_root_directory_in_sector_0, rootStart); sense = _dev.Read12(out buffer, out _, 0, false, true, false, false, rootStart, 512, 0, 1, false, _dev.Timeout, out _); if(sense) { - StoppingErrorMessage?.Invoke("Could not read..."); - _dumpLog.WriteLine("Could not read..."); + StoppingErrorMessage?.Invoke(Localization.Core.Could_not_read); + _dumpLog.WriteLine(Localization.Core.Could_not_read); return; } @@ -148,11 +149,13 @@ public partial class Dump return; } - UpdateStatus?.Invoke($"FAT starts at sector {fatStart} and runs for {sectorsPerFat} sectors..."); - _dumpLog.WriteLine("FAT starts at sector {0} and runs for {1} sectors...", fatStart, sectorsPerFat); + UpdateStatus?.Invoke(string.Format(Localization.Core.FAT_starts_at_sector_0_and_runs_for_1_sectors, fatStart, + sectorsPerFat)); - UpdateStatus?.Invoke("Reading FAT..."); - _dumpLog.WriteLine("Reading FAT..."); + _dumpLog.WriteLine(Localization.Core.FAT_starts_at_sector_0_and_runs_for_1_sectors, fatStart, sectorsPerFat); + + UpdateStatus?.Invoke(Localization.Core.Reading_FAT); + _dumpLog.WriteLine(Localization.Core.Reading_FAT); byte[] fat = new byte[sectorsPerFat * 512]; @@ -170,8 +173,8 @@ public partial class Dump if(sense) { - StoppingErrorMessage?.Invoke("Could not read..."); - _dumpLog.WriteLine("Could not read..."); + StoppingErrorMessage?.Invoke(Localization.Core.Could_not_read); + _dumpLog.WriteLine(Localization.Core.Could_not_read); return; } @@ -181,8 +184,8 @@ public partial class Dump position += transfer; } - UpdateStatus?.Invoke("Traversing FAT..."); - _dumpLog.WriteLine("Traversing FAT..."); + UpdateStatus?.Invoke(Localization.Core.Traversing_FAT); + _dumpLog.WriteLine(Localization.Core.Traversing_FAT); ushort previousCluster = BitConverter.ToUInt16(fat, 4); @@ -208,6 +211,7 @@ public partial class Dump if(_outputPlugin is IWritableOpticalImage) DumpUmd(); else - StoppingErrorMessage?.Invoke("The specified plugin does not support storing optical disc images."); + StoppingErrorMessage?.Invoke(Localization.Core. + The_specified_plugin_does_not_support_storing_optical_disc_images); } } \ No newline at end of file diff --git a/Aaru.Core/Devices/Dumping/PlayStationPortable/UMD.cs b/Aaru.Core/Devices/Dumping/PlayStationPortable/UMD.cs index 4e663364c..06b48d810 100644 --- a/Aaru.Core/Devices/Dumping/PlayStationPortable/UMD.cs +++ b/Aaru.Core/Devices/Dumping/PlayStationPortable/UMD.cs @@ -68,7 +68,7 @@ public partial class Dump if(_outputPlugin is not IWritableOpticalImage outputOptical) { - StoppingErrorMessage?.Invoke("Image is not writable, aborting..."); + StoppingErrorMessage?.Invoke(Localization.Core.Image_is_not_writable_aborting); return; } @@ -78,8 +78,8 @@ public partial class Dump if(sense) { - _dumpLog.WriteLine("Could not read..."); - StoppingErrorMessage?.Invoke("Could not read..."); + _dumpLog.WriteLine(Localization.Core.Could_not_read); + StoppingErrorMessage?.Invoke(Localization.Core.Could_not_read); return; } @@ -90,16 +90,16 @@ public partial class Dump ushort rootSize = (ushort)(((readBuffer[0x12] << 8) + readBuffer[0x11]) * 32 / 512); ushort umdStart = (ushort)(rootStart + rootSize); - UpdateStatus?.Invoke($"Reading root directory in sector {rootStart}..."); - _dumpLog.WriteLine("Reading root directory in sector {0}...", rootStart); + UpdateStatus?.Invoke(string.Format(Localization.Core.Reading_root_directory_in_sector_0, rootStart)); + _dumpLog.WriteLine(Localization.Core.Reading_root_directory_in_sector_0, rootStart); sense = _dev.Read12(out readBuffer, out _, 0, false, true, false, false, rootStart, 512, 0, 1, false, _dev.Timeout, out _); if(sense) { - _dumpLog.WriteLine("Could not read..."); - StoppingErrorMessage?.Invoke("Could not read..."); + _dumpLog.WriteLine(Localization.Core.Could_not_read); + StoppingErrorMessage?.Invoke(Localization.Core.Could_not_read); return; } @@ -113,41 +113,47 @@ public partial class Dump switch(totalSize) { case > 1073741824: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize / 1073741824d:F3} GiB)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_GiB, + blocks, blockSize, totalSize / 1073741824d)); break; case > 1048576: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize / 1048576d:F3} MiB)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_MiB, + blocks, blockSize, totalSize / 1048576d)); break; case > 1024: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize / 1024d:F3} KiB)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_KiB, + blocks, blockSize, totalSize / 1024d)); break; default: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of {totalSize - } bytes)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_bytes, + blocks, blockSize, totalSize)); break; } - UpdateStatus?.Invoke($"Device reports {blocks} blocks ({blocks * blockSize} bytes)."); - UpdateStatus?.Invoke($"Device can read {blocksToRead} blocks at a time."); - UpdateStatus?.Invoke($"Device reports {blockSize} bytes per logical block."); - UpdateStatus?.Invoke($"Device reports {2048} bytes per physical block."); - UpdateStatus?.Invoke($"SCSI device type: {_dev.ScsiType}."); - UpdateStatus?.Invoke($"Media identified as {dskType}."); - UpdateStatus?.Invoke($"Media part number is {mediaPartNumber}."); - _dumpLog.WriteLine("Device reports {0} blocks ({1} bytes).", blocks, blocks * 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.", 2048); - _dumpLog.WriteLine("SCSI device type: {0}.", _dev.ScsiType); - _dumpLog.WriteLine("Media identified as {0}.", dskType); - _dumpLog.WriteLine("Media part number is {0}.", mediaPartNumber); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_blocks_1_bytes, blocks, + blocks * blockSize)); + + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_can_read_0_blocks_at_a_time, blocksToRead)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_bytes_per_logical_block, blockSize)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_bytes_per_physical_block, blockSize)); + UpdateStatus?.Invoke(string.Format(Localization.Core.SCSI_device_type_0, _dev.ScsiType)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Media_identified_as_0, dskType)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Media_part_number_is_0, mediaPartNumber)); + _dumpLog.WriteLine(Localization.Core.Device_reports_0_blocks_1_bytes, blocks, blocks * blockSize); + _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, blockSize); + _dumpLog.WriteLine(Localization.Core.SCSI_device_type_0, _dev.ScsiType); + _dumpLog.WriteLine(Localization.Core.Media_identified_as_0, dskType); + _dumpLog.WriteLine(Localization.Core.Media_part_number_is_0, mediaPartNumber); bool ret; @@ -158,11 +164,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(outputOptical.ErrorMessage); - StoppingErrorMessage?.Invoke("Error creating output image, not continuing." + Environment.NewLine + - outputOptical.ErrorMessage); + StoppingErrorMessage?.Invoke(Localization.Core.Error_creating_output_image_not_continuing + + Environment.NewLine + outputOptical.ErrorMessage); return; } @@ -194,13 +200,13 @@ 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; } if(_resume.NextBlock > 0) - _dumpLog.WriteLine("Resuming from block {0}.", _resume.NextBlock); + _dumpLog.WriteLine(Localization.Core.Resuming_from_block_0, _resume.NextBlock); bool newTrim = false; @@ -213,8 +219,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; } @@ -230,8 +236,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); sense = _dev.Read12(out readBuffer, out senseBuf, 0, false, true, false, false, (uint)(umdStart + (i * 4)), 512, 0, blocksToRead * 4, false, _dev.Timeout, out double cmdDuration); @@ -270,7 +277,7 @@ public partial class Dump 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; } @@ -297,20 +304,20 @@ 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 @@ -320,7 +327,7 @@ public partial class Dump newTrim) { start = DateTime.UtcNow; - _dumpLog.WriteLine("Trimming skipped sectors"); + _dumpLog.WriteLine(Localization.Core.Trimming_skipped_sectors); ulong[] tmpArray = _resume.BadBlocks.ToArray(); InitProgress?.Invoke(); @@ -330,12 +337,12 @@ public partial class Dump if(_aborted) { currentTry.Extents = ExtentsConverter.ToMetadata(extents); - _dumpLog.WriteLine("Aborted!"); + _dumpLog.WriteLine(Localization.Core.Aborted); break; } - PulseProgress?.Invoke($"Trimming sector {badSector}"); + PulseProgress?.Invoke(string.Format(Localization.Core.Trimming_sector_0, badSector)); sense = _dev.Read12(out readBuffer, out senseBuf, 0, false, true, false, false, (uint)(umdStart + (badSector * 4)), 512, 0, 4, false, _dev.Timeout, out double _); @@ -354,7 +361,7 @@ public partial class Dump EndProgress?.Invoke(); end = DateTime.UtcNow; - _dumpLog.WriteLine("Trimming finished in {0} seconds.", (end - start).TotalSeconds); + _dumpLog.WriteLine(Localization.Core.Trimming_finished_in_0_seconds, (end - start).TotalSeconds); } #endregion Trimming @@ -441,17 +448,18 @@ public partial class Dump md6 = Modes.EncodeMode6(md, _dev.ScsiType); - _dumpLog.WriteLine("Sending MODE SELECT to drive (return damaged blocks)."); + _dumpLog.WriteLine(Localization.Core.Sending_MODE_SELECT_to_drive_return_damaged_blocks); sense = _dev.ModeSelect(md6, out senseBuf, true, false, _dev.Timeout, out _); if(sense) { - UpdateStatus?. - Invoke("Drive did not accept MODE SELECT command for persistent error reading, try another drive."); + UpdateStatus?.Invoke(Localization.Core. + Drive_did_not_accept_MODE_SELECT_command_for_persistent_error_reading); - AaruConsole.DebugWriteLine("Error: {0}", Sense.PrettifySense(senseBuf)); + AaruConsole.DebugWriteLine(Localization.Core.Error_0, Sense.PrettifySense(senseBuf)); - _dumpLog.WriteLine("Drive did not accept MODE SELECT command for persistent error reading, try another drive."); + _dumpLog.WriteLine(Localization.Core. + Drive_did_not_accept_MODE_SELECT_command_for_persistent_error_reading); } else runningPersistent = true; @@ -466,13 +474,25 @@ public partial class Dump if(_aborted) { currentTry.Extents = ExtentsConverter.ToMetadata(extents); - _dumpLog.WriteLine("Aborted!"); + _dumpLog.WriteLine(Localization.Core.Aborted); break; } - PulseProgress?.Invoke($"Retrying sector {badSector}, pass {pass}, { - (runningPersistent ? "recovering partial data, " : "")}{(forward ? "forward" : "reverse")}"); + if(forward) + PulseProgress?.Invoke(runningPersistent + ? 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(runningPersistent + ? 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)); sense = _dev.Read12(out readBuffer, out senseBuf, 0, false, true, false, false, (uint)(umdStart + (badSector * 4)), 512, 0, 4, false, _dev.Timeout, @@ -490,9 +510,10 @@ public partial class Dump extents.Add(badSector); outputOptical.WriteSector(readBuffer, badSector); - UpdateStatus?.Invoke($"Correctly retried block {badSector} in pass {pass}."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Correctly_retried_block_0_in_pass_1, badSector, + pass)); - _dumpLog.WriteLine("Correctly retried block {0} in pass {1}.", badSector, pass); + _dumpLog.WriteLine(Localization.Core.Correctly_retried_block_0_in_pass_1, badSector, pass); } else if(runningPersistent) outputOptical.WriteSector(readBuffer, badSector); @@ -525,7 +546,7 @@ public partial class Dump md6 = Modes.EncodeMode6(md, _dev.ScsiType); - _dumpLog.WriteLine("Sending MODE SELECT to drive (return device to previous status)."); + _dumpLog.WriteLine(Localization.Core.Sending_MODE_SELECT_to_drive_return_device_to_previous_status); _dev.ModeSelect(md6, out _, true, false, _dev.Timeout, out _); } @@ -537,7 +558,7 @@ public partial class Dump _resume.BadBlocks.Sort(); 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); currentTry.Extents = ExtentsConverter.ToMetadata(extents); @@ -549,7 +570,7 @@ public partial class Dump }; if(!outputOptical.SetMetadata(metadata)) - ErrorMessage?.Invoke("Error {0} setting metadata, continuing..." + Environment.NewLine + + ErrorMessage?.Invoke(Localization.Core.Error_0_setting_metadata + Environment.NewLine + outputOptical.ErrorMessage); outputOptical.SetDumpHardware(_resume.Tries); @@ -557,17 +578,17 @@ public partial class Dump if(_preSidecar != null) outputOptical.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; outputOptical.Close(); DateTime closeEnd = DateTime.Now; - _dumpLog.WriteLine("Closed in {0} seconds.", (closeEnd - closeStart).TotalSeconds); + _dumpLog.WriteLine(Localization.Core.Closed_in_0_seconds, (closeEnd - closeStart).TotalSeconds); if(_aborted) { - UpdateStatus?.Invoke("Aborted!"); - _dumpLog.WriteLine("Aborted!"); + UpdateStatus?.Invoke(Localization.Core.Aborted); + _dumpLog.WriteLine(Localization.Core.Aborted); return; } @@ -579,20 +600,21 @@ 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)); UpdateStatus?.Invoke(""); Statistics.AddMedia(dskType, true); diff --git a/Aaru.Core/Devices/Dumping/ResumeSupport.cs b/Aaru.Core/Devices/Dumping/ResumeSupport.cs index a05d06f59..0703edfc3 100644 --- a/Aaru.Core/Devices/Dumping/ResumeSupport.cs +++ b/Aaru.Core/Devices/Dumping/ResumeSupport.cs @@ -74,23 +74,33 @@ static class ResumeSupport if(resume != null) { if(!isLba) - throw new NotImplementedException("Resuming CHS devices is currently not supported."); + throw new NotImplementedException(Localization.Core.Resuming_CHS_devices_is_currently_not_supported); if(resume.Tape != isTape) - throw new InvalidOperationException($"Resume file specifies a {(resume.Tape ? "tape" : "not tape") - } device but you're requesting to dump a {(isTape ? "tape" : "not tape")} device, not continuing..."); + { + if(resume.Tape) + throw new InvalidOperationException(Localization.Core.Resume_specifies_tape_but_device_is_not_tape); + + throw new InvalidOperationException(Localization.Core.Resume_specifies_not_tape_but_device_is_tape); + } if(resume.Removable != removable && !force) - throw new InvalidOperationException($"Resume file specifies a { - (resume.Removable ? "removable" : "non removable")} device but you're requesting to dump a { - (removable ? "removable" : "non removable")} device, not continuing..."); + { + if(resume.Removable) + throw new InvalidOperationException(Localization.Core. + Resume_specifies_removable_but_device_is_non_removable); + + throw new InvalidOperationException(Localization.Core. + Resume_specifies_non_removable_but_device_is_removable); + } if(!isTape && resume.LastBlock != blocks - 1 && !force) - throw new InvalidOperationException($"Resume file specifies a device with {resume.LastBlock + 1 - } blocks but you're requesting to dump one with {blocks} blocks, not continuing..."); + throw new + InvalidOperationException(string.Format(Localization.Core.Resume_file_different_number_of_blocks_not_continuing, + resume.LastBlock + 1, blocks)); foreach(DumpHardwareType oldTry in resume.Tries) { @@ -98,26 +108,32 @@ static class ResumeSupport !force) { if(oldTry.Manufacturer != manufacturer) - throw new InvalidOperationException($"Resume file specifies a device manufactured by { - oldTry.Manufacturer} but you're requesting to dump one by {manufacturer - }, not continuing..."); + throw new + InvalidOperationException(string. + Format(Localization.Core.Resume_file_different_manufacturer_not_continuing, + oldTry.Manufacturer, manufacturer)); if(oldTry.Model != model) - throw new InvalidOperationException($"Resume file specifies a device model {oldTry.Model - } but you're requesting to dump model {model}, not continuing..."); + throw new + InvalidOperationException(string. + Format(Localization.Core.Resume_file_different_model_not_continuing, + oldTry.Model, model)); if(oldTry.Serial != serial) - throw new InvalidOperationException($"Resume file specifies a device with serial {oldTry.Serial - } but you're requesting to dump one with serial {serial}, not continuing..."); + throw new + InvalidOperationException(string. + Format(Localization.Core.Resume_file_different_serial_number_not_continuing, + oldTry.Serial, serial)); if(oldTry.Firmware != firmware) - throw new InvalidOperationException($"Resume file specifies a device with firmware version { - oldTry.Firmware} but you're requesting to dump one with firmware version {firmware - }, not continuing..."); + throw new + InvalidOperationException(string. + Format(Localization.Core.Resume_file_different_firmware_revision_not_continuing, + oldTry.Firmware, firmware)); } if(oldTry.Software == null) - throw new InvalidOperationException("Found corrupt resume file, cannot continue..."); + throw new InvalidOperationException(Localization.Core.Found_corrupt_resume_file_cannot_continue); if(oldTry.Software.Name != "Aaru" || oldTry.Software.OperatingSystem != platform.ToString() || diff --git a/Aaru.Core/Devices/Dumping/SCSI.cs b/Aaru.Core/Devices/Dumping/SCSI.cs index 91ac8d44b..608ddebdb 100644 --- a/Aaru.Core/Devices/Dumping/SCSI.cs +++ b/Aaru.Core/Devices/Dumping/SCSI.cs @@ -60,10 +60,11 @@ public partial class Dump if(decSense.HasValue) { - ErrorMessage?.Invoke($"Device not ready. Sense {decSense.Value.SenseKey} ASC {decSense.Value.ASC - :X2}h ASCQ {decSense.Value.ASCQ:X2}h"); + ErrorMessage?.Invoke(string.Format(Localization.Core.Device_not_ready_Sense, + decSense.Value.SenseKey, decSense.Value.ASC, + decSense.Value.ASCQ)); - _dumpLog.WriteLine("Device not ready. Sense {0} ASC {1:X2}h ASCQ {2:X2}h", decSense.Value.SenseKey, + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); // Just retry, for 5 times @@ -83,7 +84,7 @@ public partial class Dump while(leftRetries > 0) { - PulseProgress?.Invoke("Waiting for drive to become ready"); + PulseProgress?.Invoke(Localization.Core.Waiting_for_drive_to_become_ready); Thread.Sleep(2000); sense = _dev.ScsiTestUnitReady(out senseBuf, _dev.Timeout, out _); @@ -94,10 +95,11 @@ public partial class Dump if(decSense.HasValue) { - ErrorMessage?.Invoke($"Device not ready. Sense {decSense.Value.SenseKey} ASC { - decSense.Value.ASC:X2}h ASCQ {decSense.Value.ASCQ:X2}h"); + ErrorMessage?.Invoke(string.Format(Localization.Core.Device_not_ready_Sense, + decSense.Value.SenseKey, decSense.Value.ASC, + decSense.Value.ASCQ)); - _dumpLog.WriteLine("Device not ready. Sense {0} ASC {1:X2}h ASCQ {2:X2}h", + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); } @@ -107,7 +109,7 @@ public partial class Dump if(sense) { - StoppingErrorMessage?.Invoke("Please insert media in drive"); + StoppingErrorMessage?.Invoke(Localization.Core.Please_insert_media_in_drive); return; } @@ -120,7 +122,7 @@ public partial class Dump while(leftRetries > 0) { - PulseProgress?.Invoke("Waiting for drive to become ready"); + PulseProgress?.Invoke(Localization.Core.Waiting_for_drive_to_become_ready); Thread.Sleep(2000); sense = _dev.ScsiTestUnitReady(out senseBuf, _dev.Timeout, out _); @@ -131,10 +133,11 @@ public partial class Dump if(decSense.HasValue) { - ErrorMessage?.Invoke($"Device not ready. Sense {decSense.Value.SenseKey} ASC { - decSense.Value.ASC:X2}h ASCQ {decSense.Value.ASCQ:X2}h"); + ErrorMessage?.Invoke(string.Format(Localization.Core.Device_not_ready_Sense, + decSense.Value.SenseKey, decSense.Value.ASC, + decSense.Value.ASCQ)); - _dumpLog.WriteLine("Device not ready. Sense {0}h ASC {1:X2}h ASCQ {2:X2}h", + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); } @@ -144,8 +147,9 @@ public partial class Dump if(sense) { - StoppingErrorMessage?.Invoke($"Error testing unit was ready:\n{ - Sense.PrettifySense(senseBuf)}"); + StoppingErrorMessage?. + Invoke(string.Format(Localization.Core.Error_testing_unit_was_ready_0, + Sense.PrettifySense(senseBuf))); return; } @@ -172,7 +176,7 @@ public partial class Dump while(leftRetries > 0) { - PulseProgress?.Invoke("Waiting for drive to become ready"); + PulseProgress?.Invoke(Localization.Core.Waiting_for_drive_to_become_ready); Thread.Sleep(2000); sense = _dev.ScsiTestUnitReady(out senseBuf, _dev.Timeout, out _); @@ -183,10 +187,11 @@ public partial class Dump if(decSense.HasValue) { - ErrorMessage?.Invoke($"Device not ready. Sense {decSense.Value.SenseKey} ASC { - decSense.Value.ASC:X2}h ASCQ {decSense.Value.ASCQ:X2}h"); + ErrorMessage?.Invoke(string.Format(Localization.Core.Device_not_ready_Sense, + decSense.Value.SenseKey, decSense.Value.ASC, + decSense.Value.ASCQ)); - _dumpLog.WriteLine("Device not ready. Sense {0}h ASC {1:X2}h ASCQ {2:X2}h", + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); } @@ -196,8 +201,9 @@ public partial class Dump if(sense) { - StoppingErrorMessage?.Invoke($"Error testing unit was ready:\n{ - Sense.PrettifySense(senseBuf)}"); + StoppingErrorMessage?. + Invoke(string.Format(Localization.Core.Error_testing_unit_was_ready_0, + Sense.PrettifySense(senseBuf))); return; } @@ -205,15 +211,15 @@ public partial class Dump break; } default: - StoppingErrorMessage?.Invoke($"Error testing unit was ready:\n{Sense.PrettifySense(senseBuf) - }"); + StoppingErrorMessage?.Invoke(string.Format(Localization.Core.Error_testing_unit_was_ready_0, + Sense.PrettifySense(senseBuf))); return; } } else { - StoppingErrorMessage?.Invoke("Unknown testing unit was ready."); + StoppingErrorMessage?.Invoke(Localization.Core.Unknown_testing_unit_was_ready); return; } @@ -227,7 +233,7 @@ public partial class Dump case PeripheralDeviceTypes.SequentialAccess: if(_dumpRaw) { - StoppingErrorMessage?.Invoke("Tapes cannot be dumped raw."); + StoppingErrorMessage?.Invoke(Localization.Core.Tapes_cannot_be_dumped_raw); return; } @@ -235,15 +241,16 @@ public partial class Dump if(_outputPlugin is IWritableTapeImage) Ssc(); else - StoppingErrorMessage?. - Invoke("The specified plugin does not support storing streaming tape images."); + StoppingErrorMessage?.Invoke(Localization.Core. + The_specified_plugin_does_not_support_storing_streaming_tape_images); return; case PeripheralDeviceTypes.MultiMediaDevice: if(_outputPlugin is IWritableOpticalImage) Mmc(); else - StoppingErrorMessage?.Invoke("The specified plugin does not support storing optical disc images."); + StoppingErrorMessage?.Invoke(Localization.Core. + The_specified_plugin_does_not_support_storing_optical_disc_images); return; case PeripheralDeviceTypes.BridgingExpander diff --git a/Aaru.Core/Devices/Dumping/SSC.cs b/Aaru.Core/Devices/Dumping/SSC.cs index 0486379f9..cddeb60b9 100644 --- a/Aaru.Core/Devices/Dumping/SSC.cs +++ b/Aaru.Core/Devices/Dumping/SSC.cs @@ -81,10 +81,10 @@ partial class Dump if(decSense.HasValue && decSense.Value.SenseKey != SenseKeys.NoSense) { - _dumpLog.WriteLine("Device not ready. Sense {0}h ASC {1:X2}h ASCQ {2:X2}h", decSense.Value.SenseKey, - decSense.Value.ASC, decSense.Value.ASCQ); + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, decSense.Value.ASC, + decSense.Value.ASCQ); - StoppingErrorMessage?.Invoke("Drive has status error, please correct. Sense follows..." + + StoppingErrorMessage?.Invoke(Localization.Core.Drive_has_status_error_please_correct_Sense_follows + Environment.NewLine + decSense.Value.Description); return; @@ -96,8 +96,8 @@ partial class Dump decSense.Value.ASCQ != 0x04 && decSense.Value.SenseKey != SenseKeys.IllegalRequest) { - _dumpLog.WriteLine("Rewinding, please wait..."); - PulseProgress?.Invoke("Rewinding, please wait..."); + _dumpLog.WriteLine(Localization.Core.Rewinding_please_wait); + PulseProgress?.Invoke(Localization.Core.Rewinding_please_wait); // Rewind, let timeout apply _dev.Rewind(out senseBuf, _dev.Timeout, out duration); @@ -106,7 +106,7 @@ partial class Dump // TODO: Pause? do { - PulseProgress?.Invoke("Rewinding, please wait..."); + PulseProgress?.Invoke(Localization.Core.Rewinding_please_wait); _dev.RequestSense(out senseBuf, _dev.Timeout, out duration); decSense = Sense.Decode(senseBuf); } while(decSense is { ASC: 0x00, ASCQ: 0x1A or not (0x04 and 0x00) }); @@ -119,12 +119,12 @@ partial class Dump ((decSense.Value.ASC == 0x00 && decSense.Value.ASCQ != 0x04 && decSense.Value.ASCQ != 0x00) || decSense.Value.ASC != 0x00)) { - StoppingErrorMessage?.Invoke("Drive could not rewind, please correct. Sense follows..." + + StoppingErrorMessage?.Invoke(Localization.Core.Drive_could_not_rewind_please_correct_Sense_follows + Environment.NewLine + decSense.Value.Description); - _dumpLog.WriteLine("Drive could not rewind, please correct. Sense follows..."); + _dumpLog.WriteLine(Localization.Core.Drive_could_not_rewind_please_correct_Sense_follows); - _dumpLog.WriteLine("Device not ready. Sense {0}h ASC {1:X2}h ASCQ {2:X2}h", decSense.Value.SenseKey, + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); return; @@ -145,12 +145,12 @@ partial class Dump decSense.Value.SenseKey != SenseKeys.IllegalRequest))) { - StoppingErrorMessage?.Invoke("Could not get position. Sense follows..." + Environment.NewLine + - decSense.Value.Description); + StoppingErrorMessage?.Invoke(Localization.Core.Could_not_get_position_Sense_follows + + Environment.NewLine + decSense.Value.Description); - _dumpLog.WriteLine("Could not get position. Sense follows..."); + _dumpLog.WriteLine(Localization.Core.Could_not_get_position_Sense_follows); - _dumpLog.WriteLine("Device not ready. Sense {0}h ASC {1:X2}h ASCQ {2:X2}h", decSense.Value.SenseKey, + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); return; @@ -161,21 +161,21 @@ partial class Dump // Not in partition 0 if(cmdBuf[1] != 0) { - UpdateStatus?.Invoke("Drive not in partition 0. Rewinding, please wait..."); - _dumpLog.WriteLine("Drive not in partition 0. Rewinding, please wait..."); + UpdateStatus?.Invoke(Localization.Core.Drive_not_in_partition_0_Rewinding_please_wait); + _dumpLog.WriteLine(Localization.Core.Drive_not_in_partition_0_Rewinding_please_wait); // Rewind, let timeout apply sense = _dev.Locate(out senseBuf, false, 0, 0, _dev.Timeout, out duration); if(sense) { - StoppingErrorMessage?.Invoke("Drive could not rewind, please correct. Sense follows..." + + StoppingErrorMessage?.Invoke(Localization.Core.Drive_could_not_rewind_please_correct_Sense_follows + Environment.NewLine + decSense?.Description); - _dumpLog.WriteLine("Drive could not rewind, please correct. Sense follows..."); + _dumpLog.WriteLine(Localization.Core.Drive_could_not_rewind_please_correct_Sense_follows); - _dumpLog.WriteLine("Device not ready. Sense {0}h ASC {1:X2}h ASCQ {2:X2}h", decSense?.SenseKey, - decSense?.ASC, decSense?.ASCQ); + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense?.SenseKey, decSense?.ASC, + decSense?.ASCQ); return; } @@ -185,7 +185,7 @@ partial class Dump do { Thread.Sleep(1000); - PulseProgress?.Invoke("Rewinding, please wait..."); + PulseProgress?.Invoke(Localization.Core.Rewinding_please_wait); _dev.RequestSense(out senseBuf, _dev.Timeout, out duration); decSense = Sense.Decode(senseBuf); } while(decSense is { ASC: 0x00, ASCQ: 0x1A or 0x19 }); @@ -195,12 +195,12 @@ partial class Dump ((decSense.Value.ASC == 0x00 && decSense.Value.ASCQ != 0x04 && decSense.Value.ASCQ != 0x00) || decSense.Value.ASC != 0x00)) { - StoppingErrorMessage?.Invoke("Drive could not rewind, please correct. Sense follows..." + + StoppingErrorMessage?.Invoke(Localization.Core.Drive_could_not_rewind_please_correct_Sense_follows + Environment.NewLine + decSense.Value.Description); - _dumpLog.WriteLine("Drive could not rewind, please correct. Sense follows..."); + _dumpLog.WriteLine(Localization.Core.Drive_could_not_rewind_please_correct_Sense_follows); - _dumpLog.WriteLine("Device not ready. Sense {0}h ASC {1:X2}h ASCQ {2:X2}h", decSense.Value.SenseKey, + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); return; @@ -212,13 +212,13 @@ partial class Dump { decSense = Sense.Decode(senseBuf); - StoppingErrorMessage?.Invoke("Drive could not rewind, please correct. Sense follows..." + + StoppingErrorMessage?.Invoke(Localization.Core.Drive_could_not_rewind_please_correct_Sense_follows + Environment.NewLine + decSense?.Description); - _dumpLog.WriteLine("Drive could not rewind, please correct. Sense follows..."); + _dumpLog.WriteLine(Localization.Core.Drive_could_not_rewind_please_correct_Sense_follows); - _dumpLog.WriteLine("Device not ready. Sense {0}h ASC {1:X2}h ASCQ {2:X2}h", decSense?.SenseKey, - decSense?.ASC, decSense?.ASCQ); + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense?.SenseKey, decSense?.ASC, + decSense?.ASCQ); return; } @@ -226,8 +226,10 @@ partial class Dump // Still not in partition 0!!!? if(cmdBuf[1] != 0) { - StoppingErrorMessage?.Invoke("Drive could not rewind to partition 0 but no error occurred..."); - _dumpLog.WriteLine("Drive could not rewind to partition 0 but no error occurred..."); + StoppingErrorMessage?.Invoke(Localization.Core. + Drive_could_not_rewind_to_partition_0_but_no_error_occurred); + + _dumpLog.WriteLine(Localization.Core.Drive_could_not_rewind_to_partition_0_but_no_error_occurred); return; } @@ -241,7 +243,7 @@ partial class Dump byte[] mode6Data = null; byte[] mode10Data = null; - UpdateStatus?.Invoke("Requesting MODE SENSE (10)."); + UpdateStatus?.Invoke(Localization.Core.Requesting_MODE_SENSE_10); sense = _dev.ModeSense10(out cmdBuf, out senseBuf, false, true, ScsiModeSensePageControl.Current, 0x3F, 0xFF, 5, out duration); @@ -258,7 +260,7 @@ partial class Dump if(Modes.DecodeMode10(cmdBuf, _dev.ScsiType).HasValue) decMode = Modes.DecodeMode10(cmdBuf, _dev.ScsiType); - UpdateStatus?.Invoke("Requesting MODE SENSE (6)."); + UpdateStatus?.Invoke(Localization.Core.Requesting_MODE_SENSE_6); sense = _dev.ModeSense6(out cmdBuf, out senseBuf, false, ScsiModeSensePageControl.Current, 0x3F, 0x00, 5, out duration); @@ -285,7 +287,7 @@ partial class Dump blockSize = decMode.Value.Header.BlockDescriptors?[0].BlockLength ?? 0; - UpdateStatus?.Invoke($"Device reports {blocks} blocks."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_blocks, blocks)); } else blockSize = 1; @@ -308,15 +310,15 @@ partial class Dump if(dskType == MediaType.Unknown) dskType = MediaType.UnknownTape; - UpdateStatus?.Invoke($"SCSI device type: {_dev.ScsiType}."); - UpdateStatus?.Invoke($"SCSI medium type: {scsiMediumTypeTape}."); - UpdateStatus?.Invoke($"SCSI density type: {scsiDensityCodeTape}."); - UpdateStatus?.Invoke($"Media identified as {dskType}."); + UpdateStatus?.Invoke(string.Format(Localization.Core.SCSI_device_type_0, _dev.ScsiType)); + UpdateStatus?.Invoke(string.Format(Localization.Core.SCSI_medium_type_0, scsiMediumTypeTape)); + UpdateStatus?.Invoke(string.Format(Localization.Core.SCSI_density_type_0, scsiDensityCodeTape)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Media_identified_as_0, dskType)); - _dumpLog.WriteLine("SCSI device type: {0}.", _dev.ScsiType); - _dumpLog.WriteLine("SCSI medium type: {0}.", scsiMediumTypeTape); - _dumpLog.WriteLine("SCSI density type: {0}.", scsiDensityCodeTape); - _dumpLog.WriteLine("Media identified as {0}.", dskType); + _dumpLog.WriteLine(Localization.Core.SCSI_device_type_0, _dev.ScsiType); + _dumpLog.WriteLine(Localization.Core.SCSI_medium_type_0, scsiMediumTypeTape); + _dumpLog.WriteLine(Localization.Core.SCSI_density_type_0, scsiDensityCodeTape); + _dumpLog.WriteLine(Localization.Core.Media_identified_as_0, dskType); bool endOfMedia = false; ulong currentBlock = 0; @@ -352,13 +354,13 @@ partial class Dump if(!eom) { - StoppingErrorMessage?.Invoke("Drive could not return back. Sense follows..." + + StoppingErrorMessage?.Invoke(Localization.Core.Drive_could_not_return_back_Sense_follows + Environment.NewLine + decSense.Value.Description); - _dumpLog.WriteLine("Drive could not return back. Sense follows..."); + _dumpLog.WriteLine(Localization.Core.Drive_could_not_return_back_Sense_follows); - _dumpLog.WriteLine("Device not ready. Sense {0} ASC {1:X2}h ASCQ {2:X2}h", - decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, + decSense.Value.ASC, decSense.Value.ASCQ); return; } @@ -374,13 +376,13 @@ partial class Dump { decSense = Sense.Decode(senseBuf); - StoppingErrorMessage?.Invoke("Drive could not read. Sense follows..." + Environment.NewLine + - decSense.Value.Description); + StoppingErrorMessage?.Invoke(Localization.Core.Drive_could_not_read_Sense_follows + + Environment.NewLine + decSense.Value.Description); - _dumpLog.WriteLine("Drive could not read. Sense follows..."); + _dumpLog.WriteLine(Localization.Core.Drive_could_not_read_Sense_follows); - _dumpLog.WriteLine("Device not ready. Sense {0} ASC {1:X2}h ASCQ {2:X2}h", - decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, + decSense.Value.ASC, decSense.Value.ASCQ); return; } @@ -410,8 +412,11 @@ partial class Dump transferLen = blockSize; - UpdateStatus?.Invoke($"Blocksize changed to {blockSize} bytes at block {currentBlock}"); - _dumpLog.WriteLine("Blocksize changed to {0} bytes at block {1}", blockSize, currentBlock); + UpdateStatus?.Invoke(string.Format(Localization.Core.Blocksize_changed_to_0_bytes_at_block_1, + blockSize, currentBlock)); + + _dumpLog.WriteLine(Localization.Core.Blocksize_changed_to_0_bytes_at_block_1, blockSize, + currentBlock); sense = _dev.Space(out senseBuf, SscSpaceCodes.LogicalBlock, -1, _dev.Timeout, out duration); @@ -421,13 +426,14 @@ partial class Dump { decSense = Sense.Decode(senseBuf); - StoppingErrorMessage?.Invoke("Drive could not go back one block. Sense follows..." + + StoppingErrorMessage?.Invoke(Localization.Core. + Drive_could_not_go_back_one_block_Sense_follows + Environment.NewLine + decSense.Value.Description); - _dumpLog.WriteLine("Drive could not go back one block. Sense follows..."); + _dumpLog.WriteLine(Localization.Core.Drive_could_not_go_back_one_block_Sense_follows); - _dumpLog.WriteLine("Device not ready. Sense {0}h ASC {1:X2}h ASCQ {2:X2}h", - decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, + decSense.Value.ASC, decSense.Value.ASCQ); return; } @@ -435,32 +441,32 @@ partial class Dump goto firstRead; } - StoppingErrorMessage?.Invoke("Drive could not read. Sense follows..." + Environment.NewLine + - decSense.Value.Description); + StoppingErrorMessage?.Invoke(Localization.Core.Drive_could_not_read_Sense_follows + + Environment.NewLine + decSense.Value.Description); - _dumpLog.WriteLine("Drive could not read. Sense follows..."); + _dumpLog.WriteLine(Localization.Core.Drive_could_not_read_Sense_follows); - _dumpLog.WriteLine("Device not ready. Sense {0} ASC {1:X2}h ASCQ {2:X2}h", decSense.Value.SenseKey, + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); return; } else { - StoppingErrorMessage?.Invoke("Drive could not read. Sense follows..." + Environment.NewLine + - decSense.Value.Description); + StoppingErrorMessage?.Invoke(Localization.Core.Drive_could_not_read_Sense_follows + + Environment.NewLine + decSense.Value.Description); - _dumpLog.WriteLine("Drive could not read. Sense follows..."); + _dumpLog.WriteLine(Localization.Core.Drive_could_not_read_Sense_follows); - _dumpLog.WriteLine("Device not ready. Sense {0} ASC {1:X2}h ASCQ {2:X2}h", decSense.Value.SenseKey, + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); return; } else { - StoppingErrorMessage?.Invoke("Cannot read device, don't know why, exiting..."); - _dumpLog.WriteLine("Cannot read device, don't know why, exiting..."); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_read_device_dont_know_why_exiting); + _dumpLog.WriteLine(Localization.Core.Cannot_read_device_dont_know_why_exiting); return; } @@ -480,12 +486,12 @@ partial class Dump if(!eom) { - StoppingErrorMessage?.Invoke("Drive could not return back. Sense follows..." + Environment.NewLine + - decSense.Value.Description); + StoppingErrorMessage?.Invoke(Localization.Core.Drive_could_not_return_back_Sense_follows + + Environment.NewLine + decSense.Value.Description); - _dumpLog.WriteLine("Drive could not return back. Sense follows..."); + _dumpLog.WriteLine(Localization.Core.Drive_could_not_return_back_Sense_follows); - _dumpLog.WriteLine("Device not ready. Sense {0} ASC {1:X2}h ASCQ {2:X2}h", decSense.Value.SenseKey, + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); return; @@ -502,7 +508,7 @@ 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; } @@ -510,8 +516,8 @@ partial class Dump bool canLocateLong = false; bool canLocate = false; - UpdateStatus?.Invoke("Positioning tape to block 1."); - _dumpLog.WriteLine("Positioning tape to block 1"); + UpdateStatus?.Invoke(Localization.Core.Positioning_tape_to_block_1); + _dumpLog.WriteLine(Localization.Core.Positioning_tape_to_block_1); sense = _dev.Locate16(out senseBuf, 1, _dev.Timeout, out _); @@ -526,8 +532,8 @@ partial class Dump if(position == 1) { canLocateLong = true; - UpdateStatus?.Invoke("LOCATE LONG works."); - _dumpLog.WriteLine("LOCATE LONG works."); + UpdateStatus?.Invoke(Localization.Core.LOCATE_LONG_works); + _dumpLog.WriteLine(Localization.Core.LOCATE_LONG_works); } } } @@ -545,16 +551,16 @@ partial class Dump if(position == 1) { canLocate = true; - UpdateStatus?.Invoke("LOCATE works."); - _dumpLog.WriteLine("LOCATE works."); + UpdateStatus?.Invoke(Localization.Core.LOCATE_works); + _dumpLog.WriteLine(Localization.Core.LOCATE_works); } } } if(_resume.NextBlock > 0) { - UpdateStatus?.Invoke($"Positioning tape to block {_resume.NextBlock}."); - _dumpLog.WriteLine("Positioning tape to block {0}.", _resume.NextBlock); + UpdateStatus?.Invoke(string.Format(Localization.Core.Positioning_tape_to_block_0, _resume.NextBlock)); + _dumpLog.WriteLine(Localization.Core.Positioning_tape_to_block_0, _resume.NextBlock); if(canLocateLong) { @@ -568,20 +574,20 @@ partial class Dump { if(!_force) { - _dumpLog. - WriteLine("Could not check current position, unable to resume. If you want to continue use force."); + _dumpLog.WriteLine(Localization.Core. + Could_not_check_current_position_unable_to_resume_If_you_want_to_continue_use_force); - StoppingErrorMessage?. - Invoke("Could not check current position, unable to resume. If you want to continue use force."); + StoppingErrorMessage?.Invoke(Localization.Core. + Could_not_check_current_position_unable_to_resume_If_you_want_to_continue_use_force); return; } - _dumpLog. - WriteLine("Could not check current position, unable to resume. Dumping from the start."); + _dumpLog.WriteLine(Localization.Core. + Could_not_check_current_position_unable_to_resume_Dumping_from_the_start); - ErrorMessage?. - Invoke("Could not check current position, unable to resume. Dumping from the start."); + ErrorMessage?.Invoke(Localization.Core. + Could_not_check_current_position_unable_to_resume_Dumping_from_the_start); canLocateLong = false; } @@ -593,20 +599,20 @@ partial class Dump { if(!_force) { - _dumpLog. - WriteLine("Current position is not as expected, unable to resume. If you want to continue use force."); + _dumpLog.WriteLine(Localization.Core. + Current_position_is_not_as_expected_unable_to_resume_If_you_want_to_continue_use_force); - StoppingErrorMessage?. - Invoke("Current position is not as expected, unable to resume. If you want to continue use force."); + StoppingErrorMessage?.Invoke(Localization.Core. + Current_position_is_not_as_expected_unable_to_resume_If_you_want_to_continue_use_force); return; } - _dumpLog. - WriteLine("Current position is not as expected, unable to resume. Dumping from the start."); + _dumpLog.WriteLine(Localization.Core. + Current_position_is_not_as_expected_unable_to_resume_Dumping_from_the_start); - ErrorMessage?. - Invoke("Current position is not as expected, unable to resume. Dumping from the start."); + ErrorMessage?.Invoke(Localization.Core. + Current_position_is_not_as_expected_unable_to_resume_Dumping_from_the_start); canLocateLong = false; } @@ -616,17 +622,21 @@ partial class Dump { if(!_force) { - _dumpLog. - WriteLine("Cannot reposition tape, unable to resume. If you want to continue use force."); + _dumpLog.WriteLine(Localization.Core. + Cannot_reposition_tape_unable_to_resume_If_you_want_to_continue_use_force); - StoppingErrorMessage?. - Invoke("Cannot reposition tape, unable to resume. If you want to continue use force."); + StoppingErrorMessage?.Invoke(Localization.Core. + Cannot_reposition_tape_unable_to_resume_If_you_want_to_continue_use_force); return; } - _dumpLog.WriteLine("Cannot reposition tape, unable to resume. Dumping from the start."); - ErrorMessage?.Invoke("Cannot reposition tape, unable to resume. Dumping from the start."); + _dumpLog.WriteLine(Localization.Core. + Cannot_reposition_tape_unable_to_resume_Dumping_from_the_start); + + ErrorMessage?.Invoke(Localization.Core. + Cannot_reposition_tape_unable_to_resume_Dumping_from_the_start); + canLocateLong = false; } } @@ -642,20 +652,20 @@ partial class Dump { if(!_force) { - _dumpLog. - WriteLine("Could not check current position, unable to resume. If you want to continue use force."); + _dumpLog.WriteLine(Localization.Core. + Could_not_check_current_position_unable_to_resume_If_you_want_to_continue_use_force); - StoppingErrorMessage?. - Invoke("Could not check current position, unable to resume. If you want to continue use force."); + StoppingErrorMessage?.Invoke(Localization.Core. + Could_not_check_current_position_unable_to_resume_If_you_want_to_continue_use_force); return; } - _dumpLog. - WriteLine("Could not check current position, unable to resume. Dumping from the start."); + _dumpLog.WriteLine(Localization.Core. + Could_not_check_current_position_unable_to_resume_Dumping_from_the_start); - ErrorMessage?. - Invoke("Could not check current position, unable to resume. Dumping from the start."); + ErrorMessage?.Invoke(Localization.Core. + Could_not_check_current_position_unable_to_resume_Dumping_from_the_start); canLocate = false; } @@ -667,20 +677,20 @@ partial class Dump { if(!_force) { - _dumpLog. - WriteLine("Current position is not as expected, unable to resume. If you want to continue use force."); + _dumpLog.WriteLine(Localization.Core. + Current_position_is_not_as_expected_unable_to_resume_If_you_want_to_continue_use_force); - StoppingErrorMessage?. - Invoke("Current position is not as expected, unable to resume. If you want to continue use force."); + StoppingErrorMessage?.Invoke(Localization.Core. + Current_position_is_not_as_expected_unable_to_resume_If_you_want_to_continue_use_force); return; } - _dumpLog. - WriteLine("Current position is not as expected, unable to resume. Dumping from the start."); + _dumpLog.WriteLine(Localization.Core. + Current_position_is_not_as_expected_unable_to_resume_Dumping_from_the_start); - ErrorMessage?. - Invoke("Current position is not as expected, unable to resume. Dumping from the start."); + ErrorMessage?.Invoke(Localization.Core. + Current_position_is_not_as_expected_unable_to_resume_Dumping_from_the_start); canLocate = false; } @@ -690,17 +700,21 @@ partial class Dump { if(!_force) { - _dumpLog. - WriteLine("Cannot reposition tape, unable to resume. If you want to continue use force."); + _dumpLog.WriteLine(Localization.Core. + Cannot_reposition_tape_unable_to_resume_If_you_want_to_continue_use_force); - StoppingErrorMessage?. - Invoke("Cannot reposition tape, unable to resume. If you want to continue use force."); + StoppingErrorMessage?.Invoke(Localization.Core. + Cannot_reposition_tape_unable_to_resume_If_you_want_to_continue_use_force); return; } - _dumpLog.WriteLine("Cannot reposition tape, unable to resume. Dumping from the start."); - ErrorMessage?.Invoke("Cannot reposition tape, unable to resume. Dumping from the start."); + _dumpLog.WriteLine(Localization.Core. + Cannot_reposition_tape_unable_to_resume_Dumping_from_the_start); + + ErrorMessage?.Invoke(Localization.Core. + Cannot_reposition_tape_unable_to_resume_Dumping_from_the_start); + canLocate = false; } } @@ -708,16 +722,17 @@ partial class Dump { if(!_force) { - _dumpLog.WriteLine("Cannot reposition tape, unable to resume. If you want to continue use force."); + _dumpLog.WriteLine(Localization.Core. + Cannot_reposition_tape_unable_to_resume_If_you_want_to_continue_use_force); - StoppingErrorMessage?. - Invoke("Cannot reposition tape, unable to resume. If you want to continue use force."); + StoppingErrorMessage?.Invoke(Localization.Core. + Cannot_reposition_tape_unable_to_resume_If_you_want_to_continue_use_force); return; } - _dumpLog.WriteLine("Cannot reposition tape, unable to resume. Dumping from the start."); - ErrorMessage?.Invoke("Cannot reposition tape, unable to resume. Dumping from the start."); + _dumpLog.WriteLine(Localization.Core.Cannot_reposition_tape_unable_to_resume_Dumping_from_the_start); + ErrorMessage?.Invoke(Localization.Core.Cannot_reposition_tape_unable_to_resume_Dumping_from_the_start); canLocate = false; } } @@ -729,7 +744,7 @@ partial class Dump do { Thread.Sleep(1000); - PulseProgress?.Invoke("Rewinding, please wait..."); + PulseProgress?.Invoke(Localization.Core.Rewinding_please_wait); _dev.RequestSense(out senseBuf, _dev.Timeout, out duration); decSense = Sense.Decode(senseBuf); } while(decSense is { ASC: 0x00, ASCQ: 0x1A or 0x19 }); @@ -739,12 +754,12 @@ partial class Dump ((decSense.Value.ASC == 0x00 && decSense.Value.ASCQ != 0x00 && decSense.Value.ASCQ != 0x04) || decSense.Value.ASC != 0x00)) { - StoppingErrorMessage?.Invoke("Drive could not rewind, please correct. Sense follows..." + + StoppingErrorMessage?.Invoke(Localization.Core.Drive_could_not_rewind_please_correct_Sense_follows + Environment.NewLine + decSense.Value.Description); - _dumpLog.WriteLine("Drive could not rewind, please correct. Sense follows..."); + _dumpLog.WriteLine(Localization.Core.Drive_could_not_rewind_please_correct_Sense_follows); - _dumpLog.WriteLine("Device not ready. Sense {0}h ASC {1:X2}h ASCQ {2:X2}h", decSense.Value.SenseKey, + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); return; @@ -756,10 +771,10 @@ partial class Dump // Cannot set image to tape mode if(!ret) { - _dumpLog.WriteLine("Error setting output image in tape mode, not continuing."); + _dumpLog.WriteLine(Localization.Core.Error_setting_output_image_in_tape_mode_not_continuing); _dumpLog.WriteLine(outputTape.ErrorMessage); - StoppingErrorMessage?.Invoke("Error setting output image in tape mode, not continuing." + + StoppingErrorMessage?.Invoke(Localization.Core.Error_setting_output_image_in_tape_mode_not_continuing + Environment.NewLine + outputTape.ErrorMessage); return; @@ -770,11 +785,11 @@ 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(outputTape.ErrorMessage); - StoppingErrorMessage?.Invoke("Error creating output image, not continuing." + Environment.NewLine + - outputTape.ErrorMessage); + StoppingErrorMessage?.Invoke(Localization.Core.Error_creating_output_image_not_continuing + + Environment.NewLine + outputTape.ErrorMessage); return; } @@ -826,16 +841,16 @@ 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; } if(endOfMedia) { - UpdateStatus?.Invoke($"Finished partition {currentPartition}"); - _dumpLog.WriteLine("Finished partition {0}", currentPartition); + UpdateStatus?.Invoke(string.Format(Localization.Core.Finished_partition_0, currentPartition)); + _dumpLog.WriteLine(Localization.Core.Finished_partition_0, currentPartition); currentTapeFile.LastBlock = currentBlock - 1; @@ -864,7 +879,7 @@ partial class Dump FirstBlock = currentBlock }; - UpdateStatus?.Invoke($"Seeking to partition {currentPartition}"); + UpdateStatus?.Invoke(string.Format(Localization.Core.Seeking_to_partition_0, currentPartition)); _dev.Locate(out senseBuf, false, currentPartition, 0, _dev.Timeout, out duration); totalDuration += duration; } @@ -880,7 +895,8 @@ partial class Dump currentSpeed > 0) minSpeed = currentSpeed; - PulseProgress?.Invoke($"Reading block {currentBlock} ({currentSpeed:F3} MiB/sec.)"); + PulseProgress?.Invoke(string.Format(Localization.Core.Reading_block_0_1_MiB_sec, currentBlock, + currentSpeed)); sense = _dev.Read6(out cmdBuf, out senseBuf, false, fixedLen, transferLen, blockSize, _dev.Timeout, out duration); @@ -921,8 +937,11 @@ partial class Dump if(!fixedLen) transferLen = blockSize; - UpdateStatus?.Invoke($"Blocksize changed to {blockSize} bytes at block {currentBlock}"); - _dumpLog.WriteLine("Blocksize changed to {0} bytes at block {1}", blockSize, currentBlock); + UpdateStatus?.Invoke(string.Format(Localization.Core.Blocksize_changed_to_0_bytes_at_block_1, + blockSize, currentBlock)); + + _dumpLog.WriteLine(Localization.Core.Blocksize_changed_to_0_bytes_at_block_1, blockSize, + currentBlock); sense = _dev.Space(out senseBuf, SscSpaceCodes.LogicalBlock, -1, _dev.Timeout, out duration); @@ -932,14 +951,14 @@ partial class Dump { decSense = Sense.Decode(senseBuf); - StoppingErrorMessage?.Invoke("Drive could not go back one block. Sense follows..." + + StoppingErrorMessage?.Invoke(Localization.Core.Drive_could_not_go_back_one_block_Sense_follows + Environment.NewLine + decSense.Value.Description); outputTape.Close(); - _dumpLog.WriteLine("Drive could not go back one block. Sense follows..."); + _dumpLog.WriteLine(Localization.Core.Drive_could_not_go_back_one_block_Sense_follows); - _dumpLog.WriteLine("Device not ready. Sense {0}h ASC {1:X2}h ASCQ {2:X2}h", - decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, + decSense.Value.ASC, decSense.Value.ASCQ); return; } @@ -950,9 +969,9 @@ partial class Dump switch(decSense.Value.SenseKey) { case SenseKeys.BlankCheck when currentBlock == 0: - StoppingErrorMessage?.Invoke("Cannot dump a blank tape..."); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_dump_a_blank_tape); outputTape.Close(); - _dumpLog.WriteLine("Cannot dump a blank tape..."); + _dumpLog.WriteLine(Localization.Core.Cannot_dump_a_blank_tape); return; @@ -961,14 +980,14 @@ partial class Dump (decSense.Value.ASCQ is 0x02 or 0x05 || eom): // TODO: Detect end of partition endOfMedia = true; - UpdateStatus?.Invoke("Found end-of-tape/partition..."); - _dumpLog.WriteLine("Found end-of-tape/partition..."); + UpdateStatus?.Invoke(Localization.Core.Found_end_of_tape_partition); + _dumpLog.WriteLine(Localization.Core.Found_end_of_tape_partition); continue; case SenseKeys.BlankCheck: - StoppingErrorMessage?.Invoke("Blank block found, end of tape?..."); + StoppingErrorMessage?.Invoke(Localization.Core.Blank_block_found_end_of_tape); endOfMedia = true; - _dumpLog.WriteLine("Blank block found, end of tape?..."); + _dumpLog.WriteLine(Localization.Core.Blank_block_found_end_of_tape); continue; } @@ -978,8 +997,8 @@ partial class Dump case SenseKeys.NoSense or SenseKeys.RecoveredError when decSense.Value.ASCQ is 0x02 or 0x05 || eom: // TODO: Detect end of partition endOfMedia = true; - UpdateStatus?.Invoke("Found end-of-tape/partition..."); - _dumpLog.WriteLine("Found end-of-tape/partition..."); + UpdateStatus?.Invoke(Localization.Core.Found_end_of_tape_partition); + _dumpLog.WriteLine(Localization.Core.Found_end_of_tape_partition); continue; case SenseKeys.NoSense or SenseKeys.RecoveredError when decSense.Value.ASCQ == 0x01 || filemark: @@ -995,28 +1014,35 @@ partial class Dump Partition = currentPartition }; - UpdateStatus?.Invoke($"Changed to file {currentFile} at block {currentBlock}"); - _dumpLog.WriteLine("Changed to file {0} at block {1}", currentFile, currentBlock); + UpdateStatus?.Invoke(string.Format(Localization.Core.Changed_to_file_0_at_block_1, currentFile, + currentBlock)); + + _dumpLog.WriteLine(Localization.Core.Changed_to_file_0_at_block_1, currentFile, currentBlock); continue; } if(decSense is null) { - StoppingErrorMessage?.Invoke($"Drive could not read block ${currentBlock - }. Sense cannot be decoded, look at log for dump..."); + StoppingErrorMessage?. + Invoke(string.Format(Localization.Core.Drive_could_not_read_block_0_Sense_cannot_be_decoded_look_at_log_for_dump, + currentBlock)); + + _dumpLog.WriteLine(string.Format(Localization.Core.Drive_could_not_read_block_0_Sense_bytes_follow, + currentBlock)); - _dumpLog.WriteLine($"Drive could not read block ${currentBlock}. Sense bytes follow..."); _dumpLog.WriteLine(PrintHex.ByteArrayToHexArrayString(senseBuf, 32)); } else { - StoppingErrorMessage?.Invoke($"Drive could not read block ${currentBlock}. Sense follows...\n{ - decSense.Value.SenseKey} {decSense.Value.Description}"); + StoppingErrorMessage?. + Invoke(string.Format(Localization.Core.Drive_could_not_read_block_0_Sense_follow_1_2, + currentBlock, decSense.Value.SenseKey, decSense.Value.Description)); - _dumpLog.WriteLine($"Drive could not read block ${currentBlock}. Sense follows..."); + _dumpLog.WriteLine(string.Format(Localization.Core.Drive_could_not_read_block_0_Sense_follows, + currentBlock)); - _dumpLog.WriteLine("Device not ready. Sense {0}h ASC {1:X2}h ASCQ {2:X2}h", decSense.Value.SenseKey, + _dumpLog.WriteLine(Localization.Core.Device_not_ready_Sense, decSense.Value.SenseKey, decSense.Value.ASC, decSense.Value.ASCQ); } @@ -1077,20 +1103,20 @@ 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 Error handling @@ -1119,18 +1145,29 @@ 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 block {0}, pass {1}, {3}{2}", badBlock, pass, - forward ? "forward" : "reverse", - runningPersistent ? "recovering partial data, " : "")); + if(forward) + PulseProgress?.Invoke(runningPersistent + ? string. + Format(Localization.Core.Retrying_sector_0_pass_1_recovering_partial_data_forward, + badBlock, pass) + : string.Format(Localization.Core.Retrying_sector_0_pass_1_forward, + badBlock, pass)); + else + PulseProgress?.Invoke(runningPersistent + ? string. + Format(Localization.Core.Retrying_sector_0_pass_1_recovering_partial_data_reverse, + badBlock, pass) + : string.Format(Localization.Core.Retrying_sector_0_pass_1_reverse, + badBlock, pass)); - UpdateStatus?.Invoke($"Positioning tape to block {badBlock}."); - _dumpLog.WriteLine($"Positioning tape to block {badBlock}."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Positioning_tape_to_block_0, badBlock)); + _dumpLog.WriteLine(string.Format(Localization.Core.Positioning_tape_to_block_0, badBlock)); if(canLocateLong) { @@ -1142,8 +1179,8 @@ partial class Dump if(sense) { - _dumpLog.WriteLine("Could not check current position, continuing."); - StoppingErrorMessage?.Invoke("Could not check current position, continuing."); + _dumpLog.WriteLine(Localization.Core.Could_not_check_current_position_continuing); + StoppingErrorMessage?.Invoke(Localization.Core.Could_not_check_current_position_continuing); continue; } @@ -1152,16 +1189,20 @@ partial class Dump if(position != _resume.NextBlock) { - _dumpLog.WriteLine("Current position is not as expected, continuing."); - StoppingErrorMessage?.Invoke("Current position is not as expected, continuing."); + _dumpLog.WriteLine(Localization.Core.Current_position_is_not_as_expected_continuing); + + StoppingErrorMessage?.Invoke(Localization.Core. + Current_position_is_not_as_expected_continuing); continue; } } else { - _dumpLog.WriteLine($"Cannot position tape to block {badBlock}."); - ErrorMessage?.Invoke($"Cannot position tape to block {badBlock}."); + _dumpLog.WriteLine(string.Format(Localization.Core.Cannot_position_tape_to_block_0, badBlock)); + + ErrorMessage?.Invoke(string.Format(Localization.Core.Cannot_position_tape_to_block_0, + badBlock)); continue; } @@ -1176,8 +1217,8 @@ partial class Dump if(sense) { - _dumpLog.WriteLine("Could not check current position, continuing."); - StoppingErrorMessage?.Invoke("Could not check current position, continuing."); + _dumpLog.WriteLine(Localization.Core.Could_not_check_current_position_continuing); + StoppingErrorMessage?.Invoke(Localization.Core.Could_not_check_current_position_continuing); continue; } @@ -1186,16 +1227,20 @@ partial class Dump if(position != _resume.NextBlock) { - _dumpLog.WriteLine("Current position is not as expected, continuing."); - StoppingErrorMessage?.Invoke("Current position is not as expected, continuing."); + _dumpLog.WriteLine(Localization.Core.Current_position_is_not_as_expected_continuing); + + StoppingErrorMessage?.Invoke(Localization.Core. + Current_position_is_not_as_expected_continuing); continue; } } else { - _dumpLog.WriteLine($"Cannot position tape to block {badBlock}."); - ErrorMessage?.Invoke($"Cannot position tape to block {badBlock}."); + _dumpLog.WriteLine(string.Format(Localization.Core.Cannot_position_tape_to_block_0, badBlock)); + + ErrorMessage?.Invoke(string.Format(Localization.Core.Cannot_position_tape_to_block_0, + badBlock)); continue; } @@ -1212,8 +1257,11 @@ partial class Dump _resume.BadBlocks.Remove(badBlock); extents.Add(badBlock); outputTape.WriteSector(cmdBuf, badBlock); - UpdateStatus?.Invoke($"Correctly retried block {badBlock} in pass {pass}."); - _dumpLog.WriteLine("Correctly retried block {0} in pass {1}.", badBlock, pass); + + UpdateStatus?.Invoke(string.Format(Localization.Core.Correctly_retried_block_0_in_pass_1, badBlock, + pass)); + + _dumpLog.WriteLine(Localization.Core.Correctly_retried_block_0_in_pass_1, badBlock, pass); } else if(runningPersistent) outputTape.WriteSector(cmdBuf, badBlock); @@ -1245,7 +1293,7 @@ partial class Dump _resume.BadBlocks.Sort(); foreach(ulong bad in _resume.BadBlocks) - _dumpLog.WriteLine("Block {0} could not be read.", bad); + _dumpLog.WriteLine(Localization.Core.Block_0_could_not_be_read, bad); currentTry.Extents = ExtentsConverter.ToMetadata(extents); @@ -1259,32 +1307,35 @@ partial class Dump }; if(!outputTape.SetMetadata(metadata)) - ErrorMessage?.Invoke("Error {0} setting metadata, continuing..." + Environment.NewLine + + ErrorMessage?.Invoke(Localization.Core.Error_0_setting_metadata + Environment.NewLine + outputTape.ErrorMessage); if(_preSidecar != null) outputTape.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; outputTape.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) { - UpdateStatus?.Invoke("Aborted!"); - _dumpLog.WriteLine("Aborted!"); + UpdateStatus?.Invoke(Localization.Core.Aborted); + _dumpLog.WriteLine(Localization.Core.Aborted); return; } if(_aborted) { - UpdateStatus?.Invoke("Aborted!"); - _dumpLog.WriteLine("Aborted!"); + UpdateStatus?.Invoke(Localization.Core.Aborted); + _dumpLog.WriteLine(Localization.Core.Aborted); return; } @@ -1293,8 +1344,8 @@ partial class Dump if(_metadata) { - UpdateStatus?.Invoke("Creating sidecar."); - _dumpLog.WriteLine("Creating sidecar."); + UpdateStatus?.Invoke(Localization.Core.Creating_sidecar); + _dumpLog.WriteLine(Localization.Core.Creating_sidecar); var filters = new FiltersList(); IFilter filter = filters.GetFilter(_outputPath); var inputPlugin = ImageFormat.Detect(filter) as IMediaImage; @@ -1302,7 +1353,7 @@ 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; } @@ -1322,14 +1373,17 @@ partial class Dump if(!_aborted) { totalChkDuration = (end - chkStart).TotalMilliseconds; - UpdateStatus?.Invoke($"Sidecar created in {(end - 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, + (end - chkStart).TotalSeconds)); - _dumpLog.WriteLine("Sidecar created in {0} seconds.", (end - 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, (end - chkStart).TotalSeconds); + + _dumpLog.WriteLine(Localization.Core.Average_checksum_speed_0_KiB_sec, blockSize * (double)(blocks + 1) / 1024 / (totalChkDuration / 1000)); if(_preSidecar != null) @@ -1352,8 +1406,11 @@ partial class Dump o.type }).Distinct()) { - UpdateStatus?.Invoke($"Found filesystem {filesystem.type} at sector {filesystem.start}"); - _dumpLog.WriteLine("Found filesystem {0} at sector {1}", filesystem.type, filesystem.start); + UpdateStatus?.Invoke(string.Format(Localization.Core.Found_filesystem_0_at_sector_1, + filesystem.type, filesystem.start)); + + _dumpLog.WriteLine(Localization.Core.Found_filesystem_0_at_sector_1, filesystem.type, + filesystem.start); } sidecar.BlockMedia[0].Dimensions = Dimensions.DimensionsFromMediaType(dskType); @@ -1387,7 +1444,7 @@ partial class Dump if(_dev.IsRemovable) sidecar.BlockMedia[0].DumpHardwareArray = _resume.Tries.ToArray(); - UpdateStatus?.Invoke("Writing metadata sidecar"); + UpdateStatus?.Invoke(Localization.Core.Writing_metadata_sidecar); var xmlFs = new FileStream(_outputPrefix + ".cicm.xml", FileMode.Create); @@ -1399,20 +1456,21 @@ 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)); UpdateStatus?.Invoke(""); Statistics.AddMedia(dskType, true); diff --git a/Aaru.Core/Devices/Dumping/Sbc/Data.cs b/Aaru.Core/Devices/Dumping/Sbc/Data.cs index 2689241e9..59997d000 100644 --- a/Aaru.Core/Devices/Dumping/Sbc/Data.cs +++ b/Aaru.Core/Devices/Dumping/Sbc/Data.cs @@ -81,8 +81,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; } @@ -98,8 +98,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 = scsiReader.ReadBlocks(out buffer, i, blocksToRead, out double cmdDuration, out _, out _); totalDuration += cmdDuration; @@ -192,14 +193,15 @@ partial class Dump outputFormat.ReadSectorsTag(i, blocksToRead, SectorTagType.DvdCmi, out byte[] cmi); if(errno != ErrorNumber.NoError) - ErrorMessage?.Invoke($"Error retrieving CMI for sector {i}"); + ErrorMessage?.Invoke(string.Format(Localization.Core.Error_retrieving_CMI_for_sector_0, i)); else { errno = outputFormat.ReadSectorsTag(i, blocksToRead, SectorTagType.DvdTitleKeyDecrypted, out byte[] titleKey); if(errno != ErrorNumber.NoError) - ErrorMessage?.Invoke($"Error retrieving title key for sector {i}"); + ErrorMessage?. + Invoke(string.Format(Localization.Core.Error_retrieving_title_key_for_sector_0, i)); else buffer = CSS.DecryptSector(buffer, cmi, titleKey, blocksToRead, blockSize); } @@ -222,11 +224,11 @@ partial class Dump _resume.NextBlock++; _aborted = true; - _dumpLog?. - WriteLine("INSITE floptical drives get crazy on the SCSI bus when an error is found, stopping so you can reboot the computer or reset the scsi bus appropriately."); + _dumpLog?.WriteLine(Localization.Core. + INSITE_floptical_drives_get_crazy_on_the_SCSI_bus_when_an_error_is_found); - UpdateStatus?. - Invoke("INSITE floptical drives get crazy on the SCSI bus when an error is found, stopping so you can reboot the computer or reset the scsi bus appropriately"); + UpdateStatus?.Invoke(Localization.Core. + INSITE_floptical_drives_get_crazy_on_the_SCSI_bus_when_an_error_is_found); continue; } @@ -249,7 +251,7 @@ partial class Dump 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; } diff --git a/Aaru.Core/Devices/Dumping/Sbc/Dump.cs b/Aaru.Core/Devices/Dumping/Sbc/Dump.cs index 4bff34589..1ffabd763 100644 --- a/Aaru.Core/Devices/Dumping/Sbc/Dump.cs +++ b/Aaru.Core/Devices/Dumping/Sbc/Dump.cs @@ -99,7 +99,7 @@ partial class Dump break; } - _dumpLog.WriteLine("Initializing reader."); + _dumpLog.WriteLine(Localization.Core.Initializing_reader); var scsiReader = new Reader(_dev, _dev.Timeout, null, _errorLog, _dumpRaw); ulong blocks = scsiReader.GetDeviceBlocks(); uint blockSize = scsiReader.LogicalBlockSize; @@ -128,8 +128,8 @@ partial class Dump if(!sense) { - _dumpLog.WriteLine("Requesting MODE SENSE (10)."); - UpdateStatus?.Invoke("Requesting MODE SENSE (10)."); + _dumpLog.WriteLine(Localization.Core.Requesting_MODE_SENSE_10); + UpdateStatus?.Invoke(Localization.Core.Requesting_MODE_SENSE_10); sense = _dev.ModeSense10(out cmdBuf, out _, false, true, ScsiModeSensePageControl.Current, 0x3F, 0xFF, 5, out _); @@ -147,8 +147,8 @@ partial class Dump decMode = Modes.DecodeMode10(cmdBuf, _dev.ScsiType); } - _dumpLog.WriteLine("Requesting MODE SENSE (6)."); - UpdateStatus?.Invoke("Requesting MODE SENSE (6)."); + _dumpLog.WriteLine(Localization.Core.Requesting_MODE_SENSE_6); + UpdateStatus?.Invoke(Localization.Core.Requesting_MODE_SENSE_6); sense = _dev.ModeSense6(out cmdBuf, out _, false, ScsiModeSensePageControl.Current, 0x3F, 0x00, 5, out _); @@ -197,10 +197,11 @@ partial class Dump // SonicStage changes the device mode, so it is no longer a mass storage device, and can only read // tracks written by that same application ID (changes between computers). case MediaType.MD: - _dumpLog.WriteLine("MiniDisc albums, NetMD discs or user-written audio MiniDisc cannot be dumped."); + _dumpLog.WriteLine(Localization.Core. + MiniDisc_albums_NetMD_discs_or_user_written_audio_MiniDisc_cannot_be_dumped); - StoppingErrorMessage?. - Invoke("MiniDisc albums, NetMD discs or user-written audio MiniDisc cannot be dumped."); + StoppingErrorMessage?.Invoke(Localization.Core. + MiniDisc_albums_NetMD_discs_or_user_written_audio_MiniDisc_cannot_be_dumped); return; case MediaType.Unknown when _dev.IsUsb && containsFloppyPage: @@ -211,8 +212,8 @@ partial class Dump if(scsiReader.FindReadCommand()) { - _dumpLog.WriteLine("ERROR: Cannot find correct read command: {0}.", scsiReader.ErrorMessage); - StoppingErrorMessage?.Invoke("Unable to read medium."); + _dumpLog.WriteLine(Localization.Core.ERROR_Cannot_find_correct_read_command_0, scsiReader.ErrorMessage); + StoppingErrorMessage?.Invoke(Localization.Core.Unable_to_read_medium); return; } @@ -227,28 +228,33 @@ partial class Dump switch(totalSize) { case > 1099511627776: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize / 1099511627776d:F3} TiB)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_TiB, + blocks, blockSize, totalSize / 1099511627776d)); break; case > 1073741824: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize / 1073741824d:F3} GiB)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_GiB, + blocks, blockSize, totalSize / 1073741824d)); break; case > 1048576: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize / 1048576d:F3} MiB)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_MiB, + blocks, blockSize, totalSize / 1048576d)); break; case > 1024: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize / 1024d:F3} KiB)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_KiB, + blocks, blockSize, totalSize / 1024d)); break; default: - UpdateStatus?.Invoke($"Media has {blocks} blocks of {blockSize} bytes/each. (for a total of { - totalSize} bytes)"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_bytes, + blocks, blockSize, totalSize)); break; } @@ -257,7 +263,7 @@ partial class Dump // Check how many blocks to read, if error show and return if(scsiReader.GetBlocksToRead(_maximumReadable)) { - _dumpLog.WriteLine("ERROR: Cannot get blocks to read: {0}.", scsiReader.ErrorMessage); + _dumpLog.WriteLine(Localization.Core.ERROR_Cannot_get_blocks_to_read_0, scsiReader.ErrorMessage); StoppingErrorMessage?.Invoke(scsiReader.ErrorMessage); return; @@ -269,31 +275,36 @@ partial class Dump if(blocks == 0) { - _dumpLog.WriteLine("ERROR: Unable to read medium or empty medium present..."); - StoppingErrorMessage?.Invoke("Unable to read medium or empty medium present..."); + _dumpLog.WriteLine(Localization.Core.ERROR_Unable_to_read_medium_or_empty_medium_present); + StoppingErrorMessage?.Invoke(Localization.Core.Unable_to_read_medium_or_empty_medium_present); return; } - UpdateStatus?.Invoke($"Device reports {blocks} blocks ({blocks * blockSize} bytes)."); - UpdateStatus?.Invoke($"Device can read {blocksToRead} blocks at a time."); - UpdateStatus?.Invoke($"Device reports {blockSize} bytes per logical block."); - UpdateStatus?.Invoke($"Device reports {scsiReader.LongBlockSize} bytes per physical block."); - UpdateStatus?.Invoke($"SCSI device type: {_dev.ScsiType}."); - UpdateStatus?.Invoke($"SCSI medium type: {scsiMediumType}."); - UpdateStatus?.Invoke($"SCSI density type: {scsiDensityCode}."); - UpdateStatus?.Invoke($"SCSI floppy mode page present: {containsFloppyPage}."); - UpdateStatus?.Invoke($"Media identified as {dskType}"); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_blocks_1_bytes, blocks, + blocks * blockSize)); - _dumpLog.WriteLine("Device reports {0} blocks ({1} bytes).", blocks, blocks * 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.", scsiReader.LongBlockSize); - _dumpLog.WriteLine("SCSI device type: {0}.", _dev.ScsiType); - _dumpLog.WriteLine("SCSI medium type: {0}.", scsiMediumType); - _dumpLog.WriteLine("SCSI density type: {0}.", scsiDensityCode); - _dumpLog.WriteLine("SCSI floppy mode page present: {0}.", containsFloppyPage); - _dumpLog.WriteLine("Media identified as {0}.", dskType); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_can_read_0_blocks_at_a_time, blocksToRead)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_bytes_per_logical_block, blockSize)); + + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_bytes_per_physical_block, + scsiReader.LongBlockSize)); + + UpdateStatus?.Invoke(string.Format(Localization.Core.SCSI_device_type_0, _dev.ScsiType)); + UpdateStatus?.Invoke(string.Format(Localization.Core.SCSI_medium_type_0, scsiMediumType)); + UpdateStatus?.Invoke(string.Format(Localization.Core.SCSI_density_type_0, scsiDensityCode)); + UpdateStatus?.Invoke(string.Format(Localization.Core.SCSI_floppy_mode_page_present_0, containsFloppyPage)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Media_identified_as_0, dskType)); + + _dumpLog.WriteLine(Localization.Core.Device_reports_0_blocks_1_bytes, blocks, blocks * blockSize); + _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, scsiReader.LongBlockSize); + _dumpLog.WriteLine(Localization.Core.SCSI_device_type_0, _dev.ScsiType); + _dumpLog.WriteLine(Localization.Core.SCSI_medium_type_0, scsiMediumType); + _dumpLog.WriteLine(Localization.Core.SCSI_density_type_0, scsiDensityCode); + _dumpLog.WriteLine(Localization.Core.SCSI_floppy_mode_page_present_0, containsFloppyPage); + _dumpLog.WriteLine(Localization.Core.Media_identified_as_0, dskType); uint longBlockSize = scsiReader.LongBlockSize; @@ -301,27 +312,28 @@ partial class Dump if(blockSize == longBlockSize) { ErrorMessage?.Invoke(!scsiReader.CanReadRaw - ? "Device doesn't seem capable of reading raw data from media." - : "Device is capable of reading raw data but I've been unable to guess correct sector size."); + ? Localization.Core.Device_doesnt_seem_capable_of_reading_raw_data_from_media + : Localization.Core. + Device_is_capable_of_reading_raw_data_but_Ive_been_unable_to_guess_correct_sector_size); if(!_force) { - StoppingErrorMessage?. - Invoke("Not continuing. If you want to continue reading cooked data when raw is not available use the force option."); + StoppingErrorMessage?.Invoke(Localization.Core. + If_you_want_to_continue_reading_cooked_data_when_raw_is_not_available_use_the_force_option); // TODO: Exit more gracefully return; } - ErrorMessage?.Invoke("Continuing dumping cooked data."); + ErrorMessage?.Invoke(Localization.Core.Continuing_dumping_cooked_data); } else { // Only a block will be read, but it contains 16 sectors and command expect sector number not block number blocksToRead = (uint)(longBlockSize == 37856 ? 16 : 1); - UpdateStatus?.Invoke($"Reading {longBlockSize} raw bytes ({blockSize * blocksToRead - } cooked bytes) per sector."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Reading_0_raw_bytes_1_cooked_bytes_per_sector, + longBlockSize, blockSize * blocksToRead)); physicalBlockSize = longBlockSize; blockSize = longBlockSize; @@ -332,28 +344,28 @@ partial class Dump foreach(MediaTagType tag in mediaTags.Keys.Where(tag => !outputFormat.SupportedMediaTags.Contains(tag))) { ret = false; - _dumpLog.WriteLine($"Output format does not support {tag}."); - ErrorMessage?.Invoke($"Output format does not support {tag}."); + _dumpLog.WriteLine(string.Format(Localization.Core.Output_format_does_not_support_0, tag)); + ErrorMessage?.Invoke(string.Format(Localization.Core.Output_format_does_not_support_0, tag)); } if(!ret) { if(_force) { - _dumpLog.WriteLine("Several media tags not supported, continuing..."); - ErrorMessage?.Invoke("Several media tags not supported, continuing..."); + _dumpLog.WriteLine(Localization.Core.Several_media_tags_not_supported_continuing); + ErrorMessage?.Invoke(Localization.Core.Several_media_tags_not_supported_continuing); } else { - _dumpLog.WriteLine("Several media tags not supported, not continuing..."); - 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; } } - UpdateStatus?.Invoke($"Reading {blocksToRead} sectors at a time."); - _dumpLog.WriteLine("Reading {0} sectors at a time.", blocksToRead); + UpdateStatus?.Invoke(string.Format(Localization.Core.Reading_0_sectors_at_a_time, blocksToRead)); + _dumpLog.WriteLine(Localization.Core.Reading_0_sectors_at_a_time, blocksToRead); var mhddLog = new MhddLog(_outputPrefix + ".mhddlog.bin", _dev, blocks, blockSize, blocksToRead, _private); var ibgLog = new IbgLog(_outputPrefix + ".ibg", sbcProfile); @@ -366,11 +378,11 @@ 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; } @@ -410,19 +422,19 @@ partial class Dump { if(_force) { - _dumpLog. - WriteLine("Image does not support multiple sessions in non Compact Disc dumps, continuing..."); + _dumpLog.WriteLine(Localization.Core. + Image_does_not_support_multiple_sessions_in_non_Compact_Disc_dumps_continuing); - ErrorMessage?. - Invoke("Image does not support multiple sessions in non Compact Disc dumps, continuing..."); + ErrorMessage?.Invoke(Localization.Core. + Image_does_not_support_multiple_sessions_in_non_Compact_Disc_dumps_continuing); } else { - _dumpLog. - WriteLine("Image does not support multiple sessions in non Compact Disc dumps, not continuing..."); + _dumpLog.WriteLine(Localization.Core. + Image_does_not_support_multiple_sessions_in_non_Compact_Disc_dumps_not_continuing); - StoppingErrorMessage?. - Invoke("Image does not support multiple sessions in non Compact Disc dumps, not continuing..."); + StoppingErrorMessage?.Invoke(Localization.Core. + Image_does_not_support_multiple_sessions_in_non_Compact_Disc_dumps_not_continuing); return; } @@ -434,26 +446,26 @@ partial class Dump { if(_force) { - _dumpLog. - WriteLine("Image does not support multiple tracks in non Compact Disc dumps, continuing..."); + _dumpLog.WriteLine(Localization.Core. + Image_does_not_support_multiple_tracks_in_non_Compact_Disc_dumps_continuing); - ErrorMessage?. - Invoke("Image does not support multiple tracks in non Compact Disc dumps, continuing..."); + ErrorMessage?.Invoke(Localization.Core. + Image_does_not_support_multiple_tracks_in_non_Compact_Disc_dumps_continuing); } else { - _dumpLog. - WriteLine("Image does not support multiple tracks in non Compact Disc dumps, not continuing..."); + _dumpLog.WriteLine(Localization.Core. + Image_does_not_support_multiple_tracks_in_non_Compact_Disc_dumps_not_continuing); - StoppingErrorMessage?. - Invoke("Image does not support multiple tracks in non Compact Disc dumps, not continuing..."); + StoppingErrorMessage?.Invoke(Localization.Core. + Image_does_not_support_multiple_tracks_in_non_Compact_Disc_dumps_not_continuing); return; } } - UpdateStatus?.Invoke("Building track map..."); - _dumpLog.WriteLine("Building track map..."); + UpdateStatus?.Invoke(Localization.Core.Building_track_map); + _dumpLog.WriteLine(Localization.Core.Building_track_map); List tracks = new(); @@ -521,10 +533,10 @@ 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." + + StoppingErrorMessage?.Invoke(Localization.Core.Error_creating_output_image_not_continuing + Environment.NewLine + outputFormat.ErrorMessage); return; @@ -534,8 +546,9 @@ partial class Dump #if DEBUG foreach(Track trk in tracks) - UpdateStatus?.Invoke($"Track {trk.Sequence} starts at LBA {trk.StartSector - } and ends at LBA {trk.EndSector}"); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Track_0_starts_at_LBA_1_and_ends_at_LBA_2, + trk.Sequence, trk.StartSector, trk.EndSector)); #endif if(canStoreNotCdTracks) @@ -544,10 +557,13 @@ partial class Dump if(!ret) { - _dumpLog.WriteLine("Error sending tracks to output image, not continuing."); + _dumpLog.WriteLine(Localization.Core. + Error_sending_tracks_to_output_image_not_continuing); + _dumpLog.WriteLine(opticalPlugin.ErrorMessage); - StoppingErrorMessage?.Invoke("Error sending tracks to output image, not continuing." + + StoppingErrorMessage?.Invoke(Localization.Core. + Error_sending_tracks_to_output_image_not_continuing + Environment.NewLine + opticalPlugin.ErrorMessage); return; @@ -572,8 +588,10 @@ partial class Dump } else { - _dumpLog.WriteLine("The specified plugin does not support storing optical disc images.."); - StoppingErrorMessage?.Invoke("The specified plugin does not support storing optical disc images."); + _dumpLog.WriteLine(Localization.Core.The_specified_plugin_does_not_support_storing_optical_disc_images); + + StoppingErrorMessage?.Invoke(Localization.Core. + The_specified_plugin_does_not_support_storing_optical_disc_images); return; } @@ -592,14 +610,16 @@ partial class Dump if(!rigidPage.HasValue || setGeometry) continue; - _dumpLog.WriteLine("Setting geometry to {0} cylinders, {1} heads, {2} sectors per track", - rigidPage.Value.Cylinders, rigidPage.Value.Heads, - (uint)(blocks / (rigidPage.Value.Cylinders * rigidPage.Value.Heads))); + _dumpLog. + WriteLine(Localization.Core.Setting_geometry_to_0_cylinders_1_heads_2_sectors_per_track, + rigidPage.Value.Cylinders, rigidPage.Value.Heads, + (uint)(blocks / (rigidPage.Value.Cylinders * rigidPage.Value.Heads))); - UpdateStatus?.Invoke($"Setting geometry to {rigidPage.Value.Cylinders} cylinders, { - rigidPage.Value.Heads} heads, { - (uint)(blocks / (rigidPage.Value.Cylinders * rigidPage.Value.Heads)) - } sectors per track"); + UpdateStatus?. + Invoke(string. + Format(Localization.Core.Setting_geometry_to_0_cylinders_1_heads_2_sectors_per_track, + rigidPage.Value.Cylinders, rigidPage.Value.Heads, + (uint)(blocks / (rigidPage.Value.Cylinders * rigidPage.Value.Heads)))); outputFormat.SetGeometry(rigidPage.Value.Cylinders, rigidPage.Value.Heads, (uint)(blocks / (rigidPage.Value.Cylinders * rigidPage.Value.Heads))); @@ -615,12 +635,16 @@ partial class Dump if(!flexiblePage.HasValue) continue; - _dumpLog.WriteLine("Setting geometry to {0} cylinders, {1} heads, {2} sectors per track", - flexiblePage.Value.Cylinders, flexiblePage.Value.Heads, - flexiblePage.Value.SectorsPerTrack); + _dumpLog. + WriteLine(Localization.Core.Setting_geometry_to_0_cylinders_1_heads_2_sectors_per_track, + flexiblePage.Value.Cylinders, flexiblePage.Value.Heads, + flexiblePage.Value.SectorsPerTrack); - UpdateStatus?.Invoke($"Setting geometry to {flexiblePage.Value.Cylinders} cylinders, { - flexiblePage.Value.Heads} heads, {flexiblePage.Value.SectorsPerTrack} sectors per track"); + UpdateStatus?. + Invoke(string. + Format(Localization.Core.Setting_geometry_to_0_cylinders_1_heads_2_sectors_per_track, + flexiblePage.Value.Cylinders, flexiblePage.Value.Heads, + flexiblePage.Value.SectorsPerTrack)); outputFormat.SetGeometry(flexiblePage.Value.Cylinders, flexiblePage.Value.Heads, flexiblePage.Value.SectorsPerTrack); @@ -639,20 +663,21 @@ 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; } if(writeSingleOpticalTrack) { - _dumpLog.WriteLine("Creating single track as could not retrieve track list from drive."); + _dumpLog.WriteLine(Localization.Core.Creating_single_track_as_could_not_retrieve_track_list_from_drive); - UpdateStatus?.Invoke("Creating single track as could not retrieve track list from drive."); + UpdateStatus?.Invoke(Localization.Core. + Creating_single_track_as_could_not_retrieve_track_list_from_drive); (outputFormat as IWritableOpticalImage)?.SetTracks(new List { @@ -680,22 +705,30 @@ 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; } 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); } // Set speed if(_speedMultiplier >= 0) { - _dumpLog.WriteLine($"Setting speed to {(_speed == 0 ? "MAX." : $"{_speed}x")}."); - UpdateStatus?.Invoke($"Setting speed to {(_speed == 0 ? "MAX." : $"{_speed}x")}."); + if(_speed == 0) + { + _dumpLog.WriteLine(Localization.Core.Setting_speed_to_MAX); + UpdateStatus?.Invoke(Localization.Core.Setting_speed_to_MAX); + } + else + { + _dumpLog.WriteLine(string.Format(Localization.Core.Setting_speed_to_0_x, _speed)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Setting_speed_to_0_x, _speed)); + } _speed *= _speedMultiplier; @@ -716,7 +749,7 @@ partial class Dump dskType == MediaType.DVDROM && (CopyrightType)cmi[0] == CopyrightType.CSS) { - UpdateStatus?.Invoke("Title keys dumping is enabled. This will be very slow."); + UpdateStatus?.Invoke(Localization.Core.Title_keys_dumping_is_enabled_This_will_be_very_slow); _resume.MissingTitleKeys ??= new List(Enumerable.Range(0, (int)blocks).Select(n => (ulong)n)); } @@ -737,20 +770,20 @@ 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 @@ -760,8 +793,8 @@ 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); InitProgress?.Invoke(); @@ -769,8 +802,11 @@ 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 @@ -794,7 +830,7 @@ partial class Dump { if(tag.Value is null) { - AaruConsole.ErrorWriteLine("Error: Tag type {0} is null, skipping...", tag.Key); + AaruConsole.ErrorWriteLine(Localization.Core.Error_Tag_type_0_is_null_skipping, tag.Key); continue; } @@ -805,9 +841,10 @@ partial class Dump continue; // Cannot write tag to image - StoppingErrorMessage?.Invoke($"Cannot write tag {tag.Key}."); + StoppingErrorMessage?.Invoke(string.Format(Localization.Core.Cannot_write_tag_0, tag.Key)); - _dumpLog.WriteLine($"Cannot write tag {tag.Key}." + Environment.NewLine + outputFormat.ErrorMessage); + _dumpLog.WriteLine(string.Format(Localization.Core.Cannot_write_tag_0, tag.Key) + Environment.NewLine + + outputFormat.ErrorMessage); return; } @@ -819,17 +856,17 @@ partial class Dump if(_dev.IsUsb && _dev.UsbDescriptors != null) { - UpdateStatus?.Invoke("Reading USB descriptors."); - _dumpLog.WriteLine("Reading USB descriptors."); + UpdateStatus?.Invoke(Localization.Core.Reading_USB_descriptors); + _dumpLog.WriteLine(Localization.Core.Reading_USB_descriptors); ret = outputFormat.WriteMediaTag(_dev.UsbDescriptors, MediaTagType.USB_Descriptors); if(!ret && !_force) { - _dumpLog.WriteLine("Cannot write USB descriptors."); + _dumpLog.WriteLine(Localization.Core.Cannot_write_USB_descriptors); - StoppingErrorMessage?.Invoke("Cannot write USB descriptors." + Environment.NewLine + - outputFormat.ErrorMessage); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_write_USB_descriptors + + Environment.NewLine + outputFormat.ErrorMessage); return; } @@ -839,8 +876,8 @@ partial class Dump if(_dev.Type == DeviceType.ATAPI) { - UpdateStatus?.Invoke("Requesting ATAPI IDENTIFY PACKET DEVICE."); - _dumpLog.WriteLine("Requesting ATAPI IDENTIFY PACKET DEVICE."); + UpdateStatus?.Invoke(Localization.Core.Requesting_ATAPI_IDENTIFY_PACKET_DEVICE); + _dumpLog.WriteLine(Localization.Core.Requesting_ATAPI_IDENTIFY_PACKET_DEVICE); sense = _dev.AtapiIdentify(out cmdBuf, out _); if(!sense) @@ -853,9 +890,9 @@ partial class Dump if(!ret && !_force) { - _dumpLog.WriteLine("Cannot write ATAPI IDENTIFY PACKET DEVICE."); + _dumpLog.WriteLine(Localization.Core.Cannot_write_ATAPI_IDENTIFY_PACKET_DEVICE); - StoppingErrorMessage?.Invoke("Cannot write ATAPI IDENTIFY PACKET DEVICE." + + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_write_ATAPI_IDENTIFY_PACKET_DEVICE + Environment.NewLine + outputFormat.ErrorMessage); return; @@ -867,23 +904,23 @@ partial class Dump if(!sense) { - UpdateStatus?.Invoke("Requesting SCSI INQUIRY."); - _dumpLog.WriteLine("Requesting SCSI INQUIRY."); + UpdateStatus?.Invoke(Localization.Core.Requesting_SCSI_INQUIRY); + _dumpLog.WriteLine(Localization.Core.Requesting_SCSI_INQUIRY); ret = outputFormat.WriteMediaTag(cmdBuf, MediaTagType.SCSI_INQUIRY); if(!ret && !_force) { - StoppingErrorMessage?.Invoke("Cannot write SCSI INQUIRY."); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_write_SCSI_INQUIRY); - _dumpLog.WriteLine("Cannot write SCSI INQUIRY." + Environment.NewLine + + _dumpLog.WriteLine(Localization.Core.Cannot_write_SCSI_INQUIRY + Environment.NewLine + outputFormat.ErrorMessage); return; } - UpdateStatus?.Invoke("Requesting MODE SENSE (10)."); - _dumpLog.WriteLine("Requesting MODE SENSE (10)."); + UpdateStatus?.Invoke(Localization.Core.Requesting_MODE_SENSE_10); + _dumpLog.WriteLine(Localization.Core.Requesting_MODE_SENSE_10); sense = _dev.ModeSense10(out cmdBuf, out _, false, true, ScsiModeSensePageControl.Current, 0x3F, 0xFF, 5, out _); @@ -902,17 +939,17 @@ partial class Dump if(!ret && !_force) { - _dumpLog.WriteLine("Cannot write SCSI MODE SENSE (10)."); + _dumpLog.WriteLine(Localization.Core.Cannot_write_SCSI_MODE_SENSE_10); - StoppingErrorMessage?.Invoke("Cannot write SCSI MODE SENSE (10)." + + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_write_SCSI_MODE_SENSE_10 + Environment.NewLine + outputFormat.ErrorMessage); return; } } - UpdateStatus?.Invoke("Requesting MODE SENSE (6)."); - _dumpLog.WriteLine("Requesting MODE SENSE (6)."); + UpdateStatus?.Invoke(Localization.Core.Requesting_MODE_SENSE_6); + _dumpLog.WriteLine(Localization.Core.Requesting_MODE_SENSE_6); sense = _dev.ModeSense6(out cmdBuf, out _, false, ScsiModeSensePageControl.Current, 0x3F, 0x00, 5, out _); @@ -933,10 +970,10 @@ partial class Dump if(!ret && !_force) { - _dumpLog.WriteLine("Cannot write SCSI MODE SENSE (6)."); + _dumpLog.WriteLine(Localization.Core.Cannot_write_SCSI_MODE_SENSE_6); - StoppingErrorMessage?.Invoke("Cannot write SCSI MODE SENSE (6)." + Environment.NewLine + - outputFormat.ErrorMessage); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_write_SCSI_MODE_SENSE_6 + + Environment.NewLine + outputFormat.ErrorMessage); return; } @@ -948,7 +985,7 @@ partial class Dump _resume.BadBlocks.Sort(); 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); currentTry.Extents = ExtentsConverter.ToMetadata(extents); @@ -963,24 +1000,27 @@ 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) { - UpdateStatus?.Invoke("Aborted!"); - _dumpLog.WriteLine("Aborted!"); + UpdateStatus?.Invoke(Localization.Core.Aborted); + _dumpLog.WriteLine(Localization.Core.Aborted); return; } @@ -994,8 +1034,8 @@ partial class Dump WriteOpticalSidecar(blockSize, blocks, dskType, null, mediaTags, 1, out totalChkDuration, null); else { - UpdateStatus?.Invoke("Creating sidecar."); - _dumpLog.WriteLine("Creating sidecar."); + UpdateStatus?.Invoke(Localization.Core.Creating_sidecar); + _dumpLog.WriteLine(Localization.Core.Creating_sidecar); var filters = new FiltersList(); IFilter filter = filters.GetFilter(_outputPath); var inputPlugin = ImageFormat.Detect(filter) as IMediaImage; @@ -1003,7 +1043,8 @@ 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; } @@ -1023,14 +1064,17 @@ partial class Dump if(!_aborted) { totalChkDuration = (end - chkStart).TotalMilliseconds; - UpdateStatus?.Invoke($"Sidecar created in {(end - 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, + (end - chkStart).TotalSeconds)); - _dumpLog.WriteLine("Sidecar created in {0} seconds.", (end - 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, (end - chkStart).TotalSeconds); + + _dumpLog.WriteLine(Localization.Core.Average_checksum_speed_0_KiB_sec, blockSize * (double)(blocks + 1) / 1024 / (totalChkDuration / 1000)); if(_preSidecar != null) @@ -1126,8 +1170,8 @@ partial class Dump } */ - UpdateStatus?.Invoke("Requesting MODE SENSE (10)."); - _dumpLog.WriteLine("Requesting MODE SENSE (10)."); + UpdateStatus?.Invoke(Localization.Core.Requesting_MODE_SENSE_10); + _dumpLog.WriteLine(Localization.Core.Requesting_MODE_SENSE_10); sense = _dev.ModeSense10(out cmdBuf, out _, false, true, ScsiModeSensePageControl.Current, 0x3F, 0xFF, 5, out _); @@ -1148,8 +1192,8 @@ partial class Dump Checksums = Checksum.GetChecksums(cmdBuf).ToArray() }; - UpdateStatus?.Invoke("Requesting MODE SENSE (6)."); - _dumpLog.WriteLine("Requesting MODE SENSE (6)."); + UpdateStatus?.Invoke(Localization.Core.Requesting_MODE_SENSE_6); + _dumpLog.WriteLine(Localization.Core.Requesting_MODE_SENSE_6); sense = _dev.ModeSense6(out cmdBuf, out _, false, ScsiModeSensePageControl.Current, 0x3F, 0x00, 5, out _); @@ -1189,9 +1233,11 @@ 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, filesystem.start); + _dumpLog.WriteLine(Localization.Core.Found_filesystem_0_at_sector_1, filesystem.type, + filesystem.start); } sidecar.BlockMedia[0].Dimensions = Dimensions.DimensionsFromMediaType(dskType); @@ -1227,7 +1273,7 @@ partial class Dump if(_dev.IsRemovable) sidecar.BlockMedia[0].DumpHardwareArray = _resume.Tries.ToArray(); - UpdateStatus?.Invoke("Writing metadata sidecar"); + UpdateStatus?.Invoke(Localization.Core.Writing_metadata_sidecar); var xmlFs = new FileStream(_outputPrefix + ".cicm.xml", FileMode.Create); @@ -1240,20 +1286,21 @@ 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)); UpdateStatus?.Invoke(""); Statistics.AddMedia(dskType, true); diff --git a/Aaru.Core/Devices/Dumping/Sbc/Error.cs b/Aaru.Core/Devices/Dumping/Sbc/Error.cs index 14c723a36..1e371e1a2 100644 --- a/Aaru.Core/Devices/Dumping/Sbc/Error.cs +++ b/Aaru.Core/Devices/Dumping/Sbc/Error.cs @@ -205,8 +205,8 @@ partial class Dump md10 = Modes.EncodeMode10(md, _dev.ScsiType); } - UpdateStatus?.Invoke("Sending MODE SELECT to drive (return damaged blocks)."); - _dumpLog.WriteLine("Sending MODE SELECT to drive (return damaged blocks)."); + UpdateStatus?.Invoke(Localization.Core.Sending_MODE_SELECT_to_drive_return_damaged_blocks); + _dumpLog.WriteLine(Localization.Core.Sending_MODE_SELECT_to_drive_return_damaged_blocks); sense = _dev.ModeSelect(md6, out byte[] senseBuf, true, false, _dev.Timeout, out _); if(sense) @@ -214,12 +214,13 @@ partial class Dump if(sense) { - UpdateStatus?. - Invoke("Drive did not accept MODE SELECT command for persistent error reading, try another drive."); + UpdateStatus?.Invoke(Localization.Core. + Drive_did_not_accept_MODE_SELECT_command_for_persistent_error_reading); - AaruConsole.DebugWriteLine("Error: {0}", Sense.PrettifySense(senseBuf)); + AaruConsole.DebugWriteLine(Localization.Core.Error_0, Sense.PrettifySense(senseBuf)); - _dumpLog.WriteLine("Drive did not accept MODE SELECT command for persistent error reading, try another drive."); + _dumpLog.WriteLine(Localization.Core. + Drive_did_not_accept_MODE_SELECT_command_for_persistent_error_reading); } else runningPersistent = true; @@ -234,15 +235,26 @@ 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", - runningPersistent ? "recovering partial data, " : "")); + if(forward) + PulseProgress?.Invoke(runningPersistent + ? 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(runningPersistent + ? 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)); sense = scsiReader.ReadBlock(out buffer, badSector, out double cmdDuration, out recoveredError, out blankCheck); @@ -255,8 +267,8 @@ partial class Dump blankExtents.Add(badSector, badSector); newBlank = true; - UpdateStatus?.Invoke($"Found blank block {badSector} in pass {pass}."); - _dumpLog.WriteLine("Found blank block {0} in pass {1}.", badSector, pass); + UpdateStatus?.Invoke(string.Format(Localization.Core.Found_blank_block_0_in_pass_1, badSector, pass)); + _dumpLog.WriteLine(Localization.Core.Found_blank_block_0_in_pass_1, badSector, pass); continue; } @@ -266,8 +278,11 @@ partial class Dump _resume.BadBlocks.Remove(badSector); extents.Add(badSector); outputFormat.WriteSector(buffer, 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(runningPersistent) outputFormat.WriteSector(buffer, badSector); @@ -301,8 +316,8 @@ partial class Dump md6 = Modes.EncodeMode6(md, _dev.ScsiType); md10 = Modes.EncodeMode10(md, _dev.ScsiType); - UpdateStatus?.Invoke("Sending MODE SELECT to drive (return device to previous status)."); - _dumpLog.WriteLine("Sending MODE SELECT to drive (return device to previous status)."); + UpdateStatus?.Invoke(Localization.Core.Sending_MODE_SELECT_to_drive_return_device_to_previous_status); + _dumpLog.WriteLine(Localization.Core.Sending_MODE_SELECT_to_drive_return_device_to_previous_status); sense = _dev.ModeSelect(md6, out _, true, false, _dev.Timeout, out _); if(sense) @@ -334,14 +349,17 @@ partial class Dump { if(_aborted) { - UpdateStatus?.Invoke("Aborted!"); - _dumpLog.WriteLine("Aborted!"); + UpdateStatus?.Invoke(Localization.Core.Aborted); + _dumpLog.WriteLine(Localization.Core.Aborted); break; } - PulseProgress?.Invoke(string.Format("Retrying title key {0}, pass {1}, {2}", missingKey, pass, - forward ? "forward" : "reverse")); + PulseProgress?.Invoke(forward + ? string.Format(Localization.Core.Retrying_title_key_0_pass_1_forward, missingKey, + pass) + : string.Format(Localization.Core.Retrying_title_key_0_pass_1_reverse, missingKey, + pass)); sense = dvdDecrypt.ReadTitleKey(out buffer, out _, DvdCssKeyClass.DvdCssCppmOrCprm, missingKey, _dev.Timeout, out double cmdDuration); @@ -377,8 +395,11 @@ partial class Dump }, missingKey, SectorTagType.DvdTitleKeyDecrypted); _resume.MissingTitleKeys.Remove(missingKey); - UpdateStatus?.Invoke($"Correctly retried title key {missingKey} in pass {pass}."); - _dumpLog.WriteLine("Correctly retried title key {0} in pass {1}.", missingKey, pass); + + UpdateStatus?.Invoke(string.Format(Localization.Core.Correctly_retried_title_key_0_in_pass_1, + missingKey, pass)); + + _dumpLog.WriteLine(Localization.Core.Correctly_retried_title_key_0_in_pass_1, missingKey, pass); } else { @@ -391,8 +412,10 @@ partial class Dump outputFormat.WriteSectorTag(buffer, missingKey, SectorTagType.DvdTitleKeyDecrypted); } - UpdateStatus?.Invoke($"Correctly retried title key {missingKey} in pass {pass}."); - _dumpLog.WriteLine("Correctly retried title key {0} in pass {1}.", missingKey, pass); + UpdateStatus?.Invoke(string.Format(Localization.Core.Correctly_retried_title_key_0_in_pass_1, + missingKey, pass)); + + _dumpLog.WriteLine(Localization.Core.Correctly_retried_title_key_0_in_pass_1, missingKey, pass); } } diff --git a/Aaru.Core/Devices/Dumping/Sbc/Optical.cs b/Aaru.Core/Devices/Dumping/Sbc/Optical.cs index 26ba42d8c..ccca6e002 100644 --- a/Aaru.Core/Devices/Dumping/Sbc/Optical.cs +++ b/Aaru.Core/Devices/Dumping/Sbc/Optical.cs @@ -69,8 +69,7 @@ partial class Dump if(_dev.LastError != 0 || decodedSense?.SenseKey == SenseKeys.IllegalRequest) { - UpdateStatus?. - Invoke("The current environment doesn't support the medium scan command, dump will take much longer than normal."); + UpdateStatus?.Invoke(Localization.Core.The_current_environment_doesn_t_support_the_medium_scan_command); canMediumScan = false; writtenExtents.Add(0, blocks - 1); @@ -79,8 +78,7 @@ partial class Dump // TODO: Find a place where MEDIUM SCAN works properly else if(buffer?.Length > 0 && !ArrayHelpers.ArrayIsNullOrEmpty(buffer)) - AaruConsole. - WriteLine("Please open a bug report in github with the manufacturer and model of this device, as well as your operating system name and version and this message: This environment correctly supports MEDIUM SCAN command."); + AaruConsole.WriteLine(Localization.Core.MEDIUM_SCAN_github_plead_message); changingCounter = false; changingWritten = false; @@ -93,8 +91,8 @@ partial class Dump if(_aborted) { _resume.BlankExtents = null; - UpdateStatus?.Invoke("Aborted!"); - _dumpLog.WriteLine("Aborted!"); + UpdateStatus?.Invoke(Localization.Core.Aborted); + _dumpLog.WriteLine(Localization.Core.Aborted); break; } @@ -116,8 +114,8 @@ partial class Dump c = (uint)(blocks - b); UpdateProgress?. - Invoke($"Scanning for {c} {(written ? "written" : "blank")} blocks starting in block {b}", b, - (long)blocks); + Invoke(written ? string.Format(Localization.Core.Scanning_for_0_written_blocks_starting_in_block_1, c, b) : string.Format(Localization.Core.Scanning_for_0_blank_blocks_starting_in_block_1, c, b), + b, (long)blocks); conditionMet = _dev.MediumScan(out _, written, false, false, false, false, b, c, c, out _, out _, uint.MaxValue, out _); @@ -165,8 +163,8 @@ partial class Dump if(writtenExtents.Count == 0) { - UpdateStatus?.Invoke("Cannot dump empty media!"); - _dumpLog.WriteLine("Cannot dump empty media!"); + UpdateStatus?.Invoke(Localization.Core.Cannot_dump_empty_media); + _dumpLog.WriteLine(Localization.Core.Cannot_dump_empty_media); return; } @@ -190,8 +188,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; } @@ -207,8 +205,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 = scsiReader.ReadBlocks(out buffer, i, blocksToRead, out double cmdDuration, out _, out _); totalDuration += cmdDuration; @@ -243,7 +242,7 @@ partial class Dump 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; } diff --git a/Aaru.Core/Devices/Dumping/Sbc/Trim.cs b/Aaru.Core/Devices/Dumping/Sbc/Trim.cs index fd87a5dc1..46c85e5c4 100644 --- a/Aaru.Core/Devices/Dumping/Sbc/Trim.cs +++ b/Aaru.Core/Devices/Dumping/Sbc/Trim.cs @@ -52,7 +52,7 @@ 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; } @@ -62,13 +62,13 @@ 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)); sense = scsiReader.ReadBlock(out buffer, badSector, out double _, out recoveredError, out blankCheck); @@ -78,8 +78,8 @@ partial class Dump newBlank = true; _resume.BadBlocks.Remove(badSector); - UpdateStatus?.Invoke($"Found blank block {badSector}."); - _dumpLog.WriteLine("Found blank block {0}.", badSector); + UpdateStatus?.Invoke(string.Format(Localization.Core.Found_blank_block_0, badSector)); + _dumpLog.WriteLine(Localization.Core.Found_blank_block_0, badSector); continue; } diff --git a/Aaru.Core/Devices/Dumping/SecureDigital.cs b/Aaru.Core/Devices/Dumping/SecureDigital.cs index f0ae08a59..1eaee9730 100644 --- a/Aaru.Core/Devices/Dumping/SecureDigital.cs +++ b/Aaru.Core/Devices/Dumping/SecureDigital.cs @@ -62,12 +62,11 @@ public partial class Dump if(_dumpRaw) { if(_force) - ErrorMessage?. - Invoke("Raw dumping is not supported in MultiMediaCard or SecureDigital devices. Continuing..."); + ErrorMessage?.Invoke(Localization.Core.Raw_dumping_is_not_supported_in_MMC_or_SD_devices_Continuing); else { - StoppingErrorMessage?. - Invoke("Raw dumping is not supported in MultiMediaCard or SecureDigital devices. Aborting..."); + StoppingErrorMessage?.Invoke(Localization.Core. + Raw_dumping_is_not_supported_in_MMC_or_SD_devices_Aborting); return; } @@ -96,8 +95,8 @@ public partial class Dump { case DeviceType.MMC: { - UpdateStatus?.Invoke("Reading CSD"); - _dumpLog.WriteLine("Reading CSD"); + UpdateStatus?.Invoke(Localization.Core.Reading_CSD); + _dumpLog.WriteLine(Localization.Core.Reading_CSD); sense = _dev.ReadCsd(out csd, out response, timeout, out duration); if(!sense) @@ -113,8 +112,8 @@ public partial class Dump if(csdDecoded.Size == 0xFFF) { - UpdateStatus?.Invoke("Reading Extended CSD"); - _dumpLog.WriteLine("Reading Extended CSD"); + UpdateStatus?.Invoke(Localization.Core.Reading_Extended_CSD); + _dumpLog.WriteLine(Localization.Core.Reading_Extended_CSD); sense = _dev.ReadExtendedCsd(out ecsd, out response, timeout, out duration); if(!sense) @@ -152,8 +151,8 @@ public partial class Dump csd = null; } - UpdateStatus?.Invoke("Reading OCR"); - _dumpLog.WriteLine("Reading OCR"); + UpdateStatus?.Invoke(Localization.Core.Reading_OCR); + _dumpLog.WriteLine(Localization.Core.Reading_OCR); sense = _dev.ReadOcr(out ocr, out response, timeout, out duration); if(sense) @@ -169,8 +168,8 @@ public partial class Dump case DeviceType.SecureDigital: { - UpdateStatus?.Invoke("Reading CSD"); - _dumpLog.WriteLine("Reading CSD"); + UpdateStatus?.Invoke(Localization.Core.Reading_CSD); + _dumpLog.WriteLine(Localization.Core.Reading_CSD); sense = _dev.ReadCsd(out csd, out response, timeout, out duration); if(!sense) @@ -202,8 +201,8 @@ public partial class Dump csd = null; } - UpdateStatus?.Invoke("Reading OCR"); - _dumpLog.WriteLine("Reading OCR"); + UpdateStatus?.Invoke(Localization.Core.Reading_OCR); + _dumpLog.WriteLine(Localization.Core.Reading_OCR); sense = _dev.ReadSdocr(out ocr, out response, timeout, out duration); if(sense) @@ -214,8 +213,8 @@ public partial class Dump else mediaTags.Add(MediaTagType.SD_OCR, null); - UpdateStatus?.Invoke("Reading SCR"); - _dumpLog.WriteLine("Reading SCR"); + UpdateStatus?.Invoke(Localization.Core.Reading_SCR); + _dumpLog.WriteLine(Localization.Core.Reading_SCR); sense = _dev.ReadScr(out scr, out response, timeout, out duration); if(sense) @@ -235,8 +234,8 @@ public partial class Dump } } - UpdateStatus?.Invoke("Reading CID"); - _dumpLog.WriteLine("Reading CID"); + UpdateStatus?.Invoke(Localization.Core.Reading_CID); + _dumpLog.WriteLine(Localization.Core.Reading_CID); sense = _dev.ReadCid(out byte[] cid, out response, timeout, out duration); if(sense) @@ -256,14 +255,14 @@ public partial class Dump if(blocks == 0) { - _dumpLog.WriteLine("Unable to get device size."); - StoppingErrorMessage?.Invoke("Unable to get device size."); + _dumpLog.WriteLine(Localization.Core.Unable_to_get_device_size); + StoppingErrorMessage?.Invoke(Localization.Core.Unable_to_get_device_size); return; } - UpdateStatus?.Invoke($"Device reports {blocks} blocks."); - _dumpLog.WriteLine("Device reports {0} blocks.", blocks); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_reports_0_blocks, blocks)); + _dumpLog.WriteLine(Localization.Core.Device_reports_0_blocks, blocks); byte[] cmdBuf; bool error; @@ -283,7 +282,7 @@ public partial class Dump if(sense) { - StoppingErrorMessage?.Invoke($"Error {_dev.LastError} reopening device."); + StoppingErrorMessage?.Invoke(string.Format(Localization.Core.Error_0_reopening_device, _dev.LastError)); return; } @@ -306,9 +305,11 @@ public partial class Dump if(error) { - _dumpLog.WriteLine("ERROR: Cannot get blocks to read, device error {0}.", _dev.LastError); + _dumpLog.WriteLine(Localization.Core.ERROR_Cannot_get_blocks_to_read_device_error_0, _dev.LastError); - StoppingErrorMessage?.Invoke($"Device error {_dev.LastError} trying to guess ideal transfer length."); + StoppingErrorMessage?. + Invoke(string.Format(Localization.Core.Device_error_0_trying_to_guess_ideal_transfer_length, + _dev.LastError)); return; } @@ -336,8 +337,8 @@ public partial class Dump if(error) { - UpdateStatus?.Invoke("Buffered OS reads are not working, trying direct commands."); - _dumpLog.WriteLine("Buffered OS reads are not working, trying direct commands."); + UpdateStatus?.Invoke(Localization.Core.DumBuffered_OS_reads_are_not_working_trying_direct_commands); + _dumpLog.WriteLine(Localization.Core.DumBuffered_OS_reads_are_not_working_trying_direct_commands); blocksToRead = 1; _useBufferedReads = false; } @@ -366,9 +367,11 @@ public partial class Dump if(error) { - _dumpLog.WriteLine("ERROR: Cannot get blocks to read, device error {0}.", _dev.LastError); + _dumpLog.WriteLine(Localization.Core.ERROR_Cannot_get_blocks_to_read_device_error_0, _dev.LastError); - StoppingErrorMessage?.Invoke($"Device error {_dev.LastError} trying to guess ideal transfer length."); + StoppingErrorMessage?. + Invoke(string.Format(Localization.Core.Device_error_0_trying_to_guess_ideal_transfer_length, + _dev.LastError)); return; } @@ -380,9 +383,10 @@ public partial class Dump if(error) { - _dumpLog.WriteLine("ERROR: Could not read from device, device error {0}.", _dev.LastError); + _dumpLog.WriteLine(Localization.Core.ERROR_Could_not_read_from_device_device_error_0, _dev.LastError); - StoppingErrorMessage?.Invoke($"Device error {_dev.LastError} trying to read from device."); + StoppingErrorMessage?.Invoke(string.Format(Localization.Core.Device_error_0_trying_to_read_from_device, + _dev.LastError)); return; } @@ -390,18 +394,24 @@ public partial class Dump if(supportsCmd23 || blocksToRead == 1) { - UpdateStatus?.Invoke($"Device can read {blocksToRead} blocks at a time."); - _dumpLog.WriteLine("Device can read {0} blocks at a time.", blocksToRead); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_can_read_0_blocks_at_a_time, blocksToRead)); + _dumpLog.WriteLine(Localization.Core.Device_can_read_0_blocks_at_a_time, blocksToRead); } else if(_useBufferedReads) { - UpdateStatus?.Invoke($"Device can read {blocksToRead} blocks at a time using OS buffered reads."); - _dumpLog.WriteLine("Device can read {0} blocks at a time using OS buffered reads.", blocksToRead); + UpdateStatus?. + Invoke(string.Format(Localization.Core.Device_can_read_0_blocks_at_a_time_using_OS_buffered_reads, + blocksToRead)); + + _dumpLog.WriteLine(Localization.Core.Device_can_read_0_blocks_at_a_time_using_OS_buffered_reads, + blocksToRead); } else { - UpdateStatus?.Invoke($"Device can read {blocksToRead} blocks using sequential commands."); - _dumpLog.WriteLine("Device can read {0} blocks using sequential commands.", blocksToRead); + UpdateStatus?.Invoke(string.Format(Localization.Core.Device_can_read_0_blocks_using_sequential_commands, + blocksToRead)); + + _dumpLog.WriteLine(Localization.Core.Device_can_read_0_blocks_using_sequential_commands, blocksToRead); } if(_skip < blocksToRead) @@ -416,7 +426,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; } @@ -426,21 +436,21 @@ public partial class Dump foreach(MediaTagType tag in mediaTags.Keys.Where(tag => !outputFormat.SupportedMediaTags.Contains(tag))) { ret = false; - _dumpLog.WriteLine($"Output format does not support {tag}."); - ErrorMessage?.Invoke($"Output format does not support {tag}."); + _dumpLog.WriteLine(string.Format(Localization.Core.Output_format_does_not_support_0, tag)); + ErrorMessage?.Invoke(string.Format(Localization.Core.Output_format_does_not_support_0, tag)); } if(!ret) { if(_force) { - _dumpLog.WriteLine("Several media tags not supported, continuing..."); - ErrorMessage?.Invoke("Several media tags not supported, continuing..."); + _dumpLog.WriteLine(Localization.Core.Several_media_tags_not_supported_continuing); + ErrorMessage?.Invoke(Localization.Core.Several_media_tags_not_supported_continuing); } else { - _dumpLog.WriteLine("Several media tags not supported, not continuing..."); - 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; } @@ -456,11 +466,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; } @@ -499,9 +509,9 @@ public partial class Dump if(!ret && !_force) { - _dumpLog.WriteLine("Cannot write CID to output image."); + _dumpLog.WriteLine(Localization.Core.Cannot_write_CID_to_output_image); - StoppingErrorMessage?.Invoke("Cannot write CID to output image." + Environment.NewLine + + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_write_CID_to_output_image + Environment.NewLine + outputFormat.ErrorMessage); return; @@ -519,9 +529,9 @@ public partial class Dump if(!ret && !_force) { - _dumpLog.WriteLine("Cannot write CSD to output image."); + _dumpLog.WriteLine(Localization.Core.Cannot_write_CSD_to_output_image); - StoppingErrorMessage?.Invoke("Cannot write CSD to output image." + Environment.NewLine + + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_write_CSD_to_output_image + Environment.NewLine + outputFormat.ErrorMessage); return; @@ -536,10 +546,10 @@ public partial class Dump if(!ret && !_force) { - _dumpLog.WriteLine("Cannot write Extended CSD to output image."); + _dumpLog.WriteLine(Localization.Core.Cannot_write_Extended_CSD_to_output_image); - StoppingErrorMessage?.Invoke("Cannot write Extended CSD to output image." + Environment.NewLine + - outputFormat.ErrorMessage); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_write_Extended_CSD_to_output_image + + Environment.NewLine + outputFormat.ErrorMessage); return; } @@ -556,9 +566,9 @@ public partial class Dump if(!ret && !_force) { - _dumpLog.WriteLine("Cannot write OCR to output image."); + _dumpLog.WriteLine(Localization.Core.Cannot_write_OCR_to_output_image); - StoppingErrorMessage?.Invoke("Cannot write OCR to output image." + Environment.NewLine + + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_write_OCR_to_output_image + Environment.NewLine + outputFormat.ErrorMessage); return; @@ -573,9 +583,9 @@ public partial class Dump if(!ret && !_force) { - _dumpLog.WriteLine("Cannot write SCR to output image."); + _dumpLog.WriteLine(Localization.Core.Cannot_write_SCR_to_output_image); - StoppingErrorMessage?.Invoke("Cannot write SCR to output image." + Environment.NewLine + + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_write_SCR_to_output_image + Environment.NewLine + outputFormat.ErrorMessage); return; @@ -584,8 +594,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); } start = DateTime.UtcNow; @@ -601,8 +611,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; } @@ -618,8 +628,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); if(blocksToRead == 1) error = _dev.ReadSingleBlock(out cmdBuf, out _, (uint)i, blockSize, byteAddressed, timeout, @@ -658,7 +669,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; } @@ -685,20 +696,20 @@ 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 @@ -708,8 +719,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(); @@ -719,13 +730,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)); error = _dev.ReadSingleBlock(out cmdBuf, out response, (uint)badSector, blockSize, byteAddressed, timeout, out duration); @@ -746,8 +757,11 @@ 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 @@ -768,13 +782,17 @@ 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($"Retrying sector {badSector}, pass {pass}, {(forward ? "forward" : "reverse")}"); + PulseProgress?.Invoke(forward + ? string.Format(Localization.Core.Retrying_sector_0_pass_1_forward, badSector, + pass) + : string.Format(Localization.Core.Retrying_sector_0_pass_1_reverse, badSector, + pass)); error = _dev.ReadSingleBlock(out cmdBuf, out response, (uint)badSector, blockSize, byteAddressed, timeout, out duration); @@ -791,8 +809,11 @@ 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); } if(pass < _retryPasses && @@ -825,24 +846,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) { - UpdateStatus?.Invoke("Aborted!"); - _dumpLog.WriteLine("Aborted!"); + UpdateStatus?.Invoke(Localization.Core.Aborted); + _dumpLog.WriteLine(Localization.Core.Aborted); return; } @@ -851,15 +875,15 @@ public partial class Dump if(_metadata) { - UpdateStatus?.Invoke("Creating sidecar."); - _dumpLog.WriteLine("Creating sidecar."); + UpdateStatus?.Invoke(Localization.Core.Creating_sidecar); + _dumpLog.WriteLine(Localization.Core.Creating_sidecar); var filters = new FiltersList(); IFilter filter = filters.GetFilter(_outputPath); var inputPlugin = ImageFormat.Detect(filter) as IMediaImage; ErrorNumber opened = inputPlugin.Open(filter); if(opened != ErrorNumber.NoError) - StoppingErrorMessage?.Invoke($"Error {opened} opening created image."); + StoppingErrorMessage?.Invoke(string.Format(Localization.Core.Error_0_opening_created_image, opened)); DateTime chkStart = DateTime.UtcNow; _sidecarClass = new Sidecar(inputPlugin, _outputPath, filter.Id, _encoding); @@ -883,14 +907,17 @@ public partial class Dump end = DateTime.UtcNow; totalChkDuration = (end - chkStart).TotalMilliseconds; - UpdateStatus?.Invoke($"Sidecar created in {(end - 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, + (end - chkStart).TotalSeconds)); - _dumpLog.WriteLine("Sidecar created in {0} seconds.", (end - 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, (end - chkStart).TotalSeconds); + + _dumpLog.WriteLine(Localization.Core.Average_checksum_speed_0_KiB_sec, blockSize * (double)(blocks + 1) / 1024 / (totalChkDuration / 1000)); (string type, string subType) xmlType = (null, null); @@ -926,7 +953,7 @@ public partial class Dump sidecar.BlockMedia[0].Size = blocks * blockSize; - UpdateStatus?.Invoke("Writing metadata sidecar"); + UpdateStatus?.Invoke(Localization.Core.Writing_metadata_sidecar); var xmlFs = new FileStream(_outputPrefix + ".cicm.xml", FileMode.Create); @@ -938,20 +965,21 @@ 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)); UpdateStatus?.Invoke(""); if(_resume.BadBlocks.Count > 0) diff --git a/Aaru.Core/Devices/Dumping/XGD.cs b/Aaru.Core/Devices/Dumping/XGD.cs index f66106f67..541e45288 100644 --- a/Aaru.Core/Devices/Dumping/XGD.cs +++ b/Aaru.Core/Devices/Dumping/XGD.cs @@ -76,7 +76,7 @@ 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; } @@ -87,10 +87,10 @@ partial class Dump if(!isAdmin) { - AaruConsole. - ErrorWriteLine("Because of the commands sent to a device, dumping XGD must be done with administrative privileges. Cannot continue."); + AaruConsole.ErrorWriteLine(Localization.Core. + Because_of_commands_sent_dumping_XGD_must_be_administrative_Cannot_continue); - _dumpLog.WriteLine("Cannot dump XGD without administrative privileges."); + _dumpLog.WriteLine(Localization.Core.Cannot_dump_XGD_without_administrative_privileges); return; } @@ -107,8 +107,8 @@ partial class Dump if(sense) { - _dumpLog.WriteLine("Cannot get disc capacity."); - StoppingErrorMessage?.Invoke("Cannot get disc capacity."); + _dumpLog.WriteLine(Localization.Core.Cannot_get_disc_capacity); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_get_disc_capacity); return; } @@ -119,32 +119,32 @@ partial class Dump if(sense) { - _dumpLog.WriteLine("Cannot get PFI."); - StoppingErrorMessage?.Invoke("Cannot get PFI."); + _dumpLog.WriteLine(Localization.Core.Cannot_get_PFI); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_get_PFI); return; } - UpdateStatus?.Invoke("Reading Xbox Security Sector."); - _dumpLog.WriteLine("Reading Xbox Security Sector."); + UpdateStatus?.Invoke(Localization.Core.Reading_Xbox_Security_Sector); + _dumpLog.WriteLine(Localization.Core.Reading_Xbox_Security_Sector); sense = _dev.KreonExtractSs(out byte[] ssBuf, out senseBuf, _dev.Timeout, out _); if(sense) { - _dumpLog.WriteLine("Cannot get Xbox Security Sector, not continuing."); - StoppingErrorMessage?.Invoke("Cannot get Xbox Security Sector, not continuing."); + _dumpLog.WriteLine(Localization.Core.Cannot_get_Xbox_Security_Sector_not_continuing); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_get_Xbox_Security_Sector_not_continuing); return; } - _dumpLog.WriteLine("Decoding Xbox Security Sector."); - UpdateStatus?.Invoke("Decoding Xbox Security Sector."); + _dumpLog.WriteLine(Localization.Core.Decoding_Xbox_Security_Sector); + UpdateStatus?.Invoke(Localization.Core.Decoding_Xbox_Security_Sector); SS.SecuritySector? xboxSs = SS.Decode(ssBuf); if(!xboxSs.HasValue) { - _dumpLog.WriteLine("Cannot decode Xbox Security Sector, not continuing."); - StoppingErrorMessage?.Invoke("Cannot decode Xbox Security Sector, not continuing."); + _dumpLog.WriteLine(Localization.Core.Cannot_decode_Xbox_Security_Sector_not_continuing); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_decode_Xbox_Security_Sector_not_continuing); return; } @@ -154,29 +154,29 @@ partial class Dump mediaTags.Add(MediaTagType.Xbox_SecuritySector, tmpBuf); // Get video partition size - AaruConsole.DebugWriteLine("Dump-media command", "Getting video partition size"); - UpdateStatus?.Invoke("Locking drive."); - _dumpLog.WriteLine("Locking drive."); + AaruConsole.DebugWriteLine("Dump-media command", Localization.Core.Getting_video_partition_size); + UpdateStatus?.Invoke(Localization.Core.Locking_drive); + _dumpLog.WriteLine(Localization.Core.Locking_drive); sense = _dev.KreonLock(out senseBuf, _dev.Timeout, out _); if(sense) { _errorLog?.WriteLine("Kreon lock", _dev.Error, _dev.LastError, senseBuf); - _dumpLog.WriteLine("Cannot lock drive, not continuing."); - StoppingErrorMessage?.Invoke("Cannot lock drive, not continuing."); + _dumpLog.WriteLine(Localization.Core.Cannot_lock_drive_not_continuing); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_lock_drive_not_continuing); return; } - UpdateStatus?.Invoke("Getting video partition size."); - _dumpLog.WriteLine("Getting video partition size."); + UpdateStatus?.Invoke(Localization.Core.Getting_video_partition_size); + _dumpLog.WriteLine(Localization.Core.Getting_video_partition_size); sense = _dev.ReadCapacity(out byte[] readBuffer, out senseBuf, _dev.Timeout, out _); if(sense) { - _dumpLog.WriteLine("Cannot get disc capacity."); - StoppingErrorMessage?.Invoke("Cannot get disc capacity."); + _dumpLog.WriteLine(Localization.Core.Cannot_get_disc_capacity); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_get_disc_capacity); return; } @@ -184,16 +184,16 @@ partial class Dump ulong totalSize = (ulong)((readBuffer[0] << 24) + (readBuffer[1] << 16) + (readBuffer[2] << 8) + readBuffer[3]) & 0xFFFFFFFF; - UpdateStatus?.Invoke("Reading Physical Format Information."); - _dumpLog.WriteLine("Reading Physical Format Information."); + UpdateStatus?.Invoke(Localization.Core.Reading_Physical_Format_Information); + _dumpLog.WriteLine(Localization.Core.Reading_Physical_Format_Information); sense = _dev.ReadDiscStructure(out readBuffer, out senseBuf, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.PhysicalInformation, 0, 0, out _); if(sense) { - _dumpLog.WriteLine("Cannot get PFI."); - StoppingErrorMessage?.Invoke("Cannot get PFI."); + _dumpLog.WriteLine(Localization.Core.Cannot_get_PFI); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_get_PFI); return; } @@ -201,22 +201,24 @@ partial class Dump tmpBuf = new byte[readBuffer.Length - 4]; Array.Copy(readBuffer, 4, tmpBuf, 0, readBuffer.Length - 4); mediaTags.Add(MediaTagType.DVD_PFI, tmpBuf); - AaruConsole.DebugWriteLine("Dump-media command", "Video partition total size: {0} sectors", totalSize); + + AaruConsole.DebugWriteLine("Dump-media command", Localization.Core.Video_partition_total_size_0_sectors, + totalSize); ulong l0Video = (PFI.Decode(readBuffer, MediaType.DVDROM)?.Layer0EndPSN ?? 0) - (PFI.Decode(readBuffer, MediaType.DVDROM)?.DataAreaStartPSN ?? 0) + 1; ulong l1Video = totalSize - l0Video + 1; - UpdateStatus?.Invoke("Reading Disc Manufacturing Information."); - _dumpLog.WriteLine("Reading Disc Manufacturing Information."); + UpdateStatus?.Invoke(Localization.Core.Reading_Disc_Manufacturing_Information); + _dumpLog.WriteLine(Localization.Core.Reading_Disc_Manufacturing_Information); sense = _dev.ReadDiscStructure(out readBuffer, out senseBuf, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.DiscManufacturingInformation, 0, 0, out _); if(sense) { - _dumpLog.WriteLine("Cannot get DMI."); - StoppingErrorMessage?.Invoke("Cannot get DMI."); + _dumpLog.WriteLine(Localization.Core.Cannot_get_DMI); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_get_DMI); return; } @@ -228,8 +230,8 @@ partial class Dump // Should be a safe value to detect the lock command was ignored, and we're indeed getting the whole size and not the locked one if(totalSize > 300000) { - UpdateStatus?.Invoke("Video partition is too big, did lock work? Trying cold values."); - _dumpLog.WriteLine("Video partition is too big, did lock work? Trying cold values."); + UpdateStatus?.Invoke(Localization.Core.Video_partition_is_too_big_did_lock_work_Trying_cold_values); + _dumpLog.WriteLine(Localization.Core.Video_partition_is_too_big_did_lock_work_Trying_cold_values); totalSize = (ulong)((coldReadCapacity[0] << 24) + (coldReadCapacity[1] << 16) + (coldReadCapacity[2] << 8) + coldReadCapacity[3]) & 0xFFFFFFFF; @@ -238,7 +240,9 @@ partial class Dump Array.Copy(coldPfi, 4, tmpBuf, 0, coldPfi.Length - 4); mediaTags.Remove(MediaTagType.DVD_PFI); mediaTags.Add(MediaTagType.DVD_PFI, tmpBuf); - AaruConsole.DebugWriteLine("Dump-media command", "Video partition total size: {0} sectors", totalSize); + + AaruConsole.DebugWriteLine("Dump-media command", Localization.Core.Video_partition_total_size_0_sectors, + totalSize); l0Video = (PFI.Decode(coldPfi, MediaType.DVDROM)?.Layer0EndPSN ?? 0) - (PFI.Decode(coldPfi, MediaType.DVDROM)?.DataAreaStartPSN ?? 0) + 1; @@ -247,38 +251,37 @@ partial class Dump if(totalSize > 300000) { - _dumpLog.WriteLine("Cannot get video partition size, not continuing. Try to eject and reinsert the drive, if it keeps happening, contact support."); + _dumpLog.WriteLine(Localization.Core.Cannot_get_video_partition_size_not_continuing); - StoppingErrorMessage?. - Invoke("Cannot get video partition size, not continuing. Try to eject and reinsert the drive, if it keeps happening, contact support."); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_get_video_partition_size_not_continuing); return; } } // Get game partition size - AaruConsole.DebugWriteLine("Dump-media command", "Getting game partition size"); - UpdateStatus?.Invoke("Unlocking drive (Xtreme)."); - _dumpLog.WriteLine("Unlocking drive (Xtreme)."); + AaruConsole.DebugWriteLine("Dump-media command", Localization.Core.Getting_game_partition_size); + UpdateStatus?.Invoke(Localization.Core.Unlocking_drive_Xtreme_); + _dumpLog.WriteLine(Localization.Core.Unlocking_drive_Xtreme_); sense = _dev.KreonUnlockXtreme(out senseBuf, _dev.Timeout, out _); if(sense) { _errorLog?.WriteLine("Kreon Xtreme unlock", _dev.Error, _dev.LastError, senseBuf); - _dumpLog.WriteLine("Cannot unlock drive, not continuing."); - StoppingErrorMessage?.Invoke("Cannot unlock drive, not continuing."); + _dumpLog.WriteLine(Localization.Core.Cannot_unlock_drive_not_continuing); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_unlock_drive_not_continuing); return; } - UpdateStatus?.Invoke("Getting game partition size."); - _dumpLog.WriteLine("Getting game partition size."); + UpdateStatus?.Invoke(Localization.Core.Getting_game_partition_size); + _dumpLog.WriteLine(Localization.Core.Getting_game_partition_size); sense = _dev.ReadCapacity(out readBuffer, out senseBuf, _dev.Timeout, out _); if(sense) { - _dumpLog.WriteLine("Cannot get disc capacity."); - StoppingErrorMessage?.Invoke("Cannot get disc capacity."); + _dumpLog.WriteLine(Localization.Core.Cannot_get_disc_capacity); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_get_disc_capacity); return; } @@ -287,31 +290,32 @@ partial class Dump ((ulong)((readBuffer[0] << 24) + (readBuffer[1] << 16) + (readBuffer[2] << 8) + readBuffer[3]) & 0xFFFFFFFF) + 1; - AaruConsole.DebugWriteLine("Dump-media command", "Game partition total size: {0} sectors", gameSize); + AaruConsole.DebugWriteLine("Dump-media command", Localization.Core.Game_partition_total_size_0_sectors, + gameSize); // Get middle zone size - AaruConsole.DebugWriteLine("Dump-media command", "Getting middle zone size"); - UpdateStatus?.Invoke("Unlocking drive (Wxripper)."); - _dumpLog.WriteLine("Unlocking drive (Wxripper)."); + AaruConsole.DebugWriteLine("Dump-media command", Localization.Core.Getting_middle_zone_size); + UpdateStatus?.Invoke(Localization.Core.Unlocking_drive_Wxripper); + _dumpLog.WriteLine(Localization.Core.Unlocking_drive_Wxripper); sense = _dev.KreonUnlockWxripper(out senseBuf, _dev.Timeout, out _); if(sense) { _errorLog?.WriteLine("Kreon Wxripper unlock", _dev.Error, _dev.LastError, senseBuf); - _dumpLog.WriteLine("Cannot unlock drive, not continuing."); - StoppingErrorMessage?.Invoke("Cannot unlock drive, not continuing."); + _dumpLog.WriteLine(Localization.Core.Cannot_unlock_drive_not_continuing); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_unlock_drive_not_continuing); return; } - UpdateStatus?.Invoke("Getting disc size."); - _dumpLog.WriteLine("Getting disc size."); + UpdateStatus?.Invoke(Localization.Core.Getting_disc_size); + _dumpLog.WriteLine(Localization.Core.Getting_disc_size); sense = _dev.ReadCapacity(out readBuffer, out senseBuf, _dev.Timeout, out _); if(sense) { - _dumpLog.WriteLine("Cannot get disc capacity."); - StoppingErrorMessage?.Invoke("Cannot get disc capacity."); + _dumpLog.WriteLine(Localization.Core.Cannot_get_disc_capacity); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_get_disc_capacity); return; } @@ -319,39 +323,46 @@ partial class Dump totalSize = (ulong)((readBuffer[0] << 24) + (readBuffer[1] << 16) + (readBuffer[2] << 8) + readBuffer[3]) & 0xFFFFFFFF; - UpdateStatus?.Invoke("Reading Physical Format Information."); - _dumpLog.WriteLine("Reading Physical Format Information."); + UpdateStatus?.Invoke(Localization.Core.Reading_Physical_Format_Information); + _dumpLog.WriteLine(Localization.Core.Reading_Physical_Format_Information); sense = _dev.ReadDiscStructure(out readBuffer, out senseBuf, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.PhysicalInformation, 0, 0, out _); if(sense) { - _dumpLog.WriteLine("Cannot get PFI."); - StoppingErrorMessage?.Invoke("Cannot get PFI."); + _dumpLog.WriteLine(Localization.Core.Cannot_get_PFI); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_get_PFI); return; } - AaruConsole.DebugWriteLine("Dump-media command", "Unlocked total size: {0} sectors", totalSize); + AaruConsole.DebugWriteLine("Dump-media command", Localization.Core.Unlocked_total_size_0_sectors, totalSize); ulong blocks = totalSize + 1; PFI.PhysicalFormatInformation? wxRipperPfiNullable = PFI.Decode(readBuffer, MediaType.DVDROM); if(wxRipperPfiNullable == null) { - _dumpLog.WriteLine("Cannot decode PFI."); - StoppingErrorMessage?.Invoke("Cannot decode PFI."); + _dumpLog.WriteLine(Localization.Core.Cannot_decode_PFI); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_decode_PFI); return; } PFI.PhysicalFormatInformation wxRipperPfi = wxRipperPfiNullable.Value; - UpdateStatus?.Invoke($"WxRipper PFI's Data Area Start PSN: {wxRipperPfi.DataAreaStartPSN} sectors"); - UpdateStatus?.Invoke($"WxRipper PFI's Layer 0 End PSN: {wxRipperPfi.Layer0EndPSN} sectors"); - _dumpLog.WriteLine($"WxRipper PFI's Data Area Start PSN: {wxRipperPfi.DataAreaStartPSN} sectors"); - _dumpLog.WriteLine($"WxRipper PFI's Layer 0 End PSN: {wxRipperPfi.Layer0EndPSN} sectors"); + UpdateStatus?.Invoke(string.Format(Localization.Core.WxRipper_PFI_Data_Area_Start_PSN_0_sectors, + wxRipperPfi.DataAreaStartPSN)); + + UpdateStatus?.Invoke(string.Format(Localization.Core.WxRipper_PFI_Layer_0_End_PSN_0_sectors, + wxRipperPfi.Layer0EndPSN)); + + _dumpLog.WriteLine(string.Format(Localization.Core.WxRipper_PFI_Data_Area_Start_PSN_0_sectors, + wxRipperPfi.DataAreaStartPSN)); + + _dumpLog.WriteLine(string.Format(Localization.Core.WxRipper_PFI_Layer_0_End_PSN_0_sectors, + wxRipperPfi.Layer0EndPSN)); ulong middleZone = totalSize - (wxRipperPfi.Layer0EndPSN - wxRipperPfi.DataAreaStartPSN + 1) - gameSize + 1; @@ -359,16 +370,16 @@ partial class Dump Array.Copy(readBuffer, 4, tmpBuf, 0, readBuffer.Length - 4); mediaTags.Add(MediaTagType.Xbox_PFI, tmpBuf); - UpdateStatus?.Invoke("Reading Disc Manufacturing Information."); - _dumpLog.WriteLine("Reading Disc Manufacturing Information."); + UpdateStatus?.Invoke(Localization.Core.Reading_Disc_Manufacturing_Information); + _dumpLog.WriteLine(Localization.Core.Reading_Disc_Manufacturing_Information); sense = _dev.ReadDiscStructure(out readBuffer, out senseBuf, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.DiscManufacturingInformation, 0, 0, out _); if(sense) { - _dumpLog.WriteLine("Cannot get DMI."); - StoppingErrorMessage?.Invoke("Cannot get DMI."); + _dumpLog.WriteLine(Localization.Core.Cannot_get_DMI); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_get_DMI); return; } @@ -380,40 +391,48 @@ partial class Dump totalSize = l0Video + l1Video + (middleZone * 2) + gameSize; ulong layerBreak = l0Video + middleZone + (gameSize / 2); - UpdateStatus?.Invoke($"Video layer 0 size: {l0Video} sectors"); - UpdateStatus?.Invoke($"Video layer 1 size: {l1Video} sectors"); - UpdateStatus?.Invoke($"Middle zone size: {middleZone} sectors"); - UpdateStatus?.Invoke($"Game data size: {gameSize} sectors"); - UpdateStatus?.Invoke($"Total size: {totalSize} sectors"); - UpdateStatus?.Invoke($"Real layer break: {layerBreak}"); + UpdateStatus?.Invoke(string.Format(Localization.Core.Video_layer_0_size_0_sectors, l0Video)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Video_layer_1_size_0_sectors, l1Video)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Middle_zone_size_0_sectors, middleZone)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Game_data_size_0_sectors, gameSize)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Total_size_0_sectors, totalSize)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Real_layer_break_0, layerBreak)); UpdateStatus?.Invoke(""); - _dumpLog.WriteLine("Video layer 0 size: {0} sectors", l0Video); - _dumpLog.WriteLine("Video layer 1 size: {0} sectors", l1Video); - _dumpLog.WriteLine("Middle zone 0 size: {0} sectors", middleZone); - _dumpLog.WriteLine("Game data 0 size: {0} sectors", gameSize); - _dumpLog.WriteLine("Total 0 size: {0} sectors", totalSize); - _dumpLog.WriteLine("Real layer break: {0}", layerBreak); + _dumpLog.WriteLine(Localization.Core.Video_layer_0_size_0_sectors, l0Video); + _dumpLog.WriteLine(Localization.Core.Video_layer_1_size_0_sectors, l1Video); + _dumpLog.WriteLine(Localization.Core.Middle_zone_size_0_sectors, middleZone); + _dumpLog.WriteLine(Localization.Core.Game_data_size_0_sectors, gameSize); + _dumpLog.WriteLine(Localization.Core.Total_size_0_sectors, totalSize); + _dumpLog.WriteLine(Localization.Core.Real_layer_break_0, layerBreak); bool read12 = !_dev.Read12(out readBuffer, out senseBuf, 0, false, true, false, false, 0, blockSize, 0, 1, false, _dev.Timeout, out _); if(!read12) { - _dumpLog.WriteLine("Cannot read medium, aborting scan..."); - StoppingErrorMessage?.Invoke("Cannot read medium, aborting scan..."); + _dumpLog.WriteLine(Localization.Core.Cannot_read_medium_aborting_scan); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_read_medium_aborting_scan); return; } - _dumpLog.WriteLine("Using SCSI READ (12) command."); - UpdateStatus?.Invoke("Using SCSI READ (12) command."); + _dumpLog.WriteLine(Localization.Core.Using_SCSI_READ_12_command); + UpdateStatus?.Invoke(Localization.Core.Using_SCSI_READ_12_command); // Set speed if(_speedMultiplier >= 0) { - _dumpLog.WriteLine($"Setting speed to {(_speed == 0 ? "MAX." : $"{_speed}x")}."); - UpdateStatus?.Invoke($"Setting speed to {(_speed == 0 ? "MAX." : $"{_speed}x")}."); + if(_speed == 0) + { + _dumpLog.WriteLine(Localization.Core.Setting_speed_to_MAX); + UpdateStatus?.Invoke(Localization.Core.Setting_speed_to_MAX); + } + else + { + _dumpLog.WriteLine(string.Format(Localization.Core.Setting_speed_to_0_x, _speed)); + UpdateStatus?.Invoke(string.Format(Localization.Core.Setting_speed_to_0_x, _speed)); + } _speed *= _speedMultiplier; @@ -438,8 +457,11 @@ partial class Dump if(_dev.Error) { - _dumpLog.WriteLine("Device error {0} trying to guess ideal transfer length.", _dev.LastError); - StoppingErrorMessage?.Invoke($"Device error {_dev.LastError} trying to guess ideal transfer length."); + _dumpLog.WriteLine(Localization.Core.Device_error_0_trying_to_guess_ideal_transfer_length, _dev.LastError); + + StoppingErrorMessage?. + Invoke(string.Format(Localization.Core.Device_error_0_trying_to_guess_ideal_transfer_length, + _dev.LastError)); return; } @@ -452,28 +474,28 @@ partial class Dump foreach(MediaTagType tag in mediaTags.Keys.Where(tag => !outputFormat.SupportedMediaTags.Contains(tag))) { ret = false; - _dumpLog.WriteLine($"Output format does not support {tag}."); - ErrorMessage?.Invoke($"Output format does not support {tag}."); + _dumpLog.WriteLine(string.Format(Localization.Core.Output_format_does_not_support_0, tag)); + ErrorMessage?.Invoke(string.Format(Localization.Core.Output_format_does_not_support_0, tag)); } if(!ret) { if(_force) { - _dumpLog.WriteLine("Several media tags not supported, continuing..."); - ErrorMessage?.Invoke("Several media tags not supported, continuing..."); + _dumpLog.WriteLine(Localization.Core.Several_media_tags_not_supported_continuing); + ErrorMessage?.Invoke(Localization.Core.Several_media_tags_not_supported_continuing); } else { - _dumpLog.WriteLine("Several media tags not supported, not continuing..."); - 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; } } - _dumpLog.WriteLine("Reading {0} sectors at a time.", blocksToRead); - UpdateStatus?.Invoke($"Reading {blocksToRead} sectors at a time."); + _dumpLog.WriteLine(Localization.Core.Reading_0_sectors_at_a_time, blocksToRead); + UpdateStatus?.Invoke(string.Format(Localization.Core.Reading_0_sectors_at_a_time, blocksToRead)); var mhddLog = new MhddLog(_outputPrefix + ".mhddlog.bin", _dev, blocks, blockSize, blocksToRead, _private); var ibgLog = new IbgLog(_outputPrefix + ".ibg", 0x0010); @@ -482,11 +504,11 @@ 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; } @@ -504,7 +526,7 @@ 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); (outputFormat as IWritableOpticalImage).SetTracks(new List { @@ -524,14 +546,14 @@ 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; - _dumpLog.WriteLine("Reading game partition."); - UpdateStatus?.Invoke("Reading game partition."); + _dumpLog.WriteLine(Localization.Core.Reading_game_partition); + UpdateStatus?.Invoke(Localization.Core.Reading_game_partition); DateTime timeSpeedStart = DateTime.UtcNow; ulong sectorSpeedStart = 0; InitProgress?.Invoke(); @@ -542,8 +564,8 @@ partial class Dump { _resume.NextBlock = currentSector; currentTry.Extents = ExtentsConverter.ToMetadata(extents); - UpdateStatus?.Invoke("Aborted!"); - _dumpLog.WriteLine("Aborted!"); + UpdateStatus?.Invoke(Localization.Core.Aborted); + _dumpLog.WriteLine(Localization.Core.Aborted); break; } @@ -586,8 +608,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; } @@ -603,8 +625,9 @@ partial class Dump currentSpeed > 0) minSpeed = currentSpeed; - UpdateProgress?.Invoke($"Reading sector {i} of {totalSize} ({currentSpeed:F3} MiB/sec.)", (long)i, - (long)totalSize); + UpdateProgress?. + Invoke(string.Format(Localization.Core.Reading_sector_0_of_1_2_MiB_sec, i, totalSize, currentSpeed), + (long)i, (long)totalSize); sense = _dev.Read12(out readBuffer, out senseBuf, 0, false, false, false, false, (uint)i, blockSize, 0, blocksToRead, false, _dev.Timeout, out cmdDuration); @@ -640,12 +663,14 @@ 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; string[] senseLines = Sense.PrettifySense(senseBuf).Split(new[] @@ -681,8 +706,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; } @@ -712,8 +737,8 @@ partial class Dump EndProgress?.Invoke(); // Middle Zone D - UpdateStatus?.Invoke("Writing Middle Zone D (empty)."); - _dumpLog.WriteLine("Writing Middle Zone D (empty)."); + UpdateStatus?.Invoke(Localization.Core.Writing_Middle_Zone_D_empty); + _dumpLog.WriteLine(Localization.Core.Writing_Middle_Zone_D_empty); InitProgress?.Invoke(); for(ulong middle = currentSector - blocks - 1; middle < middleZone - 1; middle += blocksToRead) @@ -721,8 +746,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; } @@ -731,8 +756,8 @@ partial class Dump blocksToRead = (uint)(middleZone - 1 - middle); UpdateProgress?. - Invoke($"Reading sector {middle + currentSector} of {totalSize} ({currentSpeed:F3} MiB/sec.)", - (long)(middle + currentSector), (long)totalSize); + Invoke(string.Format(Localization.Core.Reading_sector_0_of_1_2_MiB_sec, middle + currentSector, totalSize, currentSpeed), + (long)(middle + currentSector), (long)totalSize); mhddLog.Write(middle + currentSector, cmdDuration); ibgLog.Write(middle + currentSector, currentSpeed * 1024); @@ -751,14 +776,14 @@ partial class Dump blocksToRead = saveBlocksToRead; - UpdateStatus?.Invoke("Locking drive."); - _dumpLog.WriteLine("Locking drive."); + UpdateStatus?.Invoke(Localization.Core.Locking_drive); + _dumpLog.WriteLine(Localization.Core.Locking_drive); sense = _dev.KreonLock(out senseBuf, _dev.Timeout, out _); if(sense) { - _dumpLog.WriteLine("Cannot lock drive, not continuing."); - StoppingErrorMessage?.Invoke("Cannot lock drive, not continuing."); + _dumpLog.WriteLine(Localization.Core.Cannot_lock_drive_not_continuing); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_lock_drive_not_continuing); return; } @@ -767,14 +792,14 @@ partial class Dump if(sense) { - StoppingErrorMessage?.Invoke("Cannot get disc capacity."); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_get_disc_capacity); return; } // Video Layer 1 - _dumpLog.WriteLine("Reading Video Layer 1."); - UpdateStatus?.Invoke("Reading Video Layer 1."); + _dumpLog.WriteLine(Localization.Core.Reading_Video_Layer_1); + UpdateStatus?.Invoke(Localization.Core.Reading_Video_Layer_1); InitProgress?.Invoke(); for(ulong l1 = currentSector - blocks - middleZone + l0Video; l1 < l0Video + l1Video; l1 += blocksToRead) @@ -782,8 +807,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; } @@ -799,8 +824,9 @@ partial class Dump currentSpeed > 0) minSpeed = currentSpeed; - UpdateProgress?.Invoke($"Reading sector {currentSector} of {totalSize} ({currentSpeed:F3} MiB/sec.)", - (long)currentSector, (long)totalSize); + UpdateProgress?. + Invoke(string.Format(Localization.Core.Reading_sector_0_of_1_2_MiB_sec, currentSector, totalSize, currentSpeed), + (long)currentSector, (long)totalSize); sense = _dev.Read12(out readBuffer, out senseBuf, 0, false, false, false, false, (uint)l1, blockSize, 0, blocksToRead, false, _dev.Timeout, out cmdDuration); @@ -833,11 +859,11 @@ partial class Dump // TODO: Handle errors in video partition //errored += blocksToRead; //resume.BadBlocks.Add(l1); - 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(l1, cmdDuration < 500 ? 65535 : cmdDuration); ibgLog.Write(l1, 0); - _dumpLog.WriteLine("Skipping {0} blocks from errored block {1}.", _skip, l1); + _dumpLog.WriteLine(Localization.Core.Skipping_0_blocks_from_errored_block_1, _skip, l1); l1 += _skip - blocksToRead; string[] senseLines = Sense.PrettifySense(senseBuf).Split(new[] @@ -865,15 +891,15 @@ partial class Dump EndProgress?.Invoke(); - UpdateStatus?.Invoke("Unlocking drive (Wxripper)."); - _dumpLog.WriteLine("Unlocking drive (Wxripper)."); + UpdateStatus?.Invoke(Localization.Core.Unlocking_drive_Wxripper); + _dumpLog.WriteLine(Localization.Core.Unlocking_drive_Wxripper); sense = _dev.KreonUnlockWxripper(out senseBuf, _dev.Timeout, out _); if(sense) { _errorLog?.WriteLine("Kreon Wxripper unlock", _dev.Error, _dev.LastError, senseBuf); - _dumpLog.WriteLine("Cannot unlock drive, not continuing."); - StoppingErrorMessage?.Invoke("Cannot unlock drive, not continuing."); + _dumpLog.WriteLine(Localization.Core.Cannot_unlock_drive_not_continuing); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_unlock_drive_not_continuing); return; } @@ -882,7 +908,7 @@ partial class Dump if(sense) { - StoppingErrorMessage?.Invoke("Cannot get disc capacity."); + StoppingErrorMessage?.Invoke(Localization.Core.Cannot_get_disc_capacity); return; } @@ -894,20 +920,20 @@ 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 @@ -917,8 +943,8 @@ 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(); @@ -928,12 +954,12 @@ partial class Dump if(_aborted) { currentTry.Extents = ExtentsConverter.ToMetadata(extents); - _dumpLog.WriteLine("Aborted!"); + _dumpLog.WriteLine(Localization.Core.Aborted); break; } - PulseProgress?.Invoke($"Trimming sector {badSector}"); + PulseProgress?.Invoke(string.Format(Localization.Core.Trimming_sector_0, badSector)); sense = _dev.Read12(out readBuffer, out senseBuf, 0, false, false, false, false, (uint)badSector, blockSize, 0, 1, false, _dev.Timeout, out cmdDuration); @@ -954,8 +980,11 @@ 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 @@ -1055,8 +1084,8 @@ partial class Dump md6 = Modes.EncodeMode6(md, _dev.ScsiType); md10 = Modes.EncodeMode10(md, _dev.ScsiType); - UpdateStatus?.Invoke("Sending MODE SELECT to drive (return damaged blocks)."); - _dumpLog.WriteLine("Sending MODE SELECT to drive (return damaged blocks)."); + UpdateStatus?.Invoke(Localization.Core.Sending_MODE_SELECT_to_drive_return_damaged_blocks); + _dumpLog.WriteLine(Localization.Core.Sending_MODE_SELECT_to_drive_return_damaged_blocks); sense = _dev.ModeSelect(md6, out senseBuf, true, false, _dev.Timeout, out _); if(sense) @@ -1064,12 +1093,13 @@ partial class Dump if(sense) { - UpdateStatus?. - Invoke("Drive did not accept MODE SELECT command for persistent error reading, try another drive."); + UpdateStatus?.Invoke(Localization.Core. + Drive_did_not_accept_MODE_SELECT_command_for_persistent_error_reading); - AaruConsole.DebugWriteLine("Error: {0}", Sense.PrettifySense(senseBuf)); + AaruConsole.DebugWriteLine(Localization.Core.Error_0, Sense.PrettifySense(senseBuf)); - _dumpLog.WriteLine("Drive did not accept MODE SELECT command for persistent error reading, try another drive."); + _dumpLog.WriteLine(Localization.Core. + Drive_did_not_accept_MODE_SELECT_command_for_persistent_error_reading); } else runningPersistent = true; @@ -1084,15 +1114,26 @@ 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", - runningPersistent ? "recovering partial data, " : "")); + if(forward) + PulseProgress?.Invoke(runningPersistent + ? 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(runningPersistent + ? 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)); sense = _dev.Read12(out readBuffer, out senseBuf, 0, false, false, false, false, (uint)badSector, blockSize, 0, 1, false, _dev.Timeout, out cmdDuration); @@ -1108,8 +1149,11 @@ partial class Dump _resume.BadBlocks.Remove(badSector); extents.Add(badSector); outputFormat.WriteSector(readBuffer, 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(runningPersistent) outputFormat.WriteSector(readBuffer, badSector); @@ -1143,8 +1187,8 @@ partial class Dump md6 = Modes.EncodeMode6(md, _dev.ScsiType); md10 = Modes.EncodeMode10(md, _dev.ScsiType); - UpdateStatus?.Invoke("Sending MODE SELECT to drive (return device to previous status)."); - _dumpLog.WriteLine("Sending MODE SELECT to drive (return device to previous status)."); + UpdateStatus?.Invoke(Localization.Core.Sending_MODE_SELECT_to_drive_return_device_to_previous_status); + _dumpLog.WriteLine(Localization.Core.Sending_MODE_SELECT_to_drive_return_device_to_previous_status); sense = _dev.ModeSelect(md6, out senseBuf, true, false, _dev.Timeout, out _); if(sense) @@ -1162,7 +1206,7 @@ partial class Dump { if(tag.Value is null) { - AaruConsole.ErrorWriteLine("Error: Tag type {0} is null, skipping...", tag.Key); + AaruConsole.ErrorWriteLine(Localization.Core.Error_Tag_type_0_is_null_skipping, tag.Key); continue; } @@ -1173,10 +1217,10 @@ partial class Dump continue; // Cannot write tag to image - _dumpLog.WriteLine($"Cannot write tag {tag.Key}."); + _dumpLog.WriteLine(string.Format(Localization.Core.Cannot_write_tag_0, tag.Key)); - StoppingErrorMessage?.Invoke($"Cannot write tag {tag.Key}." + Environment.NewLine + - outputFormat.ErrorMessage); + StoppingErrorMessage?.Invoke(string.Format(Localization.Core.Cannot_write_tag_0, tag.Key) + + Environment.NewLine + outputFormat.ErrorMessage); return; } @@ -1184,7 +1228,7 @@ partial class Dump _resume.BadBlocks.Sort(); 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); currentTry.Extents = ExtentsConverter.ToMetadata(extents); @@ -1197,24 +1241,27 @@ 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) { - UpdateStatus?.Invoke("Aborted!"); - _dumpLog.WriteLine("Aborted!"); + UpdateStatus?.Invoke(Localization.Core.Aborted); + _dumpLog.WriteLine(Localization.Core.Aborted); return; } @@ -1240,20 +1287,21 @@ 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)); UpdateStatus?.Invoke(""); Statistics.AddMedia(dskType, true); diff --git a/Aaru.Core/Devices/Info/DeviceInfo.cs b/Aaru.Core/Devices/Info/DeviceInfo.cs index c0ce6a1b1..8e7d46be7 100644 --- a/Aaru.Core/Devices/Info/DeviceInfo.cs +++ b/Aaru.Core/Devices/Info/DeviceInfo.cs @@ -100,14 +100,15 @@ public partial class DeviceInfo AaruConsole.DebugWriteLine("Device-Info command", "DEVICE = 0x{0:X2}", errorRegisters.DeviceHead); - AaruConsole.DebugWriteLine("Device-Info command", "Error code = {0}", dev.LastError); + AaruConsole.DebugWriteLine("Device-Info command", Localization.Core.Error_code_equals_0, + dev.LastError); break; } if(dev.Error) { - AaruConsole.ErrorWriteLine("Error {0} querying ATA IDENTIFY", dev.LastError); + AaruConsole.ErrorWriteLine(Localization.Core.Error_0_querying_ATA_IDENTIFY, dev.LastError); break; } @@ -142,7 +143,8 @@ public partial class DeviceInfo AaruConsole.DebugWriteLine("Device-Info command", "DEVICE = 0x{0:X2}", errorRegisters.DeviceHead); - AaruConsole.DebugWriteLine("Device-Info command", "Error code = {0}", dev.LastError); + AaruConsole.DebugWriteLine("Device-Info command", Localization.Core.Error_code_equals_0, + dev.LastError); break; } @@ -150,7 +152,7 @@ public partial class DeviceInfo if(!dev.Error) AtapiIdentify = ataBuf; else - AaruConsole.ErrorWriteLine("Error {0} querying ATA PACKET IDENTIFY", dev.LastError); + AaruConsole.ErrorWriteLine(Localization.Core.Error_0_querying_ATA_PACKET_IDENTIFY, dev.LastError); // ATAPI devices are also SCSI devices goto case DeviceType.SCSI; @@ -162,7 +164,7 @@ public partial class DeviceInfo if(sense) { - AaruConsole.ErrorWriteLine("SCSI error:\n{0}", Sense.PrettifySense(senseBuf)); + AaruConsole.ErrorWriteLine(Localization.Core.SCSI_error_0, Sense.PrettifySense(senseBuf)); break; } @@ -599,7 +601,7 @@ public partial class DeviceInfo break; default: - AaruConsole.ErrorWriteLine("Unknown device type {0}, cannot get information.", dev.Type); + AaruConsole.ErrorWriteLine(Localization.Core.Unknown_device_type_0_cannot_get_information, dev.Type); break; } diff --git a/Aaru.Core/Devices/Reader.cs b/Aaru.Core/Devices/Reader.cs index e67a3184e..05904c65d 100644 --- a/Aaru.Core/Devices/Reader.cs +++ b/Aaru.Core/Devices/Reader.cs @@ -62,7 +62,7 @@ sealed partial class Reader _ataId = ataIdNullable.Value; break; - case DeviceType.NVMe: throw new NotImplementedException("NVMe devices not yet supported."); + case DeviceType.NVMe: throw new NotImplementedException(Localization.Core.NVMe_devices_not_yet_supported); } } @@ -84,7 +84,7 @@ sealed partial class Reader case DeviceType.ATAPI: case DeviceType.SCSI: return ScsiGetBlocks(); default: - ErrorMessage = $"Unknown device type {_dev.Type}."; + ErrorMessage = string.Format(Localization.Core.Unknown_device_type_0, _dev.Type); return 0; } @@ -98,7 +98,7 @@ sealed partial class Reader case DeviceType.ATAPI: case DeviceType.SCSI: return ScsiFindReadCommand(); default: - ErrorMessage = $"Unknown device type {_dev.Type}."; + ErrorMessage = string.Format(Localization.Core.Unknown_device_type_0, _dev.Type); return true; } @@ -112,7 +112,7 @@ sealed partial class Reader case DeviceType.ATAPI: case DeviceType.SCSI: return ScsiGetBlockSize(); default: - ErrorMessage = $"Unknown device type {_dev.Type}."; + ErrorMessage = string.Format(Localization.Core.Unknown_device_type_0, _dev.Type); return true; } @@ -126,7 +126,7 @@ sealed partial class Reader case DeviceType.ATAPI: case DeviceType.SCSI: return ScsiGetBlocksToRead(startWithBlocks); default: - ErrorMessage = $"Unknown device type {_dev.Type}."; + ErrorMessage = string.Format(Localization.Core.Unknown_device_type_0, _dev.Type); return true; } diff --git a/Aaru.Core/Devices/ReaderATA.cs b/Aaru.Core/Devices/ReaderATA.cs index 0f4e5ad66..91dec761e 100644 --- a/Aaru.Core/Devices/ReaderATA.cs +++ b/Aaru.Core/Devices/ReaderATA.cs @@ -176,7 +176,7 @@ sealed partial class Reader !_ataReadLba48 && !_ataReadDmaLba48) { - ErrorMessage = "Device needs 48-bit LBA commands but I can't issue them... Aborting."; + ErrorMessage = Localization.Core.Device_needs_48_bit_LBA_commands_but_I_cant_issue_them_Aborting; return true; } @@ -186,7 +186,7 @@ sealed partial class Reader !_ataReadDmaLba && !_ataReadDmaRetryLba) { - ErrorMessage = "Device needs 28-bit LBA commands but I can't issue them... Aborting."; + ErrorMessage = Localization.Core.Device_needs_28_bit_LBA_commands_but_I_cant_issue_them_Aborting; return true; } @@ -198,35 +198,35 @@ sealed partial class Reader !_ataReadDma && !_ataReadDmaRetry) { - ErrorMessage = "Device needs CHS commands but I can't issue them... Aborting."; + ErrorMessage = Localization.Core.Device_needs_CHS_commands_but_I_cant_issue_them_Aborting; return true; } } if(_ataReadDmaLba48) - AaruConsole.WriteLine("Using ATA READ DMA EXT command."); + AaruConsole.WriteLine(Localization.Core.Using_ATA_READ_DMA_EXT_command); else if(_ataReadLba48) - AaruConsole.WriteLine("Using ATA READ EXT command."); + AaruConsole.WriteLine(Localization.Core.Using_ATA_READ_EXT_command); else if(_ataReadDmaRetryLba) - AaruConsole.WriteLine("Using ATA READ DMA command with retries (LBA)."); + AaruConsole.WriteLine(Localization.Core.Using_ATA_READ_DMA_command_with_retries_LBA); else if(_ataReadDmaLba) - AaruConsole.WriteLine("Using ATA READ DMA command (LBA)."); + AaruConsole.WriteLine(Localization.Core.Using_ATA_READ_DMA_command_LBA); else if(_ataReadRetryLba) - AaruConsole.WriteLine("Using ATA READ command with retries (LBA)."); + AaruConsole.WriteLine(Localization.Core.Using_ATA_READ_command_with_retries_LBA); else if(_ataReadLba) - AaruConsole.WriteLine("Using ATA READ command (LBA)."); + AaruConsole.WriteLine(Localization.Core.Using_ATA_READ_command_LBA); else if(_ataReadDmaRetry) - AaruConsole.WriteLine("Using ATA READ DMA command with retries (CHS)."); + AaruConsole.WriteLine(Localization.Core.Using_ATA_READ_DMA_command_with_retries_CHS); else if(_ataReadDma) - AaruConsole.WriteLine("Using ATA READ DMA command (CHS)."); + AaruConsole.WriteLine(Localization.Core.Using_ATA_READ_DMA_command_CHS); else if(_ataReadRetry) - AaruConsole.WriteLine("Using ATA READ command with retries (CHS)."); + AaruConsole.WriteLine(Localization.Core.Using_ATA_READ_command_with_retries_CHS); else if(_ataRead) - AaruConsole.WriteLine("Using ATA READ command (CHS)."); + AaruConsole.WriteLine(Localization.Core.Using_ATA_READ_command_CHS); else { - ErrorMessage = "Could not get a working read command!"; + ErrorMessage = Localization.Core.Could_not_get_a_working_read_command; return true; } @@ -333,7 +333,9 @@ sealed partial class Reader return false; BlocksToRead = 1; - ErrorMessage = $"Device error {_dev.LastError} trying to guess ideal transfer length."; + + ErrorMessage = string.Format(Localization.Core.Device_error_0_trying_to_guess_ideal_transfer_length, + _dev.LastError); return true; } @@ -418,7 +420,7 @@ sealed partial class Reader if((status & 0x04) == 0x04) recoveredError = true; - AaruConsole.DebugWriteLine("ATA Reader", "ATA ERROR: {0} STATUS: {1}", errorByte, status); + AaruConsole.DebugWriteLine("ATA Reader", Localization.Core.ATA_ERROR_0_STATUS_1, errorByte, status); return true; } @@ -483,7 +485,7 @@ sealed partial class Reader if((status & 0x04) == 0x04) recoveredError = true; - AaruConsole.DebugWriteLine("ATA Reader", "ATA ERROR: {0} STATUS: {1}", errorByte, status); + AaruConsole.DebugWriteLine("ATA Reader", Localization.Core.ATA_ERROR_0_STATUS_1, errorByte, status); return true; } diff --git a/Aaru.Core/Devices/ReaderSCSI.cs b/Aaru.Core/Devices/ReaderSCSI.cs index df550f685..616912664 100644 --- a/Aaru.Core/Devices/ReaderSCSI.cs +++ b/Aaru.Core/Devices/ReaderSCSI.cs @@ -120,7 +120,7 @@ sealed partial class Reader // Magneto-opticals may have empty LBA 0 but we know they work with READ(12) if(_dev.ScsiType == PeripheralDeviceTypes.OpticalDevice) { - ErrorMessage = "Cannot read medium, aborting scan..."; + ErrorMessage = Localization.Core.Cannot_read_medium_aborting_scan; return true; } @@ -130,8 +130,9 @@ sealed partial class Reader break; } case true when !_read10 && !_read12 && !_read16 && Blocks > 0x001FFFFF + 1: - ErrorMessage = $"Device only supports SCSI READ (6) but has more than {0x001FFFFF + 1} blocks ({Blocks - } blocks total)"; + ErrorMessage = + string.Format(Localization.Core.Device_only_supports_SCSI_READ_6_but_has_more_than_0_blocks_1_blocks_total, + 0x001FFFFF + 1, Blocks); return true; } @@ -145,8 +146,9 @@ sealed partial class Reader if(!_read16 && Blocks > 0xFFFFFFFF + (long)1) { - ErrorMessage = $"Device only supports SCSI READ (10) but has more than {0xFFFFFFFF + (long)1} blocks ({ - Blocks} blocks total)"; + ErrorMessage = + string.Format(Localization.Core.Device_only_supports_SCSI_READ_10_but_has_more_than_0_blocks_1_blocks_total, + 0xFFFFFFFF + (long)1, Blocks); return true; } @@ -524,26 +526,26 @@ sealed partial class Reader if(CanReadRaw) { if(_readLong16) - AaruConsole.WriteLine("Using SCSI READ LONG (16) command."); + AaruConsole.WriteLine(Localization.Core.Using_SCSI_READ_LONG_16_command); else if(_readLong10 || _readLongDvd) - AaruConsole.WriteLine("Using SCSI READ LONG (10) command."); + AaruConsole.WriteLine(Localization.Core.Using_SCSI_READ_LONG_10_command); else if(_syqReadLong10) - AaruConsole.WriteLine("Using SyQuest READ LONG (10) command."); + AaruConsole.WriteLine(Localization.Core.Using_SyQuest_READ_LONG_10_command); else if(_syqReadLong6) - AaruConsole.WriteLine("Using SyQuest READ LONG (6) command."); + AaruConsole.WriteLine(Localization.Core.Using_SyQuest_READ_LONG_6_command); else if(_hldtstReadRaw) - AaruConsole.WriteLine("Using HL-DT-ST raw DVD reading."); + AaruConsole.WriteLine(Localization.Core.Using_HL_DT_ST_raw_DVD_reading); else if(_plextorReadRaw) - AaruConsole.WriteLine("Using Plextor raw DVD reading."); + AaruConsole.WriteLine(Localization.Core.Using_Plextor_raw_DVD_reading); } else if(_read6) - AaruConsole.WriteLine("Using SCSI READ (6) command."); + AaruConsole.WriteLine(Localization.Core.Using_SCSI_READ_6_command); else if(_read10) - AaruConsole.WriteLine("Using SCSI READ (10) command."); + AaruConsole.WriteLine(Localization.Core.Using_SCSI_READ_10_command); else if(_read12) - AaruConsole.WriteLine("Using SCSI READ (12) command."); + AaruConsole.WriteLine(Localization.Core.Using_SCSI_READ_12_command); else if(_read16) - AaruConsole.WriteLine("Using SCSI READ (16) command."); + AaruConsole.WriteLine(Localization.Core.Using_SCSI_READ_16_command); return false; } @@ -567,7 +569,8 @@ sealed partial class Reader switch(sense) { case true when Blocks == 0 && _dev.ScsiType != PeripheralDeviceTypes.MultiMediaDevice: - ErrorMessage = "Unable to get media capacity\n" + $"{Sense.PrettifySense(senseBuf)}"; + ErrorMessage = string.Format(Localization.Core.Unable_to_get_media_capacity, + Sense.PrettifySense(senseBuf)); return true; case false: @@ -645,7 +648,9 @@ sealed partial class Reader } BlocksToRead = 1; - ErrorMessage = $"Device error {_dev.LastError} trying to guess ideal transfer length."; + + ErrorMessage = string.Format(Localization.Core.Device_error_0_trying_to_guess_ideal_transfer_length, + _dev.LastError); return true; } @@ -709,7 +714,7 @@ sealed partial class Reader blankCheck = Sense.Decode(senseBuf)?.SenseKey == SenseKeys.BlankCheck; - AaruConsole.DebugWriteLine("SCSI Reader", "READ error:\n{0}", Sense.PrettifySense(senseBuf)); + AaruConsole.DebugWriteLine("SCSI Reader", Localization.Core.READ_error_0, Sense.PrettifySense(senseBuf)); return sense; } diff --git a/Aaru.Core/Devices/Report/ATA.cs b/Aaru.Core/Devices/Report/ATA.cs index 6c1e0178c..f1c256637 100644 --- a/Aaru.Core/Devices/Report/ATA.cs +++ b/Aaru.Core/Devices/Report/ATA.cs @@ -55,14 +55,14 @@ public sealed partial class DeviceReport var mediaTest = new TestedMedia { - MediumTypeName = AnsiConsole.Ask("Please write a description of the media type and press enter: "), - Model = AnsiConsole.Ask("Please write the media model and press enter: "), + MediumTypeName = AnsiConsole.Ask(Localization.Core.Please_write_description_of_media_type), + Model = AnsiConsole.Ask(Localization.Core.Please_write_media_model), MediaIsRecognized = true }; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying ATA IDENTIFY...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_ATA_IDENTIFY).IsIndeterminate(); _dev.AtaIdentify(out buffer, out _, _dev.Timeout, out _); }); @@ -188,163 +188,163 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ SECTOR(S) in CHS mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_SECTORS_in_CHS_mode).IsIndeterminate(); sense = _dev.Read(out readBuf, out errorChs, false, 0, 0, 1, 1, _dev.Timeout, out _); }); mediaTest.SupportsReadSectors = !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); mediaTest.ReadSectorsData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ SECTOR(S) RETRY in CHS mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_SECTORS_RETRY_in_CHS_mode).IsIndeterminate(); sense = _dev.Read(out readBuf, out errorChs, true, 0, 0, 1, 1, _dev.Timeout, out _); }); mediaTest.SupportsReadRetry = !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); mediaTest.ReadSectorsRetryData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ DMA in CHS mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_DMA_in_CHS_mode).IsIndeterminate(); sense = _dev.ReadDma(out readBuf, out errorChs, false, 0, 0, 1, 1, _dev.Timeout, out _); }); mediaTest.SupportsReadDma = !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); mediaTest.ReadDmaData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ DMA RETRY in CHS mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_DMA_RETRY_in_CHS_mode).IsIndeterminate(); sense = _dev.ReadDma(out readBuf, out errorChs, true, 0, 0, 1, 1, _dev.Timeout, out _); }); mediaTest.SupportsReadDmaRetry = !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); mediaTest.ReadDmaRetryData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SEEK in CHS mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SEEK_in_CHS_mode).IsIndeterminate(); sense = _dev.Seek(out errorChs, 0, 0, 1, _dev.Timeout, out _); }); mediaTest.SupportsSeek = !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}", sense, - errorChs.Status, errorChs.Error); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2, sense, errorChs.Status, + errorChs.Error); Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ SECTOR(S) in LBA mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_SECTORS_in_LBA_mode).IsIndeterminate(); sense = _dev.Read(out readBuf, out errorLba, false, 0, 1, _dev.Timeout, out _); }); mediaTest.SupportsReadLba = !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); mediaTest.ReadLbaData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ SECTOR(S) RETRY in LBA mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_SECTORS_RETRY_in_LBA_mode).IsIndeterminate(); sense = _dev.Read(out readBuf, out errorLba, true, 0, 1, _dev.Timeout, out _); }); mediaTest.SupportsReadRetryLba = !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); mediaTest.ReadRetryLbaData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ DMA in LBA mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_DMA_in_LBA_mode).IsIndeterminate(); sense = _dev.ReadDma(out readBuf, out errorLba, false, 0, 1, _dev.Timeout, out _); }); mediaTest.SupportsReadDmaLba = !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); mediaTest.ReadDmaLbaData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ DMA RETRY in LBA mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_DMA_RETRY_in_LBA_mode).IsIndeterminate(); sense = _dev.ReadDma(out readBuf, out errorLba, true, 0, 1, _dev.Timeout, out _); }); mediaTest.SupportsReadDmaRetryLba = !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); mediaTest.ReadDmaRetryLbaData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SEEK in LBA mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SEEK_in_LBA_mode).IsIndeterminate(); sense = _dev.Seek(out errorLba, 0, _dev.Timeout, out _); }); mediaTest.SupportsSeekLba = !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}", sense, - errorChs.Status, errorChs.Error); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2, sense, errorChs.Status, + errorChs.Error); Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ SECTOR(S) in LBA48 mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_SECTORS_in_LBA48_mode).IsIndeterminate(); sense = _dev.Read(out readBuf, out AtaErrorRegistersLba28 _, 0, 1, _dev.Timeout, out _); }); mediaTest.SupportsReadLba48 = !sense && (errorLba48.Status & 0x01) != 0x01 && errorLba48.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); mediaTest.ReadLba48Data = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ DMA in LBA48 mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_DMA_in_LBA48_mode).IsIndeterminate(); sense = _dev.ReadDma(out readBuf, out errorLba48, 0, 1, _dev.Timeout, out _); }); mediaTest.SupportsReadDmaLba48 = !sense && (errorLba48.Status & 0x01) != 0x01 && errorLba48.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); mediaTest.ReadDmaLba48Data = readBuf; @@ -370,7 +370,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ LONG in CHS mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_LONG_in_CHS_mode).IsIndeterminate(); sense = _dev.ReadLong(out readBuf, out errorChs, false, 0, 0, 1, mediaTest.LongBlockSize ?? 0, _dev.Timeout, out _); @@ -379,14 +379,14 @@ public sealed partial class DeviceReport mediaTest.SupportsReadLong = !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); mediaTest.ReadLongData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ LONG RETRY in CHS mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_LONG_RETRY_in_CHS_mode).IsIndeterminate(); sense = _dev.ReadLong(out readBuf, out errorChs, true, 0, 0, 1, mediaTest.LongBlockSize ?? 0, _dev.Timeout, out _); @@ -396,14 +396,14 @@ public sealed partial class DeviceReport readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); mediaTest.ReadLongRetryData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ LONG in LBA mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_LONG_in_LBA_mode).IsIndeterminate(); sense = _dev.ReadLong(out readBuf, out errorLba, false, 0, mediaTest.LongBlockSize ?? 0, _dev.Timeout, out _); @@ -412,14 +412,14 @@ public sealed partial class DeviceReport mediaTest.SupportsReadLongLba = !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); mediaTest.ReadLongLbaData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ LONG RETRY in LBA mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_LONG_RETRY_in_LBA_mode).IsIndeterminate(); sense = _dev.ReadLong(out readBuf, out errorLba, true, 0, mediaTest.LongBlockSize ?? 0, _dev.Timeout, out _); @@ -429,8 +429,8 @@ public sealed partial class DeviceReport readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); mediaTest.ReadLongRetryLbaData = readBuf; } @@ -563,163 +563,163 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ SECTOR(S) in CHS mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_SECTORS_in_CHS_mode).IsIndeterminate(); sense = _dev.Read(out readBuf, out errorChs, false, 0, 0, 1, 1, _dev.Timeout, out _); }); capabilities.SupportsReadSectors = !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); capabilities.ReadSectorsData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ SECTOR(S) RETRY in CHS mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_SECTORS_RETRY_in_CHS_mode).IsIndeterminate(); sense = _dev.Read(out readBuf, out errorChs, true, 0, 0, 1, 1, _dev.Timeout, out _); }); capabilities.SupportsReadRetry = !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); capabilities.ReadSectorsRetryData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ DMA in CHS mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_DMA_in_CHS_mode).IsIndeterminate(); sense = _dev.ReadDma(out readBuf, out errorChs, false, 0, 0, 1, 1, _dev.Timeout, out _); }); capabilities.SupportsReadDma = !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); capabilities.ReadDmaData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ DMA RETRY in CHS mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_DMA_RETRY_in_CHS_mode).IsIndeterminate(); sense = _dev.ReadDma(out readBuf, out errorChs, true, 0, 0, 1, 1, _dev.Timeout, out _); }); capabilities.SupportsReadDmaRetry = !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); capabilities.ReadDmaRetryData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SEEK in CHS mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SEEK_in_CHS_mode).IsIndeterminate(); sense = _dev.Seek(out errorChs, 0, 0, 1, _dev.Timeout, out _); }); capabilities.SupportsSeek = !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}", sense, - errorChs.Status, errorChs.Error); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2, sense, errorChs.Status, + errorChs.Error); Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ SECTOR(S) in LBA mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_SECTORS_in_LBA_mode).IsIndeterminate(); sense = _dev.Read(out readBuf, out errorLba, false, 0, 1, _dev.Timeout, out _); }); capabilities.SupportsReadLba = !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorLba.Status, errorLba.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorLba.Status, errorLba.Error, readBuf.Length); capabilities.ReadLbaData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ SECTOR(S) RETRY in LBA mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_SECTORS_RETRY_in_LBA_mode).IsIndeterminate(); sense = _dev.Read(out readBuf, out errorLba, true, 0, 1, _dev.Timeout, out _); }); capabilities.SupportsReadRetryLba = !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorLba.Status, errorLba.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorLba.Status, errorLba.Error, readBuf.Length); capabilities.ReadRetryLbaData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ DMA in LBA mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_DMA_in_LBA_mode).IsIndeterminate(); sense = _dev.ReadDma(out readBuf, out errorLba, false, 0, 1, _dev.Timeout, out _); }); capabilities.SupportsReadDmaLba = !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorLba.Status, errorLba.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorLba.Status, errorLba.Error, readBuf.Length); capabilities.ReadDmaLbaData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ DMA RETRY in LBA mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_DMA_RETRY_in_LBA_mode).IsIndeterminate(); sense = _dev.ReadDma(out readBuf, out errorLba, true, 0, 1, _dev.Timeout, out _); }); capabilities.SupportsReadDmaRetryLba = !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorLba.Status, errorLba.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorLba.Status, errorLba.Error, readBuf.Length); capabilities.ReadDmaRetryLbaData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SEEK in LBA mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SEEK_in_LBA_mode).IsIndeterminate(); sense = _dev.Seek(out errorLba, 0, _dev.Timeout, out _); }); capabilities.SupportsSeekLba = !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}", sense, - errorLba.Status, errorLba.Error); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2, sense, errorLba.Status, + errorLba.Error); Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ SECTOR(S) in LBA48 mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_SECTORS_in_LBA48_mode).IsIndeterminate(); sense = _dev.Read(out readBuf, out errorLba48, 0, 1, _dev.Timeout, out _); }); capabilities.SupportsReadLba48 = !sense && (errorLba48.Status & 0x01) != 0x01 && errorLba48.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorLba48.Status, errorLba48.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorLba48.Status, errorLba48.Error, readBuf.Length); capabilities.ReadLba48Data = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ DMA in LBA48 mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_DMA_in_LBA48_mode).IsIndeterminate(); sense = _dev.ReadDma(out readBuf, out errorLba48, 0, 1, _dev.Timeout, out _); }); capabilities.SupportsReadDmaLba48 = !sense && (errorLba48.Status & 0x01) != 0x01 && errorLba48.Error == 0 && readBuf.Length > 0; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorLba48.Status, errorLba48.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorLba48.Status, errorLba48.Error, readBuf.Length); capabilities.ReadDmaLba48Data = readBuf; @@ -745,7 +745,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ LONG in CHS mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_LONG_in_CHS_mode).IsIndeterminate(); sense = _dev.ReadLong(out readBuf, out errorChs, false, 0, 0, 1, capabilities.LongBlockSize ?? 0, _dev.Timeout, out _); @@ -754,14 +754,14 @@ public sealed partial class DeviceReport capabilities.SupportsReadLong = !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); capabilities.ReadLongData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ LONG RETRY in CHS mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_LONG_RETRY_in_CHS_mode).IsIndeterminate(); sense = _dev.ReadLong(out readBuf, out errorChs, true, 0, 0, 1, capabilities.LongBlockSize ?? 0, _dev.Timeout, out _); @@ -771,14 +771,14 @@ public sealed partial class DeviceReport readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.Status, errorChs.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorChs.Status, errorChs.Error, readBuf.Length); capabilities.ReadLongRetryData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ LONG in LBA mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_LONG_in_LBA_mode).IsIndeterminate(); sense = _dev.ReadLong(out readBuf, out errorLba, false, 0, capabilities.LongBlockSize ?? 0, _dev.Timeout, out _); @@ -787,14 +787,14 @@ public sealed partial class DeviceReport capabilities.SupportsReadLongLba = !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorLba.Status, errorLba.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorLba.Status, errorLba.Error, readBuf.Length); capabilities.ReadLongLbaData = readBuf; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying READ LONG RETRY in LBA mode...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_READ_LONG_RETRY_in_LBA_mode).IsIndeterminate(); sense = _dev.ReadLong(out readBuf, out errorLba, true, 0, capabilities.LongBlockSize ?? 0, _dev.Timeout, out _); @@ -804,8 +804,8 @@ public sealed partial class DeviceReport readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; - AaruConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorLba.Status, errorLba.Error, readBuf.Length); + AaruConsole.DebugWriteLine("ATA Report", Localization.Core.Sense_0_Status_1_Error_2_Length_3, sense, + errorLba.Status, errorLba.Error, readBuf.Length); capabilities.ReadLongRetryLbaData = readBuf; diff --git a/Aaru.Core/Devices/Report/GdRomSwapTrick.cs b/Aaru.Core/Devices/Report/GdRomSwapTrick.cs index 32bce9d3a..806e7892a 100644 --- a/Aaru.Core/Devices/Report/GdRomSwapTrick.cs +++ b/Aaru.Core/Devices/Report/GdRomSwapTrick.cs @@ -56,8 +56,8 @@ public sealed partial class DeviceReport while(pressedKey.Key != ConsoleKey.Y && pressedKey.Key != ConsoleKey.N) { - AaruConsole. - Write("Have you previously tried with a GD-ROM disc and did the computer hang or crash? (Y/N): "); + AaruConsole.Write(Localization.Core. + Have_you_previously_tried_with_a_GD_ROM_disc_and_did_the_computer_hang_or_crash_Q); pressedKey = System.Console.ReadKey(); AaruConsole.WriteLine(); @@ -70,16 +70,16 @@ public sealed partial class DeviceReport return; } - AaruConsole.WriteLine("Ejecting disc..."); + AaruConsole.WriteLine(Localization.Core.Ejecting_disc); _dev.AllowMediumRemoval(out _, _dev.Timeout, out _); _dev.EjectTray(out _, _dev.Timeout, out _); - AaruConsole.WriteLine("Please insert trap disc inside..."); - AaruConsole.WriteLine("Press any key to continue..."); + AaruConsole.WriteLine(Localization.Core.Please_insert_trap_disc_inside); + AaruConsole.WriteLine(Localization.Core.Press_any_key_to_continue); System.Console.ReadLine(); - AaruConsole.WriteLine("Sending READ FULL TOC to the device..."); + AaruConsole.WriteLine(Localization.Core.Sending_READ_FULL_TOC_to_the_device); int retries = 0; bool sense; @@ -106,7 +106,7 @@ public sealed partial class DeviceReport if(sense) { - AaruConsole.WriteLine("READ FULL TOC failed..."); + AaruConsole.WriteLine(Localization.Core.READ_FULL_TOC_failed); AaruConsole.DebugWriteLine("GD-ROM reporter", "{0}", Sense.PrettifySense(senseBuffer)); report.GdRomSwapDiscCapabilities.RecognizedSwapDisc = false; @@ -119,7 +119,7 @@ public sealed partial class DeviceReport if(decodedToc is null) { - AaruConsole.WriteLine("Could not decode TOC..."); + AaruConsole.WriteLine(Localization.Core.Could_not_decode_TOC); report.GdRomSwapDiscCapabilities.RecognizedSwapDisc = false; report.GdRomSwapDiscCapabilities.TestCrashed = false; @@ -133,7 +133,7 @@ public sealed partial class DeviceReport if(leadOutTrack.POINT != 0xA2) { - AaruConsole.WriteLine("Cannot find lead-out..."); + AaruConsole.WriteLine(Localization.Core.Cannot_find_lead_out); report.GdRomSwapDiscCapabilities.RecognizedSwapDisc = false; report.GdRomSwapDiscCapabilities.TestCrashed = false; @@ -176,11 +176,11 @@ public sealed partial class DeviceReport int sectors = (min * 60 * 75) + (sec * 75) + frame - 150; - AaruConsole.WriteLine("Trap disc shows {0} sectors...", sectors); + AaruConsole.WriteLine(Localization.Core.Trap_disc_shows_0_sectors, sectors); if(sectors < 450000) { - AaruConsole.WriteLine("Trap disc doesn't have enough sectors..."); + AaruConsole.WriteLine(Localization.Core.Trap_disc_doesnt_have_enough_sectors); report.GdRomSwapDiscCapabilities.RecognizedSwapDisc = false; report.GdRomSwapDiscCapabilities.TestCrashed = false; @@ -190,18 +190,18 @@ public sealed partial class DeviceReport report.GdRomSwapDiscCapabilities.RecognizedSwapDisc = true; - AaruConsole.WriteLine("Stopping motor..."); + AaruConsole.WriteLine(Localization.Core.Stopping_motor); _dev.StopUnit(out _, _dev.Timeout, out _); - AaruConsole.WriteLine("Please MANUALLY get the trap disc out and put the GD-ROM disc inside..."); - AaruConsole.WriteLine("Press any key to continue..."); + AaruConsole.WriteLine(Localization.Core.Please_MANUALLY_get_the_trap_disc_out_and_put_the_GD_ROM_disc_inside); + AaruConsole.WriteLine(Localization.Core.Press_any_key_to_continue); System.Console.ReadLine(); - AaruConsole.WriteLine("Waiting 5 seconds..."); + AaruConsole.WriteLine(Localization.Core.Waiting_5_seconds); Thread.Sleep(5000); - AaruConsole.WriteLine("Sending READ FULL TOC to the device..."); + AaruConsole.WriteLine(Localization.Core.Sending_READ_FULL_TOC_to_the_device); retries = 0; @@ -221,7 +221,7 @@ public sealed partial class DeviceReport if(sense) { - AaruConsole.WriteLine("READ FULL TOC failed..."); + AaruConsole.WriteLine(Localization.Core.READ_FULL_TOC_failed); AaruConsole.DebugWriteLine("GD-ROM reporter", "{0}", Sense.PrettifySense(senseBuffer)); report.GdRomSwapDiscCapabilities.RecognizedSwapDisc = false; @@ -234,7 +234,7 @@ public sealed partial class DeviceReport if(decodedToc is null) { - AaruConsole.WriteLine("Could not decode TOC..."); + AaruConsole.WriteLine(Localization.Core.Could_not_decode_TOC); report.GdRomSwapDiscCapabilities.RecognizedSwapDisc = false; report.GdRomSwapDiscCapabilities.TestCrashed = false; @@ -248,7 +248,7 @@ public sealed partial class DeviceReport if(newLeadOutTrack.POINT != 0xA2) { - AaruConsole.WriteLine("Cannot find lead-out..."); + AaruConsole.WriteLine(Localization.Core.Cannot_find_lead_out); report.GdRomSwapDiscCapabilities.RecognizedSwapDisc = false; report.GdRomSwapDiscCapabilities.TestCrashed = false; @@ -264,7 +264,8 @@ public sealed partial class DeviceReport newLeadOutTrack.PSEC != leadOutTrack.PSEC || newLeadOutTrack.PFRAME != leadOutTrack.PFRAME) { - AaruConsole.WriteLine("Lead-out has changed, this drive does not support hot swapping discs..."); + AaruConsole.WriteLine(Localization.Core. + Lead_out_has_changed_this_drive_does_not_support_hot_swapping_discs); report.GdRomSwapDiscCapabilities.RecognizedSwapDisc = false; report.GdRomSwapDiscCapabilities.TestCrashed = false; @@ -274,7 +275,7 @@ public sealed partial class DeviceReport _dev.SetCdSpeed(out _, RotationalControl.PureCav, 170, 0, _dev.Timeout, out _); - AaruConsole.Write("Reading LBA 0... "); + AaruConsole.Write(Localization.Core.Reading_LBA_zero); report.GdRomSwapDiscCapabilities.Lba0Readable = !_dev.ReadCd(out byte[] lba0Buffer, out byte[] lba0Sense, 0, 2352, 1, MmcSectorTypes.AllTypes, false, false, @@ -286,9 +287,10 @@ public sealed partial class DeviceReport report.GdRomSwapDiscCapabilities.Lba0Sense = lba0Sense; report.GdRomSwapDiscCapabilities.Lba0DecodedSense = Sense.PrettifySense(lba0Sense); - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba0Readable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba0Readable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 0 as audio (scrambled)... "); + AaruConsole.Write(Localization.Core.Reading_LBA_zero_as_audio_scrambled); report.GdRomSwapDiscCapabilities.Lba0ScrambledReadable = !_dev.ReadCd(out byte[] lba0ScrambledBuffer, out byte[] lba0ScrambledSense, 0, 2352, 1, @@ -301,9 +303,10 @@ public sealed partial class DeviceReport report.GdRomSwapDiscCapabilities.Lba0ScrambledSense = lba0ScrambledSense; report.GdRomSwapDiscCapabilities.Lba0ScrambledDecodedSense = Sense.PrettifySense(lba0ScrambledSense); - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba0ScrambledReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba0ScrambledReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 100000 as audio... "); + AaruConsole.Write(Localization.Core.Reading_LBA_100000_as_audio); uint cluster = 16; while(true) @@ -333,9 +336,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba100000AudioReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba100000AudioReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 50000 as audio... "); + AaruConsole.Write(Localization.Core.Reading_LBA_50000_as_audio); cluster = 16; while(true) @@ -363,9 +367,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba50000AudioReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba50000AudioReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 450000 as audio... "); + AaruConsole.Write(Localization.Core.Reading_LBA_450000_as_audio); cluster = 16; while(true) @@ -395,9 +400,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba450000AudioReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba450000AudioReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 400000 as audio... "); + AaruConsole.Write(Localization.Core.Reading_LBA_400000_as_audio); cluster = 16; while(true) @@ -427,9 +433,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba400000AudioReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba400000AudioReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 45000 as audio... "); + AaruConsole.Write(Localization.Core.Reading_LBA_45000_as_audio); cluster = 16; while(true) @@ -457,9 +464,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba45000AudioReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba45000AudioReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 44990 as audio... "); + AaruConsole.Write(Localization.Core.Reading_LBA_44990_as_audio); cluster = 16; while(true) @@ -487,9 +495,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba44990AudioReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba44990AudioReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 100000 as audio with PQ subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_100000_as_audio_with_PQ_subchannel); cluster = 16; while(true) @@ -520,9 +529,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba100000AudioPqReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba100000AudioPqReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 50000 as audio with PQ subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_50000_as_audio_with_PQ_subchannel); cluster = 16; while(true) @@ -552,9 +562,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba50000AudioPqReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba50000AudioPqReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 450000 as audio with PQ subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_450000_as_audio_with_PQ_subchannel); cluster = 16; while(true) @@ -585,9 +596,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba450000AudioPqReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba450000AudioPqReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 400000 as audio with PQ subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_400000_as_audio_with_PQ_subchannel); cluster = 16; while(true) @@ -618,9 +630,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba400000AudioPqReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba400000AudioPqReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 45000 as audio with PQ subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_45000_as_audio_with_PQ_subchannel); cluster = 16; while(true) @@ -650,9 +663,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba45000AudioPqReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba45000AudioPqReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 44990 as audio with PQ subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_44990_as_audio_with_PQ_subchannel); cluster = 16; while(true) @@ -682,9 +696,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba44990AudioPqReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba44990AudioPqReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 100000 as audio with RW subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_100000_as_audio_with_RW_subchannel); cluster = 16; while(true) @@ -715,9 +730,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba100000AudioRwReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba100000AudioRwReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 50000 as audio with RW subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_50000_as_audio_with_RW_subchannel); cluster = 16; while(true) @@ -747,9 +763,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba50000AudioRwReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba50000AudioRwReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 450000 as audio with RW subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_450000_as_audio_with_RW_subchannel); cluster = 16; while(true) @@ -780,9 +797,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba450000AudioRwReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba450000AudioRwReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 400000 as audio with RW subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_400000_as_audio_with_RW_subchannel); cluster = 16; while(true) @@ -813,9 +831,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba400000AudioRwReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba400000AudioRwReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 45000 as audio with RW subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_45000_as_audio_with_RW_subchannel); cluster = 16; while(true) @@ -845,9 +864,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba45000AudioRwReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba45000AudioRwReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 44990 as audio with RW subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_44990_as_audio_with_RW_subchannel); cluster = 16; while(true) @@ -877,9 +897,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba44990AudioRwReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba44990AudioRwReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 100000... "); + AaruConsole.Write(Localization.Core.Reading_LBA_100000); cluster = 16; while(true) @@ -906,9 +927,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba100000Readable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba100000Readable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 50000... "); + AaruConsole.Write(Localization.Core.Reading_LBA_50000); cluster = 16; while(true) @@ -935,9 +957,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba50000Readable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba50000Readable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 450000... "); + AaruConsole.Write(Localization.Core.Reading_LBA_450000); cluster = 16; while(true) @@ -964,9 +987,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba450000Readable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba450000Readable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 400000... "); + AaruConsole.Write(Localization.Core.Reading_LBA_400000); cluster = 16; while(true) @@ -993,9 +1017,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba400000Readable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba400000Readable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 45000... "); + AaruConsole.Write(Localization.Core.Reading_LBA_45000); cluster = 16; while(true) @@ -1022,9 +1047,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba45000Readable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba45000Readable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 44990... "); + AaruConsole.Write(Localization.Core.Reading_LBA_44990); cluster = 16; while(true) @@ -1051,9 +1077,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba44990Readable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba44990Readable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 100000 with PQ subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_100000_with_PQ_subchannel); cluster = 16; while(true) @@ -1082,9 +1109,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba100000PqReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba100000PqReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 50000 with PQ subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_50000_with_PQ_subchannel); cluster = 16; while(true) @@ -1111,9 +1139,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba50000PqReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba50000PqReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 450000 with PQ subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_450000_with_PQ_subchannel); cluster = 16; while(true) @@ -1142,9 +1171,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba450000PqReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba450000PqReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 400000 with PQ subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_400000_with_PQ_subchannel); cluster = 16; while(true) @@ -1173,9 +1203,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba400000PqReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba400000PqReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 45000 with PQ subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_45000_with_PQ_subchannel); cluster = 16; while(true) @@ -1202,9 +1233,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba45000PqReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba45000PqReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 44990 with PQ subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_44990_with_PQ_subchannel); cluster = 16; while(true) @@ -1231,9 +1263,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba44990PqReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba44990PqReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 100000 with RW subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_100000_with_RW_subchannel); cluster = 16; while(true) @@ -1262,9 +1295,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba100000RwReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba100000RwReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 50000 with RW subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_50000_with_RW_subchannel); cluster = 16; while(true) @@ -1291,9 +1325,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba50000RwReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba50000RwReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 450000 with RW subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_450000_with_RW_subchannel); cluster = 16; while(true) @@ -1322,9 +1357,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba450000RwReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba450000RwReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 400000 with RW subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_400000_with_RW_subchannel); cluster = 16; while(true) @@ -1353,9 +1389,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba400000RwReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba400000RwReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 45000 with RW subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_45000_with_RW_subchannel); cluster = 16; while(true) @@ -1382,9 +1419,10 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba45000RwReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba45000RwReadable ? Localization.Core.Success + : Localization.Core.FAIL); - AaruConsole.Write("Reading LBA 44990 with RW subchannel... "); + AaruConsole.Write(Localization.Core.Reading_LBA_44990_with_RW_subchannel); cluster = 16; while(true) @@ -1411,7 +1449,8 @@ public sealed partial class DeviceReport cluster /= 2; } - AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba44990RwReadable ? "Success!" : "FAIL!"); + AaruConsole.WriteLine(report.GdRomSwapDiscCapabilities.Lba44990RwReadable ? Localization.Core.Success + : Localization.Core.FAIL); if(report.GdRomSwapDiscCapabilities.Lba45000Readable == false && report.GdRomSwapDiscCapabilities.Lba50000Readable == false && @@ -1430,9 +1469,7 @@ public sealed partial class DeviceReport while(pressedKey.Key != ConsoleKey.Y && pressedKey.Key != ConsoleKey.N) { - AaruConsole. - Write("The next part of the test will read the whole high density area of a GD-ROM from the smallest known readable sector until the first error happens\n" + - "Do you want to proceed? (Y/N): "); + AaruConsole.Write(Localization.Core.Test_read_whole_high_density_area_proceed_Q); pressedKey = System.Console.ReadKey(); AaruConsole.WriteLine(); @@ -1589,12 +1626,13 @@ public sealed partial class DeviceReport if(aborted) { AaruConsole.WriteLine(); - AaruConsole.WriteLine("Aborted!"); + AaruConsole.WriteLine(Localization.Core.Aborted); break; } - AaruConsole.Write("\rReading LBA {0} of {1}", lba, sectors); + AaruConsole.Write("\r"); + AaruConsole.Write(Localization.Core.Reading_LBA_0_of_1, lba, sectors); sense = readAsAudio ? _dev.ReadCd(out buffer, out senseBuffer, lba, blockSize, cluster, MmcSectorTypes.Cdda, false, diff --git a/Aaru.Core/Devices/Report/MMC.cs b/Aaru.Core/Devices/Report/MMC.cs index 8120efd04..495f0f95d 100644 --- a/Aaru.Core/Devices/Report/MMC.cs +++ b/Aaru.Core/Devices/Report/MMC.cs @@ -81,7 +81,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying MMC GET CONFIGURATION...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_MMC_GET_CONFIGURATION).IsIndeterminate(); sense = _dev.GetConfiguration(out buffer, out _, _dev.Timeout, out _); }); @@ -596,7 +596,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI READ CAPACITY...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_READ_CAPACITY).IsIndeterminate(); sense = _dev.ReadCapacity(out buffer, out senseBuffer, _dev.Timeout, out _); }); @@ -613,7 +613,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI READ CAPACITY (16)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_READ_CAPACITY_16).IsIndeterminate(); sense = _dev.ReadCapacity16(out buffer, out buffer, _dev.Timeout, out _); }); @@ -632,7 +632,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI MODE SENSE (10)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_MODE_SENSE_10).IsIndeterminate(); sense = _dev.ModeSense10(out buffer, out senseBuffer, false, true, ScsiModeSensePageControl.Current, 0x3F, 0x00, _dev.Timeout, out _); @@ -648,7 +648,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI MODE SENSE...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_MODE_SENSE).IsIndeterminate(); sense = _dev.ModeSense(out buffer, out senseBuffer, _dev.Timeout, out _); }); @@ -674,22 +674,22 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying CD TOC...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_CD_TOC).IsIndeterminate(); mediaTest.CanReadTOC = !_dev.ReadTocPmaAtip(out buffer, out senseBuffer, false, 0, 0, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadTOC); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadTOC); mediaTest.TocData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying CD Full TOC...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_CD_Full_TOC).IsIndeterminate(); mediaTest.CanReadFullTOC = !_dev.ReadRawToc(out buffer, out senseBuffer, 1, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadFullTOC); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadFullTOC); mediaTest.FullTocData = buffer; } @@ -698,21 +698,21 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying CD ATIP...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_CD_ATIP).IsIndeterminate(); mediaTest.CanReadATIP = !_dev.ReadAtip(out buffer, out senseBuffer, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadATIP); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadATIP); mediaTest.AtipData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying CD PMA...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_CD_PMA).IsIndeterminate(); mediaTest.CanReadPMA = !_dev.ReadPma(out buffer, out senseBuffer, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPMA); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadPMA); mediaTest.PmaData = buffer; } @@ -724,7 +724,7 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying DVD PFI...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_DVD_PFI).IsIndeterminate(); mediaTest.CanReadPFI = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, @@ -732,13 +732,13 @@ public sealed partial class DeviceReport _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPFI); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadPFI); mediaTest.PfiData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying DVD DMI...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_DVD_DMI).IsIndeterminate(); mediaTest.CanReadDMI = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, @@ -746,7 +746,7 @@ public sealed partial class DeviceReport _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadDMI); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadDMI); mediaTest.DmiData = buffer; } @@ -755,7 +755,7 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying DVD CMI...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_DVD_CMI).IsIndeterminate(); mediaTest.CanReadCMI = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, @@ -763,7 +763,7 @@ public sealed partial class DeviceReport _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadCMI); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadCMI); mediaTest.CmiData = buffer; } @@ -774,7 +774,7 @@ public sealed partial class DeviceReport case "HD DVD-ROM": Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying DVD BCA...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_DVD_BCA).IsIndeterminate(); mediaTest.CanReadBCA = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, @@ -782,13 +782,13 @@ public sealed partial class DeviceReport _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadBCA); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadBCA); mediaTest.DvdBcaData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying DVD AACS...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_DVD_AACS).IsIndeterminate(); mediaTest.CanReadAACS = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, @@ -796,7 +796,7 @@ public sealed partial class DeviceReport out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadAACS); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadAACS); mediaTest.DvdAacsData = buffer; @@ -805,7 +805,7 @@ public sealed partial class DeviceReport case "Nintendo Wii game": Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying DVD BCA...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_DVD_BCA).IsIndeterminate(); mediaTest.CanReadBCA = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, @@ -813,13 +813,13 @@ public sealed partial class DeviceReport _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadBCA); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadBCA); mediaTest.DvdBcaData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying DVD PFI...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_DVD_PFI).IsIndeterminate(); mediaTest.CanReadPFI = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, @@ -827,13 +827,13 @@ public sealed partial class DeviceReport _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPFI); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadPFI); mediaTest.PfiData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying DVD DMI...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_DVD_DMI).IsIndeterminate(); mediaTest.CanReadDMI = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, @@ -841,7 +841,7 @@ public sealed partial class DeviceReport 0, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadDMI); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadDMI); mediaTest.DmiData = buffer; @@ -855,7 +855,7 @@ public sealed partial class DeviceReport case "Nintendo Wii U game": Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying BD BCA...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_BD_BCA).IsIndeterminate(); mediaTest.CanReadBCA = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Bd, 0, 0, @@ -863,7 +863,7 @@ public sealed partial class DeviceReport _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadBCA); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadBCA); mediaTest.BluBcaData = buffer; @@ -874,7 +874,7 @@ public sealed partial class DeviceReport case "PD-650": Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying Disc Definition Structure...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_Disc_Definition_Structure).IsIndeterminate(); mediaTest.CanReadDDS = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, @@ -882,13 +882,13 @@ public sealed partial class DeviceReport out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadDDS); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadDDS); mediaTest.DvdDdsData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying Spare Area Information...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_Spare_Area_Information).IsIndeterminate(); mediaTest.CanReadSpareAreaInformation = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, @@ -896,7 +896,8 @@ public sealed partial class DeviceReport out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadSpareAreaInformation); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadSpareAreaInformation); mediaTest.DvdSaiData = buffer; @@ -908,27 +909,28 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying BD DDS...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_BD_DDS).IsIndeterminate(); mediaTest.CanReadDDS = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Bd, 0, 0, MmcDiscStructureFormat.BdDds, 0, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadDDS); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadDDS); mediaTest.BluDdsData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying BD SAI...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_BD_SAI).IsIndeterminate(); mediaTest.CanReadSpareAreaInformation = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Bd, 0, 0, MmcDiscStructureFormat.BdSpareAreaInformation, 0, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadSpareAreaInformation); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadSpareAreaInformation); mediaTest.BluSaiData = buffer; } @@ -937,7 +939,7 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying DVD PRI...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_DVD_PRI).IsIndeterminate(); mediaTest.CanReadPRI = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, @@ -945,7 +947,7 @@ public sealed partial class DeviceReport out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPRI); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadPRI); mediaTest.PriData = buffer; } @@ -954,7 +956,7 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying DVD Media ID...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_DVD_Media_ID).IsIndeterminate(); mediaTest.CanReadMediaID = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, @@ -962,11 +964,11 @@ public sealed partial class DeviceReport _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadMediaID); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadMediaID); Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying DVD Embossed PFI...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_DVD_Embossed_PFI).IsIndeterminate(); mediaTest.CanReadRecordablePFI = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, @@ -974,7 +976,8 @@ public sealed partial class DeviceReport 0, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadRecordablePFI); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadRecordablePFI); mediaTest.EmbossedPfiData = buffer; } @@ -984,27 +987,27 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying DVD ADIP...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_DVD_ADIP).IsIndeterminate(); mediaTest.CanReadADIP = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.Adip, 0, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadADIP); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadADIP); mediaTest.AdipData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying DVD DCB...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_DVD_DCB).IsIndeterminate(); mediaTest.CanReadDCB = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, MmcDiscStructureFormat.Dcb, 0, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadDCB); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadDCB); mediaTest.DcbData = buffer; } @@ -1013,7 +1016,7 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying HD DVD CMI...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_HD_DVD_CMI).IsIndeterminate(); mediaTest.CanReadHDCMI = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, @@ -1021,7 +1024,7 @@ public sealed partial class DeviceReport _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadHDCMI); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadHDCMI); mediaTest.HdCmiData = buffer; } @@ -1030,7 +1033,7 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying DVD Layer Capacity...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_DVD_Layer_Capacity).IsIndeterminate(); mediaTest.CanReadLayerCapacity = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0, @@ -1038,7 +1041,8 @@ public sealed partial class DeviceReport _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadLayerCapacity); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadLayerCapacity); mediaTest.DvdLayerData = buffer; } @@ -1049,7 +1053,7 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying BD Disc Information...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_BD_Disc_Information).IsIndeterminate(); mediaTest.CanReadDiscInformation = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Bd, 0, 0, @@ -1057,20 +1061,21 @@ public sealed partial class DeviceReport _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadDiscInformation); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadDiscInformation); mediaTest.BluDiData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying BD PAC...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_BD_PAC).IsIndeterminate(); mediaTest.CanReadPAC = !_dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Bd, 0, 0, MmcDiscStructureFormat.Pac, 0, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPAC); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadPAC); mediaTest.BluPacData = buffer; } @@ -1079,7 +1084,7 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ CD scrambled...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD_scrambled).IsIndeterminate(); mediaTest.CanReadCdScrambled = !_dev.ReadCd(out buffer, out senseBuffer, 16, 2352, 1, MmcSectorTypes.Cdda, false, false, false, @@ -1094,47 +1099,47 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (6)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_6).IsIndeterminate(); mediaTest.SupportsRead6 = !_dev.Read6(out buffer, out senseBuffer, 16, 512, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead6); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.SupportsRead6); mediaTest.Read6Data = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (10)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_10).IsIndeterminate(); mediaTest.SupportsRead10 = !_dev.Read10(out buffer, out senseBuffer, 0, false, true, false, false, 16, 512, 0, 1, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead10); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.SupportsRead10); mediaTest.Read10Data = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (12)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_12).IsIndeterminate(); mediaTest.SupportsRead12 = !_dev.Read12(out buffer, out senseBuffer, 0, false, true, false, false, 16, 512, 0, 1, false, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead12); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.SupportsRead12); mediaTest.Read12Data = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (16)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_16).IsIndeterminate(); mediaTest.SupportsRead16 = !_dev.Read16(out buffer, out senseBuffer, 0, false, true, false, 16, 512, 0, 1, false, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead16); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.SupportsRead16); mediaTest.Read16Data = buffer; } @@ -1142,47 +1147,47 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (6)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_6).IsIndeterminate(); mediaTest.SupportsRead6 = !_dev.Read6(out buffer, out senseBuffer, 16, 2048, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead6); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.SupportsRead6); mediaTest.Read6Data = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (10)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_10).IsIndeterminate(); mediaTest.SupportsRead10 = !_dev.Read10(out buffer, out senseBuffer, 0, false, true, false, false, 16, 2048, 0, 1, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead10); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.SupportsRead10); mediaTest.Read10Data = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (12)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_12).IsIndeterminate(); mediaTest.SupportsRead12 = !_dev.Read12(out buffer, out senseBuffer, 0, false, true, false, false, 16, 2048, 0, 1, false, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead12); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.SupportsRead12); mediaTest.Read12Data = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (16)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_16).IsIndeterminate(); mediaTest.SupportsRead16 = !_dev.Read16(out buffer, out senseBuffer, 0, false, true, false, 16, 2048, 0, 1, false, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead16); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.SupportsRead16); mediaTest.Read16Data = buffer; } @@ -1195,7 +1200,7 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ CD...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD).IsIndeterminate(); mediaTest.SupportsReadCd = !_dev.ReadCd(out buffer, out senseBuffer, 16, 2352, 1, MmcSectorTypes.Cdda, false, false, false, @@ -1203,13 +1208,13 @@ public sealed partial class DeviceReport MmcSubchannel.None, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsReadCd); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.SupportsReadCd); mediaTest.ReadCdFullData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ CD MSF...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD_MSF).IsIndeterminate(); mediaTest.SupportsReadCdMsf = !_dev.ReadCdMsf(out buffer, out senseBuffer, 0x00000210, 0x00000211, 2352, MmcSectorTypes.Cdda, false, false, @@ -1217,7 +1222,8 @@ public sealed partial class DeviceReport MmcSubchannel.None, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsReadCdMsf); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.SupportsReadCdMsf); mediaTest.ReadCdMsfFullData = buffer; } @@ -1225,7 +1231,7 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ CD...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD).IsIndeterminate(); mediaTest.SupportsReadCd = !_dev.ReadCd(out buffer, out senseBuffer, 16, 2048, 1, MmcSectorTypes.AllTypes, false, false, false, @@ -1233,13 +1239,13 @@ public sealed partial class DeviceReport MmcSubchannel.None, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsReadCd); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.SupportsReadCd); mediaTest.ReadCdData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ CD MSF...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD_MSF).IsIndeterminate(); mediaTest.SupportsReadCdMsf = !_dev.ReadCdMsf(out buffer, out senseBuffer, 0x00000210, 0x00000211, 2048, MmcSectorTypes.AllTypes, false, false, @@ -1247,13 +1253,14 @@ public sealed partial class DeviceReport MmcSubchannel.None, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsReadCdMsf); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.SupportsReadCdMsf); mediaTest.ReadCdMsfData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ CD full sector...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD_full_sector).IsIndeterminate(); mediaTest.SupportsReadCdRaw = !_dev.ReadCd(out buffer, out senseBuffer, 16, 2352, 1, MmcSectorTypes.AllTypes, false, false, true, @@ -1262,13 +1269,14 @@ public sealed partial class DeviceReport out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsReadCdRaw); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.SupportsReadCdRaw); mediaTest.ReadCdFullData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ CD MSF full sector...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD_MSF_full_sector).IsIndeterminate(); mediaTest.SupportsReadCdMsfRaw = !_dev.ReadCdMsf(out buffer, out senseBuffer, 0x00000210, 0x00000211, 2352, MmcSectorTypes.AllTypes, false, @@ -1277,7 +1285,8 @@ public sealed partial class DeviceReport _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsReadCdMsfRaw); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.SupportsReadCdMsfRaw); mediaTest.ReadCdMsfFullData = buffer; } @@ -1287,7 +1296,7 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to read CD Track 1 pre-gap...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_read_CD_Track_1_pre_gap).IsIndeterminate(); for(int i = -10; i < 0; i++) { @@ -1303,7 +1312,7 @@ public sealed partial class DeviceReport // ReSharper restore IntVariableOverflowInUncheckedContext - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", sense); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, sense); mediaTest.Track1PregapData = buffer; @@ -1320,7 +1329,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to read CD Lead-In...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_read_CD_Lead_In).IsIndeterminate(); foreach(int i in new[] { @@ -1336,7 +1345,7 @@ public sealed partial class DeviceReport false, false, true, MmcHeaderCodes.AllHeaders, true, true, MmcErrorField.None, MmcSubchannel.None, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", sense); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, sense); mediaTest.LeadInData = buffer; @@ -1353,7 +1362,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to read CD Lead-Out...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_read_CD_Lead_Out).IsIndeterminate(); if(mediaType == "Audio CD") mediaTest.CanReadLeadOut = !_dev.ReadCd(out buffer, out senseBuffer, @@ -1370,7 +1379,7 @@ public sealed partial class DeviceReport out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadLeadOut); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadLeadOut); mediaTest.LeadOutData = buffer; } @@ -1379,7 +1388,7 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to read C2 Pointers...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_read_C2_Pointers).IsIndeterminate(); // They return OK, but then all following commands make the drive fail miserably. if(_dev.Model.StartsWith("iHOS104", StringComparison.Ordinal)) @@ -1399,7 +1408,8 @@ public sealed partial class DeviceReport MmcErrorField.C2PointersAndBlock, MmcSubchannel.None, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadC2Pointers); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadC2Pointers); mediaTest.C2PointersData = buffer; } @@ -1407,14 +1417,15 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to read subchannels...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_read_subchannels).IsIndeterminate(); mediaTest.CanReadPQSubchannel = !_dev.ReadCd(out buffer, out senseBuffer, 11, 2368, 1, MmcSectorTypes.Cdda, false, false, false, MmcHeaderCodes.None, true, false, MmcErrorField.None, MmcSubchannel.Q16, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPQSubchannel); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadPQSubchannel); mediaTest.PQSubchannelData = buffer; @@ -1423,7 +1434,8 @@ public sealed partial class DeviceReport MmcHeaderCodes.None, true, false, MmcErrorField.None, MmcSubchannel.Raw, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadRWSubchannel); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadRWSubchannel); mediaTest.RWSubchannelData = buffer; @@ -1438,7 +1450,8 @@ public sealed partial class DeviceReport MmcErrorField.None, MmcSubchannel.Rw, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadCorrectedSubchannel); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadCorrectedSubchannel); mediaTest.CorrectedSubchannelData = buffer; } @@ -1446,7 +1459,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to read subchannels with C2 Pointers...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_read_subchannels_with_C2_Pointers).IsIndeterminate(); // They return OK, but then all following commands make the drive fail miserably. if(_dev.Model.StartsWith("iHOS104", StringComparison.Ordinal)) @@ -1470,7 +1483,8 @@ public sealed partial class DeviceReport MmcErrorField.C2PointersAndBlock, MmcSubchannel.Q16, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPQSubchannelWithC2); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadPQSubchannelWithC2); mediaTest.PQSubchannelWithC2Data = buffer; @@ -1487,7 +1501,8 @@ public sealed partial class DeviceReport MmcErrorField.C2PointersAndBlock, MmcSubchannel.Raw, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadRWSubchannelWithC2); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadRWSubchannelWithC2); mediaTest.RWSubchannelWithC2Data = buffer; @@ -1506,7 +1521,7 @@ public sealed partial class DeviceReport MmcSubchannel.Rw, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadCorrectedSubchannelWithC2); mediaTest.CorrectedSubchannelWithC2Data = buffer; @@ -1517,7 +1532,7 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to read C2 Pointers...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_read_C2_Pointers).IsIndeterminate(); // They return OK, but then all following commands make the drive fail miserably. if(_dev.Model.StartsWith("iHOS104", StringComparison.Ordinal)) @@ -1537,7 +1552,8 @@ public sealed partial class DeviceReport MmcErrorField.C2PointersAndBlock, MmcSubchannel.None, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadC2Pointers); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadC2Pointers); mediaTest.C2PointersData = buffer; } @@ -1545,7 +1561,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to read subchannels...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_read_subchannels).IsIndeterminate(); mediaTest.CanReadPQSubchannel = !_dev.ReadCd(out buffer, out senseBuffer, 16, 2368, 1, MmcSectorTypes.AllTypes, false, false, true, @@ -1553,7 +1569,8 @@ public sealed partial class DeviceReport MmcErrorField.None, MmcSubchannel.Q16, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPQSubchannel); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadPQSubchannel); mediaTest.PQSubchannelData = buffer; @@ -1563,7 +1580,8 @@ public sealed partial class DeviceReport MmcErrorField.None, MmcSubchannel.Raw, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadRWSubchannel); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadRWSubchannel); mediaTest.RWSubchannelData = buffer; @@ -1578,7 +1596,8 @@ public sealed partial class DeviceReport MmcErrorField.None, MmcSubchannel.Rw, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadCorrectedSubchannel); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadCorrectedSubchannel); mediaTest.CorrectedSubchannelData = buffer; } @@ -1586,7 +1605,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to read subchannels with C2 Pointers...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_read_subchannels_with_C2_Pointers).IsIndeterminate(); if(_dev.Model.StartsWith("iHOS104", StringComparison.Ordinal)) { @@ -1609,7 +1628,8 @@ public sealed partial class DeviceReport true, MmcErrorField.C2PointersAndBlock, MmcSubchannel.Q16, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPQSubchannelWithC2); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadPQSubchannelWithC2); mediaTest.PQSubchannelWithC2Data = buffer; @@ -1626,7 +1646,8 @@ public sealed partial class DeviceReport true, MmcErrorField.C2PointersAndBlock, MmcSubchannel.Raw, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadRWSubchannelWithC2); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadRWSubchannelWithC2); mediaTest.RWSubchannelWithC2Data = buffer; @@ -1652,7 +1673,7 @@ public sealed partial class DeviceReport MmcSubchannel.Rw, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadCorrectedSubchannelWithC2); mediaTest.CorrectedSubchannelWithC2Data = buffer; @@ -1668,7 +1689,7 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to read C2 Pointers...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_read_C2_Pointers).IsIndeterminate(); mediaTest.CanReadC2Pointers = !_dev.ReadCd(out buffer, out senseBuffer, 16, 2342, 1, MmcSectorTypes.AllTypes, false, false, false, @@ -1684,21 +1705,23 @@ public sealed partial class DeviceReport MmcSubchannel.None, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadC2Pointers); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadC2Pointers); mediaTest.C2PointersData = buffer; } Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to read subchannels...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_read_subchannels).IsIndeterminate(); mediaTest.CanReadPQSubchannel = !_dev.ReadCd(out buffer, out senseBuffer, 16, 2064, 1, MmcSectorTypes.AllTypes, false, false, false, MmcHeaderCodes.None, true, false, MmcErrorField.None, MmcSubchannel.Q16, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPQSubchannel); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadPQSubchannel); mediaTest.PQSubchannelData = buffer; @@ -1707,7 +1730,8 @@ public sealed partial class DeviceReport MmcHeaderCodes.None, true, false, MmcErrorField.None, MmcSubchannel.Raw, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadRWSubchannel); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadRWSubchannel); mediaTest.RWSubchannelData = buffer; @@ -1722,7 +1746,8 @@ public sealed partial class DeviceReport MmcErrorField.None, MmcSubchannel.Rw, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadCorrectedSubchannel); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadCorrectedSubchannel); mediaTest.CorrectedSubchannelData = buffer; } @@ -1730,7 +1755,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to read subchannels with C2 Pointers...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_read_subchannels_with_C2_Pointers).IsIndeterminate(); if(_dev.Model.StartsWith("iHOS104", StringComparison.Ordinal)) { @@ -1753,7 +1778,8 @@ public sealed partial class DeviceReport MmcErrorField.C2PointersAndBlock, MmcSubchannel.Q16, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPQSubchannelWithC2); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadPQSubchannelWithC2); mediaTest.PQSubchannelWithC2Data = buffer; @@ -1770,7 +1796,8 @@ public sealed partial class DeviceReport MmcErrorField.C2PointersAndBlock, MmcSubchannel.Raw, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadRWSubchannelWithC2); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadRWSubchannelWithC2); mediaTest.RWSubchannelWithC2Data = buffer; @@ -1789,7 +1816,7 @@ public sealed partial class DeviceReport MmcSubchannel.Rw, _dev.Timeout, out _); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadCorrectedSubchannelWithC2); mediaTest.CorrectedSubchannelWithC2Data = buffer; @@ -1801,14 +1828,15 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying Plextor READ CD-DA...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Plextor_READ_CD_DA).IsIndeterminate(); mediaTest.SupportsPlextorReadCDDA = !_dev.PlextorReadCdDa(out buffer, out senseBuffer, 16, 2352, 1, PlextorSubchannel.None, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsPlextorReadCDDA); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.SupportsPlextorReadCDDA); mediaTest.PlextorReadCddaData = buffer; } @@ -1817,27 +1845,29 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying Pioneer READ CD-DA...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_Pioneer_READ_CD_DA).IsIndeterminate(); mediaTest.SupportsPioneerReadCDDA = !_dev.PioneerReadCdDa(out buffer, out senseBuffer, 16, 2352, 1, PioneerSubchannel.None, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsPioneerReadCDDA); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.SupportsPioneerReadCDDA); mediaTest.PioneerReadCddaData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying Pioneer READ CD-DA MSF...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_Pioneer_READ_CD_DA_MSF).IsIndeterminate(); mediaTest.SupportsPioneerReadCDDAMSF = !_dev.PioneerReadCdDaMsf(out buffer, out senseBuffer, 0x00000210, 0x00000211, 2352, PioneerSubchannel.None, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsPioneerReadCDDAMSF); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.SupportsPioneerReadCDDAMSF); mediaTest.PioneerReadCddaMsfData = buffer; } @@ -1846,13 +1876,14 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying NEC READ CD-DA...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_NEC_READ_CD_DA).IsIndeterminate(); mediaTest.SupportsNECReadCDDA = !_dev.NecReadCdDa(out buffer, out senseBuffer, 16, 1, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsNECReadCDDA); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.SupportsNECReadCDDA); mediaTest.NecReadCddaData = buffer; } @@ -1862,7 +1893,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ LONG (10)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_LONG_10).IsIndeterminate(); sense = _dev.ReadLong10(out buffer, out senseBuffer, false, false, 16, 0xFFFF, _dev.Timeout, out _); }); @@ -1910,13 +1941,14 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying Plextor trick to raw read DVDs...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_Plextor_trick_to_raw_read_DVDs).IsIndeterminate(); mediaTest.SupportsPlextorReadRawDVD = !_dev.PlextorReadRawDvd(out buffer, out senseBuffer, 16, 1, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsPlextorReadRawDVD); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.SupportsPlextorReadRawDVD); if(mediaTest.SupportsPlextorReadRawDVD == true) mediaTest.SupportsPlextorReadRawDVD = !ArrayHelpers.ArrayIsNullOrEmpty(buffer); @@ -1929,13 +1961,14 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying HL-DT-ST (aka LG) trick to raw read DVDs...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_HL_DT_ST_aka_LG_trick_to_raw_read_DVDs).IsIndeterminate(); mediaTest.SupportsHLDTSTReadRawDVD = !_dev.HlDtStReadRawDvd(out buffer, out senseBuffer, 16, 1, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsHLDTSTReadRawDVD); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.SupportsHLDTSTReadRawDVD); if(mediaTest.SupportsHLDTSTReadRawDVD == true) mediaTest.SupportsHLDTSTReadRawDVD = !ArrayHelpers.ArrayIsNullOrEmpty(buffer); @@ -1951,7 +1984,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying MediaTek READ DRAM command...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_MediaTek_READ_DRAM_command).IsIndeterminate(); if(mediaType == "Audio CD" && mediaTest.SupportsReadCd == true) @@ -2011,12 +2044,12 @@ public sealed partial class DeviceReport mediaTest.ReadF1_06Data = mediaTest.CanReadF1_06 == true ? buffer : senseBuffer; - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadF1_06); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadF1_06); }); Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying MediaTek READ DRAM command for Lead-Out...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_MediaTek_READ_DRAM_command_for_Lead_Out).IsIndeterminate(); if(!(mediaTest.Blocks > 0)) return; @@ -2094,7 +2127,8 @@ public sealed partial class DeviceReport mediaTest.ReadF1_06LeadOutData = senseBuffer; } - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadF1_06LeadOut); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadF1_06LeadOut); }); } @@ -2103,11 +2137,11 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying CD Full TOC...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_CD_Full_TOC).IsIndeterminate(); mediaTest.CanReadFullTOC = !_dev.ReadRawToc(out buffer, out senseBuffer, 1, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadFullTOC); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.CanReadFullTOC); mediaTest.FullTocData = buffer; @@ -2123,8 +2157,8 @@ public sealed partial class DeviceReport if(!decodedToc.TrackDescriptors.Any(t => t.SessionNumber > 1)) { - AaruConsole. - ErrorWriteLine("Could not find second session. Have you inserted the correct type of disc?"); + AaruConsole.ErrorWriteLine(Localization.Core. + Could_not_find_second_session_Have_you_inserted_the_correct_type_of_disc); return null; } @@ -2138,17 +2172,17 @@ public sealed partial class DeviceReport if(firstSessionLeadOutTrack.SessionNumber == 0 || secondSessionFirstTrack.SessionNumber == 0) { - AaruConsole. - ErrorWriteLine("Could not find second session. Have you inserted the correct type of disc?"); + AaruConsole.ErrorWriteLine(Localization.Core. + Could_not_find_second_session_Have_you_inserted_the_correct_type_of_disc); return null; } - AaruConsole.DebugWriteLine("SCSI Report", "First session Lead-Out starts at {0:D2}:{1:D2}:{2:D2}", + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.First_session_Lead_Out_starts_at_0_1_2, firstSessionLeadOutTrack.PMIN, firstSessionLeadOutTrack.PSEC, firstSessionLeadOutTrack.PFRAME); - AaruConsole.DebugWriteLine("SCSI Report", "Second session starts at {0:D2}:{1:D2}:{2:D2}", + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Second_session_starts_at_0_1_2, secondSessionFirstTrack.PMIN, secondSessionFirstTrack.PSEC, secondSessionFirstTrack.PFRAME); @@ -2164,7 +2198,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ CD in first session Lead-Out...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD_in_first_session_Lead_Out).IsIndeterminate(); mediaTest.CanReadingIntersessionLeadOut = !_dev.ReadCd(out buffer, out senseBuffer, firstSessionLeadOutLba, 2448, 1, @@ -2192,13 +2226,14 @@ public sealed partial class DeviceReport MmcSubchannel.None, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadingIntersessionLeadOut); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadingIntersessionLeadOut); mediaTest.IntersessionLeadOutData = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ CD in second session Lead-In...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD_in_second_session_Lead_In).IsIndeterminate(); mediaTest.CanReadingIntersessionLeadIn = !_dev.ReadCd(out buffer, out senseBuffer, secondSessionLeadInLba, 2448, 1, @@ -2226,7 +2261,8 @@ public sealed partial class DeviceReport MmcSubchannel.None, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadingIntersessionLeadIn); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, + !mediaTest.CanReadingIntersessionLeadIn); mediaTest.IntersessionLeadInData = buffer; } diff --git a/Aaru.Core/Devices/Report/SSC.cs b/Aaru.Core/Devices/Report/SSC.cs index 763a2d452..96e3f88f1 100644 --- a/Aaru.Core/Devices/Report/SSC.cs +++ b/Aaru.Core/Devices/Report/SSC.cs @@ -52,7 +52,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI READ BLOCK LIMITS...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_READ_BLOCK_LIMITS).IsIndeterminate(); sense = _dev.ReadBlockLimits(out buffer, out _, _dev.Timeout, out _); }); @@ -72,7 +72,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI REPORT DENSITY SUPPORT...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_REPORT_DENSITY_SUPPORT).IsIndeterminate(); sense = _dev.ReportDensitySupport(out buffer, out _, false, false, _dev.Timeout, out _); }); @@ -107,7 +107,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI REPORT DENSITY SUPPORT for medium types...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_REPORT_DENSITY_SUPPORT_for_medium_types).IsIndeterminate(); sense = _dev.ReportDensitySupport(out buffer, out _, true, false, _dev.Timeout, out _); }); @@ -164,7 +164,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI MODE SENSE (10)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_MODE_SENSE_10).IsIndeterminate(); sense = _dev.ModeSense10(out buffer, out _, false, true, ScsiModeSensePageControl.Current, 0x3F, 0x00, _dev.Timeout, out _); @@ -179,7 +179,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI MODE SENSE...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_MODE_SENSE).IsIndeterminate(); sense = _dev.ModeSense(out buffer, out _, _dev.Timeout, out _); }); @@ -201,7 +201,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI REPORT DENSITY SUPPORT for current media...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_REPORT_DENSITY_SUPPORT_for_current_media).IsIndeterminate(); sense = _dev.ReportDensitySupport(out buffer, out _, false, true, _dev.Timeout, out _); }); @@ -236,7 +236,8 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI REPORT DENSITY SUPPORT for medium types for current media...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_REPORT_DENSITY_SUPPORT_for_medium_types_for_current_media). + IsIndeterminate(); sense = _dev.ReportDensitySupport(out buffer, out _, true, true, _dev.Timeout, out _); }); @@ -281,7 +282,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ MEDIA SERIAL NUMBER...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_MEDIA_SERIAL_NUMBER).IsIndeterminate(); seqTest.CanReadMediaSerial = !_dev.ReadMediaSerialNumber(out buffer, out _, _dev.Timeout, out _); }); diff --git a/Aaru.Core/Devices/Report/Scsi.cs b/Aaru.Core/Devices/Report/Scsi.cs index 8b4507988..c900e4bfc 100644 --- a/Aaru.Core/Devices/Report/Scsi.cs +++ b/Aaru.Core/Devices/Report/Scsi.cs @@ -55,7 +55,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI INQUIRY...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_INQUIRY).IsIndeterminate(); sense = _dev.ScsiInquiry(out buffer, out _); }); @@ -104,7 +104,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying list of SCSI EVPDs...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_list_of_SCSI_EVPDs).IsIndeterminate(); sense = _dev.ScsiInquiry(out buffer, out _, 0x00); }); @@ -120,13 +120,12 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ProgressTask task = ctx. - AddTask("Querying SCSI EVPD pages...", maxValue: evpdPages.Count(page => page != 0x80)). - IsIndeterminate(); + ProgressTask task = ctx.AddTask(Localization.Core.Querying_SCSI_EVPD_pages, + maxValue: evpdPages.Count(page => page != 0x80)).IsIndeterminate(); foreach(byte page in evpdPages.Where(page => page != 0x80)) { - task.Description = $"Querying SCSI EVPD {page:X2}h..."; + task.Description = string.Format(Localization.Core.Querying_SCSI_EVPD_0, page); task.Increment(1); sense = _dev.ScsiInquiry(out buffer, out _, page); @@ -227,7 +226,8 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying all mode pages and subpages using SCSI MODE SENSE (10)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_all_mode_pages_and_subpages_using_SCSI_MODE_SENSE_10). + IsIndeterminate(); foreach(ScsiModeSensePageControl pageControl in new[] { @@ -309,7 +309,8 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying all mode pages and subpages using SCSI MODE SENSE (6)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_all_mode_pages_and_subpages_using_SCSI_MODE_SENSE_6). + IsIndeterminate(); foreach(ScsiModeSensePageControl pageControl in new[] { @@ -471,7 +472,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI READ CAPACITY...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_READ_CAPACITY).IsIndeterminate(); sense = _dev.ReadCapacity(out buffer, out senseBuffer, _dev.Timeout, out _); }); @@ -488,7 +489,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI READ CAPACITY (16)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_READ_CAPACITY_16).IsIndeterminate(); sense = _dev.ReadCapacity16(out buffer, out buffer, _dev.Timeout, out _); }); @@ -507,7 +508,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI MODE SENSE (10)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_MODE_SENSE_10).IsIndeterminate(); sense = _dev.ModeSense10(out buffer, out senseBuffer, false, true, ScsiModeSensePageControl.Current, 0x3F, 0x00, _dev.Timeout, out _); @@ -522,7 +523,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI MODE SENSE...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_MODE_SENSE).IsIndeterminate(); sense = _dev.ModeSense(out buffer, out senseBuffer, _dev.Timeout, out _); }); @@ -544,53 +545,53 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (6)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_6).IsIndeterminate(); mediaTest.SupportsRead6 = !_dev.Read6(out buffer, out senseBuffer, 0, mediaTest.BlockSize ?? 512, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead6); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.SupportsRead6); mediaTest.Read6Data = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (10)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_10).IsIndeterminate(); mediaTest.SupportsRead10 = !_dev.Read10(out buffer, out senseBuffer, 0, false, false, false, false, 0, mediaTest.BlockSize ?? 512, 0, 1, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead10); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.SupportsRead10); mediaTest.Read10Data = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (12)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_12).IsIndeterminate(); mediaTest.SupportsRead12 = !_dev.Read12(out buffer, out senseBuffer, 0, false, false, false, false, 0, mediaTest.BlockSize ?? 512, 0, 1, false, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead12); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.SupportsRead12); mediaTest.Read12Data = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (16)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_16).IsIndeterminate(); mediaTest.SupportsRead16 = !_dev.Read16(out buffer, out senseBuffer, 0, false, false, false, 0, mediaTest.BlockSize ?? 512, 0, 1, false, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead16); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !mediaTest.SupportsRead16); mediaTest.Read16Data = buffer; mediaTest.LongBlockSize = mediaTest.BlockSize; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ LONG (10)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_LONG_10).IsIndeterminate(); sense = _dev.ReadLong10(out buffer, out senseBuffer, false, false, 0, 0xFFFF, _dev.Timeout, out _); }); @@ -621,7 +622,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ LONG (16)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_LONG_16).IsIndeterminate(); sense = _dev.ReadLong16(out buffer, out senseBuffer, false, 0, 0xFFFF, _dev.Timeout, out _); if(sense && !_dev.Error) @@ -754,7 +755,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ MEDIA SERIAL NUMBER...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_MEDIA_SERIAL_NUMBER).IsIndeterminate(); mediaTest.CanReadMediaSerial = !_dev.ReadMediaSerialNumber(out buffer, out senseBuffer, _dev.Timeout, out _); @@ -778,7 +779,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI READ CAPACITY...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_READ_CAPACITY).IsIndeterminate(); sense = _dev.ReadCapacity(out buffer, out senseBuffer, _dev.Timeout, out _); }); @@ -795,7 +796,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI READ CAPACITY (16)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_READ_CAPACITY_16).IsIndeterminate(); sense = _dev.ReadCapacity16(out buffer, out buffer, _dev.Timeout, out _); }); @@ -814,7 +815,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI MODE SENSE (10)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_MODE_SENSE_10).IsIndeterminate(); sense = _dev.ModeSense10(out buffer, out senseBuffer, false, true, ScsiModeSensePageControl.Current, 0x3F, 0x00, _dev.Timeout, out _); @@ -829,7 +830,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Querying SCSI MODE SENSE...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Querying_SCSI_MODE_SENSE).IsIndeterminate(); sense = _dev.ModeSense(out buffer, out senseBuffer, _dev.Timeout, out _); }); @@ -851,53 +852,53 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (6)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_6).IsIndeterminate(); capabilities.SupportsRead6 = !_dev.Read6(out buffer, out senseBuffer, 0, capabilities.BlockSize ?? 512, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !capabilities.SupportsRead6); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !capabilities.SupportsRead6); capabilities.Read6Data = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (10)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_10).IsIndeterminate(); capabilities.SupportsRead10 = !_dev.Read10(out buffer, out senseBuffer, 0, false, false, false, false, 0, capabilities.BlockSize ?? 512, 0, 1, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !capabilities.SupportsRead10); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !capabilities.SupportsRead10); capabilities.Read10Data = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (12)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_12).IsIndeterminate(); capabilities.SupportsRead12 = !_dev.Read12(out buffer, out senseBuffer, 0, false, false, false, false, 0, capabilities.BlockSize ?? 512, 0, 1, false, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !capabilities.SupportsRead12); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !capabilities.SupportsRead12); capabilities.Read12Data = buffer; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ (16)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_16).IsIndeterminate(); capabilities.SupportsRead16 = !_dev.Read16(out buffer, out senseBuffer, 0, false, false, false, 0, capabilities.BlockSize ?? 512, 0, 1, false, _dev.Timeout, out _); }); - AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !capabilities.SupportsRead16); + AaruConsole.DebugWriteLine("SCSI Report", Localization.Core.Sense_equals_0, !capabilities.SupportsRead16); capabilities.Read16Data = buffer; capabilities.LongBlockSize = capabilities.BlockSize; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ LONG (10)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_LONG_10).IsIndeterminate(); sense = _dev.ReadLong10(out buffer, out senseBuffer, false, false, 0, 0xFFFF, _dev.Timeout, out _); }); @@ -928,7 +929,7 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying SCSI READ LONG (16)...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_SCSI_READ_LONG_16).IsIndeterminate(); sense = _dev.ReadLong16(out buffer, out senseBuffer, false, 0, 0xFFFF, _dev.Timeout, out _); }); @@ -964,8 +965,8 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask(capabilities.SupportsReadLong16 == true ? "Trying SCSI READ LONG (16)..." - : "Trying SCSI READ LONG (10)...").IsIndeterminate(); + ctx.AddTask(capabilities.SupportsReadLong16 == true ? Localization.Core.Trying_SCSI_READ_LONG_16 + : Localization.Core.Trying_SCSI_READ_LONG_10).IsIndeterminate(); switch(capabilities.BlockSize) { diff --git a/Aaru.Core/Devices/Report/SecureDigital.cs b/Aaru.Core/Devices/Report/SecureDigital.cs index 1b71e2b20..dcb97358a 100644 --- a/Aaru.Core/Devices/Report/SecureDigital.cs +++ b/Aaru.Core/Devices/Report/SecureDigital.cs @@ -53,13 +53,13 @@ public sealed partial class DeviceReport Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to get CID...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_get_CID).IsIndeterminate(); sense = _dev.ReadCid(out cid, out _, _dev.Timeout, out _); }); if(!sense) { - AaruConsole.WriteLine("CID obtained correctly..."); + AaruConsole.WriteLine(Localization.Core.CID_obtained_correctly); switch(_dev.Type) { @@ -87,28 +87,28 @@ public sealed partial class DeviceReport report.CID = cid; } else - AaruConsole.WriteLine("Could not read CID..."); + AaruConsole.WriteLine(Localization.Core.Could_not_read_CID); Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to get CSD...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_get_CSD).IsIndeterminate(); sense = _dev.ReadCsd(out csd, out _, _dev.Timeout, out _); }); if(!sense) { - AaruConsole.WriteLine("CSD obtained correctly..."); + AaruConsole.WriteLine(Localization.Core.CSD_obtained_correctly); report.CSD = csd; } else - AaruConsole.WriteLine("Could not read CSD..."); + AaruConsole.WriteLine(Localization.Core.Could_not_read_CSD); sense = true; byte[] ocr = null; Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to get OCR...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_get_OCR).IsIndeterminate(); sense = _dev.Type switch { @@ -120,11 +120,11 @@ public sealed partial class DeviceReport if(!sense) { - AaruConsole.WriteLine("OCR obtained correctly..."); + AaruConsole.WriteLine(Localization.Core.OCR_obtained_correctly); report.OCR = ocr; } else - AaruConsole.WriteLine("Could not read OCR..."); + AaruConsole.WriteLine(Localization.Core.Could_not_read_OCR); switch(_dev.Type) { @@ -132,17 +132,17 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to get Extended CSD...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_get_Extended_CSD).IsIndeterminate(); sense = _dev.ReadExtendedCsd(out ecsd, out _, _dev.Timeout, out _); }); if(!sense) { - AaruConsole.WriteLine("Extended CSD obtained correctly..."); + AaruConsole.WriteLine(Localization.Core.Extended_CSD_obtained_correctly); report.ExtendedCSD = ecsd; } else - AaruConsole.WriteLine("Could not read Extended CSD..."); + AaruConsole.WriteLine(Localization.Core.Could_not_read_Extended_CSD); break; } @@ -150,17 +150,17 @@ public sealed partial class DeviceReport { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Trying to get SCR...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Trying_to_get_SCR).IsIndeterminate(); sense = _dev.ReadScr(out scr, out _, _dev.Timeout, out _); }); if(!sense) { - AaruConsole.WriteLine("SCR obtained correctly..."); + AaruConsole.WriteLine(Localization.Core.SCR_obtained_correctly); report.SCR = scr; } else - AaruConsole.WriteLine("Could not read SCR..."); + AaruConsole.WriteLine(Localization.Core.Could_not_read_SCR); break; } diff --git a/Aaru.Core/Devices/Scanning/ATA.cs b/Aaru.Core/Devices/Scanning/ATA.cs index ee4efe0c1..b461ec571 100644 --- a/Aaru.Core/Devices/Scanning/ATA.cs +++ b/Aaru.Core/Devices/Scanning/ATA.cs @@ -122,7 +122,7 @@ public sealed partial class MediaScan if(ataReader.IsLba) { - UpdateStatus?.Invoke($"Reading {blocksToRead} sectors at a time."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Reading_0_sectors_at_a_time, blocksToRead)); InitBlockMap?.Invoke(results.Blocks, blockSize, blocksToRead, ataProfile); mhddLog = new MhddLog(_mhddLogPath, _dev, results.Blocks, blockSize, blocksToRead, false); @@ -149,8 +149,9 @@ public sealed partial class MediaScan currentSpeed > 0) results.MinSpeed = currentSpeed; - UpdateProgress?.Invoke($"Reading sector {i} of {results.Blocks} ({currentSpeed:F3} MiB/sec.)", - (long)i, (long)results.Blocks); + UpdateProgress?. + Invoke(string.Format(Localization.Core.Reading_sector_0_of_1_2_MiB_sec, i, results.Blocks, currentSpeed), + (long)i, (long)results.Blocks); bool error = ataReader.ReadBlocks(out cmdBuf, i, blocksToRead, out duration, out _, out _); @@ -232,7 +233,7 @@ public sealed partial class MediaScan uint seekPos = (uint)rnd.Next((int)results.Blocks); - PulseProgress?.Invoke($"Seeking to sector {seekPos}...\t\t"); + PulseProgress?.Invoke(string.Format(Localization.Core.Seeking_to_sector_0, seekPos)); ataReader.Seek(seekPos, out seekCur); @@ -280,8 +281,9 @@ public sealed partial class MediaScan currentSpeed > 0) results.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 _); @@ -365,7 +367,8 @@ public sealed partial class MediaScan byte seekHd = (byte)rnd.Next(heads); byte seekSc = (byte)rnd.Next(sectors); - PulseProgress?.Invoke($"\rSeeking to cylinder {seekCy}, head {seekHd}, sector {seekSc}...\t\t"); + PulseProgress?.Invoke(string.Format(Localization.Core.Seeking_to_cylinder_0_head_1_sector_2, + seekCy, seekHd, seekSc)); ataReader.SeekChs(seekCy, seekHd, seekSc, out seekCur); @@ -392,7 +395,7 @@ public sealed partial class MediaScan return results; } - StoppingErrorMessage?.Invoke("Unable to communicate with ATA device."); + StoppingErrorMessage?.Invoke(Localization.Core.Unable_to_communicate_with_ATA_device); return results; } diff --git a/Aaru.Core/Devices/Scanning/MediaScan.cs b/Aaru.Core/Devices/Scanning/MediaScan.cs index 168ce0fc7..fdf364e29 100644 --- a/Aaru.Core/Devices/Scanning/MediaScan.cs +++ b/Aaru.Core/Devices/Scanning/MediaScan.cs @@ -81,7 +81,7 @@ public sealed partial class MediaScan case DeviceType.NVMe: return Nvme(); case DeviceType.ATAPI: case DeviceType.SCSI: return Scsi(); - default: throw new NotSupportedException("Unknown device type."); + default: throw new NotSupportedException(Localization.Core.Unknown_device_type); } } diff --git a/Aaru.Core/Devices/Scanning/NVMe.cs b/Aaru.Core/Devices/Scanning/NVMe.cs index 7888249c3..a2e0b07a7 100644 --- a/Aaru.Core/Devices/Scanning/NVMe.cs +++ b/Aaru.Core/Devices/Scanning/NVMe.cs @@ -36,7 +36,7 @@ public sealed partial class MediaScan { ScanResults Nvme() { - StoppingErrorMessage?.Invoke("NVMe devices not yet supported."); + StoppingErrorMessage?.Invoke(Localization.Core.NVMe_devices_not_yet_supported); return default; } diff --git a/Aaru.Core/Devices/Scanning/SCSI.cs b/Aaru.Core/Devices/Scanning/SCSI.cs index 6139bba60..3fe91a886 100644 --- a/Aaru.Core/Devices/Scanning/SCSI.cs +++ b/Aaru.Core/Devices/Scanning/SCSI.cs @@ -78,7 +78,7 @@ public sealed partial class MediaScan while(leftRetries > 0) { - PulseProgress?.Invoke("Waiting for drive to become ready"); + PulseProgress?.Invoke(Localization.Core.Waiting_for_drive_to_become_ready); Thread.Sleep(2000); sense = _dev.ScsiTestUnitReady(out senseBuf, _dev.Timeout, out _); @@ -90,7 +90,7 @@ public sealed partial class MediaScan if(sense) { - StoppingErrorMessage?.Invoke("Please insert media in drive"); + StoppingErrorMessage?.Invoke(Localization.Core.Please_insert_media_in_drive); return results; } @@ -103,7 +103,7 @@ public sealed partial class MediaScan while(leftRetries > 0) { - PulseProgress?.Invoke("Waiting for drive to become ready"); + PulseProgress?.Invoke(Localization.Core.Waiting_for_drive_to_become_ready); Thread.Sleep(2000); sense = _dev.ScsiTestUnitReady(out senseBuf, _dev.Timeout, out _); @@ -115,8 +115,9 @@ public sealed partial class MediaScan if(sense) { - StoppingErrorMessage?.Invoke($"Error testing unit was ready:\n{ - Sense.PrettifySense(senseBuf)}"); + StoppingErrorMessage?. + Invoke(string.Format(Localization.Core.Error_testing_unit_was_ready_0, + Sense.PrettifySense(senseBuf))); return results; } @@ -131,7 +132,7 @@ public sealed partial class MediaScan while(leftRetries > 0) { - PulseProgress?.Invoke("Waiting for drive to become ready"); + PulseProgress?.Invoke(Localization.Core.Waiting_for_drive_to_become_ready); Thread.Sleep(2000); sense = _dev.ScsiTestUnitReady(out senseBuf, _dev.Timeout, out _); @@ -143,8 +144,9 @@ public sealed partial class MediaScan if(sense) { - StoppingErrorMessage?.Invoke($"Error testing unit was ready:\n{ - Sense.PrettifySense(senseBuf)}"); + StoppingErrorMessage?. + Invoke(string.Format(Localization.Core.Error_testing_unit_was_ready_0, + Sense.PrettifySense(senseBuf))); return results; } @@ -152,14 +154,14 @@ public sealed partial class MediaScan break; } default: - StoppingErrorMessage?.Invoke($"Error testing unit was ready:\n{Sense.PrettifySense(senseBuf) - }"); + StoppingErrorMessage?.Invoke(string.Format(Localization.Core.Error_testing_unit_was_ready_0, + Sense.PrettifySense(senseBuf))); return results; } else { - StoppingErrorMessage?.Invoke("Unknown testing unit was ready."); + StoppingErrorMessage?.Invoke(Localization.Core.Unknown_testing_unit_was_ready); return results; } @@ -185,7 +187,7 @@ public sealed partial class MediaScan if(!foundReadCommand && _dev.ScsiType != PeripheralDeviceTypes.MultiMediaDevice) { - StoppingErrorMessage?.Invoke("Unable to read medium."); + StoppingErrorMessage?.Invoke(Localization.Core.Unable_to_read_medium); return results; } @@ -202,28 +204,38 @@ public sealed partial class MediaScan switch(totalSize) { case > 1099511627776: - UpdateStatus?.Invoke($"Media has {results.Blocks} blocks of {blockSize - } bytes/each. (for a total of {totalSize / 1099511627776d:F3} TiB)"); + UpdateStatus?. + Invoke(string. + Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_TiB, + results.Blocks, blockSize, totalSize / 1099511627776d)); break; case > 1073741824: - UpdateStatus?.Invoke($"Media has {results.Blocks} blocks of {blockSize - } bytes/each. (for a total of {totalSize / 1073741824d:F3} GiB)"); + UpdateStatus?. + Invoke(string. + Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_GiB, + results.Blocks, blockSize, totalSize / 1073741824d)); break; case > 1048576: - UpdateStatus?.Invoke($"Media has {results.Blocks} blocks of {blockSize - } bytes/each. (for a total of {totalSize / 1048576d:F3} MiB)"); + UpdateStatus?. + Invoke(string. + Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_MiB, + results.Blocks, blockSize, totalSize / 1048576d)); break; case > 1024: - UpdateStatus?.Invoke($"Media has {results.Blocks} blocks of {blockSize - } bytes/each. (for a total of {totalSize / 1024d:F3} KiB)"); + UpdateStatus?. + Invoke(string. + Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_KiB, + results.Blocks, blockSize, totalSize / 1024d)); break; default: - UpdateStatus?.Invoke($"Media has {results.Blocks} blocks of {blockSize - } bytes/each. (for a total of {totalSize} bytes)"); + UpdateStatus?. + Invoke(string. + Format(Localization.Core.Media_has_0_blocks_of_1_bytes_each_for_a_total_of_2_bytes, + results.Blocks, blockSize, totalSize)); break; } @@ -231,16 +243,14 @@ public sealed partial class MediaScan break; case PeripheralDeviceTypes.SequentialAccess: - StoppingErrorMessage?.Invoke("Scanning will never be supported on SCSI Streaming Devices." + - Environment.NewLine + - "It has no sense to do it, and it will put too much strain on the tape."); + StoppingErrorMessage?.Invoke(Localization.Core.Scanning_never_supported_in_SSC); return results; } if(results.Blocks == 0) { - StoppingErrorMessage?.Invoke("Unable to read medium or empty medium present..."); + StoppingErrorMessage?.Invoke(Localization.Core.Unable_to_read_medium_or_empty_medium_present); return results; } @@ -315,7 +325,7 @@ public sealed partial class MediaScan if(toc == null) { - StoppingErrorMessage?.Invoke("Error trying to decode TOC..."); + StoppingErrorMessage?.Invoke(Localization.Core.Error_trying_to_decode_TOC); return results; } @@ -325,10 +335,10 @@ public sealed partial class MediaScan _dev.Timeout, out _); if(readcd) - UpdateStatus?.Invoke("Using MMC READ CD command."); + UpdateStatus?.Invoke(Localization.Core.Using_MMC_READ_CD_command); else if(!foundReadCommand) { - StoppingErrorMessage?.Invoke("Unable to read medium."); + StoppingErrorMessage?.Invoke(Localization.Core.Unable_to_read_medium); return results; } @@ -352,12 +362,14 @@ public sealed partial class MediaScan if(_dev.Error) { - StoppingErrorMessage?.Invoke($"Device error {_dev.LastError} trying to guess ideal transfer length."); + StoppingErrorMessage?. + Invoke(string.Format(Localization.Core.Device_error_0_trying_to_guess_ideal_transfer_length, + _dev.LastError)); return results; } - UpdateStatus?.Invoke($"Reading {blocksToRead} sectors at a time."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Reading_0_sectors_at_a_time, blocksToRead)); InitBlockMap?.Invoke(results.Blocks, blockSize, blocksToRead, currentProfile); mhddLog = new MhddLog(_mhddLogPath, _dev, results.Blocks, blockSize, blocksToRead, false); @@ -385,8 +397,9 @@ public sealed partial class MediaScan currentSpeed > 0) results.MinSpeed = currentSpeed; - UpdateProgress?.Invoke($"Reading sector {i} of {results.Blocks} ({currentSpeed:F3} MiB/sec.)", (long)i, - (long)results.Blocks); + UpdateProgress?. + Invoke(string.Format(Localization.Core.Reading_sector_0_of_1_2_MiB_sec, i, results.Blocks, currentSpeed), + (long)i, (long)results.Blocks); if(readcd) sense = _dev.ReadCd(out _, out senseBuf, (uint)i, 2352, blocksToRead, MmcSectorTypes.AllTypes, @@ -437,7 +450,8 @@ public sealed partial class MediaScan if(readcd) { - AaruConsole.DebugWriteLine("Media-Scan", "READ CD error:\n{0}", Sense.PrettifySense(senseBuf)); + AaruConsole.DebugWriteLine("Media-Scan", Localization.Core.READ_CD_error_0, + Sense.PrettifySense(senseBuf)); senseDecoded = Sense.Decode(senseBuf); @@ -512,7 +526,7 @@ public sealed partial class MediaScan { start = DateTime.UtcNow; - UpdateStatus?.Invoke($"Reading {scsiReader.BlocksToRead} sectors at a time."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Reading_0_sectors_at_a_time, scsiReader.BlocksToRead)); InitBlockMap?.Invoke(results.Blocks, blockSize, scsiReader.BlocksToRead, currentProfile); mhddLog = new MhddLog(_mhddLogPath, _dev, results.Blocks, blockSize, scsiReader.BlocksToRead, false); @@ -540,8 +554,9 @@ public sealed partial class MediaScan currentSpeed > 0) results.MinSpeed = currentSpeed; - UpdateProgress?.Invoke($"Reading sector {i} of {results.Blocks} ({currentSpeed:F3} MiB/sec.)", (long)i, - (long)results.Blocks); + UpdateProgress?. + Invoke(string.Format(Localization.Core.Reading_sector_0_of_1_2_MiB_sec, i, results.Blocks, currentSpeed), + (long)i, (long)results.Blocks); sense = scsiReader.ReadBlocks(out _, i, blocksToRead, out double cmdDuration, out _, out _); results.ProcessingTime += cmdDuration; @@ -633,7 +648,7 @@ public sealed partial class MediaScan uint seekPos = (uint)rnd.Next((int)results.Blocks); - PulseProgress?.Invoke($"Seeking to sector {seekPos}...\t\t"); + PulseProgress?.Invoke(string.Format(Localization.Core.Seeking_to_sector_0, seekPos)); double seekCur; diff --git a/Aaru.Core/Devices/Scanning/SecureDigital.cs b/Aaru.Core/Devices/Scanning/SecureDigital.cs index d280bc150..9d28a517c 100644 --- a/Aaru.Core/Devices/Scanning/SecureDigital.cs +++ b/Aaru.Core/Devices/Scanning/SecureDigital.cs @@ -134,7 +134,7 @@ public sealed partial class MediaScan if(results.Blocks == 0) { - StoppingErrorMessage?.Invoke("Unable to get device size."); + StoppingErrorMessage?.Invoke(Localization.Core.Unable_to_get_device_size); return results; } @@ -145,7 +145,8 @@ public sealed partial class MediaScan if(sense || _dev.Error) { - UpdateStatus?.Invoke("Environment does not support setting block count, downgrading to OS reading."); + UpdateStatus?.Invoke(Localization.Core. + Environment_does_not_support_setting_block_count_downgrading_to_OS_reading); supportsCmd23 = false; } @@ -155,7 +156,7 @@ public sealed partial class MediaScan if(sense) { - StoppingErrorMessage?.Invoke($"Error {_dev.LastError} reopening device."); + StoppingErrorMessage?.Invoke(string.Format(Localization.Core.Error_0_reopening_device, _dev.LastError)); return results; } @@ -178,7 +179,9 @@ public sealed partial class MediaScan if(sense) { - StoppingErrorMessage?.Invoke($"Device error {_dev.LastError} trying to guess ideal transfer length."); + StoppingErrorMessage?. + Invoke(string.Format(Localization.Core.Device_error_0_trying_to_guess_ideal_transfer_length, + _dev.LastError)); return results; } @@ -206,11 +209,13 @@ public sealed partial class MediaScan var rnd = new Random(); if(supportsCmd23 || blocksToRead == 1) - UpdateStatus?.Invoke($"Reading {blocksToRead} sectors at a time."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Reading_0_sectors_at_a_time, blocksToRead)); else if(_useBufferedReads) - UpdateStatus?.Invoke($"Reading {blocksToRead} sectors at a time using OS buffered reads."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Reading_0_sectors_at_a_time_using_OS_buffered_reads, + blocksToRead)); else - UpdateStatus?.Invoke($"Reading {blocksToRead} sectors using sequential single commands."); + UpdateStatus?.Invoke(string.Format(Localization.Core.Reading_0_sectors_using_sequential_single_commands, + blocksToRead)); InitBlockMap?.Invoke(results.Blocks, blockSize, blocksToRead, sdProfile); var mhddLog = new MhddLog(_mhddLogPath, _dev, results.Blocks, blockSize, blocksToRead, false); @@ -237,8 +242,9 @@ public sealed partial class MediaScan currentSpeed > 0) results.MinSpeed = currentSpeed; - UpdateProgress?.Invoke($"Reading sector {i} of {results.Blocks} ({currentSpeed:F3} MiB/sec.)", (long)i, - (long)results.Blocks); + UpdateProgress?. + Invoke(string.Format(Localization.Core.Reading_sector_0_of_1_2_MiB_sec, i, results.Blocks, currentSpeed), + (long)i, (long)results.Blocks); bool error; @@ -330,7 +336,7 @@ public sealed partial class MediaScan uint seekPos = (uint)rnd.Next((int)results.Blocks); - PulseProgress?.Invoke($"Seeking to sector {seekPos}...\t\t"); + PulseProgress?.Invoke(string.Format(Localization.Core.Seeking_to_sector_0, seekPos)); _dev.ReadSingleBlock(out cmdBuf, out _, seekPos, blockSize, byteAddressed, timeout, out double seekCur); diff --git a/Aaru.Core/Entropy.cs b/Aaru.Core/Entropy.cs index e6182635f..d5a92a0ed 100644 --- a/Aaru.Core/Entropy.cs +++ b/Aaru.Core/Entropy.cs @@ -79,7 +79,7 @@ public sealed class Entropy if(_inputFormat is not IOpticalMediaImage opticalMediaImage) { - AaruConsole.ErrorWriteLine("The selected image does not support tracks."); + AaruConsole.ErrorWriteLine(Localization.Core.The_selected_image_does_not_support_tracks); return entropyResults.ToArray(); } @@ -99,7 +99,7 @@ public sealed class Entropy }; UpdateProgressEvent?. - Invoke($"Entropying track {currentTrack.Sequence} of {inputTracks.Max(t => t.Sequence)}", + Invoke(string.Format(Localization.Core.Entropying_track_0_of_1, currentTrack.Sequence, inputTracks.Max(t => t.Sequence)), currentTrack.Sequence, inputTracks.Max(t => t.Sequence)); ulong[] entTable = new ulong[256]; @@ -108,20 +108,24 @@ public sealed class Entropy trackEntropy.Sectors = currentTrack.EndSector - currentTrack.StartSector + 1; - AaruConsole.VerboseWriteLine("Track {0} has {1} sectors", currentTrack.Sequence, trackEntropy.Sectors); + AaruConsole.VerboseWriteLine(Localization.Core.Track_0_has_1_sectors, currentTrack.Sequence, + trackEntropy.Sectors); InitProgress2Event?.Invoke(); for(ulong i = 0; i < trackEntropy.Sectors; i++) { - UpdateProgress2Event?.Invoke($"Entropying sector {i + 1} of track {currentTrack.Sequence}", - (long)(i + 1), (long)currentTrack.EndSector); + UpdateProgress2Event?. + Invoke(string.Format(Localization.Core.Entropying_sector_0_of_track_1, i + 1, currentTrack.Sequence), + (long)(i + 1), (long)currentTrack.EndSector); ErrorNumber errno = opticalMediaImage.ReadSector(i, currentTrack.Sequence, out byte[] sector); if(errno != ErrorNumber.NoError) { - AaruConsole.ErrorWriteLine($"Error {errno} while reading sector {i}, continuing..."); + AaruConsole. + ErrorWriteLine(string.Format(Localization.Core.Error_0_while_reading_sector_1_continuing, + errno, i)); continue; } @@ -156,9 +160,10 @@ public sealed class Entropy catch(Exception ex) { if(_debug) - AaruConsole.DebugWriteLine("Could not get tracks because {0}", ex.Message); + AaruConsole.DebugWriteLine(Localization.Core.Could_not_get_tracks_because_0, ex.Message); else - AaruConsole.ErrorWriteLine("Unable to get separate tracks, not calculating their entropy"); + AaruConsole.ErrorWriteLine(Localization.Core. + Unable_to_get_separate_tracks_not_calculating_their_entropy); } return entropyResults.ToArray(); @@ -182,17 +187,20 @@ public sealed class Entropy List uniqueSectors = new(); entropy.Sectors = mediaImage.Info.Sectors; - AaruConsole.WriteLine("Sectors {0}", entropy.Sectors); + AaruConsole.WriteLine(Localization.Core.Sectors_0, entropy.Sectors); InitProgressEvent?.Invoke(); for(ulong i = 0; i < entropy.Sectors; i++) { - UpdateProgressEvent?.Invoke($"Entropying sector {i + 1}", (long)(i + 1), (long)entropy.Sectors); + UpdateProgressEvent?.Invoke(string.Format(Localization.Core.Entropying_sector_0, i + 1), (long)(i + 1), + (long)entropy.Sectors); + ErrorNumber errno = mediaImage.ReadSector(i, out byte[] sector); if(errno != ErrorNumber.NoError) { - AaruConsole.ErrorWriteLine($"Error {errno} while reading sector {i}, continuing..."); + AaruConsole.ErrorWriteLine(string.Format(Localization.Core.Error_0_while_reading_sector_1_continuing, + errno, i)); continue; } @@ -238,14 +246,15 @@ public sealed class Entropy byte[] data = new byte[byteAddressableImage.Info.Sectors]; entropy.Sectors = _inputFormat.Info.Sectors; - AaruConsole.WriteLine("{0} bytes", entropy.Sectors); + AaruConsole.WriteLine(Localization.Core._0_bytes, entropy.Sectors); InitProgressEvent?.Invoke(); ErrorNumber errno = byteAddressableImage.ReadBytes(data, 0, data.Length, out int bytesRead); if(errno != ErrorNumber.NoError) { - AaruConsole.ErrorWriteLine($"Error {errno} while reading data, not continuing..."); + AaruConsole.ErrorWriteLine(string.Format(Localization.Core.Error_0_while_reading_data__not_continuing, + errno)); return entropy; } diff --git a/Aaru.Core/Error.cs b/Aaru.Core/Error.cs index d451cbb1e..7ecfe802a 100644 --- a/Aaru.Core/Error.cs +++ b/Aaru.Core/Error.cs @@ -75,13 +75,13 @@ public static class Error case PlatformID.OpenServer: case PlatformID.UnixWare: case PlatformID.zOS: return PrintUnixError(errno); - case PlatformID.Wii: return $"Unknown error code {errno}"; - case PlatformID.WiiU: return $"Unknown error code {errno}"; - case PlatformID.PlayStation3: return $"Unknown error code {errno}"; - case PlatformID.PlayStation4: return $"Unknown error code {errno}"; - case PlatformID.NonStop: return $"Unknown error code {errno}"; - case PlatformID.Unknown: return $"Unknown error code {errno}"; - default: return $"Unknown error code {errno}"; + case PlatformID.Wii: return string.Format(Localization.Core.error_code_0, errno); + case PlatformID.WiiU: return string.Format(Localization.Core.error_code_0, errno); + case PlatformID.PlayStation3: return string.Format(Localization.Core.error_code_0, errno); + case PlatformID.PlayStation4: return string.Format(Localization.Core.error_code_0, errno); + case PlatformID.NonStop: return string.Format(Localization.Core.error_code_0, errno); + case PlatformID.Unknown: return string.Format(Localization.Core.error_code_0, errno); + default: return string.Format(Localization.Core.error_code_0, errno); } } @@ -91,14 +91,14 @@ public static class Error { case 2: // ENOENT case 19: // ENODEV - return "The specified device cannot be found."; + return Localization.Core.The_specified_device_cannot_be_found; case 13: // EACCESS - return "Not enough permissions to open the device."; + return Localization.Core.Not_enough_permissions_to_open_the_device; case 16: // EBUSY - return "The specified device is in use by another process."; + return Localization.Core.The_specified_device_is_in_use_by_another_process; case 30: // EROFS - return "Cannot open the device in writable mode, as needed by some commands."; - default: return $"Unknown error code {errno}"; + return Localization.Core.Cannot_open_the_device_in_writable_mode_as_needed_by_some_commands; + default: return string.Format(Localization.Core.error_code_0, errno); } } @@ -108,19 +108,19 @@ public static class Error { case 2: // ERROR_FILE_NOT_FOUND case 3: // ERROR_PATH_NOT_FOUND - return "The specified device cannot be found."; + return Localization.Core.The_specified_device_cannot_be_found; case 5: // ERROR_ACCESS_DENIED - return "Not enough permissions to open the device."; + return Localization.Core.Not_enough_permissions_to_open_the_device; case 19: // ERROR_WRITE_PROTECT - return "Cannot open the device in writable mode, as needed by some commands."; + return Localization.Core.Cannot_open_the_device_in_writable_mode_as_needed_by_some_commands; case 32: // ERROR_SHARING_VIOLATION case 33: // ERROR_LOCK_VIOLATION case 108: // ERROR_DRIVE_LOCKED case 170: // ERROR_BUSY - return "The specified device is in use by another process."; + return Localization.Core.The_specified_device_is_in_use_by_another_process; case 130: // ERROR_DIRECT_ACCESS_HANDLE - return "Tried to open a file instead of a device."; - default: return $"Unknown error code {errno}"; + return Localization.Core.Tried_to_open_a_file_instead_of_a_device; + default: return string.Format(Localization.Core.error_code_0, errno); } } } \ No newline at end of file diff --git a/Aaru.Core/ImageFormat.cs b/Aaru.Core/ImageFormat.cs index 68f735f97..7b18033f0 100644 --- a/Aaru.Core/ImageFormat.cs +++ b/Aaru.Core/ImageFormat.cs @@ -57,7 +57,7 @@ public static class ImageFormat imagePlugin.Id != new Guid("12345678-AAAA-BBBB-CCCC-123456789000"))) try { - AaruConsole.DebugWriteLine("Format detection", "Trying plugin {0}", imagePlugin.Name); + AaruConsole.DebugWriteLine("Format detection", Localization.Core.Trying_plugin_0, imagePlugin.Name); if(!imagePlugin.Identify(imageFilter)) continue; @@ -80,7 +80,7 @@ public static class ImageFormat imagePlugin.Id != new Guid("12345678-AAAA-BBBB-CCCC-123456789000"))) try { - AaruConsole.DebugWriteLine("Format detection", "Trying plugin {0}", imagePlugin.Name); + AaruConsole.DebugWriteLine("Format detection", Localization.Core.Trying_plugin_0, imagePlugin.Name); if(!imagePlugin.Identify(imageFilter)) continue; @@ -103,7 +103,7 @@ public static class ImageFormat imagePlugin.Id == new Guid("12345678-AAAA-BBBB-CCCC-123456789000"))) try { - AaruConsole.DebugWriteLine("Format detection", "Trying plugin {0}", imagePlugin.Name); + AaruConsole.DebugWriteLine("Format detection", Localization.Core.Trying_plugin_0, imagePlugin.Name); if(!imagePlugin.Identify(imageFilter)) continue; diff --git a/Aaru.Core/ImageInfo.cs b/Aaru.Core/ImageInfo.cs index 08c6cecd5..5dd31514a 100644 --- a/Aaru.Core/ImageInfo.cs +++ b/Aaru.Core/ImageInfo.cs @@ -62,118 +62,115 @@ namespace Aaru.Core; /// Image information operations public static class ImageInfo { - const string MANUFACTURER_STRING = "Manufacturer"; - const string MODEL_STRING = "Model"; - const string SERIAL_STRING = "Serial"; - const string SOFTWARE_STRING = "Software"; - const string VERSION_STRING = "Version"; - const string OS_STRING = "Operating system"; - const string START_STRING = "Start"; - const string END_STRING = "End"; - /// Prints image information to console /// Media image public static void PrintImageInfo(IBaseImage imageFormat) { - AaruConsole.WriteLine("[bold]Image information:[/]"); + AaruConsole.WriteLine(Localization.Core.Image_information_WithMarkup); if(!string.IsNullOrWhiteSpace(imageFormat.Info.Version)) - AaruConsole.WriteLine("[bold]Format:[/] [italic]{0}[/] version {1}", Markup.Escape(imageFormat.Format), + AaruConsole.WriteLine(Localization.Core.Format_0_version_1_WithMarkup, Markup.Escape(imageFormat.Format), Markup.Escape(imageFormat.Info.Version)); else - AaruConsole.WriteLine("[bold]Format:[/] [italic]{0}[/]", Markup.Escape(imageFormat.Format)); + AaruConsole.WriteLine(Localization.Core.Format_0_WithMarkup, Markup.Escape(imageFormat.Format)); switch(string.IsNullOrWhiteSpace(imageFormat.Info.Application)) { case false when !string.IsNullOrWhiteSpace(imageFormat.Info.ApplicationVersion): - AaruConsole.WriteLine("Was created with [italic]{0}[/] version [italic]{1}[/]", + AaruConsole.WriteLine(Localization.Core.Was_created_with_0_version_1_WithMarkup, Markup.Escape(imageFormat.Info.Application), Markup.Escape(imageFormat.Info.ApplicationVersion)); break; case false: - AaruConsole.WriteLine("Was created with [italic]{0}[/]", Markup.Escape(imageFormat.Info.Application)); + AaruConsole.WriteLine(Localization.Core.Was_created_with_0_WithMarkup, + Markup.Escape(imageFormat.Info.Application)); break; } - AaruConsole.WriteLine("Image without headers is {0} bytes long", imageFormat.Info.ImageSize); + AaruConsole.WriteLine(Localization.Core.Image_without_headers_is_0_bytes_long, imageFormat.Info.ImageSize); - AaruConsole. - WriteLine("Contains a media of {0} sectors with a maximum sector size of {1} bytes (if all sectors are of the same size this would be {2} bytes)", - imageFormat.Info.Sectors, imageFormat.Info.SectorSize, - imageFormat.Info.Sectors * imageFormat.Info.SectorSize); + AaruConsole.WriteLine(Localization.Core.Contains_a_media_of_0_sectors_with_a_maximum_sector_size_of_1_bytes_etc, + imageFormat.Info.Sectors, imageFormat.Info.SectorSize, + imageFormat.Info.Sectors * imageFormat.Info.SectorSize); if(!string.IsNullOrWhiteSpace(imageFormat.Info.Creator)) - AaruConsole.WriteLine("[bold]Created by:[/] {0}", Markup.Escape(imageFormat.Info.Creator)); + AaruConsole.WriteLine(Localization.Core.Created_by_0_WithMarkup, Markup.Escape(imageFormat.Info.Creator)); if(imageFormat.Info.CreationTime != DateTime.MinValue) - AaruConsole.WriteLine("Created on {0}", imageFormat.Info.CreationTime); + AaruConsole.WriteLine(Localization.Core.Created_on_0, imageFormat.Info.CreationTime); if(imageFormat.Info.LastModificationTime != DateTime.MinValue) - AaruConsole.WriteLine("Last modified on {0}", imageFormat.Info.LastModificationTime); + AaruConsole.WriteLine(Localization.Core.Last_modified_on_0, imageFormat.Info.LastModificationTime); - AaruConsole.WriteLine("Contains a media of type [italic]{0}[/] and XML type [italic]{1}[/]", + AaruConsole.WriteLine(Localization.Core.Contains_a_media_of_type_0_and_XML_type_1_WithMarkup, imageFormat.Info.MediaType, imageFormat.Info.XmlMediaType); - AaruConsole.WriteLine("{0} partitions", imageFormat.Info.HasPartitions ? "Has" : "Doesn't have"); - AaruConsole.WriteLine("{0} sessions", imageFormat.Info.HasSessions ? "Has" : "Doesn't have"); + AaruConsole.WriteLine(imageFormat.Info.HasPartitions ? Localization.Core.Has_partitions + : Localization.Core.Doesnt_have_partitions); + + AaruConsole.WriteLine(imageFormat.Info.HasSessions ? Localization.Core.Has_sessions + : Localization.Core.Doesnt_have_sessions); if(!string.IsNullOrWhiteSpace(imageFormat.Info.Comments)) - AaruConsole.WriteLine("[bold]Comments:[/] {0}", Markup.Escape(imageFormat.Info.Comments)); + AaruConsole.WriteLine(Localization.Core.Comments_0_WithMarkup, Markup.Escape(imageFormat.Info.Comments)); if(imageFormat.Info.MediaSequence != 0 && imageFormat.Info.LastMediaSequence != 0) - AaruConsole.WriteLine("Media is number {0} on a set of {1} medias", imageFormat.Info.MediaSequence, - imageFormat.Info.LastMediaSequence); + AaruConsole.WriteLine(Localization.Core.Media_is_number_0_on_a_set_of_1_medias, + imageFormat.Info.MediaSequence, imageFormat.Info.LastMediaSequence); if(!string.IsNullOrWhiteSpace(imageFormat.Info.MediaTitle)) - AaruConsole.WriteLine("[bold]Media title:[/] [italic]{0}[/]", Markup.Escape(imageFormat.Info.MediaTitle)); + AaruConsole.WriteLine(Localization.Core.Media_title_0_WithMarkup, + Markup.Escape(imageFormat.Info.MediaTitle)); if(!string.IsNullOrWhiteSpace(imageFormat.Info.MediaManufacturer)) - AaruConsole.WriteLine("[bold]Media manufacturer:[/] [italic]{0}[/]", + AaruConsole.WriteLine(Localization.Core.Media_manufacturer_0_WithMarkup, Markup.Escape(imageFormat.Info.MediaManufacturer)); if(!string.IsNullOrWhiteSpace(imageFormat.Info.MediaModel)) - AaruConsole.WriteLine("[bold]Media model:[/] [italic]{0}[/]", Markup.Escape(imageFormat.Info.MediaModel)); + AaruConsole.WriteLine(Localization.Core.Media_model_0_WithMarkup, + Markup.Escape(imageFormat.Info.MediaModel)); if(!string.IsNullOrWhiteSpace(imageFormat.Info.MediaSerialNumber)) - AaruConsole.WriteLine("[bold]Media serial number:[/] [italic]{0}[/]", + AaruConsole.WriteLine(Localization.Core.Media_serial_number_0_WithMarkup, Markup.Escape(imageFormat.Info.MediaSerialNumber)); if(!string.IsNullOrWhiteSpace(imageFormat.Info.MediaBarcode)) - AaruConsole.WriteLine("[bold]Media barcode:[/] [italic]{0}[/]", + AaruConsole.WriteLine(Localization.Core.Media_barcode_0_WithMarkup, Markup.Escape(imageFormat.Info.MediaBarcode)); if(!string.IsNullOrWhiteSpace(imageFormat.Info.MediaPartNumber)) - AaruConsole.WriteLine("[bold]Media part number:[/] [italic]{0}[/]", + AaruConsole.WriteLine(Localization.Core.Media_part_number_0_WithMarkup, Markup.Escape(imageFormat.Info.MediaPartNumber)); if(!string.IsNullOrWhiteSpace(imageFormat.Info.DriveManufacturer)) - AaruConsole.WriteLine("[bold]Drive manufacturer:[/] [italic]{0}[/]", + AaruConsole.WriteLine(Localization.Core.Drive_manufacturer_0_WithMarkup, Markup.Escape(imageFormat.Info.DriveManufacturer)); if(!string.IsNullOrWhiteSpace(imageFormat.Info.DriveModel)) - AaruConsole.WriteLine("[bold]Drive model:[/] [italic]{0}[/]", Markup.Escape(imageFormat.Info.DriveModel)); + AaruConsole.WriteLine(Localization.Core.Drive_model_0_WithMarkup, + Markup.Escape(imageFormat.Info.DriveModel)); if(!string.IsNullOrWhiteSpace(imageFormat.Info.DriveSerialNumber)) - AaruConsole.WriteLine("[bold]Drive serial number:[/] [italic]{0}[/]", + AaruConsole.WriteLine(Localization.Core.Drive_serial_number_0_WithMarkup, Markup.Escape(imageFormat.Info.DriveSerialNumber)); if(!string.IsNullOrWhiteSpace(imageFormat.Info.DriveFirmwareRevision)) - AaruConsole.WriteLine("[bold]Drive firmware info:[/] [italic]{0}[/]", + AaruConsole.WriteLine(Localization.Core.Drive_firmware_info_0_WithMarkup, Markup.Escape(imageFormat.Info.DriveFirmwareRevision)); if(imageFormat.Info.Cylinders > 0 && imageFormat.Info is { Heads: > 0, SectorsPerTrack: > 0 } && imageFormat.Info.XmlMediaType != XmlMediaType.OpticalDisc && imageFormat is not ITapeImage { IsTape: true }) - AaruConsole.WriteLine("[bold]Media geometry:[/] [italic]{0} cylinders, {1} heads, {2} sectors per track[/]", + AaruConsole.WriteLine(Localization.Core.Media_geometry_0_cylinders_1_heads_2_sectors_per_track_WithMarkup, imageFormat.Info.Cylinders, imageFormat.Info.Heads, imageFormat.Info.SectorsPerTrack); if(imageFormat.Info.ReadableMediaTags is { Count: > 0 }) { - AaruConsole.WriteLine("[bold]Contains {0} readable media tags:[/]", + AaruConsole.WriteLine(Localization.Core.Contains_0_readable_media_tags_WithMarkup, imageFormat.Info.ReadableMediaTags.Count); foreach(MediaTagType tag in imageFormat.Info.ReadableMediaTags.OrderBy(t => t)) @@ -184,7 +181,7 @@ public static class ImageInfo if(imageFormat.Info.ReadableSectorTags is { Count: > 0 }) { - AaruConsole.WriteLine("[bold]Contains {0} readable sector tags:[/]", + AaruConsole.WriteLine(Localization.Core.Contains_0_readable_sector_tags_WithMarkup, imageFormat.Info.ReadableSectorTags.Count); foreach(SectorTagType tag in imageFormat.Info.ReadableSectorTags.OrderBy(t => t)) @@ -203,13 +200,13 @@ public static class ImageInfo if(imageFormat.DumpHardware == null) return; - int manufacturerLen = MANUFACTURER_STRING.Length; - int modelLen = MODEL_STRING.Length; - int serialLen = SERIAL_STRING.Length; - int softwareLen = SOFTWARE_STRING.Length; - int versionLen = VERSION_STRING.Length; - int osLen = OS_STRING.Length; - int sectorLen = START_STRING.Length; + int manufacturerLen = Localization.Core.Title_Manufacturer.Length; + int modelLen = Localization.Core.Title_Model.Length; + int serialLen = Localization.Core.Title_Serial.Length; + int softwareLen = Localization.Core.Title_Software.Length; + int versionLen = Localization.Core.Title_Version.Length; + int osLen = Localization.Core.Title_Operating_system.Length; + int sectorLen = Localization.Core.Title_Start.Length; foreach(DumpHardwareType dump in imageFormat.DumpHardware) { @@ -243,17 +240,17 @@ public static class ImageInfo var table = new Table { - Title = new TableTitle("Dump hardware information") + Title = new TableTitle(Localization.Core.Title_Dump_hardware_information) }; - table.AddColumn(MANUFACTURER_STRING); - table.AddColumn(MODEL_STRING); - table.AddColumn(SERIAL_STRING); - table.AddColumn(SOFTWARE_STRING); - table.AddColumn(VERSION_STRING); - table.AddColumn(OS_STRING); - table.AddColumn(START_STRING); - table.AddColumn(END_STRING); + table.AddColumn(Localization.Core.Title_Manufacturer); + table.AddColumn(Localization.Core.Title_Model); + table.AddColumn(Localization.Core.Title_Serial); + table.AddColumn(Localization.Core.Title_Software); + table.AddColumn(Localization.Core.Title_Version); + table.AddColumn(Localization.Core.Title_Operating_system); + table.AddColumn(Localization.Core.Title_Start); + table.AddColumn(Localization.Core.Title_End); foreach(DumpHardwareType dump in imageFormat.DumpHardware) { @@ -275,7 +272,7 @@ public static class ImageInfo if(errno != ErrorNumber.NoError) return; - AaruConsole.WriteLine("[bold]Mapping:[/]"); + AaruConsole.WriteLine(Localization.Core.Mapping_WithMarkup); AaruConsole.WriteLine("{0}", Markup.Escape(JsonSerializer.Serialize(mappings, new JsonSerializerOptions { @@ -308,7 +305,7 @@ public static class ImageInfo Array.Copy(inquiry, 8, scsiVendorId, 0, 8); } - AaruConsole.WriteLine("[bold]SCSI INQUIRY contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.SCSI_INQUIRY_contained_in_image_WithMarkup); AaruConsole.Write("{0}", Inquiry.Prettify(inquiry)); AaruConsole.WriteLine(); } @@ -321,7 +318,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]ATA IDENTIFY contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.ATA_IDENTIFY_contained_in_image_WithMarkup); AaruConsole.Write("{0}", Identify.Prettify(identify)); AaruConsole.WriteLine(); } @@ -334,7 +331,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]ATAPI IDENTIFY contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.ATAPI_IDENTIFY_contained_in_image_WithMarkup); AaruConsole.Write("{0}", Identify.Prettify(identify)); AaruConsole.WriteLine(); } @@ -351,7 +348,7 @@ public static class ImageInfo if(decMode.HasValue) { - AaruConsole.WriteLine("[bold]SCSI MODE SENSE (10) contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.SCSI_MODE_SENSE_10_contained_in_image_WithMarkup); PrintScsiModePages.Print(decMode.Value, scsiDeviceType, scsiVendorId); AaruConsole.WriteLine(); } @@ -367,7 +364,7 @@ public static class ImageInfo if(decMode.HasValue) { - AaruConsole.WriteLine("[bold]SCSI MODE SENSE (6) contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.SCSI_MODE_SENSE_6_contained_in_image_WithMarkup); PrintScsiModePages.Print(decMode.Value, scsiDeviceType, scsiVendorId); AaruConsole.WriteLine(); } @@ -402,7 +399,7 @@ public static class ImageInfo toc = tmp; } - AaruConsole.WriteLine("[bold]CompactDisc Table of Contents contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.CompactDisc_Table_of_Contents_contained_in_image_WithMarkup); AaruConsole.Write("{0}", FullTOC.Prettify(toc)); AaruConsole.WriteLine(); } @@ -426,7 +423,9 @@ public static class ImageInfo pma = tmp; } - AaruConsole.WriteLine("[bold]CompactDisc Power Management Area contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core. + CompactDisc_Power_Management_Area_contained_in_image_WithMarkup); + AaruConsole.Write("{0}", PMA.Prettify(pma)); AaruConsole.WriteLine(); } @@ -451,7 +450,9 @@ public static class ImageInfo atip = tmp; } - AaruConsole.WriteLine("[bold]CompactDisc Absolute Time In Pregroove (ATIP) contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core. + CompactDisc_Absolute_Time_In_Pregroove_ATIP_contained_in_image_WithMarkup); + AaruConsole.Write("{0}", ATIP.Prettify(atip)); AaruConsole.WriteLine(); } @@ -476,7 +477,7 @@ public static class ImageInfo cdtext = tmp; } - AaruConsole.WriteLine("[bold]CompactDisc Lead-in's CD-Text contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.CompactDisc_Lead_in_CD_Text_contained_in_image_WithMarkup); AaruConsole.Write("{0}", CDTextOnLeadIn.Prettify(cdtext)); AaruConsole.WriteLine(); } @@ -488,8 +489,9 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]CompactDisc Media Catalogue Number contained in image:[/] {0}", - Encoding.UTF8.GetString(mcn)); + AaruConsole. + WriteLine(Localization.Core.CompactDisc_Media_Catalogue_Number_contained_in_image_0_WithMarkup, + Encoding.UTF8.GetString(mcn)); AaruConsole.WriteLine(); } @@ -501,7 +503,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]DVD-R(W) Pre-Recorded Information:[/]"); + AaruConsole.WriteLine(Localization.Core.DVD_RW_Pre_Recorded_Information_WithMarkup); AaruConsole.Write("{0}", PRI.Prettify(pri)); AaruConsole.WriteLine(); } @@ -513,7 +515,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]DVD Physical Format Information contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.DVD_Physical_Format_Information_contained_in_image_WithMarkup); AaruConsole.Write("{0}", PFI.Prettify(pfi, imageFormat.Info.MediaType)); AaruConsole.WriteLine(); } @@ -525,7 +527,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]DVD-RAM Disc Definition Structure contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.DVD_RAM_Disc_Definition_Structure_contained_in_image_WithMarkup); AaruConsole.Write("{0}", DDS.Prettify(dds)); AaruConsole.WriteLine(); } @@ -537,7 +539,9 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]DVD-R Physical Format Information contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core. + DVD_R_Physical_Format_Information_contained_in_image_WithMarkup); + AaruConsole.Write("{0}", PFI.Prettify(pfi, imageFormat.Info.MediaType)); AaruConsole.WriteLine(); } @@ -549,7 +553,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]Bluray Disc Information contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.Bluray_Disc_Information_contained_in_image_WithMarkup); AaruConsole.Write("{0}", DI.Prettify(di)); AaruConsole.WriteLine(); } @@ -561,7 +565,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]Bluray Disc Definition Structure contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.Bluray_Disc_Definition_Structure_contained_in_image_WithMarkup); AaruConsole.Write("{0}", Decoders.Bluray.DDS.Prettify(dds)); AaruConsole.WriteLine(); } @@ -573,7 +577,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]PCMCIA CIS:[/]"); + AaruConsole.WriteLine(Localization.Core.PCMCIA_CIS_WithMarkup); Tuple[] tuples = CIS.GetTuples(cis); if(tuples != null) @@ -629,18 +633,20 @@ public static class ImageInfo case TupleCodes.CISTPL_SPCL: case TupleCodes.CISTPL_SWIL: case TupleCodes.CISTPL_VERS_2: - AaruConsole.DebugWriteLine("Device-Info command", "Found undecoded tuple ID {0}", + AaruConsole.DebugWriteLine("Device-Info command", + Localization.Core.Invoke_Found_undecoded_tuple_ID_0, tuple.Code); break; default: - AaruConsole.DebugWriteLine("Device-Info command", "Found unknown tuple ID 0x{0:X2}", + AaruConsole.DebugWriteLine("Device-Info command", + Localization.Core.Found_unknown_tuple_ID_0, (byte)tuple.Code); break; } else - AaruConsole.DebugWriteLine("Device-Info command", "Could not get tuples"); + AaruConsole.DebugWriteLine("Device-Info command", Localization.Core.Could_not_get_tuples); } } @@ -650,7 +656,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]SecureDigital CID contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.SecureDigital_CID_contained_in_image_WithMarkup); AaruConsole.Write("{0}", Decoders.SecureDigital.Decoders.PrettifyCID(cid)); AaruConsole.WriteLine(); } @@ -662,7 +668,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]SecureDigital CSD contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.SecureDigital_CSD_contained_in_image_WithMarkup); AaruConsole.Write("{0}", Decoders.SecureDigital.Decoders.PrettifyCSD(csd)); AaruConsole.WriteLine(); } @@ -674,7 +680,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]SecureDigital SCR contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.SecureDigital_SCR_contained_in_image_WithMarkup); AaruConsole.Write("{0}", Decoders.SecureDigital.Decoders.PrettifySCR(scr)); AaruConsole.WriteLine(); } @@ -686,7 +692,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]SecureDigital OCR contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.SecureDigital_OCR_contained_in_image_WithMarkup); AaruConsole.Write("{0}", Decoders.SecureDigital.Decoders.PrettifyOCR(ocr)); AaruConsole.WriteLine(); } @@ -698,7 +704,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]MultiMediaCard CID contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.MultiMediaCard_CID_contained_in_image_WithMarkup); AaruConsole.Write("{0}", Decoders.MMC.Decoders.PrettifyCID(cid)); AaruConsole.WriteLine(); } @@ -710,7 +716,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]MultiMediaCard CSD contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.MultiMediaCard_CSD_contained_in_image_WithMarkup); AaruConsole.Write("{0}", Decoders.MMC.Decoders.PrettifyCSD(csd)); AaruConsole.WriteLine(); } @@ -722,7 +728,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]MultiMediaCard ExtendedCSD contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.MultiMediaCard_Extended_CSD_contained_in_image_WithMarkup); AaruConsole.Write("{0}", Decoders.MMC.Decoders.PrettifyExtendedCSD(ecsd)); AaruConsole.WriteLine(); } @@ -734,7 +740,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]MultiMediaCard OCR contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.MultiMediaCard_OCR_contained_in_image_WithMarkup); AaruConsole.Write("{0}", Decoders.MMC.Decoders.PrettifyOCR(ocr)); AaruConsole.WriteLine(); } @@ -746,7 +752,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]Xbox Physical Format Information contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.Xbox_Physical_Format_Information_contained_in_image_WithMarkup); AaruConsole.Write("{0}", PFI.Prettify(xpfi, imageFormat.Info.MediaType)); AaruConsole.WriteLine(); } @@ -764,7 +770,7 @@ public static class ImageInfo if(xmi.HasValue) { - AaruConsole.WriteLine("[bold]Xbox DMI contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.Xbox_DMI_contained_in_image_WithMarkup); AaruConsole.Write("{0}", DMI.PrettifyXbox(xmi)); AaruConsole.WriteLine(); } @@ -776,7 +782,7 @@ public static class ImageInfo if(xmi.HasValue) { - AaruConsole.WriteLine("[bold]Xbox 360 DMI contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.Xbox_360_DMI_contained_in_image_WithMarkup); AaruConsole.Write("{0}", DMI.PrettifyXbox360(xmi)); AaruConsole.WriteLine(); } @@ -790,7 +796,7 @@ public static class ImageInfo if(errno == ErrorNumber.NoError) { - AaruConsole.WriteLine("[bold]Xbox Security Sectors contained in image:[/]"); + AaruConsole.WriteLine(Localization.Core.Xbox_Security_Sectors_contained_in_image_WithMarkup); AaruConsole.Write("{0}", SS.Prettify(toc)); AaruConsole.WriteLine(); } @@ -805,14 +811,14 @@ public static class ImageInfo { var table = new Table { - Title = new TableTitle("Image sessions") + Title = new TableTitle(Localization.Core.Title_Image_sessions) }; - table.AddColumn("Session"); - table.AddColumn("First track"); - table.AddColumn("Last track"); - table.AddColumn("Start"); - table.AddColumn("End"); + table.AddColumn(Localization.Core.Title_Session); + table.AddColumn(Localization.Core.Title_First_track); + table.AddColumn(Localization.Core.Title_Last_track); + table.AddColumn(Localization.Core.Title_Start); + table.AddColumn(Localization.Core.Title_End); foreach(Session session in opticalImage.Sessions) table.AddRow(session.Sequence.ToString(), session.StartTrack.ToString(), @@ -835,17 +841,17 @@ public static class ImageInfo var table = new Table { - Title = new TableTitle("Image tracks") + Title = new TableTitle(Localization.Core.Title_Image_tracks) }; - table.AddColumn("Track"); - table.AddColumn("Type"); - table.AddColumn("Bps"); - table.AddColumn("Raw bps"); - table.AddColumn("Subchannel"); - table.AddColumn("Pregap"); - table.AddColumn("Start"); - table.AddColumn("End"); + table.AddColumn(Localization.Core.Title_Track); + table.AddColumn(Localization.Core.Title_Type_for_media); + table.AddColumn(Localization.Core.Title_Bps); + table.AddColumn(Localization.Core.Title_Raw_bps); + table.AddColumn(Localization.Core.Title_Subchannel); + table.AddColumn(Localization.Core.Title_Pregap); + table.AddColumn(Localization.Core.Title_Start); + table.AddColumn(Localization.Core.Title_End); foreach(Track track in opticalImage.Tracks) table.AddRow(track.Sequence.ToString(), track.Type.ToString(), track.BytesPerSector.ToString(), @@ -861,12 +867,12 @@ public static class ImageInfo table = new Table { - Title = new TableTitle("Image indexes") + Title = new TableTitle(Localization.Core.Title_Image_indexes) }; - table.AddColumn("Track"); - table.AddColumn("Index"); - table.AddColumn("Start"); + table.AddColumn(Localization.Core.Title_Track); + table.AddColumn(Localization.Core.Title_Index); + table.AddColumn(Localization.Core.Title_Start); foreach(Track track in opticalImage.Tracks) foreach(KeyValuePair index in track.Indexes) diff --git a/Aaru.Core/Logging/DumpLog.cs b/Aaru.Core/Logging/DumpLog.cs index 13fd112a2..f866ffa09 100644 --- a/Aaru.Core/Logging/DumpLog.cs +++ b/Aaru.Core/Logging/DumpLog.cs @@ -57,7 +57,7 @@ public sealed class DumpLog _logSw = new StreamWriter(outputFile, true); - _logSw.WriteLine("Start logging at {0}", DateTime.Now); + _logSw.WriteLine(Localization.Core.Start_logging_at_0, DateTime.Now); PlatformID platId = DetectOS.GetRealPlatformID(); string platVer = DetectOS.GetVersion(); @@ -66,7 +66,7 @@ public sealed class DumpLog Attribute.GetCustomAttribute(typeof(DumpLog).Assembly, typeof(AssemblyInformationalVersionAttribute)) as AssemblyInformationalVersionAttribute; - _logSw.WriteLine("################# System information #################"); + _logSw.WriteLine(Localization.Core.System_information); _logSw.WriteLine("{0} {1} ({2}-bit)", DetectOS.GetPlatformName(platId, platVer), platVer, Environment.Is64BitOperatingSystem ? 64 : 32); @@ -80,12 +80,14 @@ public sealed class DumpLog _logSw.WriteLine(); - _logSw.WriteLine("################# Program information ################"); + _logSw.WriteLine(Localization.Core.Program_information); _logSw.WriteLine("Aaru {0}", assemblyVersion?.InformationalVersion); - _logSw.WriteLine("Running in {0}-bit", Environment.Is64BitProcess ? 64 : 32); - _logSw.WriteLine("Running as superuser: {0}", DetectOS.IsAdmin ? "Yes" : "No"); + _logSw.WriteLine(Localization.Core.Running_in_0_bit, Environment.Is64BitProcess ? 64 : 32); + + _logSw.WriteLine(DetectOS.IsAdmin ? Localization.Core.Running_as_superuser_Yes + : Localization.Core.Running_as_superuser_No); #if DEBUG - _logSw.WriteLine("DEBUG version"); + _logSw.WriteLine(Localization.Core.DEBUG_version); #endif if(@private) { @@ -107,72 +109,75 @@ public sealed class DumpLog } } - _logSw.WriteLine("Command line: {0}", string.Join(" ", args)); + _logSw.WriteLine(Localization.Core.Command_line_0, string.Join(" ", args)); } else - _logSw.WriteLine("Command line: {0}", Environment.CommandLine); + _logSw.WriteLine(Localization.Core.Command_line_0, Environment.CommandLine); _logSw.WriteLine(); if(dev is Aaru.Devices.Remote.Device remoteDev) { - _logSw.WriteLine("################# Remote information #################"); - _logSw.WriteLine("Server: {0}", remoteDev.RemoteApplication); - _logSw.WriteLine("Version: {0}", remoteDev.RemoteVersion); + _logSw.WriteLine(Localization.Core.Remote_information); + _logSw.WriteLine(Localization.Core.Server_0, remoteDev.RemoteApplication); + _logSw.WriteLine(Localization.Core.Version_0, remoteDev.RemoteVersion); - _logSw.WriteLine("Operating system: {0} {1}", remoteDev.RemoteOperatingSystem, + _logSw.WriteLine(Localization.Core.Operating_system_0_1, remoteDev.RemoteOperatingSystem, remoteDev.RemoteOperatingSystemVersion); - _logSw.WriteLine("Architecture: {0}", remoteDev.RemoteArchitecture); - _logSw.WriteLine("Protocol version: {0}", remoteDev.RemoteProtocolVersion); - _logSw.WriteLine("Running as superuser: {0}", remoteDev.IsAdmin ? "Yes" : "No"); - _logSw.WriteLine("######################################################"); + _logSw.WriteLine(Localization.Core.Architecture_0, remoteDev.RemoteArchitecture); + _logSw.WriteLine(Localization.Core.Protocol_version_0, remoteDev.RemoteProtocolVersion); + + _logSw.WriteLine(DetectOS.IsAdmin ? Localization.Core.Running_as_superuser_Yes + : Localization.Core.Running_as_superuser_No); + + _logSw.WriteLine(Localization.Core.Log_section_separator); } - _logSw.WriteLine("################# Device information #################"); - _logSw.WriteLine("Manufacturer: {0}", dev.Manufacturer); - _logSw.WriteLine("Model: {0}", dev.Model); - _logSw.WriteLine("Firmware revision: {0}", dev.FirmwareRevision); + _logSw.WriteLine(Localization.Core.Device_information); + _logSw.WriteLine(Localization.Core.Manufacturer_0, dev.Manufacturer); + _logSw.WriteLine(Localization.Core.Model_0, dev.Model); + _logSw.WriteLine(Localization.Core.Firmware_revision_0, dev.FirmwareRevision); if(!@private) - _logSw.WriteLine("Serial number: {0}", dev.Serial); + _logSw.WriteLine(Localization.Core.Serial_number_0, dev.Serial); - _logSw.WriteLine("Removable device: {0}", dev.IsRemovable); - _logSw.WriteLine("Device type: {0}", dev.Type); - _logSw.WriteLine("CompactFlash device: {0}", dev.IsCompactFlash); - _logSw.WriteLine("PCMCIA device: {0}", dev.IsPcmcia); - _logSw.WriteLine("USB device: {0}", dev.IsUsb); + _logSw.WriteLine(Localization.Core.Removable_device_0, dev.IsRemovable); + _logSw.WriteLine(Localization.Core.Device_type_0, dev.Type); + _logSw.WriteLine(Localization.Core.CompactFlash_device_0, dev.IsCompactFlash); + _logSw.WriteLine(Localization.Core.PCMCIA_device_0, dev.IsPcmcia); + _logSw.WriteLine(Localization.Core.USB_device_0, dev.IsUsb); if(dev.IsUsb) { - _logSw.WriteLine("USB manufacturer: {0}", dev.UsbManufacturerString); - _logSw.WriteLine("USB product: {0}", dev.UsbProductString); + _logSw.WriteLine(Localization.Core.USB_manufacturer_0, dev.UsbManufacturerString); + _logSw.WriteLine(Localization.Core.USB_product_0, dev.UsbProductString); if(!@private) - _logSw.WriteLine("USB serial: {0}", dev.UsbSerialString); + _logSw.WriteLine(Localization.Core.USB_serial_0, dev.UsbSerialString); - _logSw.WriteLine("USB vendor ID: {0:X4}h", dev.UsbVendorId); - _logSw.WriteLine("USB product ID: {0:X4}h", dev.UsbProductId); + _logSw.WriteLine(Localization.Core.USB_vendor_ID_0, dev.UsbVendorId); + _logSw.WriteLine(Localization.Core.USB_product_ID_0, dev.UsbProductId); } - _logSw.WriteLine("FireWire device: {0}", dev.IsFireWire); + _logSw.WriteLine(Localization.Core.FireWire_device_0, dev.IsFireWire); if(dev.IsFireWire) { - _logSw.WriteLine("FireWire vendor: {0}", dev.FireWireVendorName); - _logSw.WriteLine("FireWire model: {0}", dev.FireWireModelName); + _logSw.WriteLine(Localization.Core.FireWire_vendor_0, dev.FireWireVendorName); + _logSw.WriteLine(Localization.Core.FireWire_model_0, dev.FireWireModelName); if(!@private) - _logSw.WriteLine("FireWire GUID: 0x{0:X16}", dev.FireWireGuid); + _logSw.WriteLine(Localization.Core.FireWire_GUID_0, dev.FireWireGuid); - _logSw.WriteLine("FireWire vendor ID: 0x{0:X8}", dev.FireWireVendor); - _logSw.WriteLine("FireWire product ID: 0x{0:X8}", dev.FireWireModel); + _logSw.WriteLine(Localization.Core.FireWire_vendor_ID_0, dev.FireWireVendor); + _logSw.WriteLine(Localization.Core.FireWire_product_ID_0, dev.FireWireModel); } - _logSw.WriteLine("######################################################"); + _logSw.WriteLine(Localization.Core.Log_section_separator); _logSw.WriteLine(); - _logSw.WriteLine("################ Dumping progress log ################"); + _logSw.WriteLine(Localization.Core.Dumping_progress_log); _logSw.Flush(); } @@ -192,8 +197,8 @@ public sealed class DumpLog /// Finishes and closes the dump log public void Close() { - _logSw?.WriteLine("######################################################"); - _logSw?.WriteLine("End logging at {0}", DateTime.Now); + _logSw?.WriteLine(Localization.Core.Log_section_separator); + _logSw?.WriteLine(Localization.Core.End_logging_at_0, DateTime.Now); _logSw?.Close(); } } \ No newline at end of file diff --git a/Aaru.Core/Logging/ErrorLog.cs b/Aaru.Core/Logging/ErrorLog.cs index e8df17dc7..f80735ad2 100644 --- a/Aaru.Core/Logging/ErrorLog.cs +++ b/Aaru.Core/Logging/ErrorLog.cs @@ -49,16 +49,16 @@ public sealed class ErrorLog _logSw = new StreamWriter(outputFile, true); - _logSw.WriteLine("Start error logging at {0}", DateTime.Now); - _logSw.WriteLine("######################################################"); + _logSw.WriteLine(Localization.Core.Start_error_logging_at_0, DateTime.Now); + _logSw.WriteLine(Localization.Core.Log_section_separator); _logSw.Flush(); } /// Finishes and closes the error log public void Close() { - _logSw.WriteLine("######################################################"); - _logSw.WriteLine("End logging at {0}", DateTime.Now); + _logSw.WriteLine(Localization.Core.Log_section_separator); + _logSw.WriteLine(Localization.Core.End_logging_at_0, DateTime.Now); _logSw.Close(); } @@ -71,7 +71,7 @@ public sealed class ErrorLog { if(osError) { - _logSw.WriteLine("ATA command {0} operating system error: {1}.", command, errno); + _logSw.WriteLine(Localization.Core.ATA_command_0_operating_system_error_1, command, errno); _logSw.Flush(); } else @@ -127,7 +127,7 @@ public sealed class ErrorLog if((registers.Error & 0x80) == 0x80) error.Add("BBK"); - _logSw.WriteLine("ATA command {0} error: status = {1}, error = {2}.", command, string.Join(' ', status), + _logSw.WriteLine(Localization.Core.ATA_command_0_error_status_1_error_2, command, string.Join(' ', status), string.Join(' ', error)); _logSw.Flush(); @@ -146,7 +146,7 @@ public sealed class ErrorLog { if(osError) { - _logSw.WriteLine("ATA reading C/H/S {0}/{1}/{2} operating system error: {3}.", cylinder, head, sector, + _logSw.WriteLine(Localization.Core.ATA_reading_CHS_0_1_2_operating_system_error_3, cylinder, head, sector, errno); _logSw.Flush(); @@ -204,7 +204,7 @@ public sealed class ErrorLog if((registers.Error & 0x80) == 0x80) error.Add("BBK"); - _logSw.WriteLine("ATA reading C/H/S {0}/{1}/{2} error: status = {3}, error = {4}.", cylinder, head, sector, + _logSw.WriteLine(Localization.Core.ATA_reading_CHS_0_1_2_error_status_3_error_4, cylinder, head, sector, string.Join(' ', status), string.Join(' ', error)); _logSw.Flush(); @@ -220,7 +220,7 @@ public sealed class ErrorLog { if(osError) { - _logSw.WriteLine("ATA reading LBA {0} operating system error: {1}.", block, errno); + _logSw.WriteLine(Localization.Core.ATA_reading_LBA_0_operating_system_error_1, block, errno); _logSw.Flush(); } else @@ -276,8 +276,8 @@ public sealed class ErrorLog if((registers.Error & 0x80) == 0x80) error.Add("BBK"); - _logSw.WriteLine("ATA reading LBA {0} error: status = {1}, error = {2}.", block, string.Join(' ', status), - string.Join(' ', error)); + _logSw.WriteLine(Localization.Core.ATA_reading_LBA_0_error_status_1_error_2, block, + string.Join(' ', status), string.Join(' ', error)); _logSw.Flush(); } @@ -292,7 +292,7 @@ public sealed class ErrorLog { if(osError) { - _logSw.WriteLine("ATA reading LBA {0} operating system error: {1}.", block, errno); + _logSw.WriteLine(Localization.Core.ATA_reading_LBA_0_operating_system_error_1, block, errno); _logSw.Flush(); } else @@ -348,8 +348,8 @@ public sealed class ErrorLog if((registers.Error & 0x80) == 0x80) error.Add("BBK"); - _logSw.WriteLine("ATA reading LBA {0} error: status = {1}, error = {2}.", block, string.Join(' ', status), - string.Join(' ', error)); + _logSw.WriteLine(Localization.Core.ATA_reading_LBA_0_error_status_1_error_2, block, + string.Join(' ', status), string.Join(' ', error)); _logSw.Flush(); } @@ -364,7 +364,7 @@ public sealed class ErrorLog { if(osError) { - _logSw.WriteLine("SCSI command {0} operating system error: {1}.", command, errno); + _logSw.WriteLine(Localization.Core.SCSI_command_0_operating_system_error_1, command, errno); _logSw.Flush(); return; @@ -386,12 +386,12 @@ public sealed class ErrorLog prettySense = prettySense.Replace("\n", " - "); - _logSw.WriteLine("SCSI command {0} error: SENSE {1} ASC {2:X2}h ASCQ {3:X2}h, {4}, {5}.", command, + _logSw.WriteLine(Localization.Core.SCSI_command_0_error_SENSE_1_ASC_2_ASCQ_3_4_5, command, decodedSense.Value.SenseKey, decodedSense.Value.ASC, decodedSense.Value.ASCQ, hexSense, prettySense); } else - _logSw.WriteLine("SCSI command {0} error: SENSE {1} ASC {2:X2}h ASCQ {3:X2}h, {4}.", command, + _logSw.WriteLine(Localization.Core.SCSI_command_0_error_SENSE_1_ASC_2_ASCQ_3_4, command, decodedSense.Value.SenseKey, decodedSense.Value.ASC, decodedSense.Value.ASCQ, hexSense); } @@ -407,10 +407,10 @@ public sealed class ErrorLog prettySense = prettySense.Replace("\n", " - "); - _logSw.WriteLine("SCSI command {0} error: {1}, {2}.", command, hexSense, prettySense); + _logSw.WriteLine(Localization.Core.SCSI_command_0_error_1_2, command, hexSense, prettySense); } else - _logSw.WriteLine("SCSI command {0} error: {1}", command, hexSense); + _logSw.WriteLine(Localization.Core.SCSI_command_0_error_1, command, hexSense); } _logSw.Flush(); @@ -425,7 +425,7 @@ public sealed class ErrorLog { if(osError) { - _logSw.WriteLine("SCSI reading LBA {0} operating system error: {1}.", block, errno); + _logSw.WriteLine(Localization.Core.SCSI_reading_LBA_0_operating_system_error_1, block, errno); _logSw.Flush(); if(senseBuffer is null || @@ -450,12 +450,12 @@ public sealed class ErrorLog prettySense = prettySense.Replace("\n", " - "); - _logSw.WriteLine("SCSI reading LBA {0} error: SENSE {1} ASC {2:X2}h ASCQ {3:X2}h, {4}, {5}.", block, + _logSw.WriteLine(Localization.Core.SCSI_reading_LBA_0_error_SENSE_1_ASC_2_ASCQ_3_4_5, block, decodedSense.Value.SenseKey, decodedSense.Value.ASC, decodedSense.Value.ASCQ, hexSense, prettySense); } else - _logSw.WriteLine("SCSI reading LBA {0} error: SENSE {1} ASC {2:X2}h ASCQ {3:X2}h, {4}.", block, + _logSw.WriteLine(Localization.Core.SCSI_reading_LBA_0_error_SENSE_1_ASC_2_ASCQ_3_4, block, decodedSense.Value.SenseKey, decodedSense.Value.ASC, decodedSense.Value.ASCQ, hexSense); } @@ -471,10 +471,10 @@ public sealed class ErrorLog prettySense = prettySense.Replace("\n", " - "); - _logSw.WriteLine("SCSI reading LBA {0} error: {1}, {2}.", block, hexSense, prettySense); + _logSw.WriteLine(Localization.Core.SCSI_reading_LBA_0_error_1_2, block, hexSense, prettySense); } else - _logSw.WriteLine("SCSI reading LBA {0} error: {1}", block, hexSense); + _logSw.WriteLine(Localization.Core.SCSI_reading_LBA_0_error_1, block, hexSense); } _logSw.Flush(); @@ -489,14 +489,14 @@ public sealed class ErrorLog { if(osError) { - _logSw.WriteLine("SD/MMC command {0} operating system error: {1}.", command, errno); + _logSw.WriteLine(Localization.Core.SD_MMC_command_0_operating_system_error_1, command, errno); _logSw.Flush(); return; } // TODO: Decode response - _logSw.WriteLine("SD/MMC command {0} error: {1}", command, + _logSw.WriteLine(Localization.Core.SD_MMC_command_0_error_1, command, string.Join(" - ", response.Select(r => $"0x{r:X8}"))); _logSw.Flush(); @@ -513,16 +513,16 @@ public sealed class ErrorLog { if(osError) { - _logSw.WriteLine("SD/MMC reading LBA {0} ({1}-addressed) operating system error: {2}.", block, - byteAddressed ? "byte" : "block", errno); + _logSw.WriteLine(byteAddressed ? Localization.Core.SD_MMC_reading_LBA_0_byte_addressed_operating_system_error_1 : Localization.Core.SD_MMC_reading_LBA_0_block_addressed_operating_system_error_1, + block, errno); _logSw.Flush(); return; } - _logSw.WriteLine("SD/MMC reading LBA {0} ({1}-addressed) error: {2}", block, byteAddressed ? "byte" : "block", - string.Join(" - ", response.Select(r => $"0x{r:X8}"))); + _logSw.WriteLine(byteAddressed ? Localization.Core.SD_MMC_reading_LBA_0_byte_addressed_error_1 : Localization.Core.SD_MMC_reading_LBA_0_block_addressed_error_1, + block, string.Join(" - ", response.Select(r => $"0x{r:X8}"))); throw new NotImplementedException(); } diff --git a/Aaru.Core/Logging/SubchannelLog.cs b/Aaru.Core/Logging/SubchannelLog.cs index c847641ee..5cc9ee064 100644 --- a/Aaru.Core/Logging/SubchannelLog.cs +++ b/Aaru.Core/Logging/SubchannelLog.cs @@ -51,16 +51,16 @@ public class SubchannelLog _logSw = new StreamWriter(outputFile, true); - _logSw.WriteLine("Start subchannel logging at {0}", DateTime.Now); - _logSw.WriteLine("######################################################"); + _logSw.WriteLine(Localization.Core.Start_subchannel_logging_at_0, DateTime.Now); + _logSw.WriteLine(Localization.Core.Log_section_separator); _logSw.Flush(); } /// Finishes and closes the subchannel log public void Close() { - _logSw.WriteLine("######################################################"); - _logSw.WriteLine("End logging at {0}", DateTime.Now); + _logSw.WriteLine(Localization.Core.Log_section_separator); + _logSw.WriteLine(Localization.Core.End_logging_at_0, DateTime.Now); _logSw.Close(); } @@ -75,7 +75,7 @@ public class SubchannelLog { if(subchannel.Length / SUB_SIZE != blocks) { - _logSw.WriteLine("Data length is invalid!"); + _logSw.WriteLine(Localization.Core.Data_length_is_invalid); _logSw.Flush(); return; @@ -216,9 +216,9 @@ public class SubchannelLog rwEmpty); if(generated) - prettyQ += " (GENERATED)"; + prettyQ += Localization.Core._GENERATED; else if(@fixed) - prettyQ += " (FIXED)"; + prettyQ += Localization.Core._FIXED; _logSw.WriteLine(prettyQ); } @@ -228,53 +228,63 @@ public class SubchannelLog /// Logs message indicating the P subchannel has been fixed /// LBA fix belongs to - public void WritePFix(long lba) => WriteMessageWithPosition(lba, "fixed P subchannel using weight average."); + public void WritePFix(long lba) => + WriteMessageWithPosition(lba, Localization.Core.fixed_P_subchannel_using_weight_average); /// Logs message indicating the R-W subchannels have been fixed /// LBA fix belongs to - public void WriteRwFix(long lba) => WriteMessageWithPosition(lba, "fixed R-W subchannels writing empty data."); + public void WriteRwFix(long lba) => + WriteMessageWithPosition(lba, Localization.Core.fixed_R_W_subchannels_writing_empty_data); /// Logs message indicating the ADR field of the Q subchannel has been fixed /// LBA fix belongs to - public void WriteQAdrFix(long lba) => WriteMessageWithPosition(lba, "fixed Q subchannel with correct ADR."); + public void WriteQAdrFix(long lba) => + WriteMessageWithPosition(lba, Localization.Core.fixed_Q_subchannel_with_correct_ADR); /// Logs message indicating the CONTROL field of the Q subchannel has been fixed /// LBA fix belongs to - public void WriteQCtrlFix(long lba) => WriteMessageWithPosition(lba, "fixed Q subchannel with correct CONTROL."); + public void WriteQCtrlFix(long lba) => + WriteMessageWithPosition(lba, Localization.Core.fixed_Q_subchannel_with_correct_CONTROL); /// Logs message indicating the ZERO field of the Q subchannel has been fixed /// LBA fix belongs to - public void WriteQZeroFix(long lba) => WriteMessageWithPosition(lba, "fixed Q subchannel with correct ZERO."); + public void WriteQZeroFix(long lba) => + WriteMessageWithPosition(lba, Localization.Core.fixed_Q_subchannel_with_correct_ZERO); /// Logs message indicating the TNO field of the Q subchannel has been fixed /// LBA fix belongs to - public void WriteQTnoFix(long lba) => WriteMessageWithPosition(lba, "fixed Q subchannel with correct TNO."); + public void WriteQTnoFix(long lba) => + WriteMessageWithPosition(lba, Localization.Core.fixed_Q_subchannel_with_correct_TNO); /// Logs message indicating the INDEX field of the Q subchannel has been fixed /// LBA fix belongs to - public void WriteQIndexFix(long lba) => WriteMessageWithPosition(lba, "fixed Q subchannel with correct INDEX."); + public void WriteQIndexFix(long lba) => + WriteMessageWithPosition(lba, Localization.Core.fixed_Q_subchannel_with_correct_INDEX); /// Logs message indicating the relative position of the Q subchannel has been fixed /// LBA fix belongs to public void WriteQRelPosFix(long lba) => - WriteMessageWithPosition(lba, "fixed Q subchannel with correct RELATIVE POSITION."); + WriteMessageWithPosition(lba, Localization.Core.fixed_Q_subchannel_with_correct_RELATIVE_POSITION); /// Logs message indicating the absolute position of the Q subchannel has been fixed /// LBA fix belongs to public void WriteQAbsPosFix(long lba) => - WriteMessageWithPosition(lba, "fixed Q subchannel with correct ABSOLUTE POSITION."); + WriteMessageWithPosition(lba, Localization.Core.fixed_Q_subchannel_with_correct_ABSOLUTE_POSITION); /// Logs message indicating the CRC of the Q subchannel has been fixed /// LBA fix belongs to - public void WriteQCrcFix(long lba) => WriteMessageWithPosition(lba, "fixed Q subchannel with correct CRC."); + public void WriteQCrcFix(long lba) => + WriteMessageWithPosition(lba, Localization.Core.fixed_Q_subchannel_with_correct_CRC); /// Logs message indicating the the Q subchannel has been fixed with a known good MCN /// LBA fix belongs to - public void WriteQMcnFix(long lba) => WriteMessageWithPosition(lba, "fixed Q subchannel with known good MCN."); + public void WriteQMcnFix(long lba) => + WriteMessageWithPosition(lba, Localization.Core.fixed_Q_subchannel_with_known_good_MCN); /// Logs message indicating the the Q subchannel has been fixed with a known good ISRC /// LBA fix belongs to - public void WriteQIsrcFix(long lba) => WriteMessageWithPosition(lba, "fixed Q subchannel with known good ISRC."); + public void WriteQIsrcFix(long lba) => + WriteMessageWithPosition(lba, Localization.Core.fixed_Q_subchannel_with_known_good_ISRC); /// Logs a message with a specified position /// LBA position @@ -284,9 +294,9 @@ public class SubchannelLog long minute = (lba + 150) / 4500; long second = (lba + 150) % 4500 / 75; long frame = (lba + 150) % 4500 % 75; - string area = lba < 0 ? "Lead-In" : "Program"; + string area = lba < 0 ? Localization.Core.Lead_In : Localization.Core.Program; - _logSw.WriteLine($"{minute:D2}:{second:D2}:{frame:D2} - LBA {lba,6}: {area} area, {message}"); + _logSw.WriteLine(Localization.Core._0_1_2_LBA_3_4_area_5, minute, second, frame, lba, area, message); _logSw.Flush(); } } \ No newline at end of file diff --git a/Aaru.Core/Media/CompactDisc.cs b/Aaru.Core/Media/CompactDisc.cs index fa2dc7415..ed468eeb7 100644 --- a/Aaru.Core/Media/CompactDisc.cs +++ b/Aaru.Core/Media/CompactDisc.cs @@ -343,8 +343,11 @@ public static class CompactDisc if(!isrcs.ContainsKey(currentTrackNumber)) { - dumpLog?.WriteLine($"Found new ISRC {isrc} for track {currentTrackNumber}."); - updateStatus?.Invoke($"Found new ISRC {isrc} for track {currentTrackNumber}."); + dumpLog?.WriteLine(string.Format(Localization.Core.Found_new_ISRC_0_for_track_1, isrc, + currentTrackNumber)); + + updateStatus?.Invoke(string.Format(Localization.Core.Found_new_ISRC_0_for_track_1, isrc, + currentTrackNumber)); isrcs[currentTrackNumber] = isrc; } @@ -355,11 +358,11 @@ public static class CompactDisc if(currentTrack?.Sequence == currentTrackNumber) { - dumpLog?.WriteLine($"ISRC for track {currentTrackNumber} changed from { - isrcs[currentTrackNumber]} to {isrc}."); + dumpLog?.WriteLine(string.Format(Localization.Core.ISRC_for_track_0_changed_from_1_to_2, + currentTrackNumber, isrcs[currentTrackNumber], isrc)); - updateStatus?.Invoke($"ISRC for track {currentTrackNumber} changed from { - isrcs[currentTrackNumber]} to {isrc}."); + updateStatus?.Invoke(string.Format(Localization.Core.ISRC_for_track_0_changed_from_1_to_2, + currentTrackNumber, isrcs[currentTrackNumber], isrc)); isrcs[currentTrackNumber] = isrc; } @@ -381,13 +384,13 @@ public static class CompactDisc if(mcn is null) { - dumpLog?.WriteLine($"Found new MCN {newMcn}."); - updateStatus?.Invoke($"Found new MCN {newMcn}."); + dumpLog?.WriteLine(string.Format(Localization.Core.Found_new_MCN_0, newMcn)); + updateStatus?.Invoke(string.Format(Localization.Core.Found_new_MCN_0, newMcn)); } else if(mcn != newMcn) { - dumpLog?.WriteLine($"MCN changed from {mcn} to {newMcn}."); - updateStatus?.Invoke($"MCN changed from {mcn} to {newMcn}."); + dumpLog?.WriteLine(string.Format(Localization.Core.MCN_changed_from_0_to_1, mcn, newMcn)); + updateStatus?.Invoke(string.Format(Localization.Core.MCN_changed_from_0_to_1, mcn, newMcn)); } mcn = newMcn; @@ -438,9 +441,12 @@ public static class CompactDisc tracks[i - 1].EndSector >= tracks[i].StartSector) tracks[i - 1].EndSector = tracks[i].StartSector - 1; - dumpLog?.WriteLine($"Pregap for track {trackNo} set to {tracks[i].Pregap} sectors."); + dumpLog?.WriteLine(string.Format(Localization.Core.Pregap_for_track_0_set_to_1_sectors, + trackNo, tracks[i].Pregap)); - updateStatus?.Invoke($"Pregap for track {trackNo} set to {tracks[i].Pregap} sectors."); + updateStatus?. + Invoke(string.Format(Localization.Core.Pregap_for_track_0_set_to_1_sectors, trackNo, + tracks[i].Pregap)); for(int p = 0; p < dif; p++) newPregapSectors.Add(tracks[i].StartSector + (ulong)p); @@ -460,9 +466,11 @@ public static class CompactDisc tracks[i - 1].EndSector >= tracks[i].StartSector) tracks[i - 1].EndSector = tracks[i].StartSector - 1; - dumpLog?.WriteLine($"Pregap for track {trackNo} set to {tracks[i].Pregap} sectors."); + dumpLog?.WriteLine(string.Format(Localization.Core.Pregap_for_track_0_set_to_1_sectors, + trackNo, tracks[i].Pregap)); - updateStatus?.Invoke($"Pregap for track {trackNo} set to {tracks[i].Pregap} sectors."); + updateStatus?.Invoke(string.Format(Localization.Core.Pregap_for_track_0_set_to_1_sectors, + trackNo, tracks[i].Pregap)); for(int p = 0; p < (int)(tracks[i].Pregap - oldPregap); p++) newPregapSectors.Add(tracks[i].StartSector + (ulong)p); @@ -489,8 +497,11 @@ public static class CompactDisc aPos >= tracks[i].Indexes[q[2]]) continue; - dumpLog?.WriteLine($"Setting index {q[2]} for track {trackNo} to LBA {aPos}."); - updateStatus?.Invoke($"Setting index {q[2]} for track {trackNo} to LBA {aPos}."); + dumpLog?.WriteLine(string.Format(Localization.Core.Setting_index_0_for_track_1_to_LBA_2, q[2], + trackNo, aPos)); + + updateStatus?.Invoke(string.Format(Localization.Core.Setting_index_0_for_track_1_to_LBA_2, q[2], + trackNo, aPos)); tracks[i].Indexes[q[2]] = aPos; @@ -1639,7 +1650,9 @@ public static class CompactDisc else index = 0; - updateProgress?.Invoke($"Generating subchannel for sector {sector}...", sector, (long)blocks); + updateProgress?.Invoke(string.Format(Localization.Core.Generating_subchannel_for_sector_0, sector), sector, + (long)blocks); + dumpLog?.WriteLine($"Generating subchannel for sector {sector}."); byte[] sub = Subchannel.Generate(sector, track?.Sequence ?? 0, (int)pregap, (int)trackStart, flags, index); diff --git a/Aaru.Core/Media/Detection/MMC.cs b/Aaru.Core/Media/Detection/MMC.cs index 2ceae6ddf..d24a1b278 100644 --- a/Aaru.Core/Media/Detection/MMC.cs +++ b/Aaru.Core/Media/Detection/MMC.cs @@ -314,7 +314,7 @@ public static class MMC { Features.SeparatedFeatures ftr = Features.Separate(cmdBuf); - AaruConsole.DebugWriteLine("Media-Info command", "GET CONFIGURATION current profile is {0:X4}h", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.GET_CONFIGURATION_current_profile_is_0, ftr.CurrentProfile); switch(ftr.CurrentProfile) @@ -472,12 +472,14 @@ public static class MMC switch(a0Track.PSEC) { case 0x10: - AaruConsole.DebugWriteLine("Media detection", "TOC says disc type is CD-i."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.TOC_says_disc_type_is_CD_i); mediaType = MediaType.CDI; break; case 0x20: - AaruConsole.DebugWriteLine("Media detection", "TOC says disc type is CD-ROM XA."); + AaruConsole.DebugWriteLine("Media detection", + Localization.Core.TOC_says_disc_type_is_CD_ROM_XA); + mediaType = MediaType.CDROMXA; break; @@ -516,14 +518,15 @@ public static class MMC { case true when hasAudioTrack && allFirstSessionTracksAreAudio && sessions == 2: AaruConsole.DebugWriteLine("Media detection", - "Disc has audio and data tracks, two sessions, and all data tracks are in second session, setting as CD+."); + Localization.Core. + Disc_has_audio_and_data_two_sessions_all_data_second_CD_Plus); mediaType = MediaType.CDPLUS; break; case false when hasAudioTrack && sessions == 1: AaruConsole.DebugWriteLine("Media detection", - "Disc has only audio tracks in a single session, setting as CD Digital Audio."); + Localization.Core.Disc_has_only_audio_in_a_session_CD_Digital_Audio); mediaType = MediaType.CDDA; @@ -535,7 +538,7 @@ public static class MMC sessions == 1) { AaruConsole.DebugWriteLine("Media detection", - "Disc has only data tracks in a single session, setting as CD-ROM."); + Localization.Core.Disc_has_only_data_in_a_session_CD_ROM); mediaType = MediaType.CDROM; } @@ -544,8 +547,7 @@ public static class MMC !hasDataTrack && sessions == 1) { - AaruConsole.DebugWriteLine("Media detection", - "Disc has video tracks in a single session, setting as CD Video."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.Disc_has_video_tracks_CD_Video); mediaType = MediaType.CDV; } @@ -586,7 +588,7 @@ public static class MMC continue; AaruConsole.DebugWriteLine("Media detection", - "Disc has a mode 2 data track, setting as CD-ROM XA."); + Localization.Core.Disc_has_a_mode_two_data_track_CD_ROM_XA); mediaType = MediaType.CDROMXA; @@ -702,7 +704,7 @@ public static class MMC mediaType = MediaType.CDIREADY; AaruConsole.DebugWriteLine("Media detection", - "Disc has a hidden CD-i track in track 1's pregap, setting as CD-i Ready."); + Localization.Core.Disc_has_hidden_CD_i_pregap_CD_i_Ready); return; } @@ -757,7 +759,7 @@ public static class MMC mediaType = MediaType.CDIREADY; AaruConsole.DebugWriteLine("Media detection", - "Disc has a hidden CD-i track in track 1's pregap, setting as CD-i Ready."); + Localization.Core.Disc_has_hidden_CD_i_pregap_CD_i_Ready); return; } @@ -1373,7 +1375,7 @@ public static class MMC mediaType = MediaType.PCD; AaruConsole.DebugWriteLine("Media detection", - "Found Photo CD description file, setting disc type to Photo CD."); + Localization.Core.Found_Photo_CD_description_file); return; } @@ -1425,8 +1427,7 @@ public static class MMC { mediaType = MediaType.MEGACD; - AaruConsole.DebugWriteLine("Media detection", - "Found Mega/Sega CD IP.BIN, setting disc type to Mega CD."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.Found_Mega_Sega_CD_IP_BIN); return; } @@ -1435,8 +1436,7 @@ public static class MMC { mediaType = MediaType.SATURNCD; - AaruConsole.DebugWriteLine("Media detection", - "Found Sega Saturn IP.BIN, setting disc type to Saturn CD."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.Found_Sega_Saturn_IP_BIN); return; } @@ -1446,8 +1446,7 @@ public static class MMC { mediaType = MediaType.GDROM; - AaruConsole.DebugWriteLine("Media detection", - "Found Sega Dreamcast IP.BIN, setting disc type to GD-ROM."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.Found_Sega_Dreamcast_IP_BIN); return; } @@ -1462,7 +1461,8 @@ public static class MMC string ps2BootSectorsHash = Sha256Context.Data(ps2BootSectors, out _); - AaruConsole.DebugWriteLine("Media-info Command", "PlayStation 2 boot sectors SHA256: {0}", + AaruConsole.DebugWriteLine("Media-info Command", + Localization.Core.PlayStation_2_boot_sectors_SHA256_0, ps2BootSectorsHash); if(ps2BootSectorsHash is PS2_PAL_HASH or PS2_NTSC_HASH or PS2_JAPANESE_HASH) @@ -1470,7 +1470,7 @@ public static class MMC mediaType = MediaType.PS2CD; AaruConsole.DebugWriteLine("Media detection", - "Found Sony PlayStation 2 boot sectors, setting disc type to PS2 CD."); + Localization.Core.Found_Sony_PlayStation_2_boot_sectors); goto hasPs2CdBoot; } @@ -1485,8 +1485,7 @@ public static class MMC { mediaType = MediaType.ThreeDO; - AaruConsole.DebugWriteLine("Media detection", - "Found Opera filesystem, setting disc type to 3DO."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.Found_Opera_filesystem); return; } @@ -1495,8 +1494,7 @@ public static class MMC { mediaType = MediaType.FMTOWNS; - AaruConsole.DebugWriteLine("Media detection", - "Found FM-Towns boot, setting disc type to FM-Towns."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.Found_FM_Towns_boot); return; } @@ -1516,8 +1514,7 @@ public static class MMC { mediaType = MediaType.Playdia; - AaruConsole.DebugWriteLine("Media detection", - "Found Playdia copyright, setting disc type to Playdia."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.Found_Playdia_copyright); return; } @@ -1532,8 +1529,7 @@ public static class MMC { mediaType = MediaType.SuperCDROM2; - AaruConsole.DebugWriteLine("Media detection", - "Found PC-Engine CD signature, setting disc type to Super CD-ROM²."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.Found_PC_Engine_CD_signature); return; } @@ -1548,8 +1544,7 @@ public static class MMC { mediaType = MediaType.PCFX; - AaruConsole.DebugWriteLine("Media detection", - "Found PC-FX copyright, setting disc type to PC-FX."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.Found_PC_FX_copyright); return; } @@ -1568,8 +1563,7 @@ public static class MMC mediaType = MediaType.JaguarCD; - AaruConsole.DebugWriteLine("Media detection", - "Found Atari signature, setting disc type to Jaguar CD."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.Found_Atari_signature); break; } @@ -1585,7 +1579,7 @@ public static class MMC mediaType = MediaType.MilCD; AaruConsole.DebugWriteLine("Media detection", - "Found Sega Dreamcast IP.BIN on second session, setting disc type to MilCD."); + Localization.Core.Found_Sega_Dreamcast_IP_BIN_on_second_session); return; } @@ -1597,8 +1591,7 @@ public static class MMC { mediaType = MediaType.VideoNowColor; - AaruConsole.DebugWriteLine("Media detection", - "Found VideoNow! Color frame, setting disc type to VideoNow Color."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.Found_VideoNow_Color_frame); return; } @@ -1637,7 +1630,7 @@ public static class MMC mediaType = MediaType.CDEG; AaruConsole.DebugWriteLine("Media detection", - "Found enhanced graphics RW packet, setting disc type to CD+EG."); + Localization.Core.Found_enhanced_graphics_RW_packet); return; } @@ -1646,8 +1639,7 @@ public static class MMC { mediaType = MediaType.CDG; - AaruConsole.DebugWriteLine("Media detection", - "Found graphics RW packet, setting disc type to CD+G."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.Found_graphics_RW_packet); return; } @@ -1656,8 +1648,7 @@ public static class MMC { mediaType = MediaType.CDMIDI; - AaruConsole.DebugWriteLine("Media detection", - "Found MIDI RW packet, setting disc type to CD+MIDI."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.Found_MIDI_RW_packet); return; } @@ -1817,8 +1808,7 @@ public static class MMC { mediaType = MediaType.CD32; - AaruConsole.DebugWriteLine("Media detection", - "Found CD32.TM file in root, setting disc type to Amiga CD32."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.Found_CD32_TM_file_in_root); return; } @@ -1827,8 +1817,7 @@ public static class MMC { mediaType = MediaType.CDTV; - AaruConsole.DebugWriteLine("Media detection", - "Found CDTV.TM file in root, setting disc type to Commodore CDTV."); + AaruConsole.DebugWriteLine("Media detection", Localization.Core.Found_CDTV_TM_file_in_root); return; } @@ -1970,7 +1959,7 @@ public static class MMC mediaType = MediaType.NeoGeoCD; AaruConsole.DebugWriteLine("Media detection", - "Found correct IPL.TXT file in root, setting disc type to Neo Geo CD."); + Localization.Core.Found_correct_IPL_TXT_file_in_root); return; } @@ -2052,21 +2041,21 @@ public static class MMC mediaType = MediaType.VCD; AaruConsole.DebugWriteLine("Media detection", - "Found Video CD description file, setting disc type to Video CD."); + Localization.Core.Found_Video_CD_description_file); return; case "SUPERVCD": mediaType = MediaType.SVCD; AaruConsole.DebugWriteLine("Media detection", - "Found Super Video CD description file, setting disc type to Super Video CD."); + Localization.Core.Found_Super_Video_CD_description_file); break; case "HQ-VCD": mediaType = MediaType.CVD; AaruConsole.DebugWriteLine("Media detection", - "Found China Video Disc description file, setting disc type to China Video Disc."); + Localization.Core.Found_China_Video_Disc_description_file); break; } @@ -2148,7 +2137,7 @@ public static class MMC mediaType = MediaType.PCD; AaruConsole.DebugWriteLine("Media detection", - "Found Photo CD description file, setting disc type to Photo CD."); + Localization.Core.Found_Photo_CD_description_file); return; } @@ -2241,7 +2230,7 @@ public static class MMC mediaType = MediaType.PS1CD; AaruConsole.DebugWriteLine("Media detection", - "Found correct SYSTEM.CNF file in root pointing to existing file in root, setting disc type to PlayStation CD."); + Localization.Core.Found_correct_SYSTEM_CNF_file_in_root_PS1); } if(ps2BootFile != null && @@ -2250,7 +2239,7 @@ public static class MMC mediaType = MediaType.PS2CD; AaruConsole.DebugWriteLine("Media detection", - "Found correct SYSTEM.CNF file in root pointing to existing file in root, setting disc type to PlayStation 2 CD."); + Localization.Core.Found_correct_SYSTEM_CNF_file_in_root_PS2); } } } @@ -2276,13 +2265,14 @@ public static class MMC string ps2BootSectorsHash = Sha256Context.Data(ps2BootSectors, out _); - AaruConsole.DebugWriteLine("Media-info Command", "PlayStation 2 boot sectors SHA256: {0}", + AaruConsole.DebugWriteLine("Media-info Command", + Localization.Core.PlayStation_2_boot_sectors_SHA256_0, ps2BootSectorsHash); if(ps2BootSectorsHash is PS2_PAL_HASH or PS2_NTSC_HASH or PS2_JAPANESE_HASH) { AaruConsole.DebugWriteLine("Media detection", - "Found Sony PlayStation 2 boot sectors, setting disc type to PS2 DVD."); + Localization.Core.Found_Sony_PlayStation_2_boot_sectors_DVD); mediaType = MediaType.PS2DVD; } @@ -2298,14 +2288,14 @@ public static class MMC { case MediaType.BDROM: AaruConsole.DebugWriteLine("Media detection", - "Found Sony PlayStation 3 boot sectors, setting disc type to PS3 Blu-ray."); + Localization.Core.Found_Sony_PlayStation_3_boot_sectors); mediaType = MediaType.PS3BD; break; case MediaType.DVDROM: AaruConsole.DebugWriteLine("Media detection", - "Found Sony PlayStation 3 boot sectors, setting disc type to PS3 DVD."); + Localization.Core.Found_Sony_PlayStation_3_boot_sectors_DVD); mediaType = MediaType.PS3DVD; @@ -2321,7 +2311,7 @@ public static class MMC mediaType = MediaType.PS4BD; AaruConsole.DebugWriteLine("Media detection", - "Found Sony PlayStation 4 boot sectors, setting disc type to PS4 Blu-ray."); + Localization.Core.Found_Sony_PlayStation_4_boot_sectors); } } @@ -2334,7 +2324,7 @@ public static class MMC { case "XG4": AaruConsole.DebugWriteLine("Media detection", - "Blu-ray type set to \"XG4\", setting disc type to Xbox One Disc (XGD4)."); + Localization.Core.Blu_ray_type_XG4_setting_disc_type_XGD4); mediaType = MediaType.XGD4; @@ -2352,14 +2342,14 @@ public static class MMC mediaType = MediaType.PS5BD; AaruConsole.DebugWriteLine("Media detection", - "Found Sony PlayStation 5 boot sectors, setting disc type to PS5 Ultra HD Blu-ray."); + Localization.Core.Found_Sony_PlayStation_5_boot_sectors); break; } } AaruConsole.DebugWriteLine("Media detection", - "Blu-ray type set to \"BDU\", setting disc type to Ultra HD Blu-ray."); + Localization.Core.Blu_ray_type_BDU_setting_disc_type_UHD); mediaType = MediaType.UHDBD; diff --git a/Aaru.Core/Media/Info/CompactDisc.cs b/Aaru.Core/Media/Info/CompactDisc.cs index 61807c044..ffe212a1e 100644 --- a/Aaru.Core/Media/Info/CompactDisc.cs +++ b/Aaru.Core/Media/Info/CompactDisc.cs @@ -326,13 +326,16 @@ public static class CompactDisc if(videoNowColorFrame is null) { - dumpLog?.WriteLine("Could not find VideoNow Color frame offset, dump may not be correct."); + dumpLog?.WriteLine(Localization.Core.Could_not_find_VideoNow_Color_frame_offset); updateStatus?.Invoke("Could not find VideoNow Color frame offset, dump may not be correct."); } else { combinedOffset = MMC.GetVideoNowColorOffset(videoNowColorFrame); - dumpLog?.WriteLine($"VideoNow Color frame is offset {combinedOffset} bytes."); + + dumpLog?.WriteLine(string.Format(Localization.Core.VideoNow_Color_frame_is_offset_0_bytes, + combinedOffset)); + updateStatus?.Invoke($"VideoNow Color frame is offset {combinedOffset} bytes."); } } diff --git a/Aaru.Core/Media/Info/ScsiInfo.cs b/Aaru.Core/Media/Info/ScsiInfo.cs index 25da801be..8d17af529 100644 --- a/Aaru.Core/Media/Info/ScsiInfo.cs +++ b/Aaru.Core/Media/Info/ScsiInfo.cs @@ -114,7 +114,7 @@ public sealed class ScsiInfo if(sense) { - AaruConsole.ErrorWriteLine("Please insert media in drive"); + AaruConsole.ErrorWriteLine(Localization.Core.Please_insert_media_in_drive); return; } @@ -139,7 +139,7 @@ public sealed class ScsiInfo if(sense) { - AaruConsole.ErrorWriteLine("Error testing unit was ready:\n{0}", + AaruConsole.ErrorWriteLine(Localization.Core.Error_testing_unit_was_ready_0, Sense.PrettifySense(senseBuf)); return; @@ -148,7 +148,7 @@ public sealed class ScsiInfo break; } default: - AaruConsole.ErrorWriteLine("Error testing unit was ready:\n{0}", + AaruConsole.ErrorWriteLine(Localization.Core.Error_testing_unit_was_ready_0, Sense.PrettifySense(senseBuf)); return; @@ -156,7 +156,7 @@ public sealed class ScsiInfo } else { - AaruConsole.ErrorWriteLine("Unknown testing unit was ready."); + AaruConsole.ErrorWriteLine(Localization.Core.Unknown_testing_unit_was_ready); return; } @@ -215,7 +215,7 @@ public sealed class ScsiInfo Blocks == 0) if(dev.ScsiType != PeripheralDeviceTypes.MultiMediaDevice) { - AaruConsole.ErrorWriteLine("Unable to get media capacity"); + AaruConsole.ErrorWriteLine(Localization.Core.Unable_to_get_media_capacity); AaruConsole.ErrorWriteLine("{0}", Sense.PrettifySense(senseBuf)); } @@ -312,7 +312,8 @@ public sealed class ScsiInfo MmcConfiguration = cmdBuf; Features.SeparatedFeatures ftr = Features.Separate(cmdBuf); - AaruConsole.DebugWriteLine("Media-Info command", "GET CONFIGURATION current profile is {0:X4}h", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.GET_CONFIGURATION_current_profile_is_0, ftr.CurrentProfile); switch(ftr.CurrentProfile) @@ -458,7 +459,8 @@ public sealed class ScsiInfo MmcDiscStructureFormat.RecognizedFormatLayers, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Recognized Format Layers\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_DISC_STRUCTURE_Recognized_Format_Layers_0, Sense.PrettifySense(senseBuf)); else RecognizedFormatLayers = cmdBuf; @@ -467,7 +469,8 @@ public sealed class ScsiInfo MmcDiscStructureFormat.WriteProtectionStatus, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Write Protection Status\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_DISC_STRUCTURE_Write_Protection_Status_0, Sense.PrettifySense(senseBuf)); else WriteProtectionStatus = cmdBuf; @@ -491,7 +494,7 @@ public sealed class ScsiInfo MmcDiscStructureFormat.PhysicalInformation, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: PFI\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_PFI_0, Sense.PrettifySense(senseBuf)); else { @@ -527,7 +530,7 @@ public sealed class ScsiInfo out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: DMI\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_DMI_0, Sense.PrettifySense(senseBuf)); else { @@ -554,7 +557,7 @@ public sealed class ScsiInfo MmcDiscStructureFormat.CopyrightInformation, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: CMI\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_CMI_0, Sense.PrettifySense(senseBuf)); else DvdCmi = cmdBuf; @@ -571,7 +574,7 @@ public sealed class ScsiInfo MmcDiscStructureFormat.BurstCuttingArea, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: BCA\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_BCA_0, Sense.PrettifySense(senseBuf)); else DvdBca = cmdBuf; @@ -580,7 +583,8 @@ public sealed class ScsiInfo MmcDiscStructureFormat.DvdAacs, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: DVD AACS\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_DISC_STRUCTURE_DVD_AACS_0, Sense.PrettifySense(senseBuf)); else DvdAacs = cmdBuf; @@ -595,7 +599,7 @@ public sealed class ScsiInfo MmcDiscStructureFormat.DvdramDds, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: DDS\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_DDS_0, Sense.PrettifySense(senseBuf)); else DvdRamDds = cmdBuf; @@ -604,7 +608,8 @@ public sealed class ScsiInfo MmcDiscStructureFormat.DvdramMediumStatus, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Medium Status\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_DISC_STRUCTURE_Medium_Status_0, Sense.PrettifySense(senseBuf)); else DvdRamCartridgeStatus = cmdBuf; @@ -614,7 +619,7 @@ public sealed class ScsiInfo out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: SAI\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_SAI_0, Sense.PrettifySense(senseBuf)); else DvdRamSpareArea = cmdBuf; @@ -630,7 +635,7 @@ public sealed class ScsiInfo if(sense) AaruConsole.DebugWriteLine("Media-Info command", - "READ DISC STRUCTURE: Last-Out Border RMD\n{0}", + Localization.Core.READ_DISC_STRUCTURE_Last_Out_Border_RMD_0, Sense.PrettifySense(senseBuf)); else LastBorderOutRmd = cmdBuf; @@ -648,7 +653,7 @@ public sealed class ScsiInfo MmcDiscStructureFormat.DiscKey, dvdDecrypt.Agid, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Disc Key\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_Disc_Key_0, Sense.PrettifySense(senseBuf)); else DvdDiscKey = cmdBuf; @@ -658,7 +663,7 @@ public sealed class ScsiInfo dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Sector CMI\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_Sector_CMI_0, Sense.PrettifySense(senseBuf)); else DvdSectorCmi = cmdBuf; @@ -721,7 +726,8 @@ public sealed class ScsiInfo MmcDiscStructureFormat.PreRecordedInfo, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Pre-Recorded Info\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_DISC_STRUCTURE_Pre_Recorded_Info_0, Sense.PrettifySense(senseBuf)); else { @@ -744,7 +750,8 @@ public sealed class ScsiInfo MmcDiscStructureFormat.DvdrMediaIdentifier, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: DVD-R Media ID\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_DISC_STRUCTURE_DVD_R_Media_ID_0, Sense.PrettifySense(senseBuf)); else DvdrMediaIdentifier = cmdBuf; @@ -754,7 +761,8 @@ public sealed class ScsiInfo out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: DVD-R PFI\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_DISC_STRUCTURE_DVD_R_PFI_0, Sense.PrettifySense(senseBuf)); else { @@ -775,7 +783,7 @@ public sealed class ScsiInfo MmcDiscStructureFormat.Adip, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: ADIP\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_ADIP_0, Sense.PrettifySense(senseBuf)); else DvdPlusAdip = cmdBuf; @@ -784,7 +792,7 @@ public sealed class ScsiInfo MmcDiscStructureFormat.Dcb, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: DCB\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_DCB_0, Sense.PrettifySense(senseBuf)); else DvdPlusDcb = cmdBuf; @@ -799,7 +807,8 @@ public sealed class ScsiInfo out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: HD DVD CMI\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_DISC_STRUCTURE_HD_DVD_CMI_0, Sense.PrettifySense(senseBuf)); else HddvdCopyrightInformation = cmdBuf; @@ -818,7 +827,7 @@ public sealed class ScsiInfo if(sense) AaruConsole.DebugWriteLine("Media-Info command", - "READ DISC STRUCTURE: HD DVD-R Medium Status\n{0}", + Localization.Core.READ_DISC_STRUCTURE_HD_DVD_R_Medium_Status, Sense.PrettifySense(senseBuf)); else HddvdrMediumStatus = cmdBuf; @@ -827,7 +836,8 @@ public sealed class ScsiInfo MmcDiscStructureFormat.HddvdrLastRmd, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Last RMD\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_DISC_STRUCTURE_Last_RMD_0, Sense.PrettifySense(senseBuf)); else HddvdrLastRmd = cmdBuf; @@ -842,7 +852,8 @@ public sealed class ScsiInfo MmcDiscStructureFormat.DvdrLayerCapacity, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Layer Capacity\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_DISC_STRUCTURE_Layer_Capacity_0, Sense.PrettifySense(senseBuf)); else DvdrLayerCapacity = cmdBuf; @@ -860,7 +871,8 @@ public sealed class ScsiInfo MmcDiscStructureFormat.MiddleZoneStart, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Middle Zone Start\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_DISC_STRUCTURE_Middle_Zone_Start_0, Sense.PrettifySense(senseBuf)); else DvdrDlMiddleZoneStart = cmdBuf; @@ -869,7 +881,8 @@ public sealed class ScsiInfo MmcDiscStructureFormat.JumpIntervalSize, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Jump Interval Size\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_DISC_STRUCTURE_Jump_Interval_Size_0, Sense.PrettifySense(senseBuf)); else DvdrDlJumpIntervalSize = cmdBuf; @@ -880,7 +893,7 @@ public sealed class ScsiInfo if(sense) AaruConsole.DebugWriteLine("Media-Info command", - "READ DISC STRUCTURE: Manual Layer Jump Start LBA\n{0}", + Localization.Core.READ_DISC_STRUCTURE_Manual_Layer_Jump_Start_LBA_0, Sense.PrettifySense(senseBuf)); else DvdrDlManualLayerJumpStartLba = cmdBuf; @@ -889,7 +902,8 @@ public sealed class ScsiInfo MmcDiscStructureFormat.RemapAnchorPoint, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Remap Anchor Point\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_DISC_STRUCTURE_Remap_Anchor_Point_0, Sense.PrettifySense(senseBuf)); else DvdrDlRemapAnchorPoint = cmdBuf; @@ -908,7 +922,7 @@ public sealed class ScsiInfo MmcDiscStructureFormat.DiscInformation, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: DI\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_DI_0, Sense.PrettifySense(senseBuf)); else BlurayDiscInformation = cmdBuf; @@ -917,7 +931,7 @@ public sealed class ScsiInfo MmcDiscStructureFormat.Pac, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: PAC\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_PAC_0, Sense.PrettifySense(senseBuf)); else BlurayPac = cmdBuf; @@ -935,7 +949,7 @@ public sealed class ScsiInfo MmcDiscStructureFormat.BdBurstCuttingArea, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: BCA\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_BCA_0, Sense.PrettifySense(senseBuf)); else BlurayBurstCuttingArea = cmdBuf; @@ -952,7 +966,7 @@ public sealed class ScsiInfo MmcDiscStructureFormat.BdDds, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: DDS\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_DDS_0, Sense.PrettifySense(senseBuf)); else BlurayDds = cmdBuf; @@ -961,7 +975,8 @@ public sealed class ScsiInfo MmcDiscStructureFormat.CartridgeStatus, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Cartridge Status\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_DISC_STRUCTURE_Cartridge_Status_0, Sense.PrettifySense(senseBuf)); else BlurayCartridgeStatus = cmdBuf; @@ -980,7 +995,8 @@ public sealed class ScsiInfo MmcDiscStructureFormat.RawDfl, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Raw DFL\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_DISC_STRUCTURE_Raw_DFL_0, Sense.PrettifySense(senseBuf)); else BlurayRawDfl = cmdBuf; @@ -989,7 +1005,7 @@ public sealed class ScsiInfo MmcDiscInformationDataTypes.TrackResources, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC INFORMATION 001b\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_001b_0, Sense.PrettifySense(senseBuf)); else BlurayTrackResources = cmdBuf; @@ -998,7 +1014,7 @@ public sealed class ScsiInfo dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC INFORMATION 010b\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_010b_0, Sense.PrettifySense(senseBuf)); else BlurayPowResources = cmdBuf; @@ -1017,7 +1033,7 @@ public sealed class ScsiInfo bool tocSense = dev.ReadTocPmaAtip(out cmdBuf, out senseBuf, false, 0, 0, dev.Timeout, out _); if(tocSense) - AaruConsole.DebugWriteLine("Media-Info command", "READ TOC/PMA/ATIP: TOC\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_TOC_PMA_ATIP_TOC_0, Sense.PrettifySense(senseBuf)); else { @@ -1033,7 +1049,7 @@ public sealed class ScsiInfo sense = dev.ReadAtip(out cmdBuf, out senseBuf, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ TOC/PMA/ATIP: ATIP\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_TOC_PMA_ATIP_ATIP_0, Sense.PrettifySense(senseBuf)); else { @@ -1054,7 +1070,8 @@ public sealed class ScsiInfo sense = dev.ReadSessionInfo(out cmdBuf, out senseBuf, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ TOC/PMA/ATIP: Session info\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_TOC_PMA_ATIP_Session_Info_0, Sense.PrettifySense(senseBuf)); else if(cmdBuf.Length > 4) { @@ -1071,7 +1088,8 @@ public sealed class ScsiInfo sense = dev.ReadRawToc(out cmdBuf, out senseBuf, 1, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ TOC/PMA/ATIP: Raw TOC\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_TOC_PMA_ATIP_Raw_TOC_0, Sense.PrettifySense(senseBuf)); else if(cmdBuf.Length > 4) { @@ -1083,7 +1101,7 @@ public sealed class ScsiInfo sense = dev.ReadPma(out cmdBuf, out senseBuf, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ TOC/PMA/ATIP: PMA\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_TOC_PMA_ATIP_PMA_0, Sense.PrettifySense(senseBuf)); else if(cmdBuf.Length > 4) Pma = cmdBuf; @@ -1091,7 +1109,8 @@ public sealed class ScsiInfo sense = dev.ReadCdText(out cmdBuf, out senseBuf, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ TOC/PMA/ATIP: CD-TEXT\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", + Localization.Core.READ_TOC_PMA_ATIP_CD_TEXT_0, Sense.PrettifySense(senseBuf)); else if(cmdBuf.Length > 4) { @@ -1134,7 +1153,7 @@ public sealed class ScsiInfo MmcDiscStructureFormat.PhysicalInformation, 0, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: PFI\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_PFI_0, Sense.PrettifySense(senseBuf)); else { @@ -1161,7 +1180,7 @@ public sealed class ScsiInfo out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: DMI\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_STRUCTURE_DMI_0, Sense.PrettifySense(senseBuf)); else DvdDmi = cmdBuf; @@ -1172,7 +1191,7 @@ public sealed class ScsiInfo sense = dev.ReadMediaSerialNumber(out cmdBuf, out senseBuf, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ MEDIA SERIAL NUMBER\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_MEDIA_SERIAL_NUMBER_0, Sense.PrettifySense(senseBuf)); else { @@ -1198,7 +1217,7 @@ public sealed class ScsiInfo sense = dev.KreonExtractSs(out cmdBuf, out senseBuf, dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "KREON EXTRACT SS:\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.KREON_EXTRACT_SS_0, Sense.PrettifySense(senseBuf)); else XboxSecuritySector = cmdBuf; @@ -1206,12 +1225,14 @@ public sealed class ScsiInfo DecodedXboxSecuritySector = SS.Decode(cmdBuf); // Get video partition size - AaruConsole.DebugWriteLine("Dump-media command", "Getting video partition size"); + AaruConsole.DebugWriteLine("Dump-media command", + Localization.Core.Getting_video_partition_size); + sense = dev.KreonLock(out senseBuf, dev.Timeout, out _); if(sense) { - AaruConsole.ErrorWriteLine("Cannot lock drive, not continuing."); + AaruConsole.ErrorWriteLine(Localization.Core.Cannot_lock_drive_not_continuing); break; } @@ -1220,7 +1241,7 @@ public sealed class ScsiInfo if(sense) { - AaruConsole.ErrorWriteLine("Cannot get disc capacity."); + AaruConsole.ErrorWriteLine(Localization.Core.Cannot_get_disc_capacity); break; } @@ -1233,13 +1254,13 @@ public sealed class ScsiInfo if(sense) { - AaruConsole.ErrorWriteLine("Cannot get PFI."); + AaruConsole.ErrorWriteLine(Localization.Core.Cannot_get_PFI); break; } - AaruConsole.DebugWriteLine("Dump-media command", "Video partition total size: {0} sectors", - totalSize); + AaruConsole.DebugWriteLine("Dump-media command", + Localization.Core.Video_partition_total_size_0_sectors, totalSize); ulong l0Video = PFI.Decode(cmdBuf, MediaType).Value.Layer0EndPSN - PFI.Decode(cmdBuf, MediaType).Value.DataAreaStartPSN + 1; @@ -1247,12 +1268,12 @@ public sealed class ScsiInfo ulong l1Video = totalSize - l0Video + 1; // Get game partition size - AaruConsole.DebugWriteLine("Dump-media command", "Getting game partition size"); + AaruConsole.DebugWriteLine("Dump-media command", Localization.Core.Getting_game_partition_size); sense = dev.KreonUnlockXtreme(out senseBuf, dev.Timeout, out _); if(sense) { - AaruConsole.ErrorWriteLine("Cannot unlock drive, not continuing."); + AaruConsole.ErrorWriteLine(Localization.Core.Cannot_unlock_drive_not_continuing); break; } @@ -1261,7 +1282,7 @@ public sealed class ScsiInfo if(sense) { - AaruConsole.ErrorWriteLine("Cannot get disc capacity."); + AaruConsole.ErrorWriteLine(Localization.Core.Cannot_get_disc_capacity); return; } @@ -1270,16 +1291,16 @@ public sealed class ScsiInfo ((ulong)((cmdBuf[0] << 24) + (cmdBuf[1] << 16) + (cmdBuf[2] << 8) + cmdBuf[3]) & 0xFFFFFFFF) + 1; - AaruConsole.DebugWriteLine("Dump-media command", "Game partition total size: {0} sectors", - gameSize); + AaruConsole.DebugWriteLine("Dump-media command", + Localization.Core.Game_partition_total_size_0_sectors, gameSize); // Get middle zone size - AaruConsole.DebugWriteLine("Dump-media command", "Getting middle zone size"); + AaruConsole.DebugWriteLine("Dump-media command", Localization.Core.Getting_middle_zone_size); sense = dev.KreonUnlockWxripper(out senseBuf, dev.Timeout, out _); if(sense) { - AaruConsole.ErrorWriteLine("Cannot unlock drive, not continuing."); + AaruConsole.ErrorWriteLine(Localization.Core.Cannot_unlock_drive_not_continuing); break; } @@ -1288,7 +1309,7 @@ public sealed class ScsiInfo if(sense) { - AaruConsole.ErrorWriteLine("Cannot get disc capacity."); + AaruConsole.ErrorWriteLine(Localization.Core.Cannot_get_disc_capacity); break; } @@ -1301,12 +1322,13 @@ public sealed class ScsiInfo if(sense) { - AaruConsole.ErrorWriteLine("Cannot get PFI."); + AaruConsole.ErrorWriteLine(Localization.Core.Cannot_get_PFI); break; } - AaruConsole.DebugWriteLine("Dump-media command", "Unlocked total size: {0} sectors", totalSize); + AaruConsole.DebugWriteLine("Dump-media command", + Localization.Core.Unlocked_total_size_0_sectors, totalSize); ulong middleZone = totalSize - (PFI.Decode(cmdBuf, MediaType).Value.Layer0EndPSN - @@ -1355,7 +1377,7 @@ public sealed class ScsiInfo dev.Timeout, out _); if(sense) - AaruConsole.DebugWriteLine("Media-Info command", "READ DISC INFORMATION 000b\n{0}", + AaruConsole.DebugWriteLine("Media-Info command", Localization.Core.READ_DISC_INFORMATION_000b_0, Sense.PrettifySense(senseBuf)); else { diff --git a/Aaru.Core/Partitions.cs b/Aaru.Core/Partitions.cs index 9fe3055d7..299011e5b 100644 --- a/Aaru.Core/Partitions.cs +++ b/Aaru.Core/Partitions.cs @@ -64,7 +64,7 @@ public static class Partitions { foundPartitions.AddRange(partitions); - AaruConsole.DebugWriteLine("Partitions", "Found {0} @ {1}", partitionPlugin.Name, + AaruConsole.DebugWriteLine("Partitions", Localization.Core.Found_0_at_1, partitionPlugin.Name, tapeFile.FirstBlock); } @@ -80,7 +80,7 @@ public static class Partitions { foundPartitions.AddRange(partitions); - AaruConsole.DebugWriteLine("Partitions", "Found {0} @ {1}", partitionPlugin.Name, + AaruConsole.DebugWriteLine("Partitions", Localization.Core.Found_0_at_1, partitionPlugin.Name, imagePartition.Start); } @@ -94,7 +94,7 @@ public static class Partitions if(partitionPlugin.GetInformation(image, out List partitions, 0)) { foundPartitions.AddRange(partitions); - AaruConsole.DebugWriteLine("Partitions", "Found {0} @ 0", partitionPlugin.Name); + AaruConsole.DebugWriteLine("Partitions", Localization.Core.Found_0_at_zero, partitionPlugin.Name); } checkedLocations.Add(0); @@ -114,13 +114,13 @@ public static class Partitions foreach(IPartition partitionPlugin in plugins.PartPluginsList.Values) { - AaruConsole.DebugWriteLine("Partitions", "Trying {0} @ {1}", partitionPlugin.Name, + AaruConsole.DebugWriteLine("Partitions", Localization.Core.Trying_0_at_1, partitionPlugin.Name, foundPartitions[0].Start); if(!partitionPlugin.GetInformation(image, out List partitions, foundPartitions[0].Start)) continue; - AaruConsole.DebugWriteLine("Partitions", "Found {0} @ {1}", partitionPlugin.Name, + AaruConsole.DebugWriteLine("Partitions", Localization.Core.Found_0_at_1, partitionPlugin.Name, foundPartitions[0].Start); children.AddRange(partitions); @@ -128,7 +128,7 @@ public static class Partitions checkedLocations.Add(foundPartitions[0].Start); - AaruConsole.DebugWriteLine("Partitions", "Got {0} children", children.Count); + AaruConsole.DebugWriteLine("Partitions", Localization.Core.Got_0_children, children.Count); if(children.Count > 0) { @@ -146,8 +146,8 @@ public static class Partitions foundPartitions.RemoveAt(0); } - AaruConsole.DebugWriteLine("Partitions", "Got {0} parents", foundPartitions.Count); - AaruConsole.DebugWriteLine("Partitions", "Got {0} partitions", childPartitions.Count); + AaruConsole.DebugWriteLine("Partitions", Localization.Core.Got_0_parents, foundPartitions.Count); + AaruConsole.DebugWriteLine("Partitions", Localization.Core.Got_0_partitions, childPartitions.Count); } // Be sure that device partitions are not excluded if not mapped by any scheme... diff --git a/Aaru.Core/PrintScsiModePages.cs b/Aaru.Core/PrintScsiModePages.cs index c9365983d..beda6dd23 100644 --- a/Aaru.Core/PrintScsiModePages.cs +++ b/Aaru.Core/PrintScsiModePages.cs @@ -64,10 +64,10 @@ public static class PrintScsiModePages else { if(page.Subpage != 0) - AaruConsole.WriteLine("Found unknown vendor mode page {0:X2}h subpage {1:X2}h", page.Page, - page.Subpage); + AaruConsole.WriteLine(Localization.Core.Found_unknown_vendor_mode_page_0_subpage_1, + page.Page, page.Subpage); else - AaruConsole.WriteLine("Found unknown vendor mode page {0:X2}h", page.Page); + AaruConsole.WriteLine(Localization.Core.Found_unknown_vendor_mode_page_0, page.Page); } break; @@ -316,7 +316,7 @@ public static class PrintScsiModePages case 0x30: { if(Modes.IsAppleModePage_30(page.PageResponse)) - AaruConsole.WriteLine("Drive identifies as Apple OEM drive"); + AaruConsole.WriteLine(Localization.Core.Drive_identifies_as_Apple_OEM_drive); else goto default; @@ -365,10 +365,10 @@ public static class PrintScsiModePages default: { if(page.Subpage != 0) - AaruConsole.WriteLine("Found unknown mode page {0:X2}h subpage {1:X2}h", page.Page, + AaruConsole.WriteLine(Localization.Core.Found_unknown_mode_page_0_subpage_1, page.Page, page.Subpage); else - AaruConsole.WriteLine("Found unknown mode page {0:X2}h", page.Page); + AaruConsole.WriteLine(Localization.Core.Found_unknown_mode_page_0, page.Page); break; } diff --git a/Aaru.Core/Remote.cs b/Aaru.Core/Remote.cs index 571a26afe..3194dea92 100644 --- a/Aaru.Core/Remote.cs +++ b/Aaru.Core/Remote.cs @@ -63,7 +63,7 @@ public static class Remote { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Uploading device report").IsIndeterminate(); + ctx.AddTask(Localization.Core.Uploading_device_report).IsIndeterminate(); try { @@ -167,12 +167,12 @@ public static class Remote if(lastUpdate == 0) { create = true; - AaruConsole.WriteLine("Creating main database"); + AaruConsole.WriteLine(Localization.Core.Creating_main_database); } else { - AaruConsole.WriteLine("Updating main database"); - AaruConsole.WriteLine("Last update: {0}", latest); + AaruConsole.WriteLine(Localization.Core.Updating_main_database); + AaruConsole.WriteLine(Localization.Core.Last_update_0, latest); } DateTime updateStart = DateTime.UtcNow; @@ -186,7 +186,8 @@ public static class Remote if(!response.IsSuccessStatusCode) { - AaruConsole.ErrorWriteLine("Error {0} when trying to get updated entities.", response.StatusCode); + AaruConsole.ErrorWriteLine(Localization.Core.Error_0_when_trying_to_get_updated_entities, + response.StatusCode); return; } @@ -201,7 +202,7 @@ public static class Remote Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()). Start(ctx => { - ProgressTask task = ctx.AddTask("Adding USB vendors"); + ProgressTask task = ctx.AddTask(Localization.Core.Adding_USB_vendors); task.MaxValue = sync.UsbVendors.Count; foreach(UsbVendorDto vendor in sync.UsbVendors) @@ -211,13 +212,13 @@ public static class Remote } }); - AaruConsole.WriteLine("Added {0} usb vendors", sync.UsbVendors.Count); + AaruConsole.WriteLine(Localization.Core.Added_0_usb_vendors, sync.UsbVendors.Count); AnsiConsole.Progress().AutoClear(true).HideCompleted(true). Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()). Start(ctx => { - ProgressTask task = ctx.AddTask("Adding USB products"); + ProgressTask task = ctx.AddTask(Localization.Core.Adding_USB_products); task.MaxValue = sync.UsbProducts.Count; foreach(UsbProductDto product in sync.UsbProducts) @@ -229,13 +230,13 @@ public static class Remote } }); - AaruConsole.WriteLine("Added {0} usb products", sync.UsbProducts.Count); + AaruConsole.WriteLine(Localization.Core.Added_0_usb_products, sync.UsbProducts.Count); AnsiConsole.Progress().AutoClear(true).HideCompleted(true). Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()). Start(ctx => { - ProgressTask task = ctx.AddTask("Adding CompactDisc read offsets"); + ProgressTask task = ctx.AddTask(Localization.Core.Adding_CompactDisc_read_offsets); task.MaxValue = sync.Offsets.Count; foreach(CdOffsetDto offset in sync.Offsets) @@ -249,13 +250,13 @@ public static class Remote } }); - AaruConsole.WriteLine("Added {0} CompactDisc read offsets", sync.Offsets.Count); + AaruConsole.WriteLine(Localization.Core.Added_0_CompactDisc_read_offsets, sync.Offsets.Count); AnsiConsole.Progress().AutoClear(true).HideCompleted(true). Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()). Start(ctx => { - ProgressTask task = ctx.AddTask("Adding known devices"); + ProgressTask task = ctx.AddTask(Localization.Core.Adding_known_devices); task.MaxValue = sync.Devices.Count; foreach(DeviceDto device in sync.Devices) @@ -270,13 +271,13 @@ public static class Remote } }); - AaruConsole.WriteLine("Added {0} known devices", sync.Devices.Count); + AaruConsole.WriteLine(Localization.Core.Added_0_known_devices, sync.Devices.Count); AnsiConsole.Progress().AutoClear(true).HideCompleted(true). Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()). Start(ctx => { - ProgressTask task = ctx.AddTask("Adding known iNES/NES 2.0 headers"); + ProgressTask task = ctx.AddTask(Localization.Core.Adding_known_iNES_NES_2_0_headers); task.MaxValue = sync.NesHeaders?.Count ?? 0; foreach(NesHeaderDto header in sync.NesHeaders ?? new List()) @@ -304,7 +305,8 @@ public static class Remote } }); - AaruConsole.WriteLine("Added {0} known iNES/NES 2.0 headers", sync.NesHeaders?.Count ?? 0); + AaruConsole.WriteLine(Localization.Core.Added_0_known_iNES_NES_2_0_headers, + sync.NesHeaders?.Count ?? 0); } else { @@ -323,7 +325,7 @@ public static class Remote Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()). Start(ctx => { - ProgressTask task = ctx.AddTask("Updating USB vendors"); + ProgressTask task = ctx.AddTask(Localization.Core.Updating_USB_vendors); task.MaxValue = sync.UsbVendors.Count; foreach(UsbVendorDto vendor in sync.UsbVendors) @@ -347,14 +349,14 @@ public static class Remote } }); - AaruConsole.WriteLine("Added {0} USB vendors", addedVendors); - AaruConsole.WriteLine("Modified {0} USB vendors", modifiedVendors); + AaruConsole.WriteLine(Localization.Core.Added_0_usb_vendors, addedVendors); + AaruConsole.WriteLine(Localization.Core.Modified_0_USB_vendors, modifiedVendors); AnsiConsole.Progress().AutoClear(true).HideCompleted(true). Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()). Start(ctx => { - ProgressTask task = ctx.AddTask("Updating USB products"); + ProgressTask task = ctx.AddTask(Localization.Core.Updating_USB_products); task.MaxValue = sync.UsbVendors.Count; foreach(UsbProductDto product in sync.UsbProducts) @@ -382,14 +384,14 @@ public static class Remote } }); - AaruConsole.WriteLine("Added {0} USB products", addedProducts); - AaruConsole.WriteLine("Modified {0} USB products", modifiedProducts); + AaruConsole.WriteLine(Localization.Core.Added_0_usb_products, addedProducts); + AaruConsole.WriteLine(Localization.Core.Modified_0_USB_products, modifiedProducts); AnsiConsole.Progress().AutoClear(true).HideCompleted(true). Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()). Start(ctx => { - ProgressTask task = ctx.AddTask("Updating CompactDisc read offsets"); + ProgressTask task = ctx.AddTask(Localization.Core.Updating_CompactDisc_read_offsets); task.MaxValue = sync.Offsets.Count; foreach(CdOffsetDto offset in sync.Offsets) @@ -420,14 +422,14 @@ public static class Remote } }); - AaruConsole.WriteLine("Added {0} CompactDisc read offsets", addedOffsets); - AaruConsole.WriteLine("Modified {0} CompactDisc read offsets", modifiedOffsets); + AaruConsole.WriteLine(Localization.Core.Added_0_CompactDisc_read_offsets, addedOffsets); + AaruConsole.WriteLine(Localization.Core.Modified_0_CompactDisc_read_offsets, modifiedOffsets); AnsiConsole.Progress().AutoClear(true).HideCompleted(true). Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()). Start(ctx => { - ProgressTask task = ctx.AddTask("Updating known devices"); + ProgressTask task = ctx.AddTask(Localization.Core.Updating_known_devices); task.MaxValue = sync.Offsets.Count; foreach(DeviceDto device in sync.Devices) @@ -464,14 +466,14 @@ public static class Remote } }); - AaruConsole.WriteLine("Added {0} known devices", addedDevices); - AaruConsole.WriteLine("Modified {0} known devices", modifiedDevices); + AaruConsole.WriteLine(Localization.Core.Added_0_known_devices, addedDevices); + AaruConsole.WriteLine(Localization.Core.Modified_0_known_devices, modifiedDevices); AnsiConsole.Progress().AutoClear(true).HideCompleted(true). Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()). Start(ctx => { - ProgressTask task = ctx.AddTask("Updating known iNES/NES 2.0 headers"); + ProgressTask task = ctx.AddTask(Localization.Core.Updating_known_iNES_NES_2_0_headers); task.MaxValue = sync.Offsets.Count; sync.NesHeaders ??= new List(); @@ -535,19 +537,19 @@ public static class Remote } }); - AaruConsole.WriteLine("Added {0} known iNES/NES 2.0 headers", addedNesHeaders); - AaruConsole.WriteLine("Modified {0} known iNES/NES 2.0 headers", modifiedNesHeaders); + AaruConsole.WriteLine(Localization.Core.Added_0_known_iNES_NES_2_0_headers, addedNesHeaders); + AaruConsole.WriteLine(Localization.Core.Modified_0_known_iNES_NES_2_0_headers, modifiedNesHeaders); } } catch(Exception ex) { - AaruConsole.ErrorWriteLine("Exception {0} when updating database.", ex); + AaruConsole.ErrorWriteLine(Localization.Core.Exception_0_when_updating_database, ex); } finally { Spectre.ProgressSingleSpinner(ctx => { - ctx.AddTask("Saving changes...").IsIndeterminate(); + ctx.AddTask(Localization.Core.Saving_changes).IsIndeterminate(); mctx.SaveChanges(); }); } diff --git a/Aaru.Core/Sidecar/BlockMedia.cs b/Aaru.Core/Sidecar/BlockMedia.cs index a3b8fb5a5..b1e11e451 100644 --- a/Aaru.Core/Sidecar/BlockMedia.cs +++ b/Aaru.Core/Sidecar/BlockMedia.cs @@ -101,7 +101,7 @@ public sealed partial class Sidecar sidecar.BlockMedia[0].Sequence.TotalMedia = 1; } - UpdateStatus("Hashing media tags..."); + UpdateStatus(Localization.Core.Hashing_media_tags); ErrorNumber errno; byte[] buffer; @@ -387,7 +387,7 @@ public sealed partial class Sidecar sidecar.BlockMedia[0].ContentChecksums = sidecar.BlockMedia[0].Checksums; else { - UpdateStatus("Hashing sectors..."); + UpdateStatus(Localization.Core.Hashing_sectors); var contentChkWorker = new Checksum(); @@ -417,13 +417,13 @@ public sealed partial class Sidecar if(errno != ErrorNumber.NoError) { - UpdateStatus($"Error {errno} reading sector {doneSectors}"); + UpdateStatus(string.Format(Localization.Core.Error_0_reading_sector_1, errno, doneSectors)); EndProgress2(); return; } - UpdateProgress2("Hashing sector {0} of {1}", (long)doneSectors, (long)sectors); + UpdateProgress2(Localization.Core.Hashing_sector_0_of_1, (long)doneSectors, (long)sectors); doneSectors += sectorsToRead; } else @@ -432,13 +432,13 @@ public sealed partial class Sidecar if(errno != ErrorNumber.NoError) { - UpdateStatus($"Error {errno} reading sector {doneSectors}"); + UpdateStatus(string.Format(Localization.Core.Error_0_reading_sector_1, errno, doneSectors)); EndProgress2(); return; } - UpdateProgress2("Hashing sector {0} of {1}", (long)doneSectors, (long)sectors); + UpdateProgress2(Localization.Core.Hashing_sector_0_of_1, (long)doneSectors, (long)sectors); doneSectors += sectors - doneSectors; } @@ -486,7 +486,7 @@ public sealed partial class Sidecar thisPartition.Checksums = sidecar.BlockMedia[0].ContentChecksums; else { - UpdateStatus($"Hashing partition {tapePartition.Number}..."); + UpdateStatus(string.Format(Localization.Core.Hashing_partition_0, tapePartition.Number)); if(_aborted) return; @@ -520,15 +520,16 @@ public sealed partial class Sidecar if(errno != ErrorNumber.NoError) { - AaruConsole.ErrorWriteLine($"Error {errno} reading sector { - tapePartition.FirstBlock + doneSectors}"); + AaruConsole.ErrorWriteLine(string.Format(Localization.Core.Error_0_reading_sector_1, + errno, + tapePartition.FirstBlock + doneSectors)); EndProgress2(); return; } - UpdateProgress2("Hashing blocks {0} of {1}", (long)doneSectors, (long)sectors); + UpdateProgress2(Localization.Core.Hashing_blocks_0_of_1, (long)doneSectors, (long)sectors); doneSectors += sectorsToRead; } else @@ -538,15 +539,16 @@ public sealed partial class Sidecar if(errno != ErrorNumber.NoError) { - AaruConsole.ErrorWriteLine($"Error {errno} reading sector { - tapePartition.FirstBlock + doneSectors}"); + AaruConsole.ErrorWriteLine(string.Format(Localization.Core.Error_0_reading_sector_1, + errno, + tapePartition.FirstBlock + doneSectors)); EndProgress2(); return; } - UpdateProgress2("Hashing blocks {0} of {1}", (long)doneSectors, (long)sectors); + UpdateProgress2(Localization.Core.Hashing_blocks_0_of_1, (long)doneSectors, (long)sectors); doneSectors += sectors - doneSectors; } @@ -586,7 +588,7 @@ public sealed partial class Sidecar } else { - UpdateStatus($"Hashing file {tapeFile.File}..."); + UpdateStatus(string.Format(Localization.Core.Hashing_file_0, tapeFile.File)); if(_aborted) return; @@ -619,15 +621,17 @@ public sealed partial class Sidecar if(errno != ErrorNumber.NoError) { - AaruConsole.ErrorWriteLine($"Error {errno} reading sector { - tapeFile.FirstBlock + doneSectors}"); + AaruConsole.ErrorWriteLine(string.Format(Localization.Core.Error_0_reading_sector_1, + errno, tapeFile.FirstBlock + doneSectors)); EndProgress2(); return; } - UpdateProgress2("Hashing blocks {0} of {1}", (long)doneSectors, (long)sectors); + UpdateProgress2(Localization.Core.Hashing_blocks_0_of_1, (long)doneSectors, + (long)sectors); + doneSectors += sectorsToRead; } else @@ -637,15 +641,17 @@ public sealed partial class Sidecar if(errno != ErrorNumber.NoError) { - AaruConsole.ErrorWriteLine($"Error {errno} reading sector { - tapeFile.FirstBlock + doneSectors}"); + AaruConsole.ErrorWriteLine(string.Format(Localization.Core.Error_0_reading_sector_1, + errno, tapeFile.FirstBlock + doneSectors)); EndProgress2(); return; } - UpdateProgress2("Hashing blocks {0} of {1}", (long)doneSectors, (long)sectors); + UpdateProgress2(Localization.Core.Hashing_blocks_0_of_1, (long)doneSectors, + (long)sectors); + doneSectors += sectors - doneSectors; } @@ -677,7 +683,7 @@ public sealed partial class Sidecar sidecar.BlockMedia[0].TapeInformation = tapePartitions.ToArray(); } - UpdateStatus("Checking filesystems..."); + UpdateStatus(Localization.Core.Checking_filesystems); if(_aborted) return; @@ -720,7 +726,7 @@ public sealed partial class Sidecar if(plugin is IReadOnlyFilesystem fsPlugin && fsPlugin.Mount(image, partitions[i], encoding, null, null) == ErrorNumber.NoError) { - UpdateStatus($"Mounting {fsPlugin.XmlFsType.Type}"); + UpdateStatus(string.Format(Localization.Core.Mounting_0, fsPlugin.XmlFsType.Type)); fsPlugin.XmlFsType.Contents = Files(fsPlugin); @@ -756,7 +762,7 @@ public sealed partial class Sidecar var wholePart = new Partition { - Name = "Whole device", + Name = Localization.Core.Whole_device, Length = image.Info.Sectors, Size = image.Info.Sectors * image.Info.SectorSize }; @@ -775,7 +781,7 @@ public sealed partial class Sidecar if(plugin is IReadOnlyFilesystem fsPlugin && fsPlugin.Mount(image, wholePart, encoding, null, null) == ErrorNumber.NoError) { - UpdateStatus($"Mounting {fsPlugin.XmlFsType.Type}"); + UpdateStatus(string.Format(Localization.Core.Mounting_0, fsPlugin.XmlFsType.Type)); fsPlugin.XmlFsType.Contents = Files(fsPlugin); @@ -798,7 +804,7 @@ public sealed partial class Sidecar sidecar.BlockMedia[0].FileSystemInformation[0].FileSystems = lstFs.ToArray(); } - UpdateStatus("Saving metadata..."); + UpdateStatus(Localization.Core.Saving_metadata); if(image.Info.Cylinders > 0 && image.Info is { Heads: > 0, SectorsPerTrack: > 0 }) @@ -985,7 +991,7 @@ public sealed partial class Sidecar if(File.Exists(scpFilePath)) { - UpdateStatus("Hashing SuperCardPro image..."); + UpdateStatus(Localization.Core.Hashing_SuperCardPro_image); var scpImage = new SuperCardPro(); var scpFilter = new ZZZNoFilter(); scpFilter.Open(scpFilePath); @@ -1054,12 +1060,12 @@ public sealed partial class Sidecar } else AaruConsole. - ErrorWriteLine("SuperCardPro image do not contain same number of tracks ({0}) than disk image ({1}), ignoring...", + ErrorWriteLine(Localization.Core.SCP_image_do_not_same_number_tracks_0_disk_image_1_ignoring, scpImage.Header.end + 1, image.Info.Cylinders); else AaruConsole. - ErrorWriteLine("SuperCardPro image do not contain same number of heads ({0}) than disk image ({1}), ignoring...", - 2, image.Info.Heads); + ErrorWriteLine(Localization.Core.SCP_image_do_not_same_number_heads_0_disk_image_1_ignoring, 2, + image.Info.Heads); } } #endregion @@ -1091,7 +1097,7 @@ public sealed partial class Sidecar if(kfFile != null) { - UpdateStatus("Hashing KryoFlux images..."); + UpdateStatus(Localization.Core.Hashing_KryoFlux_images); var kfImage = new KryoFlux(); var kfFilter = new ZZZNoFilter(); @@ -1158,11 +1164,11 @@ public sealed partial class Sidecar } else AaruConsole. - ErrorWriteLine("KryoFlux image does not contain same number of tracks ({0}) than disk image ({1}), ignoring...", + ErrorWriteLine(Localization.Core.KryoFlux_image_do_not_same_number_tracks_0_disk_image_1_ignoring, kfImage.Info.Cylinders, image.Info.Cylinders); else AaruConsole. - ErrorWriteLine("KryoFlux image does not contain same number of heads ({0}) than disk image ({1}), ignoring...", + ErrorWriteLine(Localization.Core.KryoFlux_image_do_not_same_number_heads_0_disk_image_1_ignoring, kfImage.Info.Heads, image.Info.Heads); } } @@ -1191,7 +1197,7 @@ public sealed partial class Sidecar } catch(NotImplementedException) {} - UpdateStatus("Hashing DiscFerret image..."); + UpdateStatus(Localization.Core.Hashing_DiscFerret_image); if(image.Info.Heads == dfiImage.Info.Heads) if(dfiImage.Info.Cylinders >= image.Info.Cylinders) @@ -1244,11 +1250,11 @@ public sealed partial class Sidecar } else AaruConsole. - ErrorWriteLine("DiscFerret image do not contain same number of tracks ({0}) than disk image ({1}), ignoring...", + ErrorWriteLine(Localization.Core.DiscFerret_image_do_not_same_number_tracks_0_disk_image_1_ignoring, dfiImage.Info.Cylinders, image.Info.Cylinders); else AaruConsole. - ErrorWriteLine("DiscFerret image do not contain same number of heads ({0}) than disk image ({1}), ignoring...", + ErrorWriteLine(Localization.Core.DiscFerret_image_do_not_same_number_heads_0_disk_image_1_ignoring, dfiImage.Info.Heads, image.Info.Heads); #endregion diff --git a/Aaru.Core/Sidecar/BlockTape.cs b/Aaru.Core/Sidecar/BlockTape.cs index eacb46075..0254245ac 100644 --- a/Aaru.Core/Sidecar/BlockTape.cs +++ b/Aaru.Core/Sidecar/BlockTape.cs @@ -90,7 +90,7 @@ public sealed partial class Sidecar var tapeWorker = new Checksum(); List tapeFiles = new(); - UpdateStatus("Hashing files..."); + UpdateStatus(Localization.Core.Hashing_files); for(int i = 0; i < files.Count; i++) { diff --git a/Aaru.Core/Sidecar/Files.cs b/Aaru.Core/Sidecar/Files.cs index fa91675e1..902baca74 100644 --- a/Aaru.Core/Sidecar/Files.cs +++ b/Aaru.Core/Sidecar/Files.cs @@ -62,7 +62,7 @@ public sealed partial class Sidecar if(ret != ErrorNumber.NoError) { - AaruConsole.DebugWriteLine("Create-Sidecar command", "Cannot stat {0}", dirent); + AaruConsole.DebugWriteLine("Create-Sidecar command", Localization.Core.Cannot_stat_0, dirent); continue; } @@ -165,7 +165,7 @@ public sealed partial class Sidecar if(ret != ErrorNumber.NoError) { - AaruConsole.DebugWriteLine("Create-Sidecar command", "Cannot stat {0}", dirent); + AaruConsole.DebugWriteLine("Create-Sidecar command", Localization.Core.Cannot_stat_0, dirent); continue; } @@ -261,7 +261,7 @@ public sealed partial class Sidecar if(stat.Length > 0) { long position = 0; - UpdateStatus($"Hashing file {path}/{filename}..."); + UpdateStatus(string.Format(Localization.Core.Hashing_file_0_1, path, filename)); InitProgress2(); while(position < stat.Length - 1048576) @@ -272,7 +272,7 @@ public sealed partial class Sidecar data = new byte[1048576]; filesystem.Read(path + "/" + filename, position, 1048576, ref data); - UpdateProgress2("Hashing file byte {0} of {1}", position, stat.Length); + UpdateProgress2(Localization.Core.Hashing_file_byte_0_of_1, position, stat.Length); fileChkWorker.Update(data); @@ -282,7 +282,7 @@ public sealed partial class Sidecar data = new byte[stat.Length - position]; filesystem.Read(path + "/" + filename, position, stat.Length - position, ref data); - UpdateProgress2("Hashing file byte {0} of {1}", position, stat.Length); + UpdateProgress2(Localization.Core.Hashing_file_byte_0_of_1, position, stat.Length); fileChkWorker.Update(data); diff --git a/Aaru.Core/Sidecar/OpticalDisc.cs b/Aaru.Core/Sidecar/OpticalDisc.cs index bb3157e37..f0c7cf118 100644 --- a/Aaru.Core/Sidecar/OpticalDisc.cs +++ b/Aaru.Core/Sidecar/OpticalDisc.cs @@ -103,7 +103,7 @@ public sealed partial class Sidecar MediaType dskType = image.Info.MediaType; ErrorNumber errno; - UpdateStatus("Hashing media tags..."); + UpdateStatus(Localization.Core.Hashing_media_tags); foreach(MediaTagType tagType in image.Info.ReadableMediaTags) { @@ -255,11 +255,11 @@ public sealed partial class Sidecar InitProgress(); - UpdateStatus("Checking filesystems"); + UpdateStatus(Localization.Core.Checking_filesystems); List partitions = Partitions.GetAll(image); Partitions.AddSchemesToStats(partitions); - UpdateStatus("Hashing tracks..."); + UpdateStatus(Localization.Core.Hashing_tracks); foreach(Track trk in tracks) { @@ -349,7 +349,7 @@ public sealed partial class Sidecar xmlTrk.Checksums = sidecar.OpticalDisc[0].Checksums; else { - UpdateProgress("Track {0} of {1}", trk.Sequence, tracks.Count); + UpdateProgress(Localization.Core.Track_0_of_1, trk.Sequence, tracks.Count); // For fast debugging, skip checksum //goto skipChecksum; @@ -375,12 +375,12 @@ public sealed partial class Sidecar errno = image.ReadSectorsLong(doneSectors, sectorsToRead, xmlTrk.Sequence.TrackNumber, out sector); - UpdateProgress2("Hashing sector {0} of {1}", (long)doneSectors, + UpdateProgress2(Localization.Core.Hashing_sector_0_of_1, (long)doneSectors, (long)(trk.EndSector - trk.StartSector + 1)); if(errno != ErrorNumber.NoError) { - UpdateStatus($"Error {errno} reading sector {doneSectors}"); + UpdateStatus(string.Format(Localization.Core.Error_0_reading_sector_1, errno, doneSectors)); EndProgress2(); return; @@ -393,12 +393,12 @@ public sealed partial class Sidecar errno = image.ReadSectorsLong(doneSectors, (uint)(sectors - doneSectors), xmlTrk.Sequence.TrackNumber, out sector); - UpdateProgress2("Hashing sector {0} of {1}", (long)doneSectors, + UpdateProgress2(Localization.Core.Hashing_sector_0_of_1, (long)doneSectors, (long)(trk.EndSector - trk.StartSector + 1)); if(errno != ErrorNumber.NoError) { - UpdateStatus($"Error {errno} reading sector {doneSectors}"); + UpdateStatus(string.Format(Localization.Core.Error_0_reading_sector_1, errno, doneSectors)); EndProgress2(); return; @@ -479,12 +479,12 @@ public sealed partial class Sidecar errno = image.ReadSectorsTag(doneSectors, sectorsToRead, xmlTrk.Sequence.TrackNumber, SectorTagType.CdSectorSubchannel, out sector); - UpdateProgress2("Hashing subchannel sector {0} of {1}", (long)doneSectors, + UpdateProgress2(Localization.Core.Hashing_subchannel_sector_0_of_1, (long)doneSectors, (long)(trk.EndSector - trk.StartSector + 1)); if(errno != ErrorNumber.NoError) { - UpdateStatus($"Error {errno} reading sector {doneSectors}"); + UpdateStatus(string.Format(Localization.Core.Error_0_reading_sector_1, errno, doneSectors)); EndProgress2(); return; @@ -498,12 +498,12 @@ public sealed partial class Sidecar xmlTrk.Sequence.TrackNumber, SectorTagType.CdSectorSubchannel, out sector); - UpdateProgress2("Hashing subchannel sector {0} of {1}", (long)doneSectors, + UpdateProgress2(Localization.Core.Hashing_subchannel_sector_0_of_1, (long)doneSectors, (long)(trk.EndSector - trk.StartSector + 1)); if(errno != ErrorNumber.NoError) { - UpdateStatus($"Error {errno} reading sector {doneSectors}"); + UpdateStatus(string.Format(Localization.Core.Error_0_reading_sector_1, errno, doneSectors)); EndProgress2(); return; diff --git a/Aaru.Core/Sidecar/Sidecar.cs b/Aaru.Core/Sidecar/Sidecar.cs index f82dbc6ea..af48eb120 100644 --- a/Aaru.Core/Sidecar/Sidecar.cs +++ b/Aaru.Core/Sidecar/Sidecar.cs @@ -96,7 +96,7 @@ public sealed partial class Sidecar byte[] data; long position = 0; - UpdateStatus("Hashing image file..."); + UpdateStatus(Localization.Core.Hashing_image_file); InitProgress(); while(position < _fi.Length - 1048576) @@ -107,7 +107,7 @@ public sealed partial class Sidecar data = new byte[1048576]; _fs.EnsureRead(data, 0, 1048576); - UpdateProgress("Hashing image file byte {0} of {1}", position, _fi.Length); + UpdateProgress(Localization.Core.Hashing_image_file_byte_0_of_1, position, _fi.Length); _imgChkWorker.Update(data); @@ -117,7 +117,7 @@ public sealed partial class Sidecar data = new byte[_fi.Length - position]; _fs.EnsureRead(data, 0, (int)(_fi.Length - position)); - UpdateProgress("Hashing image file byte {0} of {1}", position, _fi.Length); + UpdateProgress(Localization.Core.Hashing_image_file_byte_0_of_1, position, _fi.Length); _imgChkWorker.Update(data); @@ -145,10 +145,10 @@ public sealed partial class Sidecar _encoding); else { - AaruConsole. - ErrorWriteLine("The specified image says it contains an optical media but at the same time says it does not support them."); + AaruConsole.ErrorWriteLine(Localization.Core. + The_specified_image_says_it_contains_an_optical_media_but_at_the_same_time_says_it_does_not_support_them); - AaruConsole.ErrorWriteLine("Please open an issue at Github."); + AaruConsole.ErrorWriteLine(Localization.Core.Please_open_an_issue_at_Github); } break; @@ -157,10 +157,10 @@ public sealed partial class Sidecar BlockMedia(blockImage, _filterId, _imagePath, _fi, _plugins, imgChecksums, ref _sidecar, _encoding); else { - AaruConsole. - ErrorWriteLine("The specified image says it contains a block addressable media but at the same time says it does not support them."); + AaruConsole.ErrorWriteLine(Localization.Core. + The_specified_image_says_it_contains_a_block_addressable_media_but_at_the_same_time_says_it_does_not_support_them); - AaruConsole.ErrorWriteLine("Please open an issue at Github."); + AaruConsole.ErrorWriteLine(Localization.Core.Please_open_an_issue_at_Github); } break; @@ -170,10 +170,10 @@ public sealed partial class Sidecar _encoding); else { - AaruConsole. - ErrorWriteLine("The specified image says it contains a byte addressable media but at the same time says it does not support them."); + AaruConsole.ErrorWriteLine(Localization.Core. + The_specified_image_says_it_contains_a_byte_addressable_media_but_at_the_same_time_says_it_does_not_support_them); - AaruConsole.ErrorWriteLine("Please open an issue at Github."); + AaruConsole.ErrorWriteLine(Localization.Core.Please_open_an_issue_at_Github); } break; @@ -189,7 +189,7 @@ public sealed partial class Sidecar /// Aborts sidecar running operation public void Abort() { - UpdateStatus("Aborting..."); + UpdateStatus(Localization.Core.Aborting); _aborted = true; } } \ No newline at end of file diff --git a/Aaru.Core/Statistics.cs b/Aaru.Core/Statistics.cs index 6091a71ae..1094ab0ea 100644 --- a/Aaru.Core/Statistics.cs +++ b/Aaru.Core/Statistics.cs @@ -547,7 +547,7 @@ public static class Statistics } catch(SqliteException ex) { - AaruConsole.DebugWriteLine("Stats", "Exception while trying to save statistics:"); + AaruConsole.DebugWriteLine("Stats", Localization.Core.Exception_while_trying_to_save_statistics); AaruConsole.DebugWriteLine("Stats", "{0}", ex); } } @@ -563,7 +563,7 @@ public static class Statistics } catch(SqliteException ex) { - AaruConsole.DebugWriteLine("Stats", "Exception while trying to save statistics:"); + AaruConsole.DebugWriteLine("Stats", Localization.Core.Exception_while_trying_to_save_statistics); AaruConsole.DebugWriteLine("Stats", "{0}", ex); } @@ -789,9 +789,9 @@ public static class Statistics } #if DEBUG - System.Console.WriteLine("Uploading statistics"); + System.Console.WriteLine(Localization.Core.Uploading_statistics); #else - Aaru.Console.AaruConsole.DebugWriteLine("Submit stats", "Uploading statistics"); + Aaru.Console.AaruConsole.DebugWriteLine("Submit stats", Localization.Core.Uploading_statistics); #endif string json = JsonConvert.SerializeObject(dto, Formatting.Indented, new JsonSerializerSettings @@ -1130,9 +1130,9 @@ public static class Statistics // This can execute before debug console has been inited #if DEBUG - System.Console.WriteLine("Uploading partial statistics file {0}", statsFile); + System.Console.WriteLine(Localization.Core.Uploading_partial_statistics_file_0, statsFile); #else - Aaru.Console.AaruConsole.DebugWriteLine("Submit stats", "Uploading partial statistics file {0}", statsFile); + Aaru.Console.AaruConsole.DebugWriteLine("Submit stats", Localization.Core.Uploading_partial_statistics_file_0, statsFile); #endif var fs = new FileStream(statsFile, FileMode.Open, FileAccess.Read); @@ -1215,7 +1215,7 @@ public static class Statistics } catch(SqliteException ex) { - AaruConsole.DebugWriteLine("Stats", "Exception while trying to save statistics:"); + AaruConsole.DebugWriteLine("Stats", Localization.Core.Exception_while_trying_to_save_statistics); AaruConsole.DebugWriteLine("Stats", "{0}", ex); } } @@ -1245,7 +1245,7 @@ public static class Statistics } catch(SqliteException ex) { - AaruConsole.DebugWriteLine("Stats", "Exception while trying to save statistics:"); + AaruConsole.DebugWriteLine("Stats", Localization.Core.Exception_while_trying_to_save_statistics); AaruConsole.DebugWriteLine("Stats", "{0}", ex); } } @@ -1275,7 +1275,7 @@ public static class Statistics } catch(SqliteException ex) { - AaruConsole.DebugWriteLine("Stats", "Exception while trying to save statistics:"); + AaruConsole.DebugWriteLine("Stats", Localization.Core.Exception_while_trying_to_save_statistics); AaruConsole.DebugWriteLine("Stats", "{0}", ex); } } @@ -1305,7 +1305,7 @@ public static class Statistics } catch(SqliteException ex) { - AaruConsole.DebugWriteLine("Stats", "Exception while trying to save statistics:"); + AaruConsole.DebugWriteLine("Stats", Localization.Core.Exception_while_trying_to_save_statistics); AaruConsole.DebugWriteLine("Stats", "{0}", ex); } } @@ -1335,7 +1335,7 @@ public static class Statistics } catch(SqliteException ex) { - AaruConsole.DebugWriteLine("Stats", "Exception while trying to save statistics:"); + AaruConsole.DebugWriteLine("Stats", Localization.Core.Exception_while_trying_to_save_statistics); AaruConsole.DebugWriteLine("Stats", "{0}", ex); } } @@ -1377,7 +1377,7 @@ public static class Statistics } catch(SqliteException ex) { - AaruConsole.DebugWriteLine("Stats", "Exception while trying to save statistics:"); + AaruConsole.DebugWriteLine("Stats", Localization.Core.Exception_while_trying_to_save_statistics); AaruConsole.DebugWriteLine("Stats", "{0}", ex); } } @@ -1406,7 +1406,7 @@ public static class Statistics } catch(SqliteException ex) { - AaruConsole.DebugWriteLine("Stats", "Exception while trying to save statistics:"); + AaruConsole.DebugWriteLine("Stats", Localization.Core.Exception_while_trying_to_save_statistics); AaruConsole.DebugWriteLine("Stats", "{0}", ex); } } @@ -1449,7 +1449,7 @@ public static class Statistics } catch(SqliteException ex) { - AaruConsole.DebugWriteLine("Stats", "Exception while trying to save statistics:"); + AaruConsole.DebugWriteLine("Stats", Localization.Core.Exception_while_trying_to_save_statistics); AaruConsole.DebugWriteLine("Stats", "{0}", ex); } } diff --git a/Aaru.Gui/ViewModels/Dialogs/ConsoleViewModel.cs b/Aaru.Gui/ViewModels/Dialogs/ConsoleViewModel.cs index 12423f62f..a9635cdc4 100644 --- a/Aaru.Gui/ViewModels/Dialogs/ConsoleViewModel.cs +++ b/Aaru.Gui/ViewModels/Dialogs/ConsoleViewModel.cs @@ -122,7 +122,7 @@ public sealed class ConsoleViewModel : ViewModelBase typeof(AssemblyInformationalVersionAttribute)) as AssemblyInformationalVersionAttribute; - logSw.WriteLine(UI.System_information); + logSw.WriteLine(Localization.Core.System_information); logSw.WriteLine("{0} {1} ({2}-bit)", DetectOS.GetPlatformName(platId, platVer), platVer, Environment.Is64BitOperatingSystem ? 64 : 32); @@ -131,13 +131,13 @@ public sealed class ConsoleViewModel : ViewModelBase logSw.WriteLine(); - logSw.WriteLine(UI.Program_information); + logSw.WriteLine(Localization.Core.Program_information); logSw.WriteLine("Aaru {0}", assemblyVersion?.InformationalVersion); - logSw.WriteLine(UI.Running_in_0_bit, Environment.Is64BitProcess ? 64 : 32); + logSw.WriteLine(Localization.Core.Running_in_0_bit, Environment.Is64BitProcess ? 64 : 32); #if DEBUG - logSw.WriteLine(UI.DEBUG_version); + logSw.WriteLine(Localization.Core.DEBUG_version); #endif - logSw.WriteLine(UI.Command_line_0, Environment.CommandLine); + logSw.WriteLine(Localization.Core.Command_line_0, Environment.CommandLine); logSw.WriteLine(); logSw.WriteLine(UI.Console_with_ornament); diff --git a/Aaru.Gui/ViewModels/Dialogs/StatisticsViewModel.cs b/Aaru.Gui/ViewModels/Dialogs/StatisticsViewModel.cs index 00b06ee2d..1b3a85e7c 100644 --- a/Aaru.Gui/ViewModels/Dialogs/StatisticsViewModel.cs +++ b/Aaru.Gui/ViewModels/Dialogs/StatisticsViewModel.cs @@ -707,7 +707,7 @@ public sealed class StatisticsViewModel : ViewModelBase [NotNull] public string MediaLabel => UI.Title_Media; [NotNull] - public string TypeLabel => UI.Title_Type_for_media; + public string TypeLabel => Localization.Core.Title_Type_for_media; [NotNull] public string Title => UI.Encodings; [NotNull] diff --git a/Aaru.Gui/ViewModels/Tabs/PcmciaInfoViewModel.cs b/Aaru.Gui/ViewModels/Tabs/PcmciaInfoViewModel.cs index f02bb1313..27a8f5518 100644 --- a/Aaru.Gui/ViewModels/Tabs/PcmciaInfoViewModel.cs +++ b/Aaru.Gui/ViewModels/Tabs/PcmciaInfoViewModel.cs @@ -131,7 +131,7 @@ public class PcmciaInfoViewModel : ViewModelBase break; default: tupleCode = $"0x{(byte)tuple.Code:X2}"; - tupleDescription = string.Format(UI.Found_unknown_tuple_ID_0, (byte)tuple.Code); + tupleDescription = string.Format(Localization.Core.Found_unknown_tuple_ID_0, (byte)tuple.Code); break; } diff --git a/Aaru.Gui/ViewModels/Windows/ImageChecksumViewModel.cs b/Aaru.Gui/ViewModels/Windows/ImageChecksumViewModel.cs index ecc9789c3..426a03bb7 100644 --- a/Aaru.Gui/ViewModels/Windows/ImageChecksumViewModel.cs +++ b/Aaru.Gui/ViewModels/Windows/ImageChecksumViewModel.cs @@ -504,7 +504,9 @@ public sealed class ImageChecksumViewModel : ViewModelBase if(errno != ErrorNumber.NoError) { - AaruConsole.ErrorWriteLine($"Error {errno} reading sector {i}"); + AaruConsole.ErrorWriteLine(string.Format(Localization.Core.Error_0_reading_sector_1, + errno, i)); + _cancel = true; break; @@ -545,7 +547,9 @@ public sealed class ImageChecksumViewModel : ViewModelBase if(errno != ErrorNumber.NoError) { - AaruConsole.ErrorWriteLine($"Error {errno} reading sector {doneSectors}"); + AaruConsole.ErrorWriteLine(string.Format(Localization.Core.Error_0_reading_sector_1, + errno, doneSectors)); + _cancel = true; continue; @@ -570,7 +574,9 @@ public sealed class ImageChecksumViewModel : ViewModelBase if(errno != ErrorNumber.NoError) { - AaruConsole.ErrorWriteLine($"Error {errno} reading sector {doneSectors}"); + AaruConsole.ErrorWriteLine(string.Format(Localization.Core.Error_0_reading_sector_1, + errno, doneSectors)); + _cancel = true; continue; @@ -632,7 +638,9 @@ public sealed class ImageChecksumViewModel : ViewModelBase if(errno != ErrorNumber.NoError) { - AaruConsole.ErrorWriteLine($"Error {errno} reading sector {i}"); + AaruConsole.ErrorWriteLine(string.Format(Localization.Core.Error_0_reading_sector_1, errno, + i)); + _cancel = true; break; @@ -656,7 +664,7 @@ public sealed class ImageChecksumViewModel : ViewModelBase } catch(Exception ex) { - AaruConsole.DebugWriteLine(UI.Could_not_get_tracks_because_0, ex.Message); + AaruConsole.DebugWriteLine(Localization.Core.Could_not_get_tracks_because_0, ex.Message); AaruConsole.WriteLine("Unable to get separate tracks, not checksumming them"); } else @@ -692,7 +700,9 @@ public sealed class ImageChecksumViewModel : ViewModelBase if(errno != ErrorNumber.NoError) { - AaruConsole.ErrorWriteLine($"Error {errno} reading sector {doneSectors}"); + AaruConsole.ErrorWriteLine(string.Format(Localization.Core.Error_0_reading_sector_1, errno, + doneSectors)); + _cancel = true; continue; @@ -717,7 +727,9 @@ public sealed class ImageChecksumViewModel : ViewModelBase if(errno != ErrorNumber.NoError) { - AaruConsole.ErrorWriteLine($"Error {errno} reading sector {doneSectors}"); + AaruConsole.ErrorWriteLine(string.Format(Localization.Core.Error_0_reading_sector_1, errno, + doneSectors)); + _cancel = true; continue; diff --git a/Aaru.Gui/ViewModels/Windows/ImageConvertViewModel.cs b/Aaru.Gui/ViewModels/Windows/ImageConvertViewModel.cs index a2ca8c53f..35c2346d3 100644 --- a/Aaru.Gui/ViewModels/Windows/ImageConvertViewModel.cs +++ b/Aaru.Gui/ViewModels/Windows/ImageConvertViewModel.cs @@ -855,7 +855,7 @@ public sealed class ImageConvertViewModel : ViewModelBase } warning = true; - AaruConsole.ErrorWriteLine(UI.Error_0_setting_metadata, outputFormat.ErrorMessage); + AaruConsole.ErrorWriteLine(Localization.Core.Error_0_setting_metadata, outputFormat.ErrorMessage); } if(tracks != null && diff --git a/Aaru.Gui/ViewModels/Windows/MainWindowViewModel.cs b/Aaru.Gui/ViewModels/Windows/MainWindowViewModel.cs index becaf5b16..9202b2135 100644 --- a/Aaru.Gui/ViewModels/Windows/MainWindowViewModel.cs +++ b/Aaru.Gui/ViewModels/Windows/MainWindowViewModel.cs @@ -760,7 +760,7 @@ public sealed class MainWindowViewModel : ViewModelBase ButtonEnum.Ok, Icon.Error); AaruConsole.ErrorWriteLine(UI.Unable_to_open_image_format); - AaruConsole.ErrorWriteLine(UI.Error_0, ex.Message); + AaruConsole.ErrorWriteLine(Localization.Core.Error_0, ex.Message); AaruConsole.DebugWriteLine("Image-info command", Localization.Core.Stack_trace_0, ex.StackTrace); } } diff --git a/Aaru.Localization/Core.Designer.cs b/Aaru.Localization/Core.Designer.cs index 6c018d835..901dbbc5d 100644 --- a/Aaru.Localization/Core.Designer.cs +++ b/Aaru.Localization/Core.Designer.cs @@ -219,12 +219,6 @@ namespace Aaru.Localization { } } - public static string Media_identified_as_0 { - get { - return ResourceManager.GetString("Media_identified_as_0", resourceCulture); - } - } - public static string Device_identified_as_0 { get { return ResourceManager.GetString("Device_identified_as_0", resourceCulture); @@ -627,24 +621,12 @@ namespace Aaru.Localization { } } - public static string Disc_Definition_Structure { - get { - return ResourceManager.GetString("Disc_Definition_Structure", resourceCulture); - } - } - public static string Medium_Status { get { return ResourceManager.GetString("Medium_Status", resourceCulture); } } - public static string Spare_Area_Information { - get { - return ResourceManager.GetString("Spare_Area_Information", resourceCulture); - } - } - public static string DVD_RW_Pre_Recorded_Information { get { return ResourceManager.GetString("DVD_RW_Pre_Recorded_Information", resourceCulture); @@ -699,18 +681,6 @@ namespace Aaru.Localization { } } - public static string TOC { - get { - return ResourceManager.GetString("TOC", resourceCulture); - } - } - - public static string ATIP { - get { - return ResourceManager.GetString("ATIP", resourceCulture); - } - } - public static string Standard_Disc_Information { get { return ResourceManager.GetString("Standard_Disc_Information", resourceCulture); @@ -843,24 +813,12 @@ namespace Aaru.Localization { } } - public static string Combined_disc_and_drive_offset_are_0_bytes_1_samples { - get { - return ResourceManager.GetString("Combined_disc_and_drive_offset_are_0_bytes_1_samples", resourceCulture); - } - } - public static string Combined_offset_is_0_bytes_1_samples { get { return ResourceManager.GetString("Combined_offset_is_0_bytes_1_samples", resourceCulture); } } - public static string Disc_offset_is_0_bytes_1_samples { - get { - return ResourceManager.GetString("Disc_offset_is_0_bytes_1_samples", resourceCulture); - } - } - public static string Took_a_total_of_0_seconds_1_processing_commands { get { return ResourceManager.GetString("Took_a_total_of_0_seconds_1_processing_commands", resourceCulture); @@ -933,12 +891,6 @@ namespace Aaru.Localization { } } - public static string Sector_0_could_not_be_read { - get { - return ResourceManager.GetString("Sector_0_could_not_be_read", resourceCulture); - } - } - public static string Testing_0_seeks_longest_seek_took_1_ms_fastest_one_took_2_ms_3_ms_average { get { return ResourceManager.GetString("Testing_0_seeks_longest_seek_took_1_ms_fastest_one_took_2_ms_3_ms_average", resourceCulture); @@ -950,5 +902,5978 @@ namespace Aaru.Localization { return ResourceManager.GetString("Whole_device", resourceCulture); } } + + public static string Device_block_size_is_fixed_at_0_bytes { + get { + return ResourceManager.GetString("Device_block_size_is_fixed_at_0_bytes", resourceCulture); + } + } + + public static string Device_maximum_block_size_is_0_bytes { + get { + return ResourceManager.GetString("Device_maximum_block_size_is_0_bytes", resourceCulture); + } + } + + public static string Device_does_not_specify_a_maximum_block_size { + get { + return ResourceManager.GetString("Device_does_not_specify_a_maximum_block_size", resourceCulture); + } + } + + public static string Device_minimum_block_size_is_0_bytes { + get { + return ResourceManager.GetString("Device_minimum_block_size_is_0_bytes", resourceCulture); + } + } + + public static string Device_needs_a_block_size_granularity_of_pow_0_1_bytes { + get { + return ResourceManager.GetString("Device_needs_a_block_size_granularity_of_pow_0_1_bytes", resourceCulture); + } + } + + public static string Filesystem_type_0 { + get { + return ResourceManager.GetString("Filesystem_type_0", resourceCulture); + } + } + + public static string Volume_name_0 { + get { + return ResourceManager.GetString("Volume_name_0", resourceCulture); + } + } + + public static string Volume_serial_0 { + get { + return ResourceManager.GetString("Volume_serial_0", resourceCulture); + } + } + + public static string Application_identifier_0 { + get { + return ResourceManager.GetString("Application_identifier_0", resourceCulture); + } + } + + public static string System_identifier_0 { + get { + return ResourceManager.GetString("System_identifier_0", resourceCulture); + } + } + + public static string Volume_set_identifier_0 { + get { + return ResourceManager.GetString("Volume_set_identifier_0", resourceCulture); + } + } + + public static string Data_preparer_identifier_0 { + get { + return ResourceManager.GetString("Data_preparer_identifier_0", resourceCulture); + } + } + + public static string Publisher_identifier_0 { + get { + return ResourceManager.GetString("Publisher_identifier_0", resourceCulture); + } + } + + public static string Volume_created_on_0 { + get { + return ResourceManager.GetString("Volume_created_on_0", resourceCulture); + } + } + + public static string Volume_effective_from_0 { + get { + return ResourceManager.GetString("Volume_effective_from_0", resourceCulture); + } + } + + public static string Volume_last_modified_on_0 { + get { + return ResourceManager.GetString("Volume_last_modified_on_0", resourceCulture); + } + } + + public static string Volume_expired_on_0 { + get { + return ResourceManager.GetString("Volume_expired_on_0", resourceCulture); + } + } + + public static string Volume_last_backed_up_on_0 { + get { + return ResourceManager.GetString("Volume_last_backed_up_on_0", resourceCulture); + } + } + + public static string Volume_has_0_clusters_of_1_bytes_each_total_of_2_bytes { + get { + return ResourceManager.GetString("Volume_has_0_clusters_of_1_bytes_each_total_of_2_bytes", resourceCulture); + } + } + + public static string Volume_has_0_clusters_free_1 { + get { + return ResourceManager.GetString("Volume_has_0_clusters_free_1", resourceCulture); + } + } + + public static string Volume_contains_0_files { + get { + return ResourceManager.GetString("Volume_contains_0_files", resourceCulture); + } + } + + public static string Filesystem_contains_boot_code { + get { + return ResourceManager.GetString("Filesystem_contains_boot_code", resourceCulture); + } + } + + public static string Filesystem_has_not_been_unmounted_correctly_or_contains_errors { + get { + return ResourceManager.GetString("Filesystem_has_not_been_unmounted_correctly_or_contains_errors", resourceCulture); + } + } + + public static string Image_without_headers_is_0_bytes_long { + get { + return ResourceManager.GetString("Image_without_headers_is_0_bytes_long", resourceCulture); + } + } + + public static string Contains_a_media_of_0_sectors_with_a_maximum_sector_size_of_1_bytes_etc { + get { + return ResourceManager.GetString("Contains_a_media_of_0_sectors_with_a_maximum_sector_size_of_1_bytes_etc", resourceCulture); + } + } + + public static string Contains_a_media_of_type_0_and_XML_type_1 { + get { + return ResourceManager.GetString("Contains_a_media_of_type_0_and_XML_type_1", resourceCulture); + } + } + + public static string Was_created_with_0_version_1 { + get { + return ResourceManager.GetString("Was_created_with_0_version_1", resourceCulture); + } + } + + public static string Was_created_with_0 { + get { + return ResourceManager.GetString("Was_created_with_0", resourceCulture); + } + } + + public static string Created_by_0 { + get { + return ResourceManager.GetString("Created_by_0", resourceCulture); + } + } + + public static string Created_on_0 { + get { + return ResourceManager.GetString("Created_on_0", resourceCulture); + } + } + + public static string Last_modified_on_0 { + get { + return ResourceManager.GetString("Last_modified_on_0", resourceCulture); + } + } + + public static string Media_is_number_0_on_a_set_of_1_medias { + get { + return ResourceManager.GetString("Media_is_number_0_on_a_set_of_1_medias", resourceCulture); + } + } + + public static string Media_manufacturer_0 { + get { + return ResourceManager.GetString("Media_manufacturer_0", resourceCulture); + } + } + + public static string Media_serial_number_0 { + get { + return ResourceManager.GetString("Media_serial_number_0", resourceCulture); + } + } + + public static string Drive_serial_number_0 { + get { + return ResourceManager.GetString("Drive_serial_number_0", resourceCulture); + } + } + + public static string Title_Session { + get { + return ResourceManager.GetString("Title_Session", resourceCulture); + } + } + + public static string Title_Start { + get { + return ResourceManager.GetString("Title_Start", resourceCulture); + } + } + + public static string Title_First_track { + get { + return ResourceManager.GetString("Title_First_track", resourceCulture); + } + } + + public static string Title_Last_track { + get { + return ResourceManager.GetString("Title_Last_track", resourceCulture); + } + } + + public static string Title_End { + get { + return ResourceManager.GetString("Title_End", resourceCulture); + } + } + + public static string Title_Track { + get { + return ResourceManager.GetString("Title_Track", resourceCulture); + } + } + + public static string Title_Bps { + get { + return ResourceManager.GetString("Title_Bps", resourceCulture); + } + } + + public static string Title_Raw_bps { + get { + return ResourceManager.GetString("Title_Raw_bps", resourceCulture); + } + } + + public static string Title_Subchannel { + get { + return ResourceManager.GetString("Title_Subchannel", resourceCulture); + } + } + + public static string Title_Pregap { + get { + return ResourceManager.GetString("Title_Pregap", resourceCulture); + } + } + + public static string Title_CompactDisc { + get { + return ResourceManager.GetString("Title_CompactDisc", resourceCulture); + } + } + + public static string Title_DVD_HD_DVD { + get { + return ResourceManager.GetString("Title_DVD_HD_DVD", resourceCulture); + } + } + + public static string Title_DVD_Plus_Dash_R_W { + get { + return ResourceManager.GetString("Title_DVD_Plus_Dash_R_W", resourceCulture); + } + } + + public static string Title_Blu_ray { + get { + return ResourceManager.GetString("Title_Blu_ray", resourceCulture); + } + } + + public static string Title_Xbox { + get { + return ResourceManager.GetString("Title_Xbox", resourceCulture); + } + } + + public static string Title_MMC { + get { + return ResourceManager.GetString("Title_MMC", resourceCulture); + } + } + + public static string Title_SSC { + get { + return ResourceManager.GetString("Title_SSC", resourceCulture); + } + } + + public static string Title_DVD { + get { + return ResourceManager.GetString("Title_DVD", resourceCulture); + } + } + + public static string GD_ROM_dump_support_is_not_yet_implemented { + get { + return ResourceManager.GetString("GD_ROM_dump_support_is_not_yet_implemented", resourceCulture); + } + } + + public static string Dumping_Xbox_discs_require_a_Kreon_drive { + get { + return ResourceManager.GetString("Dumping_Xbox_discs_require_a_Kreon_drive", resourceCulture); + } + } + + public static string GD_ROM_scan_support_is_not_yet_implemented { + get { + return ResourceManager.GetString("GD_ROM_scan_support_is_not_yet_implemented", resourceCulture); + } + } + + public static string Scanning_Xbox_discs_is_not_yet_supported { + get { + return ResourceManager.GetString("Scanning_Xbox_discs_is_not_yet_supported", resourceCulture); + } + } + + public static string Partition_name_0 { + get { + return ResourceManager.GetString("Partition_name_0", resourceCulture); + } + } + + public static string Partition_type_0 { + get { + return ResourceManager.GetString("Partition_type_0", resourceCulture); + } + } + + public static string Partition_start_sector_0_byte_1 { + get { + return ResourceManager.GetString("Partition_start_sector_0_byte_1", resourceCulture); + } + } + + public static string Partition_length_0_sectors_1_bytes { + get { + return ResourceManager.GetString("Partition_length_0_sectors_1_bytes", resourceCulture); + } + } + + public static string Title_Partition_description { + get { + return ResourceManager.GetString("Title_Partition_description", resourceCulture); + } + } + + public static string Drive_identifies_as_Apple_OEM_drive { + get { + return ResourceManager.GetString("Drive_identifies_as_Apple_OEM_drive", resourceCulture); + } + } + + public static string _0_sectors { + get { + return ResourceManager.GetString("_0_sectors", resourceCulture); + } + } + + public static string Aborting { + get { + return ResourceManager.GetString("Aborting", resourceCulture); + } + } + + public static string Setting_speed_to_8x_for_CD_i_Ready_reading_as_audio { + get { + return ResourceManager.GetString("Setting_speed_to_8x_for_CD_i_Ready_reading_as_audio", resourceCulture); + } + } + + public static string Aborted { + get { + return ResourceManager.GetString("Aborted", resourceCulture); + } + } + + public static string Reading_sector_0_of_1_2_MiB_sec { + get { + return ResourceManager.GetString("Reading_sector_0_of_1_2_MiB_sec", resourceCulture); + } + } + + public static string Adding_CD_i_Ready_hole_from_LBA_0_to_1_inclusive { + get { + return ResourceManager.GetString("Adding_CD_i_Ready_hole_from_LBA_0_to_1_inclusive", resourceCulture); + } + } + + public static string Setting_speed_to_8x_for_audio_reading { + get { + return ResourceManager.GetString("Setting_speed_to_8x_for_audio_reading", resourceCulture); + } + } + + public static string Setting_speed_to_MAX_for_data_reading { + get { + return ResourceManager.GetString("Setting_speed_to_MAX_for_data_reading", resourceCulture); + } + } + + public static string Setting_speed_to_0_x_for_data_reading { + get { + return ResourceManager.GetString("Setting_speed_to_0_x_for_data_reading", resourceCulture); + } + } + + public static string READ_error_0 { + get { + return ResourceManager.GetString("READ_error_0", resourceCulture); + } + } + + public static string Skipping_0_blocks_from_errored_block_1 { + get { + return ResourceManager.GetString("Skipping_0_blocks_from_errored_block_1", resourceCulture); + } + } + + public static string Failed_crossing_into_Lead_Out { + get { + return ResourceManager.GetString("Failed_crossing_into_Lead_Out", resourceCulture); + } + } + + public static string Raw_CD_dumping_not_yet_implemented { + get { + return ResourceManager.GetString("Raw_CD_dumping_not_yet_implemented", resourceCulture); + } + } + + public static string Could_not_get_tracks { + get { + return ResourceManager.GetString("Could_not_get_tracks", resourceCulture); + } + } + + public static string Drive_does_not_support_the_requested_subchannel_format_not_continuing { + get { + return ResourceManager.GetString("Drive_does_not_support_the_requested_subchannel_format_not_continuing", resourceCulture); + } + } + + public static string Output_format_does_not_support_subchannels_continuing { + get { + return ResourceManager.GetString("Output_format_does_not_support_subchannels_continuing", resourceCulture); + } + } + + public static string Output_format_does_not_support_subchannels_not_continuing { + get { + return ResourceManager.GetString("Output_format_does_not_support_subchannels_not_continuing", resourceCulture); + } + } + + public static string Checking_if_drive_supports_reading_without_subchannel { + get { + return ResourceManager.GetString("Checking_if_drive_supports_reading_without_subchannel", resourceCulture); + } + } + + public static string Drive_does_not_support_READ_CD_trying_SCSI_READ_commands { + get { + return ResourceManager.GetString("Drive_does_not_support_READ_CD_trying_SCSI_READ_commands", resourceCulture); + } + } + + public static string Checking_if_drive_supports_READ_6 { + get { + return ResourceManager.GetString("Checking_if_drive_supports_READ_6", resourceCulture); + } + } + + public static string Checking_if_drive_supports_READ_10 { + get { + return ResourceManager.GetString("Checking_if_drive_supports_READ_10", resourceCulture); + } + } + + public static string Checking_if_drive_supports_READ_12 { + get { + return ResourceManager.GetString("Checking_if_drive_supports_READ_12", resourceCulture); + } + } + + public static string Checking_if_drive_supports_READ_16 { + get { + return ResourceManager.GetString("Checking_if_drive_supports_READ_16", resourceCulture); + } + } + + public static string Cannot_read_from_disc_not_continuing { + get { + return ResourceManager.GetString("Cannot_read_from_disc_not_continuing", resourceCulture); + } + } + + public static string Drive_supports_READ_6 { + get { + return ResourceManager.GetString("Drive_supports_READ_6", resourceCulture); + } + } + + public static string Drive_supports_READ_10 { + get { + return ResourceManager.GetString("Drive_supports_READ_10", resourceCulture); + } + } + + public static string Drive_supports_READ_12 { + get { + return ResourceManager.GetString("Drive_supports_READ_12", resourceCulture); + } + } + + public static string Drive_supports_READ_16 { + get { + return ResourceManager.GetString("Drive_supports_READ_16", resourceCulture); + } + } + + public static string Drive_can_read_without_subchannel { + get { + return ResourceManager.GetString("Drive_can_read_without_subchannel", resourceCulture); + } + } + + public static string Full_raw_subchannel_reading_supported { + get { + return ResourceManager.GetString("Full_raw_subchannel_reading_supported", resourceCulture); + } + } + + public static string PQ_subchannel_reading_supported { + get { + return ResourceManager.GetString("PQ_subchannel_reading_supported", resourceCulture); + } + } + + public static string WARNING_If_disc_says_CDG_CDEG_CDMIDI_dump_will_be_incorrect { + get { + return ResourceManager.GetString("WARNING_If_disc_says_CDG_CDEG_CDMIDI_dump_will_be_incorrect", resourceCulture); + } + } + + public static string Drive_returns_subchannel_in_BCD { + get { + return ResourceManager.GetString("Drive_returns_subchannel_in_BCD", resourceCulture); + } + } + + public static string Drive_does_not_returns_subchannel_in_BCD { + get { + return ResourceManager.GetString("Drive_does_not_returns_subchannel_in_BCD", resourceCulture); + } + } + + public static string Calculating_pregaps__can_take_some_time { + get { + return ResourceManager.GetString("Calculating_pregaps__can_take_some_time", resourceCulture); + } + } + + public static string Output_format_does_not_support_storing_raw_data_not_continuing { + get { + return ResourceManager.GetString("Output_format_does_not_support_storing_raw_data_not_continuing", resourceCulture); + } + } + + public static string Output_format_does_not_support_storing_raw_data_continuing { + get { + return ResourceManager.GetString("Output_format_does_not_support_storing_raw_data_continuing", resourceCulture); + } + } + + public static string Output_format_does_not_support_audio_tracks_cannot_continue { + get { + return ResourceManager.GetString("Output_format_does_not_support_audio_tracks_cannot_continue", resourceCulture); + } + } + + public static string Output_format_does_not_support_pregaps_not_continuing { + get { + return ResourceManager.GetString("Output_format_does_not_support_pregaps_not_continuing", resourceCulture); + } + } + + public static string Output_format_does_not_support_pregaps_continuing { + get { + return ResourceManager.GetString("Output_format_does_not_support_pregaps_continuing", resourceCulture); + } + } + + public static string Cannot_dump_blank_media { + get { + return ResourceManager.GetString("Cannot_dump_blank_media", resourceCulture); + } + } + + public static string Could_not_process_resume_file_not_continuing { + get { + return ResourceManager.GetString("Could_not_process_resume_file_not_continuing", resourceCulture); + } + } + + public static string Output_format_does_not_support_0_continuing { + get { + return ResourceManager.GetString("Output_format_does_not_support_0_continuing", resourceCulture); + } + } + + public static string Output_format_does_not_support_0_not_continuing { + get { + return ResourceManager.GetString("Output_format_does_not_support_0_not_continuing", resourceCulture); + } + } + + public static string Solving_lead_outs { + get { + return ResourceManager.GetString("Solving_lead_outs", resourceCulture); + } + } + + public static string Detecting_disc_type { + get { + return ResourceManager.GetString("Detecting_disc_type", resourceCulture); + } + } + + public static string Disc_contains_a_hidden_track { + get { + return ResourceManager.GetString("Disc_contains_a_hidden_track", resourceCulture); + } + } + + public static string Checking_mode_for_track_0 { + get { + return ResourceManager.GetString("Checking_mode_for_track_0", resourceCulture); + } + } + + public static string Unable_to_guess_mode_for_track_0_continuing { + get { + return ResourceManager.GetString("Unable_to_guess_mode_for_track_0_continuing", resourceCulture); + } + } + + public static string Track_0_is_MODE1 { + get { + return ResourceManager.GetString("Track_0_is_MODE1", resourceCulture); + } + } + + public static string Track_0_is_MODE2 { + get { + return ResourceManager.GetString("Track_0_is_MODE2", resourceCulture); + } + } + + public static string Track_0_is_MODE2_FORM_2 { + get { + return ResourceManager.GetString("Track_0_is_MODE2_FORM_2", resourceCulture); + } + } + + public static string Track_0_is_MODE2_FORM_1 { + get { + return ResourceManager.GetString("Track_0_is_MODE2_FORM_1", resourceCulture); + } + } + + public static string Track_0_is_unknown_mode_1 { + get { + return ResourceManager.GetString("Track_0_is_unknown_mode_1", resourceCulture); + } + } + + public static string Output_format_does_not_support_more_than_1_track_not_continuing { + get { + return ResourceManager.GetString("Output_format_does_not_support_more_than_1_track_not_continuing", resourceCulture); + } + } + + public static string Output_format_does_not_support_audio_tracks_not_continuing { + get { + return ResourceManager.GetString("Output_format_does_not_support_audio_tracks_not_continuing", resourceCulture); + } + } + + public static string Output_format_only_supports_MODE_1_tracks_not_continuing { + get { + return ResourceManager.GetString("Output_format_only_supports_MODE_1_tracks_not_continuing", resourceCulture); + } + } + + public static string Output_format_does_not_support_CD_first_track_pregap_continuing { + get { + return ResourceManager.GetString("Output_format_does_not_support_CD_first_track_pregap_continuing", resourceCulture); + } + } + + public static string Output_format_does_not_support_CD_first_track_pregap_not_continuing { + get { + return ResourceManager.GetString("Output_format_does_not_support_CD_first_track_pregap_not_continuing", resourceCulture); + } + } + + public static string Device_error_0_trying_to_guess_ideal_transfer_length { + get { + return ResourceManager.GetString("Device_error_0_trying_to_guess_ideal_transfer_length", resourceCulture); + } + } + + public static string Reading_0_sectors_at_a_time { + get { + return ResourceManager.GetString("Reading_0_sectors_at_a_time", resourceCulture); + } + } + + public static string Device_reports_0_blocks_1_bytes { + get { + return ResourceManager.GetString("Device_reports_0_blocks_1_bytes", resourceCulture); + } + } + + public static string Device_can_read_0_blocks_at_a_time { + get { + return ResourceManager.GetString("Device_can_read_0_blocks_at_a_time", resourceCulture); + } + } + + public static string Device_reports_0_bytes_per_logical_block { + get { + return ResourceManager.GetString("Device_reports_0_bytes_per_logical_block", resourceCulture); + } + } + + public static string SCSI_device_type_0 { + get { + return ResourceManager.GetString("SCSI_device_type_0", resourceCulture); + } + } + + public static string Media_identified_as_0 { + get { + return ResourceManager.GetString("Media_identified_as_0", resourceCulture); + } + } + + public static string Error_creating_output_image_not_continuing { + get { + return ResourceManager.GetString("Error_creating_output_image_not_continuing", resourceCulture); + } + } + + public static string Error_sending_tracks_to_output_image_not_continuing { + get { + return ResourceManager.GetString("Error_sending_tracks_to_output_image_not_continuing", resourceCulture); + } + } + + public static string Output_image_does_not_support_subchannels_continuing { + get { + return ResourceManager.GetString("Output_image_does_not_support_subchannels_continuing", resourceCulture); + } + } + + public static string Output_image_does_not_support_subchannels_not_continuing { + get { + return ResourceManager.GetString("Output_image_does_not_support_subchannels_not_continuing", resourceCulture); + } + } + + public static string Creating_subchannel_log_in_0 { + get { + return ResourceManager.GetString("Creating_subchannel_log_in_0", resourceCulture); + } + } + + public static string Setting_flags_for_track_0 { + get { + return ResourceManager.GetString("Setting_flags_for_track_0", resourceCulture); + } + } + + public static string Found_Media_Catalogue_Number_0 { + get { + return ResourceManager.GetString("Found_Media_Catalogue_Number_0", resourceCulture); + } + } + + public static string Found_ISRC_for_track_0_1 { + get { + return ResourceManager.GetString("Found_ISRC_for_track_0_1", resourceCulture); + } + } + + public static string Resuming_from_block_0 { + get { + return ResourceManager.GetString("Resuming_from_block_0", resourceCulture); + } + } + + public static string Track_0_starts_at_LBA_1_and_ends_at_LBA_2 { + get { + return ResourceManager.GetString("Track_0_starts_at_LBA_1_and_ends_at_LBA_2", resourceCulture); + } + } + + public static string No_audio_tracks_disabling_offset_fix { + get { + return ResourceManager.GetString("No_audio_tracks_disabling_offset_fix", resourceCulture); + } + } + + public static string READ_CD_command_is_not_supported_disabling_offset_fix_Dump_may_not_be_correct { + get { + return ResourceManager.GetString("READ_CD_command_is_not_supported_disabling_offset_fix_Dump_may_not_be_correct", resourceCulture); + } + } + + public static string There_are_audio_tracks_and_offset_fixing_is_disabled_dump_may_not_be_correct { + get { + return ResourceManager.GetString("There_are_audio_tracks_and_offset_fixing_is_disabled_dump_may_not_be_correct", resourceCulture); + } + } + + public static string Dump_may_not_be_correct { + get { + return ResourceManager.GetString("Dump_may_not_be_correct", resourceCulture); + } + } + + public static string Disc_write_offset_is_unknown_dump_may_not_be_correct { + get { + return ResourceManager.GetString("Disc_write_offset_is_unknown_dump_may_not_be_correct", resourceCulture); + } + } + + public static string Combined_disc_and_drive_offset_are_0_bytes_1_samples { + get { + return ResourceManager.GetString("Combined_disc_and_drive_offset_are_0_bytes_1_samples", resourceCulture); + } + } + + public static string Disc_offset_is_0_bytes_1_samples { + get { + return ResourceManager.GetString("Disc_offset_is_0_bytes_1_samples", resourceCulture); + } + } + + public static string Dumping_CD_i_Ready_requires_the_output_image_format_to_support_long_sectors { + get { + return ResourceManager.GetString("Dumping_CD_i_Ready_requires_the_output_image_format_to_support_long_sectors", resourceCulture); + } + } + + public static string Dumping_CD_i_Ready_requires_the_drive_to_support_the_READ_CD_command { + get { + return ResourceManager.GetString("Dumping_CD_i_Ready_requires_the_drive_to_support_the_READ_CD_command", resourceCulture); + } + } + + public static string Enabling_skipping_CD_i_Ready_hole_because_drive_returns_data_as_audio { + get { + return ResourceManager.GetString("Enabling_skipping_CD_i_Ready_hole_because_drive_returns_data_as_audio", resourceCulture); + } + } + + public static string There_will_be_thousand_of_errors_between_track_0_and_track_1_that_is_normal_and_you_can_ignore_them { + get { + return ResourceManager.GetString("There_will_be_thousand_of_errors_between_track_0_and_track_1_that_is_normal_and_y" + + "ou_can_ignore_them", resourceCulture); + } + } + + public static string Dump_finished_in_0_seconds { + get { + return ResourceManager.GetString("Dump_finished_in_0_seconds", resourceCulture); + } + } + + public static string Average_dump_speed_0_KiB_sec { + get { + return ResourceManager.GetString("Average_dump_speed_0_KiB_sec", resourceCulture); + } + } + + public static string Average_write_speed_0_KiB_sec { + get { + return ResourceManager.GetString("Average_write_speed_0_KiB_sec", resourceCulture); + } + } + + public static string Error_Tag_type_0_is_null_skipping { + get { + return ResourceManager.GetString("Error_Tag_type_0_is_null_skipping", resourceCulture); + } + } + + public static string Cannot_write_tag_0 { + get { + return ResourceManager.GetString("Cannot_write_tag_0", resourceCulture); + } + } + + public static string Sector_0_could_not_be_read { + get { + return ResourceManager.GetString("Sector_0_could_not_be_read", resourceCulture); + } + } + + public static string Setting_ISRC_for_track_0_to_1 { + get { + return ResourceManager.GetString("Setting_ISRC_for_track_0_to_1", resourceCulture); + } + } + + public static string Setting_disc_Media_Catalogue_Number_to_0 { + get { + return ResourceManager.GetString("Setting_disc_Media_Catalogue_Number_to_0", resourceCulture); + } + } + + public static string Closing_output_file { + get { + return ResourceManager.GetString("Closing_output_file", resourceCulture); + } + } + + public static string Closed_in_0_seconds { + get { + return ResourceManager.GetString("Closed_in_0_seconds", resourceCulture); + } + } + + public static string Took_a_total_of_0_seconds_1_processing_commands_2_checksumming_3_writing_4_closing { + get { + return ResourceManager.GetString("Took_a_total_of_0_seconds_1_processing_commands_2_checksumming_3_writing_4_closin" + + "g", resourceCulture); + } + } + + public static string _0_subchannels_could_not_be_read { + get { + return ResourceManager.GetString("_0_subchannels_could_not_be_read", resourceCulture); + } + } + + public static string Sending_MODE_SELECT_to_drive_return_damaged_blocks { + get { + return ResourceManager.GetString("Sending_MODE_SELECT_to_drive_return_damaged_blocks", resourceCulture); + } + } + + public static string Drive_did_not_accept_MODE_SELECT_command_for_persistent_error_reading { + get { + return ResourceManager.GetString("Drive_did_not_accept_MODE_SELECT_command_for_persistent_error_reading", resourceCulture); + } + } + + public static string Retrying_sector_0_pass_1_recovering_partial_data_forward { + get { + return ResourceManager.GetString("Retrying_sector_0_pass_1_recovering_partial_data_forward", resourceCulture); + } + } + + public static string Retrying_sector_0_pass_1_forward { + get { + return ResourceManager.GetString("Retrying_sector_0_pass_1_forward", resourceCulture); + } + } + + public static string Retrying_sector_0_pass_1_recovering_partial_data_reverse { + get { + return ResourceManager.GetString("Retrying_sector_0_pass_1_recovering_partial_data_reverse", resourceCulture); + } + } + + public static string Retrying_sector_0_pass_1_reverse { + get { + return ResourceManager.GetString("Retrying_sector_0_pass_1_reverse", resourceCulture); + } + } + + public static string Correctly_retried_sector_0_in_pass_1 { + get { + return ResourceManager.GetString("Correctly_retried_sector_0_in_pass_1", resourceCulture); + } + } + + public static string Sending_MODE_SELECT_to_drive_ignore_error_correction { + get { + return ResourceManager.GetString("Sending_MODE_SELECT_to_drive_ignore_error_correction", resourceCulture); + } + } + + public static string Trying_to_get_partial_data_for_sector_0 { + get { + return ResourceManager.GetString("Trying_to_get_partial_data_for_sector_0", resourceCulture); + } + } + + public static string Got_partial_data_for_sector_0_in_pass_1 { + get { + return ResourceManager.GetString("Got_partial_data_for_sector_0_in_pass_1", resourceCulture); + } + } + + public static string Sending_MODE_SELECT_to_drive_return_device_to_previous_status { + get { + return ResourceManager.GetString("Sending_MODE_SELECT_to_drive_return_device_to_previous_status", resourceCulture); + } + } + + public static string Retrying_sector_0_subchannel_pass_1_forward { + get { + return ResourceManager.GetString("Retrying_sector_0_subchannel_pass_1_forward", resourceCulture); + } + } + + public static string Retrying_sector_0_subchannel_pass_1_reverse { + get { + return ResourceManager.GetString("Retrying_sector_0_subchannel_pass_1_reverse", resourceCulture); + } + } + + public static string Correctly_retried_sector_0_subchannel_in_pass_1 { + get { + return ResourceManager.GetString("Correctly_retried_sector_0_subchannel_in_pass_1", resourceCulture); + } + } + + public static string Reading_lead_outs { + get { + return ResourceManager.GetString("Reading_lead_outs", resourceCulture); + } + } + + public static string Reading_sector_0_at_lead_out_1_MiB_sec { + get { + return ResourceManager.GetString("Reading_sector_0_at_lead_out_1_MiB_sec", resourceCulture); + } + } + + public static string Reading_first_track_pregap { + get { + return ResourceManager.GetString("Reading_first_track_pregap", resourceCulture); + } + } + + public static string Trying_to_read_first_track_pregap_sector_0_1_MiB_sec { + get { + return ResourceManager.GetString("Trying_to_read_first_track_pregap_sector_0_1_MiB_sec", resourceCulture); + } + } + + public static string Got_0_first_track_pregap_sectors { + get { + return ResourceManager.GetString("Got_0_first_track_pregap_sectors", resourceCulture); + } + } + + public static string Subchannel_is_BCD { + get { + return ResourceManager.GetString("Subchannel_is_BCD", resourceCulture); + } + } + + public static string Subchannel_is_not_BCD { + get { + return ResourceManager.GetString("Subchannel_is_not_BCD", resourceCulture); + } + } + + public static string Could_not_detect_drive_subchannel_BCD { + get { + return ResourceManager.GetString("Could_not_detect_drive_subchannel_BCD", resourceCulture); + } + } + + public static string Could_not_detect_if_drive_subchannel_is_BCD_or_not_pregaps_could_not_be_calculated_dump_may_be_incorrect { + get { + return ResourceManager.GetString("Could_not_detect_if_drive_subchannel_is_BCD_or_not_pregaps_could_not_be_calculate" + + "d_dump_may_be_incorrect", resourceCulture); + } + } + + public static string Skipping_track_0 { + get { + return ResourceManager.GetString("Skipping_track_0", resourceCulture); + } + } + + public static string Skipping_track_0_due_to_Plextor_firmware_bug { + get { + return ResourceManager.GetString("Skipping_track_0_due_to_Plextor_firmware_bug", resourceCulture); + } + } + + public static string Track_0 { + get { + return ResourceManager.GetString("Track_0", resourceCulture); + } + } + + public static string LBA_0_Try_1_Sense_2 { + get { + return ResourceManager.GetString("LBA_0_Try_1_Sense_2", resourceCulture); + } + } + + public static string LBA_0_Try_1_Sense_2_Q_3_4_5_6_7_8_9_10_11_12_CRC_13_14_Calculated_CRC_15_16 { + get { + return ResourceManager.GetString("LBA_0_Try_1_Sense_2_Q_3_4_5_6_7_8_9_10_11_12_CRC_13_14_Calculated_CRC_15_16", resourceCulture); + } + } + + public static string LBA_0_Try_1_Sense_2_Q_FIXED_3_4_5_6_7_8_9_10_11_12_CRC_13_14_Calculated_CRC_15_16 { + get { + return ResourceManager.GetString("LBA_0_Try_1_Sense_2_Q_FIXED_3_4_5_6_7_8_9_10_11_12_CRC_13_14_Calculated_CRC_15_16" + + "", resourceCulture); + } + } + + public static string Could_not_read_subchannel_for_this_track_supposing_hundred_fifty_sectors { + get { + return ResourceManager.GetString("Could_not_read_subchannel_for_this_track_supposing_hundred_fifty_sectors", resourceCulture); + } + } + + public static string Could_not_read_subchannel_for_this_track_supposing_0_sectors { + get { + return ResourceManager.GetString("Could_not_read_subchannel_for_this_track_supposing_0_sectors", resourceCulture); + } + } + + public static string Could_not_read_subchannel_for_sector_0 { + get { + return ResourceManager.GetString("Could_not_read_subchannel_for_sector_0", resourceCulture); + } + } + + public static string Could_not_get_correct_subchannel_for_sector_0 { + get { + return ResourceManager.GetString("Could_not_get_correct_subchannel_for_sector_0", resourceCulture); + } + } + + public static string All_Q_empty_for_LBA_0 { + get { + return ResourceManager.GetString("All_Q_empty_for_LBA_0", resourceCulture); + } + } + + public static string Invalid_Q_position_for_LBA_0_got_1 { + get { + return ResourceManager.GetString("Invalid_Q_position_for_LBA_0_got_1", resourceCulture); + } + } + + public static string Pregap_for_track_0_1 { + get { + return ResourceManager.GetString("Pregap_for_track_0_1", resourceCulture); + } + } + + public static string Track_0_pregap_is_1_sectors { + get { + return ResourceManager.GetString("Track_0_pregap_is_1_sectors", resourceCulture); + } + } + + public static string _0_sectors_at_the_end_of_the_disc_are_unreadable { + get { + return ResourceManager.GetString("_0_sectors_at_the_end_of_the_disc_are_unreadable", resourceCulture); + } + } + + public static string Checking_if_drive_supports_full_raw_subchannel_reading { + get { + return ResourceManager.GetString("Checking_if_drive_supports_full_raw_subchannel_reading", resourceCulture); + } + } + + public static string Checking_if_drive_supports_PQ_subchannel_reading { + get { + return ResourceManager.GetString("Checking_if_drive_supports_PQ_subchannel_reading", resourceCulture); + } + } + + public static string Reading_ATIP { + get { + return ResourceManager.GetString("Reading_ATIP", resourceCulture); + } + } + + public static string Reading_Disc_Information { + get { + return ResourceManager.GetString("Reading_Disc_Information", resourceCulture); + } + } + + public static string Reading_PMA { + get { + return ResourceManager.GetString("Reading_PMA", resourceCulture); + } + } + + public static string Reading_Session_Information { + get { + return ResourceManager.GetString("Reading_Session_Information", resourceCulture); + } + } + + public static string Reading_CD_Text_from_Lead_In { + get { + return ResourceManager.GetString("Reading_CD_Text_from_Lead_In", resourceCulture); + } + } + + public static string Reading_full_TOC { + get { + return ResourceManager.GetString("Reading_full_TOC", resourceCulture); + } + } + + public static string Building_track_map { + get { + return ResourceManager.GetString("Building_track_map", resourceCulture); + } + } + + public static string Cannot_read_RAW_TOC_requesting_processed_one { + get { + return ResourceManager.GetString("Cannot_read_RAW_TOC_requesting_processed_one", resourceCulture); + } + } + + public static string Could_not_read_TOC_if_you_want_to_continue_use_force_and_will_try_from_LBA_0_to_360000 { + get { + return ResourceManager.GetString("Could_not_read_TOC_if_you_want_to_continue_use_force_and_will_try_from_LBA_0_to_3" + + "60000", resourceCulture); + } + } + + public static string No_tracks_found_adding_a_single_track_from_zero_to_Lead_Out { + get { + return ResourceManager.GetString("No_tracks_found_adding_a_single_track_from_zero_to_Lead_Out", resourceCulture); + } + } + + public static string Could_not_find_Lead_Out_if_you_want_to_continue_use_force_option { + get { + return ResourceManager.GetString("Could_not_find_Lead_Out_if_you_want_to_continue_use_force_option", resourceCulture); + } + } + + public static string WARNING_Could_not_find_Lead_Out_start_will_try_to_read_up_to { + get { + return ResourceManager.GetString("WARNING_Could_not_find_Lead_Out_start_will_try_to_read_up_to", resourceCulture); + } + } + + public static string Trimming_skipped_sectors { + get { + return ResourceManager.GetString("Trimming_skipped_sectors", resourceCulture); + } + } + + public static string Trimming_sector_0 { + get { + return ResourceManager.GetString("Trimming_sector_0", resourceCulture); + } + } + + public static string Trimming_finished_in_0_seconds { + get { + return ResourceManager.GetString("Trimming_finished_in_0_seconds", resourceCulture); + } + } + + public static string Could_not_read { + get { + return ResourceManager.GetString("Could_not_read", resourceCulture); + } + } + + public static string Retrode_partition_not_recognized_not_dumping { + get { + return ResourceManager.GetString("Retrode_partition_not_recognized_not_dumping", resourceCulture); + } + } + + public static string Reading_root_directory_in_sector_0 { + get { + return ResourceManager.GetString("Reading_root_directory_in_sector_0", resourceCulture); + } + } + + public static string No_cartridge_found_not_dumping { + get { + return ResourceManager.GetString("No_cartridge_found_not_dumping", resourceCulture); + } + } + + public static string The_specified_format_does_not_support_the_inserted_cartridge { + get { + return ResourceManager.GetString("The_specified_format_does_not_support_the_inserted_cartridge", resourceCulture); + } + } + + public static string Cartridge_has_0_bytes_1_GiB { + get { + return ResourceManager.GetString("Cartridge_has_0_bytes_1_GiB", resourceCulture); + } + } + + public static string Cartridge_has_0_bytes_1_MiB { + get { + return ResourceManager.GetString("Cartridge_has_0_bytes_1_MiB", resourceCulture); + } + } + + public static string Cartridge_has_0_bytes_1_KiB { + get { + return ResourceManager.GetString("Cartridge_has_0_bytes_1_KiB", resourceCulture); + } + } + + public static string Cartridge_has_0_bytes { + get { + return ResourceManager.GetString("Cartridge_has_0_bytes", resourceCulture); + } + } + + public static string Error_0_creating_output_image_not_continuing { + get { + return ResourceManager.GetString("Error_0_creating_output_image_not_continuing", resourceCulture); + } + } + + public static string Reading_byte_0_of_1_2_MiB_sec_ { + get { + return ResourceManager.GetString("Reading_byte_0_of_1_2_MiB_sec_", resourceCulture); + } + } + + public static string Skipping_0_bytes_from_errored_byte_1 { + get { + return ResourceManager.GetString("Skipping_0_bytes_from_errored_byte_1", resourceCulture); + } + } + + public static string Image_is_not_writable_aborting { + get { + return ResourceManager.GetString("Image_is_not_writable_aborting", resourceCulture); + } + } + + public static string Could_not_detect_capacity { + get { + return ResourceManager.GetString("Could_not_detect_capacity", resourceCulture); + } + } + + public static string ERROR_Unable_to_read_medium_or_empty_medium_present { + get { + return ResourceManager.GetString("ERROR_Unable_to_read_medium_or_empty_medium_present", resourceCulture); + } + } + + public static string Unable_to_read_medium_or_empty_medium_present { + get { + return ResourceManager.GetString("Unable_to_read_medium_or_empty_medium_present", resourceCulture); + } + } + + public static string Media_detected_as_MemoryStick_Pro_Duo { + get { + return ResourceManager.GetString("Media_detected_as_MemoryStick_Pro_Duo", resourceCulture); + } + } + + public static string Media_detected_as_MemoryStick_Duo { + get { + return ResourceManager.GetString("Media_detected_as_MemoryStick_Duo", resourceCulture); + } + } + + public static string Correctly_retried_block_0_in_pass_1 { + get { + return ResourceManager.GetString("Correctly_retried_block_0_in_pass_1", resourceCulture); + } + } + + public static string Creating_sidecar { + get { + return ResourceManager.GetString("Creating_sidecar", resourceCulture); + } + } + + public static string Error_0_opening_created_image { + get { + return ResourceManager.GetString("Error_0_opening_created_image", resourceCulture); + } + } + + public static string Sidecar_created_in_0_seconds { + get { + return ResourceManager.GetString("Sidecar_created_in_0_seconds", resourceCulture); + } + } + + public static string Average_checksum_speed_0_KiB_sec { + get { + return ResourceManager.GetString("Average_checksum_speed_0_KiB_sec", resourceCulture); + } + } + + public static string Found_filesystem_0_at_sector_1 { + get { + return ResourceManager.GetString("Found_filesystem_0_at_sector_1", resourceCulture); + } + } + + public static string Selected_output_plugin_does_not_support_MemoryStick_Duo_or_UMD_cannot_dump { + get { + return ResourceManager.GetString("Selected_output_plugin_does_not_support_MemoryStick_Duo_or_UMD_cannot_dump", resourceCulture); + } + } + + public static string Checking_if_media_is_UMD_or_MemoryStick { + get { + return ResourceManager.GetString("Checking_if_media_is_UMD_or_MemoryStick", resourceCulture); + } + } + + public static string Could_not_get_MODE_SENSE { + get { + return ResourceManager.GetString("Could_not_get_MODE_SENSE", resourceCulture); + } + } + + public static string Could_not_decode_MODE_SENSE { + get { + return ResourceManager.GetString("Could_not_decode_MODE_SENSE", resourceCulture); + } + } + + public static string FAT_starts_at_sector_0_and_runs_for_1_sectors { + get { + return ResourceManager.GetString("FAT_starts_at_sector_0_and_runs_for_1_sectors", resourceCulture); + } + } + + public static string Reading_FAT { + get { + return ResourceManager.GetString("Reading_FAT", resourceCulture); + } + } + + public static string Traversing_FAT { + get { + return ResourceManager.GetString("Traversing_FAT", resourceCulture); + } + } + + public static string The_specified_plugin_does_not_support_storing_optical_disc_images { + get { + return ResourceManager.GetString("The_specified_plugin_does_not_support_storing_optical_disc_images", resourceCulture); + } + } + + public static string Device_reports_0_bytes_per_physical_block { + get { + return ResourceManager.GetString("Device_reports_0_bytes_per_physical_block", resourceCulture); + } + } + + public static string Media_part_number_is_0 { + get { + return ResourceManager.GetString("Media_part_number_is_0", resourceCulture); + } + } + + public static string Error_retrieving_CMI_for_sector_0 { + get { + return ResourceManager.GetString("Error_retrieving_CMI_for_sector_0", resourceCulture); + } + } + + public static string Error_retrieving_title_key_for_sector_0 { + get { + return ResourceManager.GetString("Error_retrieving_title_key_for_sector_0", resourceCulture); + } + } + + public static string INSITE_floptical_drives_get_crazy_on_the_SCSI_bus_when_an_error_is_found { + get { + return ResourceManager.GetString("INSITE_floptical_drives_get_crazy_on_the_SCSI_bus_when_an_error_is_found", resourceCulture); + } + } + + public static string Initializing_reader { + get { + return ResourceManager.GetString("Initializing_reader", resourceCulture); + } + } + + public static string Requesting_MODE_SENSE_10 { + get { + return ResourceManager.GetString("Requesting_MODE_SENSE_10", resourceCulture); + } + } + + public static string Requesting_MODE_SENSE_6 { + get { + return ResourceManager.GetString("Requesting_MODE_SENSE_6", resourceCulture); + } + } + + public static string MiniDisc_albums_NetMD_discs_or_user_written_audio_MiniDisc_cannot_be_dumped { + get { + return ResourceManager.GetString("MiniDisc_albums_NetMD_discs_or_user_written_audio_MiniDisc_cannot_be_dumped", resourceCulture); + } + } + + public static string ERROR_Cannot_find_correct_read_command_0 { + get { + return ResourceManager.GetString("ERROR_Cannot_find_correct_read_command_0", resourceCulture); + } + } + + public static string Unable_to_read_medium { + get { + return ResourceManager.GetString("Unable_to_read_medium", resourceCulture); + } + } + + public static string ERROR_Cannot_get_blocks_to_read_0 { + get { + return ResourceManager.GetString("ERROR_Cannot_get_blocks_to_read_0", resourceCulture); + } + } + + public static string SCSI_medium_type_0 { + get { + return ResourceManager.GetString("SCSI_medium_type_0", resourceCulture); + } + } + + public static string SCSI_density_type_0 { + get { + return ResourceManager.GetString("SCSI_density_type_0", resourceCulture); + } + } + + public static string SCSI_floppy_mode_page_present_0 { + get { + return ResourceManager.GetString("SCSI_floppy_mode_page_present_0", resourceCulture); + } + } + + public static string Device_doesnt_seem_capable_of_reading_raw_data_from_media { + get { + return ResourceManager.GetString("Device_doesnt_seem_capable_of_reading_raw_data_from_media", resourceCulture); + } + } + + public static string Device_is_capable_of_reading_raw_data_but_Ive_been_unable_to_guess_correct_sector_size { + get { + return ResourceManager.GetString("Device_is_capable_of_reading_raw_data_but_Ive_been_unable_to_guess_correct_sector" + + "_size", resourceCulture); + } + } + + public static string If_you_want_to_continue_reading_cooked_data_when_raw_is_not_available_use_the_force_option { + get { + return ResourceManager.GetString("If_you_want_to_continue_reading_cooked_data_when_raw_is_not_available_use_the_for" + + "ce_option", resourceCulture); + } + } + + public static string Continuing_dumping_cooked_data { + get { + return ResourceManager.GetString("Continuing_dumping_cooked_data", resourceCulture); + } + } + + public static string Reading_0_raw_bytes_1_cooked_bytes_per_sector { + get { + return ResourceManager.GetString("Reading_0_raw_bytes_1_cooked_bytes_per_sector", resourceCulture); + } + } + + public static string Output_format_does_not_support_0 { + get { + return ResourceManager.GetString("Output_format_does_not_support_0", resourceCulture); + } + } + + public static string Several_media_tags_not_supported_continuing { + get { + return ResourceManager.GetString("Several_media_tags_not_supported_continuing", resourceCulture); + } + } + + public static string Several_media_tags_not_supported_not_continuing { + get { + return ResourceManager.GetString("Several_media_tags_not_supported_not_continuing", resourceCulture); + } + } + + public static string Image_does_not_support_multiple_sessions_in_non_Compact_Disc_dumps_continuing { + get { + return ResourceManager.GetString("Image_does_not_support_multiple_sessions_in_non_Compact_Disc_dumps_continuing", resourceCulture); + } + } + + public static string Image_does_not_support_multiple_sessions_in_non_Compact_Disc_dumps_not_continuing { + get { + return ResourceManager.GetString("Image_does_not_support_multiple_sessions_in_non_Compact_Disc_dumps_not_continuing" + + "", resourceCulture); + } + } + + public static string Image_does_not_support_multiple_tracks_in_non_Compact_Disc_dumps_continuing { + get { + return ResourceManager.GetString("Image_does_not_support_multiple_tracks_in_non_Compact_Disc_dumps_continuing", resourceCulture); + } + } + + public static string Image_does_not_support_multiple_tracks_in_non_Compact_Disc_dumps_not_continuing { + get { + return ResourceManager.GetString("Image_does_not_support_multiple_tracks_in_non_Compact_Disc_dumps_not_continuing", resourceCulture); + } + } + + public static string Setting_geometry_to_0_cylinders_1_heads_2_sectors_per_track { + get { + return ResourceManager.GetString("Setting_geometry_to_0_cylinders_1_heads_2_sectors_per_track", resourceCulture); + } + } + + public static string Creating_single_track_as_could_not_retrieve_track_list_from_drive { + get { + return ResourceManager.GetString("Creating_single_track_as_could_not_retrieve_track_list_from_drive", resourceCulture); + } + } + + public static string Setting_speed_to_MAX { + get { + return ResourceManager.GetString("Setting_speed_to_MAX", resourceCulture); + } + } + + public static string Setting_speed_to_0_x { + get { + return ResourceManager.GetString("Setting_speed_to_0_x", resourceCulture); + } + } + + public static string Title_keys_dumping_is_enabled_This_will_be_very_slow { + get { + return ResourceManager.GetString("Title_keys_dumping_is_enabled_This_will_be_very_slow", resourceCulture); + } + } + + public static string Reading_USB_descriptors { + get { + return ResourceManager.GetString("Reading_USB_descriptors", resourceCulture); + } + } + + public static string Cannot_write_USB_descriptors { + get { + return ResourceManager.GetString("Cannot_write_USB_descriptors", resourceCulture); + } + } + + public static string Requesting_ATAPI_IDENTIFY_PACKET_DEVICE { + get { + return ResourceManager.GetString("Requesting_ATAPI_IDENTIFY_PACKET_DEVICE", resourceCulture); + } + } + + public static string Cannot_write_ATAPI_IDENTIFY_PACKET_DEVICE { + get { + return ResourceManager.GetString("Cannot_write_ATAPI_IDENTIFY_PACKET_DEVICE", resourceCulture); + } + } + + public static string Requesting_SCSI_INQUIRY { + get { + return ResourceManager.GetString("Requesting_SCSI_INQUIRY", resourceCulture); + } + } + + public static string Cannot_write_SCSI_INQUIRY { + get { + return ResourceManager.GetString("Cannot_write_SCSI_INQUIRY", resourceCulture); + } + } + + public static string Cannot_write_SCSI_MODE_SENSE_10 { + get { + return ResourceManager.GetString("Cannot_write_SCSI_MODE_SENSE_10", resourceCulture); + } + } + + public static string Cannot_write_SCSI_MODE_SENSE_6 { + get { + return ResourceManager.GetString("Cannot_write_SCSI_MODE_SENSE_6", resourceCulture); + } + } + + public static string Found_blank_block_0_in_pass_1 { + get { + return ResourceManager.GetString("Found_blank_block_0_in_pass_1", resourceCulture); + } + } + + public static string Retrying_title_key_0_pass_1_forward { + get { + return ResourceManager.GetString("Retrying_title_key_0_pass_1_forward", resourceCulture); + } + } + + public static string Retrying_title_key_0_pass_1_reverse { + get { + return ResourceManager.GetString("Retrying_title_key_0_pass_1_reverse", resourceCulture); + } + } + + public static string Correctly_retried_title_key_0_in_pass_1 { + get { + return ResourceManager.GetString("Correctly_retried_title_key_0_in_pass_1", resourceCulture); + } + } + + public static string The_current_environment_doesn_t_support_the_medium_scan_command { + get { + return ResourceManager.GetString("The_current_environment_doesn_t_support_the_medium_scan_command", resourceCulture); + } + } + + public static string MEDIUM_SCAN_github_plead_message { + get { + return ResourceManager.GetString("MEDIUM_SCAN_github_plead_message", resourceCulture); + } + } + + public static string Scanning_for_0_written_blocks_starting_in_block_1 { + get { + return ResourceManager.GetString("Scanning_for_0_written_blocks_starting_in_block_1", resourceCulture); + } + } + + public static string Scanning_for_0_blank_blocks_starting_in_block_1 { + get { + return ResourceManager.GetString("Scanning_for_0_blank_blocks_starting_in_block_1", resourceCulture); + } + } + + public static string Cannot_dump_empty_media { + get { + return ResourceManager.GetString("Cannot_dump_empty_media", resourceCulture); + } + } + + public static string Found_blank_block_0 { + get { + return ResourceManager.GetString("Found_blank_block_0", resourceCulture); + } + } + + public static string Raw_dumping_not_yet_supported_in_ATA_devices_continuing { + get { + return ResourceManager.GetString("Raw_dumping_not_yet_supported_in_ATA_devices_continuing", resourceCulture); + } + } + + public static string Raw_dumping_not_yet_supported_in_ATA_devices_aborting { + get { + return ResourceManager.GetString("Raw_dumping_not_yet_supported_in_ATA_devices_aborting", resourceCulture); + } + } + + public static string Requesting_ATA_IDENTIFY_DEVICE { + get { + return ResourceManager.GetString("Requesting_ATA_IDENTIFY_DEVICE", resourceCulture); + } + } + + public static string ERROR_Cannot_get_block_size_0 { + get { + return ResourceManager.GetString("ERROR_Cannot_get_block_size_0", resourceCulture); + } + } + + public static string Device_reports_0_cylinders_1_heads_2_sectors_per_track { + get { + return ResourceManager.GetString("Device_reports_0_cylinders_1_heads_2_sectors_per_track", resourceCulture); + } + } + + public static string Output_format_does_not_support_USB_descriptors { + get { + return ResourceManager.GetString("Output_format_does_not_support_USB_descriptors", resourceCulture); + } + } + + public static string Output_format_does_not_support_PCMCIA_CIS_descriptors { + get { + return ResourceManager.GetString("Output_format_does_not_support_PCMCIA_CIS_descriptors", resourceCulture); + } + } + + public static string Dump_Ata_Output_format_does_not_support_ATA_IDENTIFY_ { + get { + return ResourceManager.GetString("Dump_Ata_Output_format_does_not_support_ATA_IDENTIFY_", resourceCulture); + } + } + + public static string Reading_cylinder_0_head_1_sector_2_3_MiB_sec { + get { + return ResourceManager.GetString("Reading_cylinder_0_head_1_sector_2_3_MiB_sec", resourceCulture); + } + } + + public static string Error_reading_cylinder_0_head_1_sector_2 { + get { + return ResourceManager.GetString("Error_reading_cylinder_0_head_1_sector_2", resourceCulture); + } + } + + public static string Reading_PCMCIA_CIS { + get { + return ResourceManager.GetString("Reading_PCMCIA_CIS", resourceCulture); + } + } + + public static string Decoding_PCMCIA_CIS { + get { + return ResourceManager.GetString("Decoding_PCMCIA_CIS", resourceCulture); + } + } + + public static string Unable_to_communicate_with_ATA_device { + get { + return ResourceManager.GetString("Unable_to_communicate_with_ATA_device", resourceCulture); + } + } + + public static string Device_not_in_database { + get { + return ResourceManager.GetString("Device_not_in_database", resourceCulture); + } + } + + public static string Device_in_database_since_0 { + get { + return ResourceManager.GetString("Device_in_database_since_0", resourceCulture); + } + } + + public static string Could_not_detect_image_format { + get { + return ResourceManager.GetString("Could_not_detect_image_format", resourceCulture); + } + } + + public static string Device_reports_current_profile_is_0 { + get { + return ResourceManager.GetString("Device_reports_current_profile_is_0", resourceCulture); + } + } + + public static string Device_reports_disc_has_0_blocks { + get { + return ResourceManager.GetString("Device_reports_disc_has_0_blocks", resourceCulture); + } + } + + public static string Reading_Physical_Format_Information { + get { + return ResourceManager.GetString("Reading_Physical_Format_Information", resourceCulture); + } + } + + public static string Dumping_Nintendo_GameCube_or_Wii_discs_is_not_yet_implemented { + get { + return ResourceManager.GetString("Dumping_Nintendo_GameCube_or_Wii_discs_is_not_yet_implemented", resourceCulture); + } + } + + public static string Reading_Disc_Manufacturing_Information { + get { + return ResourceManager.GetString("Reading_Disc_Manufacturing_Information", resourceCulture); + } + } + + public static string Dumping_Xbox_Game_Discs_requires_a_drive_with_Kreon_firmware { + get { + return ResourceManager.GetString("Dumping_Xbox_Game_Discs_requires_a_drive_with_Kreon_firmware", resourceCulture); + } + } + + public static string Reading_Lead_in_Copyright_Information { + get { + return ResourceManager.GetString("Reading_Lead_in_Copyright_Information", resourceCulture); + } + } + + public static string Drive_reports_no_copy_protection_on_disc { + get { + return ResourceManager.GetString("Drive_reports_no_copy_protection_on_disc", resourceCulture); + } + } + + public static string Drive_reports_the_disc_uses_copy_protection_The_dump_will_be_incorrect_unless_decryption_is_enabled { + get { + return ResourceManager.GetString("Drive_reports_the_disc_uses_copy_protection_The_dump_will_be_incorrect_unless_dec" + + "ryption_is_enabled", resourceCulture); + } + } + + public static string Drive_reports_disc_uses_CSS_copy_protection { + get { + return ResourceManager.GetString("Drive_reports_disc_uses_CSS_copy_protection", resourceCulture); + } + } + + public static string Reading_disc_key { + get { + return ResourceManager.GetString("Reading_disc_key", resourceCulture); + } + } + + public static string Disc_and_drive_authentication_succeeded { + get { + return ResourceManager.GetString("Disc_and_drive_authentication_succeeded", resourceCulture); + } + } + + public static string Disc_and_drive_regions_match { + get { + return ResourceManager.GetString("Disc_and_drive_regions_match", resourceCulture); + } + } + + public static string Disc_and_drive_regions_do_not_match_The_dump_will_be_incorrect { + get { + return ResourceManager.GetString("Disc_and_drive_regions_do_not_match_The_dump_will_be_incorrect", resourceCulture); + } + } + + public static string Decrypting_disc_key { + get { + return ResourceManager.GetString("Decrypting_disc_key", resourceCulture); + } + } + + public static string Decryption_of_disc_key_succeeded { + get { + return ResourceManager.GetString("Decryption_of_disc_key_succeeded", resourceCulture); + } + } + + public static string Decryption_of_disc_key_failed { + get { + return ResourceManager.GetString("Decryption_of_disc_key_failed", resourceCulture); + } + } + + public static string Drive_reports_0_copy_protection_not_yet_supported_dump_incorrect { + get { + return ResourceManager.GetString("Drive_reports_0_copy_protection_not_yet_supported_dump_incorrect", resourceCulture); + } + } + + public static string Reading_Burst_Cutting_Area { + get { + return ResourceManager.GetString("Reading_Burst_Cutting_Area", resourceCulture); + } + } + + public static string Reading_Disc_Description_Structure { + get { + return ResourceManager.GetString("Reading_Disc_Description_Structure", resourceCulture); + } + } + + public static string Reading_Spare_Area_Information { + get { + return ResourceManager.GetString("Reading_Spare_Area_Information", resourceCulture); + } + } + + public static string Reading_Pre_Recorded_Information { + get { + return ResourceManager.GetString("Reading_Pre_Recorded_Information", resourceCulture); + } + } + + public static string Reading_Media_Identifier { + get { + return ResourceManager.GetString("Reading_Media_Identifier", resourceCulture); + } + } + + public static string Reading_Recordable_Physical_Information { + get { + return ResourceManager.GetString("Reading_Recordable_Physical_Information", resourceCulture); + } + } + + public static string Reading_ADdress_In_Pregroove { + get { + return ResourceManager.GetString("Reading_ADdress_In_Pregroove", resourceCulture); + } + } + + public static string Reading_Disc_Control_Blocks { + get { + return ResourceManager.GetString("Reading_Disc_Control_Blocks", resourceCulture); + } + } + + public static string Reading_Disc_Definition_Structure { + get { + return ResourceManager.GetString("Reading_Disc_Definition_Structure", resourceCulture); + } + } + + public static string Resuming_CHS_devices_is_currently_not_supported { + get { + return ResourceManager.GetString("Resuming_CHS_devices_is_currently_not_supported", resourceCulture); + } + } + + public static string Resume_specifies_tape_but_device_is_not_tape { + get { + return ResourceManager.GetString("Resume_specifies_tape_but_device_is_not_tape", resourceCulture); + } + } + + public static string Resume_specifies_not_tape_but_device_is_tape { + get { + return ResourceManager.GetString("Resume_specifies_not_tape_but_device_is_tape", resourceCulture); + } + } + + public static string Resume_specifies_removable_but_device_is_non_removable { + get { + return ResourceManager.GetString("Resume_specifies_removable_but_device_is_non_removable", resourceCulture); + } + } + + public static string Resume_specifies_non_removable_but_device_is_removable { + get { + return ResourceManager.GetString("Resume_specifies_non_removable_but_device_is_removable", resourceCulture); + } + } + + public static string Resume_file_different_number_of_blocks_not_continuing { + get { + return ResourceManager.GetString("Resume_file_different_number_of_blocks_not_continuing", resourceCulture); + } + } + + public static string Resume_file_different_manufacturer_not_continuing { + get { + return ResourceManager.GetString("Resume_file_different_manufacturer_not_continuing", resourceCulture); + } + } + + public static string Resume_file_different_model_not_continuing { + get { + return ResourceManager.GetString("Resume_file_different_model_not_continuing", resourceCulture); + } + } + + public static string Resume_file_different_serial_number_not_continuing { + get { + return ResourceManager.GetString("Resume_file_different_serial_number_not_continuing", resourceCulture); + } + } + + public static string Resume_file_different_firmware_revision_not_continuing { + get { + return ResourceManager.GetString("Resume_file_different_firmware_revision_not_continuing", resourceCulture); + } + } + + public static string Found_corrupt_resume_file_cannot_continue { + get { + return ResourceManager.GetString("Found_corrupt_resume_file_cannot_continue", resourceCulture); + } + } + + public static string Please_insert_media_in_drive { + get { + return ResourceManager.GetString("Please_insert_media_in_drive", resourceCulture); + } + } + + public static string Error_testing_unit_was_ready_0 { + get { + return ResourceManager.GetString("Error_testing_unit_was_ready_0", resourceCulture); + } + } + + public static string Unknown_testing_unit_was_ready { + get { + return ResourceManager.GetString("Unknown_testing_unit_was_ready", resourceCulture); + } + } + + public static string Tapes_cannot_be_dumped_raw { + get { + return ResourceManager.GetString("Tapes_cannot_be_dumped_raw", resourceCulture); + } + } + + public static string The_specified_plugin_does_not_support_storing_streaming_tape_images { + get { + return ResourceManager.GetString("The_specified_plugin_does_not_support_storing_streaming_tape_images", resourceCulture); + } + } + + public static string Raw_dumping_is_not_supported_in_MMC_or_SD_devices_Continuing { + get { + return ResourceManager.GetString("Raw_dumping_is_not_supported_in_MMC_or_SD_devices_Continuing", resourceCulture); + } + } + + public static string Raw_dumping_is_not_supported_in_MMC_or_SD_devices_Aborting { + get { + return ResourceManager.GetString("Raw_dumping_is_not_supported_in_MMC_or_SD_devices_Aborting", resourceCulture); + } + } + + public static string Reading_CSD { + get { + return ResourceManager.GetString("Reading_CSD", resourceCulture); + } + } + + public static string Reading_Extended_CSD { + get { + return ResourceManager.GetString("Reading_Extended_CSD", resourceCulture); + } + } + + public static string Reading_OCR { + get { + return ResourceManager.GetString("Reading_OCR", resourceCulture); + } + } + + public static string Reading_SCR { + get { + return ResourceManager.GetString("Reading_SCR", resourceCulture); + } + } + + public static string Reading_CID { + get { + return ResourceManager.GetString("Reading_CID", resourceCulture); + } + } + + public static string Unable_to_get_device_size { + get { + return ResourceManager.GetString("Unable_to_get_device_size", resourceCulture); + } + } + + public static string Device_reports_0_blocks { + get { + return ResourceManager.GetString("Device_reports_0_blocks", resourceCulture); + } + } + + public static string Error_0_reopening_device { + get { + return ResourceManager.GetString("Error_0_reopening_device", resourceCulture); + } + } + + public static string ERROR_Cannot_get_blocks_to_read_device_error_0 { + get { + return ResourceManager.GetString("ERROR_Cannot_get_blocks_to_read_device_error_0", resourceCulture); + } + } + + public static string DumBuffered_OS_reads_are_not_working_trying_direct_commands { + get { + return ResourceManager.GetString("DumBuffered_OS_reads_are_not_working_trying_direct_commands", resourceCulture); + } + } + + public static string ERROR_Could_not_read_from_device_device_error_0 { + get { + return ResourceManager.GetString("ERROR_Could_not_read_from_device_device_error_0", resourceCulture); + } + } + + public static string Device_error_0_trying_to_read_from_device { + get { + return ResourceManager.GetString("Device_error_0_trying_to_read_from_device", resourceCulture); + } + } + + public static string Device_can_read_0_blocks_at_a_time_using_OS_buffered_reads { + get { + return ResourceManager.GetString("Device_can_read_0_blocks_at_a_time_using_OS_buffered_reads", resourceCulture); + } + } + + public static string Device_can_read_0_blocks_using_sequential_commands { + get { + return ResourceManager.GetString("Device_can_read_0_blocks_using_sequential_commands", resourceCulture); + } + } + + public static string Cannot_write_CID_to_output_image { + get { + return ResourceManager.GetString("Cannot_write_CID_to_output_image", resourceCulture); + } + } + + public static string Cannot_write_CSD_to_output_image { + get { + return ResourceManager.GetString("Cannot_write_CSD_to_output_image", resourceCulture); + } + } + + public static string Cannot_write_Extended_CSD_to_output_image { + get { + return ResourceManager.GetString("Cannot_write_Extended_CSD_to_output_image", resourceCulture); + } + } + + public static string Cannot_write_OCR_to_output_image { + get { + return ResourceManager.GetString("Cannot_write_OCR_to_output_image", resourceCulture); + } + } + + public static string Cannot_write_SCR_to_output_image { + get { + return ResourceManager.GetString("Cannot_write_SCR_to_output_image", resourceCulture); + } + } + + public static string Drive_has_status_error_please_correct_Sense_follows { + get { + return ResourceManager.GetString("Drive_has_status_error_please_correct_Sense_follows", resourceCulture); + } + } + + public static string Rewinding_please_wait { + get { + return ResourceManager.GetString("Rewinding_please_wait", resourceCulture); + } + } + + public static string Drive_could_not_rewind_please_correct_Sense_follows { + get { + return ResourceManager.GetString("Drive_could_not_rewind_please_correct_Sense_follows", resourceCulture); + } + } + + public static string Could_not_get_position_Sense_follows { + get { + return ResourceManager.GetString("Could_not_get_position_Sense_follows", resourceCulture); + } + } + + public static string Drive_not_in_partition_0_Rewinding_please_wait { + get { + return ResourceManager.GetString("Drive_not_in_partition_0_Rewinding_please_wait", resourceCulture); + } + } + + public static string Drive_could_not_rewind_to_partition_0_but_no_error_occurred { + get { + return ResourceManager.GetString("Drive_could_not_rewind_to_partition_0_but_no_error_occurred", resourceCulture); + } + } + + public static string Drive_could_not_return_back_Sense_follows { + get { + return ResourceManager.GetString("Drive_could_not_return_back_Sense_follows", resourceCulture); + } + } + + public static string Drive_could_not_read_Sense_follows { + get { + return ResourceManager.GetString("Drive_could_not_read_Sense_follows", resourceCulture); + } + } + + public static string Blocksize_changed_to_0_bytes_at_block_1 { + get { + return ResourceManager.GetString("Blocksize_changed_to_0_bytes_at_block_1", resourceCulture); + } + } + + public static string Drive_could_not_go_back_one_block_Sense_follows { + get { + return ResourceManager.GetString("Drive_could_not_go_back_one_block_Sense_follows", resourceCulture); + } + } + + public static string Cannot_read_device_dont_know_why_exiting { + get { + return ResourceManager.GetString("Cannot_read_device_dont_know_why_exiting", resourceCulture); + } + } + + public static string Positioning_tape_to_block_1 { + get { + return ResourceManager.GetString("Positioning_tape_to_block_1", resourceCulture); + } + } + + public static string LOCATE_LONG_works { + get { + return ResourceManager.GetString("LOCATE_LONG_works", resourceCulture); + } + } + + public static string LOCATE_works { + get { + return ResourceManager.GetString("LOCATE_works", resourceCulture); + } + } + + public static string Positioning_tape_to_block_0 { + get { + return ResourceManager.GetString("Positioning_tape_to_block_0", resourceCulture); + } + } + + public static string Could_not_check_current_position_unable_to_resume_If_you_want_to_continue_use_force { + get { + return ResourceManager.GetString("Could_not_check_current_position_unable_to_resume_If_you_want_to_continue_use_for" + + "ce", resourceCulture); + } + } + + public static string Could_not_check_current_position_unable_to_resume_Dumping_from_the_start { + get { + return ResourceManager.GetString("Could_not_check_current_position_unable_to_resume_Dumping_from_the_start", resourceCulture); + } + } + + public static string Current_position_is_not_as_expected_unable_to_resume_If_you_want_to_continue_use_force { + get { + return ResourceManager.GetString("Current_position_is_not_as_expected_unable_to_resume_If_you_want_to_continue_use_" + + "force", resourceCulture); + } + } + + public static string Current_position_is_not_as_expected_unable_to_resume_Dumping_from_the_start { + get { + return ResourceManager.GetString("Current_position_is_not_as_expected_unable_to_resume_Dumping_from_the_start", resourceCulture); + } + } + + public static string Cannot_reposition_tape_unable_to_resume_If_you_want_to_continue_use_force { + get { + return ResourceManager.GetString("Cannot_reposition_tape_unable_to_resume_If_you_want_to_continue_use_force", resourceCulture); + } + } + + public static string Cannot_reposition_tape_unable_to_resume_Dumping_from_the_start { + get { + return ResourceManager.GetString("Cannot_reposition_tape_unable_to_resume_Dumping_from_the_start", resourceCulture); + } + } + + public static string Error_setting_output_image_in_tape_mode_not_continuing { + get { + return ResourceManager.GetString("Error_setting_output_image_in_tape_mode_not_continuing", resourceCulture); + } + } + + public static string Finished_partition_0 { + get { + return ResourceManager.GetString("Finished_partition_0", resourceCulture); + } + } + + public static string Seeking_to_partition_0 { + get { + return ResourceManager.GetString("Seeking_to_partition_0", resourceCulture); + } + } + + public static string Reading_block_0_1_MiB_sec { + get { + return ResourceManager.GetString("Reading_block_0_1_MiB_sec", resourceCulture); + } + } + + public static string Cannot_dump_a_blank_tape { + get { + return ResourceManager.GetString("Cannot_dump_a_blank_tape", resourceCulture); + } + } + + public static string Found_end_of_tape_partition { + get { + return ResourceManager.GetString("Found_end_of_tape_partition", resourceCulture); + } + } + + public static string Blank_block_found_end_of_tape { + get { + return ResourceManager.GetString("Blank_block_found_end_of_tape", resourceCulture); + } + } + + public static string Changed_to_file_0_at_block_1 { + get { + return ResourceManager.GetString("Changed_to_file_0_at_block_1", resourceCulture); + } + } + + public static string Drive_could_not_read_block_0_Sense_cannot_be_decoded_look_at_log_for_dump { + get { + return ResourceManager.GetString("Drive_could_not_read_block_0_Sense_cannot_be_decoded_look_at_log_for_dump", resourceCulture); + } + } + + public static string Drive_could_not_read_block_0_Sense_bytes_follow { + get { + return ResourceManager.GetString("Drive_could_not_read_block_0_Sense_bytes_follow", resourceCulture); + } + } + + public static string Drive_could_not_read_block_0_Sense_follow_1_2 { + get { + return ResourceManager.GetString("Drive_could_not_read_block_0_Sense_follow_1_2", resourceCulture); + } + } + + public static string Drive_could_not_read_block_0_Sense_follows { + get { + return ResourceManager.GetString("Drive_could_not_read_block_0_Sense_follows", resourceCulture); + } + } + + public static string Could_not_check_current_position_continuing { + get { + return ResourceManager.GetString("Could_not_check_current_position_continuing", resourceCulture); + } + } + + public static string Current_position_is_not_as_expected_continuing { + get { + return ResourceManager.GetString("Current_position_is_not_as_expected_continuing", resourceCulture); + } + } + + public static string Cannot_position_tape_to_block_0 { + get { + return ResourceManager.GetString("Cannot_position_tape_to_block_0", resourceCulture); + } + } + + public static string Block_0_could_not_be_read { + get { + return ResourceManager.GetString("Block_0_could_not_be_read", resourceCulture); + } + } + + public static string Because_of_commands_sent_dumping_XGD_must_be_administrative_Cannot_continue { + get { + return ResourceManager.GetString("Because_of_commands_sent_dumping_XGD_must_be_administrative_Cannot_continue", resourceCulture); + } + } + + public static string Cannot_dump_XGD_without_administrative_privileges { + get { + return ResourceManager.GetString("Cannot_dump_XGD_without_administrative_privileges", resourceCulture); + } + } + + public static string Cannot_get_disc_capacity { + get { + return ResourceManager.GetString("Cannot_get_disc_capacity", resourceCulture); + } + } + + public static string Cannot_get_PFI { + get { + return ResourceManager.GetString("Cannot_get_PFI", resourceCulture); + } + } + + public static string Reading_Xbox_Security_Sector { + get { + return ResourceManager.GetString("Reading_Xbox_Security_Sector", resourceCulture); + } + } + + public static string Cannot_get_Xbox_Security_Sector_not_continuing { + get { + return ResourceManager.GetString("Cannot_get_Xbox_Security_Sector_not_continuing", resourceCulture); + } + } + + public static string Decoding_Xbox_Security_Sector { + get { + return ResourceManager.GetString("Decoding_Xbox_Security_Sector", resourceCulture); + } + } + + public static string Cannot_decode_Xbox_Security_Sector_not_continuing { + get { + return ResourceManager.GetString("Cannot_decode_Xbox_Security_Sector_not_continuing", resourceCulture); + } + } + + public static string Getting_video_partition_size { + get { + return ResourceManager.GetString("Getting_video_partition_size", resourceCulture); + } + } + + public static string Locking_drive { + get { + return ResourceManager.GetString("Locking_drive", resourceCulture); + } + } + + public static string Cannot_lock_drive_not_continuing { + get { + return ResourceManager.GetString("Cannot_lock_drive_not_continuing", resourceCulture); + } + } + + public static string Video_partition_total_size_0_sectors { + get { + return ResourceManager.GetString("Video_partition_total_size_0_sectors", resourceCulture); + } + } + + public static string Cannot_get_DMI { + get { + return ResourceManager.GetString("Cannot_get_DMI", resourceCulture); + } + } + + public static string Video_partition_is_too_big_did_lock_work_Trying_cold_values { + get { + return ResourceManager.GetString("Video_partition_is_too_big_did_lock_work_Trying_cold_values", resourceCulture); + } + } + + public static string Cannot_get_video_partition_size_not_continuing { + get { + return ResourceManager.GetString("Cannot_get_video_partition_size_not_continuing", resourceCulture); + } + } + + public static string Getting_game_partition_size { + get { + return ResourceManager.GetString("Getting_game_partition_size", resourceCulture); + } + } + + public static string Unlocking_drive_Xtreme_ { + get { + return ResourceManager.GetString("Unlocking_drive_Xtreme_", resourceCulture); + } + } + + public static string Cannot_unlock_drive_not_continuing { + get { + return ResourceManager.GetString("Cannot_unlock_drive_not_continuing", resourceCulture); + } + } + + public static string Game_partition_total_size_0_sectors { + get { + return ResourceManager.GetString("Game_partition_total_size_0_sectors", resourceCulture); + } + } + + public static string Getting_middle_zone_size { + get { + return ResourceManager.GetString("Getting_middle_zone_size", resourceCulture); + } + } + + public static string Unlocking_drive_Wxripper { + get { + return ResourceManager.GetString("Unlocking_drive_Wxripper", resourceCulture); + } + } + + public static string Getting_disc_size { + get { + return ResourceManager.GetString("Getting_disc_size", resourceCulture); + } + } + + public static string Unlocked_total_size_0_sectors { + get { + return ResourceManager.GetString("Unlocked_total_size_0_sectors", resourceCulture); + } + } + + public static string Cannot_decode_PFI { + get { + return ResourceManager.GetString("Cannot_decode_PFI", resourceCulture); + } + } + + public static string WxRipper_PFI_Data_Area_Start_PSN_0_sectors { + get { + return ResourceManager.GetString("WxRipper_PFI_Data_Area_Start_PSN_0_sectors", resourceCulture); + } + } + + public static string WxRipper_PFI_Layer_0_End_PSN_0_sectors { + get { + return ResourceManager.GetString("WxRipper_PFI_Layer_0_End_PSN_0_sectors", resourceCulture); + } + } + + public static string Video_layer_0_size_0_sectors { + get { + return ResourceManager.GetString("Video_layer_0_size_0_sectors", resourceCulture); + } + } + + public static string Video_layer_1_size_0_sectors { + get { + return ResourceManager.GetString("Video_layer_1_size_0_sectors", resourceCulture); + } + } + + public static string Middle_zone_size_0_sectors { + get { + return ResourceManager.GetString("Middle_zone_size_0_sectors", resourceCulture); + } + } + + public static string Game_data_size_0_sectors { + get { + return ResourceManager.GetString("Game_data_size_0_sectors", resourceCulture); + } + } + + public static string Total_size_0_sectors { + get { + return ResourceManager.GetString("Total_size_0_sectors", resourceCulture); + } + } + + public static string Real_layer_break_0 { + get { + return ResourceManager.GetString("Real_layer_break_0", resourceCulture); + } + } + + public static string Cannot_read_medium_aborting_scan { + get { + return ResourceManager.GetString("Cannot_read_medium_aborting_scan", resourceCulture); + } + } + + public static string Using_SCSI_READ_12_command { + get { + return ResourceManager.GetString("Using_SCSI_READ_12_command", resourceCulture); + } + } + + public static string Reading_game_partition { + get { + return ResourceManager.GetString("Reading_game_partition", resourceCulture); + } + } + + public static string Writing_Middle_Zone_D_empty { + get { + return ResourceManager.GetString("Writing_Middle_Zone_D_empty", resourceCulture); + } + } + + public static string Reading_Video_Layer_1 { + get { + return ResourceManager.GetString("Reading_Video_Layer_1", resourceCulture); + } + } + + public static string Error_code_equals_0 { + get { + return ResourceManager.GetString("Error_code_equals_0", resourceCulture); + } + } + + public static string Error_0_querying_ATA_IDENTIFY { + get { + return ResourceManager.GetString("Error_0_querying_ATA_IDENTIFY", resourceCulture); + } + } + + public static string Error_0_querying_ATA_PACKET_IDENTIFY { + get { + return ResourceManager.GetString("Error_0_querying_ATA_PACKET_IDENTIFY", resourceCulture); + } + } + + public static string SCSI_error_0 { + get { + return ResourceManager.GetString("SCSI_error_0", resourceCulture); + } + } + + public static string Unknown_device_type_0_cannot_get_information { + get { + return ResourceManager.GetString("Unknown_device_type_0_cannot_get_information", resourceCulture); + } + } + + public static string Trying_READ_SECTORS_in_CHS_mode { + get { + return ResourceManager.GetString("Trying_READ_SECTORS_in_CHS_mode", resourceCulture); + } + } + + public static string Sense_0_Status_1_Error_2_Length_3 { + get { + return ResourceManager.GetString("Sense_0_Status_1_Error_2_Length_3", resourceCulture); + } + } + + public static string Trying_READ_SECTORS_RETRY_in_CHS_mode { + get { + return ResourceManager.GetString("Trying_READ_SECTORS_RETRY_in_CHS_mode", resourceCulture); + } + } + + public static string Trying_READ_DMA_in_CHS_mode { + get { + return ResourceManager.GetString("Trying_READ_DMA_in_CHS_mode", resourceCulture); + } + } + + public static string Trying_READ_DMA_RETRY_in_CHS_mode { + get { + return ResourceManager.GetString("Trying_READ_DMA_RETRY_in_CHS_mode", resourceCulture); + } + } + + public static string Trying_SEEK_in_CHS_mode { + get { + return ResourceManager.GetString("Trying_SEEK_in_CHS_mode", resourceCulture); + } + } + + public static string Sense_0_Status_1_Error_2 { + get { + return ResourceManager.GetString("Sense_0_Status_1_Error_2", resourceCulture); + } + } + + public static string Trying_READ_SECTORS_in_LBA_mode { + get { + return ResourceManager.GetString("Trying_READ_SECTORS_in_LBA_mode", resourceCulture); + } + } + + public static string Trying_READ_SECTORS_RETRY_in_LBA_mode { + get { + return ResourceManager.GetString("Trying_READ_SECTORS_RETRY_in_LBA_mode", resourceCulture); + } + } + + public static string Trying_READ_DMA_in_LBA_mode { + get { + return ResourceManager.GetString("Trying_READ_DMA_in_LBA_mode", resourceCulture); + } + } + + public static string Trying_READ_DMA_RETRY_in_LBA_mode { + get { + return ResourceManager.GetString("Trying_READ_DMA_RETRY_in_LBA_mode", resourceCulture); + } + } + + public static string Trying_SEEK_in_LBA_mode { + get { + return ResourceManager.GetString("Trying_SEEK_in_LBA_mode", resourceCulture); + } + } + + public static string Trying_READ_SECTORS_in_LBA48_mode { + get { + return ResourceManager.GetString("Trying_READ_SECTORS_in_LBA48_mode", resourceCulture); + } + } + + public static string Trying_READ_DMA_in_LBA48_mode { + get { + return ResourceManager.GetString("Trying_READ_DMA_in_LBA48_mode", resourceCulture); + } + } + + public static string Trying_READ_LONG_in_CHS_mode { + get { + return ResourceManager.GetString("Trying_READ_LONG_in_CHS_mode", resourceCulture); + } + } + + public static string Trying_READ_LONG_RETRY_in_CHS_mode { + get { + return ResourceManager.GetString("Trying_READ_LONG_RETRY_in_CHS_mode", resourceCulture); + } + } + + public static string Trying_READ_LONG_in_LBA_mode { + get { + return ResourceManager.GetString("Trying_READ_LONG_in_LBA_mode", resourceCulture); + } + } + + public static string Trying_READ_LONG_RETRY_in_LBA_mode { + get { + return ResourceManager.GetString("Trying_READ_LONG_RETRY_in_LBA_mode", resourceCulture); + } + } + + public static string Have_you_previously_tried_with_a_GD_ROM_disc_and_did_the_computer_hang_or_crash_Q { + get { + return ResourceManager.GetString("Have_you_previously_tried_with_a_GD_ROM_disc_and_did_the_computer_hang_or_crash_Q" + + "", resourceCulture); + } + } + + public static string Ejecting_disc { + get { + return ResourceManager.GetString("Ejecting_disc", resourceCulture); + } + } + + public static string Please_insert_trap_disc_inside { + get { + return ResourceManager.GetString("Please_insert_trap_disc_inside", resourceCulture); + } + } + + public static string Press_any_key_to_continue { + get { + return ResourceManager.GetString("Press_any_key_to_continue", resourceCulture); + } + } + + public static string Sending_READ_FULL_TOC_to_the_device { + get { + return ResourceManager.GetString("Sending_READ_FULL_TOC_to_the_device", resourceCulture); + } + } + + public static string READ_FULL_TOC_failed { + get { + return ResourceManager.GetString("READ_FULL_TOC_failed", resourceCulture); + } + } + + public static string Could_not_decode_TOC { + get { + return ResourceManager.GetString("Could_not_decode_TOC", resourceCulture); + } + } + + public static string Cannot_find_lead_out { + get { + return ResourceManager.GetString("Cannot_find_lead_out", resourceCulture); + } + } + + public static string Trap_disc_shows_0_sectors { + get { + return ResourceManager.GetString("Trap_disc_shows_0_sectors", resourceCulture); + } + } + + public static string Trap_disc_doesnt_have_enough_sectors { + get { + return ResourceManager.GetString("Trap_disc_doesnt_have_enough_sectors", resourceCulture); + } + } + + public static string Stopping_motor { + get { + return ResourceManager.GetString("Stopping_motor", resourceCulture); + } + } + + public static string Please_MANUALLY_get_the_trap_disc_out_and_put_the_GD_ROM_disc_inside { + get { + return ResourceManager.GetString("Please_MANUALLY_get_the_trap_disc_out_and_put_the_GD_ROM_disc_inside", resourceCulture); + } + } + + public static string Waiting_5_seconds { + get { + return ResourceManager.GetString("Waiting_5_seconds", resourceCulture); + } + } + + public static string Lead_out_has_changed_this_drive_does_not_support_hot_swapping_discs { + get { + return ResourceManager.GetString("Lead_out_has_changed_this_drive_does_not_support_hot_swapping_discs", resourceCulture); + } + } + + public static string Reading_LBA_zero { + get { + return ResourceManager.GetString("Reading_LBA_zero", resourceCulture); + } + } + + public static string Success { + get { + return ResourceManager.GetString("Success", resourceCulture); + } + } + + public static string FAIL { + get { + return ResourceManager.GetString("FAIL", resourceCulture); + } + } + + public static string Reading_LBA_zero_as_audio_scrambled { + get { + return ResourceManager.GetString("Reading_LBA_zero_as_audio_scrambled", resourceCulture); + } + } + + public static string Reading_LBA_100000_as_audio { + get { + return ResourceManager.GetString("Reading_LBA_100000_as_audio", resourceCulture); + } + } + + public static string Reading_LBA_50000_as_audio { + get { + return ResourceManager.GetString("Reading_LBA_50000_as_audio", resourceCulture); + } + } + + public static string Reading_LBA_450000_as_audio { + get { + return ResourceManager.GetString("Reading_LBA_450000_as_audio", resourceCulture); + } + } + + public static string Reading_LBA_400000_as_audio { + get { + return ResourceManager.GetString("Reading_LBA_400000_as_audio", resourceCulture); + } + } + + public static string Reading_LBA_45000_as_audio { + get { + return ResourceManager.GetString("Reading_LBA_45000_as_audio", resourceCulture); + } + } + + public static string Reading_LBA_44990_as_audio { + get { + return ResourceManager.GetString("Reading_LBA_44990_as_audio", resourceCulture); + } + } + + public static string Reading_LBA_100000_as_audio_with_PQ_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_100000_as_audio_with_PQ_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_50000_as_audio_with_PQ_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_50000_as_audio_with_PQ_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_450000_as_audio_with_PQ_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_450000_as_audio_with_PQ_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_400000_as_audio_with_PQ_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_400000_as_audio_with_PQ_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_45000_as_audio_with_PQ_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_45000_as_audio_with_PQ_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_44990_as_audio_with_PQ_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_44990_as_audio_with_PQ_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_100000_as_audio_with_RW_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_100000_as_audio_with_RW_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_50000_as_audio_with_RW_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_50000_as_audio_with_RW_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_450000_as_audio_with_RW_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_450000_as_audio_with_RW_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_400000_as_audio_with_RW_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_400000_as_audio_with_RW_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_45000_as_audio_with_RW_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_45000_as_audio_with_RW_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_44990_as_audio_with_RW_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_44990_as_audio_with_RW_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_100000 { + get { + return ResourceManager.GetString("Reading_LBA_100000", resourceCulture); + } + } + + public static string Reading_LBA_50000 { + get { + return ResourceManager.GetString("Reading_LBA_50000", resourceCulture); + } + } + + public static string Reading_LBA_450000 { + get { + return ResourceManager.GetString("Reading_LBA_450000", resourceCulture); + } + } + + public static string Reading_LBA_400000 { + get { + return ResourceManager.GetString("Reading_LBA_400000", resourceCulture); + } + } + + public static string Reading_LBA_45000 { + get { + return ResourceManager.GetString("Reading_LBA_45000", resourceCulture); + } + } + + public static string Reading_LBA_44990 { + get { + return ResourceManager.GetString("Reading_LBA_44990", resourceCulture); + } + } + + public static string Reading_LBA_100000_with_PQ_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_100000_with_PQ_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_50000_with_PQ_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_50000_with_PQ_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_450000_with_PQ_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_450000_with_PQ_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_400000_with_PQ_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_400000_with_PQ_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_45000_with_PQ_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_45000_with_PQ_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_44990_with_PQ_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_44990_with_PQ_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_100000_with_RW_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_100000_with_RW_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_50000_with_RW_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_50000_with_RW_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_450000_with_RW_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_450000_with_RW_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_400000_with_RW_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_400000_with_RW_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_45000_with_RW_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_45000_with_RW_subchannel", resourceCulture); + } + } + + public static string Reading_LBA_44990_with_RW_subchannel { + get { + return ResourceManager.GetString("Reading_LBA_44990_with_RW_subchannel", resourceCulture); + } + } + + public static string Test_read_whole_high_density_area_proceed_Q { + get { + return ResourceManager.GetString("Test_read_whole_high_density_area_proceed_Q", resourceCulture); + } + } + + public static string Reading_LBA_0_of_1 { + get { + return ResourceManager.GetString("Reading_LBA_0_of_1", resourceCulture); + } + } + + public static string Querying_MMC_GET_CONFIGURATION { + get { + return ResourceManager.GetString("Querying_MMC_GET_CONFIGURATION", resourceCulture); + } + } + + public static string Querying_SCSI_READ_CAPACITY { + get { + return ResourceManager.GetString("Querying_SCSI_READ_CAPACITY", resourceCulture); + } + } + + public static string Querying_SCSI_READ_CAPACITY_16 { + get { + return ResourceManager.GetString("Querying_SCSI_READ_CAPACITY_16", resourceCulture); + } + } + + public static string Querying_SCSI_MODE_SENSE_10 { + get { + return ResourceManager.GetString("Querying_SCSI_MODE_SENSE_10", resourceCulture); + } + } + + public static string Querying_SCSI_MODE_SENSE { + get { + return ResourceManager.GetString("Querying_SCSI_MODE_SENSE", resourceCulture); + } + } + + public static string Querying_CD_TOC { + get { + return ResourceManager.GetString("Querying_CD_TOC", resourceCulture); + } + } + + public static string Querying_CD_Full_TOC { + get { + return ResourceManager.GetString("Querying_CD_Full_TOC", resourceCulture); + } + } + + public static string Querying_CD_ATIP { + get { + return ResourceManager.GetString("Querying_CD_ATIP", resourceCulture); + } + } + + public static string Querying_CD_PMA { + get { + return ResourceManager.GetString("Querying_CD_PMA", resourceCulture); + } + } + + public static string Sense_equals_0 { + get { + return ResourceManager.GetString("Sense_equals_0", resourceCulture); + } + } + + public static string Querying_DVD_PFI { + get { + return ResourceManager.GetString("Querying_DVD_PFI", resourceCulture); + } + } + + public static string Querying_DVD_DMI { + get { + return ResourceManager.GetString("Querying_DVD_DMI", resourceCulture); + } + } + + public static string Querying_DVD_CMI { + get { + return ResourceManager.GetString("Querying_DVD_CMI", resourceCulture); + } + } + + public static string Querying_DVD_BCA { + get { + return ResourceManager.GetString("Querying_DVD_BCA", resourceCulture); + } + } + + public static string Querying_DVD_AACS { + get { + return ResourceManager.GetString("Querying_DVD_AACS", resourceCulture); + } + } + + public static string Querying_BD_BCA { + get { + return ResourceManager.GetString("Querying_BD_BCA", resourceCulture); + } + } + + public static string Querying_Disc_Definition_Structure { + get { + return ResourceManager.GetString("Querying_Disc_Definition_Structure", resourceCulture); + } + } + + public static string Querying_Spare_Area_Information { + get { + return ResourceManager.GetString("Querying_Spare_Area_Information", resourceCulture); + } + } + + public static string Querying_BD_DDS { + get { + return ResourceManager.GetString("Querying_BD_DDS", resourceCulture); + } + } + + public static string Querying_BD_SAI { + get { + return ResourceManager.GetString("Querying_BD_SAI", resourceCulture); + } + } + + public static string Querying_DVD_PRI { + get { + return ResourceManager.GetString("Querying_DVD_PRI", resourceCulture); + } + } + + public static string Querying_DVD_Media_ID { + get { + return ResourceManager.GetString("Querying_DVD_Media_ID", resourceCulture); + } + } + + public static string Querying_DVD_Embossed_PFI { + get { + return ResourceManager.GetString("Querying_DVD_Embossed_PFI", resourceCulture); + } + } + + public static string Querying_DVD_ADIP { + get { + return ResourceManager.GetString("Querying_DVD_ADIP", resourceCulture); + } + } + + public static string Querying_DVD_DCB { + get { + return ResourceManager.GetString("Querying_DVD_DCB", resourceCulture); + } + } + + public static string Querying_HD_DVD_CMI { + get { + return ResourceManager.GetString("Querying_HD_DVD_CMI", resourceCulture); + } + } + + public static string Querying_DVD_Layer_Capacity { + get { + return ResourceManager.GetString("Querying_DVD_Layer_Capacity", resourceCulture); + } + } + + public static string Querying_BD_Disc_Information { + get { + return ResourceManager.GetString("Querying_BD_Disc_Information", resourceCulture); + } + } + + public static string Querying_BD_PAC { + get { + return ResourceManager.GetString("Querying_BD_PAC", resourceCulture); + } + } + + public static string Trying_SCSI_READ_CD_scrambled { + get { + return ResourceManager.GetString("Trying_SCSI_READ_CD_scrambled", resourceCulture); + } + } + + public static string Trying_SCSI_READ_6 { + get { + return ResourceManager.GetString("Trying_SCSI_READ_6", resourceCulture); + } + } + + public static string Trying_SCSI_READ_10 { + get { + return ResourceManager.GetString("Trying_SCSI_READ_10", resourceCulture); + } + } + + public static string Trying_SCSI_READ_12 { + get { + return ResourceManager.GetString("Trying_SCSI_READ_12", resourceCulture); + } + } + + public static string Trying_SCSI_READ_16 { + get { + return ResourceManager.GetString("Trying_SCSI_READ_16", resourceCulture); + } + } + + public static string Trying_SCSI_READ_CD { + get { + return ResourceManager.GetString("Trying_SCSI_READ_CD", resourceCulture); + } + } + + public static string Trying_SCSI_READ_CD_MSF { + get { + return ResourceManager.GetString("Trying_SCSI_READ_CD_MSF", resourceCulture); + } + } + + public static string Trying_SCSI_READ_CD_full_sector { + get { + return ResourceManager.GetString("Trying_SCSI_READ_CD_full_sector", resourceCulture); + } + } + + public static string Trying_SCSI_READ_CD_MSF_full_sector { + get { + return ResourceManager.GetString("Trying_SCSI_READ_CD_MSF_full_sector", resourceCulture); + } + } + + public static string Trying_to_read_CD_Track_1_pre_gap { + get { + return ResourceManager.GetString("Trying_to_read_CD_Track_1_pre_gap", resourceCulture); + } + } + + public static string Trying_to_read_CD_Lead_In { + get { + return ResourceManager.GetString("Trying_to_read_CD_Lead_In", resourceCulture); + } + } + + public static string Trying_to_read_CD_Lead_Out { + get { + return ResourceManager.GetString("Trying_to_read_CD_Lead_Out", resourceCulture); + } + } + + public static string Trying_to_read_C2_Pointers { + get { + return ResourceManager.GetString("Trying_to_read_C2_Pointers", resourceCulture); + } + } + + public static string Trying_to_read_subchannels { + get { + return ResourceManager.GetString("Trying_to_read_subchannels", resourceCulture); + } + } + + public static string Trying_to_read_subchannels_with_C2_Pointers { + get { + return ResourceManager.GetString("Trying_to_read_subchannels_with_C2_Pointers", resourceCulture); + } + } + + public static string Plextor_READ_CD_DA { + get { + return ResourceManager.GetString("Plextor_READ_CD_DA", resourceCulture); + } + } + + public static string Trying_Pioneer_READ_CD_DA { + get { + return ResourceManager.GetString("Trying_Pioneer_READ_CD_DA", resourceCulture); + } + } + + public static string Trying_Pioneer_READ_CD_DA_MSF { + get { + return ResourceManager.GetString("Trying_Pioneer_READ_CD_DA_MSF", resourceCulture); + } + } + + public static string Trying_NEC_READ_CD_DA { + get { + return ResourceManager.GetString("Trying_NEC_READ_CD_DA", resourceCulture); + } + } + + public static string Trying_Plextor_trick_to_raw_read_DVDs { + get { + return ResourceManager.GetString("Trying_Plextor_trick_to_raw_read_DVDs", resourceCulture); + } + } + + public static string Trying_HL_DT_ST_aka_LG_trick_to_raw_read_DVDs { + get { + return ResourceManager.GetString("Trying_HL_DT_ST_aka_LG_trick_to_raw_read_DVDs", resourceCulture); + } + } + + public static string Trying_MediaTek_READ_DRAM_command { + get { + return ResourceManager.GetString("Trying_MediaTek_READ_DRAM_command", resourceCulture); + } + } + + public static string Trying_MediaTek_READ_DRAM_command_for_Lead_Out { + get { + return ResourceManager.GetString("Trying_MediaTek_READ_DRAM_command_for_Lead_Out", resourceCulture); + } + } + + public static string Could_not_find_second_session_Have_you_inserted_the_correct_type_of_disc { + get { + return ResourceManager.GetString("Could_not_find_second_session_Have_you_inserted_the_correct_type_of_disc", resourceCulture); + } + } + + public static string First_session_Lead_Out_starts_at_0_1_2 { + get { + return ResourceManager.GetString("First_session_Lead_Out_starts_at_0_1_2", resourceCulture); + } + } + + public static string Second_session_starts_at_0_1_2 { + get { + return ResourceManager.GetString("Second_session_starts_at_0_1_2", resourceCulture); + } + } + + public static string Trying_SCSI_READ_CD_in_first_session_Lead_Out { + get { + return ResourceManager.GetString("Trying_SCSI_READ_CD_in_first_session_Lead_Out", resourceCulture); + } + } + + public static string Trying_SCSI_READ_CD_in_second_session_Lead_In { + get { + return ResourceManager.GetString("Trying_SCSI_READ_CD_in_second_session_Lead_In", resourceCulture); + } + } + + public static string Querying_SCSI_INQUIRY { + get { + return ResourceManager.GetString("Querying_SCSI_INQUIRY", resourceCulture); + } + } + + public static string Querying_list_of_SCSI_EVPDs { + get { + return ResourceManager.GetString("Querying_list_of_SCSI_EVPDs", resourceCulture); + } + } + + public static string Querying_SCSI_EVPD_pages { + get { + return ResourceManager.GetString("Querying_SCSI_EVPD_pages", resourceCulture); + } + } + + public static string Querying_SCSI_EVPD_0 { + get { + return ResourceManager.GetString("Querying_SCSI_EVPD_0", resourceCulture); + } + } + + public static string Querying_all_mode_pages_and_subpages_using_SCSI_MODE_SENSE_10 { + get { + return ResourceManager.GetString("Querying_all_mode_pages_and_subpages_using_SCSI_MODE_SENSE_10", resourceCulture); + } + } + + public static string Querying_all_mode_pages_and_subpages_using_SCSI_MODE_SENSE_6 { + get { + return ResourceManager.GetString("Querying_all_mode_pages_and_subpages_using_SCSI_MODE_SENSE_6", resourceCulture); + } + } + + public static string Trying_SCSI_READ_MEDIA_SERIAL_NUMBER { + get { + return ResourceManager.GetString("Trying_SCSI_READ_MEDIA_SERIAL_NUMBER", resourceCulture); + } + } + + public static string Trying_to_get_CID { + get { + return ResourceManager.GetString("Trying_to_get_CID", resourceCulture); + } + } + + public static string CID_obtained_correctly { + get { + return ResourceManager.GetString("CID_obtained_correctly", resourceCulture); + } + } + + public static string Could_not_read_CID { + get { + return ResourceManager.GetString("Could_not_read_CID", resourceCulture); + } + } + + public static string Trying_to_get_CSD { + get { + return ResourceManager.GetString("Trying_to_get_CSD", resourceCulture); + } + } + + public static string CSD_obtained_correctly { + get { + return ResourceManager.GetString("CSD_obtained_correctly", resourceCulture); + } + } + + public static string Could_not_read_CSD { + get { + return ResourceManager.GetString("Could_not_read_CSD", resourceCulture); + } + } + + public static string Trying_to_get_OCR { + get { + return ResourceManager.GetString("Trying_to_get_OCR", resourceCulture); + } + } + + public static string OCR_obtained_correctly { + get { + return ResourceManager.GetString("OCR_obtained_correctly", resourceCulture); + } + } + + public static string Could_not_read_OCR { + get { + return ResourceManager.GetString("Could_not_read_OCR", resourceCulture); + } + } + + public static string Trying_to_get_Extended_CSD { + get { + return ResourceManager.GetString("Trying_to_get_Extended_CSD", resourceCulture); + } + } + + public static string Extended_CSD_obtained_correctly { + get { + return ResourceManager.GetString("Extended_CSD_obtained_correctly", resourceCulture); + } + } + + public static string Could_not_read_Extended_CSD { + get { + return ResourceManager.GetString("Could_not_read_Extended_CSD", resourceCulture); + } + } + + public static string Trying_to_get_SCR { + get { + return ResourceManager.GetString("Trying_to_get_SCR", resourceCulture); + } + } + + public static string SCR_obtained_correctly { + get { + return ResourceManager.GetString("SCR_obtained_correctly", resourceCulture); + } + } + + public static string Could_not_read_SCR { + get { + return ResourceManager.GetString("Could_not_read_SCR", resourceCulture); + } + } + + public static string Querying_SCSI_READ_BLOCK_LIMITS { + get { + return ResourceManager.GetString("Querying_SCSI_READ_BLOCK_LIMITS", resourceCulture); + } + } + + public static string Querying_SCSI_REPORT_DENSITY_SUPPORT { + get { + return ResourceManager.GetString("Querying_SCSI_REPORT_DENSITY_SUPPORT", resourceCulture); + } + } + + public static string Querying_SCSI_REPORT_DENSITY_SUPPORT_for_medium_types { + get { + return ResourceManager.GetString("Querying_SCSI_REPORT_DENSITY_SUPPORT_for_medium_types", resourceCulture); + } + } + + public static string Querying_SCSI_REPORT_DENSITY_SUPPORT_for_current_media { + get { + return ResourceManager.GetString("Querying_SCSI_REPORT_DENSITY_SUPPORT_for_current_media", resourceCulture); + } + } + + public static string Querying_SCSI_REPORT_DENSITY_SUPPORT_for_medium_types_for_current_media { + get { + return ResourceManager.GetString("Querying_SCSI_REPORT_DENSITY_SUPPORT_for_medium_types_for_current_media", resourceCulture); + } + } + + public static string Seeking_to_sector_0 { + get { + return ResourceManager.GetString("Seeking_to_sector_0", resourceCulture); + } + } + + public static string Seeking_to_cylinder_0_head_1_sector_2 { + get { + return ResourceManager.GetString("Seeking_to_cylinder_0_head_1_sector_2", resourceCulture); + } + } + + public static string Scanning_never_supported_in_SSC { + get { + return ResourceManager.GetString("Scanning_never_supported_in_SSC", resourceCulture); + } + } + + public static string Error_trying_to_decode_TOC { + get { + return ResourceManager.GetString("Error_trying_to_decode_TOC", resourceCulture); + } + } + + public static string Using_MMC_READ_CD_command { + get { + return ResourceManager.GetString("Using_MMC_READ_CD_command", resourceCulture); + } + } + + public static string READ_CD_error_0 { + get { + return ResourceManager.GetString("READ_CD_error_0", resourceCulture); + } + } + + public static string Environment_does_not_support_setting_block_count_downgrading_to_OS_reading { + get { + return ResourceManager.GetString("Environment_does_not_support_setting_block_count_downgrading_to_OS_reading", resourceCulture); + } + } + + public static string Reading_0_sectors_at_a_time_using_OS_buffered_reads { + get { + return ResourceManager.GetString("Reading_0_sectors_at_a_time_using_OS_buffered_reads", resourceCulture); + } + } + + public static string Reading_0_sectors_using_sequential_single_commands { + get { + return ResourceManager.GetString("Reading_0_sectors_using_sequential_single_commands", resourceCulture); + } + } + + public static string Unknown_device_type_0 { + get { + return ResourceManager.GetString("Unknown_device_type_0", resourceCulture); + } + } + + public static string Device_needs_48_bit_LBA_commands_but_I_cant_issue_them_Aborting { + get { + return ResourceManager.GetString("Device_needs_48_bit_LBA_commands_but_I_cant_issue_them_Aborting", resourceCulture); + } + } + + public static string Device_needs_28_bit_LBA_commands_but_I_cant_issue_them_Aborting { + get { + return ResourceManager.GetString("Device_needs_28_bit_LBA_commands_but_I_cant_issue_them_Aborting", resourceCulture); + } + } + + public static string Device_needs_CHS_commands_but_I_cant_issue_them_Aborting { + get { + return ResourceManager.GetString("Device_needs_CHS_commands_but_I_cant_issue_them_Aborting", resourceCulture); + } + } + + public static string Using_ATA_READ_DMA_EXT_command { + get { + return ResourceManager.GetString("Using_ATA_READ_DMA_EXT_command", resourceCulture); + } + } + + public static string Using_ATA_READ_EXT_command { + get { + return ResourceManager.GetString("Using_ATA_READ_EXT_command", resourceCulture); + } + } + + public static string Using_ATA_READ_DMA_command_with_retries_LBA { + get { + return ResourceManager.GetString("Using_ATA_READ_DMA_command_with_retries_LBA", resourceCulture); + } + } + + public static string Using_ATA_READ_DMA_command_LBA { + get { + return ResourceManager.GetString("Using_ATA_READ_DMA_command_LBA", resourceCulture); + } + } + + public static string Using_ATA_READ_command_with_retries_LBA { + get { + return ResourceManager.GetString("Using_ATA_READ_command_with_retries_LBA", resourceCulture); + } + } + + public static string Using_ATA_READ_command_LBA { + get { + return ResourceManager.GetString("Using_ATA_READ_command_LBA", resourceCulture); + } + } + + public static string Using_ATA_READ_DMA_command_with_retries_CHS { + get { + return ResourceManager.GetString("Using_ATA_READ_DMA_command_with_retries_CHS", resourceCulture); + } + } + + public static string Using_ATA_READ_DMA_command_CHS { + get { + return ResourceManager.GetString("Using_ATA_READ_DMA_command_CHS", resourceCulture); + } + } + + public static string Using_ATA_READ_command_with_retries_CHS { + get { + return ResourceManager.GetString("Using_ATA_READ_command_with_retries_CHS", resourceCulture); + } + } + + public static string Using_ATA_READ_command_CHS { + get { + return ResourceManager.GetString("Using_ATA_READ_command_CHS", resourceCulture); + } + } + + public static string Could_not_get_a_working_read_command { + get { + return ResourceManager.GetString("Could_not_get_a_working_read_command", resourceCulture); + } + } + + public static string ATA_ERROR_0_STATUS_1 { + get { + return ResourceManager.GetString("ATA_ERROR_0_STATUS_1", resourceCulture); + } + } + + public static string Device_only_supports_SCSI_READ_6_but_has_more_than_0_blocks_1_blocks_total { + get { + return ResourceManager.GetString("Device_only_supports_SCSI_READ_6_but_has_more_than_0_blocks_1_blocks_total", resourceCulture); + } + } + + public static string Device_only_supports_SCSI_READ_10_but_has_more_than_0_blocks_1_blocks_total { + get { + return ResourceManager.GetString("Device_only_supports_SCSI_READ_10_but_has_more_than_0_blocks_1_blocks_total", resourceCulture); + } + } + + public static string Using_SCSI_READ_LONG_16_command { + get { + return ResourceManager.GetString("Using_SCSI_READ_LONG_16_command", resourceCulture); + } + } + + public static string Using_SCSI_READ_LONG_10_command { + get { + return ResourceManager.GetString("Using_SCSI_READ_LONG_10_command", resourceCulture); + } + } + + public static string Using_SyQuest_READ_LONG_10_command { + get { + return ResourceManager.GetString("Using_SyQuest_READ_LONG_10_command", resourceCulture); + } + } + + public static string Using_SyQuest_READ_LONG_6_command { + get { + return ResourceManager.GetString("Using_SyQuest_READ_LONG_6_command", resourceCulture); + } + } + + public static string Using_HL_DT_ST_raw_DVD_reading { + get { + return ResourceManager.GetString("Using_HL_DT_ST_raw_DVD_reading", resourceCulture); + } + } + + public static string Using_Plextor_raw_DVD_reading { + get { + return ResourceManager.GetString("Using_Plextor_raw_DVD_reading", resourceCulture); + } + } + + public static string Using_SCSI_READ_6_command { + get { + return ResourceManager.GetString("Using_SCSI_READ_6_command", resourceCulture); + } + } + + public static string Using_SCSI_READ_10_command { + get { + return ResourceManager.GetString("Using_SCSI_READ_10_command", resourceCulture); + } + } + + public static string Using_SCSI_READ_16_command { + get { + return ResourceManager.GetString("Using_SCSI_READ_16_command", resourceCulture); + } + } + + public static string Unable_to_get_media_capacity { + get { + return ResourceManager.GetString("Unable_to_get_media_capacity", resourceCulture); + } + } + + public static string Start_logging_at_0 { + get { + return ResourceManager.GetString("Start_logging_at_0", resourceCulture); + } + } + + public static string Running_as_superuser_Yes { + get { + return ResourceManager.GetString("Running_as_superuser_Yes", resourceCulture); + } + } + + public static string Running_as_superuser_No { + get { + return ResourceManager.GetString("Running_as_superuser_No", resourceCulture); + } + } + + public static string Remote_information { + get { + return ResourceManager.GetString("Remote_information", resourceCulture); + } + } + + public static string Server_0 { + get { + return ResourceManager.GetString("Server_0", resourceCulture); + } + } + + public static string Version_0 { + get { + return ResourceManager.GetString("Version_0", resourceCulture); + } + } + + public static string Operating_system_0_1 { + get { + return ResourceManager.GetString("Operating_system_0_1", resourceCulture); + } + } + + public static string Architecture_0 { + get { + return ResourceManager.GetString("Architecture_0", resourceCulture); + } + } + + public static string Protocol_version_0 { + get { + return ResourceManager.GetString("Protocol_version_0", resourceCulture); + } + } + + public static string Log_section_separator { + get { + return ResourceManager.GetString("Log_section_separator", resourceCulture); + } + } + + public static string Device_information { + get { + return ResourceManager.GetString("Device_information", resourceCulture); + } + } + + public static string Manufacturer_0 { + get { + return ResourceManager.GetString("Manufacturer_0", resourceCulture); + } + } + + public static string Model_0 { + get { + return ResourceManager.GetString("Model_0", resourceCulture); + } + } + + public static string Firmware_revision_0 { + get { + return ResourceManager.GetString("Firmware_revision_0", resourceCulture); + } + } + + public static string Serial_number_0 { + get { + return ResourceManager.GetString("Serial_number_0", resourceCulture); + } + } + + public static string Removable_device_0 { + get { + return ResourceManager.GetString("Removable_device_0", resourceCulture); + } + } + + public static string Device_type_0 { + get { + return ResourceManager.GetString("Device_type_0", resourceCulture); + } + } + + public static string CompactFlash_device_0 { + get { + return ResourceManager.GetString("CompactFlash_device_0", resourceCulture); + } + } + + public static string PCMCIA_device_0 { + get { + return ResourceManager.GetString("PCMCIA_device_0", resourceCulture); + } + } + + public static string USB_device_0 { + get { + return ResourceManager.GetString("USB_device_0", resourceCulture); + } + } + + public static string USB_manufacturer_0 { + get { + return ResourceManager.GetString("USB_manufacturer_0", resourceCulture); + } + } + + public static string USB_product_0 { + get { + return ResourceManager.GetString("USB_product_0", resourceCulture); + } + } + + public static string USB_serial_0 { + get { + return ResourceManager.GetString("USB_serial_0", resourceCulture); + } + } + + public static string USB_vendor_ID_0 { + get { + return ResourceManager.GetString("USB_vendor_ID_0", resourceCulture); + } + } + + public static string USB_product_ID_0 { + get { + return ResourceManager.GetString("USB_product_ID_0", resourceCulture); + } + } + + public static string FireWire_device_0 { + get { + return ResourceManager.GetString("FireWire_device_0", resourceCulture); + } + } + + public static string FireWire_vendor_0 { + get { + return ResourceManager.GetString("FireWire_vendor_0", resourceCulture); + } + } + + public static string FireWire_model_0 { + get { + return ResourceManager.GetString("FireWire_model_0", resourceCulture); + } + } + + public static string FireWire_GUID_0 { + get { + return ResourceManager.GetString("FireWire_GUID_0", resourceCulture); + } + } + + public static string FireWire_vendor_ID_0 { + get { + return ResourceManager.GetString("FireWire_vendor_ID_0", resourceCulture); + } + } + + public static string FireWire_product_ID_0 { + get { + return ResourceManager.GetString("FireWire_product_ID_0", resourceCulture); + } + } + + public static string Dumping_progress_log { + get { + return ResourceManager.GetString("Dumping_progress_log", resourceCulture); + } + } + + public static string End_logging_at_0 { + get { + return ResourceManager.GetString("End_logging_at_0", resourceCulture); + } + } + + public static string Start_error_logging_at_0 { + get { + return ResourceManager.GetString("Start_error_logging_at_0", resourceCulture); + } + } + + public static string ATA_command_0_operating_system_error_1 { + get { + return ResourceManager.GetString("ATA_command_0_operating_system_error_1", resourceCulture); + } + } + + public static string ATA_command_0_error_status_1_error_2 { + get { + return ResourceManager.GetString("ATA_command_0_error_status_1_error_2", resourceCulture); + } + } + + public static string ATA_reading_CHS_0_1_2_operating_system_error_3 { + get { + return ResourceManager.GetString("ATA_reading_CHS_0_1_2_operating_system_error_3", resourceCulture); + } + } + + public static string ATA_reading_CHS_0_1_2_error_status_3_error_4 { + get { + return ResourceManager.GetString("ATA_reading_CHS_0_1_2_error_status_3_error_4", resourceCulture); + } + } + + public static string ATA_reading_LBA_0_operating_system_error_1 { + get { + return ResourceManager.GetString("ATA_reading_LBA_0_operating_system_error_1", resourceCulture); + } + } + + public static string ATA_reading_LBA_0_error_status_1_error_2 { + get { + return ResourceManager.GetString("ATA_reading_LBA_0_error_status_1_error_2", resourceCulture); + } + } + + public static string SCSI_command_0_operating_system_error_1 { + get { + return ResourceManager.GetString("SCSI_command_0_operating_system_error_1", resourceCulture); + } + } + + public static string SCSI_command_0_error_SENSE_1_ASC_2_ASCQ_3_4_5 { + get { + return ResourceManager.GetString("SCSI_command_0_error_SENSE_1_ASC_2_ASCQ_3_4_5", resourceCulture); + } + } + + public static string SCSI_command_0_error_SENSE_1_ASC_2_ASCQ_3_4 { + get { + return ResourceManager.GetString("SCSI_command_0_error_SENSE_1_ASC_2_ASCQ_3_4", resourceCulture); + } + } + + public static string SCSI_command_0_error_1_2 { + get { + return ResourceManager.GetString("SCSI_command_0_error_1_2", resourceCulture); + } + } + + public static string SCSI_command_0_error_1 { + get { + return ResourceManager.GetString("SCSI_command_0_error_1", resourceCulture); + } + } + + public static string SCSI_reading_LBA_0_operating_system_error_1 { + get { + return ResourceManager.GetString("SCSI_reading_LBA_0_operating_system_error_1", resourceCulture); + } + } + + public static string SCSI_reading_LBA_0_error_SENSE_1_ASC_2_ASCQ_3_4_5 { + get { + return ResourceManager.GetString("SCSI_reading_LBA_0_error_SENSE_1_ASC_2_ASCQ_3_4_5", resourceCulture); + } + } + + public static string SCSI_reading_LBA_0_error_SENSE_1_ASC_2_ASCQ_3_4 { + get { + return ResourceManager.GetString("SCSI_reading_LBA_0_error_SENSE_1_ASC_2_ASCQ_3_4", resourceCulture); + } + } + + public static string SCSI_reading_LBA_0_error_1_2 { + get { + return ResourceManager.GetString("SCSI_reading_LBA_0_error_1_2", resourceCulture); + } + } + + public static string SCSI_reading_LBA_0_error_1 { + get { + return ResourceManager.GetString("SCSI_reading_LBA_0_error_1", resourceCulture); + } + } + + public static string SD_MMC_command_0_operating_system_error_1 { + get { + return ResourceManager.GetString("SD_MMC_command_0_operating_system_error_1", resourceCulture); + } + } + + public static string SD_MMC_command_0_error_1 { + get { + return ResourceManager.GetString("SD_MMC_command_0_error_1", resourceCulture); + } + } + + public static string SD_MMC_reading_LBA_0_byte_addressed_operating_system_error_1 { + get { + return ResourceManager.GetString("SD_MMC_reading_LBA_0_byte_addressed_operating_system_error_1", resourceCulture); + } + } + + public static string SD_MMC_reading_LBA_0_byte_addressed_error_1 { + get { + return ResourceManager.GetString("SD_MMC_reading_LBA_0_byte_addressed_error_1", resourceCulture); + } + } + + public static string SD_MMC_reading_LBA_0_block_addressed_operating_system_error_1 { + get { + return ResourceManager.GetString("SD_MMC_reading_LBA_0_block_addressed_operating_system_error_1", resourceCulture); + } + } + + public static string SD_MMC_reading_LBA_0_block_addressed_error_1 { + get { + return ResourceManager.GetString("SD_MMC_reading_LBA_0_block_addressed_error_1", resourceCulture); + } + } + + public static string Start_subchannel_logging_at_0 { + get { + return ResourceManager.GetString("Start_subchannel_logging_at_0", resourceCulture); + } + } + + public static string Data_length_is_invalid { + get { + return ResourceManager.GetString("Data_length_is_invalid", resourceCulture); + } + } + + public static string _GENERATED { + get { + return ResourceManager.GetString("_GENERATED", resourceCulture); + } + } + + public static string _FIXED { + get { + return ResourceManager.GetString("_FIXED", resourceCulture); + } + } + + public static string fixed_P_subchannel_using_weight_average { + get { + return ResourceManager.GetString("fixed_P_subchannel_using_weight_average", resourceCulture); + } + } + + public static string fixed_R_W_subchannels_writing_empty_data { + get { + return ResourceManager.GetString("fixed_R_W_subchannels_writing_empty_data", resourceCulture); + } + } + + public static string fixed_Q_subchannel_with_correct_ADR { + get { + return ResourceManager.GetString("fixed_Q_subchannel_with_correct_ADR", resourceCulture); + } + } + + public static string fixed_Q_subchannel_with_correct_CONTROL { + get { + return ResourceManager.GetString("fixed_Q_subchannel_with_correct_CONTROL", resourceCulture); + } + } + + public static string fixed_Q_subchannel_with_correct_ZERO { + get { + return ResourceManager.GetString("fixed_Q_subchannel_with_correct_ZERO", resourceCulture); + } + } + + public static string fixed_Q_subchannel_with_correct_TNO { + get { + return ResourceManager.GetString("fixed_Q_subchannel_with_correct_TNO", resourceCulture); + } + } + + public static string fixed_Q_subchannel_with_correct_INDEX { + get { + return ResourceManager.GetString("fixed_Q_subchannel_with_correct_INDEX", resourceCulture); + } + } + + public static string fixed_Q_subchannel_with_correct_RELATIVE_POSITION { + get { + return ResourceManager.GetString("fixed_Q_subchannel_with_correct_RELATIVE_POSITION", resourceCulture); + } + } + + public static string fixed_Q_subchannel_with_correct_ABSOLUTE_POSITION { + get { + return ResourceManager.GetString("fixed_Q_subchannel_with_correct_ABSOLUTE_POSITION", resourceCulture); + } + } + + public static string fixed_Q_subchannel_with_correct_CRC { + get { + return ResourceManager.GetString("fixed_Q_subchannel_with_correct_CRC", resourceCulture); + } + } + + public static string fixed_Q_subchannel_with_known_good_MCN { + get { + return ResourceManager.GetString("fixed_Q_subchannel_with_known_good_MCN", resourceCulture); + } + } + + public static string fixed_Q_subchannel_with_known_good_ISRC { + get { + return ResourceManager.GetString("fixed_Q_subchannel_with_known_good_ISRC", resourceCulture); + } + } + + public static string Lead_In { + get { + return ResourceManager.GetString("Lead_In", resourceCulture); + } + } + + public static string Program { + get { + return ResourceManager.GetString("Program", resourceCulture); + } + } + + public static string _0_1_2_LBA_3_4_area_5 { + get { + return ResourceManager.GetString("_0_1_2_LBA_3_4_area_5", resourceCulture); + } + } + + public static string TOC_says_disc_type_is_CD_i { + get { + return ResourceManager.GetString("TOC_says_disc_type_is_CD_i", resourceCulture); + } + } + + public static string TOC_says_disc_type_is_CD_ROM_XA { + get { + return ResourceManager.GetString("TOC_says_disc_type_is_CD_ROM_XA", resourceCulture); + } + } + + public static string Disc_has_audio_and_data_two_sessions_all_data_second_CD_Plus { + get { + return ResourceManager.GetString("Disc_has_audio_and_data_two_sessions_all_data_second_CD_Plus", resourceCulture); + } + } + + public static string Disc_has_only_audio_in_a_session_CD_Digital_Audio { + get { + return ResourceManager.GetString("Disc_has_only_audio_in_a_session_CD_Digital_Audio", resourceCulture); + } + } + + public static string Disc_has_only_data_in_a_session_CD_ROM { + get { + return ResourceManager.GetString("Disc_has_only_data_in_a_session_CD_ROM", resourceCulture); + } + } + + public static string Disc_has_video_tracks_CD_Video { + get { + return ResourceManager.GetString("Disc_has_video_tracks_CD_Video", resourceCulture); + } + } + + public static string Disc_has_a_mode_two_data_track_CD_ROM_XA { + get { + return ResourceManager.GetString("Disc_has_a_mode_two_data_track_CD_ROM_XA", resourceCulture); + } + } + + public static string Disc_has_hidden_CD_i_pregap_CD_i_Ready { + get { + return ResourceManager.GetString("Disc_has_hidden_CD_i_pregap_CD_i_Ready", resourceCulture); + } + } + + public static string Found_Photo_CD_description_file { + get { + return ResourceManager.GetString("Found_Photo_CD_description_file", resourceCulture); + } + } + + public static string Found_Mega_Sega_CD_IP_BIN { + get { + return ResourceManager.GetString("Found_Mega_Sega_CD_IP_BIN", resourceCulture); + } + } + + public static string Found_Sega_Saturn_IP_BIN { + get { + return ResourceManager.GetString("Found_Sega_Saturn_IP_BIN", resourceCulture); + } + } + + public static string Found_Sega_Dreamcast_IP_BIN { + get { + return ResourceManager.GetString("Found_Sega_Dreamcast_IP_BIN", resourceCulture); + } + } + + public static string PlayStation_2_boot_sectors_SHA256_0 { + get { + return ResourceManager.GetString("PlayStation_2_boot_sectors_SHA256_0", resourceCulture); + } + } + + public static string Found_Sony_PlayStation_2_boot_sectors { + get { + return ResourceManager.GetString("Found_Sony_PlayStation_2_boot_sectors", resourceCulture); + } + } + + public static string Found_Opera_filesystem { + get { + return ResourceManager.GetString("Found_Opera_filesystem", resourceCulture); + } + } + + public static string Found_FM_Towns_boot { + get { + return ResourceManager.GetString("Found_FM_Towns_boot", resourceCulture); + } + } + + public static string Found_Playdia_copyright { + get { + return ResourceManager.GetString("Found_Playdia_copyright", resourceCulture); + } + } + + public static string Found_PC_Engine_CD_signature { + get { + return ResourceManager.GetString("Found_PC_Engine_CD_signature", resourceCulture); + } + } + + public static string Found_PC_FX_copyright { + get { + return ResourceManager.GetString("Found_PC_FX_copyright", resourceCulture); + } + } + + public static string Found_Atari_signature { + get { + return ResourceManager.GetString("Found_Atari_signature", resourceCulture); + } + } + + public static string Found_Sega_Dreamcast_IP_BIN_on_second_session { + get { + return ResourceManager.GetString("Found_Sega_Dreamcast_IP_BIN_on_second_session", resourceCulture); + } + } + + public static string Found_VideoNow_Color_frame { + get { + return ResourceManager.GetString("Found_VideoNow_Color_frame", resourceCulture); + } + } + + public static string Found_enhanced_graphics_RW_packet { + get { + return ResourceManager.GetString("Found_enhanced_graphics_RW_packet", resourceCulture); + } + } + + public static string Found_graphics_RW_packet { + get { + return ResourceManager.GetString("Found_graphics_RW_packet", resourceCulture); + } + } + + public static string Found_MIDI_RW_packet { + get { + return ResourceManager.GetString("Found_MIDI_RW_packet", resourceCulture); + } + } + + public static string Found_CD32_TM_file_in_root { + get { + return ResourceManager.GetString("Found_CD32_TM_file_in_root", resourceCulture); + } + } + + public static string Found_CDTV_TM_file_in_root { + get { + return ResourceManager.GetString("Found_CDTV_TM_file_in_root", resourceCulture); + } + } + + public static string Found_correct_IPL_TXT_file_in_root { + get { + return ResourceManager.GetString("Found_correct_IPL_TXT_file_in_root", resourceCulture); + } + } + + public static string Found_Video_CD_description_file { + get { + return ResourceManager.GetString("Found_Video_CD_description_file", resourceCulture); + } + } + + public static string Found_Super_Video_CD_description_file { + get { + return ResourceManager.GetString("Found_Super_Video_CD_description_file", resourceCulture); + } + } + + public static string Found_China_Video_Disc_description_file { + get { + return ResourceManager.GetString("Found_China_Video_Disc_description_file", resourceCulture); + } + } + + public static string Found_correct_SYSTEM_CNF_file_in_root_PS1 { + get { + return ResourceManager.GetString("Found_correct_SYSTEM_CNF_file_in_root_PS1", resourceCulture); + } + } + + public static string Found_correct_SYSTEM_CNF_file_in_root_PS2 { + get { + return ResourceManager.GetString("Found_correct_SYSTEM_CNF_file_in_root_PS2", resourceCulture); + } + } + + public static string Found_Sony_PlayStation_2_boot_sectors_DVD { + get { + return ResourceManager.GetString("Found_Sony_PlayStation_2_boot_sectors_DVD", resourceCulture); + } + } + + public static string Found_Sony_PlayStation_3_boot_sectors { + get { + return ResourceManager.GetString("Found_Sony_PlayStation_3_boot_sectors", resourceCulture); + } + } + + public static string Found_Sony_PlayStation_3_boot_sectors_DVD { + get { + return ResourceManager.GetString("Found_Sony_PlayStation_3_boot_sectors_DVD", resourceCulture); + } + } + + public static string Found_Sony_PlayStation_4_boot_sectors { + get { + return ResourceManager.GetString("Found_Sony_PlayStation_4_boot_sectors", resourceCulture); + } + } + + public static string Blu_ray_type_XG4_setting_disc_type_XGD4 { + get { + return ResourceManager.GetString("Blu_ray_type_XG4_setting_disc_type_XGD4", resourceCulture); + } + } + + public static string Found_Sony_PlayStation_5_boot_sectors { + get { + return ResourceManager.GetString("Found_Sony_PlayStation_5_boot_sectors", resourceCulture); + } + } + + public static string Blu_ray_type_BDU_setting_disc_type_UHD { + get { + return ResourceManager.GetString("Blu_ray_type_BDU_setting_disc_type_UHD", resourceCulture); + } + } + + public static string Could_not_find_VideoNow_Color_frame_offset { + get { + return ResourceManager.GetString("Could_not_find_VideoNow_Color_frame_offset", resourceCulture); + } + } + + public static string VideoNow_Color_frame_is_offset_0_bytes { + get { + return ResourceManager.GetString("VideoNow_Color_frame_is_offset_0_bytes", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_Recognized_Format_Layers_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_Recognized_Format_Layers_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_Write_Protection_Status_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_Write_Protection_Status_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_PFI_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_PFI_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_DMI_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_DMI_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_CMI_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_CMI_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_BCA_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_BCA_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_DVD_AACS_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_DVD_AACS_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_DDS_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_DDS_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_Medium_Status_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_Medium_Status_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_SAI_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_SAI_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_Last_Out_Border_RMD_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_Last_Out_Border_RMD_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_Disc_Key_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_Disc_Key_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_Sector_CMI_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_Sector_CMI_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_Pre_Recorded_Info_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_Pre_Recorded_Info_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_DVD_R_Media_ID_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_DVD_R_Media_ID_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_DVD_R_PFI_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_DVD_R_PFI_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_ADIP_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_ADIP_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_DCB_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_DCB_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_HD_DVD_CMI_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_HD_DVD_CMI_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_HD_DVD_R_Medium_Status { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_HD_DVD_R_Medium_Status", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_Last_RMD_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_Last_RMD_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_Layer_Capacity_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_Layer_Capacity_0", resourceCulture); + } + } + + public static string READ_MEDIA_SERIAL_NUMBER_0 { + get { + return ResourceManager.GetString("READ_MEDIA_SERIAL_NUMBER_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_Middle_Zone_Start_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_Middle_Zone_Start_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_Jump_Interval_Size_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_Jump_Interval_Size_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_Manual_Layer_Jump_Start_LBA_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_Manual_Layer_Jump_Start_LBA_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_Remap_Anchor_Point_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_Remap_Anchor_Point_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_DI_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_DI_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_PAC_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_PAC_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_Cartridge_Status_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_Cartridge_Status_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_Raw_DFL_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_Raw_DFL_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_001b_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_001b_0", resourceCulture); + } + } + + public static string READ_DISC_STRUCTURE_010b_0 { + get { + return ResourceManager.GetString("READ_DISC_STRUCTURE_010b_0", resourceCulture); + } + } + + public static string READ_TOC_PMA_ATIP_TOC_0 { + get { + return ResourceManager.GetString("READ_TOC_PMA_ATIP_TOC_0", resourceCulture); + } + } + + public static string READ_TOC_PMA_ATIP_ATIP_0 { + get { + return ResourceManager.GetString("READ_TOC_PMA_ATIP_ATIP_0", resourceCulture); + } + } + + public static string READ_TOC_PMA_ATIP_Session_Info_0 { + get { + return ResourceManager.GetString("READ_TOC_PMA_ATIP_Session_Info_0", resourceCulture); + } + } + + public static string READ_TOC_PMA_ATIP_Raw_TOC_0 { + get { + return ResourceManager.GetString("READ_TOC_PMA_ATIP_Raw_TOC_0", resourceCulture); + } + } + + public static string READ_TOC_PMA_ATIP_PMA_0 { + get { + return ResourceManager.GetString("READ_TOC_PMA_ATIP_PMA_0", resourceCulture); + } + } + + public static string READ_TOC_PMA_ATIP_CD_TEXT_0 { + get { + return ResourceManager.GetString("READ_TOC_PMA_ATIP_CD_TEXT_0", resourceCulture); + } + } + + public static string KREON_EXTRACT_SS_0 { + get { + return ResourceManager.GetString("KREON_EXTRACT_SS_0", resourceCulture); + } + } + + public static string READ_DISC_INFORMATION_000b_0 { + get { + return ResourceManager.GetString("READ_DISC_INFORMATION_000b_0", resourceCulture); + } + } + + public static string Found_new_ISRC_0_for_track_1 { + get { + return ResourceManager.GetString("Found_new_ISRC_0_for_track_1", resourceCulture); + } + } + + public static string ISRC_for_track_0_changed_from_1_to_2 { + get { + return ResourceManager.GetString("ISRC_for_track_0_changed_from_1_to_2", resourceCulture); + } + } + + public static string Found_new_MCN_0 { + get { + return ResourceManager.GetString("Found_new_MCN_0", resourceCulture); + } + } + + public static string MCN_changed_from_0_to_1 { + get { + return ResourceManager.GetString("MCN_changed_from_0_to_1", resourceCulture); + } + } + + public static string Pregap_for_track_0_set_to_1_sectors { + get { + return ResourceManager.GetString("Pregap_for_track_0_set_to_1_sectors", resourceCulture); + } + } + + public static string Setting_index_0_for_track_1_to_LBA_2 { + get { + return ResourceManager.GetString("Setting_index_0_for_track_1_to_LBA_2", resourceCulture); + } + } + + public static string Generating_subchannel_for_sector_0 { + get { + return ResourceManager.GetString("Generating_subchannel_for_sector_0", resourceCulture); + } + } + + public static string Hashing_media_tags { + get { + return ResourceManager.GetString("Hashing_media_tags", resourceCulture); + } + } + + public static string Error_0_reading_sector_1 { + get { + return ResourceManager.GetString("Error_0_reading_sector_1", resourceCulture); + } + } + + public static string Hashing_sector_0_of_1 { + get { + return ResourceManager.GetString("Hashing_sector_0_of_1", resourceCulture); + } + } + + public static string Hashing_partition_0 { + get { + return ResourceManager.GetString("Hashing_partition_0", resourceCulture); + } + } + + public static string Hashing_blocks_0_of_1 { + get { + return ResourceManager.GetString("Hashing_blocks_0_of_1", resourceCulture); + } + } + + public static string Hashing_file_0 { + get { + return ResourceManager.GetString("Hashing_file_0", resourceCulture); + } + } + + public static string Checking_filesystems { + get { + return ResourceManager.GetString("Checking_filesystems", resourceCulture); + } + } + + public static string Mounting_0 { + get { + return ResourceManager.GetString("Mounting_0", resourceCulture); + } + } + + public static string Saving_metadata { + get { + return ResourceManager.GetString("Saving_metadata", resourceCulture); + } + } + + public static string Hashing_SuperCardPro_image { + get { + return ResourceManager.GetString("Hashing_SuperCardPro_image", resourceCulture); + } + } + + public static string SCP_image_do_not_same_number_tracks_0_disk_image_1_ignoring { + get { + return ResourceManager.GetString("SCP_image_do_not_same_number_tracks_0_disk_image_1_ignoring", resourceCulture); + } + } + + public static string SCP_image_do_not_same_number_heads_0_disk_image_1_ignoring { + get { + return ResourceManager.GetString("SCP_image_do_not_same_number_heads_0_disk_image_1_ignoring", resourceCulture); + } + } + + public static string Hashing_KryoFlux_images { + get { + return ResourceManager.GetString("Hashing_KryoFlux_images", resourceCulture); + } + } + + public static string KryoFlux_image_do_not_same_number_tracks_0_disk_image_1_ignoring { + get { + return ResourceManager.GetString("KryoFlux_image_do_not_same_number_tracks_0_disk_image_1_ignoring", resourceCulture); + } + } + + public static string KryoFlux_image_do_not_same_number_heads_0_disk_image_1_ignoring { + get { + return ResourceManager.GetString("KryoFlux_image_do_not_same_number_heads_0_disk_image_1_ignoring", resourceCulture); + } + } + + public static string Hashing_DiscFerret_image { + get { + return ResourceManager.GetString("Hashing_DiscFerret_image", resourceCulture); + } + } + + public static string DiscFerret_image_do_not_same_number_tracks_0_disk_image_1_ignoring { + get { + return ResourceManager.GetString("DiscFerret_image_do_not_same_number_tracks_0_disk_image_1_ignoring", resourceCulture); + } + } + + public static string DiscFerret_image_do_not_same_number_heads_0_disk_image_1_ignoring { + get { + return ResourceManager.GetString("DiscFerret_image_do_not_same_number_heads_0_disk_image_1_ignoring", resourceCulture); + } + } + + public static string Cannot_stat_0 { + get { + return ResourceManager.GetString("Cannot_stat_0", resourceCulture); + } + } + + public static string Hashing_file_0_1 { + get { + return ResourceManager.GetString("Hashing_file_0_1", resourceCulture); + } + } + + public static string Hashing_file_byte_0_of_1 { + get { + return ResourceManager.GetString("Hashing_file_byte_0_of_1", resourceCulture); + } + } + + public static string Track_0_of_1 { + get { + return ResourceManager.GetString("Track_0_of_1", resourceCulture); + } + } + + public static string Hashing_subchannel_sector_0_of_1 { + get { + return ResourceManager.GetString("Hashing_subchannel_sector_0_of_1", resourceCulture); + } + } + + public static string Hashing_image_file { + get { + return ResourceManager.GetString("Hashing_image_file", resourceCulture); + } + } + + public static string Hashing_image_file_byte_0_of_1 { + get { + return ResourceManager.GetString("Hashing_image_file_byte_0_of_1", resourceCulture); + } + } + + public static string The_specified_image_says_it_contains_an_optical_media_but_at_the_same_time_says_it_does_not_support_them { + get { + return ResourceManager.GetString("The_specified_image_says_it_contains_an_optical_media_but_at_the_same_time_says_i" + + "t_does_not_support_them", resourceCulture); + } + } + + public static string The_specified_image_says_it_contains_a_block_addressable_media_but_at_the_same_time_says_it_does_not_support_them { + get { + return ResourceManager.GetString("The_specified_image_says_it_contains_a_block_addressable_media_but_at_the_same_ti" + + "me_says_it_does_not_support_them", resourceCulture); + } + } + + public static string Please_open_an_issue_at_Github { + get { + return ResourceManager.GetString("Please_open_an_issue_at_Github", resourceCulture); + } + } + + public static string The_specified_image_says_it_contains_a_byte_addressable_media_but_at_the_same_time_says_it_does_not_support_them { + get { + return ResourceManager.GetString("The_specified_image_says_it_contains_a_byte_addressable_media_but_at_the_same_tim" + + "e_says_it_does_not_support_them", resourceCulture); + } + } + + public static string Not_overwriting_file_0 { + get { + return ResourceManager.GetString("Not_overwriting_file_0", resourceCulture); + } + } + + public static string Writing_0_to_1 { + get { + return ResourceManager.GetString("Writing_0_to_1", resourceCulture); + } + } + + public static string Unable_to_write_file_0 { + get { + return ResourceManager.GetString("Unable_to_write_file_0", resourceCulture); + } + } + + public static string Sectors_0 { + get { + return ResourceManager.GetString("Sectors_0", resourceCulture); + } + } + + public static string Entropying_sector_0 { + get { + return ResourceManager.GetString("Entropying_sector_0", resourceCulture); + } + } + + public static string Error_0_while_reading_sector_1_continuing { + get { + return ResourceManager.GetString("Error_0_while_reading_sector_1_continuing", resourceCulture); + } + } + + public static string _0_bytes { + get { + return ResourceManager.GetString("_0_bytes", resourceCulture); + } + } + + public static string The_selected_image_does_not_support_tracks { + get { + return ResourceManager.GetString("The_selected_image_does_not_support_tracks", resourceCulture); + } + } + + public static string Entropying_track_0_of_1 { + get { + return ResourceManager.GetString("Entropying_track_0_of_1", resourceCulture); + } + } + + public static string Track_0_has_1_sectors { + get { + return ResourceManager.GetString("Track_0_has_1_sectors", resourceCulture); + } + } + + public static string Entropying_sector_0_of_track_1 { + get { + return ResourceManager.GetString("Entropying_sector_0_of_track_1", resourceCulture); + } + } + + public static string Unable_to_get_separate_tracks_not_calculating_their_entropy { + get { + return ResourceManager.GetString("Unable_to_get_separate_tracks_not_calculating_their_entropy", resourceCulture); + } + } + + public static string Error_0_while_reading_data__not_continuing { + get { + return ResourceManager.GetString("Error_0_while_reading_data__not_continuing", resourceCulture); + } + } + + public static string error_code_0 { + get { + return ResourceManager.GetString("error_code_0", resourceCulture); + } + } + + public static string The_specified_device_cannot_be_found { + get { + return ResourceManager.GetString("The_specified_device_cannot_be_found", resourceCulture); + } + } + + public static string Not_enough_permissions_to_open_the_device { + get { + return ResourceManager.GetString("Not_enough_permissions_to_open_the_device", resourceCulture); + } + } + + public static string The_specified_device_is_in_use_by_another_process { + get { + return ResourceManager.GetString("The_specified_device_is_in_use_by_another_process", resourceCulture); + } + } + + public static string Cannot_open_the_device_in_writable_mode_as_needed_by_some_commands { + get { + return ResourceManager.GetString("Cannot_open_the_device_in_writable_mode_as_needed_by_some_commands", resourceCulture); + } + } + + public static string Tried_to_open_a_file_instead_of_a_device { + get { + return ResourceManager.GetString("Tried_to_open_a_file_instead_of_a_device", resourceCulture); + } + } + + public static string Trying_plugin_0 { + get { + return ResourceManager.GetString("Trying_plugin_0", resourceCulture); + } + } + + public static string Title_Index { + get { + return ResourceManager.GetString("Title_Index", resourceCulture); + } + } + + public static string Title_Image_indexes { + get { + return ResourceManager.GetString("Title_Image_indexes", resourceCulture); + } + } + + public static string Found_0_at_1 { + get { + return ResourceManager.GetString("Found_0_at_1", resourceCulture); + } + } + + public static string Found_0_at_zero { + get { + return ResourceManager.GetString("Found_0_at_zero", resourceCulture); + } + } + + public static string Trying_0_at_1 { + get { + return ResourceManager.GetString("Trying_0_at_1", resourceCulture); + } + } + + public static string Got_0_children { + get { + return ResourceManager.GetString("Got_0_children", resourceCulture); + } + } + + public static string Got_0_parents { + get { + return ResourceManager.GetString("Got_0_parents", resourceCulture); + } + } + + public static string Got_0_partitions { + get { + return ResourceManager.GetString("Got_0_partitions", resourceCulture); + } + } + + public static string Found_unknown_vendor_mode_page_0_subpage_1 { + get { + return ResourceManager.GetString("Found_unknown_vendor_mode_page_0_subpage_1", resourceCulture); + } + } + + public static string Found_unknown_vendor_mode_page_0 { + get { + return ResourceManager.GetString("Found_unknown_vendor_mode_page_0", resourceCulture); + } + } + + public static string Found_unknown_mode_page_0_subpage_1 { + get { + return ResourceManager.GetString("Found_unknown_mode_page_0_subpage_1", resourceCulture); + } + } + + public static string Found_unknown_mode_page_0 { + get { + return ResourceManager.GetString("Found_unknown_mode_page_0", resourceCulture); + } + } + + public static string Uploading_device_report { + get { + return ResourceManager.GetString("Uploading_device_report", resourceCulture); + } + } + + public static string Creating_main_database { + get { + return ResourceManager.GetString("Creating_main_database", resourceCulture); + } + } + + public static string Updating_main_database { + get { + return ResourceManager.GetString("Updating_main_database", resourceCulture); + } + } + + public static string Last_update_0 { + get { + return ResourceManager.GetString("Last_update_0", resourceCulture); + } + } + + public static string Error_0_when_trying_to_get_updated_entities { + get { + return ResourceManager.GetString("Error_0_when_trying_to_get_updated_entities", resourceCulture); + } + } + + public static string Adding_USB_vendors { + get { + return ResourceManager.GetString("Adding_USB_vendors", resourceCulture); + } + } + + public static string Added_0_usb_vendors { + get { + return ResourceManager.GetString("Added_0_usb_vendors", resourceCulture); + } + } + + public static string Adding_USB_products { + get { + return ResourceManager.GetString("Adding_USB_products", resourceCulture); + } + } + + public static string Added_0_usb_products { + get { + return ResourceManager.GetString("Added_0_usb_products", resourceCulture); + } + } + + public static string Adding_CompactDisc_read_offsets { + get { + return ResourceManager.GetString("Adding_CompactDisc_read_offsets", resourceCulture); + } + } + + public static string Added_0_CompactDisc_read_offsets { + get { + return ResourceManager.GetString("Added_0_CompactDisc_read_offsets", resourceCulture); + } + } + + public static string Adding_known_devices { + get { + return ResourceManager.GetString("Adding_known_devices", resourceCulture); + } + } + + public static string Added_0_known_devices { + get { + return ResourceManager.GetString("Added_0_known_devices", resourceCulture); + } + } + + public static string Adding_known_iNES_NES_2_0_headers { + get { + return ResourceManager.GetString("Adding_known_iNES_NES_2_0_headers", resourceCulture); + } + } + + public static string Added_0_known_iNES_NES_2_0_headers { + get { + return ResourceManager.GetString("Added_0_known_iNES_NES_2_0_headers", resourceCulture); + } + } + + public static string Updating_USB_vendors { + get { + return ResourceManager.GetString("Updating_USB_vendors", resourceCulture); + } + } + + public static string Modified_0_USB_vendors { + get { + return ResourceManager.GetString("Modified_0_USB_vendors", resourceCulture); + } + } + + public static string Updating_USB_products { + get { + return ResourceManager.GetString("Updating_USB_products", resourceCulture); + } + } + + public static string Modified_0_USB_products { + get { + return ResourceManager.GetString("Modified_0_USB_products", resourceCulture); + } + } + + public static string Updating_CompactDisc_read_offsets { + get { + return ResourceManager.GetString("Updating_CompactDisc_read_offsets", resourceCulture); + } + } + + public static string Modified_0_CompactDisc_read_offsets { + get { + return ResourceManager.GetString("Modified_0_CompactDisc_read_offsets", resourceCulture); + } + } + + public static string Updating_known_devices { + get { + return ResourceManager.GetString("Updating_known_devices", resourceCulture); + } + } + + public static string Modified_0_known_devices { + get { + return ResourceManager.GetString("Modified_0_known_devices", resourceCulture); + } + } + + public static string Updating_known_iNES_NES_2_0_headers { + get { + return ResourceManager.GetString("Updating_known_iNES_NES_2_0_headers", resourceCulture); + } + } + + public static string Modified_0_known_iNES_NES_2_0_headers { + get { + return ResourceManager.GetString("Modified_0_known_iNES_NES_2_0_headers", resourceCulture); + } + } + + public static string Exception_0_when_updating_database { + get { + return ResourceManager.GetString("Exception_0_when_updating_database", resourceCulture); + } + } + + public static string Saving_changes { + get { + return ResourceManager.GetString("Saving_changes", resourceCulture); + } + } + + public static string Exception_while_trying_to_save_statistics { + get { + return ResourceManager.GetString("Exception_while_trying_to_save_statistics", resourceCulture); + } + } + + public static string Uploading_statistics { + get { + return ResourceManager.GetString("Uploading_statistics", resourceCulture); + } + } + + public static string Uploading_partial_statistics_file_0 { + get { + return ResourceManager.GetString("Uploading_partial_statistics_file_0", resourceCulture); + } + } + + public static string Was_created_with_0_version_1_WithMarkup { + get { + return ResourceManager.GetString("Was_created_with_0_version_1_WithMarkup", resourceCulture); + } + } + + public static string Created_by_0_WithMarkup { + get { + return ResourceManager.GetString("Created_by_0_WithMarkup", resourceCulture); + } + } + + public static string Has_partitions { + get { + return ResourceManager.GetString("Has_partitions", resourceCulture); + } + } + + public static string Doesnt_have_partitions { + get { + return ResourceManager.GetString("Doesnt_have_partitions", resourceCulture); + } + } + + public static string Has_sessions { + get { + return ResourceManager.GetString("Has_sessions", resourceCulture); + } + } + + public static string Doesnt_have_sessions { + get { + return ResourceManager.GetString("Doesnt_have_sessions", resourceCulture); + } + } + + public static string Comments_0_WithMarkup { + get { + return ResourceManager.GetString("Comments_0_WithMarkup", resourceCulture); + } + } + + public static string Media_title_0_WithMarkup { + get { + return ResourceManager.GetString("Media_title_0_WithMarkup", resourceCulture); + } + } + + public static string Media_manufacturer_0_WithMarkup { + get { + return ResourceManager.GetString("Media_manufacturer_0_WithMarkup", resourceCulture); + } + } + + public static string Media_model_0_WithMarkup { + get { + return ResourceManager.GetString("Media_model_0_WithMarkup", resourceCulture); + } + } + + public static string Media_serial_number_0_WithMarkup { + get { + return ResourceManager.GetString("Media_serial_number_0_WithMarkup", resourceCulture); + } + } + + public static string Media_barcode_0_WithMarkup { + get { + return ResourceManager.GetString("Media_barcode_0_WithMarkup", resourceCulture); + } + } + + public static string Media_part_number_0_WithMarkup { + get { + return ResourceManager.GetString("Media_part_number_0_WithMarkup", resourceCulture); + } + } + + public static string Drive_manufacturer_0_WithMarkup { + get { + return ResourceManager.GetString("Drive_manufacturer_0_WithMarkup", resourceCulture); + } + } + + public static string Drive_model_0_WithMarkup { + get { + return ResourceManager.GetString("Drive_model_0_WithMarkup", resourceCulture); + } + } + + public static string Drive_firmware_info_0_WithMarkup { + get { + return ResourceManager.GetString("Drive_firmware_info_0_WithMarkup", resourceCulture); + } + } + + public static string Media_geometry_0_cylinders_1_heads_2_sectors_per_track_WithMarkup { + get { + return ResourceManager.GetString("Media_geometry_0_cylinders_1_heads_2_sectors_per_track_WithMarkup", resourceCulture); + } + } + + public static string Contains_0_readable_media_tags_WithMarkup { + get { + return ResourceManager.GetString("Contains_0_readable_media_tags_WithMarkup", resourceCulture); + } + } + + public static string Contains_0_readable_sector_tags_WithMarkup { + get { + return ResourceManager.GetString("Contains_0_readable_sector_tags_WithMarkup", resourceCulture); + } + } + + public static string Title_Manufacturer { + get { + return ResourceManager.GetString("Title_Manufacturer", resourceCulture); + } + } + + public static string Title_Model { + get { + return ResourceManager.GetString("Title_Model", resourceCulture); + } + } + + public static string Title_Serial { + get { + return ResourceManager.GetString("Title_Serial", resourceCulture); + } + } + + public static string Title_Software { + get { + return ResourceManager.GetString("Title_Software", resourceCulture); + } + } + + public static string Title_Version { + get { + return ResourceManager.GetString("Title_Version", resourceCulture); + } + } + + public static string Title_Operating_system { + get { + return ResourceManager.GetString("Title_Operating_system", resourceCulture); + } + } + + public static string Title_Dump_hardware_information { + get { + return ResourceManager.GetString("Title_Dump_hardware_information", resourceCulture); + } + } + + public static string Mapping_WithMarkup { + get { + return ResourceManager.GetString("Mapping_WithMarkup", resourceCulture); + } + } + + public static string SCSI_INQUIRY_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("SCSI_INQUIRY_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string ATA_IDENTIFY_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("ATA_IDENTIFY_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string ATAPI_IDENTIFY_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("ATAPI_IDENTIFY_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string SCSI_MODE_SENSE_10_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("SCSI_MODE_SENSE_10_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string SCSI_MODE_SENSE_6_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("SCSI_MODE_SENSE_6_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string CompactDisc_Table_of_Contents_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("CompactDisc_Table_of_Contents_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string CompactDisc_Absolute_Time_In_Pregroove_ATIP_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("CompactDisc_Absolute_Time_In_Pregroove_ATIP_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string CompactDisc_Lead_in_CD_Text_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("CompactDisc_Lead_in_CD_Text_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string CompactDisc_Media_Catalogue_Number_contained_in_image_0_WithMarkup { + get { + return ResourceManager.GetString("CompactDisc_Media_Catalogue_Number_contained_in_image_0_WithMarkup", resourceCulture); + } + } + + public static string DVD_RW_Pre_Recorded_Information_WithMarkup { + get { + return ResourceManager.GetString("DVD_RW_Pre_Recorded_Information_WithMarkup", resourceCulture); + } + } + + public static string DVD_Physical_Format_Information_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("DVD_Physical_Format_Information_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string DVD_RAM_Disc_Definition_Structure_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("DVD_RAM_Disc_Definition_Structure_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string DVD_R_Physical_Format_Information_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("DVD_R_Physical_Format_Information_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string Bluray_Disc_Information_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("Bluray_Disc_Information_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string Bluray_Disc_Definition_Structure_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("Bluray_Disc_Definition_Structure_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string PCMCIA_CIS_WithMarkup { + get { + return ResourceManager.GetString("PCMCIA_CIS_WithMarkup", resourceCulture); + } + } + + public static string SecureDigital_CID_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("SecureDigital_CID_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string SecureDigital_CSD_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("SecureDigital_CSD_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string SecureDigital_SCR_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("SecureDigital_SCR_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string SecureDigital_OCR_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("SecureDigital_OCR_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string MultiMediaCard_CID_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("MultiMediaCard_CID_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string MultiMediaCard_CSD_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("MultiMediaCard_CSD_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string MultiMediaCard_Extended_CSD_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("MultiMediaCard_Extended_CSD_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string MultiMediaCard_OCR_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("MultiMediaCard_OCR_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string Xbox_Physical_Format_Information_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("Xbox_Physical_Format_Information_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string Xbox_DMI_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("Xbox_DMI_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string Xbox_360_DMI_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("Xbox_360_DMI_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string Xbox_Security_Sectors_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("Xbox_Security_Sectors_contained_in_image_WithMarkup", resourceCulture); + } + } + + public static string Title_Image_tracks { + get { + return ResourceManager.GetString("Title_Image_tracks", resourceCulture); + } + } + + public static string Title_Image_sessions { + get { + return ResourceManager.GetString("Title_Image_sessions", resourceCulture); + } + } + + public static string Please_write_description_of_media_type { + get { + return ResourceManager.GetString("Please_write_description_of_media_type", resourceCulture); + } + } + + public static string Please_write_media_model { + get { + return ResourceManager.GetString("Please_write_media_model", resourceCulture); + } + } + + public static string Error_0 { + get { + return ResourceManager.GetString("Error_0", resourceCulture); + } + } + + public static string The_drive_has_returned_incorrect_Q_positioning_calculating_pregaps { + get { + return ResourceManager.GetString("The_drive_has_returned_incorrect_Q_positioning_calculating_pregaps", resourceCulture); + } + } + + public static string Output_format_does_not_support_sessions { + get { + return ResourceManager.GetString("Output_format_does_not_support_sessions", resourceCulture); + } + } + + public static string Error_0_setting_metadata { + get { + return ResourceManager.GetString("Error_0_setting_metadata", resourceCulture); + } + } + + public static string Could_not_read_subchannel_for_this_track_supposing_zero_sectors { + get { + return ResourceManager.GetString("Could_not_read_subchannel_for_this_track_supposing_zero_sectors", resourceCulture); + } + } + + public static string System_information { + get { + return ResourceManager.GetString("System_information", resourceCulture); + } + } + + public static string Program_information { + get { + return ResourceManager.GetString("Program_information", resourceCulture); + } + } + + public static string Running_in_0_bit { + get { + return ResourceManager.GetString("Running_in_0_bit", resourceCulture); + } + } + + public static string DEBUG_version { + get { + return ResourceManager.GetString("DEBUG_version", resourceCulture); + } + } + + public static string Command_line_0 { + get { + return ResourceManager.GetString("Command_line_0", resourceCulture); + } + } + + public static string Hashing_sectors { + get { + return ResourceManager.GetString("Hashing_sectors", resourceCulture); + } + } + + public static string Hashing_files { + get { + return ResourceManager.GetString("Hashing_files", resourceCulture); + } + } + + public static string Hashing_tracks { + get { + return ResourceManager.GetString("Hashing_tracks", resourceCulture); + } + } + + public static string Could_not_get_tracks_because_0 { + get { + return ResourceManager.GetString("Could_not_get_tracks_because_0", resourceCulture); + } + } + + public static string Invoke_Found_undecoded_tuple_ID_0 { + get { + return ResourceManager.GetString("Invoke_Found_undecoded_tuple_ID_0", resourceCulture); + } + } + + public static string Found_unknown_tuple_ID_0 { + get { + return ResourceManager.GetString("Found_unknown_tuple_ID_0", resourceCulture); + } + } + + public static string Could_not_get_tuples { + get { + return ResourceManager.GetString("Could_not_get_tuples", resourceCulture); + } + } + + public static string Title_Type_for_media { + get { + return ResourceManager.GetString("Title_Type_for_media", resourceCulture); + } + } + + public static string Image_information_WithMarkup { + get { + return ResourceManager.GetString("Image_information_WithMarkup", resourceCulture); + } + } + + public static string Format_0_version_1_WithMarkup { + get { + return ResourceManager.GetString("Format_0_version_1_WithMarkup", resourceCulture); + } + } + + public static string Format_0_WithMarkup { + get { + return ResourceManager.GetString("Format_0_WithMarkup", resourceCulture); + } + } + + public static string Was_created_with_0_WithMarkup { + get { + return ResourceManager.GetString("Was_created_with_0_WithMarkup", resourceCulture); + } + } + + public static string Contains_a_media_of_type_0_and_XML_type_1_WithMarkup { + get { + return ResourceManager.GetString("Contains_a_media_of_type_0_and_XML_type_1_WithMarkup", resourceCulture); + } + } + + public static string Drive_serial_number_0_WithMarkup { + get { + return ResourceManager.GetString("Drive_serial_number_0_WithMarkup", resourceCulture); + } + } + + public static string CompactDisc_Power_Management_Area_contained_in_image_WithMarkup { + get { + return ResourceManager.GetString("CompactDisc_Power_Management_Area_contained_in_image_WithMarkup", resourceCulture); + } + } } } diff --git a/Aaru.Localization/Core.resx b/Aaru.Localization/Core.resx index ef388ed24..c2cd1db70 100644 --- a/Aaru.Localization/Core.resx +++ b/Aaru.Localization/Core.resx @@ -108,9 +108,6 @@ Card specific data: 0x{0:X4} - - Media identified as {0}. - Device identified as {0} @@ -316,15 +313,9 @@ Lead-In CMI - - Disc Definition Structure - Medium Status - - Spare Area Information - DVD-R(W) Pre-Recorded Information @@ -352,12 +343,6 @@ POW Resources Information - - TOC - - - ATIP - Standard Disc Information @@ -424,15 +409,9 @@ Disc write offset is unknown. - - Combined disc and drive offset are {0} bytes ({1} samples). - Combined offset is {0} bytes ({1} samples). - - Disc offset is {0} bytes ({1} samples). - Took a total of {0} seconds ({1} processing commands). @@ -469,13 +448,3055 @@ {0} sectors could not be read. - - Sector {0} could not be read - Testing {0} seeks, longest seek took {1:F3} ms, fastest one took {2:F3} ms. ({3:F3} ms average) Whole device + + Device's block size is fixed at {0} bytes + + + Device's maximum block size is {0} bytes + + + Device does not specify a maximum block size + + + Device's minimum block size is {0} bytes + + + Device's needs a block size granularity of 2^{0} ({1} bytes) + + + Filesystem type: {0} + + + Volume name: {0} + + + Volume serial: {0} + + + Application identifier: {0} + + + System identifier: {0} + + + Volume set identifier: {0} + + + Data preparer identifier: {0} + + + Publisher identifier: {0} + + + Volume created on {0:F} + {0} is date and time + + + Volume effective from {0:F} + {0} is date and time + + + Volume last modified on {0:F} + {0} is date and time + + + Volume expired on {0:F} + {0} is date and time + + + Volume last backed up on {0:F} + {0} is date and time + + + Volume has {0} clusters of {1} bytes each (total of {2} bytes) + + + Volume has {0} clusters free ({1:P}) + {1} is a percentage + + + Volume contains {0} files + + + Filesystem contains boot code + + + Filesystem has not been unmounted correctly or contains errors + + + Image without headers is {0} bytes long + + + Contains a media of {0} sectors with a maximum sector size of {1} bytes (if all sectors are of the same size this would be {2} bytes) + + + Contains a media of type {0} and XML type {1} + + + Was created with {0} version {1} + + + Was created with {0} + + + Created by: {0} + {0} is a person's name + + + Created on {0} + + + Last modified on {0} + + + Media is number {0} on a set of {1} medias + + + Media manufacturer: {0} + + + Media serial number: {0} + + + Drive serial number: {0} + + + Session + + + Start + + + First track + + + Last track + + + End + + + Track + + + Bps + Bytes per sector + + + Raw bps + Bytes per sector + + + Subchannel + + + Pregap + + + CompactDisc + + + DVD / HD DVD + + + DVD±R(W) + + + Blu-ray + + + Xbox + + + MMC + + + SSC + + + DVD + + + GD-ROM dump support is not yet implemented. + + + Dumping Xbox discs require a Kreon drive. + + + GD-ROM scan support is not yet implemented. + + + Scanning Xbox discs is not yet supported. + + + Partition name: {0} + + + Partition type: {0} + + + Partition start: sector {0}, byte {1} + + + Partition length: {0} sectors, {1} bytes + + + Partition description: + + + Drive identifies as Apple OEM drive + + + {0} sectors + + + Aborting... + + + Setting speed to 8x for CD-i Ready reading as audio. + + + Aborted! + + + Reading sector {0} of {1} ({2:F3} MiB/sec.) + + + Adding CD-i Ready hole from LBA {0} to {1} inclusive. + + + Setting speed to 8x for audio reading. + + + Setting speed to MAX for data reading + + + Setting speed to {0}x for data reading + + + READ error: +{0} + + + Skipping {0} blocks from errored block {1}. + + + Failed crossing into Lead-Out, dump may not be correct. + + + Raw CD dumping not yet implemented + + + Could not get tracks! + + + Drive does not support the requested subchannel format, not continuing... + + + Output format does not support subchannels, continuing... + + + Output format does not support subchannels, not continuing... + + + Checking if drive supports reading without subchannel... + + + Drive does not support READ CD, trying SCSI READ commands... + + + Checking if drive supports READ(6)... + + + Checking if drive supports READ(10)... + + + Checking if drive supports READ(12)... + + + Checking if drive supports READ(16)... + + + Cannot read from disc, not continuing... + + + Drive supports READ(6)... + + + Drive supports READ(10)... + + + Drive supports READ(12)... + + + Drive supports READ(16)... + + + Drive can read without subchannel... + + + Full raw subchannel reading supported... + + + PQ subchannel reading supported... + + + WARNING: If disc says CD+G, CD+EG, CD-MIDI, CD Graphics or CD Enhanced Graphics, dump will be incorrect! + + + Drive returns subchannel in BCD... + + + Drive does not returns subchannel in BCD... + + + Calculating pregaps, can take some time... + + + Output format does not support storing raw data, this may end in a loss of data, not continuing... + + + Output format does not support storing raw data, this may end in a loss of data, continuing... + + + Output format does not support audio tracks, cannot continue... + + + Output format does not support pregaps, this may end in a loss of data, not continuing... + + + Output format does not support pregaps, this may end in a loss of data, continuing... + + + Cannot dump blank media. + + + Could not process resume file, not continuing... + + + Output format does not support {0}, continuing... + {0} is media tag name + + + Output format does not support {0}, not continuing... + + + Solving lead-outs... + + + Detecting disc type... + + + Disc contains a hidden track... + + + Checking mode for track {0}... + + + Unable to guess mode for track {0}, continuing... + + + Track {0} is MODE1 + + + Track {0} is MODE2 + + + Track {0} is MODE2 FORM 2 + + + Track {0} is MODE2 FORM 1 + + + Track {0} is unknown mode {1} + + + Output format does not support more than 1 track, not continuing... + + + Output format does not support audio tracks, not continuing... + + + Output format only supports MODE 1 tracks, not continuing... + + + Output format does not support CD first track pregap, continuing... + + + Output format does not support CD first track pregap, not continuing... + + + Device error {0} trying to guess ideal transfer length. + + + Reading {0} sectors at a time. + + + Device reports {0} blocks ({1} bytes). + + + Device can read {0} blocks at a time. + + + Device reports {0} bytes per logical block. + + + SCSI device type: {0}. + + + Media identified as {0}. + + + Error creating output image, not continuing. + + + Error sending tracks to output image, not continuing. + + + Output image does not support subchannels, continuing... + + + Output image does not support subchannels, not continuing... + + + Creating subchannel log in {0} + + + Setting flags for track {0}... + + + Found Media Catalogue Number: {0} + + + Found ISRC for track {0}: {1} + + + Resuming from block {0}. + + + Track {0} starts at LBA {1} and ends at LBA {2} + + + No audio tracks, disabling offset fix. + + + READ CD command is not supported, disabling offset fix. Dump may not be correct. + + + There are audio tracks and offset fixing is disabled, dump may not be correct. + + + Dump may not be correct. + + + Disc write offset is unknown, dump may not be correct. + + + Combined disc and drive offsets are {0} bytes ({1} samples). + + + Disc offset is {0} bytes ({1} samples) + + + Dumping CD-i Ready requires the output image format to support long sectors. + + + Dumping CD-i Ready requires the drive to support the READ CD command. + + + Enabling skipping CD-i Ready hole because drive returns data as audio. + + + There will be thousand of errors between track 0 and track 1, that is normal and you can ignore them. + + + Dump finished in {0} seconds. + + + Average dump speed {0:F3} KiB/sec. + + + Average write speed {0:F3} KiB/sec. + + + Error: Tag type {0} is null, skipping... + + + Cannot write tag {0}. + + + Sector {0} could not be read. + + + Setting ISRC for track {0} to {1} + + + Setting disc Media Catalogue Number to {0} + + + Closing output file. + + + Closed in {0} seconds. + + + Took a total of {0:F3} seconds ({1:F3} processing commands, {2:F3} checksumming, {3:F3} writing, {4:F3} closing). + + + {0} subchannels could not be read. + + + Sending MODE SELECT to drive (return damaged blocks). + + + Drive did not accept MODE SELECT command for persistent error reading, try another drive. + + + Retrying sector {0}, pass {1}, recovering partial data, forward + + + Retrying sector {0}, pass {1}, forward + + + Retrying sector {0}, pass {1}, recovering partial data, reverse + + + Retrying sector {0}, pass {1}, reverse + + + Correctly retried sector {0} in pass {1}. + + + Sending MODE SELECT to drive (ignore error correction). + + + Trying to get partial data for sector {0} + + + Got partial data for sector {0} in pass {1}. + + + Sending MODE SELECT to drive (return device to previous status). + + + Retrying sector {0} subchannel, pass {1}, forward + + + Retrying sector {0} subchannel, pass {1}, reverse + + + Correctly retried sector {0} subchannel in pass {1}. + + + Reading lead-outs + + + Reading sector {0} at lead-out ({1:F3} MiB/sec.) + + + Reading first track pregap + + + Trying to read first track pregap sector {0} ({1:F3} MiB/sec.) + + + Got {0} first track pregap sectors. + + + Subchannel is BCD + + + Subchannel is not BCD + + + Could not detect drive subchannel BCD + + + Could not detect if drive subchannel is BCD or not, pregaps could not be calculated, dump may be incorrect... + + + Skipping track {0} + + + Skipping track {0} due to Plextor firmware bug + + + Track {0} + + + LBA: {0}, Try {1}, Sense {2} + {0} is LBA number, {1} is try number, {2} is error message + + + LBA: {0}, Try {1}, Sense {2}, Q: {3:X2} {4:X2} {5:X2} {6:X2} {7:X2} {8:X2} {9:X2} {10:X2} {11:X2} {12:X2} CRC 0x{13:X2}{14:X2}, Calculated CRC: 0x{15:X2}{16:X2} + 0 is LBA number, 1 is try number, 2 is sense message, 3 to 12 are Q subchannel hex values, 13 to 16 are CRC hex values + + + LBA: {0}, Try {1}, Sense {2}, Q (FIXED): {3:X2} {4:X2} {5:X2} {6:X2} {7:X2} {8:X2} {9:X2} {10:X2} {11:X2} {12:X2} CRC 0x{13:X2}{14:X2}, Calculated CRC: 0x{15:X2}{16:X2} + 0 is LBA number, 1 is try number, 2 is sense message, 3 to 12 are Q subchannel hex values, 13 to 16 are CRC hex values + + + Could not read subchannel for this track, supposing 150 sectors. + + + Could not read subchannel for this track, supposing {0} sectors. + + + Could not read subchannel for sector {0} + + + Could not get correct subchannel for sector {0} + + + All Q empty for LBA {0} + + + Invalid Q position for LBA {0}, got {1} + + + Pregap for track {0}: {1} + + + Track {0} pregap is {1} sectors + + + {0} sectors at the end of the disc are unreadable. This is normal in CD-R(W) discs as these sectors are created by burning software as part of the recording process. Empty ones will be generated and stored in the image. + + + Checking if drive supports full raw subchannel reading... + + + Checking if drive supports PQ subchannel reading... + + + Reading ATIP + + + Reading Disc Information + + + Reading PMA + + + Reading Session Information + + + Reading CD-Text from Lead-In + + + Reading full TOC + + + Building track map... + + + Cannot read RAW TOC, requesting processed one... + + + Could not read TOC, if you want to continue, use force, and will try from LBA 0 to 360000... + + + No tracks found, adding a single track from 0 to Lead-Out + + + Could not find Lead-Out, if you want to continue use force option and will continue until 360000 sectors... + + + WARNING: Could not find Lead-Out start, will try to read up to 360000 sectors, probably will fail before... + + + Trimming skipped sectors + + + Trimming sector {0} + + + Trimming finished in {0} seconds. + + + Could not read... + + + Retrode partition not recognized, not dumping... + + + Reading root directory in sector {0}... + + + No cartridge found, not dumping... + + + The specified format does not support the inserted cartridge... + + + Cartridge has {0} bytes ({1:F3} GiB) + + + Cartridge has {0} bytes ({1:F3} MiB) + + + Cartridge has {0} bytes ({1:F3} KiB) + + + Cartridge has {0} bytes + + + Error {0} creating output image, not continuing. + + + Reading byte {0} of {1} ({2:F3} MiB/sec.) + + + Skipping {0} bytes from errored byte {1}. + + + Image is not writable, aborting... + + + Could not detect capacity... + + + ERROR: Unable to read medium or empty medium present... + + + Unable to read medium or empty medium present... + + + Media detected as MemoryStick Pro Duo... + + + Media detected as MemoryStick Duo... + + + Correctly retried block {0} in pass {1}. + + + Creating sidecar. + + + Error {0} opening created image. + + + Sidecar created in {0} seconds. + + + Average checksum speed {0:F3} KiB/sec. + + + Found filesystem {0} at sector {1} + + + Selected output plugin does not support MemoryStick Duo or UMD, cannot dump... + + + Checking if media is UMD or MemoryStick... + + + Could not get MODE SENSE... + + + Could not decode MODE SENSE... + + + FAT starts at sector {0} and runs for {1} sectors... + + + Reading FAT... + + + Traversing FAT... + + + The specified plugin does not support storing optical disc images. + + + Device reports {0} bytes per physical block. + + + Media part number is {0}. + + + Error retrieving CMI for sector {0} + + + Error retrieving title key for sector {0} + + + INSITE floptical drives get crazy on the SCSI bus when an error is found, stopping so you can reboot the computer or reset the scsi bus appropriately. + + + Initializing reader. + + + Requesting MODE SENSE (10). + + + Requesting MODE SENSE (6). + + + MiniDisc albums, NetMD discs or user-written audio MiniDisc cannot be dumped. + + + ERROR: Cannot find correct read command: {0}. + + + Unable to read medium. + + + ERROR: Cannot get blocks to read: {0}. + + + SCSI medium type: {0}. + + + SCSI density type: {0}. + + + SCSI floppy mode page present: {0}. + + + Device doesn't seem capable of reading raw data from media. + + + Device is capable of reading raw data but I've been unable to guess correct sector size. + + + Not continuing. If you want to continue reading cooked data when raw is not available use the force option. + + + Continuing dumping cooked data. + + + Reading {0} raw bytes ({1} cooked bytes) per sector. + + + Output format does not support {0}. + + + Several media tags not supported, continuing... + + + Several media tags not supported, not continuing... + + + Image does not support multiple sessions in non Compact Disc dumps, continuing... + + + Image does not support multiple sessions in non Compact Disc dumps, not continuing... + + + Image does not support multiple tracks in non Compact Disc dumps, continuing... + + + Image does not support multiple tracks in non Compact Disc dumps, not continuing... + + + Setting geometry to {0} cylinders, {1} heads, {2} sectors per track + + + Creating single track as could not retrieve track list from drive. + + + Setting speed to MAX. + + + Setting speed to {0}x. + + + Title keys dumping is enabled. This will be very slow. + + + Reading USB descriptors. + + + Cannot write USB descriptors. + + + Requesting ATAPI IDENTIFY PACKET DEVICE. + + + Cannot write ATAPI IDENTIFY PACKET DEVICE. + + + Requesting SCSI INQUIRY. + + + Cannot write SCSI INQUIRY. + + + Cannot write SCSI MODE SENSE (10). + + + Cannot write SCSI MODE SENSE (6). + + + Found blank block {0} in pass {1}. + + + Retrying title key {0}, pass {1}, forward + + + Retrying title key {0}, pass {1}, reverse + + + Correctly retried title key {0} in pass {1}. + + + The current environment doesn't support the medium scan command, dump will take much longer than normal. + + + Please open a bug report in github with the manufacturer and model of this device, as well as your operating system name and version and this message: This environment correctly supports MEDIUM SCAN command. + + + Scanning for {0} written blocks starting in block {1} + + + Scanning for {0} blank blocks starting in block {1} + + + Cannot dump empty media! + + + Found blank block {0}. + + + Raw dumping not yet supported in ATA devices, continuing... + + + Raw dumping not yet supported in ATA devices, aborting... + + + Requesting ATA IDENTIFY DEVICE. + + + ERROR: Cannot get block size: {0}. + + + Device reports {0} cylinders {1} heads {2} sectors per track. + + + Output format does not support USB descriptors. + + + Output format does not support PCMCIA CIS descriptors. + + + Output format does not support ATA IDENTIFY. + + + Reading cylinder {0} head {1} sector {2} ({3:F3} MiB/sec.) + + + Error reading cylinder {0} head {1} sector {2}. + + + Reading PCMCIA CIS. + + + Decoding PCMCIA CIS. + + + Unable to communicate with ATA device. + + + Device not in database, please create a device report and attach it to a Github issue. + + + Device in database since {0}. + + + Could not detect image format. + + + Device reports current profile is 0x{0:X4} + + + Device reports disc has {0} blocks + + + Reading Physical Format Information + + + Dumping Nintendo GameCube or Wii discs is not yet implemented. + + + Reading Disc Manufacturing Information + + + Dumping Xbox Game Discs requires a drive with Kreon firmware. + + + Reading Lead-in Copyright Information. + + + Drive reports no copy protection on disc. + + + Drive reports the disc uses copy protection. The dump will be incorrect unless decryption is enabled. + + + Drive reports disc uses CSS copy protection. + + + Reading disc key. + + + Disc and drive authentication succeeded. + + + Disc and drive regions match. + + + Disc and drive regions do not match. The dump will be incorrect + + + Decrypting disc key. + + + Decryption of disc key succeeded. + + + Decryption of disc key failed. + + + Drive reports disc uses {0} copy protection. This is not yet supported and the dump will be incorrect. + + + Reading Burst Cutting Area. + + + Reading Disc Description Structure. + + + Reading Spare Area Information. + + + Reading Pre-Recorded Information. + + + Reading Media Identifier. + + + Reading Recordable Physical Information. + + + Reading ADdress In Pregroove. + + + Reading Disc Control Blocks. + + + Reading Disc Definition Structure. + + + Resuming CHS devices is currently not supported. + + + Resume file specifies a tape device but you're requesting to dump a not tape device, not continuing... + + + Resume file specifies a not tape device but you're requesting to dump a tape device, not continuing... + + + Resume file specifies a removable device but you're requesting to dump a non removable device, not continuing... + + + Resume file specifies a non removable device but you're requesting to dump a removable device, not continuing... + + + Resume file specifies a device with {0} blocks but you're requesting to dump one with {1} blocks, not continuing... + + + Resume file specifies a device manufactured by {0} but you're requesting to dump one by {1}, not continuing... + + + Resume file specifies a device model {0} but you're requesting to dump model {1}, not continuing... + + + Resume file specifies a device with serial {0} but you're requesting to dump one with serial {1}, not continuing... + + + Resume file specifies a device with firmware version {0} but you're requesting to dump one with firmware version {1}, not continuing... + + + Found corrupt resume file, cannot continue... + + + Please insert media in drive + + + Error testing unit was ready: +{0} + + + Unknown testing unit was ready. + + + Tapes cannot be dumped raw. + + + The specified plugin does not support storing streaming tape images. + + + Raw dumping is not supported in MultiMediaCard or SecureDigital devices. Continuing... + + + Raw dumping is not supported in MultiMediaCard or SecureDigital devices. Aborting... + + + Reading CSD + + + Reading Extended CSD + + + Reading OCR + + + Reading SCR + + + Reading CID + + + Unable to get device size. + + + Device reports {0} blocks. + + + Error {0} reopening device. + + + ERROR: Cannot get blocks to read, device error {0}. + + + Buffered OS reads are not working, trying direct commands. + + + ERROR: Could not read from device, device error {0}. + + + Device error {0} trying to read from device. + + + Device can read {0} blocks at a time using OS buffered reads. + + + Device can read {0} blocks using sequential commands. + + + Cannot write CID to output image. + + + Cannot write CSD to output image. + + + Cannot write Extended CSD to output image. + + + Cannot write OCR to output image. + + + Cannot write SCR to output image. + + + Drive has status error, please correct. Sense follows... + + + Rewinding, please wait... + + + Drive could not rewind, please correct. Sense follows... + + + Could not get position. Sense follows... + + + Drive not in partition 0. Rewinding, please wait... + + + Drive could not rewind to partition 0 but no error occurred... + + + Drive could not return back. Sense follows... + + + Drive could not read. Sense follows... + + + Blocksize changed to {0} bytes at block {1} + + + Drive could not go back one block. Sense follows... + + + Cannot read device, don't know why, exiting... + + + Positioning tape to block 1. + + + LOCATE LONG works. + + + LOCATE works. + + + Positioning tape to block {0}. + + + Could not check current position, unable to resume. If you want to continue use force. + + + Could not check current position, unable to resume. Dumping from the start. + + + Current position is not as expected, unable to resume. If you want to continue use force. + + + Current position is not as expected, unable to resume. Dumping from the start. + + + Cannot reposition tape, unable to resume. If you want to continue use force. + + + Cannot reposition tape, unable to resume. Dumping from the start. + + + Error setting output image in tape mode, not continuing. + + + Finished partition {0} + + + Seeking to partition {0} + + + Reading block {0} ({1:F3} MiB/sec.) + + + Cannot dump a blank tape... + + + Found end-of-tape/partition... + + + Blank block found, end of tape?... + + + Changed to file {0} at block {1} + + + Drive could not read block {0}. Sense cannot be decoded, look at log for dump... + + + Drive could not read block {0}. Sense bytes follow... + + + Drive could not read block {0}. Sense follows... +{1} {2} + + + Drive could not read block {0}. Sense follows... + + + Could not check current position, continuing. + + + Current position is not as expected, continuing. + + + Cannot position tape to block {0}. + + + Block {0} could not be read. + + + Because of the commands sent to a device, dumping XGD must be done with administrative privileges. Cannot continue. + + + Cannot dump XGD without administrative privileges. + + + Cannot get disc capacity. + + + Cannot get PFI. + + + Reading Xbox Security Sector. + + + Cannot get Xbox Security Sector, not continuing. + + + Decoding Xbox Security Sector. + + + Cannot decode Xbox Security Sector, not continuing. + + + Getting video partition size + + + Locking drive. + + + Cannot lock drive, not continuing. + + + Video partition total size: {0} sectors + + + Cannot get DMI. + + + Video partition is too big, did lock work? Trying cold values. + + + Cannot get video partition size, not continuing. Try to eject and reinsert the drive, if it keeps happening, contact support. + + + Getting game partition size. + + + Unlocking drive (Xtreme). + + + Cannot unlock drive, not continuing. + + + Game partition total size: {0} sectors + + + Getting middle zone size + + + Unlocking drive (Wxripper). + + + Getting disc size. + + + Unlocked total size: {0} sectors + + + Cannot decode PFI. + + + WxRipper PFI's Data Area Start PSN: {0} sectors + + + WxRipper PFI's Layer 0 End PSN: {0} sectors + + + Video layer 0 size: {0} sectors + + + Video layer 1 size: {0} sectors + + + Middle zone size: {0} sectors + + + Game data size: {0} sectors + + + Total size: {0} sectors + + + Real layer break: {0} + + + Cannot read medium, aborting scan... + + + Using SCSI READ (12) command. + + + Reading game partition. + + + Writing Middle Zone D (empty). + + + Reading Video Layer 1. + + + Error code = {0} + + + Error {0} querying ATA IDENTIFY + + + Error {0} querying ATA PACKET IDENTIFY + + + SCSI error: +{0} + + + Unknown device type {0}, cannot get information. + + + Trying READ SECTOR(S) in CHS mode... + + + Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3} + + + Trying READ SECTOR(S) RETRY in CHS mode... + + + Trying READ DMA in CHS mode... + + + Trying READ DMA RETRY in CHS mode... + + + Trying SEEK in CHS mode... + + + Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2} + + + Trying READ SECTOR(S) in LBA mode... + + + Trying READ SECTOR(S) RETRY in LBA mode... + + + Trying READ DMA in LBA mode... + + + Trying READ DMA RETRY in LBA mode... + + + Trying SEEK in LBA mode... + + + Trying READ SECTOR(S) in LBA48 mode... + + + Trying READ DMA in LBA48 mode... + + + Trying READ LONG in CHS mode... + + + Trying READ LONG RETRY in CHS mode... + + + Trying READ LONG in LBA mode... + + + Trying READ LONG RETRY in LBA mode... + + + Have you previously tried with a GD-ROM disc and did the computer hang or crash? (Y/N): + + + Ejecting disc... + + + Please insert trap disc inside... + + + Press any key to continue... + + + Sending READ FULL TOC to the device... + + + READ FULL TOC failed... + + + Could not decode TOC... + + + Cannot find lead-out... + + + Trap disc shows {0} sectors... + + + Trap disc doesn't have enough sectors... + + + Stopping motor... + + + Please MANUALLY get the trap disc out and put the GD-ROM disc inside... + + + Waiting 5 seconds... + + + Lead-out has changed, this drive does not support hot swapping discs... + + + Reading LBA 0... + + + Success! + + + FAIL! + + + Reading LBA 0 as audio (scrambled)... + + + Reading LBA 100000 as audio... + + + Reading LBA 50000 as audio... + + + Reading LBA 450000 as audio... + + + Reading LBA 400000 as audio... + + + Reading LBA 45000 as audio... + + + Reading LBA 44990 as audio... + + + Reading LBA 100000 as audio with PQ subchannel... + + + Reading LBA 50000 as audio with PQ subchannel... + + + Reading LBA 450000 as audio with PQ subchannel... + + + Reading LBA 400000 as audio with PQ subchannel... + + + Reading LBA 45000 as audio with PQ subchannel... + + + Reading LBA 44990 as audio with PQ subchannel... + + + Reading LBA 100000 as audio with RW subchannel... + + + Reading LBA 50000 as audio with RW subchannel... + + + Reading LBA 450000 as audio with RW subchannel... + + + Reading LBA 400000 as audio with RW subchannel... + + + Reading LBA 45000 as audio with RW subchannel... + + + Reading LBA 44990 as audio with RW subchannel... + + + Reading LBA 100000... + + + Reading LBA 50000... + + + Reading LBA 450000... + + + Reading LBA 400000... + + + Reading LBA 45000... + + + Reading LBA 44990... + + + Reading LBA 100000 with PQ subchannel... + + + Reading LBA 50000 with PQ subchannel... + + + Reading LBA 450000 with PQ subchannel... + + + Reading LBA 400000 with PQ subchannel... + + + Reading LBA 45000 with PQ subchannel... + + + Reading LBA 44990 with PQ subchannel... + + + Reading LBA 100000 with RW subchannel... + + + Reading LBA 50000 with RW subchannel... + + + Reading LBA 450000 with RW subchannel... + + + Reading LBA 400000 with RW subchannel... + + + Reading LBA 45000 with RW subchannel... + + + Reading LBA 44990 with RW subchannel... + + + The next part of the test will read the whole high density area of a GD-ROM from the smallest known readable sector until the first error happens +Do you want to proceed? (Y/N): + + + Reading LBA {0} of {1} + + + Querying MMC GET CONFIGURATION... + + + Querying SCSI READ CAPACITY... + + + Querying SCSI READ CAPACITY (16)... + + + Querying SCSI MODE SENSE (10)... + + + Querying SCSI MODE SENSE... + + + Querying CD TOC... + + + Querying CD Full TOC... + + + Querying CD ATIP... + + + Querying CD PMA... + + + Sense = {0} + + + Querying DVD PFI... + + + Querying DVD DMI... + + + Querying DVD CMI... + + + Querying DVD BCA... + + + Querying DVD AACS... + + + Querying BD BCA... + + + Querying Disc Definition Structure... + + + Querying Spare Area Information... + + + Querying BD DDS... + + + Querying BD SAI... + + + Querying DVD PRI... + + + Querying DVD Media ID... + + + Querying DVD Embossed PFI... + + + Querying DVD ADIP... + + + Querying DVD DCB... + + + Querying HD DVD CMI... + + + Querying DVD Layer Capacity... + + + Querying BD Disc Information... + + + Querying BD PAC... + + + Trying SCSI READ CD scrambled... + + + Trying SCSI READ (6)... + + + Trying SCSI READ (10)... + + + Trying SCSI READ (12)... + + + Trying SCSI READ (16)... + + + Trying SCSI READ CD... + + + Trying SCSI READ CD MSF... + + + Trying SCSI READ CD full sector... + + + Trying SCSI READ CD MSF full sector... + + + Trying to read CD Track 1 pre-gap... + + + Trying to read CD Lead-In... + + + Trying to read CD Lead-Out... + + + Trying to read C2 Pointers... + + + Trying to read subchannels... + + + Trying to read subchannels with C2 Pointers... + + + Trying Plextor READ CD-DA... + + + Trying Pioneer READ CD-DA... + + + Trying Pioneer READ CD-DA MSF... + + + Trying NEC READ CD-DA... + + + Trying Plextor trick to raw read DVDs... + + + Trying HL-DT-ST (aka LG) trick to raw read DVDs... + + + Trying MediaTek READ DRAM command... + + + Trying MediaTek READ DRAM command for Lead-Out... + + + Could not find second session. Have you inserted the correct type of disc? + + + First session Lead-Out starts at {0:D2}:{1:D2}:{2:D2} + + + Second session starts at {0:D2}:{1:D2}:{2:D2} + + + Trying SCSI READ CD in first session Lead-Out... + + + Trying SCSI READ CD in second session Lead-In... + + + Querying SCSI INQUIRY... + + + Querying list of SCSI EVPDs... + + + Querying SCSI EVPD pages... + + + Querying SCSI EVPD {0:X2}h... + + + Querying all mode pages and subpages using SCSI MODE SENSE (10)... + + + Querying all mode pages and subpages using SCSI MODE SENSE (6)... + + + Trying SCSI READ MEDIA SERIAL NUMBER... + + + Trying to get CID... + + + CID obtained correctly... + + + Could not read CID... + + + Trying to get CSD... + + + CSD obtained correctly... + + + Could not read CSD... + + + Trying to get OCR... + + + OCR obtained correctly... + + + Could not read OCR... + + + Trying to get Extended CSD... + + + Extended CSD obtained correctly... + + + Could not read Extended CSD... + + + Trying to get SCR... + + + SCR obtained correctly... + + + Could not read SCR... + + + Querying SCSI READ BLOCK LIMITS... + + + Querying SCSI REPORT DENSITY SUPPORT... + + + Querying SCSI REPORT DENSITY SUPPORT for medium types... + + + Querying SCSI REPORT DENSITY SUPPORT for current media... + + + Querying SCSI REPORT DENSITY SUPPORT for medium types for current media... + + + Seeking to sector {0}... + + + Seeking to cylinder {0}, head {1}, sector {2}... + + + Scanning will never be supported on SCSI Streaming Devices. +It has no sense to do it, and it will put too much strain on the tape. + + + Error trying to decode TOC... + + + Using MMC READ CD command. + + + READ CD error: +{0} + + + Environment does not support setting block count, downgrading to OS reading. + + + Reading {0} sectors at a time using OS buffered reads. + + + Reading {0} sectors using sequential single commands. + + + Unknown device type {0}. + + + Device needs 48-bit LBA commands but I can't issue them... Aborting. + + + Device needs 28-bit LBA commands but I can't issue them... Aborting. + + + Device needs CHS commands but I can't issue them... Aborting. + + + Using ATA READ DMA EXT command. + + + Using ATA READ EXT command. + + + Using ATA READ DMA command with retries (LBA). + + + Using ATA READ DMA command (LBA). + + + Using ATA READ command with retries (LBA). + + + Using ATA READ command (LBA). + + + Using ATA READ DMA command with retries (CHS). + + + Using ATA READ DMA command (CHS). + + + Using ATA READ command with retries (CHS). + + + Using ATA READ command (CHS). + + + Could not get a working read command! + + + ATA ERROR: {0} STATUS: {1} + + + Device only supports SCSI READ (6) but has more than {0} blocks ({1} blocks total) + + + Device only supports SCSI READ (10) but has more than {0} blocks ({1} blocks total) + + + Using SCSI READ LONG (16) command. + + + Using SCSI READ LONG (10) command. + + + Using SyQuest READ LONG (10) command. + + + Using SyQuest READ LONG (6) command. + + + Using HL-DT-ST raw DVD reading. + + + Using Plextor raw DVD reading. + + + Using SCSI READ (6) command. + + + Using SCSI READ (10) command. + + + Using SCSI READ (16) command. + + + Unable to get media capacity +{0} + + + Start logging at {0} + + + Running as superuser: Yes + + + Running as superuser: No + + + ################# Remote information ################# + + + Server: {0} + + + Version: {0} + + + Operating system: {0} {1} + + + Architecture: {0} + + + Protocol version: {0} + + + ###################################################### + + + ################# Device information ################# + + + Manufacturer: {0} + + + Model: {0} + + + Firmware revision: {0} + + + Serial number: {0} + + + Removable device: {0} + + + Device type: {0} + + + CompactFlash device: {0} + + + PCMCIA device: {0} + + + USB device: {0} + + + USB manufacturer: {0} + + + USB product: {0} + + + USB serial: {0} + + + USB vendor ID: {0:X4}h + + + USB product ID: {0:X4}h + + + FireWire device: {0} + + + FireWire vendor: {0} + + + FireWire model: {0} + + + FireWire GUID: 0x{0:X16} + + + FireWire vendor ID: 0x{0:X8} + + + FireWire product ID: 0x{0:X8} + + + ################ Dumping progress log ################ + + + End logging at {0} + + + Start error logging at {0} + + + ATA command {0} operating system error: {1}. + + + ATA command {0} error: status = {1}, error = {2}. + + + ATA reading C/H/S {0}/{1}/{2} operating system error: {3}. + + + ATA reading C/H/S {0}/{1}/{2} error: status = {3}, error = {4}. + + + ATA reading LBA {0} operating system error: {1}. + + + ATA reading LBA {0} error: status = {1}, error = {2}. + + + SCSI command {0} operating system error: {1}. + + + SCSI command {0} error: SENSE {1} ASC {2:X2}h ASCQ {3:X2}h, {4}, {5}. + + + SCSI command {0} error: SENSE {1} ASC {2:X2}h ASCQ {3:X2}h, {4}. + + + SCSI command {0} error: {1}, {2}. + + + SCSI command {0} error: {1} + + + SCSI reading LBA {0} operating system error: {1}. + + + SCSI reading LBA {0} error: SENSE {1} ASC {2:X2}h ASCQ {3:X2}h, {4}, {5}. + + + SCSI reading LBA {0} error: SENSE {1} ASC {2:X2}h ASCQ {3:X2}h, {4}. + + + SCSI reading LBA {0} error: {1}, {2}. + + + SCSI reading LBA {0} error: {1} + + + SD/MMC command {0} operating system error: {1}. + + + SD/MMC command {0} error: {1} + + + SD/MMC reading LBA {0} (byte-addressed) operating system error: {1}. + + + SD/MMC reading LBA {0} (byte-addressed) error: {1} + + + SD/MMC reading LBA {0} (block-addressed) operating system error: {1}. + + + SD/MMC reading LBA {0} (block-addressed) error: {1} + + + Start subchannel logging at {0} + + + Data length is invalid! + + + (GENERATED) + A space must be before the parenthesis + + + (FIXED) + A space must be before the parenthesis + + + fixed P subchannel using weight average. + + + fixed R-W subchannels writing empty data. + + + fixed Q subchannel with correct ADR. + + + fixed Q subchannel with correct CONTROL. + + + fixed Q subchannel with correct ZERO. + + + fixed Q subchannel with correct TNO. + + + fixed Q subchannel with correct INDEX. + + + fixed Q subchannel with correct RELATIVE POSITION. + + + fixed Q subchannel with correct ABSOLUTE POSITION. + + + fixed Q subchannel with correct CRC. + + + fixed Q subchannel with known good MCN. + + + fixed Q subchannel with known good ISRC. + + + Lead-In + + + Program + + + {0:D2}:{1:D2}:{2:D2} - LBA {3,6}: {4} area, {5} + + + TOC says disc type is CD-i. + + + TOC says disc type is CD-ROM XA. + + + Disc has audio and data tracks, two sessions, and all data tracks are in second session, setting as CD+. + + + Disc has only audio tracks in a single session, setting as CD Digital Audio. + + + Disc has only data tracks in a single session, setting as CD-ROM. + + + Disc has video tracks in a single session, setting as CD Video. + + + Disc has a mode 2 data track, setting as CD-ROM XA. + + + Disc has a hidden CD-i track in track 1's pregap, setting as CD-i Ready. + + + Found Photo CD description file, setting disc type to Photo CD. + + + Found Mega/Sega CD IP.BIN, setting disc type to Mega CD. + + + Found Sega Saturn IP.BIN, setting disc type to Saturn CD. + + + Found Sega Dreamcast IP.BIN, setting disc type to GD-ROM. + + + PlayStation 2 boot sectors SHA256: {0} + + + Found Sony PlayStation 2 boot sectors, setting disc type to PS2 CD. + + + Found Opera filesystem, setting disc type to 3DO. + + + Found FM-Towns boot, setting disc type to FM-Towns. + + + Found Playdia copyright, setting disc type to Playdia. + + + Found PC-Engine CD signature, setting disc type to Super CD-ROM². + + + Found PC-FX copyright, setting disc type to PC-FX. + + + Found Atari signature, setting disc type to Jaguar CD. + + + Found Sega Dreamcast IP.BIN on second session, setting disc type to MilCD. + + + Found VideoNow! Color frame, setting disc type to VideoNow Color. + + + Found enhanced graphics RW packet, setting disc type to CD+EG. + + + Found graphics RW packet, setting disc type to CD+G. + + + Found MIDI RW packet, setting disc type to CD+MIDI. + + + Found CD32.TM file in root, setting disc type to Amiga CD32. + + + Found CDTV.TM file in root, setting disc type to Commodore CDTV. + + + Found correct IPL.TXT file in root, setting disc type to Neo Geo CD. + + + Found Video CD description file, setting disc type to Video CD. + + + Found Super Video CD description file, setting disc type to Super Video CD. + + + Found China Video Disc description file, setting disc type to China Video Disc. + + + Found correct SYSTEM.CNF file in root pointing to existing file in root, setting disc type to PlayStation CD. + + + Found correct SYSTEM.CNF file in root pointing to existing file in root, setting disc type to PlayStation 2 CD. + + + Found Sony PlayStation 2 boot sectors, setting disc type to PS2 DVD. + + + Found Sony PlayStation 3 boot sectors, setting disc type to PS3 Blu-ray. + + + Found Sony PlayStation 3 boot sectors, setting disc type to PS3 DVD. + + + Found Sony PlayStation 4 boot sectors, setting disc type to PS4 Blu-ray. + + + Blu-ray type set to "XG4", setting disc type to Xbox One Disc (XGD4). + + + Found Sony PlayStation 5 boot sectors, setting disc type to PS5 Ultra HD Blu-ray. + + + Blu-ray type set to "BDU", setting disc type to Ultra HD Blu-ray. + + + Could not find VideoNow Color frame offset, dump may not be correct. + + + VideoNow Color frame is offset {0} bytes. + + + READ DISC STRUCTURE: Recognized Format Layers +{0} + + + READ DISC STRUCTURE: Write Protection Status +{0} + + + READ DISC STRUCTURE: PFI +{0} + + + READ DISC STRUCTURE: DMI +{0} + + + READ DISC STRUCTURE: CMI +{0} + + + READ DISC STRUCTURE: BCA +{0} + + + READ DISC STRUCTURE: DVD AACS +{0} + + + READ DISC STRUCTURE: DDS +{0} + + + READ DISC STRUCTURE: Medium Status +{0} + + + READ DISC STRUCTURE: SAI +{0} + + + READ DISC STRUCTURE: Last-Out Border RMD +{0} + + + READ DISC STRUCTURE: Disc Key +{0} + + + READ DISC STRUCTURE: Sector CMI +{0} + + + READ DISC STRUCTURE: Pre-Recorded Info +{0} + + + READ DISC STRUCTURE: DVD-R Media ID +{0} + + + READ DISC STRUCTURE: DVD-R PFI +{0} + + + READ DISC STRUCTURE: ADIP +{0} + + + READ DISC STRUCTURE: DCB +{0} + + + READ DISC STRUCTURE: HD DVD CMI +{0} + + + READ DISC STRUCTURE: HD DVD-R Medium Status +{0} + + + READ DISC STRUCTURE: Last RMD +{0} + + + READ DISC STRUCTURE: Layer Capacity +{0} + + + READ MEDIA SERIAL NUMBER +{0} + + + READ DISC STRUCTURE: Middle Zone Start +{0} + + + READ DISC STRUCTURE: Jump Interval Size +{0} + + + READ DISC STRUCTURE: Manual Layer Jump Start LBA +{0} + + + READ DISC STRUCTURE: Remap Anchor Point +{0} + + + READ DISC STRUCTURE: DI +{0} + + + READ DISC STRUCTURE: PAC +{0} + + + READ DISC STRUCTURE: Cartridge Status +{0} + + + READ DISC STRUCTURE: Raw DFL +{0} + + + READ DISC INFORMATION 001b +{0} + + + READ DISC INFORMATION 010b +{0} + + + READ TOC/PMA/ATIP: TOC +{0} + + + READ TOC/PMA/ATIP: ATIP +{0} + + + READ TOC/PMA/ATIP: Session info +{0} + + + READ TOC/PMA/ATIP: Raw TOC +{0} + + + READ TOC/PMA/ATIP: PMA +{0} + + + READ TOC/PMA/ATIP: CD-TEXT +{0} + + + KREON EXTRACT SS: +{0} + + + READ DISC INFORMATION 000b +{0} + + + Found new ISRC {0} for track {1}. + + + ISRC for track {0} changed from {1} to {2}. + + + Found new MCN {0}. + + + MCN changed from {0} to {1}. + + + Pregap for track {0} set to {1} sectors. + + + Setting index {0} for track {1} to LBA {2}. + + + Generating subchannel for sector {0}... + + + Hashing media tags... + + + Error {0} reading sector {1} + + + Hashing sector {0} of {1} + + + Hashing partition {0}... + + + Hashing blocks {0} of {1} + + + Hashing file {0}... + + + Checking filesystems... + + + Mounting {0} + + + Saving metadata... + + + Hashing SuperCardPro image... + + + SuperCardPro image do not contain same number of tracks ({0}) than disk image ({1}), ignoring... + + + SuperCardPro image do not contain same number of heads ({0}) than disk image ({1}), ignoring... + + + Hashing KryoFlux images... + + + KryoFlux image does not contain same number of tracks ({0}) than disk image ({1}), ignoring... + + + KryoFlux image does not contain same number of heads ({0}) than disk image ({1}), ignoring... + + + Hashing DiscFerret image... + + + DiscFerret image do not contain same number of tracks ({0}) than disk image ({1}), ignoring... + + + DiscFerret image do not contain same number of heads ({0}) than disk image ({1}), ignoring... + + + Cannot stat {0} + + + Hashing file {0}/{1}... + + + Hashing file byte {0} of {1} + + + Track {0} of {1} + + + Hashing subchannel sector {0} of {1} + + + Hashing image file... + + + Hashing image file byte {0} of {1} + + + The specified image says it contains an optical media but at the same time says it does not support them. + + + The specified image says it contains a block addressable media but at the same time says it does not support them. + + + Please open an issue at Github. + + + The specified image says it contains a byte addressable media but at the same time says it does not support them. + + + Not overwriting file {0} + + + Writing {0} to {1} + + + Unable to write file {0} + + + Sectors {0} + + + Entropying sector {0} + + + Error {0} while reading sector {1}, continuing... + + + {0} bytes + + + The selected image does not support tracks. + + + Entropying track {0} of {1} + + + Track {0} has {1} sectors + + + Entropying sector {0} of track {1} + + + Unable to get separate tracks, not calculating their entropy + + + Error {0} while reading data, not continuing... + + + Unknown error code {0} + + + The specified device cannot be found. + + + Not enough permissions to open the device. + + + The specified device is in use by another process. + + + Cannot open the device in writable mode, as needed by some commands. + + + Tried to open a file instead of a device. + + + Trying plugin {0} + + + Index + + + Image indexes + + + Found {0} @ {1} + + + Found {0} @ 0 + + + Trying {0} @ {1} + + + Got {0} children + + + Got {0} parents + + + Got {0} partitions + + + Found unknown vendor mode page {0:X2}h subpage {1:X2}h + + + Found unknown vendor mode page {0:X2}h + + + Found unknown mode page {0:X2}h subpage {1:X2}h + + + Found unknown mode page {0:X2}h + + + Uploading device report + + + Creating main database + + + Updating main database + + + Last update: {0} + + + Error {0} when trying to get updated entities. + + + Adding USB vendors + + + Added {0} usb vendors + + + Adding USB products + + + Added {0} usb products + + + Adding CompactDisc read offsets + + + Added {0} CompactDisc read offsets + + + Adding known devices + + + Added {0} known devices + + + Adding known iNES/NES 2.0 headers + + + Added {0} known iNES/NES 2.0 headers + + + Updating USB vendors + + + Modified {0} USB vendors + + + Updating USB products + + + Modified {0} USB products + + + Updating CompactDisc read offsets + + + Modified {0} CompactDisc read offsets + + + Updating known devices + + + Modified {0} known devices + + + Updating known iNES/NES 2.0 headers + + + Modified {0} known iNES/NES 2.0 headers + + + Exception {0} when updating database. + + + Saving changes... + + + Exception while trying to save statistics: + + + Uploading statistics + + + Uploading partial statistics file {0} + + + Was created with [italic]{0}[/] version [italic]{1}[/] + + + [bold]Created by:[/] {0} + + + Has partitions + + + Doesn't have partitions + + + Has sessions + + + Doesn't have sessions + + + [bold]Comments:[/] {0} + + + [bold]Media title:[/] [italic]{0}[/] + + + [bold]Media manufacturer:[/] [italic]{0}[/] + + + [bold]Media model:[/] [italic]{0}[/] + + + [bold]Media serial number:[/] [italic]{0}[/] + + + [bold]Media barcode:[/] [italic]{0}[/] + + + [bold]Media part number:[/] [italic]{0}[/] + + + [bold]Drive manufacturer:[/] [italic]{0}[/] + + + [bold]Drive model:[/] [italic]{0}[/] + + + [bold]Drive firmware info:[/] [italic]{0}[/] + + + [bold]Media geometry:[/] [italic]{0} cylinders, {1} heads, {2} sectors per track[/] + + + [bold]Contains {0} readable media tags:[/] + + + [bold]Contains {0} readable sector tags:[/] + + + Manufacturer + + + Model + + + Serial + As in serial number + + + Software + + + Version + + + Operating system + + + Dump hardware information + + + [bold]Mapping:[/] + + + [bold]SCSI INQUIRY contained in image:[/] + + + [bold]ATA IDENTIFY contained in image:[/] + + + [bold]ATAPI IDENTIFY contained in image:[/] + + + [bold]SCSI MODE SENSE (10) contained in image:[/] + + + [bold]SCSI MODE SENSE (6) contained in image:[/] + + + [bold]CompactDisc Table of Contents contained in image:[/] + + + [bold]CompactDisc Absolute Time In Pregroove (ATIP) contained in image:[/] + + + [bold]CompactDisc Lead-in's CD-Text contained in image:[/] + + + [bold]CompactDisc Media Catalogue Number contained in image:[/] {0} + + + [bold]DVD-R(W) Pre-Recorded Information:[/] + + + [bold]DVD Physical Format Information contained in image:[/] + + + [bold]DVD-RAM Disc Definition Structure contained in image:[/] + + + [bold]DVD-R Physical Format Information contained in image:[/] + + + [bold]Bluray Disc Information contained in image:[/] + + + [bold]Bluray Disc Definition Structure contained in image:[/] + + + [bold]PCMCIA CIS:[/] + + + [bold]SecureDigital CID contained in image:[/] + + + [bold]SecureDigital CSD contained in image:[/] + + + [bold]SecureDigital SCR contained in image:[/] + + + [bold]SecureDigital OCR contained in image:[/] + + + [bold]MultiMediaCard CID contained in image:[/] + + + [bold]MultiMediaCard CSD contained in image:[/] + + + [bold]MultiMediaCard Extended CSD contained in image:[/] + + + [bold]MultiMediaCard OCR contained in image:[/] + + + [bold]Xbox Physical Format Information contained in image:[/] + + + [bold]Xbox DMI contained in image:[/] + + + [bold]Xbox 360 DMI contained in image:[/] + + + [bold]Xbox Security Sectors contained in image:[/] + + + Image tracks + + + Image sessions + + + Please write a description of the media type and press enter: + + + Please write the media model and press enter: + + + Error: {0} + + + WARNING: The drive has returned incorrect Q positioning when calculating pregaps. A best effort has been tried but they may be incorrect. + + + Output format does not support sessions, this will end in a loss of data, not continuing... + + + Error {0} setting metadata, continuing... + + + Could not read subchannel for this track, supposing 0 sectors. + + + ################# System information ################# + + + ################# Program information ################ + + + Running in {0}-bit + + + DEBUG version + + + Command line: {0} + + + Hashing sectors... + + + Hashing files... + + + Hashing tracks... + + + Could not get tracks because {0} + {0} is exception message + + + Found undecoded tuple ID {0} + + + Found unknown tuple ID 0x{0:X2} + + + Could not get tuples + + + Type + + + [bold]Image information:[/] + + + [bold]Format:[/] [italic]{0}[/] version {1} + + + [bold]Format:[/] [italic]{0}[/] + + + Was created with [italic]{0}[/] + + + Contains a media of type [italic]{0}[/] and XML type [italic]{1}[/] + + + [bold]Drive serial number:[/] [italic]{0}[/] + + + [bold]CompactDisc Power Management Area contained in image:[/] + \ No newline at end of file diff --git a/Aaru.Localization/UI.Designer.cs b/Aaru.Localization/UI.Designer.cs index e001e2ebb..5e4cb53b5 100644 --- a/Aaru.Localization/UI.Designer.cs +++ b/Aaru.Localization/UI.Designer.cs @@ -399,12 +399,6 @@ namespace Aaru.Localization { } } - public static string Title_Type_for_media { - get { - return ResourceManager.GetString("Title_Type_for_media", resourceCulture); - } - } - public static string Media_found_in_images_statistics { get { return ResourceManager.GetString("Media_found_in_images_statistics", resourceCulture); @@ -507,18 +501,6 @@ namespace Aaru.Localization { } } - public static string Please_write_description_of_media_type { - get { - return ResourceManager.GetString("Please_write_description_of_media_type", resourceCulture); - } - } - - public static string Please_write_media_model { - get { - return ResourceManager.GetString("Please_write_media_model", resourceCulture); - } - } - public static string Unsupported_device_type_for_report { get { return ResourceManager.GetString("Unsupported_device_type_for_report", resourceCulture); @@ -699,24 +681,6 @@ namespace Aaru.Localization { } } - public static string Invoke_Found_undecoded_tuple_ID_0 { - get { - return ResourceManager.GetString("Invoke_Found_undecoded_tuple_ID_0", resourceCulture); - } - } - - public static string Found_unknown_tuple_ID_0 { - get { - return ResourceManager.GetString("Found_unknown_tuple_ID_0", resourceCulture); - } - } - - public static string Could_not_get_tuples { - get { - return ResourceManager.GetString("Could_not_get_tuples", resourceCulture); - } - } - public static string aaruremote_host { get { return ResourceManager.GetString("aaruremote_host", resourceCulture); @@ -867,12 +831,6 @@ namespace Aaru.Localization { } } - public static string Error_0 { - get { - return ResourceManager.GetString("Error_0", resourceCulture); - } - } - public static string Correctly_opened_image_file { get { return ResourceManager.GetString("Correctly_opened_image_file", resourceCulture); @@ -1083,12 +1041,6 @@ namespace Aaru.Localization { } } - public static string Title_Start { - get { - return ResourceManager.GetString("Title_Start", resourceCulture); - } - } - public static string Title_Length { get { return ResourceManager.GetString("Title_Length", resourceCulture); @@ -1299,12 +1251,6 @@ namespace Aaru.Localization { } } - public static string Hashing_tracks { - get { - return ResourceManager.GetString("Hashing_tracks", resourceCulture); - } - } - public static string Hashing_track_0_of_1 { get { return ResourceManager.GetString("Hashing_track_0_of_1", resourceCulture); @@ -1347,18 +1293,6 @@ namespace Aaru.Localization { } } - public static string Could_not_get_tracks_because_0 { - get { - return ResourceManager.GetString("Could_not_get_tracks_because_0", resourceCulture); - } - } - - public static string Hashing_files { - get { - return ResourceManager.GetString("Hashing_files", resourceCulture); - } - } - public static string Hashing_file_0_of_1 { get { return ResourceManager.GetString("Hashing_file_0_of_1", resourceCulture); @@ -1425,12 +1359,6 @@ namespace Aaru.Localization { } } - public static string Hashing_sectors { - get { - return ResourceManager.GetString("Hashing_sectors", resourceCulture); - } - } - public static string Hashing_sectors_0_to_1 { get { return ResourceManager.GetString("Hashing_sectors_0_to_1", resourceCulture); @@ -2013,9 +1941,9 @@ namespace Aaru.Localization { } } - public static string Incorrect_metadata_sidecar_file { + public static string Incorrect_metadata_sidecar_file_not_continuing { get { - return ResourceManager.GetString("Incorrect_metadata_sidecar_file", resourceCulture); + return ResourceManager.GetString("Incorrect_metadata_sidecar_file_not_continuing", resourceCulture); } } @@ -2140,12 +2068,6 @@ namespace Aaru.Localization { } } - public static string Output_format_does_not_support_sessions { - get { - return ResourceManager.GetString("Output_format_does_not_support_sessions", resourceCulture); - } - } - public static string Error_0_creating_output_image { get { return ResourceManager.GetString("Error_0_creating_output_image", resourceCulture); @@ -2158,12 +2080,6 @@ namespace Aaru.Localization { } } - public static string Error_0_setting_metadata { - get { - return ResourceManager.GetString("Error_0_setting_metadata", resourceCulture); - } - } - public static string Converting_media_tag_0 { get { return ResourceManager.GetString("Converting_media_tag_0", resourceCulture); @@ -3148,12 +3064,6 @@ namespace Aaru.Localization { } } - public static string The_drive_has_returned_incorrect_Q_positioning_calculating_pregaps { - get { - return ResourceManager.GetString("The_drive_has_returned_incorrect_Q_positioning_calculating_pregaps", resourceCulture); - } - } - public static string Hidden_track_starts_at_LBA_0_ends_at_LBA_1 { get { return ResourceManager.GetString("Hidden_track_starts_at_LBA_0_ends_at_LBA_1", resourceCulture); @@ -3357,5 +3267,2591 @@ namespace Aaru.Localization { return ResourceManager.GetString("Title_Namespace", resourceCulture); } } + + public static string Invalid_list_of_items { + get { + return ResourceManager.GetString("Invalid_list_of_items", resourceCulture); + } + } + + public static string Invalid_item_in_list { + get { + return ResourceManager.GetString("Invalid_item_in_list", resourceCulture); + } + } + + public static string Duration_cannot_be_negative_or_infinite { + get { + return ResourceManager.GetString("Duration_cannot_be_negative_or_infinite", resourceCulture); + } + } + + public static string Items_must_be_a_IList_ulong_double { + get { + return ResourceManager.GetString("Items_must_be_a_IList_ulong_double", resourceCulture); + } + } + + public static string Label_About { + get { + return ResourceManager.GetString("Label_About", resourceCulture); + } + } + + public static string Label_Libraries { + get { + return ResourceManager.GetString("Label_Libraries", resourceCulture); + } + } + + public static string Label_Authors { + get { + return ResourceManager.GetString("Label_Authors", resourceCulture); + } + } + + public static string Title_About_Aaru { + get { + return ResourceManager.GetString("Title_About_Aaru", resourceCulture); + } + } + + public static string Label_License { + get { + return ResourceManager.GetString("Label_License", resourceCulture); + } + } + + public static string ButtonLabel_Close { + get { + return ResourceManager.GetString("ButtonLabel_Close", resourceCulture); + } + } + + public static string Title_Library { + get { + return ResourceManager.GetString("Title_Library", resourceCulture); + } + } + + public static string Title_Version { + get { + return ResourceManager.GetString("Title_Version", resourceCulture); + } + } + + public static string Text_Authors { + get { + return ResourceManager.GetString("Text_Authors", resourceCulture); + } + } + + public static string Title_Console { + get { + return ResourceManager.GetString("Title_Console", resourceCulture); + } + } + + public static string Enable_debug_console { + get { + return ResourceManager.GetString("Enable_debug_console", resourceCulture); + } + } + + public static string ButtonLabel_Save { + get { + return ResourceManager.GetString("ButtonLabel_Save", resourceCulture); + } + } + + public static string ButtonLabel_Clear { + get { + return ResourceManager.GetString("ButtonLabel_Clear", resourceCulture); + } + } + + public static string Title_Time { + get { + return ResourceManager.GetString("Title_Time", resourceCulture); + } + } + + public static string Title_Module { + get { + return ResourceManager.GetString("Title_Module", resourceCulture); + } + } + + public static string Title_Message { + get { + return ResourceManager.GetString("Title_Message", resourceCulture); + } + } + + public static string Dialog_Log_files { + get { + return ResourceManager.GetString("Dialog_Log_files", resourceCulture); + } + } + + public static string Log_saved_at_0 { + get { + return ResourceManager.GetString("Log_saved_at_0", resourceCulture); + } + } + + public static string Console_with_ornament { + get { + return ResourceManager.GetString("Console_with_ornament", resourceCulture); + } + } + + public static string LogEntry_Type_Info { + get { + return ResourceManager.GetString("LogEntry_Type_Info", resourceCulture); + } + } + + public static string Title_Error { + get { + return ResourceManager.GetString("Title_Error", resourceCulture); + } + } + + public static string Exception_0_trying_to_save_logfile_details_has_been_sent_to_console { + get { + return ResourceManager.GetString("Exception_0_trying_to_save_logfile_details_has_been_sent_to_console", resourceCulture); + } + } + + public static string Encodings { + get { + return ResourceManager.GetString("Encodings", resourceCulture); + } + } + + public static string Title_Code_for_encoding { + get { + return ResourceManager.GetString("Title_Code_for_encoding", resourceCulture); + } + } + + public static string Title_Aaru_license { + get { + return ResourceManager.GetString("Title_Aaru_license", resourceCulture); + } + } + + public static string Title_Plugins { + get { + return ResourceManager.GetString("Title_Plugins", resourceCulture); + } + } + + public static string Title_Filters { + get { + return ResourceManager.GetString("Title_Filters", resourceCulture); + } + } + + public static string Title_Partitions { + get { + return ResourceManager.GetString("Title_Partitions", resourceCulture); + } + } + + public static string Title_Filesystems { + get { + return ResourceManager.GetString("Title_Filesystems", resourceCulture); + } + } + + public static string Title_Identify_only { + get { + return ResourceManager.GetString("Title_Identify_only", resourceCulture); + } + } + + public static string Title_Media_images { + get { + return ResourceManager.GetString("Title_Media_images", resourceCulture); + } + } + + public static string Title_Floppy_images { + get { + return ResourceManager.GetString("Title_Floppy_images", resourceCulture); + } + } + + public static string Title_Readable { + get { + return ResourceManager.GetString("Title_Readable", resourceCulture); + } + } + + public static string Title_Writable { + get { + return ResourceManager.GetString("Title_Writable", resourceCulture); + } + } + + public static string Title_UUID { + get { + return ResourceManager.GetString("Title_UUID", resourceCulture); + } + } + + public static string Title_Author { + get { + return ResourceManager.GetString("Title_Author", resourceCulture); + } + } + + public static string Title_Settings { + get { + return ResourceManager.GetString("Title_Settings", resourceCulture); + } + } + + public static string Title_GDPR { + get { + return ResourceManager.GetString("Title_GDPR", resourceCulture); + } + } + + public static string Title_Reports { + get { + return ResourceManager.GetString("Title_Reports", resourceCulture); + } + } + + public static string Title_Statistics { + get { + return ResourceManager.GetString("Title_Statistics", resourceCulture); + } + } + + public static string ButtonLabel_Cancel { + get { + return ResourceManager.GetString("ButtonLabel_Cancel", resourceCulture); + } + } + + public static string Save_device_reports_in_shared_folder_of_your_computer_Q { + get { + return ResourceManager.GetString("Save_device_reports_in_shared_folder_of_your_computer_Q", resourceCulture); + } + } + + public static string Share_your_device_reports_with_us_Q { + get { + return ResourceManager.GetString("Share_your_device_reports_with_us_Q", resourceCulture); + } + } + + public static string Save_stats_about_your_Aaru_usage_Q { + get { + return ResourceManager.GetString("Save_stats_about_your_Aaru_usage_Q", resourceCulture); + } + } + + public static string Share_your_stats_anonymously_Q { + get { + return ResourceManager.GetString("Share_your_stats_anonymously_Q", resourceCulture); + } + } + + public static string Gather_statistics_about_command_usage_Q { + get { + return ResourceManager.GetString("Gather_statistics_about_command_usage_Q", resourceCulture); + } + } + + public static string Gather_statistics_about_found_devices_Q { + get { + return ResourceManager.GetString("Gather_statistics_about_found_devices_Q", resourceCulture); + } + } + + public static string Gather_statistics_about_found_filesystems_Q { + get { + return ResourceManager.GetString("Gather_statistics_about_found_filesystems_Q", resourceCulture); + } + } + + public static string Gather_statistics_about_found_file_filters_Q { + get { + return ResourceManager.GetString("Gather_statistics_about_found_file_filters_Q", resourceCulture); + } + } + + public static string Gather_statistics_about_found_media_image_formats_Q { + get { + return ResourceManager.GetString("Gather_statistics_about_found_media_image_formats_Q", resourceCulture); + } + } + + public static string Gather_statistics_about_scanned_media_Q { + get { + return ResourceManager.GetString("Gather_statistics_about_scanned_media_Q", resourceCulture); + } + } + + public static string Gather_statistics_about_found_partitioning_schemes_Q { + get { + return ResourceManager.GetString("Gather_statistics_about_found_partitioning_schemes_Q", resourceCulture); + } + } + + public static string Gather_statistics_about_media_types_Q { + get { + return ResourceManager.GetString("Gather_statistics_about_media_types_Q", resourceCulture); + } + } + + public static string Gather_statistics_about_media_image_verifications_Q { + get { + return ResourceManager.GetString("Gather_statistics_about_media_image_verifications_Q", resourceCulture); + } + } + + public static string You_have_called_the_Filesystem_Info_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Filesystem_Info_command_0_times", resourceCulture); + } + } + + public static string You_have_called_the_Checksum_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Checksum_command_0_times", resourceCulture); + } + } + + public static string You_have_called_the_Compare_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Compare_command_0_times", resourceCulture); + } + } + + public static string You_have_called_the_Convert_Image_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Convert_Image_command_0_times", resourceCulture); + } + } + + public static string You_have_called_the_Create_Sidecar_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Create_Sidecar_command_0_times", resourceCulture); + } + } + + public static string You_have_called_the_Decode_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Decode_command_0_times", resourceCulture); + } + } + + public static string You_have_called_the_Device_Info_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Device_Info_command_0_times", resourceCulture); + } + } + + public static string You_have_called_the_Device_Report_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Device_Report_command_0_times", resourceCulture); + } + } + + public static string You_have_called_the_Dump_Media_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Dump_Media_command_0_times", resourceCulture); + } + } + + public static string You_have_called_the_Entropy_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Entropy_command_0_times", resourceCulture); + } + } + + public static string You_have_called_the_Formats_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Formats_command_0_times", resourceCulture); + } + } + + public static string You_have_called_the_Image_Info_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Image_Info_command_0_times", resourceCulture); + } + } + + public static string You_have_called_the_Media_Info_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Media_Info_command_0_times", resourceCulture); + } + } + + public static string You_have_called_the_Media_Scan_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Media_Scan_command_0_times", resourceCulture); + } + } + + public static string You_have_called_the_Print_Hex_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Print_Hex_command_0_times", resourceCulture); + } + } + + public static string You_have_called_the_Verify_command_0_times { + get { + return ResourceManager.GetString("You_have_called_the_Verify_command_0_times", resourceCulture); + } + } + + public static string Media_found_type_real { + get { + return ResourceManager.GetString("Media_found_type_real", resourceCulture); + } + } + + public static string Media_found_type_image { + get { + return ResourceManager.GetString("Media_found_type_image", resourceCulture); + } + } + + public static string Title_Commands { + get { + return ResourceManager.GetString("Title_Commands", resourceCulture); + } + } + + public static string Title_Partition { + get { + return ResourceManager.GetString("Title_Partition", resourceCulture); + } + } + + public static string Title_Formats { + get { + return ResourceManager.GetString("Title_Formats", resourceCulture); + } + } + + public static string Title_Devices { + get { + return ResourceManager.GetString("Title_Devices", resourceCulture); + } + } + + public static string Title_Device { + get { + return ResourceManager.GetString("Title_Device", resourceCulture); + } + } + + public static string Title_Medias { + get { + return ResourceManager.GetString("Title_Medias", resourceCulture); + } + } + + public static string Title_Media { + get { + return ResourceManager.GetString("Title_Media", resourceCulture); + } + } + + public static string _0_Kb_sec { + get { + return ResourceManager.GetString("_0_Kb_sec", resourceCulture); + } + } + + public static string unlimited_as_in_speed { + get { + return ResourceManager.GetString("unlimited_as_in_speed", resourceCulture); + } + } + + public static string Save_descriptors_to_file { + get { + return ResourceManager.GetString("Save_descriptors_to_file", resourceCulture); + } + } + + public static string Title_USB { + get { + return ResourceManager.GetString("Title_USB", resourceCulture); + } + } + + public static string Title_Connected_by_USB { + get { + return ResourceManager.GetString("Title_Connected_by_USB", resourceCulture); + } + } + + public static string Title_Removable_media { + get { + return ResourceManager.GetString("Title_Removable_media", resourceCulture); + } + } + + public static string Title_Peripheral_device_type { + get { + return ResourceManager.GetString("Title_Peripheral_device_type", resourceCulture); + } + } + + public static string Title_Device_type { + get { + return ResourceManager.GetString("Title_Device_type", resourceCulture); + } + } + + public static string Title_General { + get { + return ResourceManager.GetString("Title_General", resourceCulture); + } + } + + public static string Title_Device_information { + get { + return ResourceManager.GetString("Title_Device_information", resourceCulture); + } + } + + public static string Title_FireWire { + get { + return ResourceManager.GetString("Title_FireWire", resourceCulture); + } + } + + public static string Title_Plextor { + get { + return ResourceManager.GetString("Title_Plextor", resourceCulture); + } + } + + public static string Total_loaded_discs { + get { + return ResourceManager.GetString("Total_loaded_discs", resourceCulture); + } + } + + public static string Time_spent_reading_CDs { + get { + return ResourceManager.GetString("Time_spent_reading_CDs", resourceCulture); + } + } + + public static string Time_spent_writing_CDs { + get { + return ResourceManager.GetString("Time_spent_writing_CDs", resourceCulture); + } + } + + public static string Time_spent_reading_DVDs { + get { + return ResourceManager.GetString("Time_spent_reading_DVDs", resourceCulture); + } + } + + public static string Time_spent_writing_DVDs { + get { + return ResourceManager.GetString("Time_spent_writing_DVDs", resourceCulture); + } + } + + public static string Supports_PoweRec { + get { + return ResourceManager.GetString("Supports_PoweRec", resourceCulture); + } + } + + public static string PoweRec_is_enabled { + get { + return ResourceManager.GetString("PoweRec_is_enabled", resourceCulture); + } + } + + public static string Recommended_speed { + get { + return ResourceManager.GetString("Recommended_speed", resourceCulture); + } + } + + public static string Selected_PoweRec_speed_for_currently_inserted_media { + get { + return ResourceManager.GetString("Selected_PoweRec_speed_for_currently_inserted_media", resourceCulture); + } + } + + public static string Maximum_PoweRec_speed_for_currently_inserted_media { + get { + return ResourceManager.GetString("Maximum_PoweRec_speed_for_currently_inserted_media", resourceCulture); + } + } + + public static string Last_PoweRec_used_speed { + get { + return ResourceManager.GetString("Last_PoweRec_used_speed", resourceCulture); + } + } + + public static string Supports_SilentMode { + get { + return ResourceManager.GetString("Supports_SilentMode", resourceCulture); + } + } + + public static string SilentMode_is_enabled { + get { + return ResourceManager.GetString("SilentMode_is_enabled", resourceCulture); + } + } + + public static string CD_read_speed_limited_to { + get { + return ResourceManager.GetString("CD_read_speed_limited_to", resourceCulture); + } + } + + public static string CD_write_speed_limited_to { + get { + return ResourceManager.GetString("CD_write_speed_limited_to", resourceCulture); + } + } + + public static string DVD_read_speed_limited_to { + get { + return ResourceManager.GetString("DVD_read_speed_limited_to", resourceCulture); + } + } + + public static string Supports_GigaRec { + get { + return ResourceManager.GetString("Supports_GigaRec", resourceCulture); + } + } + + public static string Supports_SecuRec { + get { + return ResourceManager.GetString("Supports_SecuRec", resourceCulture); + } + } + + public static string Supports_SpeedRead { + get { + return ResourceManager.GetString("Supports_SpeedRead", resourceCulture); + } + } + + public static string SpeedRead_is_enabled { + get { + return ResourceManager.GetString("SpeedRead_is_enabled", resourceCulture); + } + } + + public static string Supports_hiding_CD_Rs_and_sessions { + get { + return ResourceManager.GetString("Supports_hiding_CD_Rs_and_sessions", resourceCulture); + } + } + + public static string Is_hiding_CD_Rs { + get { + return ResourceManager.GetString("Is_hiding_CD_Rs", resourceCulture); + } + } + + public static string Is_forcing_only_first_session { + get { + return ResourceManager.GetString("Is_forcing_only_first_session", resourceCulture); + } + } + + public static string Supports_VariRec { + get { + return ResourceManager.GetString("Supports_VariRec", resourceCulture); + } + } + + public static string Supports_VariRec_on_DVDs { + get { + return ResourceManager.GetString("Supports_VariRec_on_DVDs", resourceCulture); + } + } + + public static string Supports_bitsetting_DVD_R_book_type { + get { + return ResourceManager.GetString("Supports_bitsetting_DVD_R_book_type", resourceCulture); + } + } + + public static string Supports_bitsetting_DVD_R_DL_book_type { + get { + return ResourceManager.GetString("Supports_bitsetting_DVD_R_DL_book_type", resourceCulture); + } + } + + public static string Supports_test_writing_DVD_Plus { + get { + return ResourceManager.GetString("Supports_test_writing_DVD_Plus", resourceCulture); + } + } + + public static string Title_Kreon { + get { + return ResourceManager.GetString("Title_Kreon", resourceCulture); + } + } + + public static string Densities_supported_by_device { + get { + return ResourceManager.GetString("Densities_supported_by_device", resourceCulture); + } + } + + public static string Medium_types_supported_by_device { + get { + return ResourceManager.GetString("Medium_types_supported_by_device", resourceCulture); + } + } + + public static string Title_CID { + get { + return ResourceManager.GetString("Title_CID", resourceCulture); + } + } + + public static string Title_CSD { + get { + return ResourceManager.GetString("Title_CSD", resourceCulture); + } + } + + public static string Title_OCR { + get { + return ResourceManager.GetString("Title_OCR", resourceCulture); + } + } + + public static string Title_Extended_CSD { + get { + return ResourceManager.GetString("Title_Extended_CSD", resourceCulture); + } + } + + public static string Title_SCR { + get { + return ResourceManager.GetString("Title_SCR", resourceCulture); + } + } + + public static string Title_PCMCIA { + get { + return ResourceManager.GetString("Title_PCMCIA", resourceCulture); + } + } + + public static string Title_ATA_ATAPI { + get { + return ResourceManager.GetString("Title_ATA_ATAPI", resourceCulture); + } + } + + public static string Title_SCSI { + get { + return ResourceManager.GetString("Title_SCSI", resourceCulture); + } + } + + public static string Title_SD_MMC { + get { + return ResourceManager.GetString("Title_SD_MMC", resourceCulture); + } + } + + public static string Dialog_Binary_files { + get { + return ResourceManager.GetString("Dialog_Binary_files", resourceCulture); + } + } + + public static string Title_Details { + get { + return ResourceManager.GetString("Title_Details", resourceCulture); + } + } + + public static string Path_0 { + get { + return ResourceManager.GetString("Path_0", resourceCulture); + } + } + + public static string Filter_0 { + get { + return ResourceManager.GetString("Filter_0", resourceCulture); + } + } + + public static string Format_0_version_1 { + get { + return ResourceManager.GetString("Format_0_version_1", resourceCulture); + } + } + + public static string Format_0 { + get { + return ResourceManager.GetString("Format_0", resourceCulture); + } + } + + public static string Has_partitions { + get { + return ResourceManager.GetString("Has_partitions", resourceCulture); + } + } + + public static string Doesnt_have_partitions { + get { + return ResourceManager.GetString("Doesnt_have_partitions", resourceCulture); + } + } + + public static string Has_sessions { + get { + return ResourceManager.GetString("Has_sessions", resourceCulture); + } + } + + public static string Doesnt_have_sessions { + get { + return ResourceManager.GetString("Doesnt_have_sessions", resourceCulture); + } + } + + public static string Media_title_0 { + get { + return ResourceManager.GetString("Media_title_0", resourceCulture); + } + } + + public static string Media_model_0 { + get { + return ResourceManager.GetString("Media_model_0", resourceCulture); + } + } + + public static string Media_barcode_0 { + get { + return ResourceManager.GetString("Media_barcode_0", resourceCulture); + } + } + + public static string Media_part_number_0 { + get { + return ResourceManager.GetString("Media_part_number_0", resourceCulture); + } + } + + public static string Drive_manufacturer_0 { + get { + return ResourceManager.GetString("Drive_manufacturer_0", resourceCulture); + } + } + + public static string Drive_model_0 { + get { + return ResourceManager.GetString("Drive_model_0", resourceCulture); + } + } + + public static string Drive_firmware_info_0 { + get { + return ResourceManager.GetString("Drive_firmware_info_0", resourceCulture); + } + } + + public static string Media_geometry_0_cylinders_1_heads_2_sectors_per_track { + get { + return ResourceManager.GetString("Media_geometry_0_cylinders_1_heads_2_sectors_per_track", resourceCulture); + } + } + + public static string Title_Image_information { + get { + return ResourceManager.GetString("Title_Image_information", resourceCulture); + } + } + + public static string Title_Comments { + get { + return ResourceManager.GetString("Title_Comments", resourceCulture); + } + } + + public static string Title_Media_information { + get { + return ResourceManager.GetString("Title_Media_information", resourceCulture); + } + } + + public static string Title_Drive_information { + get { + return ResourceManager.GetString("Title_Drive_information", resourceCulture); + } + } + + public static string Title_Readable_media_tags { + get { + return ResourceManager.GetString("Title_Readable_media_tags", resourceCulture); + } + } + + public static string Title_Readable_sector_tags { + get { + return ResourceManager.GetString("Title_Readable_sector_tags", resourceCulture); + } + } + + public static string Title_Sessions { + get { + return ResourceManager.GetString("Title_Sessions", resourceCulture); + } + } + + public static string Title_Tracks { + get { + return ResourceManager.GetString("Title_Tracks", resourceCulture); + } + } + + public static string Title_Dump_hardware { + get { + return ResourceManager.GetString("Title_Dump_hardware", resourceCulture); + } + } + + public static string Title_Software { + get { + return ResourceManager.GetString("Title_Software", resourceCulture); + } + } + + public static string Title_Operating_system { + get { + return ResourceManager.GetString("Title_Operating_system", resourceCulture); + } + } + + public static string ButtonLabel_Calculate_entropy { + get { + return ResourceManager.GetString("ButtonLabel_Calculate_entropy", resourceCulture); + } + } + + public static string ButtonLabel_Verify { + get { + return ResourceManager.GetString("ButtonLabel_Verify", resourceCulture); + } + } + + public static string ButtonLabel_Checksum { + get { + return ResourceManager.GetString("ButtonLabel_Checksum", resourceCulture); + } + } + + public static string ButtonLabel_Convert_to { + get { + return ResourceManager.GetString("ButtonLabel_Convert_to", resourceCulture); + } + } + + public static string ButtonLabel_Create_CICM_XML_sidecar { + get { + return ResourceManager.GetString("ButtonLabel_Create_CICM_XML_sidecar", resourceCulture); + } + } + + public static string ButtonLabel_View_sectors { + get { + return ResourceManager.GetString("ButtonLabel_View_sectors", resourceCulture); + } + } + + public static string ButtonLabel_Decode_media_tags { + get { + return ResourceManager.GetString("ButtonLabel_Decode_media_tags", resourceCulture); + } + } + + public static string ButtonLabel_Save_READ_MEDIA_SERIAL_NUMBER_response { + get { + return ResourceManager.GetString("ButtonLabel_Save_READ_MEDIA_SERIAL_NUMBER_response", resourceCulture); + } + } + + public static string ButtonLabel_Save_READ_CAPACITY_response { + get { + return ResourceManager.GetString("ButtonLabel_Save_READ_CAPACITY_response", resourceCulture); + } + } + + public static string ButtonLabel_Save_READ_CAPACITY_16_response { + get { + return ResourceManager.GetString("ButtonLabel_Save_READ_CAPACITY_16_response", resourceCulture); + } + } + + public static string ButtonLabel_Save_GET_CONFIGURATION_response { + get { + return ResourceManager.GetString("ButtonLabel_Save_GET_CONFIGURATION_response", resourceCulture); + } + } + + public static string ButtonLabel_Save_RECOGNIZED_FORMAT_LAYERS_response { + get { + return ResourceManager.GetString("ButtonLabel_Save_RECOGNIZED_FORMAT_LAYERS_response", resourceCulture); + } + } + + public static string ButtonLabel_Save_WRITE_PROTECTION_STATUS_response { + get { + return ResourceManager.GetString("ButtonLabel_Save_WRITE_PROTECTION_STATUS_response", resourceCulture); + } + } + + public static string ButtonLabel_Save_REPORT_DENSITY_SUPPORT_MEDIA_response { + get { + return ResourceManager.GetString("ButtonLabel_Save_REPORT_DENSITY_SUPPORT_MEDIA_response", resourceCulture); + } + } + + public static string ButtonLabel_Save_REPORT_DENSITY_SUPPORT_MEDIUM_MEDIA_response { + get { + return ResourceManager.GetString("ButtonLabel_Save_REPORT_DENSITY_SUPPORT_MEDIUM_MEDIA_response", resourceCulture); + } + } + + public static string ButtonLabel_Dump_media_to_image { + get { + return ResourceManager.GetString("ButtonLabel_Dump_media_to_image", resourceCulture); + } + } + + public static string ButtonLabel_Scan_media_surface { + get { + return ResourceManager.GetString("ButtonLabel_Scan_media_surface", resourceCulture); + } + } + + public static string Error_0_trying_to_read_1_of_chosen_filesystem { + get { + return ResourceManager.GetString("Error_0_trying_to_read_1_of_chosen_filesystem", resourceCulture); + } + } + + public static string Error_0_trying_to_get_information_about_filesystem_entry_named_1 { + get { + return ResourceManager.GetString("Error_0_trying_to_get_information_about_filesystem_entry_named_1", resourceCulture); + } + } + + public static string ButtonLabel_Extract_to { + get { + return ResourceManager.GetString("ButtonLabel_Extract_to", resourceCulture); + } + } + + public static string Title_Creation { + get { + return ResourceManager.GetString("Title_Creation", resourceCulture); + } + } + + public static string Title_Last_access { + get { + return ResourceManager.GetString("Title_Last_access", resourceCulture); + } + } + + public static string Title_Changed { + get { + return ResourceManager.GetString("Title_Changed", resourceCulture); + } + } + + public static string Title_Last_backup { + get { + return ResourceManager.GetString("Title_Last_backup", resourceCulture); + } + } + + public static string Title_Last_write { + get { + return ResourceManager.GetString("Title_Last_write", resourceCulture); + } + } + + public static string Title_Attributes { + get { + return ResourceManager.GetString("Title_Attributes", resourceCulture); + } + } + + public static string Title_GID { + get { + return ResourceManager.GetString("Title_GID", resourceCulture); + } + } + + public static string Title_UID { + get { + return ResourceManager.GetString("Title_UID", resourceCulture); + } + } + + public static string Title_Inode { + get { + return ResourceManager.GetString("Title_Inode", resourceCulture); + } + } + + public static string Title_Links { + get { + return ResourceManager.GetString("Title_Links", resourceCulture); + } + } + + public static string Title_Mode { + get { + return ResourceManager.GetString("Title_Mode", resourceCulture); + } + } + + public static string Dialog_Choose_destination_folder { + get { + return ResourceManager.GetString("Dialog_Choose_destination_folder", resourceCulture); + } + } + + public static string Unsupported_filename { + get { + return ResourceManager.GetString("Unsupported_filename", resourceCulture); + } + } + + public static string Filename_0_not_supported_want_to_rename_to_1 { + get { + return ResourceManager.GetString("Filename_0_not_supported_want_to_rename_to_1", resourceCulture); + } + } + + public static string Existing_file { + get { + return ResourceManager.GetString("Existing_file", resourceCulture); + } + } + + public static string File_named_0_exists_overwrite_Q { + get { + return ResourceManager.GetString("File_named_0_exists_overwrite_Q", resourceCulture); + } + } + + public static string Cannot_delete { + get { + return ResourceManager.GetString("Cannot_delete", resourceCulture); + } + } + + public static string Could_note_delete_existe_file_continue_Q { + get { + return ResourceManager.GetString("Could_note_delete_existe_file_continue_Q", resourceCulture); + } + } + + public static string Error_reading_file { + get { + return ResourceManager.GetString("Error_reading_file", resourceCulture); + } + } + + public static string Error_0_reading_file_continue_Q { + get { + return ResourceManager.GetString("Error_0_reading_file_continue_Q", resourceCulture); + } + } + + public static string Cannot_create_file { + get { + return ResourceManager.GetString("Cannot_create_file", resourceCulture); + } + } + + public static string Could_not_create_destination_file_continue_Q { + get { + return ResourceManager.GetString("Could_not_create_destination_file_continue_Q", resourceCulture); + } + } + + public static string ButtonLabel_Save_binary_to_file { + get { + return ResourceManager.GetString("ButtonLabel_Save_binary_to_file", resourceCulture); + } + } + + public static string ButtonLabel_Save_text_to_file { + get { + return ResourceManager.GetString("ButtonLabel_Save_text_to_file", resourceCulture); + } + } + + public static string Dialog_Text_files { + get { + return ResourceManager.GetString("Dialog_Text_files", resourceCulture); + } + } + + public static string Disc_information { + get { + return ResourceManager.GetString("Disc_information", resourceCulture); + } + } + + public static string Burst_Cutting_Area { + get { + return ResourceManager.GetString("Burst_Cutting_Area", resourceCulture); + } + } + + public static string Cartridge_Status { + get { + return ResourceManager.GetString("Cartridge_Status", resourceCulture); + } + } + + public static string Pseudo_OverWrite_Resources { + get { + return ResourceManager.GetString("Pseudo_OverWrite_Resources", resourceCulture); + } + } + + public static string Disc_Definition_Structure { + get { + return ResourceManager.GetString("Disc_Definition_Structure", resourceCulture); + } + } + + public static string Spare_Area_Information { + get { + return ResourceManager.GetString("Spare_Area_Information", resourceCulture); + } + } + + public static string Track_Resources { + get { + return ResourceManager.GetString("Track_Resources", resourceCulture); + } + } + + public static string ButtonLabel_Save_Disc_Information { + get { + return ResourceManager.GetString("ButtonLabel_Save_Disc_Information", resourceCulture); + } + } + + public static string ButtonLabel_Save_Burst_Cutting_Area { + get { + return ResourceManager.GetString("ButtonLabel_Save_Burst_Cutting_Area", resourceCulture); + } + } + + public static string ButtonLabel_Save_Disc_Definition_Structure { + get { + return ResourceManager.GetString("ButtonLabel_Save_Disc_Definition_Structure", resourceCulture); + } + } + + public static string ButtonLabel_Save_Cartridge_Status { + get { + return ResourceManager.GetString("ButtonLabel_Save_Cartridge_Status", resourceCulture); + } + } + + public static string ButtonLabel_Save_Spare_Area_Information { + get { + return ResourceManager.GetString("ButtonLabel_Save_Spare_Area_Information", resourceCulture); + } + } + + public static string ButtonLabel_Save_Pseudo_OverWrite_Resources { + get { + return ResourceManager.GetString("ButtonLabel_Save_Pseudo_OverWrite_Resources", resourceCulture); + } + } + + public static string ButtonLabel_Save_Track_Resources { + get { + return ResourceManager.GetString("ButtonLabel_Save_Track_Resources", resourceCulture); + } + } + + public static string ButtonLabel_Save_raw_DFL { + get { + return ResourceManager.GetString("ButtonLabel_Save_raw_DFL", resourceCulture); + } + } + + public static string ButtonLabel_Save_PAC { + get { + return ResourceManager.GetString("ButtonLabel_Save_PAC", resourceCulture); + } + } + + public static string Title_Information { + get { + return ResourceManager.GetString("Title_Information", resourceCulture); + } + } + + public static string ButtonLabel_Save_READ_DISC_INFORMATION_response { + get { + return ResourceManager.GetString("ButtonLabel_Save_READ_DISC_INFORMATION_response", resourceCulture); + } + } + + public static string Title_TOC { + get { + return ResourceManager.GetString("Title_TOC", resourceCulture); + } + } + + public static string ButtonLabel_Save_READ_TOC_response { + get { + return ResourceManager.GetString("ButtonLabel_Save_READ_TOC_response", resourceCulture); + } + } + + public static string Title_TOC_full { + get { + return ResourceManager.GetString("Title_TOC_full", resourceCulture); + } + } + + public static string ButtonLabel_Save_READ_RAW_TOC_response { + get { + return ResourceManager.GetString("ButtonLabel_Save_READ_RAW_TOC_response", resourceCulture); + } + } + + public static string ButtonLabel_Save_READ_SESSION_response { + get { + return ResourceManager.GetString("ButtonLabel_Save_READ_SESSION_response", resourceCulture); + } + } + + public static string Title_CD_TEXT { + get { + return ResourceManager.GetString("Title_CD_TEXT", resourceCulture); + } + } + + public static string ButtonLabel_Save_Lead_In_CD_TEXT { + get { + return ResourceManager.GetString("ButtonLabel_Save_Lead_In_CD_TEXT", resourceCulture); + } + } + + public static string Title_ATIP { + get { + return ResourceManager.GetString("Title_ATIP", resourceCulture); + } + } + + public static string ButtonLabel_Save_READ_ATIP_response { + get { + return ResourceManager.GetString("ButtonLabel_Save_READ_ATIP_response", resourceCulture); + } + } + + public static string Title_Miscellaneous { + get { + return ResourceManager.GetString("Title_Miscellaneous", resourceCulture); + } + } + + public static string Title_Media_catalog_number { + get { + return ResourceManager.GetString("Title_Media_catalog_number", resourceCulture); + } + } + + public static string Title_ISRCs { + get { + return ResourceManager.GetString("Title_ISRCs", resourceCulture); + } + } + + public static string Title_ISRC { + get { + return ResourceManager.GetString("Title_ISRC", resourceCulture); + } + } + + public static string ButtonLabel_Save_READ_PMA_response { + get { + return ResourceManager.GetString("ButtonLabel_Save_READ_PMA_response", resourceCulture); + } + } + + public static string ButtonLabel_Save_Physical_Format_Information { + get { + return ResourceManager.GetString("ButtonLabel_Save_Physical_Format_Information", resourceCulture); + } + } + + public static string ButtonLabel_Save_Disc_Manufacturer_Information { + get { + return ResourceManager.GetString("ButtonLabel_Save_Disc_Manufacturer_Information", resourceCulture); + } + } + + public static string ButtonLabel_Save_Copyright_Management_Information { + get { + return ResourceManager.GetString("ButtonLabel_Save_Copyright_Management_Information", resourceCulture); + } + } + + public static string ButtonLabel_Save_AACS_Information { + get { + return ResourceManager.GetString("ButtonLabel_Save_AACS_Information", resourceCulture); + } + } + + public static string ButtonLabel_Save_Last_Border_Out_RMD { + get { + return ResourceManager.GetString("ButtonLabel_Save_Last_Border_Out_RMD", resourceCulture); + } + } + + public static string ButtonLabel_Save_Pre_Recorded_Physical_Information { + get { + return ResourceManager.GetString("ButtonLabel_Save_Pre_Recorded_Physical_Information", resourceCulture); + } + } + + public static string ButtonLabel_Save_Media_Identifier { + get { + return ResourceManager.GetString("ButtonLabel_Save_Media_Identifier", resourceCulture); + } + } + + public static string ButtonLabel_Save_Recordable_Physical_Information { + get { + return ResourceManager.GetString("ButtonLabel_Save_Recordable_Physical_Information", resourceCulture); + } + } + + public static string ButtonLabel_Save_Medium_Status { + get { + return ResourceManager.GetString("ButtonLabel_Save_Medium_Status", resourceCulture); + } + } + + public static string ButtonLabel_Save_Layer_Capacity { + get { + return ResourceManager.GetString("ButtonLabel_Save_Layer_Capacity", resourceCulture); + } + } + + public static string ButtonLabel_Save_Middle_Zone_Start { + get { + return ResourceManager.GetString("ButtonLabel_Save_Middle_Zone_Start", resourceCulture); + } + } + + public static string ButtonLabel_Save_Jump_Interval_Size { + get { + return ResourceManager.GetString("ButtonLabel_Save_Jump_Interval_Size", resourceCulture); + } + } + + public static string ButtonLabel_Save_Manual_Layer_Jump_Start_LBA { + get { + return ResourceManager.GetString("ButtonLabel_Save_Manual_Layer_Jump_Start_LBA", resourceCulture); + } + } + + public static string ButtonLabel_Save_Remap_Anchor_Point { + get { + return ResourceManager.GetString("ButtonLabel_Save_Remap_Anchor_Point", resourceCulture); + } + } + + public static string ButtonLabel_Save_ADIP { + get { + return ResourceManager.GetString("ButtonLabel_Save_ADIP", resourceCulture); + } + } + + public static string ButtonLabel_Save_Disc_Control_Blocks { + get { + return ResourceManager.GetString("ButtonLabel_Save_Disc_Control_Blocks", resourceCulture); + } + } + + public static string Device_Geometry_Tuples { + get { + return ResourceManager.GetString("Device_Geometry_Tuples", resourceCulture); + } + } + + public static string Manufacturer_Identification_Tuple { + get { + return ResourceManager.GetString("Manufacturer_Identification_Tuple", resourceCulture); + } + } + + public static string Level_1_Version_Product_Information_Tuple { + get { + return ResourceManager.GetString("Level_1_Version_Product_Information_Tuple", resourceCulture); + } + } + + public static string Undecoded_tuple_ID_0 { + get { + return ResourceManager.GetString("Undecoded_tuple_ID_0", resourceCulture); + } + } + + public static string PCMCIA_CIS_returned_no_tuples { + get { + return ResourceManager.GetString("PCMCIA_CIS_returned_no_tuples", resourceCulture); + } + } + + public static string Title_CIS { + get { + return ResourceManager.GetString("Title_CIS", resourceCulture); + } + } + + public static string ButtonLabel_Save_PCMCIA_CIS_to_file { + get { + return ResourceManager.GetString("ButtonLabel_Save_PCMCIA_CIS_to_file", resourceCulture); + } + } + + public static string Title_Header { + get { + return ResourceManager.GetString("Title_Header", resourceCulture); + } + } + + public static string MODE_0_Subpage_1 { + get { + return ResourceManager.GetString("MODE_0_Subpage_1", resourceCulture); + } + } + + public static string MODE_0 { + get { + return ResourceManager.GetString("MODE_0", resourceCulture); + } + } + + public static string Undecoded { + get { + return ResourceManager.GetString("Undecoded", resourceCulture); + } + } + + public static string Error_decoding_page_please_open_an_issue { + get { + return ResourceManager.GetString("Error_decoding_page_please_open_an_issue", resourceCulture); + } + } + + public static string ASCII_Page_0 { + get { + return ResourceManager.GetString("ASCII_Page_0", resourceCulture); + } + } + + public static string Unit_Serial_Number { + get { + return ResourceManager.GetString("Unit_Serial_Number", resourceCulture); + } + } + + public static string SCSI_Implemented_operating_definitions { + get { + return ResourceManager.GetString("SCSI_Implemented_operating_definitions", resourceCulture); + } + } + + public static string ASCII_implemented_operating_definitions { + get { + return ResourceManager.GetString("ASCII_implemented_operating_definitions", resourceCulture); + } + } + + public static string SCSI_Device_identification { + get { + return ResourceManager.GetString("SCSI_Device_identification", resourceCulture); + } + } + + public static string SCSI_Software_Interface_Identifiers { + get { + return ResourceManager.GetString("SCSI_Software_Interface_Identifiers", resourceCulture); + } + } + + public static string SCSI_Management_Network_Addresses { + get { + return ResourceManager.GetString("SCSI_Management_Network_Addresses", resourceCulture); + } + } + + public static string SCSI_Extended_INQUIRY_Data { + get { + return ResourceManager.GetString("SCSI_Extended_INQUIRY_Data", resourceCulture); + } + } + + public static string SCSI_to_ATA_Translation_Layer_Data { + get { + return ResourceManager.GetString("SCSI_to_ATA_Translation_Layer_Data", resourceCulture); + } + } + + public static string SCSI_Sequential_access_Device_Capabilities { + get { + return ResourceManager.GetString("SCSI_Sequential_access_Device_Capabilities", resourceCulture); + } + } + + public static string Manufacturer_assigned_Serial_Number { + get { + return ResourceManager.GetString("Manufacturer_assigned_Serial_Number", resourceCulture); + } + } + + public static string TapeAlert_Supported_Flags_Bitmap { + get { + return ResourceManager.GetString("TapeAlert_Supported_Flags_Bitmap", resourceCulture); + } + } + + public static string Automation_Device_Serial_Number { + get { + return ResourceManager.GetString("Automation_Device_Serial_Number", resourceCulture); + } + } + + public static string Data_Transfer_Device_Element_Address { + get { + return ResourceManager.GetString("Data_Transfer_Device_Element_Address", resourceCulture); + } + } + + public static string Quantum_Firmware_Build_Information_page { + get { + return ResourceManager.GetString("Quantum_Firmware_Build_Information_page", resourceCulture); + } + } + + public static string Seagate_Firmware_Numbers_page { + get { + return ResourceManager.GetString("Seagate_Firmware_Numbers_page", resourceCulture); + } + } + + public static string IBM_Drive_Component_Revision_Levels_page { + get { + return ResourceManager.GetString("IBM_Drive_Component_Revision_Levels_page", resourceCulture); + } + } + + public static string IBM_Drive_Serial_Numbers_page { + get { + return ResourceManager.GetString("IBM_Drive_Serial_Numbers_page", resourceCulture); + } + } + + public static string Certance_Drive_Component_Revision_Levels_page { + get { + return ResourceManager.GetString("Certance_Drive_Component_Revision_Levels_page", resourceCulture); + } + } + + public static string Head_Assembly_Serial_Number { + get { + return ResourceManager.GetString("Head_Assembly_Serial_Number", resourceCulture); + } + } + + public static string Reel_Motor_1_Serial_Number { + get { + return ResourceManager.GetString("Reel_Motor_1_Serial_Number", resourceCulture); + } + } + + public static string Reel_Motor_2_Serial_Number { + get { + return ResourceManager.GetString("Reel_Motor_2_Serial_Number", resourceCulture); + } + } + + public static string Board_Serial_Number { + get { + return ResourceManager.GetString("Board_Serial_Number", resourceCulture); + } + } + + public static string Base_Mechanical_Serial_Number { + get { + return ResourceManager.GetString("Base_Mechanical_Serial_Number", resourceCulture); + } + } + + public static string HP_Drive_Firmware_Revision_Levels_page { + get { + return ResourceManager.GetString("HP_Drive_Firmware_Revision_Levels_page", resourceCulture); + } + } + + public static string HP_Drive_Hardware_Revision_Levels_page { + get { + return ResourceManager.GetString("HP_Drive_Hardware_Revision_Levels_page", resourceCulture); + } + } + + public static string HP_Drive_PCA_Revision_Levels_page { + get { + return ResourceManager.GetString("HP_Drive_PCA_Revision_Levels_page", resourceCulture); + } + } + + public static string HP_Drive_Mechanism_Revision_Levels_page { + get { + return ResourceManager.GetString("HP_Drive_Mechanism_Revision_Levels_page", resourceCulture); + } + } + + public static string HP_Drive_Head_Assembly_Revision_Levels_page { + get { + return ResourceManager.GetString("HP_Drive_Head_Assembly_Revision_Levels_page", resourceCulture); + } + } + + public static string HP_Drive_ACI_Revision_Levels_page { + get { + return ResourceManager.GetString("HP_Drive_ACI_Revision_Levels_page", resourceCulture); + } + } + + public static string Certance_drive_status_page { + get { + return ResourceManager.GetString("Certance_drive_status_page", resourceCulture); + } + } + + public static string Page_0_h { + get { + return ResourceManager.GetString("Page_0_h", resourceCulture); + } + } + + public static string Unknown_feature { + get { + return ResourceManager.GetString("Unknown_feature", resourceCulture); + } + } + + public static string Title_INQUIRY { + get { + return ResourceManager.GetString("Title_INQUIRY", resourceCulture); + } + } + + public static string Title_SCSI_INQUIRY { + get { + return ResourceManager.GetString("Title_SCSI_INQUIRY", resourceCulture); + } + } + + public static string Title_MODE_SENSE { + get { + return ResourceManager.GetString("Title_MODE_SENSE", resourceCulture); + } + } + + public static string Title_Page { + get { + return ResourceManager.GetString("Title_Page", resourceCulture); + } + } + + public static string ButtonLabel_Save_MODE_SENSE_6_response_to_file { + get { + return ResourceManager.GetString("ButtonLabel_Save_MODE_SENSE_6_response_to_file", resourceCulture); + } + } + + public static string ButtonLabel_Save_MODE_SENSE_10_response_to_file { + get { + return ResourceManager.GetString("ButtonLabel_Save_MODE_SENSE_10_response_to_file", resourceCulture); + } + } + + public static string Title_EVPD { + get { + return ResourceManager.GetString("Title_EVPD", resourceCulture); + } + } + + public static string ButtonLabel_Save_EVPD_page_to_file { + get { + return ResourceManager.GetString("ButtonLabel_Save_EVPD_page_to_file", resourceCulture); + } + } + + public static string Title_MMC_FEATURES { + get { + return ResourceManager.GetString("Title_MMC_FEATURES", resourceCulture); + } + } + + public static string Title_Feature { + get { + return ResourceManager.GetString("Title_Feature", resourceCulture); + } + } + + public static string ButtonLabel_Save_MMC_GET_CONFIGURATION_response_to_file { + get { + return ResourceManager.GetString("ButtonLabel_Save_MMC_GET_CONFIGURATION_response_to_file", resourceCulture); + } + } + + public static string Title_Disc_Manufacturing_Information { + get { + return ResourceManager.GetString("Title_Disc_Manufacturing_Information", resourceCulture); + } + } + + public static string Title_Security_Sector { + get { + return ResourceManager.GetString("Title_Security_Sector", resourceCulture); + } + } + + public static string ButtonLabel_Save_Xbox_Security_Sector { + get { + return ResourceManager.GetString("ButtonLabel_Save_Xbox_Security_Sector", resourceCulture); + } + } + + public static string Title_Tag { + get { + return ResourceManager.GetString("Title_Tag", resourceCulture); + } + } + + public static string Title_HexView { + get { + return ResourceManager.GetString("Title_HexView", resourceCulture); + } + } + + public static string Title_Decoded { + get { + return ResourceManager.GetString("Title_Decoded", resourceCulture); + } + } + + public static string Title_Track_checksums { + get { + return ResourceManager.GetString("Title_Track_checksums", resourceCulture); + } + } + + public static string Title_Algorithms { + get { + return ResourceManager.GetString("Title_Algorithms", resourceCulture); + } + } + + public static string Title_Hash { + get { + return ResourceManager.GetString("Title_Hash", resourceCulture); + } + } + + public static string Title_Media_checksums { + get { + return ResourceManager.GetString("Title_Media_checksums", resourceCulture); + } + } + + public static string ButtonLabel_Start { + get { + return ResourceManager.GetString("ButtonLabel_Start", resourceCulture); + } + } + + public static string ButtonLabel_Stop { + get { + return ResourceManager.GetString("ButtonLabel_Stop", resourceCulture); + } + } + + public static string Source_image { + get { + return ResourceManager.GetString("Source_image", resourceCulture); + } + } + + public static string Output_format { + get { + return ResourceManager.GetString("Output_format", resourceCulture); + } + } + + public static string ButtonLabel_Choose { + get { + return ResourceManager.GetString("ButtonLabel_Choose", resourceCulture); + } + } + + public static string ButtonLabel_Get_from_source_image { + get { + return ResourceManager.GetString("ButtonLabel_Get_from_source_image", resourceCulture); + } + } + + public static string Title_Metadata { + get { + return ResourceManager.GetString("Title_Metadata", resourceCulture); + } + } + + public static string Title_Title { + get { + return ResourceManager.GetString("Title_Title", resourceCulture); + } + } + + public static string Title_Barcode { + get { + return ResourceManager.GetString("Title_Barcode", resourceCulture); + } + } + + public static string Title_Part_number { + get { + return ResourceManager.GetString("Title_Part_number", resourceCulture); + } + } + + public static string Title_Number_in_sequence { + get { + return ResourceManager.GetString("Title_Number_in_sequence", resourceCulture); + } + } + + public static string Title_Last_media_of_the_sequence { + get { + return ResourceManager.GetString("Title_Last_media_of_the_sequence", resourceCulture); + } + } + + public static string Title_Drive { + get { + return ResourceManager.GetString("Title_Drive", resourceCulture); + } + } + + public static string Title_Firmware_revision { + get { + return ResourceManager.GetString("Title_Firmware_revision", resourceCulture); + } + } + + public static string Title_Existing_CICM_XML_sidecar { + get { + return ResourceManager.GetString("Title_Existing_CICM_XML_sidecar", resourceCulture); + } + } + + public static string Title_From_image { + get { + return ResourceManager.GetString("Title_From_image", resourceCulture); + } + } + + public static string Title_Existing_resume_file { + get { + return ResourceManager.GetString("Title_Existing_resume_file", resourceCulture); + } + } + + public static string _From_image_ { + get { + return ResourceManager.GetString("_From_image_", resourceCulture); + } + } + + public static string Error_trying_to_find_selected_plugin { + get { + return ResourceManager.GetString("Error_trying_to_find_selected_plugin", resourceCulture); + } + } + + public static string Creating_output_image { + get { + return ResourceManager.GetString("Creating_output_image", resourceCulture); + } + } + + public static string Setting_image_metadata { + get { + return ResourceManager.GetString("Setting_image_metadata", resourceCulture); + } + } + + public static string Setting_tracks_list { + get { + return ResourceManager.GetString("Setting_tracks_list", resourceCulture); + } + } + + public static string Converting_sectors { + get { + return ResourceManager.GetString("Converting_sectors", resourceCulture); + } + } + + public static string Converting_sectors_0_to_1_2_done { + get { + return ResourceManager.GetString("Converting_sectors_0_to_1_2_done", resourceCulture); + } + } + + public static string Converting_tag_0 { + get { + return ResourceManager.GetString("Converting_tag_0", resourceCulture); + } + } + + public static string Converting_tag_0_for_sectors_1_to_2_3_done { + get { + return ResourceManager.GetString("Converting_tag_0_for_sectors_1_to_2_3_done", resourceCulture); + } + } + + public static string Converting_sectors_in_track_0 { + get { + return ResourceManager.GetString("Converting_sectors_in_track_0", resourceCulture); + } + } + + public static string Converting_sectors_0_to_1_in_track_2_3_done { + get { + return ResourceManager.GetString("Converting_sectors_0_to_1_in_track_2_3_done", resourceCulture); + } + } + + public static string Converting_tag_0_for_sectors_1_to_2_in_track_3_4_done { + get { + return ResourceManager.GetString("Converting_tag_0_for_sectors_1_to_2_in_track_3_4_done", resourceCulture); + } + } + + public static string Error_0_writing_dump_hardware_list_to_output_image { + get { + return ResourceManager.GetString("Error_0_writing_dump_hardware_list_to_output_image", resourceCulture); + } + } + + public static string Writing_CICM_XML_metadata_to_output_image { + get { + return ResourceManager.GetString("Writing_CICM_XML_metadata_to_output_image", resourceCulture); + } + } + + public static string Error_0_writing_CICM_XML_metadata_to_output_image { + get { + return ResourceManager.GetString("Error_0_writing_CICM_XML_metadata_to_output_image", resourceCulture); + } + } + + public static string Operation_canceled_the_output_file_is_not_correct { + get { + return ResourceManager.GetString("Operation_canceled_the_output_file_is_not_correct", resourceCulture); + } + } + + public static string Title_Warning { + get { + return ResourceManager.GetString("Title_Warning", resourceCulture); + } + } + + public static string Title_Conversion_success { + get { + return ResourceManager.GetString("Title_Conversion_success", resourceCulture); + } + } + + public static string Some_warnings_happened_Check_console { + get { + return ResourceManager.GetString("Some_warnings_happened_Check_console", resourceCulture); + } + } + + public static string Image_converted_successfully { + get { + return ResourceManager.GetString("Image_converted_successfully", resourceCulture); + } + } + + public static string Dialog_Choose_destination_file { + get { + return ResourceManager.GetString("Dialog_Choose_destination_file", resourceCulture); + } + } + + public static string Dialog_Choose_existing_metadata_sidecar { + get { + return ResourceManager.GetString("Dialog_Choose_existing_metadata_sidecar", resourceCulture); + } + } + + public static string Dialog_CICM_XML_metadata { + get { + return ResourceManager.GetString("Dialog_CICM_XML_metadata", resourceCulture); + } + } + + public static string Incorrect_metadata_sidecar_file { + get { + return ResourceManager.GetString("Incorrect_metadata_sidecar_file", resourceCulture); + } + } + + public static string Dialog_Choose_existing_resume_file { + get { + return ResourceManager.GetString("Dialog_Choose_existing_resume_file", resourceCulture); + } + } + + public static string Resume_file_does_not_contain_dump_hardware_information { + get { + return ResourceManager.GetString("Resume_file_does_not_contain_dump_hardware_information", resourceCulture); + } + } + + public static string Title_Track_entropy { + get { + return ResourceManager.GetString("Title_Track_entropy", resourceCulture); + } + } + + public static string Title_Entropy { + get { + return ResourceManager.GetString("Title_Entropy", resourceCulture); + } + } + + public static string Title_Unique_sectors { + get { + return ResourceManager.GetString("Title_Unique_sectors", resourceCulture); + } + } + + public static string Title_Calculating_entropy { + get { + return ResourceManager.GetString("Title_Calculating_entropy", resourceCulture); + } + } + + public static string Title_Destination_file { + get { + return ResourceManager.GetString("Title_Destination_file", resourceCulture); + } + } + + public static string Title_LBA { + get { + return ResourceManager.GetString("Title_LBA", resourceCulture); + } + } + + public static string Disc_image_does_not_support_verification { + get { + return ResourceManager.GetString("Disc_image_does_not_support_verification", resourceCulture); + } + } + + public static string Checking_media_image { + get { + return ResourceManager.GetString("Checking_media_image", resourceCulture); + } + } + + public static string Verifying_track_0_of_1 { + get { + return ResourceManager.GetString("Verifying_track_0_of_1", resourceCulture); + } + } + + public static string All_sectors_contain_errors { + get { + return ResourceManager.GetString("All_sectors_contain_errors", resourceCulture); + } + } + + public static string All_sectors_are_unknown { + get { + return ResourceManager.GetString("All_sectors_are_unknown", resourceCulture); + } + } + + public static string Unknown_LBAs { + get { + return ResourceManager.GetString("Unknown_LBAs", resourceCulture); + } + } + + public static string Title_Images { + get { + return ResourceManager.GetString("Title_Images", resourceCulture); + } + } + + public static string Menu_File { + get { + return ResourceManager.GetString("Menu_File", resourceCulture); + } + } + + public static string Menu_Open { + get { + return ResourceManager.GetString("Menu_Open", resourceCulture); + } + } + + public static string Menu_Settings { + get { + return ResourceManager.GetString("Menu_Settings", resourceCulture); + } + } + + public static string Menu_Exit { + get { + return ResourceManager.GetString("Menu_Exit", resourceCulture); + } + } + + public static string Menu_Devices { + get { + return ResourceManager.GetString("Menu_Devices", resourceCulture); + } + } + + public static string Menu_Refresh { + get { + return ResourceManager.GetString("Menu_Refresh", resourceCulture); + } + } + + public static string Menu_Window { + get { + return ResourceManager.GetString("Menu_Window", resourceCulture); + } + } + + public static string Menu_Console { + get { + return ResourceManager.GetString("Menu_Console", resourceCulture); + } + } + + public static string Menu_Help { + get { + return ResourceManager.GetString("Menu_Help", resourceCulture); + } + } + + public static string Menu_Encodings { + get { + return ResourceManager.GetString("Menu_Encodings", resourceCulture); + } + } + + public static string Menu_Plugins { + get { + return ResourceManager.GetString("Menu_Plugins", resourceCulture); + } + } + + public static string Menu_Statistics { + get { + return ResourceManager.GetString("Menu_Statistics", resourceCulture); + } + } + + public static string Menu_About { + get { + return ResourceManager.GetString("Menu_About", resourceCulture); + } + } + + public static string Menu_Refresh_devices { + get { + return ResourceManager.GetString("Menu_Refresh_devices", resourceCulture); + } + } + + public static string Menu_Close_all_images { + get { + return ResourceManager.GetString("Menu_Close_all_images", resourceCulture); + } + } + + public static string Welcome_to_Aaru { + get { + return ResourceManager.GetString("Welcome_to_Aaru", resourceCulture); + } + } + + public static string Error_0_opening_device { + get { + return ResourceManager.GetString("Error_0_opening_device", resourceCulture); + } + } + + public static string Non_removable_device_commands_not_yet_implemented { + get { + return ResourceManager.GetString("Non_removable_device_commands_not_yet_implemented", resourceCulture); + } + } + + public static string No_media_inserted { + get { + return ResourceManager.GetString("No_media_inserted", resourceCulture); + } + } + + public static string Dialog_Choose_image_to_open { + get { + return ResourceManager.GetString("Dialog_Choose_image_to_open", resourceCulture); + } + } + + public static string Error_0_opening_image_format { + get { + return ResourceManager.GetString("Error_0_opening_image_format", resourceCulture); + } + } + + public static string No_error_given { + get { + return ResourceManager.GetString("No_error_given", resourceCulture); + } + } + + public static string Exception_reading_file { + get { + return ResourceManager.GetString("Exception_reading_file", resourceCulture); + } + } + + public static string Refreshing_devices { + get { + return ResourceManager.GetString("Refreshing_devices", resourceCulture); + } + } + + public static string Found_supported_device_model_0_by_manufacturer_1_on_bus_2_and_path_3 { + get { + return ResourceManager.GetString("Found_supported_device_model_0_by_manufacturer_1_on_bus_2_and_path_3", resourceCulture); + } + } + + public static string Continue_dumping_whatever_happens { + get { + return ResourceManager.GetString("Continue_dumping_whatever_happens", resourceCulture); + } + } + + public static string Retry_passes { + get { + return ResourceManager.GetString("Retry_passes", resourceCulture); + } + } + + public static string Create_use_resume_mapfile { + get { + return ResourceManager.GetString("Create_use_resume_mapfile", resourceCulture); + } + } + + public static string Try_to_read_track_1_pregap { + get { + return ResourceManager.GetString("Try_to_read_track_1_pregap", resourceCulture); + } + } + + public static string Skipped_sectors_on_error { + get { + return ResourceManager.GetString("Skipped_sectors_on_error", resourceCulture); + } + } + + public static string Create_CICM_XML_metadata_sidecar { + get { + return ResourceManager.GetString("Create_CICM_XML_metadata_sidecar", resourceCulture); + } + } + + public static string Trim_errors_from_skipped_sectors { + get { + return ResourceManager.GetString("Trim_errors_from_skipped_sectors", resourceCulture); + } + } + + public static string Encoding_to_use_on_metadata_sidecar_creation { + get { + return ResourceManager.GetString("Encoding_to_use_on_metadata_sidecar_creation", resourceCulture); + } + } + + public static string Writing_image_to { + get { + return ResourceManager.GetString("Writing_image_to", resourceCulture); + } + } + + public static string Title_Log { + get { + return ResourceManager.GetString("Title_Log", resourceCulture); + } + } + + public static string Incorrect_resume_file_cannot_use_it { + get { + return ResourceManager.GetString("Incorrect_resume_file_cannot_use_it", resourceCulture); + } + } + + public static string Media_already_dumped_correctly_please_choose_another_destination { + get { + return ResourceManager.GetString("Media_already_dumped_correctly_please_choose_another_destination", resourceCulture); + } + } + + public static string Cannot_open_output_plugin { + get { + return ResourceManager.GetString("Cannot_open_output_plugin", resourceCulture); + } + } + + public static string Kb_s { + get { + return ResourceManager.GetString("Kb_s", resourceCulture); + } + } + + public static string Title_Block { + get { + return ResourceManager.GetString("Title_Block", resourceCulture); + } + } + + public static string Initializing_console { + get { + return ResourceManager.GetString("Initializing_console", resourceCulture); + } + } + + public static string Aaru_started { + get { + return ResourceManager.GetString("Aaru_started", resourceCulture); + } + } + + public static string Loading_settings { + get { + return ResourceManager.GetString("Loading_settings", resourceCulture); + } + } + + public static string Migrating_local_database { + get { + return ResourceManager.GetString("Migrating_local_database", resourceCulture); + } + } + + public static string Updating_main_database { + get { + return ResourceManager.GetString("Updating_main_database", resourceCulture); + } + } + + public static string Checking_GDPR_compliance { + get { + return ResourceManager.GetString("Checking_GDPR_compliance", resourceCulture); + } + } + + public static string Loading_statistics { + get { + return ResourceManager.GetString("Loading_statistics", resourceCulture); + } + } + + public static string Registering_encodings { + get { + return ResourceManager.GetString("Registering_encodings", resourceCulture); + } + } + + public static string Saving_statistics { + get { + return ResourceManager.GetString("Saving_statistics", resourceCulture); + } + } + + public static string Loading_main_window { + get { + return ResourceManager.GetString("Loading_main_window", resourceCulture); + } + } + + public static string Title_Sector { + get { + return ResourceManager.GetString("Title_Sector", resourceCulture); + } + } + + public static string Show_long_sector { + get { + return ResourceManager.GetString("Show_long_sector", resourceCulture); + } + } } } diff --git a/Aaru.Localization/UI.resx b/Aaru.Localization/UI.resx index 95d49be31..a4fdcf081 100644 --- a/Aaru.Localization/UI.resx +++ b/Aaru.Localization/UI.resx @@ -198,9 +198,6 @@ Media found in real device statistics - - Type - Media found in images statistics @@ -252,12 +249,6 @@ Please insert it in the drive and press any key when it is ready. - - Please write a description of the media type and press enter: - - - Please write the media model and press enter: - Unsupported device type, report cannot be created @@ -350,15 +341,6 @@ In you are unsure, please press N to not continue. PCMCIA CIS is {0} bytes - - Found undecoded tuple ID {0} - - - Found unknown tuple ID 0x{0:X2} - - - Could not get tuples - aaruremote host @@ -435,9 +417,6 @@ In you are unsure, please press N to not continue. Unable to open image format - - Error: {0} - Correctly opened image file. @@ -543,9 +522,6 @@ In you are unsure, please press N to not continue. Type - - Start - Length @@ -653,9 +629,6 @@ In you are unsure, please press N to not continue. Unable to recognize image format, not checksumming - - Hashing tracks... - Hashing track {0} of {1} @@ -679,13 +652,6 @@ In you are unsure, please press N to not continue. Disc's {0} {0} is checksum name - - Could not get tracks because {0} - {0} is exception message - - - Hashing files... - Hashing file {0} of {1} @@ -722,9 +688,6 @@ In you are unsure, please press N to not continue. Media's {0}: {0} is checksum name - - Hashing sectors... - Hashing sectors {0} to {1} @@ -931,7 +894,7 @@ In you are unsure, please press N to not continue. How many sectors to convert at once. - Who (person) created the image?. + Who (person) created the image? Manufacturer of the drive used to read the media represented by the image. @@ -1017,14 +980,14 @@ In you are unsure, please press N to not continue. Invalid sectors per track specified - + Incorrect metadata sidecar file, not continuing... Could not find metadata sidecar, not continuing... - Incorrect resume file, not continuing... + Incorrect resume file... Could not find resume file, not continuing... @@ -1081,18 +1044,12 @@ In you are unsure, please press N to not continue. Error setting output image in tape mode, not continuing... - - Output format does not support sessions, this will end in a loss of data, not continuing... - Error {0} creating output image. Error {0} setting metadata, not continuing... - - Error {0} setting metadata, continuing... - Converting media tag {0} @@ -1590,9 +1547,6 @@ In you are unsure, please press N to not continue. Medium types currently inserted in device - - WARNING: The drive has returned incorrect Q positioning when calculating pregaps. A best effort has been tried but they may be incorrect. - Hidden track starts at LBA {0}, ends at LBA {1} @@ -1725,4 +1679,1325 @@ pool with no way of using them to identify you. Namespace + + Invalid list of items + + + Invalid item in list + + + Duration cannot be negative or infinite + + + Items must be a IList<(ulong, double)> with ulong being the block and double being the time spent reading it, or NaN for an error. + + + About + + + Libraries + + + Authors + + + About Aaru + + + License: GNU General Public License Version 3 + + + Close + + + Library + + + Version + + + Developers: + Natalia Portillo + Michael Drüing + Rebecca Wallander + +Testers: + Silas Laspada + + + Console + + + Enable debug console + + + Save + + + Clear + + + Time + + + Module + + + Message + + + Log files + + + Log saved at {0} + {0} is a date with time + + + ################# Console ################ + + + Info + + + Error + + + Exception {0} trying to save logfile, details has been sent to console. + + + Encodings + + + Code + + + Aaru's license + + + Plugins + + + Filters + + + Partitions + + + Filesystems + + + Identify only: + + + Media images + + + Floppy images + + + Readable: + + + Writable: + + + UUID + + + Author + + + Settings + + + GDPR + + + Reports + + + Statistics + + + Cancel + + + Save device reports in shared folder of your computer? + + + Share your device reports with us? + + + Save stats about your Aaru usage? + + + Share your stats (anonymously)? + + + Gather statistics about command usage? + + + Gather statistics about found devices? + + + Gather statistics about found filesystems? + + + Gather statistics about found file filters? + + + Gather statistics about found media image formats? + + + Gather statistics about scanned media? + + + Gather statistics about found partitioning schemes? + + + Gather statistics about media types? + + + Gather statistics about media image verifications? + + + You have called the Filesystem Info command {0} times + + + You have called the Checksum command {0} times + + + You have called the Compare command {0} times + + + You have called the Convert-Image command {0} times + + + You have called the Create-Sidecar command {0} times + + + You have called the Decode command {0} times + + + You have called the Device-Info command {0} times + + + You have called the Device-Report command {0} times + + + You have called the Dump-Media command {0} times + + + You have called the Entropy command {0} times + + + You have called the Formats command {0} times + + + You have called the Image-Info command {0} times + + + You have called the Media-Info command {0} times + + + You have called the Media-Scan command {0} times + + + You have called the Print-Hex command {0} times + + + You have called the Verify command {0} times + + + real + + + image + + + Commands + + + Partition + + + Formats + + + Devices + + + Device + + + Medias + + + Media + + + {0} Kb/sec. + + + unlimited + From "unlimited speed" + + + Save descriptors to file + + + USB + + + Connected by USB + + + Removable media + + + Peripheral device type + + + Device type + + + General + + + Device information + + + FireWire + + + Plextor + + + Total loaded discs: + + + Time spent reading CDs + + + Time spent writing CDs + + + Time spent reading DVDs + + + Time spent writing DVDs + + + Supports PoweRec + + + PoweRec is enabled + + + Recommended speed + + + Selected PoweRec speed for currently inserted media: + + + Maximum PoweRec speed for currently inserted media: + + + Last PoweRec used speed + + + Supports SilentMode + + + SilentMode is enabled + + + CD read speed limited to + + + CD write speed limited to + + + DVD read speed limited to + + + Supports GigaRec + + + Supports SecuRec + + + Supports SpeedRead + + + SpeedRead is enabled + + + Supports hiding CD-Rs and sessions + + + Is hiding CD-Rs + + + Is forcing only first session + + + Supports VariRec + + + Supports VariRec on DVDs + + + Supports bitsetting DVD+R book type + + + Supports bitsetting DVD+R DL book type + + + Supports test writing DVD+ + + + Kreon + + + Densities supported by device: + + + Medium types supported by device: + + + CID + + + CSD + + + OCR + + + Extended CSD + + + SCR + + + PCMCIA + + + ATA / ATAPI + + + SCSI + + + SD / MMC + + + Binary + + + Details + + + Path: {0} + + + Filter: {0} + + + Format: {0} version {1} + + + Format: {0} + + + Has partitions + + + Doesn't have partitions + + + Has sessions + + + Doesn't have sessions + + + Media title: {0} + + + Media model: {0} + + + Media barcode: {0} + + + Media part number: {0} + + + Drive manufacturer: {0} + + + Drive model: {0} + + + Drive firmware info: {0} + + + Media geometry: {0} cylinders, {1} heads, {2} sectors per track + + + Image information + + + Comments + + + Media information + + + Drive information + + + Readable media tags + + + Readable sector tags + + + Sessions + + + Tracks + + + Dump hardware + + + Software + + + Operating system + + + Calculate entropy + + + Verify + + + Checksum + + + Convert to... + + + Create CICM XML sidecar... + + + View sectors + + + Decode media tags + + + Save READ MEDIA SERIAL NUMBER response + + + Save READ CAPACITY response + + + Save READ CAPACITY (16) response + + + Save GET CONFIGURATION response + + + Save RECOGNIZED FORMAT LAYERS response + + + Save WRITE PROTECTION STATUS response + + + Save REPORT DENSITY SUPPORT (MEDIA) response + + + Save REPORT DENSITY SUPPORT (MEDIUM & MEDIA) response + + + Dump media to image + + + Scan media surface + + + Error {0} trying to read "{1}" of chosen filesystem + + + Error {0} trying to get information about filesystem entry named {1} + + + Extract to... + + + Creation + + + Last access + + + Changed + + + Last backup + + + Last write + + + Attributes + + + GID + + + UID + + + Inode + + + Links + + + Mode + + + Choose destination folder... + + + Unsupported filename + + + The file name {0} is not supported on this platform. +Do you want to rename it to {1}? + + + Existing file + + + A file named {0} already exists on the destination folder. +Do you want to overwrite it? + + + Cannot delete + + + Could not delete existing file. +Do you want to continue? + + + Error reading file + + + Error {0} reading file. +Do you want to continue? + + + Cannot create file + + + Could not create destination file. +Do you want to continue? + + + Save binary to file + + + Save text to file + + + Text + + + Disc information + + + Burst Cutting Area + + + Cartridge Status + + + Pseudo-OverWrite Resources + + + Disc Definition Structure + + + Spare Area Information + + + Track Resources + + + Save Disc Information + + + Save Burst Cutting Area + + + Save Disc Definition Structure + + + Save Cartridge Status + + + Save Spare Area Information + + + Save Pseudo-OverWrite Resources + + + Save Track Resources + + + Save raw DFL + + + Save PAC + + + Information + + + Save READ DISC INFORMATION response + + + TOC + + + Save READ TOC response + + + TOC (full) + + + Save READ RAW TOC response + + + Save READ SESSION response + + + CD-TEXT + + + Save Lead-In CD-TEXT + + + ATIP + + + Save READ ATIP response + + + Miscellaneous + + + Media catalog number + + + ISRCs + + + ISRC + + + Save READ PMA response + + + Save Physical Format Information + + + Save Disc Manufacturer Information + + + Save Copyright Management Information + + + Save AACS Information + + + Save Last Border-Out RMD + + + Save Pre-Recorded Physical Information + + + Save Media Identifier + + + Save Recordable Physical Information + + + Save Medium Status + + + Save Layer Capacity + + + Save Middle Zone Start + + + Save Jump Interval Size + + + Save Manual Layer Jump Start LBA + + + Save Remap Anchor Point + + + Save ADIP + + + Save Disc Control Blocks + + + Device Geometry Tuples + + + Manufacturer Identification Tuple + + + Level 1 Version / Product Information Tuple + + + Undecoded tuple ID {0} + + + PCMCIA CIS returned no tuples + + + CIS + + + Save PCMCIA CIS to file + + + Header + + + MODE {0:X2} Subpage {1:X2} + + + MODE {0:X2}h + + + Undecoded + + + Error decoding page, please open an issue. + + + ASCII Page {0:X2}h + + + Unit Serial Number + + + SCSI Implemented operating definitions + + + ASCII implemented operating definitions + + + SCSI Device identification + + + SCSI Software Interface Identifiers + + + SCSI Management Network Addresses + + + SCSI Extended INQUIRY Data + + + SCSI to ATA Translation Layer Data + + + SCSI Sequential-access Device Capabilities + + + Manufacturer-assigned Serial Number + + + TapeAlert Supported Flags Bitmap + + + Automation Device Serial Number + + + Data Transfer Device Element Address + + + Quantum Firmware Build Information page + + + Seagate Firmware Numbers page + + + IBM Drive Component Revision Levels page + + + IBM Drive Serial Numbers page + + + Certance Drive Component Revision Levels page + + + Head Assembly Serial Number + + + Reel Motor 1 Serial Number + + + Reel Motor 2 Serial Number + + + Board Serial Number + + + Base Mechanical Serial Number + + + HP Drive Firmware Revision Levels page + + + HP Drive Hardware Revision Levels page + + + HP Drive PCA Revision Levels page + + + HP Drive Mechanism Revision Levels page + + + HP Drive Head Assembly Revision Levels page + + + HP Drive ACI Revision Levels page + + + Certance drive status page + + + Page {0:X2}h + + + Unknown feature + + + INQUIRY + + + SCSI INQUIRY + + + MODE SENSE + + + Page + + + Save MODE SENSE (6) response to file + + + Save MODE SENSE (10) response to file + + + EVPD + + + Save EVPD page to file + + + MMC FEATURES + + + Feature + + + Save MMC GET CONFIGURATION response to file + + + Disc Manufacturing Information + + + Security Sector + + + Save Xbox Security Sector + + + Tag: + + + HexView + + + Decoded + + + Track checksums: + + + Algorithms + + + Hash + + + Media checksums: + + + Start + + + Stop + + + Source image + + + Output format + + + Choose... + + + Get from source image + + + Metadata + + + Title + + + Barcode + + + Part number + + + Number in sequence + + + Last media of the sequence + + + Drive + + + Firmware revision + + + Existing CICM XML sidecar + + + From image... + + + Existing resume file + + + <From image> + + + Error trying to find selected plugin + + + Creating output image + + + Setting image metadata + + + Setting tracks list + + + Converting sectors + + + Converting sectors {0} to {1} ({2:P2} done) + + + Converting tag {0} + + + Converting tag {0} for sectors {1} to {2} ({3:P2} done) + + + Converting sectors in track {0} + + + Converting sectors {0} to {1} in track {2} ({3:P2} done) + + + Converting tag {0} for sectors {1} to {2} in track {3} ({4:P2} done) + + + Error {0} writing dump hardware list to output image. + + + Writing CICM XML metadata to output image. + + + Error {0} writing CICM XML metadata to output image. + + + Operation canceled, the output file is not correct. + + + Warning + + + Conversion success + + + Some warnings happened. Check console for more information. Image should be correct. + + + Image converted successfully. + + + Choose destination file + + + Choose existing metadata sidecar + + + CICM XML metadata + + + Incorrect metadata sidecar file... + + + Choose existing resume file + + + Resume file does not contain dump hardware information... + + + Track entropy + + + Entropy + + + Unique sectors + + + Calculating entropy + + + Destination file + + + LBA + + + Disc image does not support verification. + + + Checking media image... + + + Verifying track {0} of {1} + + + All sectors contain errors + + + All sectors are unknown + + + Unknown LBAs: + + + Images + + + _File + '_' is the character that will be used for the keyboard accelerator + + + _Open + '_' is the character that will be used for the keyboard accelerator + + + _Settings + '_' is the character that will be used for the keyboard accelerator + + + E_xit + '_' is the character that will be used for the keyboard accelerator + + + _Devices + '_' is the character that will be used for the keyboard accelerator + + + _Refresh + '_' is the character that will be used for the keyboard accelerator + + + _Window + '_' is the character that will be used for the keyboard accelerator + + + _Console + '_' is the character that will be used for the keyboard accelerator + + + _Help + '_' is the character that will be used for the keyboard accelerator + + + _Encodings + '_' is the character that will be used for the keyboard accelerator + + + _Plugins + '_' is the character that will be used for the keyboard accelerator + + + _Statistics + '_' is the character that will be used for the keyboard accelerator + + + _About + '_' is the character that will be used for the keyboard accelerator + + + _Refresh devices + '_' is the character that will be used for the keyboard accelerator + + + _Close all images + '_' is the character that will be used for the keyboard accelerator + + + Welcome to Aaru! + + + Error {0} opening device + + + Non-removable device commands not yet implemented + + + No media inserted + + + Choose image to open + + + Error {0} opening image format. + + + No error given + + + Exception reading file. + + + Refreshing devices + + + Found supported device model {0} by manufacturer {1} on bus {2} and path {3} + + + Continue dumping whatever happens + + + Retry passes + + + Create/use resume mapfile + + + Try to read track 1 pregap + + + Skipped sectors on error + + + Create CICM XML metadata sidecar + + + Trim errors from skipped sectors + + + Encoding to use on metadata sidecar creation + + + Writing image to: + + + Log + + + Incorrect resume file, cannot use it... + + + Media already dumped correctly, please choose another destination... + + + Cannot open output plugin. + + + Kb/s + + + Block + + + Initializing console... + + + Aaru started! + + + Loading settings... + + + Migrating local database... + + + Updating main database... + + + Checking GDPR compliance... + + + Loading statistics... + + + Registering encodings... + + + Saving statistics... + + + Loading main window... + + + Sector + + + Show long sector + \ No newline at end of file diff --git a/Aaru/Commands/Database/Statistics.cs b/Aaru/Commands/Database/Statistics.cs index 4088e0aea..a554408ad 100644 --- a/Aaru/Commands/Database/Statistics.cs +++ b/Aaru/Commands/Database/Statistics.cs @@ -296,7 +296,7 @@ sealed class StatisticsCommand : Command Title = new TableTitle(UI.Media_found_in_real_device_statistics) }; - table.AddColumn(UI.Title_Type_for_media); + table.AddColumn(Localization.Core.Title_Type_for_media); table.AddColumn(UI.Title_Times_used); table.Columns[1].RightAligned(); @@ -326,7 +326,7 @@ sealed class StatisticsCommand : Command Title = new TableTitle(UI.Media_found_in_images_statistics) }; - table.AddColumn(UI.Title_Type_for_media); + table.AddColumn(Localization.Core.Title_Type_for_media); table.AddColumn(UI.Title_Times_used); table.Columns[1].RightAligned(); diff --git a/Aaru/Commands/Device/DeviceReport.cs b/Aaru/Commands/Device/DeviceReport.cs index 6f7986c83..e66c79bbb 100644 --- a/Aaru/Commands/Device/DeviceReport.cs +++ b/Aaru/Commands/Device/DeviceReport.cs @@ -287,9 +287,10 @@ sealed class DeviceReportCommand : Command AaruConsole.WriteLine(UI.Please_insert_it_in_the_drive); System.Console.ReadKey(true); - mediumTypeName = AnsiConsole.Ask(UI.Please_write_description_of_media_type); + mediumTypeName = + AnsiConsole.Ask(Localization.Core.Please_write_description_of_media_type); - mediumModel = AnsiConsole.Ask(UI.Please_write_media_model); + mediumModel = AnsiConsole.Ask(Localization.Core.Please_write_media_model); TestedMedia mediaTest = reporter.ReportAtaMedia(); mediaTest.MediumTypeName = mediumTypeName; @@ -943,12 +944,13 @@ sealed class DeviceReportCommand : Command System.Console.ReadKey(true); - mediumTypeName = AnsiConsole.Ask(UI.Please_write_description_of_media_type); + mediumTypeName = + AnsiConsole.Ask(Localization.Core.Please_write_description_of_media_type); mediumManufacturer = AnsiConsole.Ask(Localization.Core.Please_write_media_manufacturer); - mediumModel = AnsiConsole.Ask(UI.Please_write_media_model); + mediumModel = AnsiConsole.Ask(Localization.Core.Please_write_media_model); bool mediaIsRecognized = true; @@ -1319,12 +1321,13 @@ sealed class DeviceReportCommand : Command System.Console.ReadKey(true); - mediumTypeName = AnsiConsole.Ask(UI.Please_write_description_of_media_type); + mediumTypeName = + AnsiConsole.Ask(Localization.Core.Please_write_description_of_media_type); mediumManufacturer = AnsiConsole.Ask(Localization.Core.Please_write_media_manufacturer); - mediumModel = AnsiConsole.Ask(UI.Please_write_media_model); + mediumModel = AnsiConsole.Ask(Localization.Core.Please_write_media_model); bool mediaIsRecognized = true; diff --git a/Aaru/Commands/Device/Info.cs b/Aaru/Commands/Device/Info.cs index dfafcbf6c..845d00655 100644 --- a/Aaru/Commands/Device/Info.cs +++ b/Aaru/Commands/Device/Info.cs @@ -254,18 +254,18 @@ sealed class DeviceInfoCommand : Command case TupleCodes.CISTPL_SPCL: case TupleCodes.CISTPL_SWIL: case TupleCodes.CISTPL_VERS_2: - AaruConsole.DebugWriteLine("Device-Info command", UI.Invoke_Found_undecoded_tuple_ID_0, - tuple.Code); + AaruConsole.DebugWriteLine("Device-Info command", + Localization.Core.Invoke_Found_undecoded_tuple_ID_0, tuple.Code); break; default: - AaruConsole.DebugWriteLine("Device-Info command", UI.Found_unknown_tuple_ID_0, - (byte)tuple.Code); + AaruConsole.DebugWriteLine("Device-Info command", + Localization.Core.Found_unknown_tuple_ID_0, (byte)tuple.Code); break; } else - AaruConsole.DebugWriteLine("Device-Info command", UI.Could_not_get_tuples); + AaruConsole.DebugWriteLine("Device-Info command", Localization.Core.Could_not_get_tuples); } var devInfo = new DeviceInfo(dev); @@ -1152,11 +1152,10 @@ sealed class DeviceInfoCommand : Command d.Revision == dev.FirmwareRevision); if(dbDev is null) - AaruConsole. - WriteLine("Device not in database, please create a device report and attach it to a Github issue."); + AaruConsole.WriteLine(Localization.Core.Device_not_in_database); else { - AaruConsole.WriteLine($"Device in database since {dbDev.LastSynchronized}."); + AaruConsole.WriteLine(string.Format(Localization.Core.Device_in_database_since_0, dbDev.LastSynchronized)); if(dbDev.OptimalMultipleSectorsRead > 0) AaruConsole.WriteLine($"Optimal multiple read is {dbDev.LastSynchronized} sectors."); diff --git a/Aaru/Commands/Filesystem/ExtractFiles.cs b/Aaru/Commands/Filesystem/ExtractFiles.cs index 7ec247644..57570877b 100644 --- a/Aaru/Commands/Filesystem/ExtractFiles.cs +++ b/Aaru/Commands/Filesystem/ExtractFiles.cs @@ -237,7 +237,7 @@ sealed class ExtractFilesCommand : Command if(opened != ErrorNumber.NoError) { AaruConsole.WriteLine(UI.Unable_to_open_image_format); - AaruConsole.WriteLine(UI.Error_0, opened); + AaruConsole.WriteLine(Localization.Core.Error_0, opened); return (int)opened; } @@ -259,7 +259,7 @@ sealed class ExtractFilesCommand : Command catch(Exception ex) { AaruConsole.ErrorWriteLine(UI.Unable_to_open_image_format); - AaruConsole.ErrorWriteLine(UI.Error_0, ex.Message); + AaruConsole.ErrorWriteLine(Localization.Core.Error_0, ex.Message); return (int)ErrorNumber.CannotOpenFormat; } diff --git a/Aaru/Commands/Filesystem/Info.cs b/Aaru/Commands/Filesystem/Info.cs index 36ac9665e..75a6c4188 100644 --- a/Aaru/Commands/Filesystem/Info.cs +++ b/Aaru/Commands/Filesystem/Info.cs @@ -196,7 +196,7 @@ sealed class FilesystemInfoCommand : Command if(opened != ErrorNumber.NoError) { AaruConsole.WriteLine(UI.Unable_to_open_image_format); - AaruConsole.WriteLine(UI.Error_0, opened); + AaruConsole.WriteLine(Localization.Core.Error_0, opened); return (int)opened; } @@ -214,7 +214,7 @@ sealed class FilesystemInfoCommand : Command catch(Exception ex) { AaruConsole.ErrorWriteLine(UI.Unable_to_open_image_format); - AaruConsole.ErrorWriteLine(UI.Error_0, ex.Message); + AaruConsole.ErrorWriteLine(Localization.Core.Error_0, ex.Message); AaruConsole.DebugWriteLine("Fs-info command", Localization.Core.Stack_trace_0, ex.StackTrace); return (int)ErrorNumber.CannotOpenFormat; diff --git a/Aaru/Commands/Filesystem/Ls.cs b/Aaru/Commands/Filesystem/Ls.cs index 43aeb459f..667dbf34a 100644 --- a/Aaru/Commands/Filesystem/Ls.cs +++ b/Aaru/Commands/Filesystem/Ls.cs @@ -208,7 +208,7 @@ sealed class LsCommand : Command if(opened != ErrorNumber.NoError) { AaruConsole.WriteLine(UI.Unable_to_open_image_format); - AaruConsole.WriteLine(UI.Error_0, opened); + AaruConsole.WriteLine(Localization.Core.Error_0, opened); return (int)opened; } @@ -230,7 +230,7 @@ sealed class LsCommand : Command catch(Exception ex) { AaruConsole.ErrorWriteLine(UI.Unable_to_open_image_format); - AaruConsole.ErrorWriteLine(UI.Error_0, ex.Message); + AaruConsole.ErrorWriteLine(Localization.Core.Error_0, ex.Message); return (int)ErrorNumber.CannotOpenFormat; } diff --git a/Aaru/Commands/Image/Checksum.cs b/Aaru/Commands/Image/Checksum.cs index e268bc12b..42c7d26fc 100644 --- a/Aaru/Commands/Image/Checksum.cs +++ b/Aaru/Commands/Image/Checksum.cs @@ -206,7 +206,7 @@ sealed class ChecksumCommand : Command if(opened != ErrorNumber.NoError) { AaruConsole.WriteLine(UI.Unable_to_open_image_format); - AaruConsole.WriteLine(UI.Error_0, opened); + AaruConsole.WriteLine(Localization.Core.Error_0, opened); return (int)opened; } @@ -272,7 +272,7 @@ sealed class ChecksumCommand : Command Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()). Start(ctx => { - ProgressTask discTask = ctx.AddTask(UI.Hashing_tracks); + ProgressTask discTask = ctx.AddTask(Localization.Core.Hashing_tracks); discTask.MaxValue = inputTracks.Count; foreach(Track currentTrack in inputTracks) @@ -415,7 +415,7 @@ sealed class ChecksumCommand : Command catch(Exception ex) { if(debug) - AaruConsole.DebugWriteLine(UI.Could_not_get_tracks_because_0, ex.Message); + AaruConsole.DebugWriteLine(Localization.Core.Could_not_get_tracks_because_0, ex.Message); else AaruConsole.WriteLine("Unable to get separate tracks, not checksumming them"); } @@ -435,7 +435,7 @@ sealed class ChecksumCommand : Command Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()). Start(ctx => { - ProgressTask tapeTask = ctx.AddTask(UI.Hashing_files); + ProgressTask tapeTask = ctx.AddTask(Localization.Core.Hashing_files); tapeTask.MaxValue = tapeImage.Files.Count; foreach(TapeFile currentFile in tapeImage.Files) @@ -683,7 +683,7 @@ sealed class ChecksumCommand : Command Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()). Start(ctx => { - ProgressTask diskTask = ctx.AddTask(UI.Hashing_sectors); + ProgressTask diskTask = ctx.AddTask(Localization.Core.Hashing_sectors); ulong sectors = mediaImage.Info.Sectors; diskTask.MaxValue = sectors; ulong doneSectors = 0; diff --git a/Aaru/Commands/Image/Compare.cs b/Aaru/Commands/Image/Compare.cs index 2190f282c..7d21654a3 100644 --- a/Aaru/Commands/Image/Compare.cs +++ b/Aaru/Commands/Image/Compare.cs @@ -193,7 +193,7 @@ sealed class CompareCommand : Command if(opened1 != ErrorNumber.NoError) { AaruConsole.WriteLine(UI.Unable_to_open_first_image_format); - AaruConsole.WriteLine(UI.Error_0, opened1); + AaruConsole.WriteLine(Localization.Core.Error_0, opened1); return (int)opened1; } @@ -207,7 +207,7 @@ sealed class CompareCommand : Command if(opened2 != ErrorNumber.NoError) { AaruConsole.WriteLine(UI.Unable_to_open_second_image_format); - AaruConsole.WriteLine(UI.Error_0, opened2); + AaruConsole.WriteLine(Localization.Core.Error_0, opened2); return (int)opened2; } diff --git a/Aaru/Commands/Image/Convert.cs b/Aaru/Commands/Image/Convert.cs index 9934f57ee..22e93ec2d 100644 --- a/Aaru/Commands/Image/Convert.cs +++ b/Aaru/Commands/Image/Convert.cs @@ -405,7 +405,7 @@ sealed class ConvertImageCommand : Command if(opened != ErrorNumber.NoError) { AaruConsole.WriteLine(UI.Unable_to_open_image_format); - AaruConsole.WriteLine(UI.Error_0, opened); + AaruConsole.WriteLine(Localization.Core.Error_0, opened); return (int)opened; } @@ -439,7 +439,7 @@ sealed class ConvertImageCommand : Command catch(Exception ex) { AaruConsole.ErrorWriteLine(UI.Unable_to_open_image_format); - AaruConsole.ErrorWriteLine(UI.Error_0, ex.Message); + AaruConsole.ErrorWriteLine(Localization.Core.Error_0, ex.Message); AaruConsole.DebugWriteLine("Convert-image command", Localization.Core.Stack_trace_0, ex.StackTrace); return (int)ErrorNumber.CannotOpenFormat; @@ -556,7 +556,7 @@ sealed class ConvertImageCommand : Command // TODO: Disabled until 6.0 /*if(!_force) {*/ - AaruConsole.ErrorWriteLine(UI.Output_format_does_not_support_sessions); + AaruConsole.ErrorWriteLine(Localization.Core.Output_format_does_not_support_sessions); return (int)ErrorNumber.UnsupportedMedia; /*} @@ -610,7 +610,7 @@ sealed class ConvertImageCommand : Command return (int)ErrorNumber.WriteError; } - AaruConsole.ErrorWriteLine(UI.Error_0_setting_metadata, outputFormat.ErrorMessage); + AaruConsole.ErrorWriteLine(Localization.Core.Error_0_setting_metadata, outputFormat.ErrorMessage); } CICMMetadataType cicmMetadata = inputFormat.CicmMetadata; diff --git a/Aaru/Commands/Image/CreateSidecar.cs b/Aaru/Commands/Image/CreateSidecar.cs index 75d66aea4..27e2e95c8 100644 --- a/Aaru/Commands/Image/CreateSidecar.cs +++ b/Aaru/Commands/Image/CreateSidecar.cs @@ -198,7 +198,7 @@ sealed class CreateSidecarCommand : Command if(opened != ErrorNumber.NoError) { AaruConsole.WriteLine(UI.Unable_to_open_image_format); - AaruConsole.WriteLine(UI.Error_0, opened); + AaruConsole.WriteLine(Localization.Core.Error_0, opened); return (int)opened; } @@ -208,7 +208,7 @@ sealed class CreateSidecarCommand : Command catch(Exception ex) { AaruConsole.ErrorWriteLine(UI.Unable_to_open_image_format); - AaruConsole.ErrorWriteLine(UI.Error_0, ex.Message); + AaruConsole.ErrorWriteLine(Localization.Core.Error_0, ex.Message); return (int)ErrorNumber.CannotOpenFormat; } diff --git a/Aaru/Commands/Image/Decode.cs b/Aaru/Commands/Image/Decode.cs index 7a13c2b46..a191589cc 100644 --- a/Aaru/Commands/Image/Decode.cs +++ b/Aaru/Commands/Image/Decode.cs @@ -171,7 +171,7 @@ sealed class DecodeCommand : Command if(opened != ErrorNumber.NoError) { AaruConsole.WriteLine(UI.Unable_to_open_image_format); - AaruConsole.WriteLine(UI.Error_0, opened); + AaruConsole.WriteLine(Localization.Core.Error_0, opened); return (int)opened; } diff --git a/Aaru/Commands/Image/Entropy.cs b/Aaru/Commands/Image/Entropy.cs index 9e1bee108..17d90b8a3 100644 --- a/Aaru/Commands/Image/Entropy.cs +++ b/Aaru/Commands/Image/Entropy.cs @@ -155,7 +155,7 @@ sealed class EntropyCommand : Command if(opened != ErrorNumber.NoError) { AaruConsole.WriteLine(UI.Unable_to_open_image_format); - AaruConsole.WriteLine(UI.Error_0, opened); + AaruConsole.WriteLine(Localization.Core.Error_0, opened); return (int)opened; } diff --git a/Aaru/Commands/Image/Info.cs b/Aaru/Commands/Image/Info.cs index 477bee404..812ee9117 100644 --- a/Aaru/Commands/Image/Info.cs +++ b/Aaru/Commands/Image/Info.cs @@ -141,7 +141,7 @@ sealed class ImageInfoCommand : Command if(opened != ErrorNumber.NoError) { AaruConsole.WriteLine(UI.Unable_to_open_image_format); - AaruConsole.WriteLine(UI.Error_0, opened); + AaruConsole.WriteLine(Localization.Core.Error_0, opened); return (int)opened; } @@ -155,7 +155,7 @@ sealed class ImageInfoCommand : Command catch(Exception ex) { AaruConsole.ErrorWriteLine(UI.Unable_to_open_image_format); - AaruConsole.ErrorWriteLine(UI.Error_0, ex.Message); + AaruConsole.ErrorWriteLine(Localization.Core.Error_0, ex.Message); AaruConsole.DebugWriteLine("Image-info command", Localization.Core.Stack_trace_0, ex.StackTrace); return (int)ErrorNumber.CannotOpenFormat; diff --git a/Aaru/Commands/Image/Print.cs b/Aaru/Commands/Image/Print.cs index 8569595f8..6c04cf5c1 100644 --- a/Aaru/Commands/Image/Print.cs +++ b/Aaru/Commands/Image/Print.cs @@ -160,7 +160,7 @@ sealed class PrintHexCommand : Command if(opened != ErrorNumber.NoError) { AaruConsole.WriteLine(UI.Unable_to_open_image_format); - AaruConsole.WriteLine(UI.Error_0, opened); + AaruConsole.WriteLine(Localization.Core.Error_0, opened); return (int)opened; } diff --git a/Aaru/Commands/Image/Verify.cs b/Aaru/Commands/Image/Verify.cs index 75348bbf6..a122ef480 100644 --- a/Aaru/Commands/Image/Verify.cs +++ b/Aaru/Commands/Image/Verify.cs @@ -149,7 +149,7 @@ sealed class VerifyCommand : Command if(opened != ErrorNumber.NoError) { AaruConsole.WriteLine(UI.Unable_to_open_image_format); - AaruConsole.WriteLine(UI.Error_0, opened); + AaruConsole.WriteLine(Localization.Core.Error_0, opened); return (int)opened; } diff --git a/Aaru/Commands/Media/Info.cs b/Aaru/Commands/Media/Info.cs index 91b531aa1..63524315e 100644 --- a/Aaru/Commands/Media/Info.cs +++ b/Aaru/Commands/Media/Info.cs @@ -685,8 +685,9 @@ sealed class MediaInfoCommand : Command AaruConsole.WriteLine($"[bold]{Localization.Core.Track_calculations}:[/]"); if(inexactPositioning) - AaruConsole.WriteLine($"[yellow]{UI. - The_drive_has_returned_incorrect_Q_positioning_calculating_pregaps}[/]"); + AaruConsole.WriteLine($"[yellow]{Localization.Core. + The_drive_has_returned_incorrect_Q_positioning_calculating_pregaps + }[/]"); if(firstLba > 0) AaruConsole.WriteLine(UI.Hidden_track_starts_at_LBA_0_ends_at_LBA_1, 0, firstLba - 1);