Eu preciso que a localidade cs_CZ.ISO8859-2 exista no Ubuntu 12.04 para que um teste unitário específico possa ser aprovado. O teste faz a seguinte chamada:
std::locale("cs_CZ.ISO8859-2")
Na minha instalação do OS X Lion, esta localidade existe, portanto a chamada para std :: locale deve funcionar:
$ locale -a | grep cs
cs_CZ
cs_CZ.ISO8859-2
cs_CZ.UTF-8
$
No entanto, na minha instalação do Ubuntu 12.04, há apenas uma variante UTF8 e nenhuma versão ISO8859-2 da localidade cs_CZ, apesar de ter instalado 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
$
O teste da unidade falha nesta máquina. Executar o teste de unidade sob strace mostra que ele realmente está procurando a variante ISO8859-2 e não a encontra em nenhum lugar:
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)
Não sei absolutamente nada sobre locales, i18n, etc. No entanto, gostaria de passar este teste e alterar o teste não é uma opção. Se alguém puder oferecer algum insight sobre como fazer esta localidade existir no Ubuntu 12.04, eu agradeceria muito.