Jak stworzyć tłumaczenie

Ten artykuł poprowadzi Cię krok po kroku przez proces tworzenia nowego tłumaczenia dla eStats.

^ Wprowadzenie

Wraz z wydaniem wersji 4.9 wprowadzony został do użytku standardowe systemy locale oraz gettext. Pierwszy odpowiada między innymi za odpowiednie formatowanie liczb oraz daty, zgodnie z lokalizacją, drugi natomiast obsługuje tłumaczenia ciągów tekstowych.

Obecnie tworzenie nowego tłumaczenia polega na obróbce pliku POT (wzorca) i wygenerowaniu z niego odpowiedniego pliku PO (i binarnego pliku MO). Zaleca się użycie specjalnego edytora, np. Poedit.

Alternatywnie generowane są pliki w formacie PHP, dla serwerów bez obsługi systemu gettext.

Tłumaczenia przechowywane są w folderze locale/, instalacja i de instalacja polega na dodaniu lub usunięciu całego folderu tłumaczenia.

^ Budowa

^ Plik konfiguracyjny

Przykładowy plik konfiguracyjny (format INI):

1
2
3
4
5
6
7
8
9
10
11
12
13
[Information]
Name = "Polski"
Author = "Emdek"
URL = "http://estats.emdek.cba.pl"
Version = "4.9"
Status = "1"
Licence = "GPL"
Time = "1200772834"
[Options]
Information = "Dostępna jest polska wersja strony"
Dir = "ltr"
WeekStartDay = 1
Locale = "pl_PL.UTF-8|polish|pl_PL"

Objaśnienie zmiennych konfiguracyjnych:

  • Information - informacje o motywie;
    • Name - nazwa języka w tym języku (ciąg tekstowy);
    • Author - autor;
    • URL - adres strony autora;
    • Version - wersja skryptu, dla której przeznaczone tłumaczenie;
    • Status - status tłumaczenia, 1 - kompletne;
    • Licence - licencja;
    • Time - czas modyfikacji (uniksowy znacznik czasu);
  • Options - opcje tłumaczenia;
    • Information - tekst informujący, o dostępność wersji strony w tym języku, w tym języku (ciąg tekstowy);
    • Dir - kierunek tekstu (ltr / rtl);
    • WeekStartDay - numer dnia tygodnia, od którego zaczyna się tydzień dla danej lokalizacji (liczba);
    • Locale - lista identyfikatorów lokalizacji dla danego języka (najlepiej dla różnych systemów operacyjnych, oddzielone znakiem |);

^ Budowa przykładowego tłumaczenia (pl)

Każde tłumaczenie (poza angielskim - wzorcowym, umieszczonym wewnątrz plików skryptu) składa się z pliku konfiguracyjnego, binarnego pliku MO oraz zalecanego pliku alternatywnego (format PHP):

  • pl/ [wymagany - główny katalog tłumaczenia, nazwa taka jak jego identyfikator]
    • LC_MESSAGES/ [wymagany - katalog tłumaczenia]
      • estats.mo [wymagany - binarny plik tłumaczenia]
    • locale.ini [wymagany - plik konfiguracyjny]
    • locale.php [opcjonalny, zalecany - alternatywny plik tłumaczenia w formacie PHP]

^ Alternatywny plik tłumaczenia

Alternatywne pliki językowe są wymagane na wypadek braku wsparcia dla gettext. Mają budowę tablicową (tablica $L), gdzie kluczem jest angielska wersja, a wartością tłumaczenie, przykład:

1
$L['Delete'] = 'Usuń';

Pliki w tym formacie wykorzystywane są także do tłumaczeń elementów dodatkowych, wtyczek oraz instalatora (folder install/locale/).

^ Działanie

Na początku działania skryptu generowana jest lista dostępnych języków oraz przetwarzane są ich pliki konfiguracyjne, aby ustalić ich nazwy oraz pobrać teksty wyświetlane, gdy wykryty język użytkownika nie zgadza się z tym, który jest aktualnie wybrany.

Do załadowania tłumaczenia (czy to dla całego skryptu, wtyczek lub instalatora) używana jest jednolita funkcja e_locale_load ().

Zawsze ładowany jest plik estats.mo (lub alternatywny locale.php) z wybranego języka.

W przypadku uruchomienia instalatora skrypt usiłuje załadować odpowiedni plik z folderu install/locale/ o nazwie będącej identyfikatorem języka.

Analogicznego systemu używają wtyczki.

Aby użyć tłumaczenia należy wywołać funkcję e_i18n () z parametrem będącym angielską wersją tekstu. W przypadku odnalezienia tłumaczenia w bazie zwracany jest przetłumaczony tekst, w przeciwnym wypadku zwrócony zostanie tekst podany jako parametr. Mechanizm ten zapewnia istnienie zawsze przynajmniej angielskiej wersji tekstu.

^ Zakończenie

Jeśli stworzysz jakieś tłumaczenie, zaktualizujesz obecne lub masz jakieś pytania, to pisz w odpowiednim dziale forum :-).

Ostatnia modyfikacja: 2008-02-17 13:28:44 CET

Znane są tysiące sposobów zabijania czasu, ale nikt nie wie jak go wskrzesić.

Albert Einstein