要演示 Ubuntu 中的区域设置支持:
vagrant init ubuntu/jammy64
vagrant up
vagrant ssh
sudo apt-get -y install hello language-pack-nb
LC_MESSAGES=nb_NO.UTF-8 hello
这将打印预期的本地化“Hei, verden!”信息。
让我们尝试运行 Nix 包,如下我能找到的唯一区域设置提示:
sudo apt-get -y purge hello
yes | sh <(curl -L https://nixos.org/nix/install) --daemon
exit
vagrant ssh
nix-shell --packages hello
export LOCALE_ARCHIVE=/usr/lib/locale/locale-archive
LC_MESSAGES=nb_NO.UTF-8 hello
这会打印“Hello, world!”。我还尝试将sudo dpkg-reconfigure locales
“nb_NO.UTF-8”设置为默认区域设置,但没有成功。
我现在需要做什么才能在 Nix shell 中获取本地化消息?
答案1
首先,我必须在 Ubuntu 中重新配置区域设置,将相关区域设置添加到配置中。
其次,即使包的本地化位于名为 的目录中share/locale/nb/LC_MESSAGES
,但设置LC_MESSAGES=nb_NO.UTF-8
.我不得不改为设置LANG=nb_NO.UTF-8
.
换句话说,这似乎是最低限度脚步:
sudo dpkg-reconfigure locales
nix-shell -p hello
export LOCALE_ARCHIVE=/usr/lib/locale/locale-archive
LANG=nb_NO.UTF-8 hello