我通过一个Perl脚本(rrd)使用RRDtool可视化温度读数。由于我希望图中的所有内容都以瑞典语显示(工作日等),因此我将区域设置设置为sv_SE。在我的Perl脚本中使用:
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
。仍然在调查…
rrdtool实际上是在多个地方强迫LC_NUMERIC
到'C'
,以防止在奇怪的地方出现散乱的逗号…
要在生成的图表中看到逗号,则必须在rrd_graph.c
中进一步增强此逻辑,以便在呈现GPRINT
语句之前显式地重新启用用户原始的LC_NUMERIC
设置。