Zen Cart ver 1.2.0 を気合いで UTF-8 インストール

有志の方々によって日本語化されている Zen Cart ですが,文字コードEUC なんですよね。なので UTF-8 で動かしてみました。

手順としては

  1. http://zen-cart.jp/ から 日本語版をダウンロード
  2. 展開して EUC コードのソースを UTF-8 に変換
  3. EUC である設定部分を UTF-8 に変更
  4. データベースを UTF-8 にする

といった感じです。たいしたことをしているわけではありません。

展開して EUC コードのソースを UTF-8 に変換

なんらかのソフトで UTF-8 にしてやります。具体的には

admin\includes\languages\japanese.php
admin\includes\languages\japanese\ 以下の .php ファイル
includes\languages\japanese.php
includes\languages\japanese\ 以下の .php ファイル
includes\classes\_nittsu.php
includes\classes\_sagawaex.php
includes\classes\_yamato.php
includes\modules\shipping\nittsu.php
includes\modules\shipping\sagawaex.php
includes\modules\shipping\yamato.php
zc_install\mysql_zencart.sql (使う DB によって適宜)
zc_install\includes\languages\japanese.php
zc_install\includes\languages\japanese\ 以下の .php ファイル
zc_install\templates\gpl_license.japanese.txt

あたりですかね。漏れがあるかもわかりませんが,日本語以外はどうせ ASCII だろ,と全ファイル対象で UTF-8 に変換してしまってもいいかもしれません。

文字コードを一括で変換する便利なソフトもありますが,私は iconv と find を使って地道に変換しました。

#!/bin/sh

iconv -f 'EUC-JP-MS' -t 'UTF-8' $1 > TEMP
mv -f TEMP $1

みたいなシェルスクリプトを用意して,

% find includes\languages\japanese\ -name '*.php' -exec ./to_utf8.sh \{\} \;

とか,そんな感じで。

EUC である設定部分を UTF-8 に変更

対象ファイルは

admin\includes\languages\japanese.php
includes\languages\japanese.php
zc_install\includes\languages\japanese.php

として,EUC-JP と指定してある部分を UTF-8 に書き換えていきます。

...

mb_internal_encoding("UTF-8");
mb_http_output("UTF-8");

...

@setlocale(LC_TIME, 'ja_JP.UTF-8');

...

define('CHARSET', 'UTF-8');

...

こんな感じで。

データベースを UTF-8 にする

Fedora core 5 だとデフォルトで UTF-8 でしたよ。

といいたいところですが,クライアントとのネゴシエーション文字コード変換されてしまって所々おかしくなってしまったので,/etc/my.cnf ファイルに

[mysqld]
...
skip-character-set-client-handshake

なるオプションを追加しました。

あとは普通にインストール

すればいいんですが,昨日も書いたように MySQL 5 ではカテゴリの表示がおかしくなったので,http://www.zen-cart.com/forum/showpost.php?p=144108&postcount=12 の方のパッチを手であてていきました。本当は他にも直すべきところはあるみたいなんですが,とりあえずこの変更を加えるとうまく動きます。

あと本題とは違いますが「demo@localhost」なる管理アカウントが残っているので管理画面から削除。怖いよ。

で,何がうれしいの?

メリットは…なんでしょうね?(笑)

メール部分と htmlarea(WYSIWIG エディタ)についてはまったくテストしていません。うまくいかないんじゃないかなぁ。


本筋とはそれますが,昔の sendmail を思いおこさせるような巨大なアプリなんでカスタマイズしていくのしんどいです。たとえばレビュー機能いらないよ,と思ったら,

  • 「追加設定・ツール」→「サイドボックスの表示設定」で sideboxes/reviews.php を表示しない設定にする
  • 「商品の管理」→「商品タイプの管理」で,各商品タイプについて「edit layout」ボタンを押して,「レビューボタン表示」等をオフにする

してかないといけなかったり。後者なんて気づくかよ!という感じですが,テンプレートから該当する文字列を grep してようやく見つけました。

xoopsdrupal のようなプラグインアーキテクチャの EC 構築ソフトが欲しいですねぇ。