Come da titolo :)
Come da titolo :)
cosa ti interessa di preciso?
io il metodo più semplice che uso è questo:
1) riconosco la lingua dell'utente tramite questo codice:
2) carico il file di linguaggio per quella lingua:Codice://lingue supportate $lang_supported[] = "it"; $lang_supported[] = "en"; $lang_supported[] = "us"; $lang_supported[] = "de"; //lingua di default $lang_default = "it"; //controllo lingua solo se l'utente non ha già settata una prima if(!isset($lang)){ $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE']; $lang = explode(",",$lang); $lang1 = explode("-",$lang['0']); $lang1 = strtolower("".$lang1['0']); $lang2 = explode("-",$lang['1']); $lang2 = strtolower("".$lang2['0']); if(in_array($lang1, $lang_supported)) $lang = $lang1; elseif(in_array($lang2, $lang_supported)) $lang = $lang2; else $lang = $lang_default; } //fine controllo lingua
il file che includo contiene costanti tipoCodice://includo file di linguaggio if(!in_array($lang, $lang_supported)) $lang = $lang_default; include("lang/".$lang.".php");
che poi quando stampo a schermo ;)Codice:define("_benvenuto_", "benvenuto");
Ultima modifica di Evcz : 05-03-2005 alle ore 22.16.42
There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...
mi fai un esempio in pagine e crei un zip? :) perfavore
basta che copi-incolli il codice li sopra in una pagina .php :P
poi quando fai
echo _bevenuto_." ".$username;
ti stamperà benvenuto scritto nella lingua selezionata/rilevata ;)
There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...
perfavore :) in quel modo riesco a capirlo meglio ^_^
per esempio devo mettere tutto dentro a un unico file ma se vorrei mettere delle icone di bandiere per scegliere? cioè se mi fa il zippino lo riesco a comprendere meglio per favore :winkOLD:
Ultima modifica di ErEiSeR : 05-03-2005 alle ore 22.58.24
file index.php
file lang/it.phpCodice PHP:
<?PHP
//lingue supportate
$lang_supported = array("it","en","de");
//lingua di default
$lang_default = "it";
//controllo lingua solo se l'utente non ha già settata una prima
if(!isset($lang)){
$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$lang = explode(",",$lang);
$lang1 = explode("-",$lang['0']);
$lang1 = strtolower("".$lang1['0']);
$lang2 = explode("-",$lang['1']);
$lang2 = strtolower("".$lang2['0']);
if(in_array($lang1, $lang_supported))
$lang = $lang1;
elseif(in_array($lang2, $lang_supported))
$lang = $lang2;
else
$lang = $lang_default;
}
//fine controllo lingua
//includo file di linguaggio
if(!in_array($lang, $lang_supported))
$lang = $lang_default;
include("lang/".$lang.".php");
//stampo un messaggio che sarà tradotto da solo
echo _benvenuto_." pippo";
?>
file lang/en.phpCodice PHP:
<?PHP
define('_benvenuto_', 'benvenuto');
?>
file lang/de.phpCodice PHP:
<?PHP
define('_benvenuto_', 'welcome');
?>
poi se vuoi mettere le bandierine basta che crei un collegamento testuale che si avvii cliccando su tali bandierine che punti a :Codice PHP:
<?PHP
define('_benvenuto_', 'willkommen');
?>
lingua italiana:
index.php?lang=it
lingua inglese:
index.php?lang=en
lingua tedesca:
index.php?lang=de
etc... ;)
Ultima modifica di Evcz : 06-03-2005 alle ore 00.16.53
There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...
grazie mille :) cosi com'è si potrebbe spostare su how to :)
l'avevo pensato anch'io...
provalo e dimmi se va...
se funzia correttamente lo faccio postare anche di la ;)
There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...
allora io ho fatto cosi ho creato una cartella language dove ho messo questa index e una cartella lang con i file it en .php poi ho messo un include nella mia home tutto va bene ma se provo a richiamare il file inglese con index.php?lang=en non va... rimane sempre in ita anche se imposto en $lang_default = "en";
edit..
ci sarà un errore.. ora riguardo..
strana come cosa... ora lo provo in locale ;)
risolto...
era un typo :D
nell'ultima riga di index.php
al posto di _bevenuto_ ci va _benvenuto_
ora modifico il post sopra ;)
Ultima modifica di Evcz : 06-03-2005 alle ore 00.15.16
There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...
no quello lo avevo gia modificato ma non me lo cambia lo stesso
questo è quello che ho appena provato in locale e sembra funzionare...
http://evcz.altervista.org/files/lang.zip
provalo e fammi sapere ;)
There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...
alur ecco era un mio problema lo caricato su altervista è va tutto bene qui in locale su easyphp niente da fare :(
mmm... strano che non vada... ti è sempre funzionato tutto bene in locale???...
hai attivato le register_globals?
There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...
nn so ho installato l'easy apposta per non rompermi con ste cose :D
cmq adesso ho uppato tutto qui http://amd.altervista.org/ereiser
Adesso il problema sta nel fatto che se clicco sulla bandierina english mentre sto nella pagina http://amd.altervista.org/ereiser/in...agina=contatti mi rimanda all'index e traduce solo la main
Ultima modifica di ErEiSeR : 06-03-2005 alle ore 01.38.18
help me :)
in ogni link adesso oltre a passare pagina=blablabblaOriginalmente inviato da ErEiSeR
devi passare anche &lang=en
o quello che vuoi!
altrimenti ogni volta si dimentica la lingua! :P
There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...
uahaua ma tu sei un genio :D ( io meno asd)
ma se voglio fare il discorsso della bandierina che link devo mettere? O_o
cio all'inizio è IT ma per fare in modo che da ogni pagina posso tradurla?
(quel sito l'ho assemblato con l'aiuto di 6000 persone aauauh)
Ultima modifica di ErEiSeR : 06-03-2005 alle ore 13.23.08
i link li fai tipo
;)Codice PHP:
echo "index.php?pagina=contatti&lang=".$lang;
There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...
scusate se mi intrometto, ma nei file della lingua, poi bisogna tradurre tutte le parole...giusto?
si....
parole o anche frasi complete ;)
There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...
perfetto ma cosi sarebbe meglio farla scegliere all'inizio la lingua tipo faccio una intro con la selezione :) cmq grazie per avermi aiutato in queto mio problema sei stato un grande se hai msn o icq mi piacerebbe aggiungerti alla mia contact list (magari me li mandi per pm) :)
ops ho sbagliato
Ultima modifica di ErEiSeR : 06-03-2005 alle ore 20.11.55
scusate,
sono totalmente nuovo di php.
Ho seguito il tutorial e sono riuscito a creare una
base per un sito multilingua, ma non sono
capace a linkare le pagine.
Potete spiegarmi dettagliatamente come si fa il link?
grazie e scusate l'ignoranza... :sadOLD:
ragazzi... piccolo addendum: la variabile HTTP_ACCEPT_LANGUAGE non mi viene rilevata con mozilla firefox v.1.0.6. Ora non sono così esperto da poter dire "succede in ogni mozilla" però intanto io riscriverei così la funzione così in attesa di conferme da qualcuno più esperto.
Codice:<? if (!isset($lang)) { $usr_info = $_SERVER[HTTP_ACCEPT_LANGUAGE]; if (strpos($usr_info, "MSIE")) { /* codice di evcz */ $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE']; $lang = explode(",",$lang); $lang1 = explode("-",$lang['0']); $lang1 = trim(strtolower("".$lang1['0'])); $lang2 = explode("-",$lang['1']); $lang2 = trim(strtolower("".$lang2['0'])); if(in_array($lang1, $lang_supported) && ($lang1 != "")) $lang = $lang1; elseif(in_array($lang2, $lang_supported) && ($lang1 != "")) $lang = $lang2; else $lang = $lang_default; } else if (strpos($usr_info, "Gecko")) { $lang = explode(";", $usr_info); $lang = explode("-", $lang[3]); // sarà sempre 3 su ogni Gecko-based browser? $lang = trim(strtolower($lang[0])); if (!in_array($lang, $lang_supported) || ($lang == "")) { $lang = $default_lang; } } } ?>
Ultima modifica di express : 13-09-2005 alle ore 03.17.27
http://express.altervista.org
Dato un lavoro, si possono scegliere due sole delle seguenti caratteristiche: veloce, economico, di qualità.
Così capita che se un lavoro è veloce ed economico non sarà di qualità; se è veloce e di qualità non sarà economico; se è economico e di qualità non sarà veloce.
ho anche pensato alla possibilità dell'uso di javascript ma (apparte il fatto che funzionerebbe con browser javascript enabled) non ho la minima idea di come far utilizzare un risultato di javascript su php. Qualcuno mi da una mano?
btw la variabile che ci interessa è:
navigator.language;
un altra interessante alternativa sarebbe potuta essere di fare il probing in base all'impostazione del valore sulla moneta corrente, ma... MANNAGGIA ALL'EURO
http://express.altervista.org
Dato un lavoro, si possono scegliere due sole delle seguenti caratteristiche: veloce, economico, di qualità.
Così capita che se un lavoro è veloce ed economico non sarà di qualità; se è veloce e di qualità non sarà economico; se è economico e di qualità non sarà veloce.