eventum 1.5의 한글화

sh.의 이미지

개인적으로 쓰려고 작업한거라 대단하진 않지만 도움이 될까해서 올려봅니다.

잘 모르시는 분들을 위해 eventum에 대해 간단히 소개하자면,
eventum은 MySQL AB에서 배포하는 Issue/Bug Tracker입니다. MySQL/PHP 로 작성되었고 최근 1.5.1까지 발표가 되었습니다. 실제로 MySQL AB의 Technical Support Team에서 사용중인데 eventum제작자에 의하면 이것을 도입한 후에 '드라마틱하게 생산성이 향상'되었다고 합니다.
Smarty라는 유명한 템플릿 엔진을 사용했기 때문에 메세지를 한글화하기가 쉬웠습니다. 잘못된 점이나 궁금한점은 언제든지 알려주시구요...

첨부된 파일은 영문 템플릿 파일의 메세지를 한글로 바꾼것입니다. eventum templates 디렉토리에 압축해제하시면 됩니다. 기존의 en 디렉토리는 이름을 변경하거나 해서 보관하시면 되고요. en을 그대로 두고 kr등으로 저장을 하셔도 되지만 설정을 몇가지 수정해야합니다.

그리고 초기화면에 나오는 그래프에 한글을 나오게 하는 패치 방법은 http://bbs.kldp.org/viewtopic.php?t=53099에서 소개를 했었는데, 그 내용을 그대로 옮겨와봤습니다.

