update_pkg_po {tools} | R Documentation |
Prepare the ‘po’ directory of a package and optionally compile and install the translations.
update_pkg_po(pkgdir, pkg = NULL, version = NULL,
pot_make = TRUE, mo_make = TRUE,
verbose = getOption("verbose"),
mergeOpts = "", copyright, bugs)
pkgdir |
The path to the package directory. |
pkg |
The package name: if |
version |
The package version: if |
pot_make , mo_make |
|
verbose |
|
mergeOpts |
a string, by default empty, of space-separated options to
|
copyright , bugs |
optional character strings for the ‘Copyright’ and ‘Report-Msgid-Bugs-To’ details in the template files. |
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.
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.