How to generate translation file for a custom Drupal 7 module?

Alexander Farber picture Alexander Farber · Mar 8, 2011 · Viewed 16.2k times · Source

I'm using CentOS 5.5 Linux (without X), PHP 5.3 and Drupal 7.0.

The core language of my site is Russian (not English)!

I've created a game.info and the following game.module which generates 3 blocks for the front page:

function game_block_info() {
  return array(
  'game_main' => array(
    'info' => t('Set FlashVars and show the flash game.'),
    'cache' => DRUPAL_NO_CACHE,
  ),
  'game_winner' => array(
    'info' => t('Show the winner of the last week.'),
    'cache' => DRUPAL_NO_CACHE,
  ),
  'game_leader' => array(
    'info' => t('Show the leader of the current week.'),
    'cache' => DRUPAL_NO_CACHE,
  );
}


function game_block_view($block_name = '') {
  global $user;

  if ($block_name == 'game_main') {
    if (user_is_logged_in()) {
      $content = t('User is logged in.');
    } else {
      $content = t('User is an anonymous user.');
    }
    drupal_set_message("<pre>$output</pre>\n");
    return array(
      'subject' => t('Main Game'),
      'content' => $content,
    );
  } else if ($block_name == 'game_winner') {
    ....
  } else if ($block_name == 'game_leader') {
    ....
  }
}

It works ok, but I need all strings to be in Russian and do not want to hardcode them into my game.module file.

Do I need to create the 3rd file called game.po and add it to the game.info?

How can I create a .po file? I would prefer a simple editing of that file if possible, without obscure tools.

I've also tried a tool:

# xgettext -n game/game.module --keyword=t
xgettext: warning: file `game/game.module' extension `module' is unknown; will try C
game/game.module:87: warning: unterminated character constant
game/game.module:100: warning: unterminated character constant

Answer

corbacho picture corbacho · Mar 8, 2011

These should be the steps:

  1. To generate the .pot file, install the module Translation template extractor

  2. Go to the "Extract strings" tab on the Locale administration interface, select your module and submit the form. You will get one single template file generated.

  3. Then you can translate the strings with a tool like Poedit (http://www.poedit.net).

  4. When you are done, files should be copied to a "translations" sub-folder in the module folder, so they are automatically imported by Drupal when installing your game module.

Please, give feedback and tell what problems did you have. Thanks