如何在linux中获取给定语言环境的语言名称

这是非常多这个问题有一点信息。 我的目标是找出安装在系统中的语言。

以下命令

locale -a 

显示所有语言(格式为en_AU.utf8)。 这似乎对应于/ usr / lib / locale的内容。

此外,调用

 LANG=fr_FR.utf8 locale -ck LC_IDENTIFICATION 

给出包含语言名称(在本例中为法语)的特定语言环境的信息。

这似乎是/usr/lib/locale/fr_FR.utf8/LC_IDENTIFICATION中包含的信息。

有没有一种方法(也许是一个API调用)来获取这个信息? 我查看了语言环境实用程序的源代码,但它使用了一个专用结构。

我想,你可以只使用getenv(3)来获取环境变量,因此你可能想要传递变量的名字,比如:

 char *s; s = getenv("LANG"); if (s == NULL) printf("LANG is not set"); else printf(s); 

感谢Yasir。 这正是我想要的:

 #include <langinfo.h> char *s; s = getenv("LANG"); if (s == NULL) printf("LANG is not set"); else { setlocale(LC_ALL, s); printf(nl_langinfo(_NL_IDENTIFICATION_LANGUAGE)); }