Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wersje językowe strony
Forum PHP.pl > Forum > PHP
pitbull82
Witam

Na stronie, nad którą obecnie pracuję, chciałbym umieścić 2 wersje językowe. Oczywiście samo zrobienie ot tak tego, to żaden problem, pytanie tylko jak zrobić to elegancko smile.gif

Dodam, że chciałbym, aby również tagi alt i title były w razie czego w angielskiej wersji językowej.

Ma ktoś pomysł jak to elegancko zrealizować?

O szablonach nie wiem nic, ale może to trzeba jakoś na tej zasadzie realizować? np. dać alt="{opis1}" i później to przetwarzać w zależności od wybranej wersji językowej ? Pytanie tylko czy powinno się to robić za każdym razem czy może raz a może jeszcze jakoś inaczej?

Czekam na Wasze pomysły i opinie smile.gif
Cysiaczek
Najprościej to możesz includować dokument z sekcją head i ptoblem rozwiązany
Co do altów, to juz chyba gorzej.
Może jakiś skrypt wykrywający jaki plik jest includowany w headzie i odpalający odpowiednie zmienne znacznikach alt

Aha, rzy przełączaniu wersji po prostu wysyłasz via post lub get zmienną dla instrukcji warunkowej zawartej na poczatku dokumentu (tej ładującej wersję językową)
bela
Najprościej tak,

Dajesz w URLu index.php?foo=bat&lang=pl

I załączasz templaty w wersji pl, jesli pobierasz coś z bazy to robisz
  1. SELECT *
  2. FROM foo WHERE lang='pl'

Potem wrzucasz to do szablonów i voila winksmiley.jpg

Mi taki mechanizm w nowej wersji strony OPB zajął ok 50 linijek, wraz z podzialem na mvc winksmiley.jpg
Spirit86
o jejku, przypatrz się np. PHPBB, czy czemuś co zawier funkcje językowe :].
Tworzysz plik polish.php
i tam deklarujesz stałe, tj. title, name itp.

strona główna:
  1. <?php
  2.  
  3. echo '<title>'.title.'</title>';
  4.  
  5. ?>

reszty domyśl się sam :]
Najki
Podobno najszybciej działa coś takiego, jeśli oprzesz te dane na zwykłych tablicach (przynajmniej tak twierdzili developerzy frameworka Seagull na konferencji PHPcon 2004 w Poznaniu). Takie wieeelkieee tablice smile.gif.
SongoQ
@Najki ma racje!!!

Tworzysz sobie katalog np "lang" i umieszczasz pliczki z wersjami jezyków i co do tego to dajesz jeszcze w odpowiednim kodowaniu. W pliku tym zawiera sie bardzo duza tablica w ktorej "siedza" teksty do odpowiednich czesci na stronie, wszystko co jest statyczne na stronie. Jesli serwis jest oparty na smarty a jeszcze lepiej jak spelnia MVC to jeszcze latwiej poprostu zaciagasz odpowiedni pliczek.

@bela_666 z tym bym sie tak kłócił bo tak naprawde wiekszosc projektów opartych jest na takiej wlasnie zasadzie jak powyzej opisalem, przykład phpMyAdmin.

Na bazie danych mozna robic ale wtedy przy zalozeniu ze osoby tłumaczące maja dostep do specjalnego panelu tlumaczeń.

Jak powiedział Najki
Cytat
przynajmniej tak twierdzili developerzy frameworka Seagull na konferencji PHPcon 2004 w Poznaniu
i z tym sie zgadzam.
bela
@SongoQ co do wybierania z bazy, ja mysle o artykułach, newsach etc
i z czym byś się nie zgodził ?
SongoQ
@bela_666 Tak oczywiscie z tym sie zgadzam, bo nie ma innej mozliwości.

