diff --git a/Marechai.sln.DotSettings b/Marechai.sln.DotSettings index 9ec04b4a..f7e5ddf3 100644 --- a/Marechai.sln.DotSettings +++ b/Marechai.sln.DotSettings @@ -1,3 +1,5 @@  True + True + True True \ No newline at end of file diff --git a/Marechai/Marechai.csproj b/Marechai/Marechai.csproj index 86ca17bb..48dd8479 100644 --- a/Marechai/Marechai.csproj +++ b/Marechai/Marechai.csproj @@ -2,7 +2,7 @@ netcoreapp3.1 - 3.0.99.971 + 3.0.99.973 Canary Islands Computer Museum Copyright © 2003-2020 Natalia Portillo Canary Islands Computer Museum Website diff --git a/Marechai/Pages/Machines/View.razor b/Marechai/Pages/Machines/View.razor index 70603cff..6b250758 100644 --- a/Marechai/Pages/Machines/View.razor +++ b/Marechai/Pages/Machines/View.razor @@ -32,7 +32,6 @@ } @page "/machine/{Id:int}" - @using Marechai.Database @inherits OwningComponentBase @inject IStringLocalizer L @@ -73,7 +72,7 @@ _machine.Introduced.Value.Year == 1000) { -
PROTOTYPE
+
@L["PROTOTYPE"]
} @@ -87,7 +86,7 @@
- Introduction date + @L["Introduction date"]
@@ -101,7 +100,7 @@
- Family + @L["Family"]
@@ -115,7 +114,7 @@
- Model + @L["Model"]
@@ -128,7 +127,7 @@
- Processors + @L["Processors"]
@@ -140,14 +139,14 @@ @if (processor.Speed > 0) { - @(processor.GprSize > 0 ? $"{processor.Name} @ {processor.Speed}Mhz ({processor.GprSize} bits)" : $"{processor.Name} @ {processor.Speed}Mhz") + @(processor.GprSize > 0 ? string.Format(L["{0} @ {1}MHz ({2} bits)"], processor.Name, processor.Speed, processor.GprSize) : string.Format(L["{0} @ {1}MHz"], processor.Name, processor.Speed)) } else { @($"{processor.Name}") }
@@ -156,12 +155,12 @@ processor.ModelCode != processor.Name) { - Model + @L["Model"] @processor.ModelCode } - Manufacturer + @L["Manufacturer"] @processor.CompanyName @@ -170,22 +169,22 @@ @if (processor.Introduced != null) { - Introduction date + @L["Introduction date"] @($"{processor.Introduced:yyyy}") } @if (processor.InstructionSet != null) { - Instruction set + @L["Instruction set"] @processor.InstructionSet } @if (processor.Speed > 0) { - Nominal speed - @processor.Speed MHz + @L["Nominal speed"] + @string.Format(L["{0} MHz"], processor.Speed) } @if (processor.Gprs > 0 || @@ -200,16 +199,30 @@ { - @processor.Gprs general purpose registers of @processor.GprSize bits @if (processor.FprSize > 0 && - processor.Fprs == 0) - { - @($", that can be used as floating point registers of {processor.FprSize}") - } - @if (processor.SimdSize > 0 && + processor.Fprs == 0 && + processor.SimdSize > 0 && processor.SimdRegisters == 0) { - @($", that can be used as SIMD registers of {processor.FprSize}") + @(string.Format(L["{0} general purpose registers of {1} bits that can be used as floating point registers of {2} bits and SIMD registers of {3} bits."], + processor.Gprs, processor.GprSize, processor.FprSize, processor.SimdSize)) + } + else if (processor.FprSize > 0 && + processor.Fprs == 0) + { + @(string.Format(L["{0} general purpose registers of {1} bits that can be used as floating point registers of {2} bits."], + processor.Gprs, processor.GprSize, processor.FprSize)) + } + else if (processor.FprSize == 0 && + processor.SimdSize > 0 && + processor.SimdRegisters == 0) + { + @(string.Format(L["{0} general purpose registers of {1} bits that can be used as SIMD registers of {2} bits."], + processor.Gprs, processor.GprSize, processor.SimdSize)) + } + else + { + @(string.Format(L["{0} general purpose registers of {1} bits."], processor.Gprs, processor.GprSize)) } @@ -218,11 +231,16 @@ { - @processor.Fprs floating-point registers of @processor.FprSize bits @if (processor.SimdSize > 0 && processor.SimdRegisters == 0) { - @($", that can be used as SIMD registers of {processor.FprSize}") + @(string.Format(L["{0} floating point registers of {1} bits that can be used as SIMD registers of {2} bits."], + processor.Fprs, processor.FprSize, processor.SimdSize)) + } + else + { + @(string.Format(L["{0} floating point registers of {1} bits."], + processor.Fprs, processor.FprSize)) } @@ -231,8 +249,9 @@ { - @processor.SimdRegisters - SIMDregisters of @processor.SimdSize bits + + @string.Format(L["{0} SIMD registers of {1} bits."], processor.SimdRegisters, processor.SimdSize) + } @@ -243,22 +262,18 @@ @if (processor.Cores > 1) { - Multi-core - @processor.Cores cores + @L["Multi-core"] + @string.Format(L["{0} cores."], processor.Cores) } @if (processor.ThreadsPerCore > 1) { - SMT + SMT - @processor.ThreadsPerCore threads - @if (processor.Cores > 1) - { - @(" per core") - } + @string.Format(processor.Cores > 1 ? L["{0} threads per core."] : L["{0} threads."], processor.ThreadsPerCore) } @@ -266,14 +281,14 @@ processor.AddrBus > 0) { - Bus + @L["Bus"] @if (processor.DataBus > 0) { } @@ -281,7 +296,7 @@ { } @@ -296,14 +311,14 @@ processor.L2 > 0) { - + @@ -490,7 +516,7 @@ - + } - + - + } @if (gpu.Package != null) { - + } @@ -528,18 +554,30 @@ gpu.ProcessNm > 0) { - + - - + + } @if (gpu.Transistors > 0) { - + } @@ -578,7 +616,7 @@ @@ -607,7 +644,7 @@ - + } @if (sound.CompanyId != null) { - + - + } @@ -642,25 +679,25 @@ sound.WhiteNoise != 0) { - + - + - + @@ -723,7 +778,7 @@ + } else { if (capString != null) { - + } else { - + } } } @@ -786,7 +841,7 @@ { if (capString != null) { - + } else { diff --git a/Marechai/Resources/Services/MachinesService.es.resx b/Marechai/Resources/Services/MachinesService.es.resx new file mode 100644 index 00000000..f5e1a9b7 --- /dev/null +++ b/Marechai/Resources/Services/MachinesService.es.resx @@ -0,0 +1,429 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cargando... + Message that appears while data is being loaded from database + + + Máquina no encontrada en la base de datos + Not found + + + +info + Abbreviation of information + + + PROTOTIPO + Caps or other way of denoting importance + + + Fecha de introducción + Date + + + Familia + Set of variations of the same machine + + + Modelo + Model + + + Procesadores + General purpose processors or coprocessors, including math ones, not including graphical or sound oriented ones + + + {0} a {1}Mhz ({2} bits) + {0} name, {1} speed in megahertz, {2} general purpose registers size in bits + + + {0} a {1}MHz + AAAA + + + Fabricante + Manufacturer + + + Arquitectura + Instruction set, aka, architecture + + + Velocidad nominal + Nominal speed + + + {0} registros de propósito general de {1} bits que pueden ser usados como registros de coma flotante de {2} bits y como registros SIMD de {3} bits. + {0} general purpose registers, {1} {2} and {3} their size in bits. + + + {0} registros de propósito general de {1} bits que pueden ser usados como registros de coma flotante de {2} bits. + {0} general purpose registers, {1} and {2} their size in bits. + + + {0} registros de propósito general de {1} bits que pueden ser usados como registros SIMD de {2} bits. + {0} general purpose registers, {1} and {2} their size in bits. + + + {0} registros de propósito general de {1} bits. + {0} general purpose registers, {1} their size in bits. + + + {0} registros de coma flotante de {1} bits que pueden ser usados como registros SIMD de {2} bits. + {0} floating point registers, {1} and {2} their size in bits. + + + {0} registros de coma flotante de {1} bits. + {0} general purpose registers, {1} their size in bits. + + + Instrucción sencilla, múltiples datos + Definition of SIMD + + + {0} registros SIMD de {1} bits. + {0} SIMD registers, {1} their size in bits. + + + Multi-núcleo + Multi core + + + {0} núcleos. + {0} is number of cores + + + Multi-hilo simultáneo + Definition of SMT + + + {0} hilos por núcleo. + {0} is number of threads per core + + + {0} hilos. + {0} is number of threads per core + + + Bus + Computer bus + + + {0} bits de datos. + {0} is number of bits in data bus + + + {0} bits de direcciones. + {0} is number of bits in address bus + + + Caché + Cache + + + {0} KiB de L1 combinada de instrucciones y datos + {0} is number of kibibytes in combined instruction and data L1 cache + + + {0} KiB de L1 de instrucciones + {0} is number of kibibytes in L1 instruction cache + + + {0} KiB de L1 de datos + {0} is number of kibibytes in L1 data cache + + + {0} KiB de L2 + {0} is number of kibibytes in L2 cache + + + {0} KiB de L3 + {0} is number of kibibytes in L3 cache + + + Empaquetado + Chip package + + + Proceso de fabricación + Chip manufacturing process + + + {0} en {1}µm + {0} is manufacturing process and {1} is micrometers + + + {0} en {1}nm + {0} is manufacturing process and {1} is nanometers + + + {0}µm + {0} is micrometers + + + {0}nm + {0} is nanometers + + + Área + Die area size + + + {0} mm² + {0} is squared milimeters + + + Transitores + Transistors of chip + + + Memoria + Memory + + + {0} GiB + gibibytes + + + {0} MiB + mebibytes + + + {0} KiB + kibibytes + + + {0} bytes + bytes + + + Tamaño desconocido + Unknown size + + + {0} GHz + gigahertz + + + {0} MHz + megahertz + + + {0} KHz + kilohertz + + + {0} Hz + hertz + + + velocidad desconocida + unknown speed + + + {0} de memoria de {1} ({2} a {3}) + {0} size with above prefix, {1} usage, {2} type, {3} speed with above prefix + + + Unidades de proceso de gráficos + Chips that generate graphical output on a screen + + + Framebuffer + Buffer or memory that directly stores the frame + + + Esta máquina dibuja los píxeles directamente del software a una región de memoria que es convertida a una señal analógica sin ninguna unidad de proceso de gráficos. + Description of what a framebuffer is + + + Sintetizadores de sonido + Sound synthetizers + + + Software + Means that the software directly sends signals to a dac + + + Esta máquina envía señales desde el software directamente a un conversor digital a analógico conectado a la salida de sonido. + Description of how software audio works + + + Generadores + Sound waves generatos + + + {0} voces + Number of pulsed, modulated, or wave-tabled simultaneous voices + + + {0} de onda cuadrada + {0} is number of square wave generators + + + {0} de ruido blanco + {0} is number of white noise generators + + + Muestreo + Sample rate + + + Almacenamiento + Storage + + + {0} bits a {1} KHz + {0} number of bits of sampling rate at {1} kilohertz + + + {0} bits a {1} Hz + {0} number of bits of sampling rate at {1} hertz + + + {0} bits + {0} is number of bits + + + Tipo de síntesis + Synthesis type + + + {0} bps + bits per second + + + Interfaz {0} disponible. + {0} is interface name + + + {0} conectado por una interfaz {1} con una capacidad norminal de {2} + {0} is storage type, {1} is interface name, {2} is nominal capacity number formatted with above bytes or bps prefixes + + + {0} conectado por una interfaz {1} + {0} is storage type, {1} is interface name + + + {0} con una capacidad norminal de {1} + {0} is storage type, {1} is nominal capacity number formatted with above bytes or bps prefixes + + \ No newline at end of file
- @processor.DataBus-bit data + @string.Format(L["{0}-bit data."], processor.DataBus)
- @processor.AddrBus-bit address + @string.Format(L["{0}-bit address."], processor.AddrBus)
Cache@L["Cache"] @if (processor.L1Instruction > 0) { } @@ -311,7 +326,7 @@ { } @@ -319,7 +334,7 @@ { } @@ -327,7 +342,7 @@ { } @@ -338,7 +353,7 @@ @if (processor.Package != null) { - + } @@ -346,18 +361,30 @@ processor.ProcessNm > 0) { - + - - + + } @if (processor.Transistors > 0) { - + } @@ -398,7 +425,7 @@ - + }
- @(processor.L1Data < 0 ? $"{processor.L1Instruction}KiB combined instruction-data L1" : $"{processor.L1Instruction}KiB instruction L1") + @string.Format(processor.L1Data < 0 ? L["{0}KiB combined instruction-data L1"] : L["{0}KiB instruction L1"], processor.L1Instruction)
- @($"{processor.L1Data}KiB data L1") + @string.Format(L["{0}KiB data L1"], processor.L1Data)
- @($"{processor.L2}KiB L2") + @string.Format(L["{0}KiB L2"], processor.L2)
- @($"{processor.L3}KiB L3") + @string.Format(L["{0}KiB L3"], processor.L3)
Package@L["Package"] @processor.Package
Manufacturing process@L["Manufacturing process"] @if (processor.Process != null && processor.ProcessNm > 0) { - @processor.Process - @("@") - @(processor.ProcessNm > 100 ? $"{processor.ProcessNm / 100}µm" : $"{processor.ProcessNm}nm") + if (processor.ProcessNm > 100) + { + @(string.Format(L["{0} @ {1}µm"], processor.Process, processor.ProcessNm / 100)) + } + else + { + @(string.Format(L["{0} @ {1}nm"], processor.Process, processor.ProcessNm)) + } } else if (processor.ProcessNm > 0) { - @(processor.ProcessNm > 100 ? $"{processor.ProcessNm / 100}µm" : $"{processor.ProcessNm}nm") + if (processor.ProcessNm > 100) + { + @(string.Format(L["{0}µm"], processor.ProcessNm / 100)) + } + else + { + @(string.Format(L["{0}nm"], processor.ProcessNm)) + } } else { @@ -369,14 +396,14 @@ @if (processor.DieSize > 0) {
Die size@processor.DieSize mm²@L["Die size"]@string.Format(L["{0} mm²"], processor.DieSize)
Transistors@L["Transistors"] @processor.Transistors
- Memory + @L["Memory"]
@@ -408,49 +435,49 @@ string memValue; if (memory.Size > 1073741824) { - memValue = $"{memory.Size / 1073741824} GiB"; + memValue = string.Format(L["{0} GiB"], memory.Size / 1073741824); } else if (memory.Size > 1048576) { - memValue = $"{memory.Size / 1048576} MiB"; + memValue = string.Format(L["{0} MiB"], memory.Size / 1048576); } else if (memory.Size > 1024) { - memValue = $"{memory.Size / 1024} KiB"; + memValue = string.Format(L["{0} KiB"], memory.Size / 1024); } else if (memory.Size > 0) { - memValue = $"{memory.Size} bytes"; + memValue = string.Format(L["{0} bytes"], memory.Size); } else { - memValue = "Unknown size"; + memValue = L["Unknown size"]; } string speedValue; if (memory.Speed > 1000000000) { - speedValue = $"{memory.Speed / 1000000000} GHz"; + speedValue = string.Format(L["{0} GHz"], memory.Speed / 1000000000); } else if (memory.Speed > 1000000) { - speedValue = $"{memory.Speed / 1000000} MHz"; + speedValue = string.Format(L["{0} MHz"], memory.Speed / 1000000); } else if (memory.Speed > 1000) { - speedValue = $"{memory.Speed / 1000} KHz"; + speedValue = string.Format(L["{0} KHz"], memory.Speed / 1000); } else if (memory.Speed > 0) { - speedValue = $"{memory.Speed} Hz"; + speedValue = string.Format(L["{0} Hz"], memory.Speed); } else { - speedValue = "unknown speed"; + speedValue = L["unknown speed"]; }
@memValue of @memory.Usage memory (@memory.Type at @speedValue)@string.Format(L["{0} of {1} memory ({2} at {3})"], memValue, memory.Usage, memory.Type, speedValue)
@@ -462,7 +489,7 @@
- Graphics processing units + @L["Graphics processing units"]
@@ -473,14 +500,13 @@ if (gpu.Id == -2) { - Framebuffer + @L["Framebuffer"]
- This computer directly draws pixels from software to a memory region that's converted to video output by a - DAC or similar without using any specific graphics processing unit. + @L["This machine directly draws pixels from software to a memory region that's converted to video output by a DAC or similar without using any specific graphics processing unit."]
@($"{gpu.Name}")
@@ -499,12 +525,12 @@ gpu.ModelCode != gpu.Name) {
Model@L["Model"] @gpu.ModelCode
Manufacturer@L["Manufacturer"] @gpu.Company @@ -513,14 +539,14 @@ @if (gpu.Introduced != null) {
Introduction date@L["Introduction date"] @($"{gpu.Introduced:yyyy}")
Package@L["Package"] @gpu.Package
Manufacturing process@L["Manufacturing process"] @if (gpu.Process != null && gpu.ProcessNm > 0) { - @gpu.Process - @("@") - @(gpu.ProcessNm > 100 ? $"{gpu.ProcessNm / 100}µm" : $"{gpu.ProcessNm}nm") + if (gpu.ProcessNm > 100) + { + @(string.Format(L["{0} @ {1}µm"], gpu.Process, gpu.ProcessNm / 100)) + } + else + { + @(string.Format(L["{0} @ {1}nm"], gpu.Process, gpu.ProcessNm)) + } } else if (gpu.ProcessNm > 0) { - @(gpu.ProcessNm > 100 ? $"{gpu.ProcessNm / 100}µm" : $"{gpu.ProcessNm}nm") + if (gpu.ProcessNm > 100) + { + @(string.Format(L["{0}µm"], gpu.ProcessNm / 100)) + } + else + { + @(string.Format(L["{0}nm"], gpu.ProcessNm)) + } } else { @@ -551,14 +589,14 @@ @if (gpu.DieSize > 0) {
Die size@gpu.DieSize mm²@L["Die size"]@string.Format(L["{0} mm²"], gpu.DieSize)
Transistors@L["Transistors"] @gpu.Transistors
- Sound synthetizers + @L["Sound synthetizers"]
@@ -590,14 +628,13 @@ @if (sound.Id == -2) { - Software + @L["Software"]
- This computer directly sends data to a - DAC or similar connected to the audio output. + @L["This machine directly sends data to a DAC or similar connected to the audio output."]
@($"{sound.Name}")
@@ -616,14 +653,14 @@ sound.ModelCode != sound.Name) {
Model@L["Model"] @sound.ModelCode
Manufacturer@L["Manufacturer"] @sound.CompanyName @@ -633,7 +670,7 @@ @if (sound.Introduced != null) {
Introduction date@L["Introduction date"] @($"{sound.Introduced:yyyy}")
Generators@L["Generators"] @if (sound.Voices != 0) { - + } @if (sound.SquareWave != 0) { - + } @if (sound.WhiteNoise != 0) { - + }
@sound.Voices voices@string.Format(L["{0} voices"], sound.Voices)
@sound.SquareWave square wave@string.Format(L["{0} square wave"], sound.SquareWave)
@sound.WhiteNoise white noise@string.Format(L["{0} white noise"], sound.WhiteNoise)
@@ -671,26 +708,44 @@ sound.Frequency > 0) {
Sample rate@L["Sample rate"] @if (sound.Depth != 0 && sound.Frequency > 0) { - + } else if (sound.Depth != 0) { - + } else { - + }
@sound.Depth bits at @(sound.Frequency > 1000 ? $"{sound.Frequency / 1000}KHz" : $"{sound.Frequency}Hz") + @if (sound.Frequency > 1000) + { + @string.Format(L["{0} bits at {1} KHz"], sound.Depth, sound.Frequency / 1000) + } + else + { + @string.Format(L["{0} bits at {1} Hz"], sound.Depth, sound.Frequency) + } +
@sound.Depth bits@string.Format(L["{0} bits"], sound.Depth)
@(sound.Frequency > 1000 ? $"{sound.Frequency / 1000}KHz" : $"{sound.Frequency}Hz") + @if (sound.Frequency > 1000) + { + @string.Format(L["{0} KHz"], sound.Frequency / 1000) + } + else + { + @string.Format(L["{0} Hz"], sound.Frequency) + } +
@@ -700,7 +755,7 @@ @if (sound.Type != 0) {
Synthetizer type@L["Synthesizer type"] @sound.Type
- Storage + @L["Storage"]
@@ -736,25 +791,25 @@ { if (storage.Type == StorageType.CompactCassette) { - capString = $"{storage.Capacity} bps"; + capString = string.Format(L["{0} bps"], storage.Capacity); } else { if (storage.Capacity > 1073741824) { - capString = $"{storage.Capacity / 1073741824} GiB"; + capString = string.Format(L["{0} GiB"], storage.Capacity / 1073741824); } else if (storage.Capacity > 1048576) { - capString = $"{storage.Capacity / 1048576} MiB"; + capString = string.Format(L["{0} MiB"], storage.Capacity / 1048576); } else if (storage.Capacity > 1024) { - capString = $"{storage.Capacity / 1024} KiB"; + capString = string.Format(L["{0} KiB"], storage.Capacity / 1024); } else if (storage.Capacity > 0) { - capString = $"{storage.Capacity} bytes"; + capString = string.Format(L["{0} bytes"], storage.Capacity); } else { @@ -768,17 +823,17 @@ { if (storage.Type == StorageType.Empty) { - Available @storage.Interface interface.@string.Format(L["Available {0} interface."], storage.Interface)@storage.Type connected thru a @storage.Interface interface with a nominal capacity of @capString@string.Format(L["{0} connected thru a {1} interface with a nominal capacity of {2}"], storage.Type, storage.Interface, capString)@storage.Type connected thru a @storage.Interface interface@string.Format(L["{0} connected thru a {1} interface"], storage.Type, storage.Interface)@storage.Type with a nominal capacity of @capString@string.Format(L["{0} with a nominal capacity of {1}"], storage.Type, capString)