konto usunięte

Temat: wersje językowe strony

Witam
Szukam jakiegoś rozwiązania tego problemu.
Z tego co sie orientuje to musi to być oparte o sesje jednak nie wiem co i jak.

Mam stronę na której po wyborze z menu includuję do wnętrza pliki php, chciałbym zrobić tak by zmieniając język nadal byla wybrana ostatnia pozycja menu tylko juz w jezyku np. angielskim

pozdrawiam

konto usunięte

Temat: wersje językowe strony

bez sesji tez sie da.
wystarczy przekazywac przy odswiezaniu strony numer kliknietego linka+jezyk+cokolwiek jeszcze innego.
Michał P.

Michał P. Software Development
Team Leader

Temat: wersje językowe strony

zrób tak:
Niech Twoje podstrony mają adres http://www.costam.com/pl/param1/param2.html dla języka polskiego itd. Pierwszym parametrem jest zawsze skrót języka.

konto usunięte

Temat: wersje językowe strony

bardziej mysle o takim rozwiazaniu

http://strona.pl/strona.php?inne=parametry&jeszczeinne...

z tym ze zastanawiam sie jak dodac parametr jezyka zawsze na koncu odnosnika nie zaleznie jak by on nie byl
Michał P.

Michał P. Software Development
Team Leader

Temat: wersje językowe strony

Maciej Klejnglas:
bardziej mysle o takim rozwiazaniu

http://strona.pl/strona.php?inne=parametry&jeszczeinne...

z tym ze zastanawiam sie jak dodac parametr jezyka zawsze na koncu odnosnika nie zaleznie jak by on nie byl

to nie rozumiem, w czym problem. Doklejasz po prostu do wszystkich linków &lang=pl (względnie ?lang=pl, jeśli to pierwszy parametr) i tyle.

konto usunięte

Temat: wersje językowe strony

Michał P.:
to nie rozumiem, w czym problem. Doklejasz po prostu do wszystkich linków &lang=pl (względnie ?lang=pl, jeśli to pierwszy parametr) i tyle.

no o tym pisalem w pierwszy poscie i tez nie kumam w czym problem ;-)

a, moze chodzilo o to, ze trzeba cos takiego

if(!($lang)) $lang='pl'
[wiem, wiem, zaraz mnie registeroffglobalowcy zjedza :>]Wojciech Piotrowicz edytował(a) ten post dnia 16.01.08 o godzinie 11:41

konto usunięte

Temat: wersje językowe strony

zakrecilem sie troche i dlatego tak namieszalem :D
zapomnialem ze musze miec drugie menu w j. ang :)

zrobie za jakis czas maly szablon i pokaze gdzie mam problem
Marcin K.

Marcin K.
sprzedaż/marketing/d
ział IT, Fornet MK

Temat: wersje językowe strony

Maciej Klejnglas:
bardziej mysle o takim rozwiazaniu

http://strona.pl/strona.php?inne=parametry&jeszczeinne...

A wyszukiwarki? Należy kochać wyszukiwarki, to one będą kochały nas...

Jak już (wiem, tak jest wygodniej) to sugeruje jeszcze o mod_rewrite i regułkach owego poczytać.

A tak ad meritum - ja bym wolał to w sesjach robić, ale może to tylko kwestia przyzwyczajenia do uzywania tych samych klas...

Np
1. Gdzieś na początku strony
if (!isset($_SESION['lang'])) $_SESION['lang']='pl';

2. funkcja do wczytania tekstu - wczytaj_text($id_strony){ file/sql - z parametrem z $_SESSION['lang']}

3. link do zmiany języka
maly pliczek, ktory jako parametr przyjmie z get strone z ktorej bylo klikniete , zmieni wartosc sesji i odesle z powrotem?
Marcin Juchnicki

Marcin Juchnicki sklep.zagrajsam.pl

Temat: wersje językowe strony

Wojciech Piotrowicz:

a, moze chodzilo o to, ze trzeba cos takiego

if(!($lang)) $lang='pl'
>

Lepiej z $_SESSION['lang'], wtedy masz pewność, że przy zmianie konfiguracji serwera strona nie zacznie wariować.

jeśli z sesją, to na początek trzeba wstawić session_start();

ja bym dodał na początku pliczek

<?php
session_start();

if(!isset($_SESSION['lang'])) $_SESSION['lang']='pl'

if(!isset($_SESSION['strona'])) $_SESSION['strona']=1;

$adres[1]="adres1.php";
$adres[2]="adres1.php";
...
?>