그리고 eventum의 한글은..
-기본적으로 MySQL 4.0.x을 사용하면 입출력에 문제가 없구요, 4.1의 경우 제가 설정법을 잘 몰라서 그런지 잘 안되더군요
- 각종 메세지의 번역은 설치 디렉토리에서 template/en/* 의 내용을 번역해서 사용하거나, en 디렉토리 자체를 kr 등으로 복사해서 번역을 해주면 됩니다. 만약 kr로 복사해서 번역하셨다면 include/class.language.php 에 있는
@define("APP_DEFAULT_LANG" , "en");값을 "kr" 로 변경해줘야 하구요..

아 그리고 깜빡할뻔했는데 설치후에 생성되는 config.inc.php에서
@define("APP_CHARSET", "euc_kr");이 부분을 수정해줘야합니다. 그래야 웹브라우저에서 인코딩이 제대로 인식됩니다.

그리고 초기화면에 나오는 파이 그래프에서 한글을 보려면
그래프 작성에 사용되는 jpgraph를 수정해주면 되는데,
include/jpgraph에 보면 jpgraph.php 파일이 있습니다.

여기서 function StrokeText()가 글자를 쓰는데 관여하는 부분입니다.
이곳에 $txt 변수를 유니코드로 바꿔주기만 하면 되는데
저는 php의 mb_convert_encoding() 을 이용했습니다.
원래 iconv()를 쓰려고 했는데 제대로 작동을 안하더군요 (php 5.0.x 의 snapshop버전을 설치했습니다.)
StrokeText() 의 적당한 부분에 (윗부분)
$txt = mb_convert_encoding($txt, 'UTF-8', 'EUC-KR');
를 추가했습니다..

그리고 jpgraph에 기본적으로 영문 폰트만 지정이 되어있고
또 jpgraph나 eventum에 ttf가 포함되어있지 않으므로
윈도우의 굴림체를 이용하기 위해서 몇가지를 추가해줘야 합니다..

jpgraph.php 상단에 TTF Font families 라는 부분이 있는데
여기에 FF_GULIM을 추가합니다.

// TTF Font families
DEFINE("FF_COURIER",10);
DEFINE("FF_VERDANA",11);
DEFINE("FF_TIMES",12);
DEFINE("FF_HANDWRT",13);
DEFINE("FF_COMIC",14);
DEFINE("FF_ARIAL",15);
DEFINE("FF_BOOK",16);
DEFINE("FF_GULIM",17);

그리고 class TTF에 보면

$this->font_fam=array(
        FF_COURIER => TTF_DIR."courier",
        FF_VERDANA => TTF_DIR."verdana",
        FF_TIMES => TTF_DIR."times",
        FF_HANDWRT => TTF_DIR."handwriting",
        FF_COMIC => TTF_DIR."comic",
        FF_ARIAL => TTF_DIR."arial",
        FF_BOOK => TTF_DIR."bookant",
        FF_GULIM => TTF_DIR."gulim");
여기에도 GULIM을 추가해줍니다.

그리고 아까 구경했던 StrokeText()에 보시면 if문중에
elseif($this->font_family >= FF_COURIER && $this->font_family <= FF_BOOK) {
위의 FF_BOOK을 FF_GULIM 으로 수정합니다..

이제 jpgraph.php 는 아 됐구요..
같은 디렉토리에 jpgraph_dir.php 에 TTF파일이 들어있는
디렉토리를 지정해줍니다.
DEFINE("TTF_DIR", "/home/httpd/html/jpgraph/ttf/");물론 이 안에 gulim.ttf 를 넣어둬야합니다..

마지막으로 그래프를 그려주는 프로그램인 stat_chart.php 에서
$font = FF_GULIM;
이렇게 강제로 지정해줘버렸습니다.

File attachments: 
첨부파일 크기
Binary Data eventum-1.5-kr.tar.gz118.89 KB
파일 eventum-1.5.1-kr.tgz124 KB
Image icon eventum_hangul.PNG72.99 KB
Forums: 
송지석의 이미지

utf8용으로 (전 Fedora Core3를 사용) 만들어봤습니다.
번역내용은 대동소이합니다.
tgz 파일입니다.

config.inc.php에
@define("APP_CHARSET", "utf-8");
로 수정하시면 되고

전 templates 아래 kr로 새로 템플릿을 만들었기 때문에
include/class.language.php 에
첫번째 부분을
$avail_langs = array(
"en",
"kr"
);
@define("APP_DEFAULT_LANG" , "kr");
이렇게 하시면 됩니다.

UTF 환경에서 한글로 된 메일을 제대로 보내려면
include/pear/Mail 아래의 mime.php를 수정해야 합니다.

 $this->_build_params = array(
                              //'text_encoding' => '7bit',
                              'text_encoding' => 'base64',
                              //'html_encoding' => 'quoted-printable',
                              'html_encoding' => 'base64',
                              '7bit_wrap'     => 998,
                              //'html_charset'  => 'ISO-8859-1',
                              'html_charset'  => 'UTF-8',
                              //'text_charset'  => 'ISO-8859-1',
                              'text_charset'  => 'UTF-8',
                              //'head_charset'  => 'ISO-8859-1'
                              'head_charset'  => 'UTF-8'
                             );

//로 주석으로 만들고 UTF-8로 만들어줘야 됩니다.
저렇게 하면 한글제목, 이름, 내용 다 제대로 됩니다.

그리고 질문이 하나 있는데 저는 jpgraph에서 한글이 안나오네요.
위에서 설명된 대로 해면 x만 나오고 그림이 나오지 않습니다. php는 Fedora core3에 깔린 패키지를 사용했습니다.
jpgraph 1.x는 php 4.x대에서만 작동한다고 하니 php-4.3.10-3.2 인 FC3에서도 되는 게 맞을텐데.. 에러메시지도 찾지 못하겠어서 실마리를 잡지 못하고 있습니다. -_-;;

댓글 첨부 파일: 
첨부파일 크기
파일 0바이트
송지석의 이미지

Fedora Core3에서 한글 그래프 성공했습니다.
하는 방법은 의외로 간단했습니다. 어제 하루 종일 삽질한 걸 생각하면 ㅠㅠ

1) /usr/share/fonts/ko/TrueType/gulim.ttf 파일을 gulimbd.ttf로 복사한다.
마찬가지로 batang, dotum도 해줍니다. (안해도 되지만 쓰고 싶다면)
eventum에 들어있는 jpgraph가 인식하게 하는 꼼수입니다.
2) 폰트 추가 알려주기
include/jpgraph/jpgraph.php 에
윗부분에는

// TTF Font families
DEFINE("FF_COURIER",10);
DEFINE("FF_VERDANA",11);
DEFINE("FF_TIMES",12);
DEFINE("FF_HANDWRT",13);
DEFINE("FF_COMIC",14);
DEFINE("FF_ARIAL",15);
DEFINE("FF_BOOK",16);
DEFINE("FF_BATANG",17);
DEFINE("FF_DOTUM",18);
DEFINE("FF_GULIM",19);

바탕, 돋움, 굴림 추가해주고
아래쪽에 찾아서
$this->font_fam=array(
    FF_COURIER => TTF_DIR."courier",
    FF_VERDANA => TTF_DIR."verdana",
    FF_TIMES => TTF_DIR."times",
    FF_HANDWRT => TTF_DIR."handwritin
    FF_COMIC => TTF_DIR."comic",
    FF_ARIAL => TTF_DIR."arial",
    FF_BOOK => TTF_DIR."bookant",
    FF_BATANG => TTF_DIR."batang",
    FF_DOTUM => TTF_DIR."dotum",
    FF_GULIM => TTF_DIR."gulim");

원래는 BOOK 까지만 있는데 위처럼 바꿔줍니다. 따옴표와 세미콜론 주의

그리고 이 스레드 처음 글처럼

Quote:
그리고 아까 구경했던 StrokeText()에 보시면 if문중에
elseif($this->font_family >= FF_COURIER && $this->font_family <= FF_BOOK) {
위의 FF_BOOK을 FF_GULIM 으로 수정합니다..

include/jpgraph_dir.php 에서
DEFINE("TTF_DIR", "/usr/share/fonts/ko/TrueType/");
이렇게 폰트 경로 알려줍니다.

3) 폰트 사용하기
stat_chart.php에서

//$ttf_font = TTF_DIR . "verdana.ttf";
$ttf_font = TTF_DIR . "gulim.ttf";
if (!@file_exists($ttf_font)) {
    $font = FF_FONT1;
} else {
    //$font = FF_VERDANA;
    $font = FF_GULIM;
}

이렇게 VERDANA 대신 GULIM으로 바꿔주면 됩니다.
댓글 첨부 파일: 
첨부파일 크기
Image icon 0바이트
sh.의 이미지

본문중에 질문이 있는걸 몰랐네요.. 이제야 봤습니다. 성공하셨다니 축하드립니다 :)
저도 1.5.1로 올려야하는데 귀차니즘때문에...

송지석의 이미지

혹시 리스트 화면에 있는 엑셀 다운 기능을 써보셨나요?
저는 스플로러에선 실패하고 파이어폭스(리눅스)에선 csv.php로 저장되는군요.(파일 포맷은 csv임)

그리고 이슈 생성시 첨부파일명에 한글이 들어가면 저는 업로드가 안되던데 되시나요?

sh.의 이미지

이슈 생성시의 첨부파일은 해보지 않았는데
생성후에 attached file에는 한글이 포함된 파일도 등록이 잘 됩니다.
다만 IE에서는 파일 다운로드가 안되더군요
파이어폭스에서는 정상적으로 볼 수 있었습니다.

그리고 csv로 다운받는것은 방금 해봤는데 말씀하신것처럼 csv.php 로 저장되지만 내용은 제대로 저장되는것같네요.
csv.php에서

header("Content-Disposition: \"inline\"; filename=issue_list_".date('YmdHis').".csv");
처럼 헤더에 파일명을 직접 지정해주면 될것같습니다.

송지석의 이미지

왜그런지 모르겠는데 https 로 할 땐 안되고 http로 할 땐 되는군요. 한글 파일명도 잘 되고. 엑셀 다운로드도 되고요.
이 차이를 알려면 아파치 설정을 잘해야 되는데 --;; 실력이 거기까진 않되겠네요.
대신에 저는 UTF8을 쓰기 때문에 받은 파일이 깨져보입니다.
csv.php에 다음을 고치시면 해결됩니다.
$csv = base64_decode($HTTP_POST_VARS["csv_data"]);
이거를

$csv_utf = base64_decode($HTTP_POST_VARS["csv_data"]);
$csv = iconv("UTF-8", "euc-kr", $csv_utf);  // jssong to convert encoding
HongiKeam의 이미지

멋지잖아요!!!!


----
God take what you would.

송지석의 이미지

한글이름 파일 다운로드시 한글 이름이 깨지지 않게 하려면
include/class.attachment.php
에서 //$filename = Attachment::nameToSafe($filename); jssong to download hangul
이부분을 주석처리 해야 합니다.
FC3에서는 되더군요. 대신 빈칸은 +로 바뀌어 오더군요.
좀더 잘 하려면 nameToSafe 함수를 바꿔야 할텐데.. 일단 이걸로 만족입니다.

만일 euc-kr 환경에서 안된다면 iconv를 download.php에서 사용해야 할 지도 모릅니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.