Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%)
|
Poniższa klasa powinna pomóc w tworzeniu wielojęzykowych stron.
Przy projektowaniu wzorowałem się na podobnej funkcji w bibliotece Qt4 - gdzie metoda tr() ułatwia znacznie tworzenie templatek z tłumaczeniami, właściwie bez ingerencji w kod. Moja klasa próbuje to (trochę nieporadnie, ale cóż) zaimplementować w PHP. Główne założenia:
Przykładowa baza w sql na początku ma dwie kolumny - id z identyfikatorami oraz kolumnę aktualnego języka (np. "pl_PL"), dodając nową kolumnę - dodajemy nowy język, według mnie ułatwia to tworzenie i edycję arkusza z tłumaczeniami np. w Excelu lub Calcu (po przerzuceniu tabeli w CSV). Przykładowa struktura:
Przykładowe użycie:
Kod źródłowy Translation wraz z klasami pomocniczymi jest pod tym linkiem |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%)
|
Używanie gettext() w aplikacjach PHP to lekkie nieporozumienie. Bazuje ono na locale ustawianym przez funkcję setlocale(), która owszem, ustawia locale, ale dla całego procesu serwera, a nie dla pojedynczego wątku. Oznacza to, że na hostingach współdzielonych można komuś przełączyć locale w połowie wykonywania jego skryptu i ten ktoś nawet nie będzie o tym wiedział.
Jeśli już, to klasy do tłumaczeń powinno się opierać na nowych fajnych klasach unikodowych dostępnych od PHP 5.3, np. http://docs.php.net/manual/en/class.messageformatter.php http://docs.php.net/manual/en/class.numberformatter.php http://docs.php.net/manual/en/class.intldateformatter.php Nie są to kompletne systemy, ale zwalniają programistę z wielu upierdliwości; np. klasa MessageFormatter pozwala obsługiwać argumenty i umieszczać w tekście do wyświetlenia komendy warunkowe np. do obsługi liczby mnogiej. |
|
|
|
everth [klasa PHP5] Klasa wspierająca wielojęzykowość 7.08.2010, 06:18:30
wookieb [PHP] pobierz, plaintext $GLOBALS[$this->gl... 7.08.2010, 06:45:56
everth Aleś po mnie pojechał Więc teraz postaram się cho... 7.08.2010, 07:42:37
wookieb 1) No właśnie dlatego z tego względu nie "pow... 7.08.2010, 20:18:46
everth Akurat skrótowiec jest główną osią tego obiektu (p... 8.08.2010, 04:35:44
cojack CytatThe locale information is maintained per proc... 9.08.2010, 13:05:14 ![]() ![]() |
|
Aktualny czas: 9.06.2026 - 17:45 |