我没有得到xgettext的输出

时间:2012-08-09 12:33:13

标签: gettext 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 个答案:

答案 0 :(得分:3)

好的,我解决了。我不知何故认为xgettext会理解重新定义:

#define _(String) gettext(String)

嗯,很明显它没有,当我仔细阅读手册时,它也有点说。

所以,当我将 -k _ 添加到xgettext选项时,它一切正常。

/罗伯特