Ubuntu 22.04下en_US locale环境中修改一周首日为周一的方法咨询
Ubuntu 22.04下en_US locale环境中修改一周首日为周一的方法咨询
Hey Martin, 咱们一步步拆解你的问题,帮你搞定这个locale设置~
先明确几个字段的作用
abday和day:这俩只是定义一周七天的名称顺序,和“一周首日是哪一天”完全不相关!要是你乱改它们的顺序,只会导致日期显示混乱(比如周一被显示成Sunday),绝对别这么操作。week字段:格式是week <每周天数>;<基准日期>;<首日>,第三个数字才是控制一周首日的核心:0代表周日(Sunday)1代表周一(Monday)
你当前看到的week 7;19971130;1其实已经是周一为首日的配置了——如果你的系统实际还是显示周日为首日,大概率是当前生效的locale不是这个文件对应的,或者有其他配置覆盖了它。
正确的修改姿势:别碰系统默认文件,自定义locale才靠谱
直接修改系统自带的 /usr/share/i18n/locales/en_US 是不推荐的,因为系统更新时这个文件会被覆盖,你的修改会直接丢失。正确做法是创建自定义locale:
- 先把系统的en_US locale文件复制到你的用户目录,方便修改:
cp /usr/share/i18n/locales/en_US ~/en_US_monday - 编辑这个自定义文件,找到
LC_TIME区块里的week行,把第三个数字改成1(如果原来不是的话),最终看起来是这样:week 7;19971130;1 - 生成这个自定义locale(指定UTF-8字符集):
localedef -i ~/en_US_monday -f UTF-8 en_US.UTF-8@monday - 把生成的locale文件安装到系统目录(需要sudo权限):
sudo cp /usr/lib/locale/en_US.UTF-8@monday /usr/lib/locale/ - 测试或设置默认:
- 临时测试:执行
LC_TIME=en_US.UTF-8@monday date +%A验证效果 - 设置为系统默认:编辑
/etc/default/locale文件,把LC_TIME改成en_US.UTF-8@monday,然后重启系统或重新登录生效。
- 临时测试:执行
额外小提示
如果你只是想让某个应用(比如日历、办公软件)显示周一为首日,很多应用本身就有单独的设置项,不用折腾系统locale,先去应用的设置里找找看,可能更省心~
备注:内容来源于stack exchange,提问作者Martin Zeltin
相关产品推荐
相关产品推荐

