Magento場所に基づいて適切なローカライズを表示する


17

ユーザーのデフォルトの言語と場所を認識できるようにMagentoサイトを構成し、その言語で適切なローカライズでサイトを表示したいと思います。

例えば:

ロシア語をデフォルトとして使用しているロシアのユーザーは、デフォルトの通貨と価格としてルーブルを使用してロシア語のWebサイトに直接アクセスします。

これは可能ですか?もしそうならどのように?

回答:


14

GeoIPおよびストアビューは、この問題の解決に役立ちます。

GeoIP GeoIPデータベースにMaxMind などのプロバイダーを使用できます(または、ヘッダーに国を追加するWebサーバーモジュールとしてロードします)。

IPアドレスに基づいて、顧客を適切なストアビューにリダイレクトできます(ストアビュースイッチャーによって生成されたリンクを確認します。

ストアビュー

ロシア語はストアビューである必要があります。ストアビュースイッチャーを確認して、顧客に使用する必要があるリンクを確認します。

リダイレクト後、Cookieを設定して顧客をストアビューに関連付けることができます。


また、GeoIPを使用して、サイト上のいくつかのブロックを切り替えて、送料無料メッセージ
アダムジャスティス

1
このトピックでは、次の3つの点に注意してください。(1)訪問者が別の国でプロキシを使用している場合、またはIPが一致していない場合、自分で別のWebサイトに切り替えることができます。それを可能にします。(2)ローカライズと翻訳を区別します。たとえば、ローカライズにGeoIPを使用し、翻訳の言語受け入れヘッダーを使用します(ロシア語のWebサイトはロシア語/英語、スイスのWebサイトはドイツ語/イタリア語/フランス語)。以下の回答を参照してください。(3)ロシアの価格が異なる(または基本通貨が異なる)場合は、ロシア専用のWebサイトを作成します。
マティアスツァイス

9

最新のMaxMindデータファイルをダウンロードし、定期的に更新するMagento GeoIP拡張機能(私が作成)があります。

controller_front_init_beforeイベントに参加することをお勧めします。次のコードを使用して、訪問者の国のISO 3166-1コードを取得し、該当する場合は、コレスポンデントストアビューにリダイレクトします。

$geoIP = Mage::getSingleton('geoip/country');
$code = $geoIP->getCountry();

/*
 * Check if store view for this country/language exists and it is not a current store view. 
 * If so do a redirect.
 * You can also take a language from user agent into consideration.
 */

この拡張機能の使用に関する詳細な記事はこちらにあります


5

プログラミングできる場合は、http: //www.thefutureoftheweb.com/blog/use-accept-language-headerをご覧くださいindex.php言語に適したストアビューのロードで切り替えを行うことができます。


言語はい、しかし問題は言語だけでなく地理的な場所でもあります。
カールソン

Maxmind geo APIまたは他の無料のgeoサービスを使用して切り替えることができます。私は理由(その高精度のmaxmindを使用maxmind.com/en/geolocation_landing
サンダーMangel

ユーザーが現在ロシアにいるが、彼の言語がen-USである場合、何をしたいですか?多くの場合、場所はAccept-Languageよりも情報量が少ない(そして正確である)。
小次郎

@kojiro最初にhttp受け入れ言語に行きます。あなたの場所は、いくつかのもの言語について少し述べている右、
サンダーMangel

1
注意してください、唯一のリンクがされた貧困層の答えと考え、それ自体が無意味であるので、ターゲットリソースは、将来的に生きていることが保証されていません。ここに回答の重要な部分を含め、参照用のリンクを提供することが望ましいでしょう
j0k

5

もう1つ注目すべきは、GEO IPです。

数行のコードにより、ユーザーの国コードが提供され、それに基づいて切り替えることができます。

ただし、最初のページヒットがキャッシュされるときにEnterprise Editionとフルページキャッシュで同じストアを使用している場合、リダイレクトベースのコードを使用すると問題が発生することに注意してください。


キャッシングについての良い点。Vary: Accept-LanguageブラウザーとFPCの両方のヘッダーでどのようにするかを理解する必要があります。
小次郎

FPCに関する最後のメモに関する詳細を追加しますか?控えめに言っても興味をそそられます。
nevvermind

GEO IPを使用し、国コードに基づいてユーザーを正しいストアにリダイレクトするモジュールの使用に問題がありました。これは失敗し、デバッグ後、FPCがmagentoコードを実行しない完全なスクリプトをキャッシュしたため、FPCを使用してページがキャッシュされたときにオブザーバーは呼び出されませんでした。
ジェイミーTeuma

別の開発者が回避策としてindex.php内にスクリプトを作成していたことは知っていますが、これが成功したかどうかはわかりませんので、まだコメントできません!!
ジェイミーTeuma

4

別のオプションは、PHPのauto_prepend構成を使用することです。これにより、PHPで処理されるすべてのスクリプトがスクリプトを実行する前に、実際に要求されたスクリプトが実行さ、.htaccessの後にスクリプトを実行します(使用している場合)。

このアプローチと他のいくつかの提案(例:地理的位置データにMaxMindを使用し、特定の地域のビューを保存する)を組み合わせると、かなりクリーンなアプローチになる可能性があります。

バージョン1.4以上のMagentoを実行している場合、$ _ SERVER ['MAGE_RUN_CODE']値を設定することでデフォルトのストアコードを構成できます。

.htaccessファイルまたはapacheの構成のいずれかで、次を追加します。

php_value auto_prepend_file /var/www/mystore/path/to/script.php

あなたにscript.php必要なすべてのビジネスロジックを実行し、適切な店舗コードを設定します。

<?php
if (get_ip_location($_SERVER['REMOTE_ADDR']) == 'uk') {
    $_SERVER['MAGE_RUN_CODE'] = 'store_code_uk';
} else {
    $_SERVER['MAGE_RUN_CODE'] = 'store_code_us';
}

注意すべきことの1つは、これは要求されたすべての PHPファイルに適用されるため、それを覚えておく必要があるということです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.