pitbull82
5.03.2005, 19:20:21
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

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
Cysiaczek
5.03.2005, 19:26:44
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ą)
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
SELECT *
FROM foo WHERE lang='pl'
Potem wrzucasz to do szablonów i voila

Mi taki mechanizm w nowej wersji strony OPB zajął ok 50 linijek, wraz z podzialem na mvc
Spirit86
6.03.2005, 19:19:54
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:
<?php
echo '<title>'.title
.'</title>';
?>
reszty domyśl się sam :]
Najki
6.03.2005, 20:48:32
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

.
SongoQ
6.03.2005, 23:14:07
@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.
@SongoQ co do wybierania z bazy, ja mysle o artykułach, newsach etc
i z czym byś się nie zgodził ?
SongoQ
6.03.2005, 23:28:39
@bela_666 Tak oczywiscie z tym sie zgadzam, bo nie ma innej mozliwości.
Chodziło mi o elementy (teksty) statyczne na www.
bregovic
7.03.2005, 00:08:52
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
7.03.2005, 00:16:47
@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
7.03.2005, 07:48:19
Ja zaproponuje wykorzytsanie odrazu smarty i podstawianie danych z tabelek wlasnie
A ma ktos doswiadczenie np. z gettext?
_Mateo
7.03.2005, 21:02:54
Witam!
ja ostatnio też cos takiegio miałem, ale rozwiązałem to na wyrażeniu warunkowym:
<?php
if($jezyk_strony =='pl') {
elseif ($jezyk_strony =='eng') {
?>
oczywiście wcześniej jest wyciąganie danych z bazy itp...
Pozdrawiam, Mateo
SongoQ
7.03.2005, 21:17:15
@_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
7.03.2005, 21:49:06
@ 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

Wiem, że jest sporo innych sposobów, ale ten jest akurat najprostrzy a mi efekt jaki daje w zupełności wystarcza

jeśli by wykorzystać np smarty, to faktycznie byłoby to lepsze

tylko ze tutaj juz nie pomogę
SongoQ
7.03.2005, 22:02:14
@_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
7.03.2005, 22:06:42
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"
SongoQ
7.03.2005, 22:22:43
http://smarty.php.net/Na poczatku wyglada strasznie ale zobaczysz pozniej.
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
23.03.2005, 12:42:30
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
9.03.2006, 11:43:57
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
9.03.2006, 11:56:12
<?php
echo $_SERVER['HTTP_ACCEPT_LANGUAGE']; ?>
i chyba juz wszystko jasne

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

Dziekuję

A dla zainteresowanych tematem polecam ten artykuł:
http://www.netcoffee.pl/pogodzinach/2006/0...ka-uzytkownika/
chomiczek
11.03.2006, 05:45:59
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
11.03.2006, 10:13:44
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.