xml nach Vorlage sortieren

German support forum

Moderators: sheep, Hacker, Stefan2, white

Post Reply
User avatar
knightrider
Senior Member
Senior Member
Posts: 280
Joined: 2011-09-14, 13:23 UTC
Location: Baden-Württemberg

xml nach Vorlage sortieren

Post by *knightrider »

Hallo,
jetzt wird´s tricky.

Ich habe eine strings.xml alphabetisch sortiert, um sie besser bearbeiten (übersetzen) zu können.
Gibt es mit TC-Bordmitteln eine Möglichkeit, die übersetzten strings in die (von der Vorlage vorgegebenen) ursprüngliche Reihenfolge zu bringen?

Zur Veranschaulichung:

Original-string.xml:

Code: Select all

<string name="start">start</string>
<string name="info">Information</string>
<string name="version">version number</string>
<string name="tos">user policies</string>
<string name="privacy_title">personal informations</string>
<string name="license">open source licences</string>
<string name="show_license">licence</string>
<string name="feedback">send feedback</string>
<string name="item">&#160;article</string>

Übersetzte string.xml:

Code: Select all

    <string name="feedback">Feedback abschicken</string>
    <string name="info">Information</string>
    <string name="item">&#160;Artikel</string>
    <string name="license">Open source Lizenzen</string>
    <string name="privacy_title">Persönliche Informationen</string>
    <string name="show_license">Lizenz</string>
    <string name="start">Starten</string>
    <string name="tos">Nutzungsbedingungen</string>
    <string name="version">Versionsnummer</string>

#247054#
Windows 10 Pro x64
TC 9.51 x32x64

"Nosce te ipsum"

User avatar
Dalai
Power Member
Power Member
Posts: 7118
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Re: xml nach Vorlage sortieren

Post by *Dalai »

TC an sich kann erstmal gar keine Dateien bearbeiten, denn das übernehmen externe Programme (z.B. Text- oder Hexeditoren) oder ggf. Plugins. Zudem stellt sich für mich die Frage nach dem Sinn der Sortierung. Ich hoffe doch, du nutzt zur Bearbeitung der Datei einen Editor mit Syntaxhervorhebung.

Um eine Datei nach einer Vorlage zu sortieren, bräuchte man IMO in jedem Fall irgendeine Skriptsprache, hier in diesem Fall wohl sogar irgendwas XML-fähiges.

Grüße
Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups

User avatar
vdijken
Member
Member
Posts: 116
Joined: 2016-07-30, 14:07 UTC
Location: The Netherlands

Re: xml nach Vorlage sortieren

Post by *vdijken »

Es gibt überhaupt kein solches Programm. Wie soll es wissen wie es vorher war. Nur wenn die ursprüngliche Datei noch vorhanden ist kann man es mit viel Einwand mit ein Programm was man selber mach probieren.

User avatar
knightrider
Senior Member
Senior Member
Posts: 280
Joined: 2011-09-14, 13:23 UTC
Location: Baden-Württemberg

Re: xml nach Vorlage sortieren

Post by *knightrider »

Danke euch beiden für die Rückmeldungen.
Dachte ich mir, dass es (zumindest nicht so einfach) geht.

#247054#
Windows 10 Pro x64
TC 9.51 x32x64

"Nosce te ipsum"

User avatar
Stefan2
Power Member
Power Member
Posts: 2923
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: xml nach Vorlage sortieren

Post by *Stefan2 »

knightrider wrote:
2020-06-29, 18:58 UTC
Ich habe eine strings.xml alphabetisch sortiert, um sie besser bearbeiten (übersetzen) zu können.
Gibt es ... eine Möglichkeit, die übersetzten strings in die ... ursprüngliche Reihenfolge zu bringen?

Du benötigst einen Texteditor, welcher nach einer bestimmten Spalte sortieren kann.


