mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-18 09:24:42 -04:00
internationalization mostly completed
This commit is contained in:
parent
17fba52679
commit
3f45cb1138
@ -18,27 +18,36 @@ public class Lang {
|
|||||||
return InstanceHolder.INSTANCE.getKey(key, params);
|
return InstanceHolder.INSTANCE.getKey(key, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ResourceBundle bundle;
|
private final ResourceBundle defaultBundle;
|
||||||
|
private ResourceBundle localeBundle;
|
||||||
|
|
||||||
private Lang() {
|
private Lang() {
|
||||||
Locale currentLocale = Locale.getDefault();
|
Locale currentLocale = Locale.getDefault();
|
||||||
|
defaultBundle = ResourceBundle.getBundle("lang/lang", Locale.ENGLISH);
|
||||||
try {
|
try {
|
||||||
bundle = ResourceBundle.getBundle("lang/lang", currentLocale);
|
localeBundle = ResourceBundle.getBundle("lang/lang", currentLocale);
|
||||||
} catch (MissingResourceException e) {
|
} catch (MissingResourceException e) {
|
||||||
bundle = ResourceBundle.getBundle("lang/lang", Locale.ENGLISH);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getKey(String key, Object... params) {
|
private String getKey(String key, Object... params) {
|
||||||
try {
|
try {
|
||||||
String str = bundle.getString(key);
|
return decodeString(localeBundle, key, params);
|
||||||
if (params != null && params.length > 0)
|
|
||||||
str = MessageFormat.format(str, params);
|
|
||||||
return str;
|
|
||||||
} catch (MissingResourceException e) {
|
} catch (MissingResourceException e) {
|
||||||
System.out.println(key + "=" + key.substring(key.indexOf("_") + 1));
|
System.out.println(key + "=" + key.substring(key.indexOf("_") + 1));
|
||||||
return key + " is missing";
|
try {
|
||||||
|
return decodeString(defaultBundle, key, params);
|
||||||
|
} catch (MissingResourceException e1) {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String decodeString(ResourceBundle bundle, String key, Object[] params) {
|
||||||
|
String str = bundle.getString(key);
|
||||||
|
if (params != null && params.length > 0)
|
||||||
|
str = MessageFormat.format(str, params);
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
82
src/main/resources/lang/lang_de.properties
Normal file
82
src/main/resources/lang/lang_de.properties
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
digital=Digital
|
||||||
|
message=Digital\n\nEin einfacher Simulator f\u00FCr digitale Schaltkreise.\n\nGeschrieben von Helmut Neemann 2016
|
||||||
|
ok=Ok
|
||||||
|
key_dataBits=Datenbits
|
||||||
|
key_numberInputs=Anzahl der Eing\u00E4nge
|
||||||
|
key_label=Bezeichnung
|
||||||
|
key_value=Wert
|
||||||
|
key_default=Vorgabe
|
||||||
|
key_color=Farbe
|
||||||
|
key_inputSplitting=Eingansaufteilung
|
||||||
|
key_outputSplitting=Ausgangsaufteilung
|
||||||
|
key_frequency=Frequenz
|
||||||
|
key_selectorBits=Anzahl der Auswahlbits
|
||||||
|
key_signed=Vorzeichen
|
||||||
|
key_data=Daten
|
||||||
|
err_seemsToOscillate=Die Schaltung scheint zu oszillieren
|
||||||
|
err_notInitialized=Die Schaltung ist nicht initialisiert
|
||||||
|
err_isAlreadyInitialized=Die Schaltung wurde bereits initialisiert
|
||||||
|
err_noClockFound=Kein Taktgeber in der Schaltung gefunden
|
||||||
|
err_moreThenOneClocksFound=Es gibt mehr als einen Taktgeber
|
||||||
|
err_noInputsAvailable=Es sind keine Eing\u00E4nge vorhanden
|
||||||
|
err_burnError=Es sind mehrere Ausg\u00E4nge zusammengeschaltet
|
||||||
|
err_needs_N0_bits_found_N2_bits=Es werden {0} Bits ben\u00F6tigt, aber es wurden {1} Bits gefunden
|
||||||
|
err_selectorInputCountMismatch=Die Zahl der Eing\u00E4nge passt nicht zur Bitbreite der Auswahlleitung
|
||||||
|
err_splitterBitsMismatch=Die Bitzahl am Spiltter passt nicht
|
||||||
|
err_pinWithoutName=Es gibt einen Pin ohne einen Namen
|
||||||
|
err_pin_N_unknown=Pin {0} ist unbekannt
|
||||||
|
err_pin_N_notFound=Pin {0} wurde nicht gefunden.
|
||||||
|
err_netOfPin_N_notFound=Das Netz von Pin {0} wirde nicht gefunden
|
||||||
|
err_N_isNotInputOrOutput=Pin {0} ist werden Eingang noch Ausgang
|
||||||
|
err_pin_N0_atElement_N1_notFound=Pin {0} von Element {1} wurde nicht gefunden
|
||||||
|
err_noValueSetFor_N0_atElement_N1=Kein Wet gesetzt f\u00FCr {0} an Element {1}
|
||||||
|
err_onOutConnectedToWire=Kein Ausgang mit der Leitung verbunden
|
||||||
|
err_output_N_notDefined=Ausgang {0} ist nicht definiert
|
||||||
|
err_pinNotPresent=Pin nicht vorhanden
|
||||||
|
err_duplicateElement_N=Doppeltes Element {0}
|
||||||
|
err_element_N_notFound=Element {0} nicht gefunden
|
||||||
|
attr_dialogTitle=Eigenschaften
|
||||||
|
msg_errorEditingValue=Fehler bei der Eingabe eines Wertes
|
||||||
|
msg_color=
|
||||||
|
msg_errorImportingModel=
|
||||||
|
msg_errorCreatingModel=
|
||||||
|
msg_errorWritingFile=
|
||||||
|
msg_errorReadingFile=
|
||||||
|
msg_errorCalculatingStep=Fehler beim Berechnen eines Schrittes
|
||||||
|
btn_edit=Bearbeiten
|
||||||
|
btn_load=Laden
|
||||||
|
tt_moveItemUp=Eintrag nach oben schieben
|
||||||
|
tt_moveItemDown=Eintrag nach unten schieben
|
||||||
|
menu_file=Datei
|
||||||
|
menu_new=Neu
|
||||||
|
menu_open=\u00D6ffnen
|
||||||
|
menu_save=Speichern
|
||||||
|
menu_saveAs=Speichern unter
|
||||||
|
menu_elements=Elemente
|
||||||
|
menu_custom=Benutzerdefiniert
|
||||||
|
menu_import=Importieren
|
||||||
|
menu_import_tt=Importiert ein Model als verwendbares Bauteil
|
||||||
|
menu_refresh=Neu Laden
|
||||||
|
menu_refresh_tt=Alle importieren Modelle werden neu geladen
|
||||||
|
menu_wire=Verbindung
|
||||||
|
menu_wire_tt=Erzeugt eine neue Verbindung
|
||||||
|
menu_element=Element
|
||||||
|
menu_element_tt=Verschiebt Elemente oder bearbeitet dessen Eigenschaften
|
||||||
|
menu_select=Auswahl
|
||||||
|
menu_select_tt=W\u00E4hlt Elemente aus um diese zu verschieben. Per Rechtsklick k\u00F6nnen diese Elemente kopiert werden
|
||||||
|
menu_edit=Bearbeiten
|
||||||
|
menu_orderInputs=Ordnen der Eing\u00E4nge
|
||||||
|
menu_orderInputs_tt=Sortiert die Eing\u00E4nge f\u00FCr die Verwendeung als eingebettetes Model
|
||||||
|
menu_orderOutputs=Sortieren der Ausg\u00E4nge
|
||||||
|
menu_orderOutputs_tt=Sortiert die Ausg\u00E4nge f\u00FCr die Verwendeung als eingebettetes Model
|
||||||
|
menu_run=Starten
|
||||||
|
menu_run_tt=Startet das Modell
|
||||||
|
menu_step=Schritt
|
||||||
|
menu_step_tt=F\u00FChrt einen Schritt aus
|
||||||
|
menu_micro=Mikro
|
||||||
|
menu_micro_tt=Startet das Modell im Mikroschrittmodus
|
||||||
|
menu_speedTest=Geschwindigkeitstest
|
||||||
|
menu_speedTest_tt=F\u00FChrt einen Geschwindigkeitstest durch. Es wird die maximal m\u00F6gliche Taktfrequenz ermittelt
|
||||||
|
menu_trace=Signalverlauf
|
||||||
|
menu_runClock=Taktgeber starten
|
||||||
|
menu_runClock_tt=Wenn gew\u00E4hlt, werden beim Starten auch die Taktgeber gestartet
|
83
src/main/resources/lang/lang_en.properties
Normal file
83
src/main/resources/lang/lang_en.properties
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
digital=Digital
|
||||||
|
message=Digital\nA simple simulator for digital circuits.\n\nWritten bei H.Neemann in 2016
|
||||||
|
ok=Ok
|
||||||
|
# Attribute Keys
|
||||||
|
key_dataBits=Data Bits
|
||||||
|
key_numberInputs=Number of Inputs
|
||||||
|
key_label=Label
|
||||||
|
key_value=Value
|
||||||
|
key_default=Default
|
||||||
|
key_color=Color
|
||||||
|
key_inputSplitting=Input Splitting
|
||||||
|
key_outputSplitting=Otput Splitting
|
||||||
|
key_frequency=Frequency
|
||||||
|
key_selectorBits=Number of Selector Bits
|
||||||
|
key_signed=Signed
|
||||||
|
key_data=Data
|
||||||
|
err_seemsToOscillate=Logic seems to oscillate
|
||||||
|
err_notInitialized=Logic not initialized
|
||||||
|
err_isAlreadyInitialized=Logic is already initialized
|
||||||
|
err_noClockFound=No clock found in logic
|
||||||
|
err_moreThenOneClocksFound=There are more then one clock
|
||||||
|
err_noInputsAvailable=No inputs available to set
|
||||||
|
err_burnError=More then one output is active on a wire
|
||||||
|
err_needs_N0_bits_found_N2_bits=There are {0} bits needed, but {1} bits found
|
||||||
|
err_selectorInputCountMismatch=Number of inputs does not match selector bit count
|
||||||
|
err_splitterBitsMismatch=Bit count of splitter is not matching
|
||||||
|
err_pinWithoutName=Found a pin without a name
|
||||||
|
err_pin_N_unknown=Pin {0} unknown
|
||||||
|
err_pin_N_notFound=Pin {0} not found
|
||||||
|
err_netOfPin_N_notFound=Net of pin {0} not found
|
||||||
|
err_N_isNotInputOrOutput=Pin {0} is not a input or output
|
||||||
|
err_pin_N0_atElement_N1_notFound=Pin {0} not found at Element {1}
|
||||||
|
err_noValueSetFor_N0_atElement_N1=No value set for {0} at Element {1}
|
||||||
|
err_onOutConnectedToWire=No output connected to a wire
|
||||||
|
err_output_N_notDefined=Output {0} not defined
|
||||||
|
err_pinNotPresent=Pin not present
|
||||||
|
err_duplicateElement_N=Duplicate element {0}
|
||||||
|
err_element_N_notFound=Element {0} not found
|
||||||
|
attr_dialogTitle=Attributes
|
||||||
|
msg_errorEditingValue=Error editing a atribute value
|
||||||
|
msg_color=Color
|
||||||
|
msg_errorImportingModel=Error importing a model
|
||||||
|
msg_errorCreatingModel=Error creating the model
|
||||||
|
msg_errorWritingFile=Error writing a file
|
||||||
|
msg_errorReadingFile=Error reading a file
|
||||||
|
msg_errorCalculatingStep=Error calculating a step
|
||||||
|
btn_edit=Edit
|
||||||
|
btn_load=Load
|
||||||
|
tt_moveItemUp=Move the item up
|
||||||
|
tt_moveItemDown=Move the item down
|
||||||
|
menu_file=File
|
||||||
|
menu_new=New
|
||||||
|
menu_open=Open
|
||||||
|
menu_save=Save
|
||||||
|
menu_saveAs=Save As
|
||||||
|
menu_elements=Elements
|
||||||
|
menu_custom=Custom
|
||||||
|
menu_import=Import
|
||||||
|
menu_import_tt=Imports a model as a useable Element!
|
||||||
|
menu_refresh=Reload
|
||||||
|
menu_refresh_tt=Reload all imported models
|
||||||
|
menu_wire=Wire
|
||||||
|
menu_wire_tt=Add new wires to circuit
|
||||||
|
menu_element=Element
|
||||||
|
menu_element_tt=Moves Elements or edits its properties
|
||||||
|
menu_select=Select
|
||||||
|
menu_select_tt=Selects elements to move or delete them. Also right click copies the selected elements.
|
||||||
|
menu_edit=Edit
|
||||||
|
menu_orderInputs=Order Inputs
|
||||||
|
menu_orderInputs_tt=Order the inputs for the usage as nested model
|
||||||
|
menu_orderOutputs=Order Outputs
|
||||||
|
menu_orderOutputs_tt=Order the outputs for the usage as nested model
|
||||||
|
menu_run=Run
|
||||||
|
menu_run_tt=Runs the model
|
||||||
|
menu_step=Step
|
||||||
|
menu_step_tt=Calculating a micro step
|
||||||
|
menu_micro=Micro
|
||||||
|
menu_micro_tt=Runs the Model in micro stepping mode
|
||||||
|
menu_speedTest=Speed Test
|
||||||
|
menu_speedTest_tt=Performs a speed test by calculating the max. clock frequency.
|
||||||
|
menu_trace=Trace
|
||||||
|
menu_runClock=Run Clock
|
||||||
|
menu_runClock_tt=If selected the clocks in the circuit are started
|
Loading…
x
Reference in New Issue
Block a user