Сьогодн╕: 04-гру-2008 На сайт╕ працю╓ система Орфо. В╕дм╕тьте текст та натисн╕ть Ctrl-Enter Пошук на Google:
Linux.org.ua
укра╖н╕зац╕я в╕льного ПЗ
новини перекладачам правопис
словник розсилки форум
Домашня | Зм╕ни | ╤ндекс | Пошук | Перейти до 


Розд╕ли:

╤нш╕ матер╕али цього сайту:
*Служба новин @ linux.org.ua
*Укра╖н╕зац╕я програмного забезпечення
*Засоби для перекладач╕в
*Перев╕рка правопису
*Переклад з рос╕йсько╖ на укра╖нську
*Проект англо-укра╖нського словника техн╕чних терм╕н╕в
*Документац╕я
*Поштов╕ розсилки
*Форум
*Рекомендован╕ посилання
*Команда

linux.org.ua

 

lt.jpg

Технолог╕я локал╕зац╕╖

Багато людей, як╕ недавно познайомилися з Л╕нуксом, ц╕кавляться, як саме працю╓ локал╕зац╕я програм у Л╕нукс╕, як нею керувати, та як можна самому створювати переклади для програм чи писати програми, як╕ легко локал╕зуються.

З позиц╕╖ користувача

З позиц╕╖ користувача, налаштування так звано╖ «локал╕» в╕дбува╓ться досить просто. Вс╕ основн╕ параметри контролюються дек╕лькома зм╕нними, це:

Зм╕нна Вплива╓ на
LANG на вс╕ параметри локал╕зац╕╖, ╖╖ значення може перекриватися ╕ншими зм╕нними
LC_COLLATE на сортування
LC_CTYPE на абетку
LC_MESSAGES на мову пов╕домлень програм
LC_NUMERIC на вив╕д/вв╕д чисел
LC_TIME на вив╕д/вв╕д часу
LC_MONETARY на вив╕д грошових одиниць
... ...
LC_ALL на вс╕ параметри та перекрива╓ значення ╖х ус╕х

Детальн╕ше про деяк╕ з них:

Зм╕нна LANG

В основному керування локал╕зац╕╓ю у Л╕нукс╕ зд╕йсню╓ться за допомогою зм╕нно╖ LANG. Присво╓ння ц╕й зм╕нн╕й р╕зних значень зд╕йсню╓ зм╕ну мовного оточення, напр.:

bash-2.05$ LANG=uk_UA.KOI8-U date
Пнд Гру  2 19:11:28 EET 2002
bash-2.05$ LANG=de_DE date
Mon Dez  2 19:12:32 EET 2002

Зм╕нна LC_MESSAGES

Присво╓ння значення ц╕й зм╕нн╕й да╓ змогу вибрати мови, на яких ви хот╕ли б бачити пов╕домлення програм, напр.:

