2016-05-16 9 views
2

効果がありません。しかし、このコードをすべて使用すると、Hello Worldメッセージが翻訳されません。使用gettextのは、私はgettextのとローカル・カタログリポジトリ用<a href="http://www.async.com.br/~kiko/gettext.html" rel="nofollow">following an official i8n example</a>午前

+0

ようこそStackOverflow!あなたの 'messages.mo'ファイルの内容を意味するように、すべての情報を含めてください。*(例のために" Hello World! "にトリムダウンする必要があります)*。また、呼び出しの戻り値が何であるかを確認すると役に立つかもしれません... bindtextdomainはディレクトリやNULLの 'char * 'へのポインタを返すかもしれないことに注意してください。問題があれば 'errno'を返します。 – HostileFork

答えて

0

あなたが設定されたロケールが有効であることを確認する必要があります - あなたはsetlocaleで有効なロケールを設定しない場合は、glibcのは、あなたがCまたはPOSIXロケールで実行していると仮定して、指定された値を無視しますbindtextdomainにあり、単純に非局所化された値を返します。これはgettextのやや非公式の動作です。

単純にpt_PTの代わりに、pt_PT.UTF-8にロケールを設定することをお勧めします。私の場合は

、私が試したとき、私が得た:

char *from_setlocale = setlocale(LC_ALL, "pt_PT"); 
char *checked_setlocale = setlocale(LC_ALL, NULL); 
std::cout << (from_setlocale ? from_setlocale : "NULL") << std::endl << (checked_setlocale ? checked_setlocale : "NULL") << std::endl; 

を私はポルトガル語ロケールがインストールされていないためです。私は、私がインストールされているロケール(en_IE.UTF-8)を設定すると、私はいくつかの有用な出力を得る:

char *from_setlocale = setlocale(LC_ALL, "en_IE.UTF-8"); 
char *checked_setlocale = setlocale(LC_ALL, NULL); 
std::cout << (from_setlocale ? from_setlocale : "NULL") << std::endl << (checked_setlocale ? checked_setlocale : "NULL") << std::endl; 

しかも

は、私が生成されたメッセージファイルからローカライズされた値を取得します。

関連する問題