Alt 16.08.2006, 16:22   #61 (permalink)
PostRank: 0
 
Registriert seit: 31.07.2006
Beiträge: 6
Es geht auch ohne gettext.php...

Nachdem keine Lösung für das oben beschriebene Problem in Sicht ist, habe ich einen Workaround gefunden, mit dem man Wordpress von gettext.php wieder auf die php gettext Erweiterung umstellen kann. Nach der Umstellung funktioniert das Sprachfile bei mir. Ich habe bis jetzt keine Nachteile entdeckt, lasse mich aber gerne eines besseren belehren, falls jemandem noch eine andere Lösung einfällt. Zumindest einem interessanten Blog zu Folge sollte die Extension-Methode sogar einen Performancegewinn gegenüber der gettext.php-Lösung bringen - wenn die Extension auf dem System funktioniert (PHP muss mit gettext-Support kompiliert, gettext muss installiert und die locale auf dem System verfügbar sein), dann müsste dieser Workaround also eigentlich der Standardlösung vorzuziehen sein.

Zuerst muss wp-includes/wp-l10n.php durch folgendes ersetzt werden:
Code:
<?php

$curpath = dirname(_FILE_).'/';
$locale = '';
// WPLANG is defined in wp-config.
if (defined('WPLANG')) {
        $locale = WPLANG;
}
if (empty($locale)) {
        $locale = 'en_US';
}
setlocale(LC_ALL, $locale);
bindtextdomain("wordpress", ABSPATH."wp-includes/locale");
textdomain("wordpress");

function get_locale() {
        global $locale;

        if (isset($locale))
                return $locale;

        // WPLANG is defined in wp-config.
        if (defined('WPLANG'))
                $locale = WPLANG;

        if (empty($locale))
                $locale = 'en_US';

        $locale = apply_filters('locale', $locale);

        return $locale;
}

// Return a translated string.
function __($text,  $domain = 'default') {
        return gettext($text);
}

// Echo a translated string.
function _e($text, $domain = 'default') {
        echo gettext($text);
}

// Return the plural form.
function __ngettext($single, $plural, $number, $domain = 'default') {
        return ngettext($single, $plural, $number);
}

function load_textdomain($domain, $mofile) {
}

function load_default_textdomain() {
}

function load_plugin_textdomain($domain, $path = 'wp-content/plugins') {
}

function load_theme_textdomain($domain) {
}

?>
Die leeren Funktionen müssen erhalten bleiben, damit Wordpress weiterhin funktioniert.

Danach legt man ein Verzeichnis wp-includes/locale/de_DE.UTF-8/LC_MESSAGES/ an (für UTF-8-Support) bzw. wp-includes/locale/de_DE/LC_MESSAGES/ (für ISO-8859-1). In dieses Verzeichnis kopiert man die de_DE.mo und benennt sie um in wordpress.mo.

Zuletzt muss noch die wp-config.php angepasst werden. Bei Verwendung von UTF-8 muss WPLANG folgendermaßen gesetzt werden:
Code:
define ('WPLANG', 'de_DE.UTF-8');
Bei Verwendung von ISO-8859-1 entsprechend mit
Code:
define ('WPLANG', 'de_DE');
Damit gettext funktioniert, muss das Paket auf dem System installiert sein. Unter Debian erledigt man das, sofern das Paket nicht ohnehin bereits vorhanden ist, mit
Code:
apt-get install gettext gettext-base
Weitere Informationen gibt's bei phpbar

Viele Grüße

Markus

Geändert von MarkusW (16.08.2006 um 17:18 Uhr).
MarkusW ist offline   Mit Zitat antworten
Alt 16.08.2006, 22:14   #62 (permalink)
PostRank: 0
 
Registriert seit: 11.08.2006
Beiträge: 9
Oha,hatte ich das mit dem DAU erwähnt?
Aber bevor ich mich abstrample: damit ist der Admin-Bereich deutsch, ja?

Hm, das oben klingt alles noch so, als könnt ich das hinbekommen (suchen, ersetzen, was erstellen...) aber ab hier:

Zitat:
Damit gettext funktioniert, muss das Paket auf dem System installiert sein. Unter Debian erledigt man das, sofern das Paket nicht ohnehin bereits vorhanden ist, mit
Code:

