1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Symfony I18N

  • christian8287
  • 27. August 2009 um 00:08
  • Unerledigt
  • christian8287
    5
    christian8287
    Mitglied
    Reaktionen
    3
    Punkte
    193
    Beiträge
    29
    • 27. August 2009 um 00:08
    • #1

    Hallo!

    Hab vor kurzem mit Symphony begonnen wegen einem kleinen Web-Projekt. Die Seite soll mehrsprachig werden (zu Beginn Englisch/Deutsch). Jetzt kämpfe ich aber schon länger mit der Internationalisierung in Symphony:

    Normalerweise sollte ja abhängig von der User Culture der Text übersetzt werden (dazu verwende ich die I18N Helper Klasse und die Methode __()). Jetzt hab ich das Problem, dass obwohl die Culture auf de gesetzt wird, er trotzdem die Default Culture en verwendet.

    Code
    options:
      auto_shutdown: false
      culture: de
      [B]default_culture: en_GB[/B]
      use_flash: true
      logging: '1'
      timeout: 1800
    attributeHolder: {  }
    [B]culture: de[/B]

    Ich hab ein File im i18N Ordner, das messages.de.xml heißt und die deutsche Übersetzung beinhaltet:

    XML
    <?xml version="1.0"?>
    <xliff version="1.0">
      <file original="global" source-language="en_GB" datatype="plaintext" date="2009-08-26T21:54:39Z">
        <body>
          <trans-unit id="2">
            <source>Login</source>
            <target>Login</target>
          </trans-unit>
          <trans-unit id="3">
            <source>Password</source>
            <target>Passwort</target>
          </trans-unit>
    ...
    Alles anzeigen

    In den Templates verwende ich ganz normal die Helper-Klasse mit der Methode __().

    In settings.yml habe ich folgende Einstellungen getroffen:

    Code
    all:
      .settings
        ...
        i18n:            on
        default_culture: en_GB

    Die Einstellungen scheinen mir richtig. Hab keine Ahnung warum die Übersetzung nicht vorgenommen wird.

    lg,
    Christian.

  • christian8287
    5
    christian8287
    Mitglied
    Reaktionen
    3
    Punkte
    193
    Beiträge
    29
    • 28. August 2009 um 22:55
    • #2

    Habs nun gelöst. Das Problem war, dass ich in meinem messages.XX.xml Files Entities für Sonderzeichen verwendet habe. Das packt symfony aber nicht und daher wurde auch nichts übersetzt (anscheinend gab es Fehler beim Einlesen des xml-Files, da gar nichst übersetzt wurde, auch nicht die Einträge, die keine Entities enthielten). Da UTF-8 als Default-Zeichensatz eingestellt ist, stellt das auch kein Problem dar.

    Bin jetzt nicht der XML-Spezialist, aber sowas sieht für mich einfach komisch aus:
    <target>Löschen</target>

    Hab daher auch lange gebraucht bis ich auf diesen Fehler gekommen bin.

  • Paulchen
    1
    Paulchen
    Gast
    • 29. August 2009 um 00:45
    • #3

    Falls es dich interessiert: In reinem XML sind recht wenige Entities vordefiniert, siehe http://www.w3.org/TR/2004/REC-xm…-predefined-ent. Die Verwendung anderer Entities setzt voraus, dass diese irgendwo explizit definiert werden, ansonsten gibt es Probleme.

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung