21-02-2012, 16:38
[align=center]Poziom trudności: 3/5 (nie tłumaczę podstaw)
W tym tutorialu przedstawię prosty system do obsługi wielu języków na witrynie WWW. Będzie on wykorzystywał ciasteczka (do zapamiętania wyboru użytkownika) oraz pliki:
- lang/polish.php - zawiera lokalizację w języku polskim
- lang/english.php - zawiera lokalizację w języku angielskim.
- lang.php - biblioteka do obsługi języka.
Wygląda to mniej więcej tak: użytkownik wybiera odpowiedni język z listy, po czym ustawiane jest ciasteczko o wartości "polish" lub "english", na podstawie którego ładowane są odpowiednie frazy z tablicy $lang. Zakładam też, że stronę korzystającą z takiego systemu czytelnik potrafi sobie napisać sam.
Tworzymy więc pliki polish.php i english.php w katalogu lang:
Następnie musimy utworzyć bibliotekę lang.php. Jej budowanie rozpoczniemy od określenia domyślnego języka strony. W naszym przypadku będzie to język polski. Użyjemy tu stałej, dzięki czemu inne skrypty nie będą mogły zmieniać tej wartości.
Teraz stworzymy sobie krótką funkcję do ładowania określonego języka.
Nie jest to absolutnie konieczne, ale dobrym pomysłem będzie stworzenie tablicy będącej listą języków, które może wybrać użytkownik:
Później tej tablicy użyjemy w funkcji generującej pole select (pole listy rozwijanej):
I wreszcie, na koniec, funkcja inicjalizująca - czyli taka, która dobiera język:
Skompletujmy więc to wszystko w jeden plik:
Zadaniem użytkownika jest tutaj wyświetlenie w odpowiednim miejscu pola wyboru języka oraz implementacją tego systemu w praktyce. Oczywiście możemy także rozbudować skrypt o inne języki.
W tym tutorialu przedstawię prosty system do obsługi wielu języków na witrynie WWW. Będzie on wykorzystywał ciasteczka (do zapamiętania wyboru użytkownika) oraz pliki:
- lang/polish.php - zawiera lokalizację w języku polskim
- lang/english.php - zawiera lokalizację w języku angielskim.
- lang.php - biblioteka do obsługi języka.
Wygląda to mniej więcej tak: użytkownik wybiera odpowiedni język z listy, po czym ustawiane jest ciasteczko o wartości "polish" lub "english", na podstawie którego ładowane są odpowiednie frazy z tablicy $lang. Zakładam też, że stronę korzystającą z takiego systemu czytelnik potrafi sobie napisać sam.
Tworzymy więc pliki polish.php i english.php w katalogu lang:
Kod PHP:
<?php
$lang['welcome'] = "Witaj na naszej stronie!";
$lang['index'] = "Strona główna";
$lang['links'] = "Sznurki";
$lang['about'] = "O nas";
$lang['goodbye'] = "I żegnaj zarazem! Nie mamy tu więcej do pokazania.";
?>
Kod PHP:
<?php
$lang['welcome'] = "Welcome to our site!";
$lang['index'] = "Home";
$lang['links'] = "Links";
$lang['about'] = "About";
$lang['goodbye'] = "And good bye! We do not have more to show on this page.";
?>
Następnie musimy utworzyć bibliotekę lang.php. Jej budowanie rozpoczniemy od określenia domyślnego języka strony. W naszym przypadku będzie to język polski. Użyjemy tu stałej, dzięki czemu inne skrypty nie będą mogły zmieniać tej wartości.
Kod PHP:
<?php
define("DEFAULT_LANG", "polish");
?>
Teraz stworzymy sobie krótką funkcję do ładowania określonego języka.
Kod PHP:
function lang_load($l) {
if(file_exists("lang/{$l}.php")) {
include_once "lang/{$l}.php";
return true;
} else {
return false;
}
}
Nie jest to absolutnie konieczne, ale dobrym pomysłem będzie stworzenie tablicy będącej listą języków, które może wybrać użytkownik:
Kod PHP:
$languages = array(
"polish" => "Polski",
"english" => "Angielski"
);
Później tej tablicy użyjemy w funkcji generującej pole select (pole listy rozwijanej):
Kod PHP:
function lang_list() {
global $languages; // globalizacja zmiennej
$out = 'Język: <select name="language">\n';
foreach($languages as $id => $title) {
$out .= "\t<option value=\"{$id}\">{$title}</option>";
}
$out .= "</select>";
return $out;
}
I wreszcie, na koniec, funkcja inicjalizująca - czyli taka, która dobiera język:
Kod PHP:
function lang_init() {
if(isset($_POST['language'])) {
setcookie("mojastrona_language", $_POST['language']);
lang_load($_POST['language']);
} else {
if(isset($_COOKIE['mojastrona_language'])) {
lang_load($_COOKIE['mojastrona_language']);
} else {
lang_load(DEFAULT_LANG);
}
}
}
Skompletujmy więc to wszystko w jeden plik:
Kod PHP:
<?php
define("DEFAULT_LANG", "polish");
$languages = array(
"polish" => "Polski",
"english" => "Angielski"
);
function lang_load($l) {
global $lang;
if(file_exists("lang/{$l}.php")) {
include_once "lang/{$l}.php";
return true;
} else {
return false;
}
}
function lang_list() {
global $languages; // globalizacja zmiennej
$out = 'Język: <select name="language">\n';
foreach($languages as $id => $title) {
$out .= "\t<option name=\"{$id}\">{$title}</option>";
}
$out .= "</select>";
return $out;
}
function lang_init() {
global $lang;
if(isset($_POST['language'])) {
setcookie("mojastrona_language", $_POST['language']);
lang_load($_POST['language']);
} else {
if(isset($_COOKIE['mojastrona_language'])) {
lang_load($_COOKIE['mojastrona_language']);
} else {
lang_load(DEFAULT_LANG);
}
}
}
?>
Zadaniem użytkownika jest tutaj wyświetlenie w odpowiednim miejscu pola wyboru języka oraz implementacją tego systemu w praktyce. Oczywiście możemy także rozbudować skrypt o inne języki.