Chodziło mi o elementy (teksty) statyczne na www.
bregovic
Jak się używa smarty - to 'elementy statyczne' najlepiej ustawiać w configach - i je dynamicznie includować w templacie, np decydując na podstawie zmiennej GET.
SongoQ
@bregovic "Element statyczny" tutaj przyjołem tekst który nie ulega znianie (czyli nie "siedzi" w bazie danych) i wyłącznie zalezy od wersji jezykowej strony.
Puciek
Ja zaproponuje wykorzytsanie odrazu smarty i podstawianie danych z tabelek wlasnie
hawk
A ma ktos doswiadczenie np. z gettext?
_Mateo
Witam!
ja ostatnio też cos takiegio miałem, ale rozwiązałem to na wyrażeniu warunkowym:

  1. <?php
  2. if($jezyk_strony =='pl') {
  3. echo &#092;"Witaj!\"; }
  4. elseif ($jezyk_strony =='eng') {
  5. echo &#092;"Hello\"; }
  6. ?>


oczywiście wcześniej jest wyciąganie danych z bazy itp...

Pozdrawiam, Mateo
SongoQ
@_Mateo troche Twoja metoda jest nie korzystna dla programisty. Wyobraz sobie taka sytuacje ze aplikacja musi dzialac w kilku jezykach ktorych programista nawet nie zna "Witaj świecie" wtedy 1 pliczek z tlumaczeniem jest wysylany osobie tłumaczącej i dostajesz gotowy pliczek z tablica, kopiujesz go do projektu i juz masz odpowiednia obslugę jezyka. To co ty napisałes mija sie całkowicie z celem.

Chyba nie chciałbys wysyłac kodu tłumaczowi??
_Mateo
@ SongoQ: w sumie tez fakt, tylko że zależy do czego to wykorzystać... do moich projektów typu Licznik idiotów itp w zupełności to wystarcza smile.gif Wiem, że jest sporo innych sposobów, ale ten jest akurat najprostrzy a mi efekt jaki daje w zupełności wystarcza smile.gif jeśli by wykorzystać np smarty, to faktycznie byłoby to lepsze smile.gif tylko ze tutaj juz nie pomogę sad.gif
SongoQ
@_Mateo rozumiem Twoje podejscie, najprostsze rozwiazanie. W sumie w tym co podales no to moj przyklad troche mija sie z celem.

Ale jak sie projektuje aplikacje i jest mowa o obdludze wielu jezyków to naprawde najwazniejsze jest dla Ciebie aby tlumaczenie przeszlo sprawnie i osoba ktora to robi mogla latwo to zrealizowac. Zadko sie zdaza ze na jakis "dziwny" jezyk tlumaczy programista.
pitbull82
Na tej stronce nie będzie ani dużo rzeczy, ani nie będzie ona skomplikowana. Chodziło mi tylko właśnie o poznanie sposobu podejścia do sprawy. Rozumiem, że warto by było się zainteresować SMARTY. Ciekawe tylko "z czym to się je" winksmiley.jpg
SongoQ
http://smarty.php.net/

Na poczatku wyglada strasznie ale zobaczysz pozniej.
hwao
O ile dobrze pamietam to OPT ma wsparcie dla jezykow (jazeli to to w najbluzszych wersjach bedzie).
Ja sam to robie troche inaczej mam dane zachowane odnosnie kazdego modlu i jak cos trzeba to zalatowuwuje te dane wysylam do widoku (np smary albo cokolwiek innego) a on sobie juz wybiera co i jak.
krzemian
Trochę odgrzewam topic, ale może ktoś jeszcze czeka:)

Moje zdanie - zrobić to tak jak jest w PHPBB, czyli na tablicach. Tam jak chcesz mieć kolejną wersję językową, to ściągasz odpowiednie pliki i wszystko jest spisane w tablicach ($lang, $faq), pliki mają te same nazwy, ale są w osobnych folderach (lang_pl, lang_en bodajże) i skrypt po prostu inkluduje pliki z odpowiedniego folderu. Prosty i dobry sposób, a co najważniejsze - przenośny.
Martio
Chciałbym odświeżyć nie co temat... Czy wiecie jak zrobić, aby skrypt automatycznie wykrywał wersję językowe? Wiele razy widziałem coś takiego, że wchodzę na zagraniczną stronę i od razu pojawia mi się polska wersja językowa. Nie muszę nic wybierać.

Jak to działa? Jak zrobić taką automatyczną detekcję wersji językowej? Czy ktoś może wie?
nospor
  1. <?php
  2. echo $_SERVER['HTTP_ACCEPT_LANGUAGE'];
  3. ?>
i chyba juz wszystko jasne smile.gif

moze byc tam kilka języków. Należy brać pierwszy z brzegu, chyba ze twoja strona go nie obsluguje - wowczas kolejny
Martio
Cytat(nospor @ 2006-03-09 12:56:12)
i chyba juz wszystko jasne smile.gif

Dziekuję smile.gif A dla zainteresowanych tematem polecam ten artykuł:
http://www.netcoffee.pl/pogodzinach/2006/0...ka-uzytkownika/
chomiczek
Dokładne zidentyfikowanie usera, tj jego kraju znakomicie sprawdza się dzięki temu:
http://ip-to-country.webhosting.info/ Potrzebna jest jednak baza do tego.
w bazie przechowywane sa pule adresów IP dla danego kraju i na tej podstawie mozna zidentyfikować skąd łączy się użytkownik.
Strzałek
wygodna obsługa języków jest w opt - http://opt.openpb.net/docs/pl/doku.php?id=features:i18n
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.