Hallo Ich schreibe einen Beispielcode für i18n in C++. Ich habe folgende link referenziert.Wie verfolgt man die Ausführung von C++ GNU xgettex?
Der Ausgang zeigt den Text in Englisch an. Was ist das Problem hier?
#include "start.hpp"
#include <iostream>
#include <locale.h>
#include "/opt/local/share/gettext/gettext.h"
using namespace std;
int main(int argc, char *argv[]){
char* cwd = getenv("PWD");
std::cout << "getenv(PWD): " << (cwd?cwd:"NULL") << std::endl;
char* l = getenv("LANG");
std::cout << "getenv(LANG): " << (l?l:"NULL") << std::endl;
char* s = setlocale(LC_ALL, "");
std::cout << "setlocale(): " << (s?s:"NULL") << std::endl;
std::cout << "bindtextdomain(): " << bindtextdomain("hello", cwd) << std::endl;
std::cout << "textdomain(): " << textdomain("hello") << std::endl;
std::cout << gettext("hello, world!") << std::endl;
return 0;
}
> $ g ++ -o start.cpp
$ start> xgettext -d -o start.pot start.cpp
$> msginit starten - no-translator -l es_MX -o start_es.po -i start.pot
Erstellt start_es.po.
öffnete ich die start_es.po Dateien poedit.app und übersetzt den Text und gespeichert
$> mkdir -p es/LC_MESSAGES
$> msgfmt -c -v -o ./es/LC_MESSAGES/start.mo start_es.po
1 übersetzte Nachricht.
$> export LANG = es_MX
$> ./start