2011-11-19 77 views
2

我使用RRDtool通过Perl脚本(RRD)来可视化温度读数。因为我想在瑞典(平日等),以显示一切都在图中,我的区域设置为sv_SE.UTF-8在我的Perl脚本:如何使RRDtool使用逗号而不是点作为图中的小数点分隔符

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

您使用哪个RRD Perl模块? RRD ::编辑器? RRDTool的造物主::? – Zaid

+0

我正在使用与RRDtool捆绑在一起的RRDs模块,并使用RRDs :: create和RRDs :: graph创建数据库并构建我的图。 –

回答

1

rrdtool的实际上是迫使LC_NUMERIC在多个地方'C'为了防止杂散逗号从显示奇怪的地方了......

看到逗号生成的图表,一个人必须要加强这个逻辑在rrd_graph.c中进一步明确地重新启用用户原始LC_NUMERIC设置之前提交GPRINT语句。

+0

谢谢你在Tobi打瞌睡。奇怪的是,当我从命令行使用rrdtool的时候,我在图中得到了逗号,所以rrdtool似乎是遵循命令。但是,使用Perl模块RRD创建图形时,我会看到点。有一点谷歌搜索会表明,Perl处理LC_NUMERIC可能会有些麻烦。任务继续。 –

+0

你确定你一直在使用相同版本的rrdtool吗? LC_NUMERIC执法是相当新的。 –

+0

是的,我在两种情况下都使用RRDtool 1.4.5。最后,我去了快速和脏的路线,并编辑rrd_graph.c将'LC_NUMERIC'设置为'sv_SE'而不是'C',并重新编译。现在,当使用RRDs模块时,我也会将逗号作为小数点分隔符。不是一个优雅的解决方案,但它的工作。非常感谢您花时间回答! –

相关问题