GTK + - 2.0 Руководство по локализации для графического интерфейса и кода - PullRequest
0 голосов
/ 21 ноября 2011

2.0 + MinGW32 + платформа Windows + IDE Netbeans для создания моего приложения. Я создал интерфейс, но теперь мне нужно добавить опцию выбора языка, и я хочу автоматический перевод, и я новичок в GTK, поэтому мне нужна подробная помощь. Я искал в Google, но я не нашел никакой помощи для этого на Windows, поэтому, пожалуйста, помогите как можно скорее :( Я разработал макет, используя gtkBuilder.

Я хочу знать точные шаги, чтобы выполнить это ...

Пожалуйста, выделите, как использовать gettext () или_ () в Windows и что такое .po файлы и как с ними обращаться ...

** Извините за плохой английский ...

Ответы [ 2 ]

0 голосов
/ 24 ноября 2011
cat >hellogt.cxx <<EOF
// hellogt.cxx
#include <libintl.h>
#include <locale.h>
#include <iostream>
int main (){
    setlocale(LC_ALL, "");
    bindtextdomain("hellogt", ".");
    textdomain( "hellogt");
    std::cout << gettext("hello, world!") << std::endl;
}
EOF
g++ -o hellogt hellogt.cxx
xgettext --package-name hellogt --package-version 1.2 --default-domain hellogt --output hellogt.pot hellogt.cxx
msginit --no-translator --locale es_MX --output-file hellogt_spanish.po --input hellogt.pot
sed --in-place hellogt_spanish.po --expression='/"hello, world!"/,/#: / s/""/"hola mundo"/'
mkdir --parents ./es_MX.utf8/LC_MESSAGES
msgfmt --check --verbose --output-file ./es_MX.utf8/LC_MESSAGES/hellogt.mo hellogt_spanish.po
LANGUAGE=es_MX.utf8 ./hellogt

Вот описание файлов, созданных выше:

hellogt.cxx         C++ source file
hellogt             Executable image
hellogt.pot         Extracted text from C++ source file (portable object template)
hellogt_spanish.po  Modified text for Spanish with translations added (using sed)
es_MX.utf8/
 LC_MESSAGES/
   hellogt.mo       Binary translated text for Spanish used at run-time

ИСТОЧНИК: Завершить C ++ i18n gettext () "hello world" пример

0 голосов
/ 21 ноября 2011

Ну, это зависит от того, какой генератор Makefile вы используете.Я не думаю, что вы используете для этого автоинструменты, поэтому вам может потребоваться реализовать собственную логику для этого.

Я сделал это на Windows / MinGW с CMake.Рабочий процесс, которому вы должны следовать для создания ваших файлов .po, приведен в GNU gettext Overview .По сути, xgettext анализирует ваш код для извлечения строк, которые вы хотите перевести.Вы можете передать ему ключевое слово, обычно «_», которое идентифицирует макрос _ (), используемый в вашем коде для пометки строк для перевода.Он сгенерирует файлы .pot (PO template).Затем вы можете скопировать этот файл и переименовать его в .po-файл и перевести строки с помощью таких инструментов, как poedit.

. Вам необходимы некоторые механизмы для обновления ваших po-файлов.При этом используется msgmerge, который объединит ваши новые файлы .pot с существующими файлами .po.Он добавит новые строки для перевода и закомментирует исчезнувшие строки.

К сожалению, все это связано с вашей системой сборки, поэтому нет единого способа сделать это.Я использовал CMake, но вы можете использовать сценарии оболочки или любую систему, способную вызывать команды и генерировать файлы.

Надеюсь, это поможет.

...