데비안에서 로켈을 설치 / 변경하는 방법은 무엇입니까?


65

사용자 인터페이스가 네덜란드어로있는 웹 응용 프로그램을 작성했습니다. 시스템의 날짜 및 시간 루틴을 사용하여 응용 프로그램에서 날짜 문자열을 형식화합니다. 그러나 시스템 형식의 날짜 문자열은 영어이지만 네덜란드어로 원하는 날짜 문자열이므로 시스템 로캘을 설정해야합니다. 데비안에서 어떻게합니까? 설정을 시도 LC_ALL=nl_NL했지만 효과가없는 것 같습니다.

$ date
Sat Aug 15 14:31:31 UTC 2009
$ LC_ALL=nl_NL date
Sat Aug 15 14:31:36 UTC 2009

우분투 데스크탑 시스템에서 LC_ALL을 설정하면 정상적으로 작동한다는 것을 기억합니다. 이 작업을 수행하려면 추가 패키지를 설치해야합니까, 아니면 완전히 잘못하고 있습니까?


서버의 할당 된 IP 주소를 기반으로 자동으로 수행하는 방법이 있습니까?
Scoop

답변:


72

/etc/default/locale내용을 편집 하고 설정하십시오.

LANG="nl_NL.UTF-8"

다음을 사용하여 현재 생성 한 로캘을 확인할 수 있습니다.

# locale -a

/etc/locale.gen사용하려는 로케일의 행을 편집 하고 주석 해제하여 더 많은 것을 생성 할 수 있습니다 . 그런 다음 다음을 실행하여 생성 할 수 있습니다.

# locale-gen

지원되는 로케일 목록은 /usr/share/i18n/SUPPORTED

데비안 위키 에는 더 많은 정보가 있습니다 .


9
/ var / lib / belocs / list가 없습니다. /etc/locale.gen을 편집하거나 대신 dpkg-reconfigure 로케일을 실행해야합니다.
pgs

한 로케일 세대를 설명하는이 대답은하지만, 이전의 의견에 따라,은 / var / lib 디렉토리 / belocs / 내 시스템에 목록으로 그런 파일이 없습니다
TELENT

이 답변을 찾는 데 5 시간이 걸렸으며 결과는 완벽했습니다. 또한 별칭을 만들 수 있습니다. en_US UTF-8 및 it_IT UFT-8을 사용하면 기본적으로 UTF-8로 로캘을 가질 수있었습니다. 로캘에 의존하는 PHP 코드가있는 경우
Cec

/ etc / default / locale의 내용을 편집하고 설정할 수있는 명령 또는 패키지가 있습니까?
Karl Morrison

Czar의 아래 답변을 참조하십시오. sed -i 's / ^ # * (en_US.UTF-8) / \ 1 /'/etc/locale.gen
Tobias Gaertner

66

locales패키지 를 설치해야 할 수도 있습니다 . 생성 할 로케일을 묻습니다. 이미 설치되어 있으면 dpkg-reconfigure locales더 많은 로캘을 생성 할 수 있습니다.


시스템 기본값을 설정하지 않고 로케일 만 생성합니다.
David Pashley

16
아니요, dpkg-reconfigure locales의 마지막 질문은 기본 로케일을 선택하는 것입니다.
pgs

2
sudo에서 와 같이 실행해야 했습니다 sudo dpkg-reconfigure locales.
Alex Yursha

ssh를 통해 액세스 한 서버 인 경우, 로케일의 데비안 위키 페이지 는 기본 로케일을로 설정된 상태로 둘 것을 권장합니다 NONE.
Paul Rougieux

1
이것이 바로 내가 필요한 것입니다. 몇 번의 키 입력으로 모든 로케일을 설치하십시오. 정말 고맙습니다!
aexl

11

