Neueste Nachrichten (in Englisch): (am laden..)

Archiviert

Dieses Theme ist nun archiviert und für weitere Antworten gesperrt.

mbr

paypal auf deutsch und englisch

11 Beiträge in diesem Thema

Nachdem mich froogle gestern darauf aufmerksam gemacht hat, dass die paypal-Seiten immer in der selben Sprache aufgerufen werden, wenn es ans Bezahlen geht, hab' ich mich mal durch die Paypal-Dokumentation und auch durch die Modulquellen gequält. Bisher enthält das Paypal-Modul keine Sprachabhängigkeit, Paypal unterstützt diese aber mittlerweile mit dem Parameter lc (Defines the buyer's checkout flow language. Available

languages are US English, UK English, German, and Japanese.)

Mit der heißen Nadel lässt sich includes/modules/payment/paypal.php aber ganz flott hinbiegen, und zwar in der folgenden Funktion:

function process_button() {

global $order, $currencies, $currency, $language;

if (MODULE_PAYMENT_PAYPAL_CURRENCY == 'Selected Currency') {

$my_currency = $currency;

} else {

$my_currency = substr(MODULE_PAYMENT_PAYPAL_CURRENCY, 5);

}

if (!in_array($my_currency, array('CAD', 'EUR', 'GBP', 'JPY', 'USD'))) {

$my_currency = 'USD';

}

if ($language == 'german') {

$my_lang = 'de';

} else {

$my_lang = 'en';

}

$process_button_string = tep_draw_hidden_field('cmd', '_xclick') .

tep_draw_hidden_field('business', MODULE_PAYMENT_PAYPAL_ID) .

tep_draw_hidden_field('item_name', STORE_NAME) .

tep_draw_hidden_field('amount', number_format(($order->info['total'] - $order->info['shipping_cost']) * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) .

tep_draw_hidden_field('shipping', number_format($order->info['shipping_cost'] * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) .

tep_draw_hidden_field('currency_code', $my_currency) .

tep_draw_hidden_field('lc', $my_lang) .

tep_draw_hidden_field('return', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')) .

tep_draw_hidden_field('cancel_return', tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));

return $process_button_string;

}

Es scheint sogar zu funktionieren. Da ich mich mit osC im Detail nicht auskenne, gibt es aber bestimmt noch eine hübschere Lösung. Japanisch ist so jedoch noch nicht unterstützt.... ;-)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

... zumindest bei mir.

Hi Michael, nach so einer Lösung suche ich seit längerem - selbst unser PayPal-Accountmanager konnte uns nicht helfen. Auslandskunden konnten bis zur grossen PayPal-Umstellung in englischer Sprache bezahlen (offenbar abhängig von der Browser-Sprache?), jetzt wird nur noch D angezeigt.

Leider funktioniert Dein Code bei mir nicht, selbst wenn ich $my_lang direkt auf 'en' setze.

Ist da ein Fehler?

Viele Grüße, E.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Also, einen kleinen Fehler gibt es zumindest: Bei PayPal heißt es nicht en,

sondern us oder uk. Das ist aber egal, weil alle LC-Angaben, die nicht

bekannt sind, ins US-Englisch führen.

Übrigens scheint jetzt auch das Französische unterstützt zu werden, Spanisch jedoch noch nicht.

Welche Version vom PayPal-Modul benutzt Du denn? Bei mir funktionieren die Erweiterungen sowohl mit 1.35 (2002/11/25) als auch

mit 1.39 (2003/01/29) - die ist wohl im 2.2MS2 drin.

Vielleicht solltest Du am besten überprüfen, ob bei Dir die Adresse vernünftig generiert wird, die für den PayPal-Aufruf verwendet wird. Steht

dort das &lc=en drin? Es sollte direkt vor &business= und nach der Währung zu finden sein.

Hier kommt noch mal der letzte Stand der abgeänderten Funktion - nun auch auf französisch, aber farblos:

function process_button() {

global $order, $currencies, $currency, $language;

if (MODULE_PAYMENT_PAYPAL_CURRENCY == 'Selected Currency') {

$my_currency = $currency;

} else {

$my_currency = substr(MODULE_PAYMENT_PAYPAL_CURRENCY, 5);

}

if (!in_array($my_currency, array('CAD', 'EUR', 'GBP', 'JPY', 'USD'))) {

$my_currency = 'USD';

}

if ($language == 'german') {

$my_lang = 'de';

} elseif ($language == 'french') {

$my_lang = 'fr';

} else {

$my_lang = 'us';

}

$process_button_string = tep_draw_hidden_field('cmd', '_xclick') .

tep_draw_hidden_field('business', MODULE_PAYMENT_PAYPAL_ID) .

tep_draw_hidden_field('item_name', STORE_NAME) .

tep_draw_hidden_field('amount', number_format(($order->info['total'] - $order->info['shipping_cost']) * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) .

tep_draw_hidden_field('shipping', number_format($order->info['shipping_cost'] * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) .

tep_draw_hidden_field('currency_code', $my_currency) .

tep_draw_hidden_field('lc', $my_lang) .

tep_draw_hidden_field('return', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')) .

tep_draw_hidden_field('cancel_return', tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));

return $process_button_string;

}

Na, vielleicht hilft Dir das ja etwas weiter ...

Viele Gruesse

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo Weinlig

Hast du ALLE 3 Änderungen gemacht?

Bei mir funzte es schon beim ersten Versuch.

Besten Dank an "mbr" für den Code. Spitze! :D

Gruss Tsimi

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo,

ich bin erst eben dazu gekommen, das nochmals zu checken. Bei mir funktioniert jetzt auch alles wunderbar. Ich hatte einen dummen Anfängerfehler drin (oberhalb der letzten geschweiften Klammer gepastet) ;-(((

Viele Grüße, E.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

der genannte Code ist bei mir garnicht vorhanden. Dummerweise läßt Paypal nur Tests mit echten Accounts zu. Warum bietet Paypal nicht selber ein Modul für OSC an. Immerhin einer der verbreitesten Shop. Die verdienen ja schließlich Geld damit. Einige Anbieter haben extra Module für OSC online gestellt.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

ist zwar schon eine Weile her... aber trotzdem die Frage... funktioniert das auch mit dem Paypal_IPN modul? Wäre toll wenn mir da jemand aushelfen könnte. Bis dann - Christoph

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo,

ich habe das so eingebaut MS2.2 aber leider scheint immer

nur das letzte else genommen zu werden.

Das heißt ich bekomme das Paypalmodul in Englisch wie Deutsch zu sehen

aber nur wenn ich das letzte else von $my_lang = 'us'; in $my_lang = 'de';

ändere.

Es scheint so als wenn bei mir die variable language gar nicht abgefragt wird.

if ($language == 'german') {

$my_lang = 'de';

} elseif ($language == 'french') {

$my_lang = 'fr';

} else {

$my_lang = 'us';

}

Hat einer eine Idee wo ich suchen kann ?

Gruß

Micha

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Fürs Protokol

Das Teil funktioniert super, der Fehler lag bei mir in einem ganz anderen Modul so das Language falsch gesetzt war,

Gruß

Micha

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

danke den Trick! Funktioniert Super! Geht übrigens auch mit italienisch!

Unsere Italienischen und französcischen Kunden waren ohnehin mit Deutsch und Englisher Sprache überfordert!

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen