Wielu z nas chciałoby, by strony które tworzy, portfolio czy galerie były dostępne dla jak najszerszej liczby internautów, warto w tym celu przygotować swoją stronę z opcją zmiany języka, wg dowolnych upodobań odwiedzających.
Mechanizm oprzemy o Cookies, w którym zapiszemy wybrany przez usera język, a jeśli wcześniej nie był zadeklarowany, ustalimy domyślny.
Potem, zamienimy wybrany język (pl, en, de i kolejne które będziesz mógł dodawać) na pozycje w tablicy, dzięki funkcji lang.
lang.php
Kod: |
|
php
/* ------------Copyright------------------
LangSwitch v. 1.3
autor: jsmp
www: jsmp.republika.pl
W przypadku użytku komercyjnego proszę o kontakt.
-----------Copyright------------------ */
if ($_GET['lang']){ //je¶li wybrano zmianę języka, aktualizuje ciastko.
setcookie('lang', $_GET['lang'], time()+12*2592000);
};
if (!isset($_COOKIE['lang']) && !isset($_GET['lang'])){ setcookie('lang', substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2), time()+12*2592000);}
function lang($zm){
if (isset($_COOKIE['lang']) && !isset($_GET['lang'])) { // sprawdzamy czy istnieje ciastko LANG i czy nie wysłano przypadkiem polecenia zmiany języka. Je¶li się zgadza to ustawiamy zmienn± na zawarto¶ć ciastka.
$tong = $_COOKIE['lang'];
}
elseif($_GET['lang']){ // je¶li zostało wysłane polecenie zmiany języka, aktualizujemy ciastko oraz ustawiamy zmienn± na t± warto¶ć. rzez to unikam konieczno¶ci od¶wieżania strony, po każdym kliknięciu zmiany języka
$tong = $_GET['lang'];
}
else { //je¶li kto¶ nie dokonał wcze¶niej wyboru języka
$tong = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
};
//------------czesc II------------------
switch ($tong) {
case 'pl': $tong = 0; break;
case 'en': $tong = 1; break;
case 'de': $tong = 2; break;
// tu dodajemy deklaracje kolejnych wersji językowych
default: $tong = 0; break;
};
//------------czesc III------------------
$lang = Array(
'menu' => array('Menu główne', 'Main menu', 'HaupMenu'),
'nazwa' => array('Strona Główna', 'MainPage', 'HaupSeite'),
'powitanie' => array('witaj', 'hello', 'tschuss'),
'copy' => array('Wszelkie prawa zastrzeżone', 'All rights reserved', 'Alle Rechte vorbehalten'),
);
return $lang[$zm][$tong];
};
|
|
Plik lang.php includujemy we wszystkich naszych podstronach. Na samym początku kodu.
By wywołać jakiś tekst na naszej stronie, odwołujemy sie nie do jego tekstu w jakimkolwiek języku, lecz do UCHWYTU.
Szczegółowy opis działania kodu:
część pierwsza
Kod powoduje w przypadku nie wybrania wcześniej języka, ustawienie tego który user ma ustawiony jako domyślny w przeglądarce. Jeśli w aktualnym wywołaniu użyto GET lang to zostaje utworzone ciastko o odpowiedniej wartości oraz ustawiony język. A w przypadku gdy ktoś naszą stronę odwiedził i dokonał wyboru języka, wczytywana jest wartość ciastka.
ta część kodu nie wymaga od Ciebie żadnych zmian
część druga
W niej ustalamy listę dostępową do języków.
aby dodać nowy język wystarczy dodać nową pozycję CASE:
DEKLAROWANIE JEZYKÓW
Kod: |
|
case 'skrót języka': $tong = kolejnyID; break; |
|
Skrót
to w podanym powyżej kodzie przeważnie dwie litery pl, en, de. Warto korzystać ze skrótów podanych tutaj:
http://www.kurshtml.boo.pl/html/skroty_nazw_jezykow,jezyki.html
Dzięki temu, w przypadku wykrycia domyślnego języka usera skrypt sam wyświetli właściwą dla niego stronę.
ID
- to
kolejny
numer, licząc od zera. Oznacza pozycje w tablicy. W podanym pełnym kodzie - język pierwszy [0] to PL, drugi [1] to EN.
następny język, np. niemiecki zostałby dodany takim kodem:
Kod: |
|
case 'de': $tong = 2; break; |
|
kolejny
Kod: |
|
case 'fr': $tong = 3; break; |
|
część trzecia
W trzeciej wyznaczonej części robimy tablice, w której deklarujemy uchwyt i kolejne wartości w kolejnych językach.
DODAWANIE TŁUMACZEŃ
Kod: |
|
'uchwyt' => array('tekst polski', 'english text') |
|
Gdzie UCHWYT to słow, którym będziemy wywoływać dany tekst. Zastosowano to dla wygody użycia. A po słowie array wpisujemy tłumaczenia w kolejnych językach, wg kolejności jaką zadeklarowaliśmy w SWITCH. Czyli pierwszy to tekst polski, drugi angielski.
Gdy zadeklarujemy kolejny język, trzeba będzie dodać przed
)
Cytat: |
, 'kolejne tłumaczenie' |
.
by dodać nowy uchwyt:
po ostatnim dodajemy przecinek i nowy uchwyt, czyli:
Kod: |
|
,
'nazwa_uchwytu' => array('tekst polski', 'english text' ...) |
|
przykładowy, zapełniony kolejnymi uchwytami kod:
Kod: |
|
$lang = Array(
'menu' => array('Menu główne', 'Main menu', 'HaupMenu'),
'nazwa' => array('Strona Główna', 'MainPage', 'HaupSeite'),
'powitanie' => array('witaj', 'hello', 'tschuss'),
'copy' => array('Wszelkie prawa zastrzeżone', 'All rights reserved', 'Alle Rechte vorbehalten'),
); |
|
Umożliwienie zmiany userom
Aby umożliwić użytkownikowi twojej strony zmianę języka, wystarczy wstawić odpowiedni odnośniki:
Kod: |
|
<a href="?lang=SKROT_JEZYKA">angielskia> |
|
dla każdego zadeklarowanego w SWITCH języka. Gdzie zamiast zaznaczonego fragmentu SKROT JEZYKA wstawimi te z II części kodu. (tutaj: pl, en)
Demo
=======================================================================
Artykuł i kod można kopiować i publikować na innych stronach. Warunkiem jest wstawienie informacji, że autorem jest jsmp oraz linka http://poradnik-seo.pl
=======================================================================
|