函数

GLibdgettext

自版本 2.18 起

声明 [src]

const gchar*
g_dgettext (
  const gchar* domain,
  const gchar* msgid
)

说明 [src]

此函数是 dgettext() 的包装,如果使用 textdomain() 设置的默认域没有当前区域设置的翻译,则不会翻译消息。

使用此函数对比直接使用 dgettext() 的优点在于:使用此函数的库(如 GTK)将不会在使用该库的应用程序没有当前区域设置的翻译时使用翻译。这样可以获得始终以英语显示的界面,而不只是部分翻译的界面。要使用此功能,应在 g_dgettext() 调用之前调用 textdomain()setlocale()。对于 GTK,这意味着在 gtk_init 或其变体之前调用 textdomain()

如果且仅当首次调用时满足以下所有条件,此函数才会禁用翻译

  • domain 不为 NULL

  • 已调用 textdomain() 以设置默认文本域

  • 没有可用于默认文本域和当前区域设置的翻译

  • 当前区域设置不是 “C” 或任何英语区域设置(以 “en_” 开头)

请注意,这种行为可能不受需要,例如如果应用程序中包含的未翻译消息使用英语以外的语言书写。在这些情况下,应用程序应在初始化 GTK 之后调用 textdomain()

应用程序通常不应直接使用此函数,而是使用 _() 宏进行翻译。

自 2.18 版起可用

参数

domian

类型: const gchar*

要使用的翻译域,或 NULL 以使用通过 textdomain() 设置的域。

参数可以为 NULL
数据归函数的调用者所有。
该值是 NUL 结尾的 UTF-8 字符串。
msgid

类型: const gchar*

待翻译消息。

数据归函数的调用者所有。
该值是 NUL 结尾的 UTF-8 字符串。

返回值

类型: const gchar*

已翻译字符串。

数据归所调用的函数所有。
该值是 NUL 结尾的 UTF-8 字符串。