특정 단위 테스트를 통과하려면 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는 확실하지 않음).
- 파일 편집
/etc/locale.gen
, - 행 추가
cs_CZ ISO-8859-2
, sudo locale-gen
로케일 파일을 생성하려면 실행하세요 .
그 후에는 std::locale("cs_CZ.ISO8859-2")
잘 작동할 것입니다 .
답변2
우분투가 조정되었습니다locale-gen
유용. 생성하려는 로캘 이름으로 호출하세요.
locale-gen cs_CZ.ISO8859-2