メインメニュー
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
My Links
メイン
   Amaxoop系共通
     「This item is currently not available by this merchant.」について
新規スレッド作成画面へ

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
koji
投稿日時: 2005-1-16 21:26
長老
登録日: 2004-12-5
居住地:
投稿: 262
「This item is currently not available by this merchant.」について
taquinoさん、こんにちわ。

今日は、修正方法について教えていただきたく、投稿させていただきました。

恐らくは「この商品は現在入手できません(在庫切れです?)」といった感じのメッセージ文だと思うのですが、題名に書きましたような文章が表示される場合、この英文を日本語に変換したいな・・・ と思いまして。

どのファイルでどのような変更をしたらいいのかがさっぱりわからず、ご教示いただければ幸いです。
返信
taquino
投稿日時: 2005-1-17 0:21
管理人
登録日: 2004-10-22
居住地: 湘南
投稿: 1543
Re: 「This item is currently not available by this merchant.」について
そのメッセージ文はAmazonが送ってくるものです。
変換するのであれば、プログラムに手を入れる必要があります。
Amaxoop系では、Amazonから取得したデータを内部用にデータ変換を行っていますので、そこに処理を追加すれば可能です。

具体的には、「/include/ecs.php」の中の「ECS_To_Amaxoop」というfunctionで、「return $Result;」の直前あたりで「$Result['Availability']」の値を条件式で書き換えるようにしてください。
この時点でもデータはEUCで扱うようになっています。

なお、在庫が無い場合、Amazonの戻り値は英文だと「Out of stock」になりますので、not availableだと「取り扱っていません」ということだと思います。
返信
koji
投稿日時: 2005-1-17 0:42
長老
登録日: 2004-12-5
居住地:
投稿: 262
Re: 「This item is currently not available by this merchant.」について
taquinoさん、返信ありがとうございます。

せっかく教えていただきましたが、PHPプログラミング・スキルがないので、現時点ではデフォルトのまま利用させていただき、教えていただいたことを参考にスキルアップしてから試してみます。

・・・といいつつ、ecs.phpを拝見したところ、「function is_it_onsale($item)」に

引用:

(strpos($item['Availability'], '現在お取り扱いできません') > 0)




という行がありますが、これが機能していないだけ・・・ みたいな話だったりしませんでしょうか?

引用:

function is_it_onsale($item) {
if ((!isset($item['FormattedPrice']))
|| ($item['FormattedPrice'] == '')
|| ($item['FormattedPrice'] == '¥ 104,999,999')
|| (strpos($item['Availability'], 'not available') > 0)
|| (strpos($item['Availability'], 'Out of Stock') > 0)
|| (strpos($item['Availability'], '現在お取り扱いできません') > 0)
|| (strpos($item['Availability'], '在庫切れ') > 0) )
{
return 0;
} else {
return 1;
}
}


上で赤字にした部分が不要のような気がしたのですが・・・(そうじゃないと青字の部分に該当する最初の括弧がないような気が・・・)

間違っていましたら、すみません!

【追伸】
・・・実際に上記の赤字の部分を削除したらページが真っ白になっちゃいますね。つまり、必要ってことですね。大変失礼いたしました。

となると、この「not available => 現在お取り扱いできません」はどういう場合に変換されるんだろう・・・
返信
taquino
投稿日時: 2005-1-17 1:01
管理人
登録日: 2004-10-22
居住地: 湘南
投稿: 1543
Re: 「This item is currently not available by this merchant.」について
御指摘の部分は、変換をしているのではなく、入手可能かどうかの判定をしているものです。

引用:

(strpos($item['Availability'], 'not available') > 0)

の部分であれば、「not availableの文字が含まれているか」ということを判断しています。
これらいくつかの判断のうち、どれかが当てはまれば入手不能ということになります。

話を戻しまして、御依頼の件ですが、先に書きました「return $Result;」の直前に下記の行を入れてみてください。

引用:

if ($Result['Availablity'] == 'This item is currently not available by this merchant.') { $Result['Availablity'] = '現在お取り扱いできません'; }


