emily_d Posted March 14, 2013 Share Posted March 14, 2013 (edited) Pour reproduire : avoir plusieurs langues actives, à la page de paiement changer la langue, le texte du paiement("Payez par carte ou par compte PayPal") ne change pas de langue. Dans mon cas, comme la France est le pays par défaut, les traductions paypal sont toujours en français (le module utilise un fichier XML pour les traductions et pas le système habituel). Le problème se situe dans cette méthode (modules/paypal/paypal.php, l 1191) : private function loadLangDefault() { $paypal_country_default = (int)Configuration::get('PAYPAL_COUNTRY_DEFAULT'); $this->default_country = ($paypal_country_default ? (int)$paypal_country_default : (int)Configuration::get('PS_COUNTRY_DEFAULT')); $this->iso_code = $this->getCountryDependency(Country::getIsoById((int)$this->default_country)); } En fait, il y a deux problèmes : - le code iso qui va être utilisé par la suite pour rechercher la bonne traduction est un code de pays et pas un code langue - le code iso est défini en dur par le pays par défaut d'où le bug décrit plus haut Résolution : Remplacer par : $this->iso_code = $this->getCountryDependency(strtoupper($this->context->language->iso_code)); // http://www.prestashop.com/forums/topic/201446-translate-pay-with-card-or-paypal-account/ Cela marche avec les pays qui ont le même code iso pour le pays et la langue. Cela ne fonctionnera pas, par exemple, pour la Grèce (l'anglais sera sélectionné par défaut). Il faut dans ce cas une fonction : function getCountryByLang($lang_iso_code) { switch($lang_iso_code) { case "el": // Greek return "GR"; default: return strtoupper($lang_iso_code); } } Cependant il reste un problème, et il explique le choix fait par ce module, les traductions contiennent des infos spécifiques au pays (numéro de téléphone du customer support). Et je ne sais pas dans quelle mesure cela peut provoquer d'autres problèmes... Donc il faudrait revoir complétement le module pour que les traductions soient liées à la langue utilisée par la boutique et pas au pays de la boutique. Et que les informations spécifiques puissent être sélectionnées par pays. Edited May 3, 2013 by emily_d (see edit history) 1 Link to comment Share on other sites More sharing options...
emily_d Posted March 14, 2013 Author Share Posted March 14, 2013 (edited) Je vois que la méthode getPaymentMethods utilise les codes iso, donc la solution donnée plus haut peut avoir des conséquences qu'il faudrait analyser profondément. Donc pour l'instant, je vais me contenter de la solution suivante : // modules/paypal/paypal.php, l 703) public function getTranslations() { ... //remplacer if (($this->iso_code != 'default') && ($country_iso == $this->iso_code)) // par if ((strtoupper($this->context->language->iso_code) != 'default') && ($country_iso == strtoupper($this->context->language->iso_code))) ... } De cette manière on ne récupère que la bonne traduction et on ne touche pas au reste du fonctionnement du module. Cette solution ne fonctionne que si le code iso du pays et de la langue sont identiques. Pour le cas de l'anglais, code iso 'en', la traduction par défaut de paypal sera sélectionnée (traduction en anglais, cela tombe bien...). Edited March 15, 2013 by emily_d (see edit history) 3 1 Link to comment Share on other sites More sharing options...
al_foto Posted April 9, 2013 Share Posted April 9, 2013 Thanks emily_d, that has been of great help. Now my problem is that the Paypal page is always opened in spanish ( my site is in spanish and english), I have tried to set my Paypal country to english but it didn't help. Have read the whole code in Paypal module but can't find were to set language code except in express checkout which I don't use. Link to comment Share on other sites More sharing options...
emily_d Posted April 9, 2013 Author Share Posted April 9, 2013 Thanks emily_d, that has been of great help. Now my problem is that the Paypal page is always opened in spanish ( my site is in spanish and english), I have tried to set my Paypal country to english but it didn't help. Have read the whole code in Paypal module but can't find were to set language code except in express checkout which I don't use. Hi, You should ask someone in another coutry (and another language) to test your paypal checkout page to see if the page is always in spanish for them. Because that's probably a per user setting. For more info : Adding &lc=ES will only work on Buy Now buttons because PayPal provides no way for us to specify an arbitrary language or locale for cart-based checkouts. PayPal already jumps through a lot of hoops to guess the buyer's language preference accurately, so you may not need to do anything special anyway. If the buyer has a language cookie set in their browser, PayPal will respect that; if the buyer has a language preference set in their Web browser, PayPal will respect that; if you are selling tangible goods that require a shipping address, PayPal will apply a language based on the country the buyer selected in their cart (if they have a language assigned for the selected country). Finally, regardless of what language PayPal uses on their initial checkout page, once the buyer logs into their PayPal account, the language preference in the buyer's PayPal account would be applied. http://www.e-junkie..../pg/0#post15124 Link to comment Share on other sites More sharing options...
al_foto Posted April 10, 2013 Share Posted April 10, 2013 This is the way it should be but regarding the feedback from some customers it isn't. The last one was from Malaysia and selected english in my site, but Paypal's site opened in Spanish and there was no way to change the language. I have been able to set Localcode now and it seems to work, I have opened a threat for this: http://www.prestashop.com/forums/topic/238633-paypal-language/ Link to comment Share on other sites More sharing options...
BreizhInWeb Posted April 19, 2013 Share Posted April 19, 2013 Je vois que la méthode getPaymentMethods utilise les codes iso, donc la solution donnée plus haut peut avoir des conséquences qu'il faudrait analyser profondément. Donc pour l'instant, je vais me contenter de la solution suivante : // modules/paypal/paypal.php, l 703) public function getTranslations() { ... //remplacer if (($this->iso_code != 'default') && ($country_iso == $this->iso_code)) // par if ((strtoupper($this->context->language->iso_code) != 'default') && ($country_iso == strtoupper($this->context->language->iso_code))) ... } De cette manière on ne récupère que la bonne traduction et on ne touche pas au reste du fonctionnement du module. Cette solution ne fonctionne que si le code iso du pays et de la langue sont identiques. Pour le cas de l'anglais, code iso 'en', la traduction par défaut de paypal sera sélectionnée (traduction en anglais, cela tombe bien...). Merci ! Link to comment Share on other sites More sharing options...
biello Posted May 23, 2013 Share Posted May 23, 2013 Je vois que la méthode getPaymentMethods utilise les codes iso, donc la solution donnée plus haut peut avoir des conséquences qu'il faudrait analyser profondément. Donc pour l'instant, je vais me contenter de la solution suivante : // modules/paypal/paypal.php, l 703) public function getTranslations() { ... //remplacer if (($this->iso_code != 'default') && ($country_iso == $this->iso_code)) // par if ((strtoupper($this->context->language->iso_code) != 'default') && ($country_iso == strtoupper($this->context->language->iso_code))) ... } De cette manière on ne récupère que la bonne traduction et on ne touche pas au reste du fonctionnement du module. Cette solution ne fonctionne que si le code iso du pays et de la langue sont identiques. Pour le cas de l'anglais, code iso 'en', la traduction par défaut de paypal sera sélectionnée (traduction en anglais, cela tombe bien...). Thank you, so much! ^__^ Link to comment Share on other sites More sharing options...
e-cigarette Posted June 10, 2013 Share Posted June 10, 2013 Et comment faire quand c'est la page de paiement que l'on veut traduire svp ? Link to comment Share on other sites More sharing options...
emily_d Posted June 10, 2013 Author Share Posted June 10, 2013 La solution ne fonctionne pas pour ta page de paiement (on parle bien de la page de paiement de Prestasahop (order-payment.tpl)? Si c'est la page de paiement de PayPal, voir ici en utilisant la solution donnée par al_foto plus haut. Link to comment Share on other sites More sharing options...
e-cigarette Posted June 10, 2013 Share Posted June 10, 2013 Je te remercie, mais en trifouillant sur mon compte Paypal (personnalisation etc...) je ne sais pas trop comment mais maintenant ça s'affiche bien en français !! je n'ai pas modifier de langue pourtant mais bon : merci quand même. Link to comment Share on other sites More sharing options...
emily_d Posted June 10, 2013 Author Share Posted June 10, 2013 La façon dont PayPal choisit la langue pour sa page de paiement est relativement complexe (cf. message plus haut "If the buyer has a language cookie set in their browser, PayPal will respect that; if the buyer has a language preference set in their Web browser, PayPal will respect that..."), il arrive que certains clients soient redirigés vers une page dans une autre langue, si tu rencontres un jour ce problème essaie cette solution. Link to comment Share on other sites More sharing options...
aallbbyy Posted July 10, 2013 Share Posted July 10, 2013 Bonjours à tous, Il me semble faire face au même problème: Juste pour être sur, on parle de la solution de paiement intégrée au site comme sur la capture écran suivante: Si oui, voici mon pb: Mon site est en 4 langues (FR/ES/IT/EN). J'ai ma société en Italie. J'ai donc souscrit à un compte paypal pro en Italie. J'ai installé le module et tout ce qui touche au paiement est exclusivement en Italien. J'ai appelé Paypal et ils me disent que je ne peux utiliser QUE l'Italien ou l'Anglais (car je suis en Italie. Si j'était en France, je ne pourrais utiliser que le Français et l'Anglais selon lui). Il me dit de remplacer la valeur lc de IT à US si je veux avoir le module de paiement en Anglais (ce qui est mieux que l'Italien, mais pas top). J'ai cherché partout, mais la seule lc que je trouve à comme valeur {$iso_code}. J'ai essayé de remplacer mais rien ne bouge. J'ai donc essayé la solution d'Emily, mais rien à faire. Est-ce parceque je suis en Italie? Pourtant mon pc et mon navigateur sont en Français. Merci bcp aallbbyy Link to comment Share on other sites More sharing options...
aallbbyy Posted July 15, 2013 Share Posted July 15, 2013 Bonjours à tous, Il me semble faire face au même problème: Juste pour être sur, on parle de la solution de paiement intégrée au site comme sur la capture écran suivante: Si oui, voici mon pb: Mon site est en 4 langues (FR/ES/IT/EN). J'ai ma société en Italie. J'ai donc souscrit à un compte paypal pro en Italie. J'ai installé le module et tout ce qui touche au paiement est exclusivement en Italien. J'ai appelé Paypal et ils me disent que je ne peux utiliser QUE l'Italien ou l'Anglais (car je suis en Italie. Si j'était en France, je ne pourrais utiliser que le Français et l'Anglais selon lui). Il me dit de remplacer la valeur lc de IT à US si je veux avoir le module de paiement en Anglais (ce qui est mieux que l'Italien, mais pas top). J'ai cherché partout, mais la seule lc que je trouve à comme valeur {$iso_code}. J'ai essayé de remplacer mais rien ne bouge. J'ai donc essayé la solution d'Emily, mais rien à faire. Est-ce parceque je suis en Italie? Pourtant mon pc et mon navigateur sont en Français. Merci bcp aallbbyy Bonjour, Quelqu'un pour m'aider svp aallbbyy Link to comment Share on other sites More sharing options...
Onices Posted January 8, 2014 Share Posted January 8, 2014 Merci @emily_d problème résolut de mon coté. Visiblement je n'ai pas de problème suplémentaire Modification valide pour PS 1.4.6 Link to comment Share on other sites More sharing options...
WFH Posted January 20, 2015 Share Posted January 20, 2015 Bonjour, J'ai le même problème avec les US. Le module se met en Français sur la page de check out :/ Je suis avec PayPal Evolution et Prestashop 1.5. On essayé EN et Gb et ça ne fonctionne pas... Une petite idée? Merci Link to comment Share on other sites More sharing options...
aallbbyy Posted January 21, 2015 Share Posted January 21, 2015 Essaie "US" <input type="hidden" name="lc" value="US" /> Link to comment Share on other sites More sharing options...
WFH Posted January 21, 2015 Share Posted January 21, 2015 Merci La solution est qu'il faut mettre le pays et la langue : en_US 1 Link to comment Share on other sites More sharing options...
Recommended Posts