Pflege von Resourcefiles

Andi_CH

Top Contributor
Hallo.

Ich habe in meinem Projekt zig ResourceFiles für jeweils 10 Sprachen, die über Jahre von Hand gepflegt wurden und dementsprechend chaotisch aussehen.
(Unterschiedlich sortiert, überflüssige Label drin, Labels doppelt drin)

Ich möchte, dass alle gleich (nach Label) sortiert sind, sehen wo welche Label fehlen oder zuviel sind (Ich könnte z.B. "de" als Referenz definieren), sehen ob ein File fehlt ...

Gibt es ein fertiges Tool (na ja - vi ist suboptimal :D ) oder hat mal jemand was geschreiben, das mir bei dieser Arbeit hilft.
Selbst schreiben - hm - na ja - es ist eben nicht Hauptbestandteil meiner Arbeit die zu pflegen und GUI hab ich definitv nicht im Griff, aber mit einigen Tipps von euch würde ich wohl eine Konsolenapplikation schaffen ;-) aber der Aufwand soll in Grenzen bleiben. Wenns was fertiges (oder halbfertiges) gibt - tja einmal mehr biete ich ein virtuelles Bier ;-)

na ja, die sehen halt so richtig typisch aus ;-)

Code:
MENU_FILE_SEND                             = Projekt senden ...
MENU_FILE_EXPORT                           = Export
MENU_FILE_EXPORT_GRAPHIC_CURRENT           = Grafikexport der aktuellen Position ...
MENU_FILE_EXPORT_GRAPHIC_ALL               = Grafikexport aller Positionen ...
MENU_FILE_EXPORT_DATA                      = Datenexport ...
MENU_FILE_IMPORT                           = Import
MENU_FILE_IMPORT_DATA                      = Datenimport ...

Zweite Variante:
Code:
production.gui.DrawingFrame.title                            = \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f 
production.gui.DrawingFrame.modul                            = \u0418\u0437\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u0435\u043d \u043c\u043e\u0434\u0443\u043b 
production.gui.DrawingFrame.projectName                      = \u0418\u043c\u0435 \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430

und die Namen sind typischerweise (Es sind wie schon gesagt 10 und nicht nur 3 Sprachen ;-) )

Code:
ProductionResource_bg.properties
ProductionResource_de.properties
ProductionResource_en.properties
TextResource_bg.properties
TextResource_de.properties
TextResource_en.properties

EC2_bg.properties
EC2_bg_CH_EC2.properties
EC2_bg_DE_EC2.properties
EC2_de.properties
EC2_de_CH_EC2.properties
EC2_de_DE_EC2.properties
EC2_en.properties
EC2_en_CH_EC2.properties
EC2_en_DE_EC2.properties
[CODE]
 

Runtime

Top Contributor
Probires doch mal selber. Wenn du die GUI nicht im griff hast, dann mach es über die standard ein- und ausgaben. Dann musst du die Datei nur noch zeilenweise einlesen, in ein Array speichern, sortieren und wieder schreiben.
 

Andi_CH

Top Contributor
Ich hätte wohl einen bis zwei Tage mit Tests - besonders schwierig ist es nicht

- Einlesen und in einer Map (oder etwas geeigneterem) speichern
- sortieren
- doppelte suchen (hm fällt dahin wenn man vor dem speichern sucht)
- vergleichen
- ausgeben (und die Tabs schön so generieren dass es lesbar aussieht ;-) )

Bei Halbfabrikaten hätte ich noch was gelernt
Mit einem Fertigtool Zeit gespart ;-)
 

Andi_CH

Top Contributor
Zwischendurch was zum Lachen. Ist zwar OT, aber ich kanns mir doch nicht verklemmen

Am liebsten wär mir ein Halbfabrikat mit gui - eben von wegen Lerneffekt ;-)


DVD = Deutsch vür Du

Properties Editor (Java i18n-Tool) ist das Werkzeug für Java-Produkte Internationalisierung. Der Editor hat einfache Schnittstelle und der Fähigkeit der Arbeit mit Sprache, unterscheidet sich von Englisch. WYSIWYG. Nicht das Geheimnis, dass. Eigenschaften von Dateien, speichert die Saiten nicht Unicode, so gewöhnlichen Redakteure können in der Regel nicht angezeigt, zum Beispiel, russischen Text aus diesen Dateien. Ist, scheint so: PnlLogin.2 = \ u041F \ u0430 \ u0440 \ u043E \ u043B \ u044C PnlLogin.1 = \ u0421 \ u0435 \ u0440 \ u0432 \ u0435 \ u0440 Es ist sehr schlecht für jedes Projekt, das Sie arbeiten. Propties Editor (Java i18n-Tool) hilft Ihnen, Zeit zu sparen viel! Das Produkt wird Ihnen zur Zeit arbeiten mit vielen Java-Pakete ein.

Properties Editor (Java i18n tool) 1.1 ist als Shareware für den Windows-Betriebssystem lizenziert. Properties Editor (Java i18n tool) ist als kostenloser Download zu versuchen für alle Users bereitgestellten (Shareware).
 

