Math Processor Unit Library

libmpu – library of arithmetic functions for integer, real, and complex numbers of increased digit capacity

16 Commits   0 Branches   2 Tags
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.