Справочное описание GLib | ||||
---|---|---|---|---|
#include <glib.h>
#include <glib/gi18n.h>
#define _ (String)
#define Q_ (String)
#define N_ (String)
const gchar* g_strip_context (const gchar *msgid,
const gchar *msgval);
const gchar* const * g_get_language_names (void);
GLib не требует от пользователей использовать специальный метод интернационализации.
А так как GLib сама локализована с использованием механизма
gettext()
, является естественным предложение фактического стандарта
gettext()
поддерживающего макросы в простой для использования форме.
Для использования этих макросов в приложениях, вы должны включить glib/gi18n.h
.
Для использования в библиотеке, вы должны включить glib/gi18n-lib.h
после определения макроса GETTEXT_PACKAGE соответственно для вашей библиотеки:
#define GETTEXT_PACKAGE "gtk20"
#include <glib/gi18n-lib.h>
#define _(String)
Маркирует строку для перевода, заменяется переведённой строкой во время выполнения.
String : |
строка для перевода |
Начиная с версии 2.4
#define Q_(String)
Аналогично _()
, но применяет
g_strip_context()
для перевода.
Это имеет преимущество, потомучто строка может быть дополнена префиксом для гарантии уникальности и обеспечения содержимого для перевода.
Один случай использования приведён в руководстве gettext - это перевод GUI, где можно снять неоднозначность двух меню "Open" как "File|Open" и "Printer|Open". Другой способ использования - это строка "Russian" которая может иметь разный перевод в зависимости от того является ли она названием набора символов или языка. Это может быть решено при помощи "charset|Russian" и "language|Russian".
String : |
строка для перевода, с префиксом отделённым знаком '|', который не должен транслироваться |
Начиная с версии 2.4
#define N_(String)
Маркирует строку для перевода, заменяется не переведённой строкой во время выполнения. Это полезно в ситуациях где переведённые строки не могут быть использованы напрямую, например в инициализаторах строковых массивов.
{
static const char *messages[] = {
N_("некоторое очень значимое сообщение"),
N_("и ещё одно")
};
const char *string;
...
string
= index > 1 ? _("сообщение по умолчанию") : gettext (messages[index]);
fputs (string);
...
}
String : |
строка для перевода |
Начиная с версии 2.4
const gchar* g_strip_context (const gchar *msgid,
const gchar *msgval);
Вспомогательная функция для поддержки
gettext()
(смотрите Q_()
).
msgid : |
строка |
msgval : |
другая строка |
Возвращает : | msgval , если msgval
не идентичен msgid и содержит
символ '|', в этом случае возвращается указатель на подстроку msgid после первого символа '|'.
|
Начиная с версии 2.4
const gchar* const * g_get_language_names (void);
Вычисляет список применимых имён локалей, которые могут быть использованы например для конструирования locale-зависимых имён файлов или поиска путей. Возвращаемый список сортируется от самого желательного до менее желательного и всегда содержит локаль по умолчанию "C".
Например, если LANGUAGE=de:en_US, то возвращаемый список будет "de", "en_US", "en", "C".
Эта функция консультируется с переменными окружения LANGUAGE
,
LC_ALL
, LC_MESSAGES
и LANG
для поиска списка локалей определённых пользователем.
Возвращает : | NULL -завершённый массив строк которыми владеет GLib
и они не должны освобождаться или изменяться.
|
Начиная с версии 2.6