Wypełnij przykład C ++ i18n gettext () „hello world”
Szukam kompletnego i18ngettext()
Witaj, świecie. Rozpocząłem skrypt oparty naSamouczek dotyczący obsługi języków ojczystych za pomocą GNU gettext G. Mohanty. Używam Linuksa i G ++.
Kod:
<code>cat >hellogt.cxx <<EOF // hellogt.cxx #include <libintl.h> #include <locale.h> #include <iostream> #include <cstdlib> int main (){ 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("hellogt", cwd) << std::endl; std::cout << "textdomain(): " << textdomain( "hellogt") << std::endl; std::cout << gettext("hello, world!") << std::endl; } EOF g++ -ohellogt hellogt.cxx xgettext -d hellogt -o hellogt.pot hellogt.cxx msginit --no-translator -l es_MX -o hellogt_spanish.po -i hellogt.pot sed --in-place hellogt_spanish.po --expression='/#: /,$ s/""/"hola mundo"/' sed --in-place hellogt_spanish.po --expression='s/PACKAGE VERSION/hellogt 1.0/' mkdir -p ./es_MX/LC_MESSAGES msgfmt -c -v -o ./es_MX/LC_MESSAGES/hellogt.mo hellogt_spanish.po export LANG=es_MX ls -l $PWD/es_MX/LC_MESSAGES/hellogt.mo ./hellogt strace -e trace=open ./hellogt </code>
Program kompiluje, tekst jest wyodrębniany, tworzony jest plik hiszpański, modyfikowany i tworzony binarnie, ale hellogt nadal wyświetla język angielski. Ślad nie pokazuje żadnych dowodów na przeglądanie bieżącego katalogu roboczego dla es_MX ani żadnych odniesień do katalogu LC_MESSAGES.