Я не получаю вывод из xgettext

Я попытаюсь использовать gnu-gettext для локализации небольшого программного проекта, поэтому сейчас я пытаюсь изучить основы. Проблема в том, что я застрял на довольно фундаментальной функции. Когда я пытаюсь извлечь строки из исходного кода с помощью xgettext, я ничего не получаю. Когда dll отсутствовал, он жаловался, а когда параметр неправильный, он жаловался, но теперь он просто молча возвращается, не создавая файла пота или чего-либо еще.

Итак, мой вопрос: есть ли кто-нибудь, кто признает эту проблему? Есть ли способ сделать xgettext более подробным о том, что он делает?

Я попытался поместить xgettext среди исходных файлов и поместить исходные файлы в каталог gettext \ bin, но безрезультатно.

Я должен упомянуть, что я работаю на машине с Win7 и использую gettext-tools-dev_0.18.1.1-2_win32. Я установил MinGW.

Мой тестовый код блокируется так:

#include <string>
#include <stdio.h>
#include <stdlib.h>
#include "libintl.h"
#include "locale.h"
#include "helper.h"

#define _(String) gettext(String)
#define N_(String) String
//#define textdomain(Domain)
//#define bindtextdomain(Package, Directory)

int main(void)
{
  printf( "setlocale returns %s\n", setlocale( LC_ALL, "" ) );

  bindtextdomain( "hello", "locale" );
  textdomain( "hello" ); 

  int a = 1;
  int b = 2;

  /// First string
  printf( _( "Hello, world!\n" ) );

  std::string multiline =
    /* Another string */
    _( "This is a " \
       "multi line string." );
  // A string that contains another
  printf( _( "A string: %s\n" ), multiline.c_str() );
  printf( N_( "An untranslatable string!\n" ));
  int foo = 42;
  /// Playing with positions; int before string in original...
  printf( _( "int: %1$d, string: %2$s\n" ), foo, _( "Fubar" )); 
  printf( _( "%1$s %2$s\n" ), Helper::String1().c_str(), Helper::String2().c_str() );
  exit(0);
}

Если бы кто-то мог помочь мне в этом, я был бы благодарен. /Роберт

1 ответ

Хорошо, я решил это. Я почему-то думал, что xgettext поймет переопределение:

#define _(String) gettext(String)

Ну, очевидно, это не так, и когда я внимательно прочитал руководство, это тоже как-то сказало.

Поэтому, когда я добавил -k_ в параметры xgettext, все заработало.

/Роберт

Другие вопросы по тегам