Wielojęzyczne strony internetowe Drukuj
Ocena użytkowników: / 0
SłabyŚwietny 
Wpisany przez jsmp   
piątek, 23 października 2009 09:11

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.

 

Kod:  
echo lang('uchwyt');



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

=======================================================================