apt-get install gettext gettext-base
Weitere Informationen gibt's bei phpbar
versteh ich's dann doch nicht mehr ...
Ich warte mal noch ein wenig, vielleicht findet das wordpress-deutschland.org-Team noch eine DAU-freundlichere Lösung ... :-)
misfit ist offline   Mit Zitat antworten
Alt 16.08.2006, 23:48   #63 (permalink)
PostRank: 0
 
Registriert seit: 31.07.2006
Beiträge: 6
Zitat:
Zitat von misfit
Oha,hatte ich das mit dem DAU erwähnt?
Aber bevor ich mich abstrample: damit ist der Admin-Bereich deutsch, ja?
Der Admin-Bereich und die Datumsangaben im Frontend, korrekt.

Bzgl. gettext-Installation: Welches Betriebssystem und ggf. welche Distribution in welcher Version läuft denn bei Dir? php ist nach meiner Erfahrung auf den meisten Linux-Versionen mit gettext-Unterstützung kompiliert - das sollte also bereits funktionieren. gettext selbst muss ggf. noch installiert werden, sofern es auf dem System noch nicht vorhanden ist. Wenn Du nicht Admin Deines Servers bist, kannst Du entweder den Admin bitten, das Paket für Dich zu installieren oder Du musst auf eine Lösung mit gettext.php hoffen - letzteres ist im Grunde eine Alternative zum "richtigen" gettext, die für Systeme gedacht ist, auf denen das Original eben nicht zur Verfügung steht. Allerdings ist diese reine php-Lösung notgedrungen langsamer und - zumindest in meinem Fall - derart verbuggt, dass es nicht zu gebrauchen ist.

Wenn es Dir nichts ausmacht, die Änderungen wieder rückgängig zu machen, kannst Du ja auch einfach ausprobieren, ob das ganze nicht bereits bei Dir funktioniert - einfach die eine Datei durch meine Version austauschen, die .mo-Datei umbenennen und in den korrekten Pfad legen und die wp-config.php anpassen.

Viele Grüße

Markus
MarkusW ist offline   Mit Zitat antworten
Alt 17.08.2006, 00:22   #64 (permalink)
PostRank: 0
 
Registriert seit: 11.08.2006
Beiträge: 9
Linux ... hab ich sogar schon gehört, aber als DAU hab ich 'natürlich' Windoof aufm Rechner.
Den Admin werd ich mal fragen und ausprobieren ist kein Problem. Im äußersten Fall installiere ich das WP einfach neu. Ich hab ja noch nix richtig mit erstellt, da ich ja zunächst durch trial and error versuche zu verstehen, was passiert, wenn ich wo was ändere.
Aber heut nimmer, denn jetzt ist Bettzeit. sobald ich's probiert habe, post ich mal das Ergebnis.
Soweit schon mal danke.
Oh, selbst wenn's funzt, wäre ich Mad vom WP-Team dankbar, wenn er eine evtl. Lösung posten würde, falls was gefunden wurde. Wenn ich's vielleicht auch nicht ganz verstehen werde, würd mich doch interessieren, warum's grade bei uns beiden nicht klappte. Außerdem möchte ich, sollte ich mit WP auf meiner Domain zufrieden sein, das Ganze auch für meine Jugendtreffs einsetzen und wäre dafür natürlich auch an einfacheren (?) Lösungen interessiert.
OK, dann bis zum Ergebnis!

Grüße!

misfit (Mike)
misfit ist offline   Mit Zitat antworten
Alt 17.08.2006, 11:07   #65 (permalink)
PostRank: 0
 
Registriert seit: 31.07.2006
Beiträge: 6
Zur Erläuterung: gettext ist eine im Unix-Bereich ziemlich weit verbreitete Library, die im Grunde nichts anderes macht, als einen übergebenen "Original"-String (meist englisch) durch den korrespondierenden übersetzten String aus einer speziell aufbereiteten Sprachdatei zu ersetzen - das ist die .mo-Datei, die auch Wordpress verwendet.

PHP kann mit gettext-Support kompiliert werden (--with-gettext). Ist das der Fall, dann stehen dem php-Programmierer php-Funktionen zur Verfügung, die ihrerseits das externe gettext-Programm kapseln und so gettext-Funktionalität direkt in PHP bieten.

