[Codeigniter-users] 日本語版作成について

Back to archive index

Kenichi Ando(Neo,Inc) ando****@neo-n*****
2007年 12月 6日 (木) 22:55:51 JST


bossatamaです。

On Thu, 6 Dec 2007 13:35:23 +0900
Kenji <kenji****@club*****> wrote:

> > 2.DB-driver.php
> > MySQLの(utf-8/euc-jp/Shift-JIS)のセットネーム
> 
> これどうしましょうね?
> 
> 現状、データベースクラスは、オーバーライドできないんですね。

日本語版はコアに手入れをするという前提で考えました。(不定)
実装ついては、CakePHPを参考にしました。
また本家へ依頼済みです。(trunk覗きましたが未実装)
http://codeigniter.com/forums/viewthread/61656/

まず、DB_Driver.php(line:95あたり)

$defaults = array(
'hostname'=> '',
'username'=> '',
'password'=> '',
'database'=> '',
'conn_id'=> FALSE,
'dbdriver'=> 'mysql',
'dbprefix'=> '',
'port'=> '',
'pconnect'=> FALSE,
'db_debug'=> FALSE,
'cachedir'=> '',
'cache_on'=> FALSE,
'encoding'=> ''
);

'encoding'=> ''を新しく追加

DB_Driver.php(line:155あたり)に以下を挿入
if (isset($this->encoding) && $this->dbdriver == 'mysql')
{
	$this->simple_query('SET NAMES '.$this->encoding);
}

config/database.phpに以下を新規追加

$db['default']['encoding'] = "";

実際は、
$db['default']['encoding'] = "utf8";や
$db['default']['encoding'] = "ujis";や
$db['default']['encoding'] = "sjis";
などとする。

contorollers/内でデータベースをロードします。

普段どおりですと、
$this->load->database();
でも指定したエンコードが正常に動作します。

$config['hostname'] = "localhost";
$config['username'] = "test";
$config['password'] = "pass";
$config['database'] = "codeigniter";
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$config['active_r'] = TRUE;
$config['encoding'] = "utf8";

$this->load->database($config);

でも動きます。
こんなんでどうでしょうか?

['encoding'] というパラメータをCI内とマニュアルに
実装する。→日本語版の独自仕様

※テストはselectでしか試していません


//bossatama




Codeigniter-users メーリングリストの案内
Back to archive index