日本の一般的な習慣に合わせるために、いくつかの設定を行います。
管理ページから、以下のようにして言語に「日本語」を追加します。
画面から[Localization (ローカライズ)]>[Languages (言語)]を選択して、[new language]ボタンを押して以下の情報を入力します。
Name: Japanese Code: ja Images: flag_ja.gif (国旗の画像を新たに作成する必要あり) Directory: japanese Sort Order: 4
言語コード'ja'は、catalog/includes/application_top.phpの中でも次のように指定します。
define('DEFAULT_LANGUAGE', 'ja');
管理ページから、以下のようにして通貨に「円」を追加します。
画面から[Localization (ローカライズ)]>[Currencies (通貨)]を選択して、[new currency]ボタンを押して以下の情報を入力します。
Title: Japanese Yen Code: JPY Symbol Left: Symbol Right: 円 Decimal Point: . Thousands Point: , Decimal Places: 0
通貨コード'JPY'は、catalog/includes/application_top.phpの中でも次のように指定します。
define('DEFAULT_CURRENCY', 'JPY');
標準では、商品の価格を'USドル'の単位で入力して、それが'円'に換算して表示されます。それでは使いづらいですので、価格は'円'で入力して、必要があれば'USドル'に換算して表示してもらいたいですね。
それを実現するには、catalog/includes/data/rates.phpの中に記述してある換算率を変更します。初期状態では、次のような値が記入されています。これは、'USドル'を中心として、'円'やその他の通貨への換算率を定義したものです。
<?php : 'JPY' => '116.874', : 'USD' => '1.0000', : ); ?>
これを、円を中心とした換算率に変更します。'JPY'を1.0として次のようになります。
<?php $currency_rates = array( 'AUD' => '0.01633', // 豪ドル 2001/04/09 'DEM' => '0.01754', // 独マルク 2001/04/09 'ESP' => '1.505', // Spanish Peseta 'EUR' => '0.008973', // ユーロ 2001/04/09 'HKD' => '0.06270', // 香港ドル 2001/04/09 'JPY' => '1.0000', // 日本円 'KRW' => '11.11', // 韓国ウォン 2001/04/09 'TWD' => '0.2639', // 台湾ドル 2001/04/09 'USD' => '0.008042', // 米ドル 2001/04/09 'DUMMY', '' ); ?>
テーブルzonesに都道府県を登録します。次のようなJIS都道府県コードに準拠したSQLを用意してzonesに追加します。
INSERT INTO zones VALUES ( 79,107,'01','北海道'); INSERT INTO zones VALUES ( 80,107,'02','青森県'); INSERT INTO zones VALUES ( 81,107,'03','岩手県'); INSERT INTO zones VALUES ( 82,107,'04','宮城県'); INSERT INTO zones VALUES ( 83,107,'05','秋田県'); INSERT INTO zones VALUES ( 84,107,'06','山形県'); INSERT INTO zones VALUES ( 85,107,'07','福島県'); :
ただし、アカウントの作成時などに、リストボックスに表示される件名の順番が名前(都道府県名)順になってしまいます。これはコード順にする必要があります。
アカウント作成ページ(catalog/create_account.php)で[国]の欄に'日本'が選ばれたときに、都道府県のリストは標準では地域名('zone_name')の順に並び替えられて表示されます。この部分を'zone_id'の順に並び替えられるように変更します。
catalog/includes/functions/general.phpの中の関数tep_get_zone_list()とtep_js_zone_list()に記述してあるSQLの'order by'のパラメータを以下のような規則で決定するようにします。
$s_orderkey = ($country_code == 107) ? 'zone_id' : 'zone_name';
$s_orderkey = ($country_values['zone_country_id'] == 107) ? 'zones.zone_id' : 'zones.zone_name';
'107'は日本の国IDです。
(2001年04月27日追加)
住所フォーマットというのは、住所を表記するのに、どんな項目をどんな順番でならべるかを定義した規則です。テーブルaddress_formatに記録します。
日本向けに、次のような住所フォーマットを用意しました。
INSERT INTO address_format VALUES (5, '$lastname $firstname$cr$postcode$cr$statename$city$cr$streets$cr$country', '$statename $city');
また、日本向けの住所にこのフォーマットを使用してもらうために、テーブルcountriesの日本のレコードのaddress_format_idを変更します。
INSERT INTO countries VALUES (107,'Japan','JP','JPN','5');
ここで登録した住所フォーマットに合わせて、tep_address_format()という関数が実際の住所の表記を組み立てます。ただし、標準では住所に県名を記入することができないため、住所フォーマットに$statenameという変数名を設けて、それを住所に変換できるよう、以下の関数を終始しました。
cf_bankは、商品の配送前に銀行振込をしてもらう支払いモジュールです。
次のファイルで構成されています。
(2001年05月07日追加)
cod_bankは、商品の到着後に銀行振込をしてもらう支払いモジュールです。
次のファイルで構成されています。
(2001年05月07日追加)
sagawaexは、佐川急便(通常便)の運賃計算を行う配送モジュールです。ショップと顧客の住所(都道府県)、配送する荷物の重量によって運賃計算を行います。
次のファイルで構成されています。
(2001年05月07日追加)
PHP4を利用した場合には、日本語を取り扱うのに注意する必要があります。
WWWブラウザが正しく判定できるように、WWWサーバとWWWブラウザの間でやりとりされるMIMEヘッダの中でcharsetパラメタを用いて文字コードを指定します。
対象となるのは以下の.phpファイルです。
これらのファイルの先頭部分に、以下の記述を追加します。
header("Content-type: text/html; charset=EUC-JP");
また、HTML文書の中でMETAタグを用いて、次のような手段で文字コードを指定することもできます。
まず、admin/includes/languages/japanese.phpとcatalog/includes/languages/japanese.phpに、次のような行を追加します。
define('ADD_HEAD', '<meta HTTP-EQUIV="Content-type" CONTENT="text/html; charset=euc-jp">');
次に、'<head>...</head>'の記述のある.phpファイルの'<head>...</head>'の中に、以下の行を挿入します。
<? echo ADD_HEAD; ?>
この対象となるのは、catalogセクションでは以下の.phpファイルです。
adminセクションでは以下の.phpファイルです。
(2001年05月15日更新)
リンクの引数として日本語を渡しているために文字化けが発生しているところがあります。これは、日本語の部分をurlencode()でエンコードすることで回避できます。対象になるのは以下のファイルです。
(2001年05月08日追加)
自動的に送付されるE-Mailに関わるソースファイルには、以下のものがあります。いずれもcatalogセクションです。
これらについて、メール本文の文字化け対策のために必要な変更は以下のようなものです。
'Content-Type: text/plain; charset=ISO-2022-JP'
また、E-Mailの差出人に日本語が使われていた場合の文字化け対策が必要です。簡単な方法としては、catalog/contact_us.phpの差出人の氏名部分を取り外して、本文部分の先頭に付加します。
htmlentities()を使用しているために文字化けが発生しているところがあります。これは、htmlspecialchars()に置き換えることで回避できます。対象になるのは以下のファイルです。
substr()を使用しているために文字化けが発生しているところがあります。2バイト文字の1バイト目を残して文字列を削除するためです。これは、jstr_substr()に置き換えることで回避できます。対象になるのは以下のファイルです。
(2001年04月26日追加)
catalog/includes/functions/general.phpの中のtep_break_string()は、文章中の単語を指定の文字数でハイフネーションする関数です。日本語に対して行うと、文字化けが発生します。これは、この関数を使用している行をコメントアウトすることで回避できます。対象になるのは以下のファイルです。
(2001年04月26日追加)
管理ページの表示を日本語化するために、configuration_groupテーブルのconfiguration_group_titleカラムに記録されている設定グループ名を日本語に変更すると、設定グループ名に依存したコードが動作しなくなります。
対象になるファイルはcatalog/advanced_search_result.phpです。このファイルの133行目の以下のSQLについて、
select c.configuration_key from configuration_group cg, configuration c where cg.configuration_group_title = 'Product Listing' ...
この中の'Product Listing'を新しい設定グループ名である'商品一覧'に変更します。
(2001年04月26日追加)