Linux.GR με πολυγλωσσικό σύστημα (was Re: Multilanguage system)
DJ Art
djart at linux.gr
Tue May 21 11:40:01 EEST 2002
είχε έρθει πρίν από μερικές μέρες ένα e-mail στο webmaster at linux.gr και
ζητούσε να του δώσω τον κώδικα για το πολυγλωσσικό σύστημα που
χρησιμοποιεί το www.linux.gr.
μια που έκανα τον κόπο να του γράψω λεπτομερή απάντηση, σας το κάνω
forward για να μείνει στα archives (σε περίπτωση που κι άλλοι θέλουν να
δούν κώδικα).
εξάλλου, έχω σκοπό κάποια στιγμή να διαθέσω τον κώδικα του www.linux.gr
σε tarball, (π.χ. όπως τα διάφορα site-engines, όπως το phpnuke κ.α.).
κάποια στιγμή :) για να γίνει αυτό πρέπει να σουλουπώσω λίγο τον κώδικα
και να κάνω σε global μεταβλητές κάποια πράγματα (όπως τα χρώματα του
site), ώστε να μπορεί να χρησιμοποιηθεί για generic use.
---------- Forwarded Message ----------
Subject: Re: Multilanguage system
Date: Tue, 21 May 2002 11:26:43 +0300
On Monday 20 May 2002 14:58, you wrote:
> Γεια σας!
>
> Η σελιδα σας ειναι πολύ καλή και είμαι πολύ συχνός επισκέπτης της
>
> Φτιάχνω κι εγώ μια σελίδα για ενα project για Linux και θα ήθελα αν
> γίνεται να μου στείλετε τον κώδικα για την αυτόματη επιλογή της
> γλώσσας.
λοιπόν, το multilanguage, γίνεται με cookie. στο αρχικό .php πάνω πάνω
(πρίν το <html>, κάθε cookie exchange πρέπει να γίνεται πρίν τους html
headers μιας σελίδας), έχω:
//These defines are not random. They are based on the $langid.
// Carefull!
define ("GREEK", 0);
define ("ENGLISH", 1);
//Cookie for multi-language system
//We are using 3 variables:
// lang is the cookie name
// changelang is provoking the creation or change of the cookie
// language is a global string variable that contains the same value as
//lang
//Later on, we define a language id variable that gets its value
//through $language
if ( $changelang == "english" || $changelang == "greek") {
setcookie ("lang", $changelang, mktime (date("H"),date("i"),date("s"),
date("m"), date("d"), date("Y")+1));
$language = $changelang;
}
else {
if ( $lang == "english" || $lang =="greek" )
$language = $lang;
else
$language = "greek";
}
//Now we define an id for each language in case we want to extend this
//to more languages
//The id is needed for the global strings and for the classes
switch($language){
case "greek": $langid = 0; break;
case "english": $langid = 1; break;
default: $langid = 0; break;
}
// end of plain cookie exchange :-)
μέχρι εδώ, κοιτάμε να πάρουμε την προτίμηση του χρήστη στη γλώσσα (ώστε
το site να θυμάται τί έχει διαλέξει ο χρήστης), και αν ο χρήστης δεν
είχε διαλέξει ποτέ, ούτε καν κάνουμε τον κόπο να του στείλουμε cookie,
απλά έχουμε σαν default τα ελληνικά.
με βάση λοιπόν, το $langid, κάθε φράση, λέξη ή παράγραφος (ή άρθρο κλπ)
που θέλω να εμφανίσω στην σελίδα, είναι ένας πίνακας με δύο στοιχεία,
δηλαδή το "καλώς ήρθατε", είναι πίνακας και έχει ως εξής:
$welcome[GREEK]="Καλώς ήρθατε";
$welcome[ENGLISH]="Welcome";
ε, τώρα εγώ στη σελίδα τυπώνω τη μεταβλητή $welcome[$langid], οπότε
ανάλογα με το cookie και το if condition που υπάρχει εκεί στο cookie
exchange, τυπώνω είτε το ελληνικό κείμενο ή την αγγλική εκδοχή.
και μάλιστα, με αυτόν τον τρόπο, μπορεί κανείς να προσθέσει άνετα όσες
γλώσσες θέλει.
--
Kyritsis Athanasios <djart at hellug.gr>
Studying Electrical & Computer Engineering
@ Univ. of Patras, Greece
-------------------------------------------------------
--
Kyritsis Athanasios <djart at hellug.gr>
- What's your ONE purpose in life ?
- To explode, of course! ;-)
More information about the Linux-greek-users
mailing list