Αυτόματη αναγνώριση γλώσσας

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
nastis
Δημοσιεύσεις: 124
Εγγραφή: 16 Φεβ 2005 16:28
Επικοινωνία:

Αυτόματη αναγνώριση γλώσσας

Δημοσίευση από nastis » 08 Οκτ 2006 22:03

@aguila21
Στην περίπτωση που θα χρησιμοποιήσεις λύση redirect (header("Location index.el.php")) θα το βάλεις ολομόχανο, με καθόλου html τι θα πείς σαμπως στο υπόλοιπο, αφού πας για redirect.

Στο καθένα από τα άλλα files που ρώτησες τον panosru, δεν χρειάζεται να βάλεις τίποτα.
Αφού έχει επιλεγεί για εσένα η γλώσσα πλέον. Από εκεί και πέρα θα βρείς ένα τρόπο που θέλεις να μεταφέρεις την πληροφορία της γλώσσας. πχ. session

Μην ξεχάσεις να δίνεις στον χρήστη επιλογή πάντα να μπορεί να αλλάξει την γλώσσα. Γιατί δεν είναι όλοι οι $_SERVER['HTTP_ACCEPT_LANGUAGE']=="en" που θέλουνε να διαβάζουνε το site σου στα Αγγλικά επειδή το λέει o client τους.

Φιλικά
Β.
Τελευταία επεξεργασία από το μέλος nastis την 09 Οκτ 2006 01:05, έχει επεξεργασθεί 1 φορά συνολικά.
www.oktonia.com - Παγκόσμιο Χωριό Γνώσης Λυμένα Θέματα Εξετάσεων - Ασκήσεις

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Αυτόματη αναγνώριση γλώσσας

Δημοσίευση από panosru » 08 Οκτ 2006 23:27

den exei problhma na perasei h variable
apo thn stigmh pou ginete redirect se allh selida apla tha douleyei s' ayth thn selida.

nastis
Δημοσιεύσεις: 124
Εγγραφή: 16 Φεβ 2005 16:28
Επικοινωνία:

Αυτόματη αναγνώριση γλώσσας

Δημοσίευση από nastis » 09 Οκτ 2006 01:02

@panosru
ναι μάλλον δεν το είπα καλά, εννοούσα από εκεί και πέρα, αφού φτάσει στην index.en.php και θέλει να πλοηγείτε σε άλλες σελίδες "εκτός" αυτής
και όχι πως θα την μεταφέρει την πληροφορία από το index.php στην index.en.php

[βέβαια υπάρχει και το ενδεχόμενο να την έχει σαν base page και όλα να γίνονται included απο εκεί :-? αλλά τώρα νομίζω τον (aguila21) μπλέκουμε ]

mea culpa

Β.
www.oktonia.com - Παγκόσμιο Χωριό Γνώσης Λυμένα Θέματα Εξετάσεων - Ασκήσεις

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Αυτόματη αναγνώριση γλώσσας

Δημοσίευση από panosru » 09 Οκτ 2006 02:04

kai na mhn thn exei os base page pali den brhsko pou einai to problhma..

aguila21
Honorary Member
Δημοσιεύσεις: 3510
Εγγραφή: 30 Απρ 2003 21:44
Επικοινωνία:

Αυτόματη αναγνώριση γλώσσας

Δημοσίευση από aguila21 » 09 Οκτ 2006 07:44

Λοιπόν,θα ήταν καλύτερα να το απλοποιήσουμε το θέμα,ώστε να μην μπερδεύονται οι άσχετοι όπως εγώ!

Θα φτιάξω ένα αρχείο με τον κώδικα,και θα το αποθηκεύσω με οποιοδήποτε ονομα.php και θα το ανεβάσω στον server.Εκεί θ'ανεβάσω τις 3 σελίδες html με τις γλώσσες που θέλω.

Σωστά αυτά; :)

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Αυτόματη αναγνώριση γλώσσας

Δημοσίευση από Rapid-eraser » 09 Οκτ 2006 11:00

