Lekcja 10 - pliki językowe
Kiedy już stworzymy coś konkretnego co uważamy, że można by pokazać większej liczbie osób warto pomyśleć również o użytkownikach którzy nie mówią po naszemu. Na szczęście Joomla udostępnia nam specjalne klasy dzięki którym w bardzo wygodny sposób jesteśmy w stanie przetłumaczyć nasz komponent.
Zacząć należy od tego że wszystkie pliki językowe są umiejscowione w dwóch katalogach. Jak zapewne się domyślasz jeden z katalogów jest odpowiedzialny za stronę frontową naszego komponentu, drugi za administracyjną. Są to kolejno katalogi: /language oraz /administrator/language w katalogach tych znaleźć można podkatalogi o nazwach en-GB, pl-PL lub inne. Nazwy katalogów są tworzone na podstawie specyfikacji RFC 3066. Ogólna zasada to język-REGION. Osobom bardziej zainteresowanych tematem polecam lekturę powyżej wspomnianego dokumentu oraz może bardziej czytelnych artykułów traktujących o tagach identyfikujących języki.
Nazwa pliku językowego powinna być następująca: pl-PL.com_nazwakomponentu.ini oczywiście dla każdego języka plik ma zmieniony na początku symbol nazwy języka. Zawartość przykładowego pliku językowego (powiedzmy że dla języka angielskiego – plik nazwiemy en-GB.com_witaj.ini) mogłaby być następująca:
Myślę że patrząc na ten przykład domyślasz się o co chodzi... Nie ma jakiejś specyfikacji w jaki sposób mają wyglądać słowa po lewej stronie ale ważne jest to aby odzwierciedlały treść danego tłumaczenia. Tak zapisany plik kopiujemy do odpowiedniego katalogu z plikami językowymi (jeśli nie robimy instalatora). Aby teraz użyć nasze pliki językowe w komponencie musimy na początku je załadować. Dlatego w konstruktorze ( function __construct() ) naszego kontrolera dodajemy następujący kod:
Teraz do wyświetlenia naszego tłumaczenia możemy użyć trzech metod z klasy JText najczęściej na pewno będzie stosowana metoda _() przyjmuje ona jeden argument – wyraz do przetłumaczenia. Dla przykładu:
wyświetli nam tłumaczenie słowa YES załadowanego języka. Jeśli nie będzie dostępne tłumaczenie tego słowa to zostanie wyświetlony wyraz podany jako argument. Kolejne dwie metody to: sprintf() oraz printf(). Obie funkcje działają prawie tak samo mianowicie pobierają dowolną ilość argumentów, pierwszy to tekst do przetworzenia a kolejne to zmienne które mają zostać „wplecione” w tekst. np. dla tłumaczenia (tym razem język polski):
Wywołując metodę:
zostanie wyświetlony tekst: „jabłko kosztuje 0.59zł” wspomniałem że sprintf() oraz printf() działają podobnie, różnica polega na tym że printf() zwraca długość przetłumaczonego i przetworzonego tekstu. Teoretycznie w powyższym przykładzie powinien zwrócić wartość 22 jednak nie testowałem tej funkcji nigdy ponieważ mi nie była potrzebna. Symbole %s %f %d itd. stosuje się takie same jak w PHP nie ma tutaj różnic.
Ważna rzecz o której nie wspomniałem – każdy plik tekstowy zawierający tłumaczenie musi być zapisany w kodowaniu UTF-8. To samo tyczy się plików z kodem więc lepiej się tego trzymaj aby uniknąć późniejszych kłopotów!
Została chyba ostatnia sprawa dodanie informacji o pliku językowym do paczki instalacyjnej. Aby instalator wiedział o tym że w paczce znajdują się pliki językowe należy go o tym poinformować dodając odpowiednie linie do manifestfile. W sekcji frontowej po wylistowaniu plików należy dodać:
a dla backendu po wylistowaniu plików przed tagiem zamykającym </administration>
Oczywiście pliki językowe muszę być umiejscowione w folderze podanym jako atrybut znacznika languages! To by pewnie było na tyle jeśli chodzi o tłumaczenia komponentów... Jeśli o czymś zapomniałem to na pewno sam lub z czyjąś pomocą sobie przypomnę i na pewno to opiszę! Demonstrację działania plików językowych możesz zobaczyć w Czysty komponent do Joomla 1.5 który możesz pobrać z mojej plikowni.
Odsłony: 9739