Dzisiaj jest 12 grudnia 2024 r.
Chcę dodać własny artykuł

GNU gettext

„`html

Wprowadzenie do gettext

gettext to pakiet oprogramowania stworzony w ramach projektu GNU, który wspiera internacjonalizację programów komputerowych na systemach uniksopodobnych. Jego najpopularniejsza implementacja jest rozwijana jako wolne oprogramowanie przez Projekt GNU.

Historia

Oprogramowanie gettext zostało opracowane w Sun Microsystems na początku lat 90. XX wieku, a wersja stworzona przez Projekt GNU zadebiutowała w 1995 roku.

Zastosowanie i działanie

W celu przetłumaczenia ciągu znaków w języku programowania, należy go otoczyć funkcją gettext, często aliasowaną do _. Przykład w języku C:


printf(_("My name is %s.\n"), my_name);

Funkcja gettext zwraca oryginalny ciąg, jeśli nie znajdzie tłumaczenia. Program xgettext pozwala na ekstrakcję tłumaczeń z kodu źródłowego i generowanie plików .pot, które pełnią rolę szablonów dla tłumaczy.

Przykład użycia

Przykładowy kod do tłumaczenia:


/// TRANSLATORS: Please leave %s as it is, because it is needed by the program.
printf(_("My name is %s.\n"), my_name);

Po uruchomieniu xgettext, plik .pot może wyglądać następująco:


#. TRANSLATORS: Please leave %s as it is, because it is needed by the program.
msgid "My name is %s.\n"
msgstr ""

Tłumaczenie i tworzenie plików .po

Tłumacz używa programu msginit do utworzenia pliku .po z szablonu .pot:


msginit --locale=pl --input=name.pot

Pliki .po mogą być edytowane ręcznie lub przy użyciu narzędzi takich jak Poedit, Emacs czy Vim. Przykładowe tłumaczenie może wyglądać tak:


msgid "My name is %s.\n"
msgstr "Mam na imię %s.\n"

Pliki .po są konwertowane na format binarny .mo przy użyciu programu msgfmt, co przygotowuje je do dystrybucji.

Liczby mnogie

Dla słów zmieniających się w zależności od liczby, można użyć składni liczby mnogiej. Należy dodać odpowiednie wyrażenie w nagłówku pliku .po oraz tłumaczenie liczbowe:


msgid "week"
msgid_plural "weeks"
msgstr[0] "tydzień"
msgstr[1] "tygodnie"
msgstr[2] "tygodni"

Przykład użycia funkcji ngettext w PHP:


echo "minęły 4 " . ngettext("week", "weeks", 4);

Implementacje

gettext dostępne jest w wielu językach programowania, w tym:

  • C++
  • Objective-C
  • Python
  • PHP
  • Ruby
  • Java

Oprócz standardowej biblioteki dla C, istnieją bindingi dla innych języków, co czyni gettext wszechstronnym narzędziem do internacjonalizacji.

„`

Najnowsze aktualności: