如何使RRDtool在图形中使用逗号代替点作为小数分隔符

时间:2011-11-19 16:36:04

标签: perl locale rrdtool setlocale

我通过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。还在调查......

1 个答案:

答案 0 :(得分:1)

rrdtool实际上是在LC_NUMERIC的多个地方强制'C',以防止流浪逗号出现在奇怪的地方......

要在生成的图表中查看逗号,必须在rrd_graph.c中进一步增强此逻辑,以便在呈现LC_NUMERIC语句之前显式重新启用用户原始GPRINT设置。