tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
430
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von zer0
    zer0 zer0 ist offline Mitglied Brokat
    Registriert seit
    Oct 2009
    Beiträge
    323
    Hallo,

    ich möchte für mein mit einer Sprachdatei in XML umsetzen. Alle Texte etc. sind in dieser Datei dann enthalten.

    Nachdem ich mir den Aufbau der XML Datei überlegt habe und mir auch schon die von z.B. Notepad++ angeschaut habe ich mal zwei Entwürfe gemacht.

    Als Beispiel sind dort die Texte für das Menu und deren Items enthalten.

    Erster:
    Code xml:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
        <Content>
            <Menu>
                <Item ID="1">Datei</Item>
                <Item ID="2">Bearbeiten</Item>
                <Item ID="3">Hilfe</Item>
            </Menu>
            <MenuItem>
                <Item menuID="1" ID="1">Neu</Item>
                <Item menuID="1" ID="2">Schließen</Item>
                <Item menuID="2" ID="3">Rückgängig</Item>
                <Item menuID="2" ID="4">Wiederherstellen</Item>
           </MenuItem>
        </Content>

    Zweiter:
    Code xml:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
        <Content>
            <Menu>
                <Item ID="1" name="Datei">
                    <MenuItem ID="1" name="Neu" />
                    <MenuItem ID="2" name="Öffnen" />
                    <MenuItem ID="3" name="Schließen" />
                </Item>
                <Item ID="2" name="Bearbeiten">
                    <MenuItem ID="1" name="Rückgängig" />
                    <MenuItem ID="2" name="Wiederherstellen" />
                </Item>
                <Item ID="3" name="Hilfe"></Item>
            </Menu>
        </Content>

    Beim 1. ist der Vorteil das jedes Item bei MenuItem eindeutig über die ID ist. Der Nachteil wenn ich jetzt beim 1. bei MenuItem das Item "Öffnen" einfügen will, bekommt es die ID 5, obwohl es eigentlich an 2ter Stelle sollte unter "Neu".

    Beim 2. ist der Vorteil das man sofort erkennt welches MenuItem zu welchem Menu gehört. Der Nachteil ist das man alleine an der MenuItem ID das Item nicht eindeutig ist.

    Was ist die bessere Lösung oder habt ihr vielleicht vorschläge?
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Moin,

    wenn es bei dieser Sprachdatei wirklich primär darum gehen soll, alle Texte dort abzuspeichern, finde ich diese Ansätze eigentlich als untauglich
    Es sollte dann unerheblich sein, ob etwas zum Menu gehört, oder sonstwohin. Die Struktur deines Menues und anderer Inhalte solltest du woanders verwalten.

    Ich würde da eher an soetwas denken:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    <lang>
      <edit>
        <de>Bearbeiten</de>
        <en>edit</en>
      </edit>
      <new>
        <de>Neu</de>
        <en>new</en>
      </new>
      <close>
        <de>Schliessen</de>
        <en>close</en>
      </close>
    </lang>
    ...Du kannst da jedes Phrase anhand des Elementnamens selektieren, und bist auch vorbereitet auf Mehrsprachigkeit.
     

  3. #3
    jkallup jkallup ist offline Mitglied Bronze
    Registriert seit
    Sep 2004
    Beiträge
    42
    Hallo,

    warum machst Du es nicht wie im Rechnungswesen ala Kontenplan(nummern)?
    Als0 zb.

    Kundenkonto: 2300
    Kunde: 3

    dann wird ein Account/Buchungsnummer dann 23003 ...
    usw.

    Gruß
    jens
     

  4. #4
    Avatar von hela
    hela hela ist offline Mitglied Smaragd
    tutorials.de Premium-User
    Registriert seit
    Oct 2004
    Beiträge
    1.099
    Hallo,
    das verstehe ich überhaupt nicht:
    Zitat Zitat von zer0 Beitrag anzeigen
    Beim 2. ... Der Nachteil ist das man alleine an der MenuItem ID das Item nicht eindeutig ist.
    Da in einem XML-Dokument die Reihenfolge der Elemente relevant ist, könnte man es auch folgendermaßen machen:
    Code xml:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    <Menu>
      <Item>
        <name lang="de">Datei</name>
        <name lang="en">File</name>
        <Item>
          <name lang="de">Neu</name>
          <name lang="en">New</name>
        </Item>
        <Item>
          <name lang="de">Öffnen</name>
          <name lang="en">Open></name>
        </Item>
        <Item>
          <name lang="de">Schließen</name>
          <name lang="en">Close</name>  <!-- über folgenden XPath-Ausdr. erreichbar:
                  /Menu/Item[1]/Item[3]/name[@lang='en'] -->
        </Item>
      </Item>
      <Item>
        <name lang="de">Bearbeiten"</name>
        <name lang="en">Edit</name>
        <Item>
          <name lang="de">Rückgängig</name>
          <name lang="de">Undo</name>
        </Item>
        <Item>
          <name lang="de">Wiederherstellen</name>
          <name lang="en">Redo</name>
        </Item>
      </Item>
      <Item>
        <name lang="de">Hilfe</name>
        <name lang="en">Help</name>
      </Item>
    </Menu>
    ... wobei ich den Vorschlag von Sven viel übersichtlicher finde.
     

  5. #5
    Avatar von zer0
    zer0 zer0 ist offline Mitglied Brokat
    Registriert seit
    Oct 2009
    Beiträge
    323
    Hallo, Danke erstmal für eure Antworten.

    Was mit bei Sven's Lösung nicht gefällt ist das man dann im Programm über Strings zum Text navigieren würde. Wobei ich es gut finde das die Texte unabhängig vom Layout sind.

    @Hela: Was ich gemeint hab in meinem ersten Post war, das z.B. das MenuItem "Schließen" nur dann eindeutig über die ID ist, wenn es mit der ID des Menu's "Datei" zusammengebracht wird. Also 1 & 3.
     

  6. #6
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Zitat Zitat von zer0 Beitrag anzeigen
    Was mit bei Sven's Lösung nicht gefällt ist das man dann im Programm über Strings zum Text navigieren würde.

    Wie meinst du denn das?
    Man würde da per xpath selektieren, bspw.
    Code :
    1
    
    /edit/de
    ...wie würdest du das denn bei deiner Variante tun?
     

  7. #7
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.774
    Blog-Einträge
    5
    Hallo,

    muss es denn unbedingt XML sein? Ansonsten könntest du auch eine etablierte, getestete Komponente wie gettext einsetzen.

    Im Übrigen stimme ich Sven zu: die Menüstruktur hat in der Übersetzungsdatei nichts zu suchen.

    @Sven: Mit deinem Vorschlag bin ich allerdings nicht ganz einverstanden. Die Tagnamen als Daten zu missbrauchen macht es schwierig, die XML-Dateien mit einer DTD/XSD zu validieren. Man müsste bei jeder neuen Phrase und Sprache die DTD/XSD aktualisieren. Ich würde vorschlagen, mit einem festen Satz von Tags zu arbeiten:
    Code xml:
    1
    2
    3
    4
    5
    6
    7
    
    <?xml version="1.0" encoding="utf-8"?>
    <translation xml:lang="de">
      <message id="File">Datei</message>
      <message id="New">Neu</message>
      <message id="Close">Schließen</message>
      <!-- etc. -->
    </translation>
    Die Phrasen werden (ähnlich wie bei gettext) über ihre englische Übersetzung identifiziert. Außerdem bekommt jede Sprache ihre eigene XML-Datei (in der Regel will man sowieso nur eine Sprache gleichzeitig benutzen, also warum sollte man alle anderen auch laden?).

    Die Qt-Bibliothek verwendet übrigens auch ein XML-Format für Übersetzungen.

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  8. #8
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Zitat Zitat von Matthias Reitinger Beitrag anzeigen
    @Sven: Mit deinem Vorschlag bin ich allerdings nicht ganz einverstanden. Die Tagnamen als Daten zu missbrauchen macht es schwierig, die XML-Dateien mit einer DTD/XSD zu validieren. Man müsste bei jeder neuen Phrase und Sprache die DTD/XSD aktualisieren.
    Jo, da hast du natürlich recht.
    Wenn man die Phrasen validieren will/muss, dann ist das ungeeignet.

    Ich hab dabei bisher allerdings immer auf Validierung verzichtet
     

  9. #9
    Avatar von zer0
    zer0 zer0 ist offline Mitglied Brokat
    Registriert seit
    Oct 2009
    Beiträge
    323
    Hallo,

    erstmal vielen Dank für die Antworten.

    @Sven: Ich habe das so gemeint: Ich finde es besser wenn ich eine Methode getItem() habe, der ich als Parameter eine ID als Zahl übergebe anstatt ein String wie "edit". Aber das ist eigentlich nur meine persönliche Meinung.

    Das mit gettext ist auch eine Idee, die mir bisher noch nicht bekannt war.
    Ich finde es mit einer XML Datei einfach sehr einfach und elegant, den diese kann man überall öffnen und bearbeiten. Somit kann leicht von anderen Usern die Datei in eine andere Sprache übersetzt werden.

    Das man die Menu-Struktur vielleicht lieber nicht in die Datei machen sollte habt ihr wahrscheinlich recht. Es sieht halt so Übersichtlicher aus, man findet sehr leicht das, was man sucht. Man muss hinzu sagen das nicht nur Menu in die Datei mit aufgenommen wird, alles was an Text auffällt kommt rein, also Buttons, Tooltip, Titel etc.
    Geändert von zer0 (19.08.10 um 19:09 Uhr)
     

Ähnliche Themen

  1. Sprachdatei für C4D 11
    Von shurikn im Forum Cinema 4D
    Antworten: 2
    Letzter Beitrag: 06.06.09, 13:02
  2. FrontPage-Deutsche Sprachdatei
    Von Siegmund im Forum HTML & XHTML
    Antworten: 4
    Letzter Beitrag: 23.03.05, 16:59
  3. FrontPage-Deutsche Sprachdatei
    Von Siegmund im Forum HTML-Editoren
    Antworten: 1
    Letzter Beitrag: 23.03.05, 16:18
  4. AW: Deusche Sprachdatei für Photoshop
    Von renderblack im Forum Photoshop
    Antworten: 5
    Letzter Beitrag: 02.06.04, 13:42
  5. Deutsche Sprachdatei Photoshop 7.0
    Von funnytommy im Forum Photoshop
    Antworten: 1
    Letzter Beitrag: 31.05.04, 14:57