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 ?
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? |
|
|
|
|
|