bash-2.05$ export LANG=uk_UA.KOI8-U
bash-2.05$ date
Пнд Гру  2 19:14:26 EET 2002
bash-2.05$ LC_MESSAGES=de_DE date
Пнд Гру  2 19:14:38 EET 2002
bash-2.05$ LC_MESSAGES=de_DE date -a
date: Ung?ltige Option -- >>a<<
Mit `date --help' bekommen Sie mehr Informationen.

Зверн╕ть увагу, що сьогодн╕шн╓ число виводиться укра╖нською, але пов╕домлення про помилку виводиться н╕мецькою.

Файл /etc/sysconfig/i18n

У цьому файл╕ збер╕гаються зм╕нн╕, як╕ задають локал╕зац╕ю для вс╕╓╖ системи (це лише для дистрибут╕в, як╕ побудован╕ на основ╕ Red Hat, у вашому дистрибут╕ ця ╕нформац╕я може збер╕гатися у ╕ншому файл╕ чи налаштовуватися за допомогою спец╕ально╖ програми, наприклад у SuSE для цього використову╓ться YaST).

На мо╖й машин╕ цей файл ма╓ такий вигляд:

LANG="uk_UA.KOI8-U"
SYSFONT="cyr-sun16"
SYSFONTACM="koi8-u"

Зм╕нн╕й LANG присво╓но значення "uk_UA.KOI8-U", отже вс╕ правильно локал╕зован╕ програми будуть використовувати цю локаль (деяк╕ нелокал╕зован╕, чи некоректно локал╕зован╕ програми не звертають на це уваги, наприклад KDE ма╓ сво╖ налаштування для локал╕зац╕╖ ╕ не зверта╓ уваги на загальносистемн╕, що часто збива╓ з пантелику початк╕вц╕в та злить л╕нуксо╖д╕в з╕ стажем).

Зм╕нн╕ SYSFONT та SYSFONTACM вказують, який шрифт та яке перекодування сл╕д використовувати для виводу на екран у консольному режим╕ (на граф╕чн╕ програми це не вплива╓).

Команда locale

Ця команда виводить значення ус╕х зм╕нних, як╕ мають в╕дношення до локал╕зац╕╖:

bash-2.05$ LANG=uk_UA.KOI8-U LC_MESSAGES=de_DE locale
LANG=uk_UA.KOI8-U
LC_CTYPE="uk_UA.KOI8-U"
LC_NUMERIC="uk_UA.KOI8-U"
LC_TIME="uk_UA.KOI8-U"
LC_COLLATE="uk_UA.KOI8-U"
LC_MONETARY="uk_UA.KOI8-U"
LC_MESSAGES=de_DE
LC_PAPER="uk_UA.KOI8-U"
LC_NAME="uk_UA.KOI8-U"
LC_ADDRESS="uk_UA.KOI8-U"
LC_TELEPHONE="uk_UA.KOI8-U"
LC_MEASUREMENT="uk_UA.KOI8-U"
LC_IDENTIFICATION="uk_UA.KOI8-U"
LC_ALL=

Зауважте, що у вивод╕ команди locale т╕ значення, як╕ взят╕ безпосередньо з оточення, виводяться без лапок, а значення взят╕ за замовчанням - у лапках. Цю команду корисно використовувати при визначенн╕ проблем з локал╕зац╕╓ю (наприклад, програми виводять пов╕домлення укра╖нською, а дату н╕мецькою).

Команда localedef

Опису╓ нову локаль, наприклад:

# localedef -c -v -f CP1251 -i uk_UA uk_UA.CP1251
# LANG=uk_UA.CP1251 date
оМД цПС  2 19:23:25 EET 2003

Створю╓ нову локаль (-с) з кодуванням CP1251 (-f CP1251), яка описана у файл╕ /usr/share/i18n/locales/uk_UA (-i uk_UA), з назвою uk_UA.CP1251. Ця локаль да╓ змогу сп╕лкуватися з програмою укра╖нською мовою у кодуванн╕ CP1251 (що видно на приклад╕ виводу команди date).

Перев╕рка правильност╕ локал╕зац╕╖

Перед початком прац╕, бажано перев╕рити правильн╕сьт налаштувань локал╕зац╕╖.

Використання LocaleConf

Багато користувач╕в запитують мене, чому ╖хн╕й комп'ютер малю╓ крякозябри зам╕сть укра╖нських л╕тер або не ма╓ укра╖нсько╖ локал╕зац╕╖. Як правило я в╕дпов╕даю, що не знаю в чому проблема - це ваш комп'ютер з вашими проблемами та помилками. Спец╕ально для таких випадк╕в я написав невеличкий наб╕р скрипт╕в, як╕й перев╕ряють типов╕ проблеми та помилки у локал╕зац╕╖.

Завантажте з╕ стор╕нки Locale Conf скрипт checklocale-uk_UA.KOI8-U.sh ╕ запуст╕ть його ( sh ./checklocale-uk_UA.KOI8-U.sh ). В╕н робить багато перев╕рок, як╕ можуть бути ор╕╓нтирами для вас при налаштуванн╕ локал╕зац╕╖.

Використання команди gettext

Для перев╕рки доступност╕ перекладених пов╕домлень та перев╕рки правильност╕ локал╕зац╕╖, можна користуватися командою gettext з пакету gettext-tools, наприклад:

bash-2.05$ LANG=uk_UA.KOI8-U gettext -sd gedit "Save"
Зберегти
bash-2.05$ LANG=uk_UA.CP1251 gettext -sd gedit "Save"
гАЕПЕЦРХ
bash-2.05$ LANG=uk_UA.UTF-8 gettext -sd gedit "Save"
пп╠п╣яп╣пЁяп╦

У мене все чудово - вс╕ три вар╕анти укра╖нсько╖ локал╕ працюють в╕дм╕нно. посм╕шка

Але пам'ятайте, що одн╕╓╖ п╕дтримки локал╕ у GNU libc не досить - необх╕дно ще мати правильно налаштован╕ шрифти, розкладку клав╕атури, мати п╕дтримку локал╕ у XFree86 та KDE, як╕, нажаль, зневажають системн╕ налаштування.

З позиц╕╖ перекладача

Переклад програми при використанн╕ GNU gettext (стандартного засобу для локал╕зац╕╖ програм в проектах GNU) под╕ля╓ться на дек╕лька етап╕в:

  1. В╕дм╕чення в програм╕ рядк╕в тексту, як╕ повинн╕ бути перекладен╕.
  2. Створення шаблону для перекладу (.pot - PO Template).
  3. Переклад файлу з шаблоном на р╕дну мову перекладача.
  4. Комп╕ляц╕я перекладу в дв╕йковий файл та розм╕щення його в каталоз╕ з ╕ншими перекладами.
  5. В╕дсилання перекладу для включення його в програму.

В╕дм╕чення рядк╕в, як╕ необх╕дно перекласти, робить автор програми. Шаблон для перекладу створю╓ться автоматично. Вам залишилося лише перекласти та скомп╕лювати його для того, щоб насолоджуватися ╕нтерфейсом на р╕дн╕й мов╕.

Створення файла з перекладами

Необх╕дно знайти .pot чи .po-файл для вашо╖ програми ╕ заповнити поля у заголовку правильними значеннями, наприклад так:

# Ukranian translation of the gnome-games module.
# Copyright (C) 1999,2000 Free Software Foundation, Inc.
# Yuri Syrota <stopspam@stopspam.com>, 1999-2000.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-games 1.1.0\n"
"POT-Creation-Date: 2002-05-28 21:45+0100\n"
"PO-Revision-Date: 2002-05-24 09:50+0200\n"
"Last-Translator: Yuriy Syrota <stopspam@stopspam.com>\n"
"Language-Team: Ukrainian <translation-team-uk@STOPSPAMlists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=koi8-u\n"
"Content-Transfer-Encoding: 8bit\n"

Це може зробити ╕ програма, якою ви переклада╓те, але не завадить проконтролювати ╖╖ роботу, бо вони досить часто помиляються.

Зверн╕ть увагу, що при нев╕рно вказаному кодуванн╕ текст перекоду╓ться зайвий раз з цього, нев╕рно вказаного кодування, у ваше. Скор╕ше за все, ви не зможете прочитати те, що утвориться в результат╕ цього подв╕йного перекодування.

Краще за все використовувати для файла з перекладом те ж кодування, яке ви використову╓те для роботи з програмою - для уникнення зайвих перекодовувань. Для консольних програм рекоменду╓ться KOI8-U, для GNOME2 та KDE - UTF-8.

Тепер можна приступати до перекладу.

Переклад можна виконувати як у звичайному текстовому редактор╕, так ╕ за допомогою спец╕ал╕зованих програм (дивись нижче).

Формат запису з рядком для перекладу:

#  коментар╕ перекладача
#. автоматичн╕ коментар╕
#: посилання...
#, прапорець...
#* Автор
#@ пакет1, пакет2, пакет3
domain "домен"
msgid "untranslated-string"
msgstr "перекладений рядок"

#  коментар╕ перекладача
#. автоматичн╕ коментар╕
#: посилання...
#, прапорець...
#* Автор
#@ пакет1, пакет2, пакет3
msgid "%d message"
msgid_plural "%d messages"
msgstr[0] "%d пов╕домлень"
msgstr[1] "%d пов╕домлення"
msgstr[2] "%d пов╕домлень"


Типи коментар╕в:

  • # - це коментар╕ перекладача.
  • #. - це автоматичн╕ коментар╕.
  • #: - це автоматичн╕ коментар╕, посилання на рядки у джерельних текстах програми.
  • #, - це прапорц╕ пов╕домлення.
  • #* - це автор цього пов╕домлення (розширення po-tools).
  • #@ - це пакети, як╕ використовують це пов╕домлення (розширення po-tools).

╤снують так╕ прапорц╕ пов╕домлень:

  • fuzzy - неч╕тк╕. Прапорець вказу╓, що переклад не точний ╕ його потр╕бно переглянути та, можливо, виправити. Так╕ прапорц╕ ставлять автомати, коли генерують автоматичн╕ переклади;
  • c-format - пов╕домлення у формат╕ рядка для С╕. В цьому пов╕домленн╕ ╓ символи п╕дстановки (так╕ як "%s","%d") - потр╕бно бути уважними при ╖х переклад╕. Програми перев╕рки правильност╕ перекладу виконують б╕льше тест╕в, коли встановлено цей прапорець;
  • no-c-format - рядок м╕стить символи, як╕ под╕бн╕ до символ╕в п╕дстановки, але ними не ╓, додатков╕ тести не будуть виконуватися.

Ключов╕ слова:

  • domain - це необов'язкове ключове слово, яке додали для сум╕сност╕ з catman - системою локал╕зац╕╖ для UNIX (Solaris), вказу╓ належн╕сть пов╕домлення до певного домену;
  • msgid - це ориг╕нал пов╕домлення;
  • msgstr - це його переклад;
  • msgid_plural - це ориг╕нальне пов╕домлення у форм╕ множини (file -> files);
  • msgstr[0..n] - вар╕анти перекладу для р╕зних значень яко╖сь числово╖ величини, напр. "0 файл╕в", "1 файл", "2 файли".

М╕ж цим ╕ наступним пов╕домленням повинен бути принаймн╕ один порожн╕й рядок.

Другий формат пов╕домлень зустр╕ча╓ться р╕дко.

TODO: про використання форм множини.

Синтаксис рядка

Якщо ви викону╓те переклад без використання спец╕альних редактор╕в (або за допомогою KBabel, який не зам╕ня╓ спец╕альн╕ символи, на в╕дм╕ну в╕д GTranslator), то пам'ятайте, що:

  • спец╕альн╕ символи в рядку кодуються за правилами мови С╕
    • перев╕д рядка (Line Feed - LF) - \n
    • перев╕д каретки (Carriage Return) - \r
    • символ горизонтально╖ табуляц╕╖ - \t
    • подв╕йн╕ лапки - \"
  • сл╕д збер╕гати вс╕ символи п╕дстановки, як╕ були в ориг╕нальному рядку, не зм╕нюючи ╖х порядок:
    • ориг╕нал "Hello, %s" -> переклад "Прив╕т, %s" -> вив╕д "Прив╕т, ╤ване".
    • ориг╕нал "Hello, %s" -> переклад "%s - прив╕т!" -> вив╕д "Ваня - прив╕т!".
    • ориг╕нал "Hello, %s" -> переклад "Прив╕т, %s" -> вив╕д "Прив╕т, ╤ване".
    • ориг╕нал "Hello, %s" -> переклад "%s - прив╕т!" -> вив╕д "╤ване - прив╕т!".
  • Якщо необх╕дно зм╕нити порядок символ╕в п╕дстановки, то для цього використову╓ться спец╕альний синтаксис, але в╕н р╕зний для р╕зних мов програмування. Типовий синтаксис вигляда╓ так: ориг╕нал "%d %d", переклад "%2$d %1$d". (Якщо друкуватимуться два числа, 1 ╕ 2, то в ориг╕нал╕ буде - "1 2", в переклад╕ - "2 1").
  • Рядок можна розбивати на дек╕лька рядк╕в, якщо кожен рядок брати у лапки. Символи нового рядка при цьому в переклад автоматично не вставляються.
  • Рядки, як╕ починаються з "_: Comment" - це коментар╕ усередин╕ пов╕домлення. В переклад╕ ╖х не повинно бути.
  • Якщо переклад м╕стить рядки "-#-#-#-#-# filename1.po #-#-#-#-#-" - то це означа╓, що пов╕домлення скле╓не автоматом (напр. msgcat) з дек╕лькох р╕зних вар╕ант╕в перекладу пов╕домлення. Ви повинн╕ залишити лише один вар╕ант перекладу пов╕домлення.

Повторне використання перекладу

Для полегшення життя перекладачам, для того, щоб не перекладати один ╕ той самий текст знову ╕ знову в р╕зних файлах, створили дек╕лька систем для повторного використання переклад╕в. Суть ╖х проста - спочатку ви збира╓те вс╕ тексти у одну велику купу, а пот╕м, коли необх╕дно перекласти текст, програма дивиться у т╕й куп╕, чи нема╓ там пов╕домлень, як╕ ви колись вже перекладали. Якщо таке пов╕домлення ╓, то ми використову╓мо його.

Використання msgmerge, msgcat

Найпрост╕ший випадок, який дуже часто зустр╕ча╓ться, це вих╕д ново╖ верс╕╖ програми з дек╕лькома новими ╕ зм╕неними пов╕домленнями. В таких випадках дуже зручно користуватися утил╕тою msgmerge, яка дозволя╓ використати стар╕ пов╕домлення для перекладу новго .pot-файла.

У найпрост╕шому випадку синтаксис команди такий:

msgmerge старий_переклад.po новий_шаблон.pot -o новий_переклад.po

Msgmerge бере пов╕домлення з╕ старого файлу переклад╕в ╕ заповню╓ ними новий шаблон. Якщо для пов╕домлення з шаблону не знайдено пов╕домлення, то msgmerge намага╓ться знайти перекладене пов╕домлення, яке найпод╕бн╕ше на це, ╕ використати його, в╕дм╕тивши переклад прапорцем fuzzy (неч╕тке). Пов╕домлення, для яких нема╓ в╕дпов╕дника у файл╕ шаблону, коментуються за допомогою преф╕ксу "#~ ". ╥х мо╓на видалити, якщо в них вже нема╓ потреби.

Результат перекладу збер╕га╓ться у файл╕ "новий_переклад.po". Вам достатньо тепер лише переглянути та виправити неч╕тк╕ пов╕домлення та перекласти неперекладен╕ пов╕домлення.

TODO (про створення compendium ╕ його використання з msgmerge)

Використання po-tools на linux.org.ua

На нашому сайт╕ розм╕щено веб-╕нтерфейс до бази перекладених пов╕домлень на основ╕ po-tools. http://www.linux.org.ua/tools/index.php3

Поки що там ╓ лише так╕ можливост╕:

  • поновити ваш переклад вже перекладеними пов╕домленнями з бази;
  • пор╕вняти пов╕домлення в баз╕ ╕ в po-файл╕;
  • додати нов╕ пов╕домлення в базу;
  • отримати всю базу як один великий po-файл для роботи з нею на власному комп'ютер╕.

Використання утил╕т з KBabel

TODO

Користувач╕ KBabel - це вам писати. посм╕шка

В╕дб╕р част╕ших пов╕домлень у великих проектах

У великих проектах часто виника╓ потреба в╕д╕брати пов╕домлення, як╕ користувач бачить част╕ше за ╕нш╕, для того, щоб перекласти спочатку ╖х, оск╕льки на переклад ус╕╓╖ програми не вистача╓ сил. Для цього був створений Get Text Log, який перехоплю╓ запити на переклад пов╕домлень та збер╕га╓ ╖х у журнал╕.

Сл╕дкування за програмою за допомогою gettextlog

Get Text Log реал╕зований у вигляд╕ динам╕чно╖ б╕бл╕отеки, яка зам╕ня╓ функц╕╖ gettext сво╖ми заглушками. Вона завантажу╓ться в пам'ять перед початком роботи програми при вказан╕ ╖╖ в LD_PRELOAD, наприклад так:

$ LD_PRELOAD=/usr/local/lib/gettextlog.so gedit

Щоб ви не мучилися, я створив невеликий скриптик, run-with-gettextlog, який прийма╓ як аргумент програму, яку треба виконати, з параметрами. Наприклад:

$ run-with-gettextlog gedit

Файли з пов╕домленнями збер╕гаються у каталоз╕ gettextlog. Перед використанням файл╕в, ╖м потр╕бно спочатку п╕дправити заголовок та залишити лише по одному екземпляру пов╕домлення з допомогою команди msguniq.

Програми для прац╕ з .po-файлами

KBabel

kbabel, (UNIX - KDE);

Зн╕мок KBabel

Найпопулярн╕ша програма для перекладу - ма╓ багато р╕зних можливостей (користувач╕ KBabel - агов!, напиш╕ть щось). Рекоменду╓ться для використання.

GTranslator

gtranslator, (UNIX - GNOME);

Зн╕мок GTranslator

Ма╓ менше можливостей, досить багато помилок (особливо при перев╕рц╕ правопису). Основна перевага(для мене) - б╕льш зручн╕ший дизайн основного в╕кна та автоматичне розкодовування/закодування спец╕альних символ╕в (\n, \r, \t, \") - основна проблема для мене при використанн╕ KBabel чи простого текстового редактора. Рекоменду╓ться тим, хто використову╓ GNOME.

GTranslator ма╓ Автоматичний Буфер Навчання, який дозволя╓ збер╕гати вс╕ ваш╕ переклади та. п╕зн╕ше, використовувати ╖х для автоматично перекладу нових po-файл╕в, под╕бно до того, як це робить msgfmt.

Можна внести у базу ╫трансятора вже ╕снуюч╕ ваш╕ переклади але, при великих об'╓мах тексту в буфер╕, ╫Транслятор (як ╕ msgfmt) працю╓ надзвичайно пов╕льно.

poEdit

poEdit, (UNIX - GTK+, Windows - Win GUI?);

Зн╕мок poEdit

Не працював з ним, не знаю про переваги. Для тих, хто працю╓ ╕ п╕д Windows, ╕ п╕д Л╕нукс.

Emacs - po-mode.el

emacs (po-mode.el) (UNIX, Windows);

Для тих, хто користу╓ться Emacs. Цей пакет добре описаний в info по gettext. П╕дтриму╓ ус╕ можливост╕ gettext.

po-tools

(perl, в╕д платформи майже не залежить).

Наб╕р утил╕т командного рядка та CGI-скрипт для Тенет для ман╕пулювання po-файлами. Обм╕ном перекладеними пов╕домленнями через центральну базу на linux.org.ua, побудовану на основ╕ po-tools, можуть скористатися ус╕ бажаюч╕ - це дозволя╓ не перекладати пов╕домлення дв╕ч╕ чи трич╕. Нажаль не п╕дтриму╓ форми множини (msgstr_plural).

Комп╕ляц╕я файла з перекладами

Скористайтеся командою:

$ msgfmt ╕м'я_файлу.po -o ╕м'я_файлу.mo

Вона згенеру╓ дв╕йковий файл з перекладами. Цей дв╕йковий файл сл╕д покласти в каталог

/usr/share/locale/uk/LC_MESSAGES/
п╕д назвою package.mo (назва пакету та ж сама, яка була у pot-файла).

Тепер програма може його знайти та використати. Запуст╕ть ╖╖ та переконайтеся в цьому. Якщо ви все зробили в╕рно, то ви побачите сво╖ переклади.

Перев╕рка файла з перекладами

Скористайтеся командою :

$ msgfmt -c -v -o /dev/null ╕м'я_файлу.po
Вона також вида╓ статистику по к╕лькост╕ р╕зних тип╕в пов╕домлень (перекладених, не перекладених, неч╕тких).

З позиц╕╖ програм╕ста

Написання програми з п╕дтримкою локал╕зац╕╖

Наведемо простеньку програму, яка друку╓ пов╕домлення "Hello, world!" мовою користувача.

 1 #include <stdio.h>
 2 #include <locale.h>
 3 #include <libintl.h>
 4 #define _(x) gettext(x)
 5 
 6 int main(int argv, char **args)
 7 {
 8   setlocale (LC_ALL,""); 
 9   bindtextdomain ("test", "/tmp");
10   textdomain ("test");
11   
12   printf (_("Hello, world!\n")); 
13   
14   exit(0);
15 }

Спочатку встановлю╓ться локал╕зац╕я для програми:

  • У восьмому рядку ми встановлю╓мо поточну локал╕зац╕ю для програми на основ╕ зм╕нних середовища.
  • У дев'ятому рядку - вказу╓мо програм╕, де шукати файл з перекладами для нашо╖ програми.
  • В десятому - назву файла з перекладом.

Вив╕д пов╕домлення зд╕йсню╓ться у дванадцятому рядку. Зауважте, що у четвертому рядку був описаний макрос з назвою "_" який зам╕ня╓ться на виклик gettext().

Комп╕лю╓мо програму командою:

$ gcc -o test test.c

та запуска╓мо:

$ ./test
Hello, world!

Як бачимо, програма працю╓, але вона все ще не перекладена. Для перекладу програми необх╕дно

  1. Створити шаблон для перекладу (pot-файл), який м╕ститиме вс╕ пов╕домлення в програм╕, як╕ необх╕дно перекласти.
  2. Заповнити шаблон правильними значеннями та перекласти його на укра╖нську (створити po-файл).
  3. Скомп╕лювати переклад у дв╕йковий файл (mo-файл).
  4. Покласти скомп╕льований файл у каталог, де його шукатиме програма.

Шаблон створю╓ться командою

$ xgettext -o test.pot -k_ test.c
Параметр -k вказу╓, що треба, окр╕м gettext("text") та ╕нших стандартних функц╕й, шукати також _("text").

Шаблон вигляда╓ так:

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2003-03-19 18:52+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: test.c:12
msgid "Hello, world!\n"
msgstr ""

Тепер ми ма╓мо заповнити заголовок в╕рними значеннями та перекласти пов╕домлення, для прикладу, так:

msgid ""
msgstr ""
"Project-Id-Version: test 1.0\n"
"POT-Creation-Date: 2003-03-19 18:52+0200\n"
"PO-Revision-Date: 2003-03-19 18:52+0200\n"
"Last-Translator: Volodymyr M. Lisivka\n"
"Language-Team: Ukrainian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=koi8-u\n"
"Content-Transfer-Encoding: 8bit\n"

#: test.c:12
msgid "Hello, world!\n"
msgstr "Прив╕т, св╕т!\n"

Збережемо переклад у файл╕ uk.po. Тепер ми можемо в╕дкомп╕лювати його командою:

$ msgfmt -o test.mo uk.po

Тепер треба пом╕стити у каталог, де програма зможе його знайти. Ми вказали, що переклади сл╕д шукати у каталоз╕ /tmp, тому програма шукатиме його там.

Створимо необх╕дну структуру каталог╕в, як╕ вимагаються:

$ mkdir -p /tmp/uk_UA.KOI8-U/LC_MESSAGES

та покладемо туди наш переклад:

$ cp test.mo /tmp/uk_UA.KOI8-U/LC_MESSAGES/

та перев╕римо роботу програми:

$echo $LANG
uk_UA.KOI8-U
$ ./test
Прив╕т, св╕т!

Автор

-- Volodymyr Lisivka - 16-лис-2002

Дякую за допомогу Тарасу Бойчуку та привидам.

Додатков╕ посилання

Статт╕ на www.kde.org.ua;

Англо-укра╖нський словник техн╕чних терм╕н╕в;


Ваше пов╕домлення з'явиться п╕сля ц╕╓╖ форми у зворотньому порядку (нов╕ш╕ зверху)

Якщо я не помиляюся poEdit п╕д Windows. Треба вказати п╕д якими платформами працюють ц╕ програми ╕ дати л╕нки зв╕дки можна скачати. Гарно було б мати короткий опис можливостей цих програм.

-- TWiki Guest - 10-гру-2002


Класно було б перерахувати програми, як╕ працюють з ро чи роt файлами. ╤ р╕зноплатформенн╕.

-- TWiki Guest - 05-гру-2002

 

 

| Редагувати | Долучити | Для друку | Зм╕ни | Б╕льше |

Тема Locale.LocalizationTechnology; Верс╕я : r1.1 - 13-чер-2004 23:57 GMT - Main.guest