如何使 RRDtool 在图表中使用逗号而不是点作为小数分隔符

发布于 2024-12-17 06:26:45 字数 749 浏览 1 评论 0原文

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

I'm using RRDtool through a Perl script (RRDs) to visualize temperature readings. As I want everything in the graph to be shown in Swedish (weekdays etc), I set the locale to sv_SE.UTF-8 in my Perl script with:

use POSIX qw(locale_h);
setlocale(LC_ALL, "sv_SE.UTF-8");

RRDtool gets this, and prints weekday names in Swedish. However, numerical values that are written under the RRDtool graph with GPRINT use dots instead of commas as decimal separators (XX.xx), and I'm not sure why. In Swedish, commas should be used (XX,xx). I use GPRINT like this:

GPRINT:temp_out:MIN: Min\\: %6.1lf

I've tried setting LC_NUMERIC and LC_CTYPE to sv_SE.UTF-8 as well, but without result. I've tried using sv_SE.iso8859-1, but no go. I've also read various printf documentation, but have yet to come up with a solution.

Has anyone managed to make RRDtool use commas instead of dots as decimal separators? Thanks!

Edit:

If I create the graph using rrdtool graph at the command line and have set LC_NUMERIC=sv_SE, I get commas as decimal separators. This leads me to believe that my Perl script doesn't pick up on my setlocale. Still investigating...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

骑趴 2024-12-24 06:26:45

rrdtool 实际上是在多个位置强制 LC_NUMERIC'C',以防止杂散逗号出现在奇怪的位置...

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

rrdtool is actually forcing LC_NUMERIC in multiple places to 'C' in order to prevent stray commas from showing up in odd places ...

to see commas in generated charts, one would have to enhance this logic a bit further in rrd_graph.c to explicitly re-enable the users original LC_NUMERIC setting prior to rendering GPRINT statements.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文