WebSVN에서 소스파일 내용을 볼때나, 비교, 수정한 사람 보기에서 한글이 깨지는 것을 수정한 패치입니다. enscript를 사용한 상태에서도 문제 없이 한글을 표시 할 수 있으며 시간 및 날짜도 정상적으로 표시됩니다.

버전은 2.0 기준입니다. 최신 수정 내용은 http://www.pyrasis.com/repos/websvn에서 확인 할 수 있습니다.

강제 줄바꿈이 되어 있는 줄은 한줄로 붙여서 적용해 주시기 바랍니다.

Index: include/svnlook.php
===================================================================
--- include/svnlook.php (revision 16)
+++ include/svnlook.php (revision 19)
@@ -212,9 +212,10 @@
          $m =  substr("00".$m, -2);
          $s =  substr("00".$s, -2);

-         $curLog->curEntry->date = "$y-$mo-$d $h:$m:$s GMT";
+         setLocale(LC_TIME, "ko_KR");
+         $curLog->curEntry->date = date("Y-m-d H:i:s \G\M\TO", gmmktime($h, $m, $s, $mo, $d, $y));

-         $committime = strtotime($curLog->curEntry->date);
+         $committime = mktime($h, $m, $s, $mo, $d, $y);  // GMT+0
          $curLog->curEntry->committime = $committime;
          $curtime = time();

Index: include/command.php
===================================================================
--- include/command.php (revision 16)
+++ include/command.php (revision 19)
@@ -68,6 +68,9 @@

    if (empty($inputEncoding))
       $inputEncoding = $config->inputEnc;
+
+   if (isUTF8($str))
+      return $str;

    // Try to convert the messages based on the locale information
    if ($config->inputEnc && $config->outputEnc)
Index: include/utils.php
===================================================================
--- include/utils.php   (revision 16)
+++ include/utils.php   (revision 19)
@@ -148,6 +148,27 @@
    return $url;
 }

+function isUTF8 ($Str) {
+   for ($i = 0 ; $i < strlen ($Str); $i ++)
+   {
+      if (ord($Str[$i]) < 0x80) continue; # 0bbbbbbb
+      elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n = 1 ; # 110bbbbb
+      elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n = 2 ; # 1110bbbb
+      elseif ((ord($Str[$i]) & 0xF8) == 0xF0) $n = 3 ; # 11110bbb
+      elseif ((ord($Str[$i]) & 0xFC) == 0xF8) $n = 4 ; # 111110bb
+      elseif ((ord($Str[$i]) & 0xFE) == 0xFC) $n = 5 ; # 1111110b
+      else
+         return false; # Does not match any model
+
+      for ($j = 0 ; $j < $n ; $j ++) # n bytes matching 10bbbbbb follow ?
+      {
+         if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80))
+            return false;
+      }
+   }
+   return true;
+}
+



@@ -160,6 +181,10 @@

 function hardspace($s)
 {
+   global $rep;
+
+   $s = toOutputEncoding($s, $rep->getContentEncoding());
+
    return '<code>' . expandTabs($s) . '</code>';
 }

Index: include/feedcreator.class.php
===================================================================
--- include/feedcreator.class.php       (revision 16)
+++ include/feedcreator.class.php       (revision 19)
@@ -613,7 +613,7 @@
      * @return a date in RFC 822 format
      */
     function rfc822() {
-       return gmdate("r",$this->unix);
+       return date("r",$this->unix);
     }


Index: languages/korean.php
===================================================================
--- languages/korean.php        (revision 16)
+++ languages/korean.php        (revision 19)
@@ -32,6 +32,8 @@

 $lang["NOREP"] = "저장소가 지정되어 있지 않습니다.";
 $lang["NOPATH"] = "경로를 찾을 수 없습니다.";
+$lang["NOACCESS"] = "디렉토리를 읽을 수 있는 권한이 없습니다.";
+$lang["RESTRICTED"] = "제한된 접근";
 $lang["SUPPLYREP"] = "include/config.php 파일의 \$config->parentPath 또는 \$config->addRepository에 저장소의 경로를 지정해 주십시오.<p>설치 설명서를 참조해 주십시오.";

 $lang["DIFFREVS"] = "리비전간 비교";
@@ -41,6 +43,7 @@
 $lang["SHOWENTIREFILE"] = "모두 보기";
 $lang["SHOWCOMPACT"] = "바뀐 부분만 보기";

+$lang["FILEDETAIL"] = "파일 세부 내용";
 $lang["DIFFPREV"] = "이전 리비전과 비교";
 $lang["BLAME"] = "수정한 사람 보기";

@@ -67,16 +70,22 @@
 $lang["SHOWALL"] = "모두 보기";

 $lang["BADCMD"] = "명령 실행 에러";
+$lang["UNKNOWNREVISION"] = "리비전을 찾을 수 없습니다.";

 $lang["POWERED"] = "Powered by <a href=\"http://websvn.tigris.org/\">WebSVN</a>";
 $lang["PROJECTS"] = "Subversion&nbsp;프로젝트";
 $lang["SERVER"] = "Subversion&nbsp;서버";

+$lang["FILTER"] = "필터링 옵션";
+$lang["STARTLOG"] = "에서";
+$lang["ENDLOG"] = "까지";
+$lang["MAXLOG"] = "최대 리비전";
 $lang["SEARCHLOG"] = "로그 검색";
 $lang["CLEARLOG"] = "검색 조건 삭제";
 $lang["MORERESULTS"] = "나머지 검색 결과...";
 $lang["NORESULTS"] = "검색 조건에 맞는 결과가 없습니다.";
 $lang["NOMORERESULTS"] = "더 이상 검색 조건에 맞는 결과가 없습니다.";
+$lang['NOPREVREV'] = '이전 리비전이 없습니다.';

 $lang["RSSFEEDTITLE"] = "WebSVN RSS feed";
 $lang["FILESMODIFIED"] = "파일 수정됨";
@@ -85,12 +94,10 @@
 $lang["LINENO"] = "행번호";
 $lang["BLAMEFOR"] = "수정한 사람 보기, 리비전 ";

-$lang["YEARS"] = "년";
-$lang["MONTHS"] = "개월";
-$lang["WEEKS"] = "주일";
-$lang["DAYS"] = "일";
-$lang["HOURS"] = "시간";
-$lang["MINUTES"] = "분";
+$lang["DAYLETTER"] = "년";
+$lang["HOURLETTER"] = "시간";
+$lang["MINUTELETTER"] = "분";
+$lang["SECONDLETTER"] = "초";

 $lang["GO"] = "Go";

@@ -103,6 +110,8 @@
 $lang["REVCOMP"] = "역 비교";
 $lang["COMPPATH"] = "비교 경로:";
 $lang["WITHPATH"] = "경로:";
+$lang["FILEDELETED"] = "파일 삭제됨";
+$lang["FILEADDED"] = "새 파일";

 // The following are defined by some languages to stop unwanted line splitting
 // in the template files.
 

저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

17 May 2007

Tags