Prepare the po
directory of a package and compile and install
the translations.
update_pkg_po(pkgdir, pkg = NULL, version = NULL, copyright, bugs)
The path to the package directory.
The package name: if NULL
it is read from the package's
DESCRIPTION
file.
The package version: if NULL
it is read from the
package's DESCRIPTION
file.
optional character strings for the Copyright and Report-Msgid-Bugs-To details in the template files.
This function requires the following tools from the GNU
gettext-tools
: xgettext
, msgmerge
,
msgfmt
, msginit
and msgconv
. These are
part of most Linux distributions and easily compiled from the sources
on Unix-alikes (including macOS). Pre-compiled versions for
Windows are available in
https://www.stats.ox.ac.uk/pub/Rtools/goodies/gettext-tools.zip.
It will probably not work correctly for en@quot
translations
except in a UTF-8 locale, so these are skipped elsewhere.
This performs a series of steps to prepare or update messages in the package.
If the package sources do not already have a po
directory, one is created.
xgettext2pot
is called to create/update a file
po/R-pkgname.pot
containing the translatable messages
in the package.
All existing files in directory po
with names
R-lang.po
are updated from R-pkgname.pot
,
checkPoFile
is called on the updated file, and if
there are no problems the file is compiled and installed under
inst/po
.
In a UTF-8 locale, a ‘translation’ R-en@quot.po
is created with UTF-8 directional quotes, compiled and installed
under inst/po
.
The remaining steps are done only if file
po/pkgname.pot
already exists. The
src/*.{c,cc,cpp,m,mm}
files in the package are examined to
create a file po/pkgname.pot
containing the translatable
messages in the C/C++ files. If there is a src/windows
directory, files within it are also examined.
All existing files in directory po
with names
lang.po
are updated from pkgname.pot
,
checkPoFile
is called on the updated file, and if
there are no problems the file is compiled and
installed under inst/po
.
In a UTF-8 locale, a ‘translation’ en@quot.po
is
created with UTF-8 directional quotes, compiled and installed under
inst/po
.
Note that C/C++ messages are not automatically prepared for
translation as they need to be explicitly marked for translation in
the source files. Once that has been done, create an empty file
po/pkgname.pot
in the package sources and run this
function again.
pkg = "base"
is special (and for use by R developers only):
the C files are not in the package directory but in the main sources.