dzięki temu będziesz miał bardzo ładny pasek adresu bez dziwolągów ...

jeszcze trzeba w html wstawić odpowiednie linki ... w menu to będzie coś takiego

<a href="<?php echo $adres[ 1,2,3,... ]; ?>">

a przy zmianie języka wystarczy

<a href="<?php echo $adres[$_SESSION['strona']]; ?>?lang=język">

konto usunięte

Temat: wersje językowe strony

Ostatnio zrobiłem coś takiego w ten sposób:

-zmienna sesyjna przechowywała informację o języku
- miałem kilka plików językowych w których użyłem DEFINE dla tekstów na stronie
- w szkielecie strony oczywiście miejsca na zdefiniowane nazwy dla tekstów
- przed wyświetleniem strony sprawdzana była zmienna sesyjna i na jej podstawie includowany był odpowiedni plik językowy. W odpowiednie pola wstawiane były teksty z pliku językowego i gotowe. Przy okazji łatwo dodać kolejną wersję językową strony.

konto usunięte

Temat: wersje językowe strony

Maciej Klejnglas:
bardziej mysle o takim rozwiazaniu

http://strona.pl/strona.php?inne=parametry&jeszczeinne...

z tym ze zastanawiam sie jak dodac parametr jezyka zawsze na koncu odnosnika nie zaleznie jak by on nie byl

Nie wiem czy nie lepiej jednak rozdzielić strony na języki katalogami - ze względu na SEO.

Tak jak już napisał Michał P.:
http://costam.com/pl/param1/param2.html

konto usunięte

Temat: wersje językowe strony

Stwórz sobie pliki językowe. np. pl.txt, en.txt de.txt itp etc.
nastepnie w sesji trzymaj nazwe jezyka
$_SESSION['lang'] = 'pl' - dla przykladu.

Stworz sobie funkcje, ktora na podstawie aktualnej wartosci tej zmiennej sesyjnej odczyta z danego pliku odpowiedni string.
w plikach powstawiaj np:

0001: strona glowna
0002: pozycja menu 1
0003: pozycja menu 3

en.txt:

0001: main page
0002: menu position 1
0003: menu position 3

i potem tylko w kodzie dajesz:

echo '<p>'.load_string(1).'</p>';
(dla przykladu)

a funkcja load_string sprawdza zmienna sesyjna i laduje odpowiedni string.

oczywiscie nie mozesz za kazdym razem otwierac i zamykac pliku, bo jak bedziesz mial kilka tysiecy stringow to to bedzie nieoptymalne.
otworz plik, trzymaj gdzies w sesji uchwyt do niego, i w razie potrzeby funkcja niech odpowiednim algosem wyciaga te dane (najlepiej preg_matchem, bedzie szybko dla duzych porcji tekstu).

mozesz tez to w bazie zrobic. wtedy jedna kolumna np. 'lang', a druga 'string' i tyle ;].

pozdro

konto usunięte

Temat: wersje językowe strony

0001: strona glowna
0002: pozycja menu 1
0003: pozycja menu 3
en
0001: main page
0002: menu position 1
0003: menu position 3
mozesz tez to w bazie zrobic. wtedy jedna kolumna np. 'lang', a
druga 'string' i tyle ;].

juz po powyzszym widac od razu, ze lepiej sobie sieknac to w bazie.Wojciech Piotrowicz edytował(a) ten post dnia 16.01.08 o godzinie 13:39
Stanisław P.

Stanisław P. Software designer

Temat: wersje językowe strony

Wojciech Piotrowicz:
juz po powyzszym widac od razu, ze lepiej sobie sieknac to w bazie.

I ile zapytań dla jednej strony? :)
Nie zawsze używasz wszystkich stringów, więc nie trzeba trzymać w pamięci wszystkich.
Z drugiej strony przeszukiwanie pliku preg_* jest... śmieszne pod względem czasowym.

Optymalne rozwiązanie dla dużej strony z kategoriami.
1. FILTRACJA $lang / $session['lang'] tylko do dozwolonych wartości
2. dostajesz stringa przez trans('główna,powitanie')
- trans() sprawdza, czy w globalnej np. $teksty[] jest już key 'główna,powitanie' i albo zwraca ten tekst, albo
- bierze to co jest przed ',' jako $dział i ładuje plik który ma nazwę "$dział_$lang.php" - a tam są tylko linie typu:
$teksty['główna,powitanie']='jakiśtam string';