Stov kodika tou panosru prepei va mpei kai eva defult case se periptosi pou gia kapoio logo dev eivai dia8esimo to sigkekrimevo var.

Κώδικας: Επιλογή όλων

<?php

switch &#40;$_SERVER&#91;'HTTP_ACCEPT_LANGUAGE'&#93;&#41;
&#123;
   case 'el'&#58;
      header&#40;"Location index.el.php"&#41;;
      break;
      
   case 'en'&#58;
      header&#40;"Location index.en.php"&#41;;
      break;
      
   case 'ru'&#58;
      header&#40;"Location index.ru.php"&#41;;
      break;      

   default&#58;
      header&#40;"Location index.en.php"&#41;;

&#125;

?> 

Egw pavtos pistebw oti ta pollapra arxeia eivai poli extra douleia idios otav xriasteis va allakseis sto grafiko kati ase pou sivi8os bariese va evimeroseis sto telos tis ipolipes glosses kai katavtas va exeis mia glossa.

Egw sivi8os sta divamika sites exo mia selida kai pavo se afti elegxo mia metabliti me ari8mitiki timi 1-2-3-4 aka avalogos tnv glosa , kai se sivdiasmo me arrays periexomevou allazo ka8e fora to ouput pou xriazete.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Αυτόματη αναγνώριση γλώσσας

Δημοσίευση από panosru » 09 Οκτ 2006 15:10

Rapid-eraser έγραψε:ase pou sivi8os bariese va evimeroseis sto telos tis ipolipes glosses kai katavtas va exeis mia glossa.
xaxaxaxa oraio ayto!

Thanks gia thn parathrhsh gia to default ontos xreiazete.

Ego synithos otan ftiaxno multilanguage sites exo kapoia arxeia me ola tis lekseis ktl se style px: define('SEND','Αποστολή'); kai ta apothikeyo se arxeia tou style /lang/el.php ktl kai me ena switch-aki kano to analogo arxeio include opote tzi tzi! :D

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

Αυτόματη αναγνώριση γλώσσας

Δημοσίευση από mrpc » 09 Οκτ 2006 19:14

Υπάρχουν πολλοί τρόποι. Όμως καλό είναι αν η επιλογή γίνεται αυτόματα, να υπάρχει και η δυνατότητα αλλαγής από τον χρήστη για την γλώσσα.
Η λύση του redirect σε άλλο αρχείο είναι καλό για το crawling. Γιατί αν π.χ. έχουμε ένα index.php το παίρνει μια μεταβλητή, π.χ. index.php?lang=greek, αλλά μετά στα υπόλοιπα url η γλώσσα δεν φαίνεται ξεκάθαρα (αν π.χ. η μεταβλητή μετά αποθηκεύεται σε cookie), το google θα θεωρεί ότι όλα τα υπόλοιπα links τα έχει ξαναεπισκεφτεί. Έτσι θα κάνει crawl την αρχική σελίδα σε όλες τις γλώσσες, αλλά όλο το υπόλοιπο site μόνο σε μια.
Αυτό βέβαια είναι ανάλογα με την περίπτωση και διορθώνεται εύκολα, αλλά ας το υπολογίζουμε, είναι χρήσιμο.

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Αυτόματη αναγνώριση γλώσσας

Δημοσίευση από cpulse » 09 Οκτ 2006 22:10

Και μια ακόμα βελτίωση από μένα..

Κώδικας: Επιλογή όλων

<?php

switch &#40;$_SERVER&#91;'HTTP_ACCEPT_LANGUAGE'&#93;&#41;
&#123;
   case 'el'&#58;
      header&#40;"Location index.el.php"&#41;;
      break;
      
   case 'en'&#58;
      header&#40;"Location index.en.php"&#41;;
      break;
      
   case 'ru'&#58;
      header&#40;"Location index.ru.php"&#41;;
      break;      

   default&#58;
      $handled = false;
      if &#40;preg_match&#40;'/\.&#40;&#91;a-z&#93;&#123;2&#125;&#41;$/i', gethostbyaddr&#40;$_SERVER&#91;'REMOTE_ADDR'&#93;&#41;, $m&#41;&#41; &#123;
          $handled = true;
          switch &#40;strtolower&#40;$m&#91;1&#93;&#41;&#41; &#123;
              case 'gr'&#58;
                  header&#40;"Location index.el.php"&#41;;
                  break;

              case 'ru'&#58;
                  header&#40;"Location index.ru.php"&#41;;
                  break;
      
              default&#58;
                  $handled = false;
          &#125;
      &#125;
      if &#40;!$handled&#41; header&#40;"Location index.en.php"&#41;;
