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