前幾個星期, 我家的 Debian 把 RRDTool 由 1.2.11 升到 1.2.15, 結果發現使用這兒的中文化的 patch 沒有效果.
今天特定花了一些時間看了一下, 發現在 rrd_gfx.c 的 patch 多此一舉, 因為原本的程式就有做相同的事情. 所以... 加上 patch, 也只是做一樣的事情. 也就是基本上在 1.2.1x 上頭, 就應該能正確的畫出中文才對. (1.2.11 之前的 source 沒看, 不太確定, 不過看原本的 1.2.8 的 patch, 似乎也是有才對)
而這次造成原本的功能不能用 (或者說原本的 patch 不能用), 是因為在 rrd_graph.c 中, 在原本最後的 setlocale() 之後, 再加上了一個 setlocale(LC_CTYPE, ""), 造成中文會變成亂碼.
我們只要把這個 setlocale() 拿掉, 加上一個 setlocale(LC_ALL, "zh_TW.UTF-8") 或 setlocale(LC_ALL, "en_US.UTF-8") 就可以了. 以我個人來說, 比較喜歡用 en_US.UTF-8, 因為時間日期還是習慣用英文格式的.
patch 可以參考:
http://blog.teatime.com.tw/post/1/168