phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

FAQFAQ - PIERWSZA POMOC!!  regulaminREGULAMIN  SzukajSZUKAJ  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload  katalog Forów DyskusyjnychKatalog Forów   FAQ Video tutoriale

Poprzedni temat «» Następny temat
PHP i replace dla języków
Autor Wiadomość
WoGuziczek

Posty: 60
Wysłany: 21-04-2008, 11:48   PHP i replace dla języków

Witam!

Piszę krótko, zwięźle i na temat ;)
Mam jakąś tam sobie stronę opartą na php, html i css - jest w całości po polsku.

Chciałbym zrobić coś takiego, że wszystkie teksty będą w langach tzn na stronie będą zmienne np. $lang[welcome] lub coś w tym stylu.

Będę miał dwa/trzy pliki językowe: polski, angielski i niemiecki (lang_polish.php itp itd.)

w pliku lang_polish przy $lang[welcome] będzie odpowiednik "Witamy".

I teraz chciałbym to wszystko skręcić, ale nie wiem za bardzo jak.
Chciałbym, aby jak normalnie włączymy stronę wszystko było po polsku, jeśli klikniemy na jakąś flagę np. amerykańską to adres zmieni się na index.php?lang=en i wtedy strona zacznie pobierać pharsy z lang_english.php

W plikach językowych na pewno będziemy korzystać z replace i wystarczyłby mi tylko krótki zarys pliku.
W indexie i pozostałych podstronach chciałbym wiedzieć co mam wstawić i naturalnie muszę zamienić wszystkie teksty na zmienne językowe (jak one mają wyglądać?) + jak zrobić opcję z GET lang :)

Dla specjalistów - bułeczka z masełkiem ;) Pozdrawiam i dziękuję :)
 
     
Gadatliwa Kasia 

   
adam.exe


Pomógł: 11 razy
Posty: 105
Wysłany: 21-04-2008, 12:03   

Robisz trzy pliki: english.php, polish.php, german.php
I ustawiasz, z którego pliku skrypt ma korzystać w GET.

Czyli tak

Kod:

if(isSet($_GET[lang])
{
if($_GET[lang] == e)
{include(lang/english.php)}

elseif($_GET[lang] == p)
{include(lang/polish.php)}

elseif($_GET[lang] == g)
{include(lang/german.php)}
} else {include(lang/polish.php}


W tych trzech plikach masz te same zmienne, np. $page_name, $button1, $button2 itp., tylko o innych wartościach, w zależności od języka. Na początku każdego z plików piszesz tylko:

$lang= p; // dla polskiego,
$lang= e; // dla angielskiego,
$lang= g; // dla niemieckiego.

A w pliku-szablonie umieszczasz po prostu w odpowiednich miejscach te zmienne. Skrypt już sam znajdzie język. Pamiętaj jednak, żeby wszystkie linki konstruować z GET, tzn: page.html?lang=<?php echo$lang;?>

Oczywiście, nie wiem dokładnie co chcesz zrobić. Jeśli chciałbyś pisać zawartość strony (jakieś artykuły, recenzje itp) w trzech językach radził bym Ci zrobić też trzy bazy danych z tymi artykułami (po bazie na język). I wtedy też skrypt, który brałby zawartość z odpowiedniej bazy w zależności od języka.
 
     
Widmo



Pomógł: 180 razy
Posty: 2435
Wysłany: 21-04-2008, 12:16   

a ja langa to bym w $_SESSION wrzucil :)

znaczy jaki jezyk, bo nie wygodnie jest ciagle w gecie pamietac co to za jezyk ;)
_________________
Potrzebujesz pomocy?
 
     
WoGuziczek

Posty: 60
Wysłany: 21-04-2008, 12:24   

Widmo, w sesion czyli jak to zastosować w skrypcie? ;>
adam.exe, dziękuję - skorzystam :) nie - nie chcę zamieszczać żadnych artykułów, zawartość strony będzie stała i nie potrzeba operować na bazie danych :)
Ostatnio zmieniony przez WoGuziczek 21-04-2008, 12:26, w całości zmieniany 1 raz  
 
     
adam.exe


Pomógł: 11 razy
Posty: 105
Wysłany: 21-04-2008, 12:25   

Widmo:
Ej, zależy czy witryna jest statyczna czy aktywna.
I jeszcze, jak ktoś ma do niej panel WYSIWG to mu takie rzeczy nie przeszkadzają. Po prostu ustawia sie przy dodawaniu linków, aby dołączył ?lang=. To nie trudne.

A masz u siebie na stronie sesje, czy nie?
 
     
WoGuziczek

Posty: 60
Wysłany: 21-04-2008, 12:27   

Nie ma sesji

Widmo, możesz mi podać jakiś prosty przykład otwarcia sesji?
Nauczyłbym się ;)

[ Dodano: 21-04-2008, 13:39 ]
adam.exe, niestety po ustawieniu Twojego skryptu w indexie wywala błąd

Kod:
Parse error: parse error, unexpected '{' in C:\Program Files\EasyPHP 2.0b1\www\ip\index.php on line 4
 
     
adam.exe


Pomógł: 11 razy
Posty: 105
Wysłany: 21-04-2008, 12:40   

Bo pisałem na szybko.

Kod:

