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