터미널 메시지 / 경고 / 오류에 대한 언어를 일시적으로 변경


22

터미널의 메시지는 기본적으로 러시아어로 표시되며 기본 언어입니다.

잠시 동안 나는 그들이 영어로되어 있기를 원합니다 (예 : 포럼에 붙여 넣기). 그런 다음 기본 언어로 다시 전환하십시오.

bash를 사용하여 스위치를 전환하고 다시 전환하려면 어떻게해야합니까?

답변:


23

언어 설정을 변경하는 데 사용할 수있는 몇 가지 환경 변수가 있습니다. locale명령 을 실행하여 현재 로케일 설정을 볼 수 있습니다 . 모든 로캘 설정을 영어로 변경하려면을 사용하십시오 LANG=C. 이 C언어는 추가 언어 팩을 설치하지 않고도 항상 사용할 수 있습니다. 영어 이외의 로캘로 임시 변경하려면 @ mklement0 의 게시물을 참조하십시오 .

예 :

기본 언어 설정으로 명령을 실행하고 현재 로케일 설정을 인쇄하십시오.

$ /nonexistent
bash: /nonexistent: Bestand of map bestaat niet
$ locale
LANG=nl_NL.UTF-8
LANGUAGE=
LC_CTYPE="nl_NL.UTF-8"
LC_NUMERIC="nl_NL.UTF-8"
LC_TIME="nl_NL.UTF-8"
LC_COLLATE="nl_NL.UTF-8"
LC_MONETARY="nl_NL.UTF-8"
LC_MESSAGES="nl_NL.UTF-8"
LC_PAPER="nl_NL.UTF-8"
LC_NAME="nl_NL.UTF-8"
LC_ADDRESS="nl_NL.UTF-8"
LC_TELEPHONE="nl_NL.UTF-8"
LC_MEASUREMENT="nl_NL.UTF-8"
LC_IDENTIFICATION="nl_NL.UTF-8"
LC_ALL=

한 프로그램의 언어를 일시적으로 무시하고 실제로 임시임을 표시하십시오.

$ LANG=C ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ ls /nonexistent
ls: kan geen toegang krijgen tot /nonexistent: Bestand of map bestaat niet

현재 쉘에서 실행 된 모든 명령의 로케일을 변경하고 증명을 다시 포함하십시오.

$ LANG=C
$ ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ locale
LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

6
이 작업을 수행하는 데 문제가있는 다른 사용자의 경우 설정 LANG또는 LANG_ALL작동하지 않습니다 LANGUAGE. 참조 왜 나를 위해 언어를 변경 LANG 환경 변수를하지 무시한다?
gertvdijk

1
@gertvdijk : 감사합니다. 이 답변도 설정없이 작동하는 이유는 LANGUAGE입니다 예외 : GNU gettext에은에 우선 순위를 부여 LANGUAGE을 제외하고 (유효)하면 LC_MESSAGES값 (일반적으로 통해 간접적으로 설정 LANG또는 LC_ALL) 중 하나입니다 C또는 (동의어) POSIX. 또한 노트 LANGUAGE가있는 반면,이 답변에 해제 될 일이 있다 기본적으로 설정하고이 설정되어있는 경우, 당신은 오버라이드 (override) 할 필요 A를 전환 할 특정 로케일의 언어 ( "C"에 반대는 / "POSIX")는, 어느입니다 당신이 찾은 것.
mklement0

귀하의 답변은 "C"로케일 (필요한 미국 영어 메시지 포함)로 전환 할 때 훌륭하게 작동하지만 LANGUAGE명시 적으로 설정되지 않거나 재정의 되지 않으면 다른 로케일에서는 작동하지 않습니다 . 질문의 일반적인 제목을 감안할 때 사람들은이 답변이 영어 이외의 언어로 전환하려는 것을 발견 할 가능성이 있으므로이 정보를 답변에 추가하십시오.
mklement0

@ mklement0 질문의 맥락 (영어 오류 메시지 게시)을 감안할 때 현재 게시물이 충분하다고 생각합니다. 당신은 주변의 세부 사항을 설명하는 또 다른 대답을 추가 할 수 있습니다 LANGUAGE: 당신이 원하는 경우
Lekensteyn

제안한대로 내 답변을 추가 했습니다. 미래의 독자들이 어떤 언어 로 전환하려고 노력할 것이라는 나의 평가에 동의한다면 (여러 사람들이 이미 적극적으로 지시 한대로), 귀하의 질문에 대한 나의 답변에 대한 링크를 추가하십시오. 그 외에도 LANGUAGE샘플 출력 의 값을 로 변경하는 것이 좋습니다.이 값은 nl로케일이 실제 기본값입니다 nl_NL.UTF-8.
mklement0

9

Lekensteyn의 유용한 답변 은 OP가 요청한대로 요청에 따라 미국 영어 로 전환하고 싶을 때 유용 하지만 필요 에 따라 다른 언어 로 전환하려면 더 많은 작업이 필요합니다.

