我没有从xgettext获得任何输出

我没有从xgettext获得任何输出,gettext,xgettext,Gettext,Xgettext,我将尝试使用GNUGetText对一个半大型软件项目进行本地化,所以现在我正在尝试学习基础知识。问题是我被一个非常基本的函数卡住了。当我尝试使用xgettext从源代码中提取字符串时,我什么也得不到。当dll丢失它时,它会抱怨,当参数错误时,它会抱怨,但现在它只是默默地返回,而不生成任何pot文件或其他任何东西 所以,我的问题是: 有没有人认识到这个问题? 有没有办法让xgettext更详细地描述它在做什么 我曾尝试将xgettext放在源文件中,并将源文件放在gettext\bin目录中,但没

我将尝试使用GNUGetText对一个半大型软件项目进行本地化,所以现在我正在尝试学习基础知识。问题是我被一个非常基本的函数卡住了。当我尝试使用xgettext从源代码中提取字符串时,我什么也得不到。当dll丢失它时,它会抱怨,当参数错误时,它会抱怨,但现在它只是默默地返回,而不生成任何pot文件或其他任何东西

所以,我的问题是: 有没有人认识到这个问题? 有没有办法让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);
}
#包括
#包括
#包括
#包括“libintl.h”
#包括“locale.h”
#包括“helper.h”
#定义(字符串)gettext(字符串)
#定义N(字符串)字符串
//#定义textdomain(域)
//#定义bindtextdomain(包、目录)
内部主(空)
{
printf(“setlocale返回%s\n”,setlocale(LC_ALL,”);
bindtextdomain(“你好”,“语言环境”);
textdomain(“你好”);
INTA=1;
int b=2;
///第一串
printf(“你好,世界!\n”);
字符串多行=
/*另一串*/
_(“这是一个”\
“多行字符串。”);
//包含另一个字符串的字符串
printf(u(“字符串:%s\n”),multiline.c_str();
printf(N_(“不可翻译的字符串!\N”);
int-foo=42;
///播放位置;原始字符串前的int。。。
printf((“int:%1$d,string:%2$s\n”)、foo、Bar);
printf(“%1$s%2$s\n”),Helper::String1().c_str(),Helper::String2().c_str());
出口(0);
}
如果有人能在这件事上帮我,我会很感激的。
/罗伯特

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

#define _(String) gettext(String)
嗯,显然没有,当我仔细阅读手册时,它也这么说

因此,当我在xgettext选项中添加-k时,一切都起了作用

/罗伯特