Andi_CH

Top Contributor
Excel?? (und wegduck) mit ein bisschen VBA könnte man die Pflege relativ einfach automatisieren und sogar um beliebig Sprachen erweitern.

Gibt auch OOo - hm VB ist für mich noch schwieriger als Java und defintiv nicht mein Job.

Also erste Frage:
Gesucht ist eine Datenstruktur in der ich Wertepaare (2 Strings: Label und Value) speichern kann und einfach feststellen kann ob es ein Label schon gibt (Erste Idee: HashMap) aber das sich dann selbst sortiert ...

Zweite Frage Split:
Label ok - bis zum ersten Whitespace . String? Ab ersten nonwehitepsace nach dem = bis zum Ende - Tipps? (Unklar ob es in allen Files = hat)
 
M

maki

Gast
Also erste Frage:
Gesucht ist eine Datenstruktur in der ich Wertepaare (2 Strings: Label und Value) speichern kann und einfach feststellen kann ob es ein Label schon gibt (Erste Idee: HashMap) aber das sich dann selbst sortiert ...
Sieh dir mal das Interface SortedMap an und die dazugehörigen Implementierungen.
Umständlich wird es erst, wenn sich die Einträge in der Map ändern und damit neu sortiert werden müssten.
 

fastjack

Top Contributor
Das kann doch kein Drama sein, doppelte Props zu finden... Lade die Propertis als Properties-Objekt, traversiere durch sie und speichere sie in einer Map (Schlüssel -> Wert). Stellst Du dabei fest, das ein Schlüssel schon existiert, ist er doppelt vorhanden. Sortierung nach Schlüssel oder auch Wert sollte wohl auch nicht problematisch sein (TreeMap, SortedMap, Comparator, ...).

Persönlich finde ich die Propertieseditioren (Resourcebundle und Co.) eher belastend. Es scheint auch keine freien Tools zu geben, mit denen man Resourcen gut pflegen kann. Die Resourcen direkt einzunageln, mit den ganzen UTF-Sequenzen ist auch ätzend.
Bei uns machen wir das so, das es eine Entwickler-Properties gibt. Die Entwickler legen dort Labels an. Sprache ist deutsch. Diese Properties wird dann automatisch in eine eigene VB-Lösung importiert. Dort werden Sprachen verwaltet, Labels übersetzt und Co. Als Ausgangslage dienen die Entwickler-Labels. Dann wird exportiert und so, das die echten Properties-Dateien zu den einzelnen Sprachen geschrieben werden.
Die Entwickler-Properties dient (bei der Entwicklung) als Fassade zu den fertigen Sprachdateien, so das wir bei der Entwicklung nicht immer importieren/exportieren müssen. Bei der Entwicklung braucht man sich so überhaupt keinen Kopf mehr machen, das Labels nicht angezeigt werden und so, oder noch nicht definiert sind. Dazu loggen wir aber in speziellen Dateien auch zu jeder Sprache nicht-definierte Labels mit, falls doch mal Labels fehlen sollten.
Warum VB? Weil der einzige freie Mann nur VB konnte und schnell eine Komfort-Oberfläche schustern konnte, die n-Sprachen unterstützt. Persönlich nicht mein Fall, aber wenn keine Zeit da ist, frißt der Teufel auch fliegen ;)
 

Andi_CH

Top Contributor
Warum ich das als Text handeln muss und es doch ein wenig komplizierter ist als ich vor dem Essen noch dachte:

Kommentare müssen drin bleiben
Auch die zwischen den Labels
Sortiert werden dürfen nur die einzelnen Blöcke

Code:
#File with german textstrings
#----------------------------

#Messages for graphics editor --------------------------------------------------------------------

#Contextmenu
CONTEXT_ITEM_DELETE                     = löschen
CONTEXT_ITEM_ROTATE                     = drehen
CONTEXT_ITEM_PROPERTIES                 = Eigenschaften

#Commands for menues and buttons
COMMAND_DXF_EXPORT                      = DXF Export der aktuellen Position...
COMMAND_DXF_EXPORT_ALL                  = DXF Export aller Positionen...
 

Andi_CH

Top Contributor
Code:
COMMAND_DXF_EXPORT               = DXF Export der aktuellen Position...
production.gui.DrawingFrame.title   = \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f
String.split?
Schaffe ich es den Ausdruck nach dem "=" in einem String zu haben oder muss ich den nach dem split wieder zusammenbauen? Erledigt Split("=")

Gibt es etwas optimaleres als split? (Auch für den Fall dass nach dem Label komt, was ich zwar nirgends gesehen ahbe, aber angeblich möglich ist)
 
Zuletzt bearbeitet:

fastjack

Top Contributor
Schau dir mal die Klasse Properties.java in Deinen JDK-Sourcen an. Da gibt es einen inneren Reader, an dem man sehr schön sehen kann, wie das geht (auch mit Spezialfällen etc.).
 

Neue Themen


Oben