函数
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 版起可用