다른 곳에서와 마찬가지로 여기에 대한 답변은 불완전합니다. 몇 곳에서 정보를한데 모은 후 (1) 원하는 로케일을 사용할 수 있는지 확인하고 (없는 경우 생성) 로케일 관련 환경 변수를 원하는 로케일로 설정하십시오.

필자의 경우 en_US.UTF-8도커 컨테이너에 프로그래밍 방식으로 (대화식으로) 설치해야했습니다. ff는 필요한 것을 달성했지만 대화 형 셸에서 제대로 작동합니다.

apt-get update

# Install locales package
apt-get install -y locales

# Uncomment en_US.UTF-8 for inclusion in generation
sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen

# Generate locale
locale-gen

# Export env vars
echo "export LC_ALL=en_US.UTF-8" >> ~/.bashrc
echo "export LANG=en_US.UTF-8" >> ~/.bashrc
echo "export LANGUAGE=en_US.UTF-8" >> ~/.bashrc

같은 쉘 source ~/.bashrc에서 env vars가 즉시 적용되도록해야합니다. 를 호출하여 로케일이 올바르게 구성되었는지 확인할 수 있습니다 locale.

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

이 주제와 관련하여 많은 Q & A 항목이 있었지만 실제로는 소수만이 도움이되었습니다. 크레딧이 필요한 신용 :


6

다음과 함께 설치된 LXC 컨테이너에서 이러한 답변 중 어느 것도 효과가 없었습니다.

lxc-create -n sse-master -t download -n sse-master -- \
    -d debian -r jessie --arch i386

나는 항상 다음과 같은 결과를 얻었습니다 locale-gen.

$ sudo locale-gen
Generating locales (this might take a while)...
Generation complete.

예상대로 dpkg-reconfigure locales일부 로캘을 실행 하고 선택해도 업데이트되지 않았습니다 /etc/locale.gen.

그러나 파일을 수동으로 수정하고 원하는 로케일을 주석 해제하면 locale-gen제대로 작동하기 시작했습니다.

$ sudo locale-gen
Generating locales (this might take a while)...
  en_GB.UTF-8... done
  en_US.UTF-8... done
Generation complete.

또한 다음과 같이 수동으로 로케일을 생성 할 수있었습니다.

sudo localedef -i en_US -f UTF-8 en_US.UTF-8
sudo localedef -i en_GB -f UTF-8 en_GB.UTF-8

그러나 이것은 영구적 인 해결책은 아닙니다. 옵션 locale-gen없이 실행 하면 --keep-existing수동으로 생성 된 로케일, 즉에 나열되지 않은 (및 주석 처리되지 않은) 로케일이 모두 삭제됩니다 /etc/locale.gen.


3

웹 응용 프로그램의 경우 시스템 기본 로캘을 적절하게 외부에 설정하지 않고 프로그램 내부 에서 setlocale () 을 사용하는 것이 좋습니다 . 덜 느슨한 방법으로 끝납니다.


1
시스템에 로케일이 필요 setlocale하지 않으면 작동하지 않습니다.
대부

1

그러나 먼저 언어 팩이 설치되어 있어야합니다. 내 독일어 기반 VPS에는 사전 설치된 영어 언어 팩이 없습니다. 먼저 설치했는지 확인하십시오.

aptitude install language-pack-en

1

나와 같은 Ubuntu 14.04 LTS에서 /etc/locale.gen파일을 가지고 있지 않은 사용자에게는 새 로캘을 추가 한 /var/lib/locales/supported.d/local다음 다음을 실행할 수 있습니다.

sudo dpkg-reconfigure locales

다음과 같이 프랑스어 (예 :) 로캘을 편집 대신 추가 할 수도 있습니다 /var/lib/locales/supported.d/local.

sudo locale-gen fr_FR fr_FR.UTF-8

추가하고 생성 ISO-8859-1UTF-8의 코드 세트 fr_FR로케일을 마지막 입력 :

sudo dpkg-reconfigure locales

일을 끝내기 위해

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.