Ein Problem ergibt sich allerdings dann, wenn auf dem Rechner, auf dem das PHP-Script läuft, welches diese gettext-Funktionen verwendet, kein gettext installiert oder wenn php ohne die gettext-Extension kompiliert wurde oder wenn die gewünschte locale vom Betriebssystem nicht unterstützt wird. Anders als die meisten Linux-Distributionen bringt Windows standardmäßig kein installiertes gettext mit. Wordpress müsste daher bei Verwendung der externen gettext-Library beim lokalen Test auf einer XAMPP-Windows-Installation ohne Support für Internationalisierung laufen. Um Wordpress möglichst portabel zu halten, musste man daher auf ein Drop-In-Replacement für die gettext-Erweiterung zurückgreifen, welches ausschließlich mit internen PHP-Funktionen arbeitet und sich trotzdem auf das durch gettext definierte .mo-Format der Sprachdateien versteht.

Dafür hat man auf php-gettext zurückgegriffen. Das sind die beiden Dateien gettext.php und streams.php im wp-includes-Verzeichnis. Diese Dateien stammen nicht vom Wordpress-Team. php-gettext wird nicht nur von Wordpress verwendet, sondern u.a. von den Projekten Gallery und SquirrelMail. Mit dieser php-nativen Lösung bekommt man theoretisch gettext-Funktionalität ganz ungeachtet von irgendwelchen Abhängigkeiten außerhalb von php selbst (Betriebssystem-locale, gettext-Verfügbarkeit, gettext-PHP-Extension).

Das Problem mit php-gettext ist allerdings, dass dieser Code noch immer Beta ist. Es sind dort beim Zugriff auf das mo-File und beim Caching der Daten Operationen erforderlich, die nicht gerade zu den Stärken von php gehören. So führen z.B. aktivierte magic-quotes dazu, dass das binäre Lesen des mo-Files nur Datensalat produziert; das Script muss zudem entscheiden, wie die CPU tickt (Big Endian vs. low Endian) um Binärdaten korrekt in den Speicher zu schreiben und wieder einzulesen - wird dabei nicht richtig geraten (wie es z.B. bei 64-bit Prozessoren passieren kann), dann führt auch das wieder zu einem fatalen Fehler. Schließlich gibt es noch Bugs in php selbst, die in diesem Bereich dazu führen, dass Binäroperationen nicht so laufen wie sie sollen. gettext hat alle diese Probleme natürlich nicht, da es sich anders als bei einem php-Script eben um nativ kompilierten Code handelt.

Da es sich bei php-gettext um ein externes Projekt handelt, würde ich vermuten, dass von den Wordpress-Entwicklern wenig Hilfe zu erwarten ist. Die deutsche Community kümmert sich auch eher um das Sprachfile, wenn ich das richtig mitbekommen habe, als um Wordpress-Systeminterna. Da php-gettext allerdings einen Kompromiss zwischen Performance und Portabilität darstellt und es ganz offensichtlich Probleme mit diesem Kompromiss gibt, würde ich mir persönlich wünschen, dass man als User eine Wahlmöglichkeit zwischen php-gettext (bessere Portabilität, schlechtere Performance, Bugs) und gettext-Extension (bessere Performance, stabilerer Code, schlechtere Portabilität) bekommt.
MarkusW ist offline   Mit Zitat antworten
Alt 19.08.2006, 16:33   #66 (permalink)
PostRank: 0
 
Registriert seit: 11.08.2006
Beiträge: 9
Juhu! Es geht!!!!

Mein Admin (Kumpel) ist wohl in Urlaub, also hab ich's einfach mal ohne nachfragen ausprobiert... und es geht!!! Der Admin-Bereich ist jetzt in Deutsch.
Allerdings habe ich bemerkt, dass es doch nicht allein am Englischen lag. Ich muss wohl einfach willenslos rumprobieren. ... auf deutsch aber wirklich schon mal ne Erleichterung.

Vielen lieben Dank!

Grüße!

misfit (Mike)
misfit ist offline   Mit Zitat antworten
Alt 19.09.2007, 13:46   #67 (permalink)
PostRank: 0
 
Registriert seit: 05.01.2007
Beiträge: 19
Zitat:
Zitat von Gagget Beitrag anzeigen
Habe das selbe Problem damit,das die de_DE.mo nicht funktioniert, (gehabt), und bin alles durchgegangen von Binary Upload bis Accept Languages vom Apache. Ohne Erfolg, wie schon viele vor mir, wie ich sehen konnte.
Nach mehreren Stunden stellt sich mir nun die Frage kann es an 64bit Systemen liegen ?

