Hm, deutsche Sprachdatei ist relativ, wir sind ja im Bereich der Modbus Vorlagen (.json), die Struktur der Translation ist aber ähnlich zu den der „normalen“ Module.
Ich habe hier auf der einen Seite die Modbus Vorlage .json Datei. In Ihr sind an falscher Stelle die deutschen Bezeichnungen / Addresse eingetragn.
Ich habe in ein paar Modbus Vorlagen reingeschaut und hatte fast ausschließlich Treffer mit rein deutschen Bezeichnungen. Mir ist das auch erst aufgefallen, als ich auf der Suche nach einer Lösung meines WO Problems die Expertenoption geöffnet habe.
Auf der anderen Seite habe ich eine Datei mit der Adresse und der englischen Bezeichnung.
Hier mal ein beispielhafter IST Zustand einer falsch eingetragenen Eigenschaft, bei dem die deutsche Bezeichnung an falscher Stelle steht [Name]:
{
"Active": true,
"ByteOrder": -1,
"DataType": 3,
"Factor": 0.001,
"Ident": "",
"Length": 0,
"Name": "Nennstrom über alle Phasen",
"Profile": "~Ampere",
"ReadAddress": 40480,
"ReadFunctionCode": 4,
"Translation": [],
"WriteAddress": 0,
"WriteFunctionCode": 0
},
und hier wie es aussehen soll, englische, mit deutscher Übersetzung in der Eigenschaft [Translation]:
{
"Active": true,
"ByteOrder": -1,
"DataType": 3,
"Factor": 0.001,
"Ident": "",
"Length": 0,
"Name": "Nominal current of all phases",
"Profile": "~Ampere",
"ReadAddress": 40480,
"ReadFunctionCode": 4,
"Translation": [
{
"Language": "de",
"Name": "Nennstrom über alle Phasen"
}
],
"WriteAddress": 0,
"WriteFunctionCode": 0
},
Der Schlüssel für den Datensatz ist die „ReadAddress“ ODER „WriteAddress“.
Eine der beiden Eigenschafte muss einen Schlüssel (INT) zwischen 1 und 49999 enthalten.
Leere Werte sind 0.
Es können beide einen (voneinander abweichenden) Wert enthalten. Sind beide gefüllt würde ich den „ReadAddress“ als Basis für die Übersetzung priorisieren.
→ Wenn ReadAdress > 0, dann ReadAddress, ansonsten prüfe WriteAddress und nimm den um nach einer Übersetzung zu suchen in der Sprachdatei.
Lang Example.json (39,8 KB)
Die beigefügte Sprachdatei enthält drei Spalten, Spalte 1 entspricht der Addresse, Spalte 2 das Sprachkürzel, Spalte 3 den Namen. In diesem Fall sind die Spalten Tab getrennt, Texte ohne Qualifier
(Excel → speichern als Txt Unicode)
SBS_3-6_Modbus_Trans_en.txt (49,0 KB) (hochladen ging nur als .txt)
Ich habe jetzt mal bewusst die Spalte Lang hinzugefügt, es wäre ja denkbar noch weitere Übersetzungen mit einem solchen Skript zu ergänzen, es gibt in diesem Fall noch 14 weitere Sprachen vom Hersteller …
Vom Ablauf der Verarbeitung habe ich ein klares Bild, allein mir fehlt das Handwerkzeug, da ich mehr im Bereich von Analytischen Datenbanken/-anwendungen mit der Verarbeitung von großen Datenmengen unterwegs bin.
Hässlich bei der Sache können wie immer bei soetwas die Codepages werden, zumindest wenn ich meine „Datenbankbrille“ aufhabe. Ich habe die Übersetzungsdatei hier bewusst mal mit Excel gemacht, das dürfte vielen Vertraut und verfügbar sein.
Hast du dir das so vorgestellt?