LeKuchen: Russisch und Deutsch in einer XML-Datei?

Hallo zusammen,

folgender Hintergrund: Ich möchte für eine mehrsprachige Webanwendung den Labels von Objekten verschiedene Texte zuweisen, abhängig von der Sprache.

Dafür wollte ich eine XML-Datei hinterlegen, in der das entsprechende Objekt bezeichnet ist, inklusive der verschiedenen sprachlichen Ausprägungen, z.B.:

<?xml version="1.0" encoding="utf-8">
<LanguageRessource>
  <object key="LogOff">
    <label>
      <de>Ausloggen</de>
      <en>Log Off</en>
      <ru>...</ru>
    </label>
  </object>
</LanguageRessource>

Problem: Mit Deutsch und Englisch geht es ja noch, aber bei kyrillischen Buchstaben wird es in der XML-Datei natürlich kompliziert. Ich habe es erst mit einer CDATA-Section probiert:

<ru><![CDATA[...]]></ru>

Aber auch das führte zu einer nicht korrekten xml-Syntax. Ich gehe davon aus, das es mit dem Encoding zu tun hat. Ich habe aber ja nun viele verschiedene Sprachen in dem selben File! Kann ich auch nur bestimmte Bereiche in der XML-Datei entsprechend encoden?

Hat jemand andere Lösungsvorschläge für das Problem? (Eine Aufteilung der Datei in lang.de.xml, lang.ru.xml würde ich nur als letzte Alternative in Betracht ziehen wollen...)

Gruss & Dank
LeKuchen

  1. Moin!

    <?xml version="1.0" encoding="utf-8">

    Das ist der Schlüssel zu deinem Glück - und macht das Leben richtig einfach, wenn man einen UTF-8-fähigen Editor hat (sonst natürlich nicht).

    Problem: Mit Deutsch und Englisch geht es ja noch, aber bei kyrillischen Buchstaben wird es in der XML-Datei natürlich kompliziert.

    Nein. Einfach kyrillisch schreiben und als UTF-8 speichern.

    Ich habe es erst mit einer CDATA-Section probiert:

    <ru><![CDATA[...]]></ru>

    Warum so kompliziert? Die UTF-8-Zeichen des Bereichs von 0x00 bis 0x7f codierst du doch auch nicht so kompliziert.

    - Sven Rautenberg

    1. Hallo Sven,

      Das ist der Schlüssel zu deinem Glück - und macht das Leben richtig einfach, wenn man einen UTF-8-fähigen Editor hat (sonst natürlich nicht).

      Das hatte ich mir ja schon gedacht, aber dass es nur an dem Editor liegt (Ultraedit), ist ja einfach zu schön um wahr zu sein! ;o)

      Warum so kompliziert? Die UTF-8-Zeichen des Bereichs von 0x00 bis 0x7f codierst du doch auch nicht so kompliziert.

      Die CDATA-Sction wird wohl trotzdem notwendig werden wg. der Sonderzeichen. Btw: Was wäre denn der Vorteil von UTF-16 gegenüber UTF-8 in diesem Fall?

      Vielen Dank für die überaus angenehme Antwort!

      Gruss
      LeKuchen

      1. Moin!

        Warum so kompliziert? Die UTF-8-Zeichen des Bereichs von 0x00 bis 0x7f codierst du doch auch nicht so kompliziert.

        Die CDATA-Sction wird wohl trotzdem notwendig werden wg. der Sonderzeichen.

        Sicher? Naja, für XML bin ich kein Experte. ;)

        Btw: Was wäre denn der Vorteil von UTF-16 gegenüber UTF-8 in diesem Fall?

        Ob es XML-seitig Vorteile gibt, kann ich nicht sagen. Hinsichtlich des Unterschiedes zwischen UTF-16 und UTF-8 sind aber folgende Vorteile zugunsten von UTF-16 festzuhalten:
        1. Inkompatibilität zu ASCII-Editoren
        2. Jedes Zeichen benötigt zwingend mindestens 16 Bit, Zeichen über 0xFFFF benötigen 32 Bit.
        3. Viele Nullbytes im Datenstrom sind evtl. ganz gut komprimierbar.
        4. Alle Unicode-Zeichen darstellbar (genau wie bei UTF-8).
        5. Unicode-unfähige Programme (PHP 4, MySQL 4.0) könnten bei UTF-16 versagen bzw. nur eingeschränkt funktionieren.

        Unter dem Strich: UTF-16 ist dann schlau, wenn man weiß, dass es schlau ist. Ansonsten ist es eher blöd.

        - Sven Rautenberg

        1. Hallo Sven,

          ich habe mich für UTF-8 entschieden....

          Unter dem Strich: UTF-16 ist dann schlau, wenn man weiß, dass es schlau ist. Ansonsten ist es eher blöd.

          Den solltest Du Dir patentieren lassen...;o)

          Danke,
          LeKuchen

          1. Den solltest Du Dir patentieren lassen...;o)

            Done. ;-)

            Live long and prosper,
            Gunnar

            --
            „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
      2. Hi,

        Die CDATA-Sction wird wohl trotzdem notwendig werden wg. der Sonderzeichen. Btw: Was wäre denn der Vorteil von UTF-16 gegenüber UTF-8 in diesem Fall?

        keiner, UTF ist ja nur ein Transportformat.

        Gruss,
        Ludger