den mit folgenden Codeänderungen läuft es:

wp-includes/gettext.php (Zeile 101 -121)
PHP-Code:
    // Caching can be turned off
    
$this->enable_cache $enable_cache;

    
// $MAGIC1 = (int)0x950412de; //bug in PHP 5
    
$MAGIC1 = (int) - 1794895138;
    
// $MAGIC2 = (int)0xde120495; //bug
    
$MAGIC2 = (int) - 569244523;
    
$MAGIC3 = (int)  2500072158// ÄNDERUNG 64 BIT
    
    
$this->STREAM $Reader;
    
$magic $this->readint();
    if (
$magic == $MAGIC1 || $magic == $MAGIC3) { // ÄNDERUNG 64 BIT
      
$this->BYTEORDER 0;
    } elseif (
$magic == $MAGIC2) {
      
$this->BYTEORDER 1;
    } else {
      
$this->error 1// not MO file
      
return false;
    } 
an sich kenn ich Wordpress gar nicht, wäre also interressant zu erfahren in wie weit das sein kann. Aufjedenfall funktioniert es so erstmal.

GRuß Gagget
Also bei mir funktioniert es nicht! Was nun?
derMarvin ist offline   Mit Zitat antworten
Alt 13.12.2007, 00:22   #68 (permalink)
PostRank: 0
 
Registriert seit: 13.12.2007
Beiträge: 1
Bei mir klappt es auch immer noch nicht. Ich habe keine Ahnung, was ich jetzt noch tun kann. Benutze WP 2.3.1

Kann sonst noch jemand Hilfe anbieten?
TheRider ist offline   Mit Zitat antworten
Alt 24.12.2007, 10:58   #69 (permalink)
Pas
PostRank: 0
 
Registriert seit: 24.12.2007
Beiträge: 5
Wp 2.3.1

hey ho!

Ich habe jetzt so ziemlich alles hier in dem Thread ausprobiert.
Folgendes: Der Server hat 64 bit, wurde vom Systemadministrator bestätigt. Also Front- und Backend englisch...
Jetzt habe ich nach dem ganzen Rumprobieren offenbar irgendetwas kaputt gemacht (ich habe auch die gettext neu runtergeladen von WP.org, ist aber immer noch) und er hat oben auf der Site den Fehler
Code:
 WordPress database error: [Table 'pas_blog.wp_post2cat' doesn't exist]
             SELECT SQL_CALC_FOUND_ROWS DISTINCT wp_posts.* FROM wp_posts LEFT JOIN wp_post2cat ON ( wp_posts.ID = wp_post2cat.post_id) WHERE 1=1 AND post_type = 'post' AND (post_status = 'publish' OR post_status = 'private') ORDER BY post_date DESC LIMIT 0, 10
Gibt es mittlerweile irgend eine Lösung oder muss ich auf ewig das englische Wordpress benutzen? Wer sich das ganze ansehen will: riddleculous

Vielen Dank schon mal und Frohe Weihnachten!
Pas

EDIT: Hat geklappt mit der Anleitung Wordpress auf Deutsch auf einem 64-Bit System at Netzpiraten - cat /dev/Brain

Geändert von Pas (24.12.2007 um 11:09 Uhr).
Pas ist offline   Mit Zitat antworten
Alt 24.12.2007, 11:09   #70 (permalink)
WPD-Team
 
Benutzerbild von jottlieb
 
Registriert seit: 20.08.2005
Beiträge: 17.383
Zitat:
Zitat von Pas Beitrag anzeigen
Jetzt habe ich nach dem ganzen Rumprobieren offenbar irgendetwas kaputt gemacht (ich habe auch die gettext neu runtergeladen von WP.org, ist aber immer noch) und er hat oben auf der Site den Fehler
Ne, aber du wirst wahrscheinlich auf WP 2.3 geupdated und alte Plugins laufen haben.
__________________
"Eine gut gestellte Frage ist schon halb beantwortet."
jottlieb ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
WordPress MU Olaf WordPress MU 8 07.01.2007 11:28
Einmal wordpress, immer wordpress? fabufab Allgemeines 2 04.11.2005 13:24
WordPress 1.6 Informationen Olaf Allgemeines 0 26.06.2005 20:24


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:42 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.6.0 | Impressum | Ein Inpsyde.com Projekt