2011-02-04 116 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); 
相關問題