bill@ki Δημοσ. 17 Νοεμβρίου 2011 Δημοσ. 17 Νοεμβρίου 2011 Καλησπέρα, Εχω φτιάξει ενα σαιτ με δυο γλώσσες (αγγλικα,ελληνικά). Όταν πχ επιλέγω την αγγλική γλώσσα φορτώνει την αρχική σελίδα (index) του σαιτ το οποίο έχει ένα μενου. Το μενού αυτό μου δινει την δυνατότητα να μεταφέρομαι σε 6 διαφορετικές σελίδες, από τις οποίες η πρώτη στην ουσια είναι μόνο στα αγγλικά, οι άλλες θέλω να παραμένουν στα ελληνικά, ασχετα αν έχω επιλέξει την αγγλική γλωσσα. Οπότε στην ουσία όποια γλώσσα και να έχω επιλέξει η μόνη διαφοροποίηση γίνεται στην 1 από τις 6 σελίδες, οι άλλες παραμένουν πάντα στα ελληνικά. Αυτό που θέλω εγώ να κάνει ειναι, εφόσον εχω επιλέξει την αγγλική ως γλώσσα να παραμένει αυτή μεχρι να μπω στις ρυθμίσεις και να επιλέξω την ελληνική, και το αντίστροφο. Αυτό που έκανα ήταν να φτιάξω ένα δεύτερο index, ας πούμε index_en και την πρώτη (εστω) σελίδα στα αγγλικά, ωστε να μπορώ να μεταφέρομαι στη σελίδα και πίσω στην index_en. Αυτό που λογικά συμβαινει είναι αν μεταφερθώ σε μια από τις αλλες σελίδες επιστρέφοντας πίσω στην αρχική, θα επιστρέψω στην index και όχι στην index_en που θέλω εγώ εφόσον η γλώσσα που έχω επιλέξει πριν είναι η αγγλική. Εκτός από το να φτιάξω διπλές τις σελίδες μου (πράγμα άσκοπο, ίσως και ανόητο) μπορώ να κάνω κάτι άλλο; Αυτό που σκέφτηκα δεν ξέρω αν υφίσταται κιόλας είναι να γίνει με ένα σκριπτάκι. Δηλαδή κάπως έτσι: > <script type="text/javascript"> if (lang = en) { document.write("<a href='index_en.html'> </a>"); } else { document.write("<a href='index.html'> </a>"); } </script> Καταρχάς γίνεται κάτι τέτοιο σε σκριπτάκι ή υπάρχει άλλος τρόπος; Επισης δεν θα πρέπει με κάποιο τρόπο να δηλώσω σε κάθε σελίδα ποια γλώσσα έχει επιλεγεί; Ευχαριστώ εκ των προτέρων
1lj4z1 Δημοσ. 17 Νοεμβρίου 2011 Δημοσ. 17 Νοεμβρίου 2011 Καλησπέρα, Εχω φτιάξει ενα σαιτ με δυο γλώσσες (αγγλικα,ελληνικά). Όταν πχ επιλέγω την αγγλική γλώσσα φορτώνει την αρχική σελίδα (index) του σαιτ το οποίο έχει ένα μενου. Το μενού αυτό μου δινει την δυνατότητα να μεταφέρομαι σε 6 διαφορετικές σελίδες, από τις οποίες η πρώτη στην ουσια είναι μόνο στα αγγλικά, οι άλλες θέλω να παραμένουν στα ελληνικά, ασχετα αν έχω επιλέξει την αγγλική γλωσσα. Οπότε στην ουσία όποια γλώσσα και να έχω επιλέξει η μόνη διαφοροποίηση γίνεται στην 1 από τις 6 σελίδες, οι άλλες παραμένουν πάντα στα ελληνικά. Αυτό που θέλω εγώ να κάνει ειναι, εφόσον εχω επιλέξει την αγγλική ως γλώσσα να παραμένει αυτή μεχρι να μπω στις ρυθμίσεις και να επιλέξω την ελληνική, και το αντίστροφο. Αυτό που έκανα ήταν να φτιάξω ένα δεύτερο index, ας πούμε index_en και την πρώτη (εστω) σελίδα στα αγγλικά, ωστε να μπορώ να μεταφέρομαι στη σελίδα και πίσω στην index_en. Αυτό που λογικά συμβαινει είναι αν μεταφερθώ σε μια από τις αλλες σελίδες επιστρέφοντας πίσω στην αρχική, θα επιστρέψω στην index και όχι στην index_en που θέλω εγώ εφόσον η γλώσσα που έχω επιλέξει πριν είναι η αγγλική. Εκτός από το να φτιάξω διπλές τις σελίδες μου (πράγμα άσκοπο, ίσως και ανόητο) μπορώ να κάνω κάτι άλλο; Αυτό που σκέφτηκα δεν ξέρω αν υφίσταται κιόλας είναι να γίνει με ένα σκριπτάκι. Δηλαδή κάπως έτσι: > <script type="text/javascript"> if (lang = en) { document.write("<a href='index_en.html'> </a>"); } else { document.write("<a href='index.html'> </a>"); } </script> Καταρχάς γίνεται κάτι τέτοιο σε σκριπτάκι ή υπάρχει άλλος τρόπος; Επισης δεν θα πρέπει με κάποιο τρόπο να δηλώσω σε κάθε σελίδα ποια γλώσσα έχει επιλεγεί; Ευχαριστώ εκ των προτέρων Μπορεί κάθε σελλίδα ή κάθε link να στέλνει με $_GET ένα action που να του λεεί τι θέλει ή τι είναι και αντίστοιχα να εκτελείται άλλος κώδικας (για php αυτό), λογικά κάτι θα υπάρχει και σε Javascript....
bill@ki Δημοσ. 17 Νοεμβρίου 2011 Μέλος Δημοσ. 17 Νοεμβρίου 2011 Μπορεί κάθε σελλίδα ή κάθε link να στέλνει με $_GET ένα action που να του λεεί τι θέλει ή τι είναι και αντίστοιχα να εκτελείται άλλος κώδικας (για php αυτό), λογικά κάτι θα υπάρχει και σε Javascript.... Δυστυχως από php δεν γνωρίζω τίποτα. Θα με βοηθούσε κάτι κυρίως σε javascript.
1lj4z1 Δημοσ. 18 Νοεμβρίου 2011 Δημοσ. 18 Νοεμβρίου 2011 Δυστηχώς ξέρω 5 πράγματα σε Javascript και αυτά λίγα Τώρα την "μαθαίνω"...
bill@ki Δημοσ. 18 Νοεμβρίου 2011 Μέλος Δημοσ. 18 Νοεμβρίου 2011 Δυστηχώς ξέρω 5 πράγματα σε Javascript και αυτά λίγα Τώρα την "μαθαίνω"... χαχαχα. Σ'ευχαριστω φίλε οπως και να'χει για το ενδιαφερον σου!
elis88 Δημοσ. 18 Νοεμβρίου 2011 Δημοσ. 18 Νοεμβρίου 2011 Για να έχεις καλύτερο έλεγχο με τις γλώσσες θαμπορούσες να είχες ένα αρχείο για την κάθε γλώσσα, όπου εκει θα είχες τις μετφράσεις. Κι έτσι να κάνεις έλεγχο ποια γλώσσα ειναι ενεργοποιημένη και να φορτώσεις το αντιστοιχό αρχείο. Αυτό θα μπορούσε να γίνει είτε με κάποιο δικό σου τρόπο είτε χρησιμοποιόντας "po files". Po Files
bill@ki Δημοσ. 18 Νοεμβρίου 2011 Μέλος Δημοσ. 18 Νοεμβρίου 2011 Για να έχεις καλύτερο έλεγχο με τις γλώσσες θαμπορούσες να είχες ένα αρχείο για την κάθε γλώσσα, όπου εκει θα είχες τις μετφράσεις. Κι έτσι να κάνεις έλεγχο ποια γλώσσα ειναι ενεργοποιημένη και να φορτώσεις το αντιστοιχό αρχείο. Αυτό θα μπορούσε να γίνει είτε με κάποιο δικό σου τρόπο είτε χρησιμοποιόντας "po files". Po Files Αυτό για τον έλεγχο της γλώσσας δεν μπορει με κάποιο τρόπο να γίνει σε μια ολόκληρη σελίδα; Εστω πχ η example.html ειναι η αγγλική μου σελίδα, δεν γίνεται καπως να το δείξω αυτό; Ωστε μετα να μπορω να το ελέγξω. Οταν λες δικό μου τρόπο τι ακριβώς εννοείς;Θα μπορουσες να μου εξηγήσης περαιτερω; Δυστυχώς η τεχνική "po files" που μου ανέφερες ειναι κατι εντελως καινουργιο για μενα και απο λιγο που την είδα δεν κατάλαβα και πολλά.
bill@ki Δημοσ. 19 Νοεμβρίου 2011 Μέλος Δημοσ. 19 Νοεμβρίου 2011 Βρήκα αυτό παιδιά, ειναι σε javascript και php. Χρησιμοποιεί την Αγγλική και τη Γαλλική γλώσσα. Θα πρέπει να τον βάλω σε κάθε σελίδα τον κώδικα; Νομίζω πως χρησιμοποεί καποιο template το οποίο δεν μετέφερα.Το αυτούσιο σαιτ είναι: Link Switching languages To switch languages, place this Javascript in the <head> tag of your html document. > <script type="text/JavaScript"> <!-- function switchLanguage(lang) { u = location.href.split('/'); u[3] = lang; location.href = u.join('/'); } //--> </script> place this code inside the ‘body’ tag. > <a href="/en/" onclick="switchLanguage('en');return false;" title="English">EN</a> | <a href="/fr/" onclick="switchLanguage('fr');return false;" title="Français">FR</a> Or, if you prefer PHP: > <?php function switchLanguage($lang) { $u = explode('/', $_SERVER['REQUEST_URI']); $u[1] = $lang; return implode('/', $u); } ?> <a href="<? echo switchLanguage('en'); ?>" title="English">EN</a> | <a href="<? echo switchLanguage('fr'); ?>" title="Français">FR</a>
elis88 Δημοσ. 20 Νοεμβρίου 2011 Δημοσ. 20 Νοεμβρίου 2011 well αφού λοιπόν θέλεις να έχεις 1 σελίδα για την κάθε γλώσσα μπορει να γίνει με εναν έλεγχο php: Έστώ ότι η μεταβλιτη που χρησιμοποιέις για την γλώσσα ειναι η lang και η σελίδα σου έχει το λινκ λίγο η πολύ αυτό index.php?lang=en > if(isset($_GET['lang'])) { switch($_GET['lang']) { case "en": header("Location: index_en.html"); break; case "gr": header("Location: index_gr.html"); break; default: header("Location: index_en.html"); } } else { header("Location: index_en.html"); } Αυτό είναι ένα παράδειγμα... δεν χρειάζεται να μπλέξεις με javascript για κάτι τετοιο..
Uberalles_gr Δημοσ. 20 Νοεμβρίου 2011 Δημοσ. 20 Νοεμβρίου 2011 Εγώ θα σου προτείνω να χρησιμοποιήσεις php και να κάνεις το παρακάτω που είναι πολύ απλό: Αρχικά, παίρνουμε την γλώσσα με την μέθοδο GET, δηλαδή να την έχεις ορίσει πάνω στο URL Π.χ. index.php?page=1&po=12&lang=gr > $lang = "gr"; //Αρχική τιμή if(isset($_GET['lang'])) //Εάν έχει οριστεί { $lang = $_GET['lang']; } έχεις 2 αρχεία το gr.php και το en.php. Εάν έχεις 10 γλώσσες θα έχεις 10 αντίστοιχα αρχεία. Το gr.php είναι της μορφής > define("DFN_HOME","Αρχική"); και το en.php είναι > define("DFN_HOME","Home"); δες λίγο πως συντάσσονται το define είναι απλό. Έτσι, για κάθε γλώσσα θα κάνουμε Include το αντίστοιχο αρχείο > include($lang.".php"); με την προϋπόθεση ότι τα lang θα έχουν τιμές "gr" και "en", έτσι δηλαδή όπως έχουμε πει και τα αρχεία. και μετά έχεις μία σελίδα ας την πούμε index.php όπου γράφεις > ... <a href="index.php" title="<?php echo DFN_HOME; ?>"><?php echo DFN_HOME; ?></a> ... Έτσι το αποτέλεσμα είναι εάν βλέπεις το αγγλικό να λέει Home εάν εάν βλέπεις το ελληνικό να βλέπεις Αρχική, δηλαδή ότι έχουμε ορίσει το DFN_HOME. Τώρα άσε την javascript δεν σου κάνει σε αυτό που θες
1lj4z1 Δημοσ. 20 Νοεμβρίου 2011 Δημοσ. 20 Νοεμβρίου 2011 Αυτό έλεγα και πρίν άλλα δεν έδωσα κώδικα, επίσης μπορείς να χρησιμοποιήσεις Ternary Operator...
bill@ki Δημοσ. 21 Νοεμβρίου 2011 Μέλος Δημοσ. 21 Νοεμβρίου 2011 Ευχαριστώ για τις απαντήσεις σας παιδια, αλλά για να πω την αλήθεια ψιλομπερδεύτικα. και εξηγούμε: Φίλε @ Uberalles_gr επειδη με την php δεν ειχα καμια επαφή μέχρι στιγμής εχω καποιες απορίες. Καταρχάς μπορω να συνδυασω αρχεια .php & .html χωρίς πρόβλημα έτσι; Γιατί ολες οι σελίδες μου ειναι html. Το παρακάτω σκριπτακι, δεν κατάλαβα τι εννοεις ότι πρεπει να το ορίσω πάνω στο URL. Να βάλω το σκριπτάκι στο body της κάθε σελίδας που θέλω να ελέγχει; > <?php $lang = "gr"; //Αρχική τιμή if(isset($_GET['lang'])) //Εάν έχει οριστεί { $lang = $_GET['lang']; } ?> Γενικά έχω χάσει το μπούσουλα το που πρέπει να δηλώσω τι. Το define και το include θα τα δηλώσω σε όλες τις σελίδες μου, τόσο τις gr όσο και τις en; Αυτό που θέλω να κάνω είναι όταν επιλέγω την αγγλική γλώσσα στην ουσία μπορεί μια σελίδα μου να ειναι αγγλική, αλλα θέλω να μεταφέρομαι και στις άλλες τις ελληνικές χωρίς να αλλάζει η επιλογή "αγγλικά" και μόνο όταν πηγαίνει ο χρήστης και επιλέγει "ελληνικά". Αρα αυτό δεν προυποθέτει να διπλασιάσω τις σελίδες μου τις ελληνικές, απλα μία να τις χρησιμοποιώ με την αγγλική γλώσσα και μια με την ελληνική; κάπου το έχασα
Uberalles_gr Δημοσ. 21 Νοεμβρίου 2011 Δημοσ. 21 Νοεμβρίου 2011 Άκου τι θα κάνεις για να το καταλάβεις καλύτερα. Φτιάχνουμε μία σελίδα, την test.php ας πούμε και παρακάτω είναι ο κώδικας της test.php > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <?php $lang = "gr"; //Αρχική τιμή if(isset($_GET['lang'])) //Εάν έχει οριστεί { $lang = $_GET['lang']; } include($lang.".php"); ?> <div><a href="index.php?lang=gr" title="<?php echo DFN_GR_LANG; ?>"><?php echo DFN_GR_LANG; ?></a></div> <div><a href="index.php?lang=en" title="<?php echo DFN_EN_LANG; ?>"><?php echo DFN_EN_LANG; ?></a></div> </body> </html> Αυτό που σου είπα ότι πρέπει να ορίσεις το lang Πάνω στο URL (μέθοδο $_GET) γίνεται στην παρακάτω γραμμή κώδικα > <a href="index.php?lang=gr"> Δηλαδή θα καλέσεις την index.php, με παράμετρο την μεταβλητή lang που θα έχει τιμή gr. Θα μπορούσε να είναι και έτσι > <a href="index.php?lang=gr&po=1&type=contact"> δηλαδή να περάσω πολλές περισσότερες παραμέτρους(η πρώτη παράμετρο την περνάμε με ? ενώ τις υπόλοιπες με & εάν το παρατηρήσεις) Μετά θα φτιάξεις 2 αρχειάκια, το gr.php με κώδικα > <?php define("DFN_GR_LANG","Ελληνικά"); define("DFN_EN_LANG","Αγγλικά"); ?> και το 2ο αρχείο είναι το en.php με κώδικα > <?php define("DFN_GR_LANG","Greek"); define("DFN_EN_LANG","English"); ?> Τα 2 αρχεία θα περιέχουν όλα τα define που θα χρησιμοποιήσουμε. Έτσι δεν χρειάζεται να έχεις 2 test.php αλλά μία. Δηλαδή δεν θα έχεις την test_gr.php και την test_en.php ΑΛΛΑ ΜΟΝΟ την test.php Στον παραπάνω κώδικα που σου έγραψα θα πρέπει όλα τα αρχεία να είναι στον ίδιο φάκελο.
bill@ki Δημοσ. 22 Νοεμβρίου 2011 Μέλος Δημοσ. 22 Νοεμβρίου 2011 Φιλε μου όλα καλα με τον κώδικα, αλλά έχω το εξής πρόβλημα τώρα. Απο το μενου πχ rithmiseis.php (όπου έβαλα τον κώδικα που έχεις στο test.php) επιλέγω τη γλώσσα που θέλω gr/en. Στην συνέχεια με πηγαίνει στη σελίδα index.php. Εκει ξεκινάει το πρόβλημα μου. Από την index.php πατώντας μία εικόνα πρέπει να μεταφέρομαι τόσο στο en.php όσο και στο gr.php ανάλογα με την επιλογή που εκανα στο rithmiseis.php! Αυτό μπορεί να γίνει με μία if; Δηλαδή κάπως έτσι το σκέφτομαι > <?php if (lang=="gr") { <a href="gr.php" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image16','','images/rollover/rollover_r2_c2_s1.jpg',1)"><img src="images/original/orig_r2_c2_s1.jpg" name="Image16" width="112" height="66" border="0" id="Image16" /></a> else <a href="en.php" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image16','','images/rollover/rollover_r2_c2_s1.jpg',1)"><img src="images/original/orig_r2_c2_s1.jpg" name="Image16" width="112" height="66" border="0" id="Image16" /></a> } ?> Αλλά έχω πρόβλημα με την εικόνα. Με διάφορες αλλαγές που έκανα ή θα με πήγαινε μόνο στην gr.php και θα αγνοούσε την άλλη άσχετα με το τι επέλεξα από το rithmiseis.php , ή θα με πήγαινε στην en.php αγνοώντας την άλλη επιλογή.
Uberalles_gr Δημοσ. 22 Νοεμβρίου 2011 Δημοσ. 22 Νοεμβρίου 2011 Δεν κατάλαβα ποιο είναι το πρόβλημα σου αλλά μάλλον δεν έχεις καταλάβεις πλήρως πως μπορείς να χρησιμοποιήσεις το define έτσι όπως το περιέγραψα πριν. Εάν επιλέξεις Ελληνικά θα φορτώσεις το gr.php Εάν επιλέξεις Αγγλικά θα φορτώσεις το en.php Το τι θα έχει μέσα το κάθε αρχείο το ορίζεις εσύ. Μπορεί να είναι από απλά κείμενα, μέχρι εικόνες, javascript, ότι θελήσεις και σκεφτείς. Για να "φορτώσεις" τα αρχεία το κάνεις με το include της php. Ο κώδικας που έγραψες παραπάνω σε μία γραμμή ΑΝ ΚΑΙ ΔΕΝ ΕΧΩ ΚΑΤΑΛΑΒΕΙ ΤΙ ΘΕΣ ΝΑ ΚΑΝΕΙΣ > <a href="<?php echo $lang.".php"; ?>" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image16','','images/rollover/rollover_r2_c2_s1.jpg',1)"><img src="images/original/orig_r2_c2_s1.jpg" name="Image16" width="112" height="66" border="0" id="Image16" /></a>
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα