昨天被 @聞其詳 问起 glibc 对日本平成XX年的纪年支持情况(感谢 @farseerfc 老师),发现 glibc localedata 中并未包括民国纪年支持。在查询文档后稍微鼓捣了一下,简单实现了这个功能:
$ LC_TIME=zh_TW.UTF-8 date +%EY
民國107年
$ LC_TIME=zh_TW.UTF-8 date +%EY --date="1912/4/3"
民國元年
$ LC_TIME=zh_TW.UTF-8 date +%EY --date="1913/4/3"
民國2年
$ LC_TIME=zh_TW.UTF-8 date +%EY --date="1911/4/3"
民前1年
$ LC_TIME=zh_TW.UTF-8 date +%EY --date="1900/4/3"
民前12年
修改方法:
编辑 /usr/share/i18n/locales/zh_TW 文件,找到 END LC_TIME,在它之前加入这样三行:
era "+:2:1913//01//01:+*:民國:%EC%Ey年";/
"+:1:1912//01//01:1912//12//31:民國:%EC元年";/
"+:1:1911//12//31:-*:民前:%EC%Ey年"
保存后重新 locale-gen 即可。
不足:暂时没有弄明白怎么实现中文数字,不过阿拉伯数字也还过得去……
提交:glibc 的提交方式好像比较麻烦,所以先写篇博客好了。已提交并合并到 glibc。
发散:这个方法当然还可以用来实现各种自定义年号,比如朝鲜的主体纪年同样在 1912 年为元年,另外还有1970 “Unix 元年”、2013(咚咚咚,敲门声
您好!
我按照您給的方法,添加了
era “+:2:1913//01//01:+*:民國:%EC%Ey年”;/
“+:1:1912//01//01:1912//12//31:民國:%EC元年”;/
“+:1:1911//12//31:-*:民前:%EC%Ey年”
同時也按照:
era “+:2:1913//01//01:+*::%EC%Ey”;/
“+:1:1912//01//01:1912//12//31::%EC”;/
“+:1:1911//12//31:-*::%EC%Ey”
然後都locale-gen了下。
但是沒有起作用。,
我用的是manjaro gnome.
不知道是什麼原因。
是不是因為我在大陸呢?
謝謝您的指導!
Hans
Locale 设置需要是 zh_TW 才会生效哦,另外可以看看文中的测试方法。和所在地没关系的。
謝謝這麼快的回覆。
改天我再試一下,然後向您報告。