PHP/Internacjonalizacja: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Zyx (dyskusja | edycje)
dokończenie
Zyx (dyskusja | edycje)
uzupełnienia końcowe
Linia 24:
 
Pierwsze dwa identyfikatory (''pl_PL'' oraz ''pl'') dotyczą systemu Linux. Trzeci przeznaczony jest dla rodziny Windows. Listę aktualnie zainstalowanych ustawień można znaleźć w ''Panel sterowania → Opcje regionalne → Zaawansowane''.
 
{{Uwaga|Funkcja ''setlocale()'' wpływa także na formatowanie liczb zmiennoprzecinkowych, co może być zgubne w skutkach podczas pracy z bazami danych! Dokładne omówienie tego problemu znajdziesz w dalszych rozdziałach.}}
 
=== Polska data ===
Linia 38 ⟶ 40:
?></nowiki>
 
Po uruchomieniu okazuje się, że nawet ten skrypt nie jest doskonały, ponieważ wprawdzie generuje spolszczoną datę, ale niepoprawną gramatycznie! Otrzymujemy komunikat np. ''17 kwiecień 2006'', a tymczasem poprawną formą jest ''17 kwietnia 2006''. W niuanse gramatyczne wgłębiać się nie będziemy - po prostu jest tak, a nie inaczej i niestety musimy samodzielnie napisać sobie funkcję, która nam to przeformatuje. Umożliwiając dodawanie obsługi nowych języków do aplikacji, powinniśmy pomyśleć o możliwości jej podmiany tak, aby twórca nakładki językowej mógł zaprogramować datę zgodnie z wymogami swego języka. Oto przykład takiej funkcji dla języka polskiego. Jest to modyfikacja ''strftime()'' dodająca nowy znacznik - '''%F''' będący właśnie odmienioną nazwą miesiąca:
 
<nowiki><?php
Linia 106 ⟶ 108:
 
Teraz otrzymujemy prawidłowy tekst: ''17 kwietnia 2006''.
 
Oto kilka przydatnych kodów dla funkcji ''strftime()'':
 
* '''%A''' - pełna nazwa dnia tygodnia.
* '''%B''' - pełna nazwa dnia miesiąca.
* '''%d''' - numer dnia miesiąca (od 1 do 31)
* '''%H''' - godzina w formacie 24-godzinnym
* '''%m''' - numer miesiąca (od 1 do 12)
* '''%M''' - minuta
* '''%S''' - sekunda
* '''%T''' - aktualny czas (równoważnik '''%H:%M:%S''')
* '''%Y''' - rok jako liczba czterocyfrowa
* '''%%''' - znak '''%'''
 
Więcej kodów można znaleźć na [http://www.php.net/strftime stronie dokumentacji PHP].
 
 
=== Wielojęzyczny interfejs ===
Linia 185 ⟶ 203:
 
Na początku ładujemy naszą bibliotekę i wybieramy język. Później wczytujemy grupę i wyświetlamy komunikaty. To wszystko - jesteśmy posiadaczami wielojęzycznego interfejsu. Pamiętaj, że jest to tylko przykładowy kod. Aby był on w pełni sprawny, powinieneś umożliwić użytkownikowi zmianę języka, a także zadbać o prawidłową obsługę błędów. Zwróć też uwagę, że dane obecnego systemu przechowywane są w tablicach globalnych. Nie jest to rozwiązanie najlepsze, ale na tym etapie wiedzy powinno nam wystarczyć. Kiedy poznamy programowanie obiektowe, będziesz mógł przepisać ten kod z jego wykorzystaniem, dzięki czemu zyska on na elegancji i bezpieczeństwie.
 
Do PHP można doinstalować także uniksowy moduł do obsługi wielojęzycznych interfejsów o nazwie ''gettext''. Korzystanie z niego jest jednak dość ryzykowne, ponieważ wiele serwerów nie obsługuje go i aplikacje oparte o ten moduł nie będą działać.
 
=== Automatyczna detekcja języka ===