2

準大規模なソフトウェア プロジェクトのローカリゼーションに 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);
}

誰かがこれについて私を助けることができれば、私は感謝します. /ロバート

4

1 に答える 1

3

わかりました、解決しました。私はどういうわけか xgettext が再定義を理解するだろうと思った:

#define _(String) gettext(String)

ええと、明らかにそうではありませんでした。マニュアルを注意深く読んだときに、それもそう言っていました。

したがって、-k_を xgettext オプションに追加すると、すべて機能しました。

/ロバート

于 2012-08-10T12:43:42.773 に答える