&#125;

?> 
Αν δεν υπάρχει το HTTP_ACCEPT_LANGUAGE ψάχνει να βρεί άκρη από το DNS του χρήστη.. αν δεν βρεί καταλήγει στα αγγλικά.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Αυτόματη αναγνώριση γλώσσας

Δημοσίευση από dva_dev » 10 Οκτ 2006 15:25

Εχω την εντύπωση ότι το HTTP_ACCEPT_LANGUAGE μπορεί να επιστρέψει πάνω από 1 γλώσσες (comma separated).

Οπότε τίθεται ένα πρόβλημα: Θα εμφανίζεις το site με βάση το ποιά γλώσσα είναι η πρώτη στο string (α) ή θα αποφασίζεις εσύ (β) από τις γλώσσες που έχει το string ποιά θα είναι η πρώτη και ποιά η δεύτερη.

Δηλαδή αν έχεις 2 επισκέπτες και τα strings που παίρνεις είναι "en-us,fr" και "fr,en-us" τι θα κάνεις;
(α) για τον πρώτο θα βγάλεις αγγλική σελίδα και για τον δεύτερο γαλλική;
(β) Θα ελέγξεις αν υποστηρίζουν αγγλικά οπότε θα βγάλεις και στους δύο αγγλική σελίδα (και σε κανέναν γαλλική), αν δεν υποστηρίζουν αγγλικά θα ελέγξεις για γαλλική (οπότε θα βγάλεις σε όλους γαλλική, κ.λπ...

language codes

Άβαταρ μέλους
papatzas
Δημοσιεύσεις: 227
Εγγραφή: 03 Δεκ 2005 14:23

Αυτόματη αναγνώριση γλώσσας

Δημοσίευση από papatzas » 25 Ιαν 2007 17:29

Κώδικας: Επιλογή όλων

<?php

$files = array&#40; 1=>'lang.en.php',  
                      2=>'lang.el.php',  
                      3=>'lang.ger.php' &#41;;

$ln = intval&#40; $_GET&#91;'ln'&#93; &#41;;

if&#40; !$ln &#41;
&#123;
	switch &#40;$_SERVER&#91;'HTTP_ACCEPT_LANGUAGE'&#93;&#41;
	&#123;
	   case 'el'&#58;
	      $ln = 2;
	      break;
	     
	   case 'en'&#58;
	       $ln = 1;
	      break;
	     
	   case 'de'&#58;
	       $ln = 3;
	      break;     
	
	   default&#58;
	      $handled = false;
	      
	      if &#40;preg_match&#40;'/\.&#40;&#91;a-z&#93;&#123;2&#125;&#41;$/i', gethostbyaddr&#40;$_SERVER&#91;'REMOTE_ADDR'&#93;&#41;, $m&#41;&#41; 
		  &#123;	   
	          $handled = true;
	          
	          switch &#40;strtolower&#40;$m&#91;1&#93;&#41;&#41; 
			  &#123;
	              case 'gr'&#58;
	                  $ln = 2;
	                  break;
	
	              case 'de'&#58;
	                   $ln = 3;
	                  break;
	     
	              default&#58;
	                  $handled = false;
	          &#125;
	      &#125;
	      
	      if &#40;!$handled&#41; 
		 $ln = 1;
	&#125;
&#125;
elseif&#40;$ln<1 || $ln>3&#41;
&#123; 
	$ln = 1; 
&#125;


include&#40;$files&#91;$ln&#93;&#41;;

?> 

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες