Prepare Translations for a Package

Share:

Description

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

Usage

1
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.

copyright, bugs

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.

See Also

xgettext2pot.

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.