13.3.4. Упрощение использования gettext()

We use cookies. Read the Privacy and Cookie Policy

13.3.4. Упрощение использования gettext()

Вызов gettext() в исходном коде программы служит двум целям. Во-первых, он осуществляет перевод во время исполнения, что является в конце концов главным. Однако, он служит также для отметки строк, которые нужно перевести. Утилита xgettext читает исходный код программы и извлекает все оригинальные строки, которые нужно перевести. (Далее в главе мы кратко рассмотрим это.)

Рассмотрим все-таки случай, когда статические строки не используются непосредственно:

static char *copyrights[] = {

 "Copyright 2004, Jane Programmer",

 "Permission is granted ...",

 /* ... Здесь куча легальностей */

 NULL

};

void copyright(void) {

 int i;

 for (i = 0; copyrights[i] != NULL, i++)

  printf("%s ", gettext(copyrights[i]));

}

Здесь мы хотели бы иметь возможность вывести переводы строк об авторских правах, если они доступны. Однако, как извлекающее устройство xgettext предполагает найти эти строки? Мы не можем заключить их в вызовы gettext(), поскольку это не будет работать во время компиляции:

/* ПЛОХОЙ КОД: не будет компилироваться */

static char *copyrights[] = {

 gettext("Copyright 2004, Jane Programmer"),

 gettext("Permission is granted ..."),

 /* ... Здесь куча легальностей */

 NULL

};