The Makefile.in.in here was originally produced by gettextize, but has since been modified extensively. If you convert a C file for use with gettext, add it to POTFILES.in and then run make update-po to recreate R.pot and update the automated `translations'. Target make update-pkg-po updates the message catalogs for the C and R code in the standard packages, uses msgmerge --update to update the translations and then re-makes the compiled (.mo) files. To do this for an individual standard package use make pkg-update PKG= If you add a package, R-level catalogs are produced automatically but for a C-level catalog you need to touch path/to/package/po/package.pot. To add a new translation, add the lang.po file to this directory and add the language to LINGUAS, and translators to THANKS. If there are no problems with the translations 'make all R' (in the builddir, if separate) will do the rest (create ll.gmo and install it as required). For fuller manual control, use msgfmt -c --statistics -o ll.gmo ll.po to check and compile the translation, and mkdir R_BUILD_DIR/share/locale/ll/LC_MESSAGES cp ll.gmo R_BUILD_DIR/share/locale/ll/LC_MESSAGES/R.mo to install it manually for testing. An R-core member, after fixing a translation file, e.g., ../src/library//po/R-.po needs to use msgfmt as above, e.g., inside the /po/ directory, msgfmt -c --statistics -o R-.gmo R-.po and mv R-.gmo ../inst/po//LC_MESSAGES/R-tools.mo Windows RGui translations ========================= These are contained in RGui.pot, created by running 'make RGui.pot-update'. Translations should be called RGui-ll.po for language 'll': such a file is compiled by msgfmt -c --statistics -o RGui-ll.gmo RGui-ll.po To add a translation, add both the .po and .gmo files to the RGUI-CATALOGS macro in Makefile.in.in: it will then be automatically distributed. To test a translation on Windows, use cp RGui-ll.gmo ../share/locale/ll/LC_MESSAGES/RGui.mo and then startup RGui.exe in an appropriate locale, or set LANGUAGE=ll on the command line. (All RGui-*.gmo files will installed to the right places when 'make -f Makefile.win' is run in this directory, which is part of the main 'make' process.) To re-make RGui.pot and all the translations use 'make update-RGui'. Adding translations to other packages ===================================== To create the .pot files for a package PKG with absolute path PKGDIR, use mkdir ${PKGDIR}/po and (only) if there are marked translations in the C source code touch ${PKGDIR}/po/${PKG}.pot Then run from this directory make pkg-update PKG=${PKG} PKGDIR=${PKGDIR} This will create ${PKGDIR}/po/R-${PKG}.pot, and update ${PKGDIR}/po/${PKG}.pot if it already exists. It will then create en@quot translations and install them. Running the same make command at a later stage will update the template files, and update and install any new translations that have been added in ${PKGDIR}/po. Note to FreeBSD and OS X users ============================== NB: FreeBSD's sed does not work correctly (it appends LF to every line), so GNU sed is required. Set the environment variable SED as needed.