Bevor du anfängst,
1) Vergib beim Original als erstes Zeichen eine fortlaufende Nummer:
(((PSPad > Bearbeiten > Zeilen-Manipulation > Zeichen in Text einfügen > (o)Nummerierung: 1 , 2, # )))

Code: Select all

01#<string name="start">start</string>
02#<string name="info">Information</string>
03#<string name="version">version number</string>
...

2) Dann sortiere nach Spalte ...? 18?
(((PSPad > Bearbeiten > Zeilen-Sortierung... > [x] Sortiere nach Spalte [18])))
feedback
info
show_
start
tos

Code: Select all

    <string name="feedback">Feedback abschicken</string>
02#<string name="info">Information</string>
    <string name="show_license">Lizenz</string>
01#<string name="start">start</string>
    <string name="tos">Nutzungsbedingungen</string>
03#<string name="version">Versionsnummer</string


3) Erledige deine Arbeit (Übersetzten), und am Ende sortierst du nach Spalte 1.
(((PSPad > Bearbeiten > Zeilen-Sortierung... > [x]Aufsteigend)))
Du erhältst die Zeilen wieder in ihrer ursprünglichen Sortierung.


4) Als Letztes entfernst du die ersten n Zeichen (die Nummerierung und das #) wieder.
(((PSPad > Suchen > Ersetzen... > RegExSuche: \d+#(.+) Ersetze: $1 )))



Mit Notepad2 geht das ebenso, und zB mit EmEditor, ....

HTH? :shock:

User avatar
tuska
Power Member
Power Member
Posts: 2002
Joined: 2007-05-21, 12:17 UTC

Re: xml nach Vorlage sortieren

Post by *tuska »

Hier noch eine Lösung nachdem die Übersetzung bereits zur Gänze stattgefunden hat, mit Unterstützung von
- EmEditor Professional (64-bit) Version 19.9.901 portabel und
- Microsoft® Excel® 2013 (15.0.5249.1000) MSO (15.0.5249.1001) 32-Bit, Bestandteil von Microsoft Office Professional 2013

Vorweg bin ich der Meinung, dass dieses Problem von einem Excel-Profi, zB im Herber Forum ganz schnell gelöst werden könnte.
Mit wesentlich mehr Aufwand läßt sich das Problem meines Erachtens aber auch wie folgt lösen.

EmEditor
- Datei "Original-string.txt" erstellen mit Inhalt "Original-string.xml"
(.txt ist temporär besser geeignet um Syntaxfehler bezüglich .xml zu umgehen...)
- Datei "Übersetzte string.txt" erstellen mit Inhalt "Übersetzte string.xml" -> Leerzeichen links entfernen
- Trennzeichen '>" einrichten zur Verwendung der Funktion "CSV/Sortieren", und zwar wie folgt:
Menü "Tools" - "Anpassen..." - "CSV" - Button "Hinzufügen" anklicken - Name: > - getrennt, Trennzeichen: > eingeben,
☑ Name der Symbolleiste: > - Optionen, u.a.: ☑ Wechselt automatisch in den Zellauswahlmodus, OK
- Menü "Ansicht" - "Symbolleisten" - ☑ Symbolleiste CSV/Sortieren -> Symbolleiste anzeigen
- Ein weiteres "Trennzeichen"-Symbol -> │ <- auf der CSV/Sortieren-Symbolleiste einrichten, wie oben angeführt -
Name: Pipe OFF, ☑ Trennzeichen: │ U+2502(0x2502) Name der Symbolleiste: Pipe OFF
Optionen:
☑ Trennzeichen bei doppelten Anführungsstrichen zulassen
☐  Neue Zeilen in doppelten Anführungszeichen zulassen
- mit EmEditor sollen die Bezeichnungen, zB <string name="start">start</string> bei dem Zeichen '>' aufgeteilt werden,
für die nachfolgende Bearbeitung in Excel, und zwar wie folgt...
- öffnen der Datei "Original-string.txt", dann Klick auf das Trennsymbolzeichen '>' in der CSV/Sortieren-Symbolleiste
(es wurden zwei Spalten erstellt).
- Rechtsklick auf den Spaltenkopf, dann Menüpunkt "Spalte links einfügen" auswählen -> eine leere Spalte wird hinzugefügt
- Cursor in Zelle A1 positionieren, Menü "Bearbeiten" - "Erweitert" - "Nummerierung..."
Erste Zeile: 001 Inkrement: 1 Anzahl der Zeilen: 9 ◉ Decimal OK
- öffnen der Datei "Übersetzte string.txt", dann Klick auf das Trennsymbolzeichen '>' in der CSV/Sortieren-Symbolleiste
(es wurden zwei Spalten erstellt). Eine Nummerierungsspalte wird in der .txt Datei nicht benötigt.
- in EmEditor nun die einzelnen Spalten kopieren und in Excel in Zeile 2 einfügen, und zwar von links nach rechts,
beginnend mit Datei "Original-string.txt" und danach mit Datei "Übersetzte string.txt"

Excel
- Zelle A1: bzw. Zeile 1 -> Überschriften einsetzen, Spalte A: benutzerdef. Zahlenformat: 000 (= 001, 002,...)
- Zelle F2: =INDEX($A$2:$A$10;VERGLEICH(D2;$B$2:$B$10;0)) <-- diese Formel einsetzen, danach Doppelklick auf den Ziehpunkt
  die Zellbezüge, zB $A$10 bzw. $B$10 müssen dann in der Echttabelle noch entsprechend angepasst werden, d.h. auf die letzte Zeilen-Nr.
- die Darstellung in Excel ist danach zB wie folgt...

Code: Select all

 A  B				 C				D				E				  F
Nr. Teil von Original 1 von 2	 Teil von Original 2 von 2	Teil von Übersetzung 1 von 2	Teil von Übersetzung 2 von 2	  Nr.
001 <string name="show_license"	 licence</string		<string name="start"		Starten</string			  008
002 <string name="info"		 Information</string		<string name="info"		Information</string		  002
003 <string name="item"		 &#160;article</string		<string name="version"		Versionsnummer</string		  009
004 <string name="feedback"	 send feedback</string		<string name="tos"		Nutzungsbedingungen</string	  006
005 <string name="privacy_title" personal informations</string	<string name="privacy_title"	Persönliche Informationen</string 005
006 <string name="tos"		 user policies</string		<string name="license"		Open source Lizenzen</string	  007
007 <string name="license"	 open source licences</string	<string name="show_license"	Lizenz</string			  001
008 <string name="start"	 start</string			<string name="feedback"		Feedback abschicken</string	  004
009 <string name="version"	 version number</string		<string name="item"		&#160;Artikel</string		  003
- wenn jetzt nach Spalte F aufsteigend sortiert wird, dann erhält man die ursprüngliche Reihenfolge!
- danach unbedingt eine aufsteigende Sortierung in Spalte A durchführen!

EmEditor
- in Datei "Übersetzte string.txt" Rechtsklick auf Spalte A, dann "Spalte links einfügen" durchführen,
danach in Spalte A den Inhalt von Zelle F2:F10 aus Excel einfügen
- in Datei "Übersetzte string.txt" in Spalte A eine aufsteigende Sortierung(!) durchführen
(Button "Von A bis Z sortieren) und erst danach die Spalte A entfernen(!), d.h.
Rechtslick auf Spaltenkopf "A" - "Löschen der Spalte(n)" anklicken
- ein Klick auf den Button "Pipe OFF" in der "CSV/Sortieren"-Symbolleiste fügt die Spalten wieder zusammen

Ergebnis (Reihenfolge/Übersetzung)

Code: Select all

<string name="start">Starten</string>
<string name="info">Information</string>
<string name="version">Versionsnummer</string>
<string name="tos">Nutzungsbedingungen</string>
<string name="privacy_title">Persönliche Informationen</string>
<string name="license">Open source Lizenzen</string>
<string name="show_license">Lizenz</string>
<string name="feedback">Feedback abschicken</string>
<string name="item">&#160;Artikel</string>
- letzter Schritt: Datei - Speichern unter ... F12 - "Übersetzte string.xml"
FERTIG!

Post Reply