為 glibc localedata 新增民國紀年支援
昨天被 @聞其詳 問起 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 的提交方式好像比較麻煩,所以先寫篇部落格好了。
發散:這個方法當然還可以用來實現各種自定義年號,比如朝鮮的主體紀年同樣在 1912 年為元年,另外還有1970 “Unix 元年”、2013(咚咚咚,敲門聲