"LANGUAGE" 로캘 변수 - 영어를 기본 언어로 설정하는 방법은 무엇입니까? gettext에 버그가 있나요?

"LANGUAGE" 로캘 변수 - 영어를 기본 언어로 설정하는 방법은 무엇입니까? gettext에 버그가 있나요?

"LANGUAGE" 변수는 기본 언어를 설정해야 하며 언어 세트를 지정하는 데 사용할 수 있습니다. 첫 번째(이전) 메시지를 사용할 수 없는 경우 다음 언어가 사용됩니다.

예를 들어 (에서문자 받기예) "sv:de" 변수 값이 있는 프로그램은 메시지를 스웨덴어로 표시하거나 해당 텍스트가 없는 경우 독일어로 표시합니다.

영어를 기본 언어로 사용하고 다른 언어(예: 러시아어)를 보조 언어로 사용하고 싶습니다.

export LANGUAGE=en:ru; blabla
blabla: команда не найдена
        ^^^^^^^^^^^^^^^^^^
**Russian error message used**

좋아요 다른 명령을 시도해 보겠습니다.

export LANGUAGE=ru:en; blabla
blabla: команда не найдена
        ^^^^^^^^^^^^^^^^^^
**Russian error message used again**

즉, 영어를 어디에 지정하든 상관없이 항상 우선순위가 가장 낮으며, 해당 언어에 대해 메시지가 정의되어 있으면 지정된 다른 언어로 메시지가 표시됩니다.

질문: 영어를 기본 언어로 지정하고 다른 언어를 보조 언어로 지정하는 방법은 무엇입니까? LANGUAGE 변수는 어떻게 되었나요?

PS 'LC_MESSAGES'는 물론 영어 로케일로 설정됩니다.

답변1

에서와 같이이것문제는 대부분의 프로그램에 "영어" 로캘이 없지만 기본("C") 로캘과 영어 메시지를 사용한다는 것입니다. 따라서 영어가 선호되는 언어를 사용하려면 목록에서 영어 로케일 뒤에 "C" 로케일을 추가해야 합니다. 내 경우에는 "언어"는 다음과 같아야 합니다.

LANGUAGES=en:C:ru


이는 "영어를 사용한 다음 기본값을 사용한 다음 러시아어를 사용한다"는 뜻입니다. 따라서 영어 로캘이 없는 모든 프로그램(영어 로캘을 기본 로캘로 사용하기 때문에)은 기본 로캘로 대체됩니다.
기본 로케일은 항상 존재하고 러시아어 로케일은 선택되지 않으므로 "기본값" 뒤에 러시아어 로케일을 지정해도 아무런 효과가 없다고 생각할 수도 있습니다. 이것은 진짜입니다. 그러나 일부 프로그램(예: 브라우저 및 텍스트 편집기)은 "LANGUAGES" 변수를 사용하여 사용자가 사용하는 언어 목록(예: HTML 페이지가 요청된 언어 또는 맞춤법 검사에 사용되는 언어)을 가져옵니다. ), 이 경우 언어 목록에서 러시아어가 우선합니다. 불필요하지 마십시오.

답변2

LANGUAGE변수만 탓할 이유는 없습니다 . 먼저, locale프로그램의 출력을 살펴보고 다양한 일을 담당하는 많은 변수가 있다는 것을 알아차려야 합니다. 따라서 영어로 메시지를 받으려면 변수를 변경하십시오 LC_MESSAGES.

LC_MESSAGES=C type test
test is a shell builtin

type test
test встроена в оболочку

관련 정보