Ubuntu 12.04에 cs_CZ.ISO8859-2 로케일을 설치하는 방법

Ubuntu 12.04에 cs_CZ.ISO8859-2 로케일을 설치하는 방법

특정 단위 테스트를 통과하려면 Ubuntu 12.04에 cs_CZ.ISO8859-2 로캘이 있어야 합니다. 테스트에서는 다음 호출을 수행합니다.

std::locale("cs_CZ.ISO8859-2")

OS X Lion을 설치할 때 로케일이 존재하므로 std::locale에 대한 호출이 작동해야 합니다.

$ locale -a | grep cs
cs_CZ
cs_CZ.ISO8859-2
cs_CZ.UTF-8
$

그러나 Ubuntu 12.04를 설치하더라도 UTF8 변형만 있고 cs_CZ 로케일의 ISO8859-2 버전은 없습니다 language-pack-cs.

$ dpkg -l | grep language-pack-cs
ii  language-pack-cs                       1:12.04+20120417                        translation updates for language Czech
ii  language-pack-cs-base                  1:12.04+20120417                        translations for language Czech
$ locale -a | grep cs_
cs_CZ.utf8
$

이 컴퓨터에서 단위 테스트가 실패했습니다. strace에서 단위 테스트를 실행하면 실제로 ISO8859-2 변형을 찾고 있지만 어디에서도 찾을 수 없다는 것을 알 수 있습니다.

open("/usr/lib/locale/cs_CZ.ISO8859-2/LC_CTYPE", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/locale/cs_CZ.iso88592/LC_CTYPE", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/locale/cs_CZ/LC_CTYPE", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/locale/cs.ISO8859-2/LC_CTYPE", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/locale/cs.iso88592/LC_CTYPE", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/locale/cs/LC_CTYPE", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/cs_CZ.ISO8859-2/LC_CTYPE", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/cs_CZ.iso88592/LC_CTYPE", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/cs_CZ/LC_CTYPE", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/cs.ISO8859-2/LC_CTYPE", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/cs.iso88592/LC_CTYPE", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/cs/LC_CTYPE", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

나는 로케일, i18n 등에 대해 아무것도 모릅니다. 그러나 나는 이 테스트가 통과되기를 원하며 테스트를 변경할 수 없습니다. 누군가 이 로케일을 Ubuntu 12.04에 존재하게 하는 방법에 대한 통찰력을 제공할 수 있다면 감사하겠습니다.

답변1

다음 단계는 Arch Linux용입니다(Ubuntu는 확실하지 않음).

  1. 파일 편집 /etc/locale.gen,
  2. 행 추가 cs_CZ ISO-8859-2,
  3. sudo locale-gen로케일 파일을 생성하려면 실행하세요 .

그 후에는 std::locale("cs_CZ.ISO8859-2")잘 작동할 것입니다 .

답변2

우분투가 조정되었습니다locale-gen유용. 생성하려는 로캘 이름으로 호출하세요.

locale-gen cs_CZ.ISO8859-2

관련 정보