if(isSet($_GET[lang]))
{
if($_GET[lang] == e)
{include(lang/english.php);}

elseif($_GET[lang] == p)
{include(lang/polish.php);}

elseif($_GET[lang] == g)
{include(lang/german.php);}
} else {include(lang/polish.php);}


Teraz będzie lepiej
Ostatnio zmieniony przez adam.exe 21-04-2008, 13:02, w całości zmieniany 1 raz  
 
     
WoGuziczek

Posty: 60
Wysłany: 21-04-2008, 12:50   

Zawartość pliku [testowa] index.php:

Kod:

<?php

if(isSet($_GET[lang])
{
if ($_GET[lang] == en)
{ include(lang/english.php); }

elseif ($_GET[lang] == pl)
{ include(lang/polish.php); }

elseif ($_GET[lang] == de)
{ include(lang/german.php); }
} else { include(lang/polish.php); }

echo "$page_name";

?>


Zawartość pliku lang/polish.php [testowa]:

Kod:
$lang= pl;

$page_name = 'zobaczIP.info';


Wynik: http://zobaczip.info/2/index.php
Kod:
Parse error: syntax error, unexpected '{' in /home/wog/domains/zobaczip.info/public_html/2/index.php on line 4
 
     
adam.exe


Pomógł: 11 razy
Posty: 105
Wysłany: 21-04-2008, 13:02   

W pierwszym kodzie powinno być dokładnie tak:

Kod:

<?php

if(isSet($_GET[lang]))
{
if($_GET[lang] == e)
{ include(lang/english.php); }

elseif ($_GET[lang] == p)
{ include(lang/polish.php); }

elseif ($_GET[lang] == d)
{ include(lang/german.php); }
} else { include(lang/polish.php); }

echo "$page_name";

?>


Zapomniałem o nawiasie, a ty wziąłeś kod, zanim zedytowałem.
 
     
WoGuziczek

Posty: 60
Wysłany: 21-04-2008, 13:14   

Kod:
Warning: Division by zero in /home/wog/domains/zobaczip.info/public_html/2/index.php on line 9

Warning: include(php) [function.include]: failed to open stream: No such file or directory in /home/wog/domains/zobaczip.info/public_html/2/index.php on line 9

Warning: include(php) [function.include]: failed to open stream: No such file or directory in /home/wog/domains/zobaczip.info/public_html/2/index.php on line 9

Warning: include() [function.include]: Failed opening 'php' for inclusion (include_path='.:/usr/local/lib/php') in /home/wog/domains/zobaczip.info/public_html/2/index.php on line 9
 
     
They2


Pomógł: 82 razy
Posty: 1297
Wysłany: 21-04-2008, 13:25   

WoGuziczek napisał/a:
Widmo, możesz mi podać jakiś prosty przykład otwarcia sesji?
Nauczyłbym się ;)
chetnie bym sie wysluchal jak to zrobic.
Widmo, moge prosic o przyklady lub skrypt ? :roll:

WoGuziczek, ten wyzej o bledach, to masz poprawna sciezke pliku z include ? sprawdz.
i masz wylaczony allow_open_url ?
 
     
Widmo



Pomógł: 180 razy
Posty: 2435
Wysłany: 21-04-2008, 18:28   

Kod:
<?php

session_start();

if( isset( $_GET['lang'] ) )
{
        switch( $_GET['lang'] )
        {
            case: 'pl'
                $_SESSION['lang'] = 'pl';
            break;
           
            case: 'eng'
                $_SESSION['lang'] = 'eng';
            break;
           
            case: 'ger'
                $_SESSION['lang'] = 'ger';
            break;
        }
}

if( $_SESSION['lang'] == '' )
{
    $_SESSION['lang'] = 'pl';
}

echo 'Twój jezyk to: ' . $_SESSION['lang'];

?>


raz podane: index.php?lang=pl

zapisze w sesji usera domyslny lang.
_________________
Potrzebujesz pomocy?
 
     
WoGuziczek

Posty: 60
Wysłany: 21-04-2008, 19:43   

Widmo, gitarra ;)

Jak teraz ustawić to do includów?

Kod:

if( $_SESSION['lang'] == 'pl' )
{
    include(lang/polish.php);
}
elseif( $_SESSION['lang'] == 'eng' )
{
    include(lang/english.php);
}
elseif( $_SESSION['lang'] == 'ger' )
{
    include(lang/german.php);
}


??
 
     
adam.exe


Pomógł: 11 razy
Posty: 105
Wysłany: 21-04-2008, 21:01   

Dokładnie tak jak napisałes.
 
     
Gadatliwa Kasia 

   
Widmo



Pomógł: 180 razy
Posty: 2435
Wysłany: 21-04-2008, 21:55   

WoGuziczek, poniewaz $_SESSION przechowywane jest przez serwer, a wczesniej wyfiltrowaliśmy już zmienne i nie ma mozliwości ataku, możesz zrobić tak:

Kod:
<?php include 'language/lang_' . $_SESSION['lang'] . '.php'; ?>
_________________
Potrzebujesz pomocy?
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!

Powered by phpBB modified by Przemo © 2003 phpBB
Strona wygenerowana w 0,12 sekundy. Zapytań do SQL: 11
Polecane serwisy

Najlepsze oprogramowanie do prowadzenia sklepu internetowegoNajlepszy program do sklepu firmowany przez Przem'a

Sklep z gadżetami

Design Cart - Tworzenie sklepu internetowego

iRonin.IT

• Zamów reklamę