2011-02-04 115 views
5

这几乎是This question的一些信息。我的目标是解决安装在系统中的语言。如何在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调用)来获取此信息?我查看了语言环境实用程序的源代码,但它使用了一个专用结构。

+0

你并不需要手动获取环境变量`LANG` - `的setlocale(LC_ALL,“”);'将设置根据环境设置的语言环境。 – caf 2011-02-04 08:31:37

+0

你应该赞成并接受Yasir的解决方案,而不是将其复制到问题中。这个问题应该只是一个问题。 – tripleee 2015-09-07 07:15:45

+1

@tripleee谢谢。调整后的问题和添加的答案。 – Dushara 2015-09-08 21:04:05

回答

0

感谢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)); 
} 
1

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

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