--=REKLAMA=--

Specyfikacja plików językowych

Z Joomla!WikiPL

Specyfikacja plików językowych dla Joomla! 1.6

Ta strona wyjaśnia różnice w specyfikacji plików językowych pomiędzy wersjami 1.5 a 1.6/1.7. W Joomla! 1.7 nie wprowadzono żadnych zmian w tych specyfikacjach.

Specyfikacja plików językowych ciągle jest w fazie rozwoju i nie przewiduje się powrotu do centralnej strony specyfikacji.

Specyfikacja językowa dla Joomla! 1.5 dostępna jest pod adresem Tworzenie pliku definicji językowych.

Przegląd zmian w Joomla! 1.6

  • Klucz podlegający tłumaczeniu musi być zdefiniowany następująco:
    • nie może posiadać żadnych spacji, wszystkie znaki spacji muszą zostać zamienione na znak podkreślenia '_'
    • wszystkie Klucze w powłoce frontowej zawierają prefiks rozszerzenia
  • Wartość - czyli nasze tłumaczenie klucza, musi być ujęta w cudzysłów.

Dodatkowe informacje znajdziesz tutaj (ang.)

Reasumując, plik .ini powinien zawierać następujące pary Kluczy i Wartości:

KLUCZ_DO_TŁUMACZENIA="Wartość, czyli przetłumaczony tekst."
  1. Klucze powinny zmienić swój wygląd. W Joomla! 1.6 spacje nie są dozwolone.
    Odstępy, czyli spacje musimy zastąpić znakiem podkreślenia '_'.
    Ponadto, planuje się stosowanie nazw przestrzeni, tak, by skończyć z czymś takim COM_EXAMPLE_MYKEY jako klucz.
    Zgodnie z podręcznikiem php, znaki: {}|&~![()^" nie mogą być używane w kluczach. Istnieją także słowa zarezerwowane dla kluczy: Null, Yes, No, true, false, On, Off, none.
    Uwaga: COM_EXAMPLE_prefiks - takie tworzenie klucza nie jest obowiązkowe w Joomla 1.6/1.7, ale wskazane jest stosowanie tej konwencji, aby uniknąć kolizji nazw z innymi rozszerzeniami!.
  2. Składnia Wartości również uległa zmianie. Według podręcznika PHP, jeśli wartość w pliku .ini nie zawiera żadnych innych znaków alfanumerycznych, musi być ujęta w cudzysłów ("). W zasadzie oznacza to, że wszystkie nasze wartości będą musiały być zamknięte w cudzysłów. Jeśli chcesz dołączyć cudzysłów w ciągu zawartym w Wartości, możesz użyć html-owego " lub domyślnego "_QQ_" .
    Wreszcie, zgodnie z podręcznika PHP, znaki {}|&~ ![()^" mają specjalne znaczenie w Wartości.
  3. Składnia komentarza wstawianego do pliku .ini również uległa zmianie. Zamiast znaku krzyżyka (#) należy używać znaku średnika (;).
Ikona informacja.png
 Informacja

 Jeśli format pliku INI jest błędny, tłumaczenie nie zostanie poprawnie zdefiniowane. Większość wersji PHP załaduje plik językowy do punktu, w którym pojawia się błąd, ale nie wyświetli żadnego komunikatu o błędzie.


Aktualizacja plików językowych Joomla! 1.5 do pracy z Joomla! 1.6/1.7

Aby przekonwertować plik .ini z Joomla! 1.5 na Joomla! 1.6/1.7 możemy użyć jednej z dwóch możliwości.

Albo użyjemy odpowiedniego skryptu do konwersji - np. taki jak ten (ang.), albo zrobimy to ręcznie za pomocą naszego ulubionego edytora tekstowego, obsługującego kodowanie UTF-8 bez BOM.

Rozwiązanie ręczne też jest proste i łatwe do wykonania:

Otwórz plik .ini który chcesz edytować. Następnie za pomocą narzędzi znajdź / zamień pozamieniaj automatycznie istniejące cudzysłowy, dodaj nowe cudzysłowy, jeśli są potrzebne w ciągu i zaktualizuj komentarze.

  • Cudzysłowy nie są już dozwolone, ale jeśli nie są konieczne można je zastąpić (') lub jeśli muszą się znaleźć w ciągu - (& quot;) lub _QQ_
  • Umieść zamknięcia cudzysłowu na końcu każdej linii, jeśli nie jest pusta i nie jest komentarzem. Znajdź ^((?!#).+)\R i zastąp $1"\R
  • Umieść otwarcie cudzysłów na początku przetłumaczonego ciągu znaków, jeśli nie jest to pusta linia lub komentarz. Znajdź ^((?!#).+?\=)(.+)\R i zastąp $1"$2\R
  • Zamień znak krzyżyka # rozpoczynający komentarz. Znajdź ^# i zastąp ;
  • Usuń nielegalne łańcuchy znaków, które mogą uniemożliwić ładowanie plików. Znajdź ^(null | no | yes | true | false | on | off | none )=(.+)\R i zastąp niczym.

Konwencja nazewnictwa plików językowych i pierwszeństwo wczytywania

Wszystkie pliki językowe traktuj zgodnie z konwencją nazewnictwa język.rozszerzenie.ini. Na przykład, plik polskiego tłumaczenia komponentu com_przykladowy powinien nosić nazwę pl-PL.com_przykladowy.ini.

Pliki tłumaczeń przechowywane są wewnątrz poszczególnych katalogów dostępnego języka. Na przykład, polskie pliki językowe dla witryny przechowywane są wewnątrz katalogu language/pl-PL. Tak więc ścieżka dostępu do polskiego pliku tłumaczenia dla com_przykladowy wygląda następująco: language/pl-PL/pl-PL.com_przykladowy.ini. Podobnie, plik tłumaczenia zaplecza, ma pełną ścieżkę administrator/language/pl-PL/pl-PL.com_przykladowy.ini.

Oczywiście pliki te należy zdefiniować w pliku manifestu .XML danego rozszerzenia, inaczej pliki te nie zostaną zainstalowane w naszym Joomla!. Aby umieścić pliki językowe w pliku .XML, można użyć tej samej składni co z Joomla! 1.5, tj.:

<languages folder="ścieżka/do/katalogu">
   <language tag="en-GB">en-GB/en-GB.com_foobar.ini</language>
   <language tag="en-GB">en-GB/en-GB.com_foobar.sys.ini</language>
</languages>

Każde rozszerzenie może mieć także "lokalny" plik z tłumaczeniami. Na przykład, możesz mieć plik języka polskiego w katalogu administrator/components/com_przykladowy/language/pl-PL/pl-PL.com_przykladowy.ini. Te "lokalne" pliki nie muszą być wymienione w pliku manifestu XML. W rzeczywistości, użytkownik zawsze może stworzyć katalog z językiem, wewnątrz katalogu rozszerzenia, tworząc podkatalog nazwany jak kod języka i wewnątrz niego utworzyć plik INI z tłumaczeniem.

Rozszerzenia Joomla! muszą posiadać również pliki sys.ini, które są używane:

(a.) podczas instalacji rozszerzenia, aby umożliwić wyświetlenie informacji instalacyjnych,
(b.) do budowy menu Komponentu w panelu administratora,
(c.) do tłumaczenia parametrów komponentów i parametrów menu,
(d.) w Rozszerzenia -> Instalacje -> Zarządzanie.

Pliki te mają podobne nazewnictwo do głównych plików językowych i można je przechowywać w miejscu zaplecza. Jeśli są one jedynie przechowywane, ich Klucze - Wartości nie zostaną użyte przy instalacji.

Na przykład, polski plik tłumaczenia sys.ini komponentu com_przykladowy, jest przechowywany w administrator/language/pl-PL/pl-PL.com_przykladowy.sys.ini i jego wariant w administrator/components/com_przykladowy/language/pl-PL/pl-PL.com_przykladowy.sys.ini.

WAŻNE! Aby załadować plik tłumaczenia automatycznie zaraz po instalacji, należy go przechowywać w katalogu naszego rozszerzenia. Jeśli posiadamy tylko jeden plik tłumaczenia sys.ini, w katalogu languages naszego rozszerzenia, to zostanie on załadowany i używany w zapleczu administracyjnym.

Pliki tłumaczenia sys.ini przechowywane w katalogu language systemu Joomla! ZAWSZE nadpisują te przechowywane w katalogu języka naszego rozszerzenia, z wyjątkiem procesu instalacji, gdzie używany jest plik tłumaczenia sys.ini znajdujący się w katalogu językowym rozszerzenia. Oznacza to że możemy mieć dwa pliki sys.ini. Umożliwi nam to zdefiniowanie dwóch róznych informacji w Kluczu pliku manifestu XML <description>COM_PRZYKLADOWY_XML_OPIS</description>

Dzięki temu podczas instalacji możemy wyświetlić komunikat instalacyjny, a podczas edycji naszego rozszerzenia w zapleczu administracyjnym inny komunikat informacyjny.

Składniki menu, widoczne w menu Komponentu Panelu Administratora, zawsze pochodzą z tłumaczenia Klucza COM_PRZYKLADOWY komponentu o nazwie com_przykladowy (czyli katalogu instalacyjnego komponentu, pisane DUŻYMI LITERAMI) . Jest to znaczna różnica w porównaniu do plików tłumaczenia .ini dla menu w Joomla! 1.5 !

Najlepszym sposobem na zobrazowanie tych konwencji, jest pobranie popularnych rozszerzeń dla Joomla! 1.6 z JED i analiza ich treści, w prawdziwym duchu Wolnego i Otwartego Oprogramowania.

Ładowanie tłumaczenia w dowolnym miejscu

Joomla! automatycznie ładuje pliki z tłumaczeniami, gdy użytkownik uzyskuje dostęp do komponentu.

Aby załadować dowolne pliki języka w rozszerzeniu, można użyć następującego kodu:

$language = JFactory :: getLanguage ( ) ;
$language -> load ( 'com_nazwakomponentu' ) ;

lub dla specyfikacji PHP5

JFactory :: getLanguage ( ) -> load ( 'com_nazwakomponentu' ) ;

Możliwe także jest, wymuszenie załadowania innych plików językowych niż wskazują na to ustawienia językowe danego użytkownika, zarówno dla zaplecza jak i witryny.

Na przykład można załadować pliki językowe angielskie, użytkownikowi z językiem polskim. Dzięki temu Klucze nie przetłumaczone na język polski, zostaną wyświetlone w języku angielskim, a nie za pomocą samych Kluczy.

Dla zaplecza :

 $language = JFactory :: getLanguage ( ) ;
 $language -> load ( 'com_nazwakomponentu' , JPATH_ADMINISTRATOR , 'en-GB' , true ) ;
 $language -> load ( 'com_nazwakomponentu' , JPATH_ADMINISTRATOR , null , true ) ;

Dla witryny :

 $language = JFactory :: getLanguage ( ) ;
 $language -> load ( 'com_nazwakomponentu' , JPATH_SITE , 'en-GB' , true ) ;
 $language -> load ( 'com_nazwakomponentu' , JPATH_SITE , null , true ) ;

Pokrewne wątki dyskusji na liście mailingowej projektantów Joomla!

Dziękujemy za wkład

» danielg28,