R: Prepare Translations for a Package

update_pkg_po {tools} | R Documentation

## Prepare Translations for a Package

### Description

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

### 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.
`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`.

[Package tools version 4.0.5 Index]