으로 시작하기 전에, 당신은 메시지 테이블을 설치해야 sudo apt-get install language-pack-<lang-tag>하는 경우, <lang-tag>A는 간단한 RTF 5646 언어 하위 태그 등, es스페인어가.

배경 정보

GNU gettext를 기반 유틸리티 비표준 우선권을주는 LANGUAGE환경 변수 [1] POSIX 정의 로케일 환경 변수를 통해 LC_ALL, LC_MESSAGES그리고 LANG(순서대로).

그 감안할 때 LANGUAGE우분투 시스템에 기본적으로 설정되어있다 [2] , 즉로, 문자열LANG(예를 들어, 하나 간단한 언어 태그를 반영하는 값 es언어 영역 태그 (예를 들어, 스페인어) 또는 de_DE독일어의 독일 변형에 대한) LANGUAGE다른 언어의 메시지를 적용하려면 설정을 해제하거나 재정의해야합니다 . [삼]

옵션 1 : 설정 LANGUAGE

: 스페인어 ( es) 메시지로 임시 전환 :

$ LANGUAGE=es ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio

참고 : 간단한 언어 태그 es는 충분하지만 지역 식별자 (예 : es_AR아르헨티나의 경우) 및 문자 세트 접미사 (예 :)를 추가 할 수 있습니다 es_AR.UTF-8.
그러나 지역화 된 메시지는 언어 수준 에서만 존재할 수 있으며 대체는 언어 부분 과 일치하는 메시지 ( es이 경우)를 사용하는 것입니다.

옵션 2 : 설정 해제 LANGUAGE및 설정LC_ALL

이 대체 솔루션은 먼저 정의를 해제 LANGUAGE 한 다음 POSIX 로케일 환경 변수 LC_ALL를 사용 하여 암시 적으로 LC_MESSAGES[4]를 설정합니다 .

$ LANGUAGE= LC_ALL=es_ES.UTF-8 ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio

이 솔루션은 모든 지역화 측면을 지정된 로케일 (예 : LC_TIME날짜 / 시간 형식)로 설정하고 (암시 적으로) 설정 LC_MESSAGES을 통해 GNU 프로그램에 원하는 언어를 알려줍니다 .

문자셋 접미사를 포함 LC_ALL하여 정확한 전체 로케일 이름이 어떻게 효과적이어야 ( es_ES.UTF-8) ( LANGUAGE단순한 언어 태그 ()와 같은 es) 가 필요한지 참고하십시오 . 설정 LC_MESSSAGES및 에도 동일하게 적용됩니다 LANG. 유효하지 않은 / 설치되지 않은 로케일 이름을 지정하면 POSIX 로케일과 미국 영어로 대체됩니다.


각주

Lekensteyn의 대답에도 작동하는 [1] 이유 없이 반환하기 / 재정 LANGUAGE되는 예외 : 제 (유효) 경우 LC_MESSAGES의 값 (전형적으로 간접적으로 설정 LANG하거나 LC_ALL) 중 하나 인 C또는 (동의어)이 POSIX무관의 값,이 값이 존중 LANGUAGE, 만약에 어떠한. 반대로, (유효한) LC_MESSAGES값이 다른 특정 로케일이면 LANGUAGE우선합니다.

[2] 이것은 우분투에는 적용 되지만 반드시 다른 맛 에는 적용 되지 않습니다 . Lekensteyn는 것을 말한다 쿠분투가 않습니다 없습니다 설정 LANGUAGE.
논란의 여지가 있지만 현재 로케일을 결정하는 값에 의해 암시 된 값이 존중 된다는 점을 감안할 때 기본적으로 설정 LANGUAGE되어서는 안됩니다 . LC_MESSAGESLANG

[3]이 방법을 사용하여 LANGUAGE=C또는 LANGUAGE=POSIX( LANG=C/ 의 대안으로)를 지정하여 [US] 영어로 전환 할 수도 있습니다.이 값이 LANG=POSIX실제로 인식되는지 또는 폴백 메커니즘 인지 여부는 확실하지 않습니다. 언어 태그 시작하지 마십시오. 아마도 더 나은 선택이 될 것입니다 en_US.

[4]은 거기 에지 으로 실행의 호출이 접근하지 작업 않는 경우 경로 - - 상대 또는 절대 여부 반면, 지정된 언어로 전환되지 않고 단순히 파일명 : 수행이
LANGUAGE= LC_ALL=es_ES.UTF-8 /path/to/no_such_utility수행 되지 메시지 출력 (작품 )에 현재의 지역 반면
LANGUAGE= LC_ALL=es_ES.UTF-8 no_such_utility) 스페인어 에러 메시지를 출력한다 (한다.
이유와 이유가 무엇인지 아는 사람이 있으면 알려주십시오.


이 게시물을 구조화하는 데 도움을 @ wjandrea 의 모자 팁 .
mklement0
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.