# 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 OS X). Pre-compiled versions for Windows are available in http://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.