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".