差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
dokuwiki:localize [2007/07/29 10:05] osamudokuwiki:localize [2007/07/31 15:36] (現在) osamu
行 1: 行 1:
 ====== DokuWikiの日本語対応 ====== ====== DokuWikiの日本語対応 ======
-[[doku>wiki:install|DokuWikiのインストールマニュアル]]([[doku>wiki:ja:install|日本語版]])にしたがって普通にインストール、設定ファイルの''conf/dokuwiki.php''''conf/local.php''の中に+[[doku>wiki:install|DokuWikiのインストールマニュアル]]([[doku>wiki:ja:install|日本語版]])にしたがって普通にインストール。インストール画面で日本語を選択すれば自動的に設定ファイルの''conf/local.php''の中に
 <code php> <code php>
 $conf['lang'] = 'ja';  $conf['lang'] = 'ja'; 
 </code> </code>
-と記述すると、ユーザーインターフェースの文字列などは日本語になる。+と記述されて、ユーザーインターフェースの文字列などは日本語になる。
 機能面での日本語対応を強化するために、次の改造を加える。 機能面での日本語対応を強化するために、次の改造を加える。
  
行 72: 行 72:
 ^D</code> ^D</code>
 のように、入力した文字が分かち書きされて表示されればOK。 のように、入力した文字が分かち書きされて表示されればOK。
 +
 +
 +
  
  
行 154: 行 157:
 を追加。 を追加。
  
-DokuWikiの最近のバージョンでは、日本語を含むアジア圏の文字を1文字1単語とみなして検索する修正が入っているが、これを使うと例えば「文字を探す」で検索すると「文」「字」「を」「探」「す」のすべての文字が検索結果でハイライトされたりして具合がよくない。上記の修正を加えたときは、idx_tokenizer($string,&$stopwords)関数などにある+DokuWikiの最近のバージョンでは、日本語を含むアジア圏の文字を1文字1単語とみなして検索する修正が入っているが、これを使うと例えば「文字を探す」で検索すると「文」「字」「を」「探」「す」のすべての文字が検索結果でハイライトされたりして具合がよくない。上記の修正を加えたときは、idx_tokenizer($string,&$stopwords)関数にある
 <code php>  <code php> 
             $asia = @preg_replace('/('.IDX_ASIAN.')/u','\1 ',$word);             $asia = @preg_replace('/('.IDX_ASIAN.')/u','\1 ',$word);
             if(!is_null($asia)) $word = $asia; //recover from regexp failure             if(!is_null($asia)) $word = $asia; //recover from regexp failure
 </code> </code>
-という2行をそれぞれコメントアウトうがよい。+という2行をコメントアウトする。 
 +、indexer.phpにwordlen()とい関数あるが、これも同じくアジア圏の文字は1文字1単語とみなす処理が入っているので 
 +<code php> 
 +function wordlen($w){ 
 +    // $l = strlen($w); 
 + 
 +    $l = utf8_strlen($w); 
 + 
 +    //// If left alone, all chinese "words" will get put into w3.idx 
 +    //// So the "length" of a "word" is faked 
 +    //if(preg_match('/'.IDX_ASIAN2.'/u',$w)) 
 +    //    $l += ord($w) - 0xE1;  // Lead bytes from 0xE2-0xEF 
 + 
 +    return $l; 
 +
 +</code> 
 +と変更。 
 + 
 +それから、同じくindexer.php の idx_getIndexWordsSorted() 関数の中に、 
 +<code php> 
 +        if ($wlen < 3 && $wild == 0 && !is_numeric($xword)) continue; 
 +</code> 
 +という部分があるが、このままだと3文字り短単語を検索できない。英語などではそれでもよいのだが、日本語の場合1~2文字の単語も検索できないと困るので、これを 
 +<code php> 
 +        if (preg_match('/[^0-9A-Za-z]/u', $string) && $wlen < 3 && $wild == 0 && !is_numeric($xword)) continue; 
 +</code> 
 +と書き換える 
  
 //2005-12-8 - Mecabのプロセスがハングアップして残ってしまうのを避けるために''stream_set_blocking()''を追加//\\  //2005-12-8 - Mecabのプロセスがハングアップして残ってしまうのを避けるために''stream_set_blocking()''を追加//\\ 
 //2007-7-29 - DokuWikiの最近のバージョンにあわせて、修正箇所の説明を変更// //2007-7-29 - DokuWikiの最近のバージョンにあわせて、修正箇所の説明を変更//
 +
  
 ==== 全文検索インデクサーの不具合修正 ==== ==== 全文検索インデクサーの不具合修正 ====
dokuwiki/localize.1185671113.txt.gz · 最終更新: 2007/07/29 10:05 by osamu
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0