もしくは、

引用:

if (strpos($Result['Availablity'],'not available') > 0) { $Result['Availablity'] = '現在お取り扱いできません'; }
返信
koji
投稿日時: 2005-1-17 1:33
長老
登録日: 2004-12-5
居住地:
投稿: 262
Re: 「This item is currently not available by this merchant.」について
taquinoさん、深夜遅くに早々の返信ありがとうございます。

お教えいただいたとおりに設定しましたところ、検索結果では思い通りに日本語表示になったのですが、既に登録されているデータについては、モジュールのアップデートをしたり、データベースの更新をしても、依然として英文のまま表示されてしまいます..

あと、

引用:

$Result['Availablity']


これは

引用:

$Result['Availability']


のタイポだと思いましたので、そう変更しています。
返信
taquino
投稿日時: 2005-1-17 19:07
管理人
登録日: 2004-10-22
居住地: 湘南
投稿: 1543
Re: 「This item is currently not available by this merchant.」について
今回のハック(?)は、Amazonからの取得データを変換するものです。
既にデータベースに登録されているものについては、この変換対象ではありません。
Amaxoopに関しては、データ更新の際にAmazonからの取得を行いますので、データベースも更新されるはずなんですが...。
うーん、おかしいですね。

AmaxoopBlog/Lite/Lite2についてはデータの更新取得は基本的に行わないので、更新されません。
つうか、そもそも表示も行いませんけど。

タイポの件は仰るとおりです。
返信
ゲスト
投稿日時: 2005-1-17 21:18
Re: 「This item is currently not available by this merchant.」について
taquinoさん、こんにちわ。

引用:

Amaxoopに関しては、データ更新の際にAmazonからの取得を行いますので、データベースも更新されるはずなんですが...。
うーん、おかしいですね。


先ほどもう一度自サイト上で確認したところ、登録済みデータもちゃんと日本語に変換されておりました。

もしかしたら、ブラウザ側(?)のキャッシュとかに関係していたのかもしれません。

いずれにせよ、希望通りの運用ができるようになりましたことをご報告するとともに、本当にありがとうございました。

※できたらこの変更(追加?)を次期バージョンにデフォルトで組み入れていただけると嬉しいです。
返信
koji
投稿日時: 2005-1-17 21:19
長老
登録日: 2004-12-5
居住地:
投稿: 262
Re: 「This item is currently not available by this merchant.」について
すみません、ログインしないで書き込んでしまいました。

kojiからの報告でした・・・
返信
taquino
投稿日時: 2005-1-17 23:23
管理人
登録日: 2004-10-22
居住地: 湘南
投稿: 1543
Re: 「This item is currently not available by this merchant.」について
まずは良かったですね。

引用:

※できたらこの変更(追加?)を次期バージョンにデフォルトで組み入れていただけると嬉しいです。


これはちょっと微妙なところですね。

Amazonからの戻り値が文章になっている、つまりコードではないため、いつ変更されても不思議ではないと考えています。
そうすると、色々なパターンを探しつつ、網羅できるようにしていかなければなりませんから。

翻訳機能がどこかにあるといいんですけど。
返信
ゲスト
投稿日時: 2005-1-18 9:29
Re: 「This item is currently not available by this merchant.」について
taquinoさん、こんにちわ。

引用:

Amazonからの戻り値が文章になっている、つまりコードではないため、いつ変更されても不思議ではないと考えています。
そうすると、色々なパターンを探しつつ、網羅できるようにしていかなければなりませんから。


なるほど。

Perlのように正規表現で「not available」を含むかどうか(あるいは、ちょうどAmaxoop系で入手可能かどうかを判定している条件のように)で変換できるようになればいいな・・・ と思ったのですが、そう簡単にできるものではなさそうなんですね。

今回、修正方法を教えていただきましたので、次期バージョンが出たときに自分で当該箇所に追加させていただきます。

ありがとうございました。
返信
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

新規スレッド作成画面へ