This avoids a warning from msgfmt:
$ msgfmt -v -o mercurial/locale/zh_TW/LC_MESSAGES/hg.mo i18n/zh_TW.po -c
i18n/zh_TW.po:7: warning: header field 'Language' still has the
initial default value
I mainly did the simple cases, like removing ".. note::", changing single
quotes to double quotes and adapting underlining.
Unhelpful msgstr in fuzzy entries are removed. (They were suggestions by the
program msgmerge.)
Strip the locations by running msgcat [1] as the wiki [2] tells to do. Do
this in a separate patch for getting a smaller one when updating from hg.pot.
[1] msgcat --no-location -o de.po de.po
[2] mercurial.selenic.com/wiki/TranslatingMercurial#Updating_a_Translation
When generating documentation, indentation must match for getting the same
view for translated messages. Often an output is generated anyway, but it
can look different. When a syntactically wrong indentation change is done,
runrst will fail (this is detected by test-gendoc.t).
Fix the simple places. When translation knowledge is necessary, the entry is
marked as fuzzy (and therefore skipped when generating translations). A
translator can fix it later.
.. note:: is rst syntax which must not be translated. Fix this in the
translations.
This is not the first time this happens, so there should be a note for the
translator. A later patch will change the generation of the po files to
write this automatically.
A test in i18n/check-translation.py could help as well.
Document generation by runrst in "doc" directory may succeed silently,
even though initial indentation is different between msgid and msgstr:
for example, it may be unexpected or missing indentation.
This patch adds the checker to check equality of initial indentation
between msgid and msgstr.
This checker is categorized as "warning" level, because problem
detected by this is not so serious for usual Mercurial usage.
Document generation by runrst in "doc" directory may succeed silently,
even though there is the translated message missing tail '::'. In this
case, it uses "<blockquote>" instead of "<pre>" to surround succeeding
text block unexpectedly in generated HTML file.
This patch adds the checker to check equality of tail '::'-ness
between msgid and msgstr.
To detect also msgstr unexpectedly ending with '::', this checker
doesn't have matching regexp against msgid, and is applied on all
msgid/msgstr pairs.
This checker is categorized as "warning" level, because problem
detected by this is not so serious for usual Mercurial usage.
rst directives like this one have been translated:
.. note::
To help the translator include a comment before such messages.
An entry containing a rst directive now looks like this:
#. do not translate: .. note::
#: path/to/file:75
msgid = ".. note:: to think about"
msgstr = ...
The German translation for "remote" as "entfernt" can be misleading
in situations where remote is used as a noun. "entfernt" is not a
noun and can also mean "removed". To clarify this we rename "remote"
to "Gegenseite" when used as a noun.
Existing tool like "msgfmt --check" can check typical translation
problems (missing "%s" in msgstr, for example), but can't check
Mercurial specific ones.
For example, "msgfmt --check" can't check whether the translated
string given to "ui.promptchoice()" is correct or not, even though
problems like below cause run-time error or unexpected behavior:
- less or more choices than msgid,
- choices without '&', or
- choices with '&' followed by none
This patch adds the tool to check Mercurial specific translation
problems in *.po files.