PHP – wiele języków – poradnik/tutorial

Data dodania: jakiś czas temu
reklama

phpjezyki

Pomysłów na stworzenie wielojęzycznych aplikacji czy stron internetowych jest tak wiele jak wielu jest programistów. Dziś pokażę Wam jeden ze sposób stworzenia takiego prostego systemu obsługi wielu języków.

Na początek warto zastanowić się w jaki sposób zapamiętywać ustawienie danego języka dla użytkownika. Część osób wykorzystuje sesje lub ciasteczka. My wykorzystamy jednak odpowiedni parametr w linku, tak aby wyszukiwarki (np. Google) potrafiły rozróżniać wersje językowe na podstawie tego linku. Natomiast bazą danych dla konkretnego języka będzie po prostu plik tekstowy.

Zaczynamy

Zanim zaczniemy podkreślę, że istnieją lepsze sposoby na rozwiązanie tego zagadnienia. Zależy mi jednak, by każdy z Was, który dopiero zaczyna załapał zasadę działania właśnie takiego rozwiązania. Zatem do dzieła.

Utwórzmy plik o nazwie danejezykow.txt, następnie wklejmy do niego taką oto zawartość:

login|zaloguj się|log in
haslo|wprowadź hasło|enter password
wyslij|wyślij|submit

Jak zauważyliście, oddzieliłem elementy tablicy znakiem „|” oraz osobnymi liniami. Dlaczego tak to jest zrobione, wyjaśnię później.

Teraz stwórzmy plik php o nazwie jezyki.php o takiej zawartości:

<?php

function wybierz_jezyk($param){
    $plik = file_get_contents('danejezykow.txt'); //pobiera dane językowe

    
    //określenie języka
    if(isset($_GET['j'])){
        $jakijezyk = $_GET['j']; //pobiera symbol języka z adresu URL
    }
    else{
        $jakijezyk = 'pl'; //wybierz język polski jeśli nie określono języka
    }

    switch($jakijezyk){
        case 'pl':
            $j=1; //określa numer tablicy dla języka polskiego
            break;

        case 'en':
            $j=2; //numer tablicy dla języka angielskiego
            break;
    }
    //określenie języka koniec
    
    
   $tablica = explode("\n",$plik); // najpierw oddzielamy dane na podstawie linii
   
   $nowatablica = array(); // tworzymy nową czystą tablicę
   foreach($tablica as $wartosc){
       
       $nowawartosc = explode("|",$wartosc); //rozbijamy daną linię oddzieloną znakami | na elementy tablicy
       $pierwszyklucz = $nowawartosc[0]; //przypisujemy pierwszą wartość jako klucz
       unset($nowawartosc[0]); //wywalamy pierwszy klucz z ostatecznych wartości tablicy
       
       $nowatablica[$pierwszyklucz] = $nowawartosc; //tworzymy tablicę na nowo, która jako klucz przyjmuje nazwę pierwszego elementu
   }
    
   
   $nowatablica = array_filter($nowatablica); //mamy nową tablicę, przy okazji wyrzucamy z niej puste elementy
   
   return $nowatablica[$param][$j]; //zwraca żądany element w danym języku
    
}

echo wybierz_jezyk('haslo'); //wywołanie funkcji

?>

Teraz wystarczy wywołać naszą funkcję podając jako parametr pierwszy element z naszego pliku tekstowego. Czyli jeśli wywołamy echo wybierz_jezyk(‚haslo’); skrypt poszuka linii, która jako pierwsze słowo przed znakiem „|” przyjmuje wartość haslo;

Wyświetli to komunikat wprowadz haslo lub enter password w zależności od wybranej opcji językowej.

Testujemy zmianę języka

Wywołajcie swój plik jezyki.php. Na ekranie zobaczycie wprowadz haslo, ponieważ skrypt domyślnie przyjmuje polską wersję językową. Jeśli chcecie zobaczyć wersję angielską wywołajcie plik z parametrem: jezyki.php?j=en. Proste, prawda? 🙂

Jak to działa

Na początku stworzyliśmy odpowiedni plik tekstowy. Każda linia to nowe słowo, czy też zdanie do przetłumaczenia. Natomiast w każdej z tych linii konkretne wersje językowe oddzieliliśmy znakiem |. Pierwszy wyraz w danej linii to nazwa, po której będziemy wywoływać konkretne słowo czy też zdanie. Następne to już słowa, które mają się wyświetlić w danym języku.

Omówmy teraz krok po kroku każdą linijkę. W linii 4 mamy funkcję, która po prostu pobiera zawartość danego pliku i przypisuje ją do zmiennej $plik. W linii 7 znajduje się warunek, który sprawdza, czy w adresie URL, konkretniej po parametrze „j” (dokładniej jezyki.php?j=en) znajduje się jakaś informacja o wyborze języka. Jeśli nie, domyślnie ma przyjąć język polski czyli pl. W kolejnych liniach mamy funkcję switch, która w zależności od wybranego języka przypisuje zmiennej $j odpowiedni numer. Jeśli będziecie chcieli dołożyć więcej języków, będzie trzeba rozbudować tego switcha o następne numery.

W linii 27 rozbijamy każdą nową linię jako element tablicy. W liniach 29 do 37 mamy pętlę, której zadaniem jest zbudowanie tablicy, którą będziemy mogli wywoływać po nazwie pierwszego słowa w każdej z linii. Przyjrzyjcie się jej dobrze oraz zapoznajcie się z komentarzami po znakach //. Całą funkcję wywołujemy przez

echo wybierz_jezyk('nazwa_pierwszego_elementu_w_danej_linii');

Gotowe! Mam nadzieję, że moje tłumaczenie jest jako takie zrozumiałe.


PS. jeśli masz konto na Facebooku, polub fanpage Konkretnego. Dzięki!




Tagi: , , , ,

Bądź miły! Uwielbiam wchodzić z Wami w dyskusję, proszę jednak, by krytyka była konstruktywna. Komentarz, który ma na celu obrażać mnie lub moich Czytelników może zostać usunięty. Tutaj każdy ma czuć się dobrze :)

Jestem także tutaj


YouTube - ostatni film z Filek.TV

YouTube - ostatni film z Konkretny.pl

Discord

Chcesz ze mną pograć?
Wbijaj na mój Discord

Partnerzy











O blogu

Konkretny.pl to blog technologiczny, którego tematyka porusza kilka specjalistycznych dziedzin. Jednymi z najważniejszych są zagadnienia dotyczące technologii i Internetu, ale nie brakuje tutaj również typowych tekstów dotyczących finansów, marketingu, programowania, a nawet gier komputerowych. Życzę przyjemnej lektury :)


Social Media

 



© 2011-2018 Marcin Romanowicz. Wszelkie prawa zastrzeżone.

Wszystkie posty piszę w dobrej wierze. Nie odpowiadam jednak za wszelkie szkody, treść komentarzy oraz autentyczność informacji na stronie. Informuję, że publikowane pliki zostały sprawdzone programem antywirusowym w aktualnej wersji. Nie biorę jednak odpowiedzialności, jeśli coś się stanie.

| O mnie |   | Polityka Prywatności |   | Kontakt |