# update_pkg_po

0th

Percentile

##### Prepare Translations for a Package

Prepare the po directory of a package and compile and install the translations.

Keywords
utilities
##### Usage
update_pkg_po(pkgdir, pkg = NULL, version = NULL, copyright, bugs)
##### Arguments
pkgdir

The path to the package directory.

pkg

The package name: if NULL it is read from the package's DESCRIPTION file.

version

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.

##### Details

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.

##### System requirements

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.

xgettext2pot.