我通过Perl脚本(RRD)使用RRDtool来显示温度读数。由于我希望图表中的所有内容都以瑞典语显示(工作日等),我在我的Perl脚本中将语言环境设置为 sv_SE.UTF-8 :
use POSIX qw(locale_h);
setlocale(LC_ALL, "sv_SE.UTF-8");
RRDtool获取此信息,并以瑞典语打印工作日名称。但是,使用GPRINT在RRDtool图表下写入的数值使用点而不是逗号作为十进制分隔符(XX 。 xx),我不知道为什么。在瑞典语中,应使用逗号(XX , xx)。我像这样使用GPRINT:
GPRINT:temp_out:MIN: Min\\: %6.1lf
我也尝试将LC_NUMERIC和LC_CTYPE设置为 sv_SE.UTF-8 ,但没有结果。我尝试过使用 sv_SE.iso8859-1 ,但没有去。我还阅读了各种printf文档,但尚未提出解决方案。
有没有人设法让RRDtool使用逗号代替点作为小数分隔符?谢谢!
修改
如果我在命令行使用rrdtool graph
创建图形并设置了LC_NUMERIC=sv_SE
,我将逗号作为十进制分隔符。这让我相信我的Perl脚本没有接收到setlocale
。还在调查......
答案 0 :(得分:1)
rrdtool实际上是在LC_NUMERIC
的多个地方强制'C'
,以防止流浪逗号出现在奇怪的地方......
要在生成的图表中查看逗号,必须在rrd_graph.c
中进一步增强此逻辑,以便在呈现LC_NUMERIC
语句之前显式重新启用用户原始GPRINT
设置。