macOS下Zsh已配置中文Locale但ll命令输出的"total"仍为英文
我完全懂你这种摸不着头脑的感觉——把~/.zshrc和~/.zprofile里所有Locale相关的环境变量都改成zh_CN.UTF-8了,locale命令验证也全部生效,甚至终端里那些没实际功能的提示文字都乖乖变成中文了,可偏偏ll(本质是ls -l的别名)输出里的total还是顽固地显示英文,这反差感确实让人困惑。
其实问题出在macOS自带的ls命令上:它是BSD版本的ls,和Linux上常用的GNU版本ls在本地化支持上有差异。BSD版本的ls并没有把total这个词加入到中文本地化的翻译列表里,哪怕你把LC_MESSAGES设成了中文,它也不会去翻译这个词。
给你两个实用的解决办法:
方案一:改用GNU版本的ls
通过Homebrew安装GNU核心工具包:brew install coreutils安装完成后,GNU版本的ls会被命名为
gls。你可以在~/.zshrc里重新定义ll的别名:alias ll='gls -l --color=auto'重启终端或者执行
source ~/.zshrc后,再用ll命令,就能看到total变成中文的“总用量”了——GNU版本的工具对本地化支持更完善,会严格遵循LC_MESSAGES的设置。方案二:手动替换输出(临时 workaround)
如果不想额外安装工具,可以给ll加个过滤,把输出里的total替换成中文:alias ll='ls -l | sed "s/total/总用量/"'这个方法简单粗暴,但能快速解决显示问题,不过如果
ls输出里有其他包含total的字符串(概率极低),可能会被误替换。
总结一下,不是你的Locale配置有问题,是macOS自带的BSD ls本身没做这个细节的本地化适配,换GNU版本是最彻底的解决方式。
备注:内容来源于stack exchange,提问作者渐入佳境groove

