1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Theme-Internationalisierung

Dieses Thema im Forum "Sprachdatei" wurde erstellt von _Paul_, 8. Dezember 2008.

  1. _Paul_

    _Paul_ Well-Known Member

    Registriert seit:
    27. April 2008
    Beiträge:
    100
    Zustimmungen:
    0
    Hallo,

    ich beschäftige mich gerade mit der Internationalisierung und Lokalisierung von Themes und habe dazu einige Fragen.

    Wann "muss" oder besser, wann sollte ich _e('') und wann __('') benutzen?
    Meine Vermutung ist, dass ich, so PHP im String enthalten ist, __('') zu benutzen ist. Stimmt das?


    Was mache ich mit Strings wie diesem?
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Muss das dann so aussehen:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ?

    Und die gleiche Frage für folgenden String:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Ist meine modifizierte Version richtig?
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Danke für die Hilfe :)
     
    #1 _Paul_, 8. Dezember 2008
    Zuletzt bearbeitet: 8. Dezember 2008
  2. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
  3. _Paul_

    _Paul_ Well-Known Member

    Registriert seit:
    27. April 2008
    Beiträge:
    100
    Zustimmungen:
    0
    Und was ist in diesem Zusammenhang der Unterschied zwischen direkt auszugebenden und normalen Strings?

    1. Danke fürs Berichtigen :)

    2. Danke für den Link! Den hab ich beim Suchen gar nicht gefunden- nur die normalen WordPress-Docs zur Internationalisierung :)
     
  4. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Der Aufruf von _e('') führt ein automatisches echo mit der Übersetzung aus, sprich der Text wird sofort ausgegeben.
    DerAufruf von __('') führt kein echo aus sondern gibt nur den übersetzten Text zurück. Diese Variante ist zu bevorzugen, wenn man mit dem Text noch etwas anstellen will, bevor man ihn selbst per echo ausgibt.
    Nein, denn ich vermute, dass comments_number() eine Funktion ist, die intern erst die Nummer bestimmt, um die richtige Pluralform zu finden.
    Allerdings ist das kontraproduktiv, wenn das der Theme-Author so verfasst hat, denn es gibt Sprachen, die die Pluralisierung mit bis zu 4 verschieden Abstufungen benutzen!

    Angepasst sollte das so aussehen:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Diese Lösung stimmt aber z.B. für Russisch oder andere Sprachen mit > 2 Pluralformen nicht. Um das korrekt so zu programmieren, damit man die ebenfalls verfügbare _ngettext Pluralisierung verwenden kann, müsste ich das Theme als Source Code haben.

    Das funtioniert ebenfalls nicht, denn die Funktion trackback_url() wird nicht ausgeführt. Ausserdem wäre dann der String nicht konstant, was er aber für gettext sein muß. Deshalb muß die URL reinformatiert werden.
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Allerdings solltest du alle Texte als Ausgangssprache in englisch verfassen und danach übersetzen, denn standardmäßig läuft WP ohne Sprachdatei. Dann sollte es auch englisch erscheinen und nicht "zwangsdeutsch".
     
    #4 codestyling, 8. Dezember 2008
    Zuletzt bearbeitet: 8. Dezember 2008
  5. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Wie gesagt, _e() enthält ein explizites echo für die Ausgabe, __() nicht.

    Codex-Suche nach "gettext". ;)
     
  6. _Paul_

    _Paul_ Well-Known Member

    Registriert seit:
    27. April 2008
    Beiträge:
    100
    Zustimmungen:
    0
    Wow! Danke, codestyling und marX!

    Nach gettext habe ich gar nicht gesucht, muss ich zu meiner Schande gestehen. Ist aber eigentlich logisch.

    Nun gut, ich werde mir den Artikel jetzt durchlesen und es dann nochmal versuchen- mit meinem bisherigen Wissensstand komme ich ja nicht weit :(
     
  7. _Paul_

    _Paul_ Well-Known Member

    Registriert seit:
    27. April 2008
    Beiträge:
    100
    Zustimmungen:
    0
    Ich glaub, das ist jetzt ne dumme Frage, aber...

    Muss ich dazu irgendwelche "offiziellen" englischen WordPress-Vokabeln benutzen oder kann ich die englischen Phrasen benutzen, die mir in den Sinn kommen?

    /edit: Sorry für den Doppelpost.
     
  8. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Solange es halbwegs korrektes Englisch ist, gibts keine weiteren Anforderungen. Die Amis werden dich schon kritisieren, wenn das Theme mal öffentlich sein sollte und denen was nicht passt. :)
    Man sollte höchsten z.B. darauf achten, das ein Post ein Post bleibt und nicht mit Sheet übersetzt wird. Ein wenig die englische Terminology sollte man schon im Auge behalten. Am Besten englisch anmelden (WPLANG in der config einen leeren String geben) und dann sieht man, ob es sich ins Bild einfügt.
     
    #8 codestyling, 8. Dezember 2008
    Zuletzt bearbeitet: 8. Dezember 2008
  9. _Paul_

    _Paul_ Well-Known Member

    Registriert seit:
    27. April 2008
    Beiträge:
    100
    Zustimmungen:
    0
    Danke dir :) Nun, das mit der Terminologie krieg ich schon auf die Reihe...
     
  10. _Paul_

    _Paul_ Well-Known Member

    Registriert seit:
    27. April 2008
    Beiträge:
    100
    Zustimmungen:
    0
    Ich habe das Theme jetzt internationalisiert, übersetzt und nun eine .mo-Datei erstellt. Wenn ich nun aber in der functions.php des Themes das load_theme_textdomain('Themename');einfüge, passiert nichts.

    Habe ich da was vergessen?
     
  11. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    1. die Sprachdatei muss für deutsch "de_DE.mo" heissen.
    2. Sie muß direkt im Theme Ordner liegen, wenn sie mit load_theme_textdomain() geladen werden soll.
    3. in deiner wp-config.php sollte WPLANG auf 'de_DE' stehen.
    Wenn das alles zutrifft, sollte die Datei geladen werden. Wenn nicht, kann es eigentlich nur an einem Translation Plugin liegen (Gengo, qTranslate etc.)
     
  12. _Paul_

    _Paul_ Well-Known Member

    Registriert seit:
    27. April 2008
    Beiträge:
    100
    Zustimmungen:
    0
    Danke :)

    Habe ich dann gestern Abend schon festgestellt: Da wir ja von Deutsch auf Englisch übersetzt haben, musste die Sprachdatei natürlich korrekt en_US heißen- ich habe sie aber en_UK genannt. Obwohl ja en_US sehr viel logischer ist, schließlich kommt WordPress ja aus den USA.... Nun ja, aber jetzt läuft alles wunderbar :)
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden