Open main menu

HOWTO-Translate ScummVM GUI

Revision as of 13:40, 19 June 2010 by Criezy (talk | contribs) (→‎Creating or Updating a translation file: add note on use of % in the strings)

Creating or Updating a translation file

Translations can be produced with the use of the GNU gettext tools.

To create or edit a translation file you can for example use Emacs PO-Mode or Poedit which are both free and available for various platforms. For a new translation, use po/scummvm.pot (from the source code repository) as a template and fill out the header. Then you just have to translate the strings and save your work in a po file.

Please note that:

  • The current implementation in ScummVM supports only single byte encoding. So don't use UTF-8 encoding for the po file. Latin1 (ISO 8859-1) is fine for most western european languages.
  • Some strings (e.g. button labels) contain the definition of a shortcut key using the ~ characters. For example "~S~tart" will display "Start" and use 'S' has a shortcut.
  • '%' character in a string denotes an argument. For example '%d' is an integer and '%s' is a string. They need to be kept unchanged in the translated string and furthermore their order has also to be kept.

Using the translation in ScummVM

ScummVM does not use the po files directly. They need to be compiled in the application instead. To use or test your translation you will therefore need to compile ScummVM. This involves the following steps:

  1. Make your translation available
    1. move or copy your po file into the scummvm source code po/ directory.
    2. run "make update-translations" (you need to have perl to do this).
  2. Compile ScummVM (with translation support, which is the default).

Proposing your translation to the team

You are welcome to propose your new translations (or an update of an existing translation) on our patch tracker.

Limitations

  • Currently there is no support for locale-defined fonts. Therefore some languages will not be displayed correctly (e.g. Russian Cyrillic will be displayed with latin accentuated characters). Translations using the latin1 encoding should all work fine however.
  • As noted above, only single byte character encoding is supported.