2011-11-19 5 views
2

나는 온도 판독 값을 시각화하기 위해 Perl 스크립트 (RRD)를 통해 RRDtool을 사용하고 있습니다. 내가 그래프의 모든 스웨덴 (평일 등)에 표시 할 때, 나는에 로케일을 설정 sv_SE.UTF-8 내 펄 스크립트 :RRDtool이 점 대신에 쉼표를 그래프에서 소수점 구분 기호로 사용하는 방법

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

RRDtool의이, 및 인쇄 평일 이름을 얻는다 스웨덴어로. 그러나 RRDtool 그래프 아래에 GPRINT로 작성된 숫자 값은 소수점 구분 기호로 쉼표 대신 점을 사용합니다 (XX . xx). 이유는 확실하지 않습니다. 스웨덴어에서는 쉼표를 사용해야합니다 (XX , xx). 나는이 같은 GPRINT를 사용

나뿐만 아니라 sv_SE.UTF-8에 LC_NUMERIC와 LC_CTYPE 설정을 시도했습니다
GPRINT:temp_out:MIN: Min\\: %6.1lf 

하지만 결과없이. sv_SE.iso8859-1을 사용해 보았지만 시도하지 않았습니다. 필자는 다양한 printf 문서를 읽었지만 아직 해결책을 찾지 못했습니다.

RRDtool이 점 대신 소수점 구분 기호로 쉼표를 사용하도록 관리 한 사람이 있습니까? 감사!

편집 :

내가 명령 줄에서 rrdtool graph를 사용하여 그래프를 작성하고 LC_NUMERIC=sv_SE를 설정 한 경우, 나는 쉼표를 소수점 구분 기호를 얻을. 이것은 내 펄 스크립트가 내 setlocale에서 픽업하지 않는다고 믿게한다. 또 하나는 강화해야

생성 차트에 쉼표를 볼 수 ...

+0

어떤 RRD Perl 모듈을 사용하고 있습니까? RRD :: Editor? RRDTool :: Creator? – Zaid

+0

RRDtool과 함께 번들로 제공되는 RRD 모듈을 사용하고 RRDs :: create 및 RRDs :: graph를 사용하여 데이터베이스를 만들고 내 그래프를 작성합니다. –

답변

1

RRDtool의 실제로 이상한 장소에 나타나지에서 길잃은 쉼표를 방지하기 위해 'C'에 여러 장소에서 LC_NUMERIC 강요 ... 것이다 조사 이 논리는 조금 더 rrd_graph.c에 명시 적으로 GPRINT 문을 렌더링하기 전에 사용자 원래 LC_NUMERIC 설정을 다시 활성화합니다.

+0

Tobi에서 chiming 해 주셔서 감사합니다. 이상한 것은 커맨드 라인에서 rrdtool을 사용할 때 쉼표를 얻습니다. 그래서 rrdtool은 명령을 따르는 것처럼 보입니다. 그러나 Perl 모듈 RRD를 사용하여 그래프를 만들 때 점이 나타납니다. 인터넷 검색은 Perl이 LC_NUMERIC을 처리하는 데 도움이 될 수 있음을 제안합니다. 퀘스트가 계속됩니다. –

+0

동일한 버전의 rrdtool을 사용하고 계십니까? LC_NUMERIC 집행은 다소 새로운 것입니다. –

+0

네, 두 경우 모두 RRDtool 1.4.5를 사용하고 있습니다. 결국 나는 빠르고 더러운 루트를 갔다가 rrd_graph.c를 편집하여'LC_NUMERIC'을'C' 대신'sv_SE'로 설정하고 다시 컴파일했습니다. 이제는 RRD 모듈을 사용할 때 쉼표를 소수 구분 기호로 사용합니다. 우아한 솔루션은 아니지만 작동합니다. 답변 해 주셔서 감사합니다. –

관련 문제