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.