ubuntuusers.de

PHP5-gettext funktioniert nicht

Status: Ungelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

gert.dorn@a-t-c.ch

Anmeldungsdatum:
3. Januar 2013

Beiträge: Zähle...

Hallo zusammen,

ich versuche nun seit tagen PHP gettext zu laufen zu bringen. entsprechend PHPinfo ist alles richtig installiert.

gettext GetText Support 	enabled 
root@quicky-3000-N200:~# php5 -v
PHP 5.3.10-1ubuntu3.4 with Suhosin-Patch (cli) (built: Sep 12 2012 19:00:43) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

root@quicky-3000-N200:~# sudo apt-get install php-gettext
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut       
Statusinformationen werden eingelesen... Fertig
php-gettext ist schon die neueste Version.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.

Verwunderlich ist nur, das keine PHP gettext.so (andere schon) auf dem Rechner zu finden ist. In php.ini eingetragen extension=gettext.so

/var/log/apache2/error.log:
[Thu Jan 03 18:30:58 2013] [notice] caught SIGTERM, shutting down
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/gettext.so' - /usr/lib/php5/20090626+lfs/gettext.so: undefined symbol: PL_thr_key in Unknown on line 0
[Thu Jan 03 18:30:59 2013] [notice] Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.4 with Suhosin-Patch configured -- resuming normal operations
Wenn ich mit meinem Testprogramm versuche gettext zu verwenden passiert folgender Fehler.

Lauf 1 (bindtextdomain($domain, "./locale/"); Es fehlt das schliessende '/' hinter locale und bindtextdomain setup isn't working.

de ,a-t-c_de , ISO-8859-15

Gettext setup isn't working

/var/www/htdocs/locale bindtextdomain setup isn't working

ISO-8859-15 bind_textdomain_codeset setup isn't working

a-t-c_de textdomain setup isn't working

We translated it correctly 

Lauf 2 (bindtextdomain($domain, "./localen/"); Nachdem ich nun aus lokale lokalen gemacht habe ist ergebnist "We translated it correctly" aber der Inhalt von bindtextdomain "/var/www/htdocs/localen/" fehlt.

Wer kann mir da helfen ? Auf einen anderem Linux Server läuft die Applikation ohne Probleme (siehe http://a-t-c.ch/phpinfo.php )

Vielen Dank für eure Hilfe.

Gruss gert

Testprogramm

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php 
// Melde alle PHP Fehler (siehe Changelog)
error_reporting(E_ALL);

//var_dump($_SESSION);

	$lang1 = 'de_DE';
	$_SESSION['LANG'] = 'de';
	// Set language to Lang
	putenv("LANG=$lang1");
	// teilt gettext die Sprache mit
	setlocale(LC_ALL, $lang1);
	
	$locale = $_SESSION['LANG']; // setzt die Sprache
	$domain = 'a-t-c_'.$_SESSION['LANG'] ;
	$encoding = 'ISO-8859-15'; // setzt die Zeichenkodierung
	
	// teilt gettext die Sprache mit
	setlocale(LC_MESSAGES, $locale);
	
	// teilt gettext mit, wo es die ?bersetzungen suchen soll
	bindtextdomain($domain, './locale');
	
	
	// teilt gettext die zu verwendene Zeichenkodierung mit
	bind_textdomain_codeset($domain, $encoding);
	
	// weist gettext an, die definierte Dom?ne zu verwenden
	textdomain($domain);
	
	
	// gettext erwartet die ?bersetzung nun in
	//./de/LC_MESSAGES/A-T-C.mo
	echo " $locale ,$domain , $encoding <br>";
	
	
if( gettext("Hello World!") === "Hola a todos!" ) {
    print "We translated it correctly";
} else {
    print "Gettext setup isn't working<br>";
}


$bindtextdomain_set = bindtextdomain($domain, "./locale/");
        if (empty($bindtextdomain_set)) {
    print $bindtextdomain_set." We translated it correctly<br>";
} else {
    print $bindtextdomain_set." bindtextdomain setup isn't working<br>";
}

$bind_textdomain_codeset = bind_textdomain_codeset($domain, $encoding);
if (empty($bind_textdomain_codeset)) {
	print $bind_textdomain_codeset." We translated it correctly";
} else {
	print $bind_textdomain_codeset." bind_textdomain_codeset setup isn't working<br>";
}

$textdomain = textdomain($domain);
if (empty($textdomain)) {
	print $textdomain." We translated it correctly";
} else {
	print $textdomain." textdomain setup isn't working<br>";
}

$setlocale = setlocale(LC_MESSAGES, $locale);
if (empty($setlocale)) {
	print $setlocale." We translated it correctly";
} else {
	print $setlocale." bind_textdomain_codeset setup isn't working<br>";
}


?>

Bearbeitet von redknight:

Forensyntax eingefügt. hast Du mal auf den Vorschauknopf gedrückt?

Antworten |