Как получить название языка для данной локали в linux - PullRequest
5 голосов
/ 04 февраля 2011

Это в значительной степени Этот вопрос с немного большей информацией. Моя цель - отработать языки, установленные в системе.

Следующая команда

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), чтобы получить эту информацию? Я посмотрел на источник утилиты locale, но она использует частную структуру.

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

Я думаю, вы можете просто получить переменные окружения, используя, например, getenv(3), таким образом, вы захотите передать ему имя переменной, например:

char *s;
s = getenv("LANG");
if (s == NULL) 
    printf("LANG is not set");
else
    printf(s);
0 голосов
/ 09 сентября 2015

Спасибо Ясиру. Это именно то, что я хотел:

#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));
}
...