Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]787[/thread]

gettext: Spracheinstellung des Browser

Leser: 1


<< >> 7 Einträge, 1 Seite
norritt
 2006-07-23 05:53
#8453 #8453
User since
2006-07-23
2 Artikel
BenutzerIn
[default_avatar]
moin,

versuche grad eine Webseite mit gettext international zu machen... Möchte dabei die Spracheinstellungen des Browsers nutzen, sodas die Texte gleich in der richtigen Sprache angezeigt werden... ohne das der Benutzer eine Auswahl treffen muss.
mein Problem: Wie teile ich die Spracheinstellung des Browser gettext/setlocale mit?
Es soll nicht die LANG Einstellung des ausfuehrenden Servers genutzt werden..

meine ersten Versuche: testcgi.pl
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl -w

use Locale::gettext;
use POSIX; # Needed for setlocale()
use strict;

my $lang = $ENV{'HTTP_ACCEPT_LANGUAGE'};
if((split(/,/, $lang))[0] =~ /^en(.*)/) { $lang = "en"; }
elsif((split(/,/, $lang))[0] =~ /de(.*)/) { $lang = "de"; }
else { $lang = "en"; }
#$ENV{'LANG'}="$lang";
# hier soll die spracheinstellung des browser beachtet werden...
# nicht die des ausfuehrenden servers
setlocale(LC_MESSAGES, $lang);
bindtextdomain("testcgi", "/usr/share/locale");
textdomain("testcgi");
...
print "Content-type: text/html\n\n";
print "<html><head><title>gettext</title></head><body>";
print "<h1>".gettext("Hello gettext")."</h1>";
print "</body></html>";


in /usr/share/locale/de/LC_MESSAGES/ und /usr/share/locale/en/LC_MESSAGES/ liegen die testcgi.mo Übersetzungsdateinen.
Aber er nimmt die Browser-Einstellungen nicht an :( Watt mach ich falsch?
lichtkind
 2006-07-23 13:09
#8454 #8454
User since
2004-03-22
5680 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ich hab davon kaum ahnung auch locale ist eher für apps gemacht und hier etwas fehl am platz.
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
GwenDragon
 2006-07-23 18:04
#8455 #8455
User since
2005-01-17
14542 Artikel
Admin1
[Homepage]
user image
Ehrtlich gesagt, wird es auf den Servern anders gemacht.
Da existiert für jede Sprache eine HTML-Datei. Also:
en = test.html
de = test.html.de
fr = test.html.fr

Der Server verwendet die Spracheinstellung des Browsers und lädt dann automatisch die richtige Seite. Das nennt sich Content Negotiation.
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

esskar
 2006-07-23 19:33
#8456 #8456
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
hmm; bei cgi ist es schon gang und gäbe mit sprachdateien (.mo) zu arbeiten;

hast du dir schonmal $lang ausgeben lassen?
GwenDragon
 2006-07-23 21:39
#8457 #8457
User since
2005-01-17
14542 Artikel
Admin1
[Homepage]
user image
Kann es sein, dass gettext nicht aufgerufen werden kann, weil es nicht zu den vom Server erlaubten Programmen/Libryries gehört?

Schon mal Locale::PGetText versucht? gehts damit?\n\n

<!--EDIT|GwenDragon|1153677518-->
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

norritt
 2006-07-24 01:51
#8458 #8458
User since
2006-07-23
2 Artikel
BenutzerIn
[default_avatar]
nabend...

@GwenDragon 1.
Das mit den vielen html-Dateien für verschiedene Sprachen wollte ich ja grad umgehen! und mit na gettext Umgebung könn(t)en auch immer wieder neue sprachen "einfach" hinzugefügt werden ;)

@esskar
jap, hab mir die $lang ausgeben lassen... das klappt auch bestens.. da steht genau das drin, was ich vorher im browser einstelle... also für deutsch->de, english->en, US-english-> en_US usw.

@GwenDragon 2.
Datt Locale::PGetText guck ich mir gleich morgen früh mal an...

Besten Dank ersma... gn8
GwenDragon
 2006-07-24 11:14
#8459 #8459
User since
2005-01-17
14542 Artikel
Admin1
[Homepage]
user image
Wobei Deutsch (Deutschland) de_DE ist ;)
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

<< >> 7 Einträge, 1 Seite



View all threads created 2006-07-23 05:53.