1
안녕하세요, 저는 C++에서 i18n 용 샘플 코드를 작성하고 있습니다. 나는 link을 참조했다.C++ GNU xgettex 실행을 추적하는 방법은 무엇입니까?
출력 결과 텍스트가 영어로 표시됩니다. 여기에 어떤 문제가 있습니까?
#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;
}
나는 poedit.app를 사용하여 start_es.po 파일을 열고 텍스트를 번역하고 저장은 $> g ++ -o에서 xgettext는 msginit> -o start.pot의 start.cpp에게
$을 시작 -d> start.cpp에게
$를 시작합니다 - 번역자 없음 -l es_MX -o start_es.po -i start.pot
작성된 시작 _es.po.
$>에서 mkdir -p ES/LC_MESSAGES
$> msgfmt에서 -c -v -o ./es/LC_MESSAGES/start.mo start_es.po
번역 된 메시지.
$> 수출 LANG = es_MX
$> ./start를