![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 275 Pomógł: 9 Dołączył: 24.07.2008 Skąd: Racibórz Ostrzeżenie: (10%) ![]() ![]() |
Witam mam pytanie jak zrobić taki wybór języka jak na tej stronie:
http://og-servers.net/index.html czyli są 3 flagi i jak się klikne na np. angielska to jest taki link: http://og-servers.net/index.php?modul=language&lang=en na chwile a potem znów zmienia się na index.php i jest po angielsku próbowalem robić tak: <?php if ($_GET[lang] == "eng") { echo " tu tekst języka angielskiego "; } else if ($_GET[lang] == "de") { echo "tu niemieckiego"; } else { echo "tu po polsku"; } ?> ale ten sposób jakoś mi się nie spodobał bo chce miec tak jak wyzej napisalem ze jak się kliknie w np.: <a href="http://www.costam.pl/index.php?modul=language&lang=en"><img src="flagade.jpg"></a> to wybierze mi język i odswierzy się do adresu index.php ale juz z tym wybranym językiem nie wiem czy dobrze opisałem bo nie wiem jak to opisać dodam że jestem troche zielony a jest mi to potrzebne Ten post edytował dk1342 7.10.2008, 18:37:56 -------------------- Firefox - The Best,
Internet Exokier - shit |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Sposobów jest sporo, dla przykładu:
Masz wersje językowe artykułów (w bazie, pliku - bez znaczenia) z określeniem języka w którym zostały napisane. Klikając w link wywołujesz skrypt, który zapisuje w sesji jaki język został wybrany (i przekierowuje z powrotem na poprzednią stronę) a skrypt odpowiedzialny za pobieranie danych do wyświetlenia pobiera te, których żąda użyszkodnik (dany artykuł) oraz wersję językową zapamiętaną w sesji. Jednocześnie trzeba okreslić który język jest domyślnym, używanym gdy stosowna zmienna sesyjna jest pusta... Kod Oferta/Product1 - w wersji polskiej Oferta/Product1 - w wersji angielskiej etc. Mają wspólny identyfikator zawartości, różny identyfikator języka Przykładowa realizacja w bazie danych: Kod Tabela Artykuły -------------------- id [pk - czyli unikalny] nazwa [jakies tam pola zawartosci] tresc [jakies tam pola zawartosci 2] jezyk_id [fk z tabeli jezyki] tresc_id [powtarzalny w ramach zawartosci, np 1 dla danej strony w PL i 1 dla danej strony w EN, 2 dla drugiej strony w PL i 2 dla drugiej strony w EN etc] Tabela Języki ---------------------- id jezyk Gdy decydujesz (request) jaki artykuł (=stronę) wyświetlić bierzesz pod uwagę nie unikalne id z tabeli artykułów (PK) tylko tresc_id oraz jezyk_id Zamiast osobnej tabeli języków i stosowania klucza obcego, w prostych serwisach można wstawić w tabeli artykuły "identyfikator" tekstowy (np 'pl', 'en' etc) Ten post edytował drPayton 7.10.2008, 20:26:56 |
|
|
![]()
Post
#3
|
|
![]() Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Przede wszystkim-nie ładuj od razu treści we wszystkich językach.
Przygotuj sobie pliki dla każdego języka w takiej np. postaci: Kod pl_lang.php: <?php //polski define(TYTUL , 'Moja strona'); define(WSTEP, 'Czesc, witam na moje stronie bla bla bla...'); ... ?> en_lang.php: <?php //angielski define(TYTUL , 'My homepage'); define(WSTEP, 'Hello everybody and welcome on my homepage blah blah blah...'); ... ?> i tak dla każdego języka. Nastepnie, tam, gdzie masz menu i klikasz we flagi, robisz sobie odnosniki na tych flagach: - na polskiej: index.php?lang=pl - na angielskiej: index.php?lang=en itd. Nastepnie, w index.php, robisz sobie tak: Kod <?php $avaiable_langs = array('pl','en'); //tabela z dostepnymi jezykami $lang = substr($_GET['lang'],0,2) //wycinasz dwie pierwsze literki ze zmiennej lang, to na wypadek, gdyby ktos probowal Ci cos tam przeslac getem if (in_array($avaiable_langs, $lang) { // w tym warunku inkludujesz wybrany jezyk include_once($lang.'_lang.php'); } else { include_once('pl_lang.php'); } // dalsza czesc strony: <title><?php echo TITLE; ?></title> <body> <?php echo WSTEP; ?> /// ... cala reszta tresci .... </body> No i tyle. -------------------- Life's simple... You make choices and don't look back...
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Sposób podany przez @blooregard stosuje się do wersji językowych interfejsu graficznego, to co ja napisałem - do zawartości, w praktyce potrzebne Ci i jedno i drugie
![]() Chyba, że serwis jest malutki, wówczas faktycznie pliki językowe wystarczają... Tak czy siak @blooregard zapomniał o zapisaniu wyboru do sesji. Jeśli tego nie zrobisz będziesz musiał zmienną określającą język cały czas trzymać w adresie... Ten post edytował drPayton 7.10.2008, 20:38:00 |
|
|
![]()
Post
#5
|
|
![]() Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Cytat Sposób podany przez @blooregard stosuje się do wersji językowych interfejsu graficznego, to co ja napisałem - do zawartości, w praktyce potrzebne Ci i jedno i drugie Chyba, że serwis jest malutki, wówczas faktycznie pliki językowe wystarczają... Racja. Treści generowane dynamicznie też pobieram z bazy. Sposób opisany przeze mnie odnosi się do treści statycznych. Tak jest reaizowany m.in. w osCommerce. Cytat Tak czy siak @blooregard zapomniał o zapisaniu wyboru do sesji. Jeśli tego nie zrobisz będziesz musiał zmienną określającą język cały czas trzymać w adresie... Druga racja. $lang trzymaj w sesji i tylko sobie na początku index.php sprawdzaj, czy czasem nie przyjdzie z GET jakis inny (może sie przecież zdarzyć że ktoś zmieni wersję językową serwisu w trakcie odwiedzin). Ten post edytował blooregard 7.10.2008, 20:41:46 -------------------- Life's simple... You make choices and don't look back...
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 275 Pomógł: 9 Dołączył: 24.07.2008 Skąd: Racibórz Ostrzeżenie: (10%) ![]() ![]() |
sposób od blooregard mi sie podoba bo to b. malutka strona
sry ja troche zielony ![]() ![]() cytat: Tak czy siak @blooregard zapomniał o zapisaniu wyboru do sesji. Jeśli tego nie zrobisz będziesz musiał zmienną określającą język cały czas trzymać w adresie... -------------------- Firefox - The Best,
Internet Exokier - shit |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Z sesją:
Nie najpiękniejsza, ale prosta i czytelna metoda ![]() Ten post edytował drPayton 8.10.2008, 13:57:45 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 275 Pomógł: 9 Dołączył: 24.07.2008 Skąd: Racibórz Ostrzeżenie: (10%) ![]() ![]() |
mam taki komunikat:
Pętla przekierowań Firefox wykrył, że serwer przekierowuje żądanie tego zasobu w sposób uniemożliwiający jego ukończenie. Przeglądarka przerwała próby pobrania żądanego elementu. Witryna przekierowuje żądanie w sposób, który uniemożliwia jego dokończenie. * Czy ciasteczka zostały wyłączone lub zablokowane dla tej witryny? * UWAGA: Jeśli włączenie obsługi ciasteczek dla tej witryny nie rozwiązuje problemu, najprawdopodobniej jest to problem w konfiguracji serwera, a nie oprogramowania na Twoim komputerze ![]() -------------------- Firefox - The Best,
Internet Exokier - shit |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Trochę bzdury napisałem, sorry
![]()
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 52 Pomógł: 10 Dołączył: 6.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
wszystko ok tylko
Kod in_array($_SESSION['lang'], $avaiable_langs)
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
To powodowało pętlę, ale i inne bzdury tam naskrobałem
![]() |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 275 Pomógł: 9 Dołączył: 24.07.2008 Skąd: Racibórz Ostrzeżenie: (10%) ![]() ![]() |
teraz nie ma zadnego erroru ani komuniktu ale nie wyswietla się tekst
![]() sry juz dziala wszystko ładnie działa dziękuje bardzo i dam wam piwka lub + jak można.. -------------------- Firefox - The Best,
Internet Exokier - shit |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 13:32 |