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

Dus*_*ara 5 linux locale

这几乎是这个问题,有更多的信息.我的目标是找出系统中安装的语言.

以下命令

locale -a 
Run Code Online (Sandbox Code Playgroud)

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

此外,调用

LANG=fr_FR.utf8 locale -ck LC_IDENTIFICATION
Run Code Online (Sandbox Code Playgroud)

提供包含语言名称(在本例中为法语)的特定语言环境的信息.

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

有没有办法(可能是API调用)来获取此信息?我查看了locale实用程序的源代码,但它使用了私有结构.

Dus*_*ara 0

感谢亚西尔。这正是我想要的:

#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));
}
Run Code Online (Sandbox Code Playgroud)