aptitude: information for translators

Aptitude uses the standard gettext mechanism for translations.  However,
there are a few twists that you should be aware of.

  * Documents using po4a -- man page, user's manual

    These documents can be translated and maintained quite simply
    using po4a.  The po template is doc/po4a/po/aptitude.pot and
    contains messages associated with all the documents.  If you just
    wish to translate the man page then focus on the entities from
    manpage.xml.

    The user's manual is typically supplied in both html form, for
    offline reading, and text form (README.$LANG), for browsing from
    the program.  We have set up a makefile system which makes it
    simple to generate and install the translated documents, see the
    file doc/xx/Makefile.am to get started.

    All a translator needs to do is provide a po file based on the
    doc/po4a/po/aptitude.pot template.  Additionally, if translating
    the user's manual, please also provide screenshots based on those
    in doc/en/images/.

  * External data files.

    There are several external data files that you can choose to
    translate: help.txt (online help), help-mine.txt (online help for
    Minesweeper), and README (user's manual/online manual).

    README is generated using po4a or by translating aptitude.xml
    manually.  See the previous section for using po4a.

    The online help files, help.txt and help-mine.txt, are
    quite tractable and it is recommended that you translate
    them. (especially help.txt)

    aptitude applies gettext to the file names before loading them, so
    to tell it that you've translated (eg) help.txt to help-de.txt,
    you should add a translation "help.txt" -> "help-de.txt".

    In addition, each translated file name has a corresponding
    described translation (see below) indicating its encoding.  You
    should translate this as necessary if you write an alternate file.

  * Manpage.

    [This section is old and only applies if you do not wish to use
     po4a for the man page.]

    aptitude has a manpage, and it can be translated; if you choose to
    translate it, your translation should be named aptitude.XX.1
    (replace XX with the language code)

  * fragf

    aptitude uses an internal function called fragf to format text
    with display attributes.  This function works somewhat like
    printf, but most escape codes have different meanings.  For
    instance, %B enables the "bold" character attribute, while %b
    disables it.  See src/vscreen/fragment.h for a full description of
    all escape codes.  You can use parameter numbers (eg, %1$F) if
    your language needs to reorder the arguments.

  * key translations

    Where it makes sense, aptitude allows the default keybinding
    assigned to a command to be translated.  This is done by creating
    a dummy translated string ending in "_key"; the first character of
    the string is the default binding of the key.  For instance, the
    string "yes_key" is used to set the default binding for buttons
    labelled "Yes".  To bind "j" to this command, you could translate
    "yes_key" to "ja_key", "ja", or even just "j".

  * Described translations

    Some translations have descriptions or disambiguating text to the
    left of the input and output string.  In these cases, everything
    up to and including the first pipe character will be removed
    before the string is used.  If no pipe character is present in the
    string, the string will be used without modifications.

    For instance, the string "help.txt encoding|UTF-8" can be
    translated to either "help.txt encoding|ISO-8859-1",
    "|ISO-8859-1", or "ISO-8859-1", and will have the same effect in
    each case.

  * aptitude-defaults

    English messages can be found in file section-descriptions. Paragraph
    separators are " .\n" not "\n\n".
