I'm trying to add en_SG
translations to an R package, but I'm met with a gettext error and I haven't seen any source on what's the issue:
list.files('po')
# [1] "R-myPkg.pot"
# [2] "R-en_SG.po"
tools::update_pkg_po('.')
has output:
R-en_SG:. done.
msgfmt: po/R-en_SG.po: warning: PO file header missing or invalid
warning: charset conversion will not work
msgfmt: found 1 fatal error
Warning in tools::update_pkg_po(".") :
running msgfmt on R-en_SG.po failed
R-en@quot:
2 translated messages.
What exactly am I missing?
PO files should have a "header" which is really an entry with a translation for the empty string. It looks like this:
# German translations for qgoda package.
# Copyright (C) 2018 Guido Flohr <http://www.guido-flohr.net>
# This file is distributed under the same license as the qgoda package.
# Guido Flohr <guido.flohr@dontspam.me>, 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: qgoda 0.1.1\n"
"Report-Msgid-Bugs-To: Guido Flohr <guido.flohr@dontspam.me>\n"
"POT-Creation-Date: 2018-05-16 20:36+0300\n"
"PO-Revision-Date: 2018-05-16 20:37+0300\n"
"Last-Translator: Guido Flohr <guido.flohr@donstspam.me>\n"
"Language-Team: German\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
This header contains meta information for the catalog, for example the encoding of the PO file in the Content-Type
header field. You are missing this header field.
I don't know how you generate the file po/R-en_SG.po
but you have to ensure that it contains at least a minimal PO header. In doubt, you have to add it manually.