有没有办法在windows下访问gettext使用的语言环境?

时间:2010-05-02 15:49:23

标签: c++ c windows gettext

我有一个程序,其中i18n由gettext处理。该程序运行正常,但由于某种原因,我需要在win32下知道gettext在运行时使用的语言环境的名称(类似'fr_FR')。

我查看了gettext源代码,并且有一个非常可怕的函数可以在所有平台上计算它(gl_locale_name,在一个名为“localename.h / c”的C文件中)。但是,这个文件似乎没有与gettext或libintl一起安装,所以我似乎无法调用该函数。 gettext是否提供了另一个函数来获取此值?或者在另一个包中(提升,滑稽,什么?)

(在相关的说明中,在C ++标准库中有一个名为std :: locale的东西,根据调用std :: locale(“”)的文档,应该创建一个具有系统设置的语言环境,除非我错了......但是Windows下的名字是'C'。这是获取语言环境名称的可行方法吗?我做错了什么?)

3 个答案:

答案 0 :(得分:1)

在Windows上通常使用函数GetUserDefaultLCID,它返回区域设置标识符的整数值。要将LCID转换为类似'fr_FR'的字符串,您需要根据http://msdn.microsoft.com/en-us/library/ms776260

中的信息进行映射

答案 1 :(得分:1)

原来“gl_locale_name”函数不是gettext的直接部分,而是gnulib的一部分 - http://www.gnu.org/software/gnulib。我今天刚刚发现了包裹。

因此,在我的项目中获取臭名昭着的localename.h标题是

的问题
gnulib-tool --import localename

然后gl_locale_name函数在交叉编译时工作正常。

感谢大家的答案!

答案 2 :(得分:0)

您可以使用setlocale(NULL)从CRT中提取区域设置。但是从Windows,我不知道。此外,gettext是一个非常通用的函数,你必须更具体地了解gettext。