<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>blog.BDDB.org</title>
<link>http://blog.bddb.org/index.php</link>
<pubDate>Mon, 12 Mar 2007 23:45:23 </pubDate>
<description>
blog.BDDB.org - RSS 2.0 (Really Simple Syndication).
</description>
<item>
<title>stardictで生物学辞典第四版（EPWINGデータ）を使う</title>
<link>http://blog.bddb.org/article.php?id=240</link>
<pubDate>Mon, 12 Mar 2007 23:45:23 +0900</pubDate>
<description>
StarDictという辞書ソフトがあります。特に他と比べてこれが良いというわけではありませんが、今使っているDebianのapt-getでインストールできるので楽チンです。

っというわけで、今までWindowsでDDWinを使っていたの...</description>
<content:encoded>
<![CDATA[<p>
<a href="http://stardict.sourceforge.net/">StarDict</a>という辞書ソフトがあります。特に他と比べてこれが良いというわけではありませんが、今使っているDebianのapt-getでインストールできるので楽チンです。<br />
<br />
っというわけで、今までWindowsでDDWinを使っていたのでEPWING形式データを扱っていましたが、StarDict形式へ変換する必要が出てきました。<br />
<br />
このStarDictの良いところは、起動して知りたい単語を選択すると自動的に辞書を検索してくれるところです。論文を読み進めるのに、結構便利。<br />
<br />
海ずかんのデータで百科事典データを作って提供したいので、URLリンクや画像を使える辞書型式があればそちらに移る予定ですが。。。<br />
<br />
<br />
</p>
<!--more-->
<p>
まず、先人の教えどおり<a href="http://ikushimo.com/edic/junbi.htmlを">DDWinを使いテキスト形式で保存しなおし</a>。<br />
<br />
得られたテキストファイルをDebianへ移動させ、nkfでUTFへ変換。
<blockquote cite="">nkf --utf8 -Lu biology.txt &gt; biology.utf8</blockquote>
<br />
UTFへ変換したファイルをPHPで編集。ソースは下の通りです。
<blockquote cite="">
<pre>
#!/usr/local/bin/php
&lt;?PHP
$chkmode=FALSE;
$fnr="./biology.utf8";
# file open
$fpr=fopen($fnr,"r");
# read file
$iflag_sep=-1;
$istr="";
$ititle="";
$icont="";
$iline=0;
$ierror[0]=0;
$c ="";
$c1="";
$c2="";
while(!feof($fpr)){
  $c2=$c1; $c1=$c; $c=fgetc($fpr);
  if(feof($fpr)) break;
  if($c=="\n") $iline++;
  if($c1=="\n" && $c!=" " &amp;&amp; $c!="\n"){
    # found data separator
    $iflag_sep=$iflag_sep*-1;
    if($iflag_sep&gt;0){
      $ititle=$istr;
      $istr=$c;
    }
    else{
      $icont=$istr;
      $istr=$c;
      if(strlen($ititle)&gt;strlen($icont)){
        #break;
        $ierror[++$ierror[0]]="up side down: line ".$iline;
        if($chkmode==TRUE) echo $iline."\n";
        $ititle=$icont;
        $iflag_sep=$iflag_sep*-1;
      }
      else{
        #write out
        if($chkmode!=TRUE) echo $ititle."\n".$icont."\n\n";
      }
    }
  }
  else{
    if($c!="\n") $istr.=$c;
  }
}
if($chkmode==TRUE){
  #echo "############ error found ##############\n";
  #for($irow=1;$irow&lt;count($ierror);$irow++){
  #  echo $ierror[$irow]."\n";
  #}
  echo (count($ierror)-1)." data were in wrong format!\n";
}
?&gt;
</pre>
</blockquote>
<br />
ファイルを眺めながら規則性を探したので、本当にこれで良いのかわかりません。特に人名の項は特殊で、形式エラーになるのでほとんどオミットされてしまっています。<br />
<br />
変換したファイルを「stardict-editor」でBabylon型式として読み込むとStarDict型式の辞書ファイルができます。出てきたファイルを「/usr/share/stardict/dic/」以下へ移動すると使えるようになります。<br />
</p>
]]>
</content:encoded>
</item>
</channel>
</rss>