Forum - HAJLO.COMmunity [ forum dyskusyjne, kasa za posty, forum młodzieżowe, forum wielotematyczne ]


Nabór do ekipy forum!!! Więcej informacji: Napisz PW

Użytkownicy przeglądający ten wątek: 1 gości



[PHP] System języków na stronie internetowej
(21-02-2012 16:38) #1

[PHP] System języków na stronie internetowej

[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:

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.





Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości

Linki

Copyrights

Tłumaczenie: Polski Support MyBB Silnik MyBB Styl: Darek