Gettext
gettext — бібліотека проекту GNU для інтернаціоналізації. Основною відмінністю від інших подібних інструментів є використання англійських рядків замість спеціальних ідентифікаторів в тексті програми і підтримка множини іменників. Остання версія станом на травень 2019 — 0.20.1. ВикористанняОкрім стандартної мови програмування С, також підтримуються: C++, Objective-C, сценарії sh та bash, Python, Perl, PHP, GNU CLISP, Emacs Lisp, librep, GNU Smalltalk, Java, GNU awk, Паскаль, wxWidgets (з використанням класу wxLocale), YCP (мова YaST2), Tcl, Pike та R. Використання в більшості мов схоже з використанням в С. Бібліотека широко застосовується у вільному ПЗ. ІнтернаціоналізаціяДля програмістаРядки, які необхідно перекласти, розмічаються у джерельному коді викликом функції printf(gettext("Hello! My name is %s.\n"), name);
перетвориться у printf (_("Hello! My name is %s.\n"), name);
Розмічені рядки збираються у каталог за допомогою утиліти
#: src/name.c:36 msgid "Hello! My name is %s.\n" msgstr "" Коментарі розміщуються безпосередньо перед рядками позначеними для перекладу: /// ПЕРЕКЛАДАЧІ: будь ласка, залиште '%s' так, як є, тому що воно взаємодіє з програмою.
/// Спасибі за сприяння цьому проекту.
printf(_("My name is %s.\n"), my_name);
У цьому прикладі коментар починається з /// і передається до xgettext при побудові файлу шаблону .pot, щоб передати коментарі перекладачам. xgettext --add-comments=/// Файл .pot з коментарями виглядає так: #. ПЕРЕКЛАДАЧІ: будь ласка, залиште '%s' так, як є, тому що воно взаємодіє з програмою. #. Спасибі за сприяння цьому проекту. #: src/name.c:36 msgid "My name is %s.\n" msgstr "" Для перекладачаПерекладач створює на основі каталогу msginit --locale=uk --input=name.pot В результаті утвориться файл uk.po. У ньому є колекція елементів на зразок цього #: src/name.c:36 msgid "Hello! My name is %s.\n" msgstr "" У ньому необхідно перекласти усі рядки, наприклад, для українського перекладу: #: src/name.c:36 msgid "Hello! My name is %s.\n" msgstr "Привіт! Мене звати %s.\n" Для редагування Для користувачаЗазвичай користувачеві в UNIX-подібних операційних системах не потрібно робити додаткових кроків для
вибору конкретного перекладу. Переклад визначається системною змінною
Підтримка наявних перекладівОновлення перекладів з використанням змінених рядків та нових з джерельного коду, здійснюється утилітою Див. також
Посилання
|
Portal di Ensiklopedia Dunia