Jest wszystko w jednej funkcji, jest podział na działy, więc jeśli używasz tekstu na jakiejś stronie i jeszcze go nie załadowałeś, to zostanie załadowany tylko i wyłacznie potrzebny blok tekstów których pewnie użyjesz za chwilę (od razu jako kod), no i oczywiście jest podział na języki.

Szybciej ładuje niż baza, nie używa niepotrzebnej pamięci i szybciej wyszukuje.

Ale to i tak tylko w przypadku jak nie ma dostępu do gettext'a ;)

konto usunięte

Temat: wersje językowe strony

Stanisław Pitucha:
Z drugiej strony przeszukiwanie pliku preg_* jest... śmieszne pod względem czasowym.

To albo nie masz doświadczenia, albo pomysłu.
bo ja wykorzystalem takie szukanie na pliku 100kb w serwisie obciazanym srednio 80 uzytkownikami online i dzialalo szybko i niezawodnie. kwestia zachowania juz zaladowanych stringow w tablicy i sprwadzania czy juz to mamy , czy nie. jesli nie, to znow wracamy do pliku (zachowujesz uchwyt) i nie ma zadnego problemu.
pozdro
Michał C.

Michał C. Deputy Head of
Software Development

Temat: wersje językowe strony

Przy kazdym wywolaniu strony przeszukujesz pregiem 100kB plik? Glupota :] Nie lepiej uzyc natywnych funkcji? Plik ini bardzo by sie do tego nadal. Prosty w budowie i o wiele szybszy niz jakies parsowanie wyrazeniem. A jak nie ini to generujemy sobie cache i zapisujemy jako zmienna tablicowa typu $lang['menu']; i sobie gdzies tam includujemy. Pomyslow cala masa.

konto usunięte

Temat: wersje językowe strony

No o tym mowie, jak juz raz potrzebne stringi zaladujesz to potem ich nie szukasz juz w pliku. to, ze jest 100kb nie znaczy ze za kazdym razem to czytam ;)

konto usunięte

Temat: wersje językowe strony

Maciej Klejnglas:
Witam
Szukam jakiegoś rozwiązania tego problemu.
Z tego co sie orientuje to musi to być oparte o sesje jednak nie wiem co i jak.

Proponuję położyć nacisk na wyszukiwarki (SEO). Z tego punktu widzenia najlepszym rozwiązaniem będzie rozróżnianie języka po domenie (dla każdego języka osobna domena). W najgorszym przypadku język rozpoznawany po subdomenie (wyśmienitym przykładem może być tu Wikipedia).

Innych rozwiązań nie przewiduję.

[edytowane]
Piotr Likus:
...
Nie wiem czy nie lepiej jednak rozdzielić strony na języki katalogami - ze względu na SEO.

Ze względu na SEO rozdzielenie języków na katalogi nie jest żadnym rozwiązaniem.
Rozumiem, że chodziło o tak zwane "przyjazne adresy" - ale nie o języki!Robert B. edytował(a) ten post dnia 16.01.08 o godzinie 21:08
Przemek Szalko

Przemek Szalko iOS Developer + Full
Stack Developer

Temat: wersje językowe strony

Robert B.:
....
Ze względu na SEO rozdzielenie języków na katalogi nie jest żadnym rozwiązaniem.
Rozumiem, że chodziło o tak zwane "przyjazne adresy" - ale nie o języki!

Jak rozumiem to zdanie dotyczy się adresów postaci:
http://serwer.com/jezyk/reszta_adresu
czyli np: http://serwer.com/pl/reszta_adresu

Pytam z ciekawości: dlaczego ze względu na SEO nie jest to żadnym rozwiązaniem?

konto usunięte

Temat: wersje językowe strony

Przemek Szalko:
...
Pytam z ciekawości: dlaczego ze względu na SEO nie jest to żadnym rozwiązaniem?

Główny mankament to geolokalizacja. Nie jest to miejsce na wyjaśnianie wszelkich problemów z nią związanych - powiem tylko tyle, że do stron PL powinny prowadzić linki ze stron PL a do EN ze stron EN a budowanie wersji językowych na katalogach tego nie zapewni - wręcz zachwieje tą zasadą.

Zachwianie tej zasady będzie powodowało, że nasza treść np. DE będzie widoczna w PL a nie w DE i odwrotnie (PL w DE a nie w PL) - skutkiem tego nasza strona będzie docierała do innych odbiorców niźli byśmy sobie tego życzyli.Robert B. edytował(a) ten post dnia 16.01.08 o godzinie 21:51



Wyślij zaproszenie do