bfc1508d (kx 2023-03-24 03:55:33 +0300 1)
bfc1508d (kx 2023-03-24 03:55:33 +0300 2) First run:
bfc1508d (kx 2023-03-24 03:55:33 +0300 3) =========
bfc1508d (kx 2023-03-24 03:55:33 +0300 4)
bfc1508d (kx 2023-03-24 03:55:33 +0300 5) До первого запуска gettextize --force каталог po/ не должен существовать!
bfc1508d (kx 2023-03-24 03:55:33 +0300 6) При первом запуске gettextize --force создаются каталоги m4, po
bfc1508d (kx 2023-03-24 03:55:33 +0300 7) m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 8) ├── ChangeLog
bfc1508d (kx 2023-03-24 03:55:33 +0300 9) ├── gettext.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 10) ├── iconv.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 11) ├── lib-ld.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 12) ├── lib-link.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 13) ├── lib-prefix.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 14) ├── nls.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 15) ├── po.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 16) └── progtest.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 17)
bfc1508d (kx 2023-03-24 03:55:33 +0300 18) po
bfc1508d (kx 2023-03-24 03:55:33 +0300 19) ├── ChangeLog
bfc1508d (kx 2023-03-24 03:55:33 +0300 20) ├── Makefile.in.in
bfc1508d (kx 2023-03-24 03:55:33 +0300 21) ├── Makevars.template
bfc1508d (kx 2023-03-24 03:55:33 +0300 22) ├── POTFILES.in
bfc1508d (kx 2023-03-24 03:55:33 +0300 23) ├── Rules-quot
bfc1508d (kx 2023-03-24 03:55:33 +0300 24) ├── boldquot.sed
bfc1508d (kx 2023-03-24 03:55:33 +0300 25) ├── en@boldquot.header
bfc1508d (kx 2023-03-24 03:55:33 +0300 26) ├── en@quot.header
bfc1508d (kx 2023-03-24 03:55:33 +0300 27) ├── insert-header.sin
bfc1508d (kx 2023-03-24 03:55:33 +0300 28) ├── quot.sed
bfc1508d (kx 2023-03-24 03:55:33 +0300 29) └── remove-potcdate.sin
bfc1508d (kx 2023-03-24 03:55:33 +0300 30)
bfc1508d (kx 2023-03-24 03:55:33 +0300 31) скрипт ./update-gettext копирует файл po/Makevars.template в po/Makevars,
bfc1508d (kx 2023-03-24 03:55:33 +0300 32) если po/Makevars не существовал, а также перезаписывает gettext.h. Кроме
bfc1508d (kx 2023-03-24 03:55:33 +0300 33) того gettextize добавляет файл config.rpath, и редактирует файлы:
bfc1508d (kx 2023-03-24 03:55:33 +0300 34)
bfc1508d (kx 2023-03-24 03:55:33 +0300 35) Makefile.am:
bfc1508d (kx 2023-03-24 03:55:33 +0300 36)
bfc1508d (kx 2023-03-24 03:55:33 +0300 37) --- Makefile.am~ 2020-10-09 02:57:21.678843280 +0300
bfc1508d (kx 2023-03-24 03:55:33 +0300 38) +++ Makefile.am 2020-10-09 03:05:09.010316710 +0300
bfc1508d (kx 2023-03-24 03:55:33 +0300 39) @@ -5,9 +5,9 @@
bfc1508d (kx 2023-03-24 03:55:33 +0300 40) # In build order:
bfc1508d (kx 2023-03-24 03:55:33 +0300 41) # ==============
bfc1508d (kx 2023-03-24 03:55:33 +0300 42) #
bfc1508d (kx 2023-03-24 03:55:33 +0300 43) -SUBDIRS = csvncgi
bfc1508d (kx 2023-03-24 03:55:33 +0300 44) +SUBDIRS = po csvncgi
bfc1508d (kx 2023-03-24 03:55:33 +0300 45)
bfc1508d (kx 2023-03-24 03:55:33 +0300 46) -EXTRA_DIST = \
bfc1508d (kx 2023-03-24 03:55:33 +0300 47) +EXTRA_DIST = config.rpath m4/ChangeLog \
bfc1508d (kx 2023-03-24 03:55:33 +0300 48) doc l10n LICENSE README.md acsite.m4 bootstrap
bfc1508d (kx 2023-03-24 03:55:33 +0300 49)
bfc1508d (kx 2023-03-24 03:55:33 +0300 50) configure.ac:
bfc1508d (kx 2023-03-24 03:55:33 +0300 51)
bfc1508d (kx 2023-03-24 03:55:33 +0300 52) --- configure.ac~ 2020-10-09 02:16:40.812940376 +0300
bfc1508d (kx 2023-03-24 03:55:33 +0300 53) +++ configure.ac 2020-10-09 03:05:09.022316594 +0300
bfc1508d (kx 2023-03-24 03:55:33 +0300 54) @@ -267,7 +267,7 @@
bfc1508d (kx 2023-03-24 03:55:33 +0300 55) dnl ============================================================
bfc1508d (kx 2023-03-24 03:55:33 +0300 56) AC_MSG_CFG_PART(OUTPUT)
bfc1508d (kx 2023-03-24 03:55:33 +0300 57)
bfc1508d (kx 2023-03-24 03:55:33 +0300 58) -AC_CONFIG_FILES([
bfc1508d (kx 2023-03-24 03:55:33 +0300 59) +AC_CONFIG_FILES([ po/Makefile.in
bfc1508d (kx 2023-03-24 03:55:33 +0300 60) csvncgi/Makefile
bfc1508d (kx 2023-03-24 03:55:33 +0300 61) Makefile
bfc1508d (kx 2023-03-24 03:55:33 +0300 62)
bfc1508d (kx 2023-03-24 03:55:33 +0300 63) После первого запуска update-gettext необходимо отдать следующие файлы
bfc1508d (kx 2023-03-24 03:55:33 +0300 64) под версионный контроль:
bfc1508d (kx 2023-03-24 03:55:33 +0300 65)
bfc1508d (kx 2023-03-24 03:55:33 +0300 66) m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 67) ├── ChangeLog
bfc1508d (kx 2023-03-24 03:55:33 +0300 68) ├── gettext.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 69) ├── iconv.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 70) ├── lib-ld.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 71) ├── lib-link.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 72) ├── lib-prefix.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 73) ├── nls.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 74) ├── po.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 75) └── progtest.m4
bfc1508d (kx 2023-03-24 03:55:33 +0300 76)
bfc1508d (kx 2023-03-24 03:55:33 +0300 77) po
bfc1508d (kx 2023-03-24 03:55:33 +0300 78) ├── ChangeLog
bfc1508d (kx 2023-03-24 03:55:33 +0300 79) ├── Makefile.in.in
bfc1508d (kx 2023-03-24 03:55:33 +0300 80) ├── Makevars
bfc1508d (kx 2023-03-24 03:55:33 +0300 81) ├── POTFILES.in
bfc1508d (kx 2023-03-24 03:55:33 +0300 82) ├── Rules-quot
bfc1508d (kx 2023-03-24 03:55:33 +0300 83) ├── boldquot.sed
bfc1508d (kx 2023-03-24 03:55:33 +0300 84) ├── en@boldquot.header
bfc1508d (kx 2023-03-24 03:55:33 +0300 85) ├── en@quot.header
bfc1508d (kx 2023-03-24 03:55:33 +0300 86) ├── insert-header.sin
bfc1508d (kx 2023-03-24 03:55:33 +0300 87) ├── quot.sed
bfc1508d (kx 2023-03-24 03:55:33 +0300 88) └── remove-potcdate.sin
bfc1508d (kx 2023-03-24 03:55:33 +0300 89)
bfc1508d (kx 2023-03-24 03:55:33 +0300 90) ABOUT-NLS
bfc1508d (kx 2023-03-24 03:55:33 +0300 91) ChangeLog
bfc1508d (kx 2023-03-24 03:55:33 +0300 92) Makefile.am
bfc1508d (kx 2023-03-24 03:55:33 +0300 93) config.rpath
bfc1508d (kx 2023-03-24 03:55:33 +0300 94) configure.ac
bfc1508d (kx 2023-03-24 03:55:33 +0300 95) gettext.h
bfc1508d (kx 2023-03-24 03:55:33 +0300 96)
bfc1508d (kx 2023-03-24 03:55:33 +0300 97) При последующих запусках update-gettext будут обновляться файлы входящие в поставку
bfc1508d (kx 2023-03-24 03:55:33 +0300 98) gettext и, при необходимости, добавляться записи в ChangeLog файлы. Как правило,
bfc1508d (kx 2023-03-24 03:55:33 +0300 99) ChangeLog файлы будут обновляться только тогда, когда будет инсталлироваться новая
bfc1508d (kx 2023-03-24 03:55:33 +0300 100) версия gettext.
bfc1508d (kx 2023-03-24 03:55:33 +0300 101)
bfc1508d (kx 2023-03-24 03:55:33 +0300 102)
bfc1508d (kx 2023-03-24 03:55:33 +0300 103) Далее можно будет держать в каталоге po/ или копировать в каталог po/ с помощью
bfc1508d (kx 2023-03-24 03:55:33 +0300 104) скрипта bootstrap файлы LINGUAS, csvn-ui.pot, ru_RU.utf8.po, а также обновлять
bfc1508d (kx 2023-03-24 03:55:33 +0300 105) содержимое файла po/POTFILES.in.
bfc1508d (kx 2023-03-24 03:55:33 +0300 106)
bfc1508d (kx 2023-03-24 03:55:33 +0300 107) Для корректной работы команд make, make dist необходимо наличие файлов po/LINGUAS,
bfc1508d (kx 2023-03-24 03:55:33 +0300 108) po/csvn-ui.pot, po/ru_RU.utf8.po, кроме того время последнего изменения данных файлов
bfc1508d (kx 2023-03-24 03:55:33 +0300 109) должно удовлетворять зависимостям описанным в Make-файлах. То есть, если мы хотим
bfc1508d (kx 2023-03-24 03:55:33 +0300 110) обновить po/POTFILES.in по окончании процедуры bootstrap, то перед конфигурированием
bfc1508d (kx 2023-03-24 03:55:33 +0300 111) и сборкой необходимо обновить дату:
bfc1508d (kx 2023-03-24 03:55:33 +0300 112)
bfc1508d (kx 2023-03-24 03:55:33 +0300 113) $ cd po
bfc1508d (kx 2023-03-24 03:55:33 +0300 114) $ touch --touch --reference=Makefile.in.in LINGUAS POTFILES.in ru_RU.utf8.po
bfc1508d (kx 2023-03-24 03:55:33 +0300 115)
bfc1508d (kx 2023-03-24 03:55:33 +0300 116) Далее мы опишем все процедуры по созданию и обновлению файлов в каталоге po/
bfc1508d (kx 2023-03-24 03:55:33 +0300 117) для успешной локализации продукта.
bfc1508d (kx 2023-03-24 03:55:33 +0300 118)
bfc1508d (kx 2023-03-24 03:55:33 +0300 119)
bfc1508d (kx 2023-03-24 03:55:33 +0300 120) Makevars
bfc1508d (kx 2023-03-24 03:55:33 +0300 121) ========
bfc1508d (kx 2023-03-24 03:55:33 +0300 122)
bfc1508d (kx 2023-03-24 03:55:33 +0300 123) Прежде всего, необходимо отредактировать файл Makevars для того, чтобы при создании
bfc1508d (kx 2023-03-24 03:55:33 +0300 124) source distribution с помощью команды:
bfc1508d (kx 2023-03-24 03:55:33 +0300 125)
bfc1508d (kx 2023-03-24 03:55:33 +0300 126) $ make dist
bfc1508d (kx 2023-03-24 03:55:33 +0300 127)
bfc1508d (kx 2023-03-24 03:55:33 +0300 128) обновление csvn-ui.pot файла, а также файлов *.po и *.gmo происходило корректно
bfc1508d (kx 2023-03-24 03:55:33 +0300 129)
bfc1508d (kx 2023-03-24 03:55:33 +0300 130)
bfc1508d (kx 2023-03-24 03:55:33 +0300 131) Значения переменных:
bfc1508d (kx 2023-03-24 03:55:33 +0300 132) -------------------
bfc1508d (kx 2023-03-24 03:55:33 +0300 133)
bfc1508d (kx 2023-03-24 03:55:33 +0300 134) XGETTEXT_OPTIONS = --keyword=N_ --keyword=_ --keyword=Q_:1,2 \
bfc1508d (kx 2023-03-24 03:55:33 +0300 135) --language=C --add-comments --sort-output --no-wrap
bfc1508d (kx 2023-03-24 03:55:33 +0300 136)
bfc1508d (kx 2023-03-24 03:55:33 +0300 137) COPYRIGHT_HOLDER = Andrey V.Kosteltsev.
bfc1508d (kx 2023-03-24 03:55:33 +0300 138)
bfc1508d (kx 2023-03-24 03:55:33 +0300 139) PACKAGE_GNU = no
bfc1508d (kx 2023-03-24 03:55:33 +0300 140)
bfc1508d (kx 2023-03-24 03:55:33 +0300 141) MSGID_BUGS_ADDRESS = <support@radix.pro>
bfc1508d (kx 2023-03-24 03:55:33 +0300 142)
bfc1508d (kx 2023-03-24 03:55:33 +0300 143) MSGMERGE_OPTIONS = --update --no-wrap --sort-output --backup=simple
bfc1508d (kx 2023-03-24 03:55:33 +0300 144)
bfc1508d (kx 2023-03-24 03:55:33 +0300 145) MSGINIT_OPTIONS = --no-wrap
bfc1508d (kx 2023-03-24 03:55:33 +0300 146)
bfc1508d (kx 2023-03-24 03:55:33 +0300 147)
bfc1508d (kx 2023-03-24 03:55:33 +0300 148)
bfc1508d (kx 2023-03-24 03:55:33 +0300 149) Локализация:
bfc1508d (kx 2023-03-24 03:55:33 +0300 150) ===========
bfc1508d (kx 2023-03-24 03:55:33 +0300 151)
bfc1508d (kx 2023-03-24 03:55:33 +0300 152) Если первый запуск gettextize состоялся и все необходимые файлы были отданы
bfc1508d (kx 2023-03-24 03:55:33 +0300 153) под версионный контроль, то последующие запуски update-gettext можно осуществлять
bfc1508d (kx 2023-03-24 03:55:33 +0300 154) не беспокоясь о том, что файлы будут испорчены. Делать это нужно до вызова bootstrap
bfc1508d (kx 2023-03-24 03:55:33 +0300 155) и configure.
bfc1508d (kx 2023-03-24 03:55:33 +0300 156)
bfc1508d (kx 2023-03-24 03:55:33 +0300 157) Далее, можно заняться непосредственно локализацией продукта. Первое, что необходимо
bfc1508d (kx 2023-03-24 03:55:33 +0300 158) сделать, это создать файл .pot .
bfc1508d (kx 2023-03-24 03:55:33 +0300 159)
bfc1508d (kx 2023-03-24 03:55:33 +0300 160) В файле config.h, создаваемым скриптом configure, будет определена константа
bfc1508d (kx 2023-03-24 03:55:33 +0300 161) PACKAGE, например:
bfc1508d (kx 2023-03-24 03:55:33 +0300 162)
bfc1508d (kx 2023-03-24 03:55:33 +0300 163) /* Name of package */
bfc1508d (kx 2023-03-24 03:55:33 +0300 164) #define PACKAGE "csvn-ui"
bfc1508d (kx 2023-03-24 03:55:33 +0300 165)
bfc1508d (kx 2023-03-24 03:55:33 +0300 166) и в данном случае, доменом по умолчанию следует считать имя 'csvn-ui'. Файл csvn-ui.pot
bfc1508d (kx 2023-03-24 03:55:33 +0300 167) можно создать следующим образом:
bfc1508d (kx 2023-03-24 03:55:33 +0300 168)
bfc1508d (kx 2023-03-24 03:55:33 +0300 169) $ xgettext --keyword=N_ --keyword=_ --keyword=Q_:1,2 \
bfc1508d (kx 2023-03-24 03:55:33 +0300 170) --language=C --add-comments --sort-output --no-wrap \
bfc1508d (kx 2023-03-24 03:55:33 +0300 171) --copyright-holder="Andrey V.Kosteltsev." \
bfc1508d (kx 2023-03-24 03:55:33 +0300 172) --msgid-bugs-address="<support@radix.pro>" \
bfc1508d (kx 2023-03-24 03:55:33 +0300 173) --default-domain=csvn-ui --output=po/csvn-ui.pot \
bfc1508d (kx 2023-03-24 03:55:33 +0300 174) `find -type f -name "*.c"`
bfc1508d (kx 2023-03-24 03:55:33 +0300 175)
bfc1508d (kx 2023-03-24 03:55:33 +0300 176) для удобства мы создали скрипт gen-pot-file, который выполняет команду xgettext
bfc1508d (kx 2023-03-24 03:55:33 +0300 177) с нужными параметрами. Его следует запускать сразу после обновления исходных
bfc1508d (kx 2023-03-24 03:55:33 +0300 178) кодов программы, откуда xgettext извлекает строки для последующего перевода.
bfc1508d (kx 2023-03-24 03:55:33 +0300 179)
bfc1508d (kx 2023-03-24 03:55:33 +0300 180) Ключевые слова N_, _, Q_:1,2 означают следующее:
bfc1508d (kx 2023-03-24 03:55:33 +0300 181)
bfc1508d (kx 2023-03-24 03:55:33 +0300 182) N_ - извлекаются строки типа N_("string"), которые будут присутствовать в csvn-ui.pot
bfc1508d (kx 2023-03-24 03:55:33 +0300 183) файле, но переводиться не будут.
bfc1508d (kx 2023-03-24 03:55:33 +0300 184)
bfc1508d (kx 2023-03-24 03:55:33 +0300 185) _ - извлекаются строки типа _("string"), которые будут переводиться на другие языки.
bfc1508d (kx 2023-03-24 03:55:33 +0300 186)
bfc1508d (kx 2023-03-24 03:55:33 +0300 187) Q_:1,2 - извлекается первая и вторая строка из конструкций типа:
bfc1508d (kx 2023-03-24 03:55:33 +0300 188)
bfc1508d (kx 2023-03-24 03:55:33 +0300 189) Q_("%u byte", "%u bytes", (unsigned)bytes)
bfc1508d (kx 2023-03-24 03:55:33 +0300 190)
bfc1508d (kx 2023-03-24 03:55:33 +0300 191) и в файле csvn-ui.pot будут создаваться записи подобные следующей:
bfc1508d (kx 2023-03-24 03:55:33 +0300 192)
bfc1508d (kx 2023-03-24 03:55:33 +0300 193) #. TRANSLATORS: IEC 80000-13:2008 byte
bfc1508d (kx 2023-03-24 03:55:33 +0300 194) #: csvncgi/strbuf.c:558
bfc1508d (kx 2023-03-24 03:55:33 +0300 195) #, c-format
bfc1508d (kx 2023-03-24 03:55:33 +0300 196) msgid "%u byte"
bfc1508d (kx 2023-03-24 03:55:33 +0300 197) msgid_plural "%u bytes"
bfc1508d (kx 2023-03-24 03:55:33 +0300 198) msgstr[0] ""
bfc1508d (kx 2023-03-24 03:55:33 +0300 199) msgstr[1] ""
bfc1508d (kx 2023-03-24 03:55:33 +0300 200)
bfc1508d (kx 2023-03-24 03:55:33 +0300 201) Таким образом с помощью ngettext() можно добиться корректного перевода числительных,
bfc1508d (kx 2023-03-24 03:55:33 +0300 202) например, 1 байт, 10 байтов, 21 байт .
bfc1508d (kx 2023-03-24 03:55:33 +0300 203)
bfc1508d (kx 2023-03-24 03:55:33 +0300 204) Справка по --keywords здесь: https://www.gnu.org/software/gettext/manual/html_node/Default-Keywords.html
bfc1508d (kx 2023-03-24 03:55:33 +0300 205)
bfc1508d (kx 2023-03-24 03:55:33 +0300 206) Далее необходимо обновить файл POTFILES.in, записав в него список исходных файлов, в которых
bfc1508d (kx 2023-03-24 03:55:33 +0300 207) существуют строки для перевода. Сделать это можно вручную следующим образом:
bfc1508d (kx 2023-03-24 03:55:33 +0300 208)
bfc1508d (kx 2023-03-24 03:55:33 +0300 209) # List of source files which contain translatable strings.
bfc1508d (kx 2023-03-24 03:55:33 +0300 210)
bfc1508d (kx 2023-03-24 03:55:33 +0300 211) # cSvn CGI source files
bfc1508d (kx 2023-03-24 03:55:33 +0300 212) csvncgi/fatal.c
bfc1508d (kx 2023-03-24 03:55:33 +0300 213) csvncgi/strbuf.c
bfc1508d (kx 2023-03-24 03:55:33 +0300 214) . . .
bfc1508d (kx 2023-03-24 03:55:33 +0300 215)
bfc1508d (kx 2023-03-24 03:55:33 +0300 216) Напомним, что po/POTFILES.in находится под версионным контролем.
bfc1508d (kx 2023-03-24 03:55:33 +0300 217)
bfc1508d (kx 2023-03-24 03:55:33 +0300 218) Кроме того, под версионным контролем должен находиться файл po/LINGUAS, например,
bfc1508d (kx 2023-03-24 03:55:33 +0300 219) следующего содержания:
bfc1508d (kx 2023-03-24 03:55:33 +0300 220)
bfc1508d (kx 2023-03-24 03:55:33 +0300 221) # Set of available languages.
bfc1508d (kx 2023-03-24 03:55:33 +0300 222)
bfc1508d (kx 2023-03-24 03:55:33 +0300 223) ru_RU.utf8
bfc1508d (kx 2023-03-24 03:55:33 +0300 224)
bfc1508d (kx 2023-03-24 03:55:33 +0300 225) Поскольку в файле LINGUAS присутствует сторока 'ru_RU.utf8', в каталоге, po/
bfc1508d (kx 2023-03-24 03:55:33 +0300 226) должен находиться файл po/ru_RU.utf8.po, начальное состояние которого можно
bfc1508d (kx 2023-03-24 03:55:33 +0300 227) получить с помощью утилиты msginit:
bfc1508d (kx 2023-03-24 03:55:33 +0300 228)
bfc1508d (kx 2023-03-24 03:55:33 +0300 229) $ cd po/
bfc1508d (kx 2023-03-24 03:55:33 +0300 230) $ msginit --no-wrap --locale=ru_RU.utf8 --input=csvn-ui.pot --output=ru_RU.utf8.po
bfc1508d (kx 2023-03-24 03:55:33 +0300 231)
bfc1508d (kx 2023-03-24 03:55:33 +0300 232) Утилита msginit запросит подтверждение почтового адреса:
bfc1508d (kx 2023-03-24 03:55:33 +0300 233) =======================================================
bfc1508d (kx 2023-03-24 03:55:33 +0300 234) The new message catalog should contain your email address, so that users can
bfc1508d (kx 2023-03-24 03:55:33 +0300 235) give you feedback about the translations, and so that maintainers can contact
bfc1508d (kx 2023-03-24 03:55:33 +0300 236) you in case of unexpected technical problems.
bfc1508d (kx 2023-03-24 03:55:33 +0300 237)
bfc1508d (kx 2023-03-24 03:55:33 +0300 238) Is the following your email address?
bfc1508d (kx 2023-03-24 03:55:33 +0300 239) kx@cardhu.radix.pro
bfc1508d (kx 2023-03-24 03:55:33 +0300 240) Please confirm by pressing Return, or enter your email address.
bfc1508d (kx 2023-03-24 03:55:33 +0300 241) kx@radix.pro
bfc1508d (kx 2023-03-24 03:55:33 +0300 242) Retrieving http://translationproject.org/team/index.html... done.
bfc1508d (kx 2023-03-24 03:55:33 +0300 243) A translation team for your language (ru) does not exist yet.
bfc1508d (kx 2023-03-24 03:55:33 +0300 244) If you want to create a new translation team for ru, please visit
bfc1508d (kx 2023-03-24 03:55:33 +0300 245) http://www.iro.umontreal.ca/contrib/po/HTML/teams.html
bfc1508d (kx 2023-03-24 03:55:33 +0300 246) http://www.iro.umontreal.ca/contrib/po/HTML/leaders.html
bfc1508d (kx 2023-03-24 03:55:33 +0300 247) http://www.iro.umontreal.ca/contrib/po/HTML/index.html
bfc1508d (kx 2023-03-24 03:55:33 +0300 248)
bfc1508d (kx 2023-03-24 03:55:33 +0300 249) Created ru_RU.utf8.po.
bfc1508d (kx 2023-03-24 03:55:33 +0300 250)
bfc1508d (kx 2023-03-24 03:55:33 +0300 251) Создание файла ru_RU.utf8.po с помощью команды
bfc1508d (kx 2023-03-24 03:55:33 +0300 252)
bfc1508d (kx 2023-03-24 03:55:33 +0300 253) $ msginit --no-wrap --locale=ru_RU.utf8 --input=csvn-ui.pot --output=ru_RU.utf8.po
bfc1508d (kx 2023-03-24 03:55:33 +0300 254)
bfc1508d (kx 2023-03-24 03:55:33 +0300 255) лучше выполнять после конфигурирования исходников для того, чтобы в заголовочном коментарии
bfc1508d (kx 2023-03-24 03:55:33 +0300 256) файла ru_RU.utf8.po имя пакета было задано корректно. То есть csvn-ui по имени PACKAGE.
bfc1508d (kx 2023-03-24 03:55:33 +0300 257)
bfc1508d (kx 2023-03-24 03:55:33 +0300 258)
bfc1508d (kx 2023-03-24 03:55:33 +0300 259) Правила перевода числительных записывается на языке С и, для русского языка:
bfc1508d (kx 2023-03-24 03:55:33 +0300 260)
bfc1508d (kx 2023-03-24 03:55:33 +0300 261) "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
bfc1508d (kx 2023-03-24 03:55:33 +0300 262)
bfc1508d (kx 2023-03-24 03:55:33 +0300 263) дает:
bfc1508d (kx 2023-03-24 03:55:33 +0300 264)
bfc1508d (kx 2023-03-24 03:55:33 +0300 265) [0] строка
bfc1508d (kx 2023-03-24 03:55:33 +0300 266) [1] строки
bfc1508d (kx 2023-03-24 03:55:33 +0300 267) [2] строк
bfc1508d (kx 2023-03-24 03:55:33 +0300 268)
bfc1508d (kx 2023-03-24 03:55:33 +0300 269)
bfc1508d (kx 2023-03-24 03:55:33 +0300 270) В дальнейшем, так как файл ru_RU.utf8.po находится под версионным контролем,
bfc1508d (kx 2023-03-24 03:55:33 +0300 271) его надо будет только обновлять.
bfc1508d (kx 2023-03-24 03:55:33 +0300 272)
bfc1508d (kx 2023-03-24 03:55:33 +0300 273) Допустим в исходные файлы на языке С были добавлены строки, подлежащие переводу, и надо обновить
bfc1508d (kx 2023-03-24 03:55:33 +0300 274) файл ru_RU.utf8.po, чтобы в него попали новые строки. Для обновления файла ru_RU.utf8.po, сначала
bfc1508d (kx 2023-03-24 03:55:33 +0300 275) нужно обновить файл po/csvn-ui.pot с помощью скрипта gen-pot-file:
bfc1508d (kx 2023-03-24 03:55:33 +0300 276)
bfc1508d (kx 2023-03-24 03:55:33 +0300 277) $ l10n/gen-pot-file
bfc1508d (kx 2023-03-24 03:55:33 +0300 278)
bfc1508d (kx 2023-03-24 03:55:33 +0300 279) и затем, обновить файл po/ru_RU.utf8.po:
bfc1508d (kx 2023-03-24 03:55:33 +0300 280)
bfc1508d (kx 2023-03-24 03:55:33 +0300 281) $ cd po/
bfc1508d (kx 2023-03-24 03:55:33 +0300 282) $ msgmerge --update --no-wrap --sort-output --backup=simple ru_RU.utf8.po csvn-ui.pot
bfc1508d (kx 2023-03-24 03:55:33 +0300 283)
bfc1508d (kx 2023-03-24 03:55:33 +0300 284) Cтарый файл будет сохранен с именем po/ru_RU.utf8.po~
bfc1508d (kx 2023-03-24 03:55:33 +0300 285)
bfc1508d (kx 2023-03-24 03:55:33 +0300 286)
bfc1508d (kx 2023-03-24 03:55:33 +0300 287) Таким образом для обновления как самой утилиты gettext, так и файлов локализации, следует
bfc1508d (kx 2023-03-24 03:55:33 +0300 288) (в корне исходного пакета программ) вызывать процедуры обновления в следующем порядке:
bfc1508d (kx 2023-03-24 03:55:33 +0300 289)
bfc1508d (kx 2023-03-24 03:55:33 +0300 290) $ ./l10n/update-gettext
bfc1508d (kx 2023-03-24 03:55:33 +0300 291) $ ./l10n/gen-pot-file
bfc1508d (kx 2023-03-24 03:55:33 +0300 292) $ ./l10n/merge-ru_RU.utf8-messages
bfc1508d (kx 2023-03-24 03:55:33 +0300 293)
bfc1508d (kx 2023-03-24 03:55:33 +0300 294) Остается только не забывать добавлять новые файлы в po/POTFILES.in, а при добавлении новых
bfc1508d (kx 2023-03-24 03:55:33 +0300 295) языков (локалей), дополнять файл po/LINGUAS. И наконец еще одно замечание. В файлах *.po,
bfc1508d (kx 2023-03-24 03:55:33 +0300 296) при обновлении номера версии продукта, строку:
bfc1508d (kx 2023-03-24 03:55:33 +0300 297)
bfc1508d (kx 2023-03-24 03:55:33 +0300 298) "Project-Id-Version: csvn-ui 0.0.6\n"
bfc1508d (kx 2023-03-24 03:55:33 +0300 299)
bfc1508d (kx 2023-03-24 03:55:33 +0300 300) надо обновлять вручную (разумеется если .po файл уже существует под версионным контролем,
bfc1508d (kx 2023-03-24 03:55:33 +0300 301) а не создается вновь с помощью утилиты msginit).
bfc1508d (kx 2023-03-24 03:55:33 +0300 302)
bfc1508d (kx 2023-03-24 03:55:33 +0300 303)
bfc1508d (kx 2023-03-24 03:55:33 +0300 304) Файл nls.h обеспечивает исходный код макроопределениями на случай использования gettext,
bfc1508d (kx 2023-03-24 03:55:33 +0300 305) а также без использования GNU gettext, когда при конфигурировании выбирается опция:
bfc1508d (kx 2023-03-24 03:55:33 +0300 306)
bfc1508d (kx 2023-03-24 03:55:33 +0300 307) $ ./configure --disable-nls
bfc1508d (kx 2023-03-24 03:55:33 +0300 308)
bfc1508d (kx 2023-03-24 03:55:33 +0300 309) Более подробную информацию об утилитах GNU gettext можно получить по адресу:
bfc1508d (kx 2023-03-24 03:55:33 +0300 310)
bfc1508d (kx 2023-03-24 03:55:33 +0300 311) https://www.gnu.org/software/gettext/manual/gettext.html
bfc1508d (kx 2023-03-24 03:55:33 +0300 312)
bfc1508d (kx 2023-03-24 03:55:33 +0300 313)
bfc1508d (kx 2023-03-24 03:55:33 +0300 314) Enjoy.