Parece que em C (pelo menos no Linux) só funciona se o locale que setlocale()
você está tentando definir for um dos listados na saída de locale -a
. Isso é realmente verdade?
O motivo pelo qual peço para confirmar é que parece uma restrição potencialmente desagradável.
- Por exemplo, minha instalação bastante padrão do Ubuntu só produz locales em inglês e C/Posix para
locale -a
. No entanto, em Java, por outro lado, a lista de locales disponíveis não parece limitada pelo que está instalado no SO (locales de muitos idiomas e países estão disponíveis).
Isso ocorre porque ele
locale -a
apenas lista os locais instalados no sistema. Em sistemas baseados em Debian/Ubuntu, por exemplo, ele os procura em/usr/lib/locale
. Se um local não existir no sistema, você não poderá usá-lo, nem viasetlocale()
nem por quaisquer outros meios.