Enable Multiple Languages

The following functionality allows you to display multiple languages for all customer-facing text in your cart. Have a look at our internationalization documentation for more information on what can be customizable.

Even though we do have a very diverse international team, the language you are looking for may not be readily available, so you might have to manually do the translations yourself.

FoxyCart now supports native multi-lingual functionality - Please don't use the following snippet anymore, but instead use our native template set functionality. This page will remain for now as a reference.

Step 1: Update the Translations

Update the following code to your desired language by replacing the name of the custom_lang (in the case of this example “FR”, for French) with your desired language code, and the French translations with that of your desired translation. ISO code is the preferred language code format.

{% set custom_lang_FR = {
	'cart_add_coupon': 'Ajouter un coupon',
	'cart_apply': 'Appliquer',
	'cart_calculate': 'Calculer',
	'cart_calculate_shipping': 'Calculer les frais de port',
	'cart_calculate_taxes': 'Calculer les taxes',
	'cart_cancel_and_continue': 'Annuler et continuer les achats',
	'cart_caption': 'Votre panier',
	'cart_category': 'Catégorie',
	'cart_change': 'Changement',
	'cart_checkout': 'Procéder au paiement',
	'cart_code': 'Code',
	'cart_coupon_already_added': 'Ce coupon a déjà été ajouté à cette commande.',
	'cart_coupon_code': 'Code Promo',
	'cart_coupon_code_already_used': 'Ce code de coupon a déjà été utilisé.',
	'cart_coupon_expired': 'Ce coupon est expiré.',
	'cart_coupon_no_customer_uses_left': 'Vous ne pouvez plus utiliser ce coupon.',
	'cart_coupon_no_uses_left': 'Ce coupon n’est plus utilisable.',
	'cart_coupon_not_active': 'Ce coupon n’est pas encore actif.',
	'cart_coupon_not_combinable': 'Ce coupon n’est cumulable à aucun autre coupon.',
	'cart_coupon_not_found': 'Le code de coupon code inscrit est introuvable.',
	'cart_day': 'Jour',
	'cart_details': 'Détails',
	'cart_discounts': 'Réductions',
	'cart_each': 'chaque',
	'cart_end_date': 'Date de fin',
	'cart_end_subscription_notice': 'Vous êtes sur le point de faire terminer cet abonnement le',
	'cart_empty': 'Votre panier est vide. Cliquez ici pour revenir à la boutique.',
	'cart_error_category': 'ne semble pas être une catégorie valide. Veuillez vous connecter à votre gestionnaire de compte et mettre à jour votre liste de catégories.',
	'cart_error_downloadable_product_code': 'Lorsque vous ajoutez un produit téléchargeable à votre panier, vous devez indiquer un code de produit téléchargeable.',
	'cart_error_downloadable_product_code_invalid': 'n’est pas un code de produit téléchargeable valide pour cette catégorie.',
	'cart_error_name': 'Vous devez indiquer un nom pour ajouter un produit à votre panier d’achats.',
	'cart_error_parent_code_invalid': 'Le code parent et le code produit d’un produit de l’enfant ne peut pas être la même chose.',
	'cart_error_parent_code_not_found': 'Le code parent doit correspondre au code d’un autre produit dans le panier.',
	'cart_error_postal_code': 'Nous n’avons pas pu trouver ce code postal.',
	'cart_error_postal_code_lookup': 'Nous ne permettons pas actuellement les commandes de cette région.',
	'cart_error_price': 'n’est pas un prix valide. Veuillez utiliser un nombre.',
	'cart_error_quantity': 'n’est pas une quantité valide. Veuillez utiliser un nombre.',
	'cart_error_quantity_max': 'n’est pas une quantité maximum valide. Veuillez utiliser un nombre.',
	'cart_error_quantity_min': 'n’est pas une quantité minimum valide. Veuillez utiliser un nombre.',
	'cart_error_store_not_found': 'Nous sommes désolés, le magasin que vous avez demandé n’a pas été trouvé ou il n’a pas encore été configuré avec un panier, caisse, et les modèles de réception et une catégorie de produits par défaut et la méthode de paiement configuré. Veuillez revenier plus tard.',
	'cart_error_store_not_setup': ' est actuellement pas configuré. Merci de vous assurer que le magasin est entièrement configuré (expédition, les catégories, les modèles et les méthodes de paiement). Si cela ne résout pas le problème, assurez-vous que vous appelez ce script avec le même sous-domaine que vous avez défini dans les paramètres de votre magasin. Si vous avez encore des problèmes, vous pouvez obtenir de l’aide à http://forum.foxycart.com/. Vérifiez vos paramètres de magasins.',
	'cart_error_subscription_end_date_invalid': 'doit être une date valide dans le futur, au format <strong>yyyymmdd</strong>.',
	'cart_error_subscription_frequency_decimal_point': 'ne semble pas être une fréquence d’abonnement valide. Seul l’abonnement semi-mensuel (.5m) peut contenir un point décimal.',
	'cart_error_subscription_frequency_invalid': 'ne semble pas être une fréquence d’abonnement valide. Veuillez utiliser ce format : <strong>Xd</strong>, <strong>Xw</strong>, <strong>Xm</strong>, <strong>Xy</strong> où X est un nombre.',
	'cart_error_subscription_paypal': 'Cette boutique n’est pas actuellement configurée pour une méthode de paiement qui gère les abonnements.',
	'cart_error_subscription_paypal_can_not_modify': 'Nous ne supportons pas pour l’instant la modification des abonnements PayPal Express via l’interface de panier. Veuillez nous contacter si vous souhaitez modifier votre abonnement.',
	'cart_error_subscription_start_date_day': 'n’est pas un jour valide. Veuillez indiquer une sub_startdate avec un jour correct.',
	'cart_error_subscription_start_date_invalid': 'doit être une date valide au format <strong>yyyymmdd</strong> ou un jour du mois valide au format <strong>dd</strong> ou <strong>d</strong>.',
	'cart_error_subscription_start_date_month': 'n’est pas un mois valide. Veuillez indiquer une sub_startdate avec un mois correct.',
	'cart_error_subscription_start_date_past': 'ne représente pas une date dans le futur. Veuillez indiquer une sub_startdate avec une date correcte.',
	'cart_error_subscription_start_date_year': 'est dans le passé. Veuillez utiliser une sub_startdate avec une année correcte.',
	'cart_error_subscription_start_day': 'doit être un jour du mois valide, supérieur à 0 et inférieur à 32.',
	'cart_error_subscription_cancel_past_due': 'Votre abonnement dispose actuellement d’un montant dû qui doit être payé avant que cette souscription soit annulée.',
	'cart_error_title': 'Oups. Une erreur s’est produite.',
	'cart_error_weight': 'n’est pas un poids valide. Veuillez utiliser un nombre.',
	'cart_expired_product_warning': 'Ce produit ayant expiré, il a été retiré de votre panier: ',
	'cart_expires_property_missing': 'Ce produit n’a pas pu être ajouté car son expiration n‘a pas été définie.',
	'cart_every': 'Chaque',
	'cart_frequency': 'Fréquence',
	'cart_future_subscriptions': 'Futurs abonnements',
	'cart_future_charge': 'Suivant charge',
	'cart_future_charges': 'Suivant frais',
	'cart_handling': 'Manutention',
	'cart_hide_coupon_input': 'Cachez entrée de coupon',
	'cart_in_your_order': 'dans votre commande',
	'cart_image': '&nbsp;',
	'cart_info_subscription_template_frequency': 'Vous êtes en train de modifier un modèle d’abonnement, de ce fait la fréquence de l’abonnement a été modifiée pour correspondre à votre modèle.',
	'cart_info_subscription_template_startdate': 'Vous modifiez un modèle d’abonnement, donc la date de début d’abonnement a été modifié pour correspondre à votre modèle.',
	'cart_info_subscription_template_nextdate': 'Vous modifiez un modèle d’abonnement, donc la date de l’opération suivante pour cet abonnement a été modifié pour correspondre à votre modèle.',
	'cart_item': 'Article',
	'cart_items': 'Articles',
	'cart_keep_shopping': 'Continuer vos achats',
	'cart_modify_subscription_not_found': 'L’abonnement que vous essayez de modifier n’est plus actif ou est introuvable.',
	'cart_modify_subscription_notice': 'Vous êtes en train de modifier un abonnement.',
	'cart_month': 'Mois',
	'cart_next_date': 'Date suivante',
	'checkout_no': 'Aucun',
	'cart_no_javascript_message': 'Notre processus de commande requiert javascript. Veuillez <a href="http://www.foxycart.com/enabling-javascript" target="_blank">cliquer ici pour activer javascript</a>. Vous pouvez ensuite cliquer sur le bouton ci-dessous pour passer la commande, ou bien rafraîchir cette page pour modifier votre panier.',
	'cart_notice_quantity_max': ' est supérieure à la quantité maximale autorisée. La quantité a été ajustée en conséquence.',
	'cart_notice_quantity_min': ' est inférieure à la quantité minimale autorisée. La quantité a été ajustée en conséquence.',
	'cart_or': 'ou',
	'cart_order_summary': 'Résumé de la commande',
	'cart_order_total': 'Total de la commande',
	'cart_past_due_amount': 'Montant dû',
	'cart_payment_method_logo_amazon_fps': 'https://cdn.foxycart.com/static/images/payment_logos/amazon.png',
	'cart_payment_method_logo_amazon_mws': 'https://cdn.foxycart.com/static/images/payment_logos/amazon_mws.png',
	'cart_payment_method_logo_paypal_ec': 'https://cdn.foxycart.com/static/images/payment_logos/paypal.png',
	'cart_payment_method_paypal_express': 'Payez avec votre compte Paypal, ou par carte de crédit via PayPal.',
	'cart_price': 'Prix',
	'cart_qty': 'Quantité',
	'cart_quantity': 'Quantité',
	'cart_remove_coupon': 'Supprimer ce coupon',
	'cart_remove_item': 'Supprimer cet article',
	'cart_shipping_to': 'Frais de port à ...',
	'cart_shipping_and_handling': 'Port &amp; Manutention',
	'cart_shipto': 'Expédier à: ',
	'cart_shipto_default': 'Moi',
	'cart_soon_to_expire_products': 'Votre panier contient des produits qui viendront à échéance dans <span class="fc_text_minutes">{{ minutes }}</span> minutes.',
	'cart_start_date': 'Date de début',
	'cart_subscription_details': 'Détails de l’abonnement',
	'cart_subtotal': 'Total partiel',
	'cart_tax': 'Taxe',
	'cart_tbd': 'TBD',
	'cart_todays_charge': 'Charge d’aujourd’hui',
	'cart_total': 'Total',
	'cart_twice_monthly': 'Deux fois par mois',
	'cart_updateinfo': 'Veuillez mettre à jour vos renseignements de client',
	'cart_validation_error': '<strong>Erreur de validation de panier</strong>: ',
	'cart_warning': 'Avertissement:',
	'cart_week': 'Semaine',
	'cart_weight': 'Poids',
	'cart_year': 'Année',
	'checkout_additional_information': 'Renseignements supplémentaires',
	'checkout_address1': 'Adresse 1',
	'checkout_address2': 'Adresse 2',
	'checkout_address': 'Adresse',
	'checkout_almost_done': 'Presque fait!',
	'checkout_as_guest': 'Passer & Commander en tant qu’invité',
	'checkout_as_returning_customer': 'Bienvenue à nouveau! Entrez votre mot de passe pour continuer.',
	'checkout_billing_address': 'Votre adresse de facturation',
	'checkout_billing_information': 'Renseignements sur la facturation',
	'checkout_cancel_my_subscription': 'Annuler mon abonnement',
	'checkout_card_number': 'Carte #',
	'checkout_card_verification_code': 'Code de sécurité de la carte',
	'checkout_change_my_password': 'Modifier mon mot de passe',
	'checkout_change_password_instructions': 'Entrez un nouveau mot de passe en bas de la caisse.',
	'checkout_check_email_timeout': 'La demande a expiré. Veuillez cliquer ici pour essayer à nouveau.',
	'checkout_city': 'Ville',
	'checkout_company': 'Entreprise',
	'checkout_complete_your_purchase': 'Envoyer votre commande',
	'checkout_confirm_your_purchase': 'Confirmer votre commande',
	'checkout_continue': 'Continuer',
	'checkout_continue_to': 'Continuer vers',
	'checkout_country': 'Pays',
	'checkout_create_an_account': 'Mémoriser mon adresse et mes informations de paiement pour la prochaine fois.',
	'checkout_csc': 'SCC',
	'checkout_date': 'Date',
	'checkout_download_links': 'Télécharger vos achats ',
	'checkout_download_links_not_available': 'Grâce à votre méthode de paiement, vos liens téléchargeables seront envoyés par email après confirmation de votre paiement.',
	'checkout_edit_address': 'Modifier cette adresse',
	'checkout_email': 'votre email',
	'checkout_email_my_password': 'Mot de passe oublié?',
	'checkout_enter_new_card': 'Entrer une nouvelle carte de crédit ou de débit',
	'checkout_error_card_number': 'Le nombre que vous avez entré n’est pas valide ou n’est pas supporté par ce magasin. Entrez un nouveau numéro de carte de crédit ou de débit, ou vérifiez votre entrée ci-dessus.',
	'checkout_error_currency': 'Cette méthode de paiement ne supporte pas la devise que vous avez choisi.',
	'checkout_error_email': 'Veuillez entrer une adresse email valide.',
	'checkout_error_expired_products_removed': 'Votre transaction n’est pas complète. Un produit que vous avez tenté d’acheter a expiré. Veuillez vérifier votre commande et soumettre à nouveau le formulaire.',
	'checkout_error_incorrect_password': 'Oups. Cette adresse email semble correct, mais le mot de passe ne l’est pas. Veuillez entrer de nouveau votre mot de passe, ou cliquez sur le lien ci-dessous pour reçevoir un mot de passe temporaire par email.',
	'checkout_error_password': 'Veuillez entrer un mot de passe.',
	'checkout_error_password_expired': '<strong class="fc_error">Mot de passe temporaire expiré</strong><br />Le mot de passe temporaire a expiré. Veuillez entrer votre mot de passe original ou cliquez sur le lien ci-dessous pour reçevoir un mot de passe temporaire par email.',
	'checkout_error_purchase_order': 'Veuillez entrer un bon de commande pour cette transaction.',
	'checkout_error_subscription_consent': 'Afin de traiter votre abonnement, vous devez nous accorder votre consentement à vous facturer à l’avenir.',
	'checkout_error_title': 'Oups. Une erreur s’est produite.',
	'checkout_error_transaction_id': 'Votre commande n’a pas pu être trouvé. Veuillez recommencer. Si vous avez déjà cliqué sur le bouton de confirmation de la commande, veuillez vérifier votre boite de réception email, un reçu a du vous parvenir.<br /><br />',
	'checkout_error_verification_code': 'Veuillez entrer le code de sécurité de votre carte, il s’agit du code à 3 chiffres présent au dos de votre carte (pour Visa, Mastercard et Discover), ou du code à 4 chiffres présent à l’avant (pour American Express).',
	'checkout_expiration': 'Expiration',
	'checkout_first_name': 'Prénom',
	'checkout_flat_rate_shipping': 'Expédition à tarif forfaitaire',
	'checkout_found_customer_force_password_reset': 'Votre mot de passe temporaire a été acceptée. Vous pouvez entrer un nouveau mot de passe en fin de procédure de paiement, qui sera utilisé pour l’avenir.',
	'checkout_found_customer_info': 'Votre compte a été trouvé à partir d’une transaction précédente. Vous pouvez entrer votre mot de passe ci-dessous pour récupérer les renseignements que vous avez enregistrés précédemment, ou bien vous pouvez passer une commande en tant qu’invité.',
	'checkout_found_customer_info_logged_in': 'Vos renseignements de compte ont été récupérés avec succès.',
	'checkout_general_information': 'Informations générales',
	'checkout_instructions_email': 'Nous vous enverrons votre reçu par email ici et nous ne le partager avec personne d’autre.',
	'checkout_instructions_email_checking': 'Vérification de votre adresse email...',
	'checkout_invalid_domain': 'Le domaine du magasin actuel pour votre session ne correspond pas au domaine configuré pour votre magasin. Veuillez effacer les cookies de votre navigateur (cookies nommé “fcsid” en particulier) et essayez à nouveau, ou contactez-nous pour résoudre ce problème.',
	'checkout_last_name': 'Nom de famille',
	'checkout_loading': 'Chargement...',
	'checkout_location_state': 'État',
	'checkout_location_canton': 'Canton',
	'checkout_location_county': 'Comté',
	'checkout_location_other': 'Other...',
	'checkout_location_pincode': 'code PIN',
	'checkout_location_postalcode': 'Code Postal',
	'checkout_location_prefecture': 'Préfecture',
	'checkout_location_province': 'Province',
	'checkout_location_zipcode': 'Code Postal',
	'checkout_merchant': 'Commerçant',
	'checkout_no_javascript_message': 'Notre processus de commande nécessite javascript. Veuillez <a href="http://www.foxycart.com/enabling-javascript" target="_blank">cliquer ici pour activer javascript </ a>. Vous pourrez alors cliquer sur le bouton de commande ci-dessous, ou rafraîchir cette page à apporter des modifications à votre panier.',
	'checkout_modify_subscription_notice': 'L’email du compte de facturation pour l’abonnement que vous modifiez a été pré-rempli. Pour transférer cet abonnement à un compte de facturation différente, veuillez entrer une adresse email différente.',
	'checkout_multiship_new_address': '-- Nouvelle adresse --',
	'checkout_multiship_use_address': 'Utiliser l’adresse',
	'checkout_name': 'Nom',
	'checkout_newsletter_subscribe': 'Je souhaite m’abonner à votre newsletter',
	'checkout_newsletter_subscribe_display': 'S’inscrire à la newsletter',
	'checkout_no_account_enter_password': 'Entrez un mot de passe ci-dessous. Lors de votre prochaine visite, vous pourrez utiliser ce mot de passe pour récupérer les informations de votre compte.',
	'checkout_no_payment_needed': 'Aucun paiement requis.',
	'checkout_optional': ' (en option)',
	'checkout_order_id': 'N° de commande',
	'checkout_password': 'Mot de passe',
	'checkout_password_sent_to': 'Votre mot de passe a été envoyé à',
	'checkout_password_sent_check_spam': '. Si vous ne le recevez pas, vérifiez votre dossier à messages indésirables (ou spam).',
	'checkout_pay_with_amazon_fps': '<span class="fc-payment-method-logo"><img src="https://cdn.foxycart.com/static/images/payment_logos/amazon_checkout.png" alt="Amazon paiements logo" /></span>Payer avec un compte Amazon',
	'checkout_pay_with_amazon_mws': '<span class="fc-payment-method-logo"><img src="https://cdn.foxycart.com/static/images/payment_logos/sets/smashing/amazon_checkout.png" alt="Amazon paiements logo" /></span>Payer avec un compte Amazon',
	'checkout_pay_with_bitpay': '<span class="fc-payment-method-logo"><img src="https://cdn.foxycart.com/static/images/payment_logos/bitcoin.png" alt="Bitcoin logo" /></span>Paiement par Bitcoin via BitPay',
	'checkout_pay_with_coinbase': '<span class="fc-payment-method-logo"><img src="https://cdn.foxycart.com/static/images/payment_logos/bitcoin.png" alt="Bitcoin logo" /></span>Paiement par Bitcoin via Coinbase',
	'checkout_pay_with_cybersource_sa_web': '<span class="fc-payment-no-logo">Procéder à sécuriser formulaire de paiement</span>',
	'checkout_pay_with_dibs': '<span class="fc-payment-method-logo"><img src="https://cdn.foxycart.com/static/images/payment_logos/dibs.png" alt="DIBS logo" /></span>Payer via Netbank ou une carte via DIBS',
	'checkout_pay_with_dwolla': '<span class="fc-payment-method-logo"><img src="https://cdn.foxycart.com/static/images/payment_logos/dwolla.png" alt="Dwolla logo" /></span>Payer avec un compte Dwolla',
	'checkout_pay_with_hosted': '<span class="fc-payment-no-logo">Procéder à sécuriser formulaire de paiement</span>',
	'checkout_pay_with_mercadopago': '<span class=fc-payment-method-logo><img src=https://cdn.foxycart.com/static/images/payment_logos/sets/smashing/mercadopago.png alt=MercadoPago logo /></span>Payer avec un compte MercadoPago',
	'checkout_pay_with_noble': '<span>Payer avec un compte Plug’n Pay Noble</span>',
	'checkout_pay_with_ogone': '<span class="fc-payment-method-logo"><img src="https://cdn.foxycart.com/static/images/payment_logos/ideal.png" alt="iDEAL logo" /><img src="https://cdn.foxycart.com/static/images/payment_logos/ogone.png" alt="Ogone logo" /></span>Payer avec iDEAL via Ogone',
	'checkout_pay_with_paypal': '<span class="fc-payment-method-logo"><img src="https://www.paypalobjects.com/webstatic/mktg/logo/pp_cc_mark_74x46.jpg" alt="PayPal" /></span>Payer avec un compte PayPal, ou par carte de crédit.',
	'checkout_pay_with_paypal_ec': '<span class="fc-payment-method-logo"><img src="https://www.paypalobjects.com/webstatic/mktg/logo/pp_cc_mark_74x46.jpg" alt="PayPal" /></span>Payer avec un compte PayPal, ou par carte de crédit.',
	'checkout_pay_with_pesapal': '<span class="fc-payment-method-logo"><img src="https://cdn.foxycart.com/static/images/payment_logos/pesapal.png" alt="PesaPal-logo" /></span>Payer avec un compte PesaPal',
	'checkout_pay_with_purchase_order': '<span class="fc-payment-no-logo"><img src="https://cdn.foxycart.com/static/images/payment_logos/po.png" alt="Paiement par bon de commande" /></span>Paiement par bon de commande',
	'checkout_pay_with_skrill': '<span class="fc-payment-method-logo"><img src="https://cdn.foxycart.com/static/images/payment_logos/skrill.png" alt="Skrill-logo" /></span>Payer avec un compte Skrill',
	'checkout_pay_with_smartscreen': '<span>Payer avec un compte Plug’n Pay SmartScreen</span>',
	'checkout_pay_with_twocheckout': '<span class="fc-payment-method-logo"><img src="https://cdn.foxycart.com/static/images/payment_logos/2checkout.png" alt="2Checkout logo" /></span>Payer avec un compte 2Checkout',
	'checkout_payment_confirmation': 'Vous pourrez vérifier votre commande à l’étape suivante.',
	'checkout_payment_information': 'Paiement',
	'checkout_payment_method': 'Mode de paiement',
	'checkout_payment_method_amazon_fps': 'Vous serez redirigé vers Amazon pour compléter votre commande.',
	'checkout_payment_method_amazon_fps_confirmed': 'Les informations de votre compte Amazon ont été validés. Confirmez votre commande et votre compte sera débité.',
	'checkout_payment_method_amazon_mws': 'Veuillez utiliser le bouton "Connexion avec Amazon".',
	'checkout_payment_method_bitpay': 'Vous serez redirigé vers BitPay pour effectuer votre paiement bitcoin.',
	'checkout_payment_method_coinbase': 'Vous serez redirigé vers Coinbase pour effectuer votre paiement bitcoin.',
	'checkout_payment_method_cybersource_hosted': 'Vous serez redirigé vers une page de paiement sécurisé.',
	'checkout_payment_method_cybersource_sa_web': 'Vous serez redirigé vers une page de paiement sécurisé.',
	'checkout_payment_method_dibs': 'Vous serez redirigé vers DIBS pour compléter votre commande.',
	'checkout_payment_method_dwolla': 'Vous serez redirigé vers Dwolla pour compléter votre commande.',
	'checkout_payment_method_hosted_confirmed': 'Vos informations ont été validés. Confirmez votre commande et votre compte sera débité.',
	'checkout_payment_method_mercadopago': 'En choisissant MercadoPago comme méthode de paiement, vous serez redirigé vers le serveur MercadoPago pour vous connecter et confirmer votre commande. Après quoi, vous serez redirigé ici pour récupérer votre reçu.',
	'checkout_payment_method_noble': 'En choisissant Plug’n Pay Noble comme méthode de paiement, vous serez redirigé vers le serveur Plug’n Pay Noble pour vous connecter et confirmer votre commande. Après quoi, vous serez redirigé ici pour récupérer votre reçu.',
	'checkout_payment_method_ogone': 'Vous serez redirigé vers Ogone.com pour compléter votre commande.',
	'checkout_payment_method_paypal': 'Vous serez redirigé vers Paypal.com pour compléter votre commande.',
	'checkout_payment_method_paypal_confirmed': 'Vos renseignements de compte Paypal ont été confirmés. Le compte qui sera facturé est :',
	'checkout_payment_method_paypal_ec': 'Vous serez redirigé vers Paypal.com pour compléter votre commande.',
	'checkout_payment_method_paypal_ec_confirmed': 'Vos renseignements de compte Paypal ont été confirmés. Le compte qui sera facturé est :',
	'checkout_payment_method_pesapal': 'En choisissant PesaPal comme méthode de paiement, vous serez redirigé vers le serveur PesaPal pour vous connecter et confirmer votre commande. Après quoi, vous serez redirigé ici pour récupérer votre reçu.',
	'checkout_payment_method_skrill': 'En choisissant Skrill comme méthode de paiement, vous serez redirigé vers le serveur Skrill pour vous connecter et confirmer votre commande. Après quoi, vous serez redirigé ici pour récupérer votre reçu.',
	'checkout_payment_method_smartscreen': 'En choisissant Plug’n Pay SmartScreen comme méthode de paiement, vous serez redirigé vers le serveur Plug’n Pay SmartScreen pour vous connecter et confirmer votre commande. Après quoi, vous serez redirigé ici pour pour récupérer votre reçu.',
	'checkout_payment_method_twocheckout': 'Vous serez redirigé vers 2Checkout pour compléter votre commande.',
	'checkout_payment_pending': 'Votre paiement est en attente. Vous recevrez un email de confirmation une fois votre paiement confirmé.',
	'checkout_phone': 'Téléphone',
	'checkout_print_this_page': 'Imprimer cette page',
	'checkout_processor_response': 'Réponse du traitement',
	'checkout_processor_response_na': 'N/A',
	'checkout_purchase_order': 'Bon de commande',
	'checkout_purchase_order_number': 'PO #',
	'checkout_question_mark': '?',
	'checkout_receipt': 'Reçu',
	'checkout_required_piece_missing': 'Une information requise est manquante.',
	'checkout_required_pieces_missing': 'Certaines information nécessaires sont manquantes.',
	'checkout_secure_data_transfer_consent': 'Nous faisons tous les efforts pour protéger vos données personnelles. En cochant cette case, vous consentez à la transmission en toute sécurité les données saisies ici pour les serveurs de commerce électronique sécurisés que nous utilisons dans les États-Unis.',
	'checkout_secure_data_transfer_consent_display': 'Consentement à sécuriser le transfert de données',
	'checkout_select_shipping_option': 'Veuillez choisir une méthode d’expédition.',
	'checkout_sendpassword_email': 'Email :',
	'checkout_sendpassword_logininfo': 'Informations de connexion',
	'checkout_sendpassword_message': 'Vous trouverez vos informations de connexion ci-dessous. Veuillez noter que ce mot de passe temporaire ne peut être utilisé qu’une seule fois et doit l’être dans les 30 minutes :',
	'checkout_sendpassword_password': 'Mot de passe :',
	'checkout_shipment_subtotal': 'Sous-total pour l’expédition',
	'checkout_shipment_tax': 'Taxes liées à l’expédition',
	'checkout_shipment_total': 'Total pour l’expédition',
	'checkout_shipping': 'Expédition',
	'checkout_shipping_address': 'Adresse d’expédition',
	'checkout_shipping_customer_pickup': 'Retrait par le client',
	'checkout_shipping_free_ground_shipping': 'Frais d’envoi gratuit',
	'checkout_shipping_method': 'Méthode d’expédition',
	'checkout_shipping_methods_for': 'Méthodes d’expédition pour ',
	'checkout_shipping_rate_error': 'Erreur : Cette boutique n’a pas été configurée correctement pour calculer les frais de port vers cette adresse pour ce poids. Veuillez nous excuser pour cet inconvénient. Le propriétaire de la boutique a été informé de cette erreur.',
	'checkout_sign_in': 'Connectez-vous',
	'checkout_sso_already_logged_in': 'Vous êtes déjà connecté. Si vous souhaitez effectuer cette transaction sous un nom d’utilisateur différent, veuillez vous déconnecter et réessayer.',
	'checkout_submit_postal_code': 'Ok',
	'checkout_subscription_cancel_completed': 'Voici votre reçu. Il contient votre nouvelle date de fin d’abonnement.',
	'checkout_subscription_cancel_helper_text': 'Pour votre sécurité, veuillez entrer votre mot de passe pour annuler votre abonnement.',
	'checkout_subtotal': 'Sous-total',
	'checkout_tax_id': 'Numéro d’identification fiscale',
	'checkout_tos': 'J’accepte les <a href="{{url}}" target="_blank">conditions d’utilisation</a>.',
	'checkout_tos_display': 'Conditions générales d’utilisation',
	'checkout_update_my_information': 'Mettre à jour mest informations',
	'checkout_update_my_subscription': 'Mettre à jour mon abonnement',
	'checkout_update_shipping_message': 'Veuillez entrer vos informations de localisation pour afficher vos options d’expédition.',
	'checkout_updateinfo': 'Veuillez remplir ce formulaire de commande afin de mettre à jour vos renseignements de facturation et de paiement. Veuillez noter que la mise à jour de vos informations de paiement aura des répercussions sur <em>tous</em> les abonnements actifs facturés à cette adresse email.',
	'checkout_updateinfo_completed': 'Voici votre reçu. Il contient vos informations de facturation à jour.',
	'checkout_updateinfo_email_not_found': 'Aucun compte ne correspond à l’adresse email indiquée. Veuillez entrer une adresse email différente.',
	'checkout_use_billing_address': 'Utilisez une adresse de facturation différente.',
	'checkout_use_saved_payment_info': 'Utilisez la carte mémorisée:',
	'checkout_validation_error_cvv2': '<strong>Erreur :</strong> Veuillez inscrire le code de vérification pour votre carte de crédit.',
	'checkout_validation_gateway_not_configured': '<strong>Erreur :</strong> La passerelle de paiement actuellement configurée pour cette boutique ne semble pas être complètement supportée par cette version de la boutique.',
	'checkout_warning': 'Attention :',
	'checkout_yes': 'Oui',
	'minfraud_highrisk_transaction': '<strong> Erreur: </strong> Cette transaction dépasse nos paramètres de risque de fraude et ne peut pas être traitée. Veuillez nous contacter directement pour traiter votre commande.',
	'minfraud_api_error': '<strong>Erreur de l’API MinFraud: </strong>',
	'receipt_id_error': 'Nous sommes désolés, mais nous n’avons pas pu récupérer le reçu que vous avez demandé. Si vous avez cliqué sur le lien contenu dans un email, vérifiez que la barre d’adresse de votre navigateur contient bien le lien complet. Vous pouvez aussi sélectionner le lien contenu dans l’email, le copier et le coller dans la barre d’adresse.',
	'receipt_shipping_information': 'Renseignements sur l’expédition',
	'receipt_items_purchased': 'acheté',
	'receipt_message_order': 'Merci pour votre commande. Une copie de ce reçu vous a été envoyée par email. Veuillez nous contacter si vous avez des questions au sujet de cette transaction.',
	'email_billing_address': 'Adresse de facturation',
	'email_email': 'Email',
	'email_geoip_lookup': 'Recherche GeoIP',
	'email_html_downloadable_products': 'Produits téléchargeables:',
	'email_html_manage_subscriptions': 'Gérer les abonnements:',
	'email_html_message_order': 'Merci pour votre commande. Veuillez conserver ce reçu. Si vous souhaitez modifier vos informations paiement pour les transactions futures, <a href="https://{{ config.store_domain }}/cart?cart=updateinfo&h:lang=FR" style="margin: 0;padding: 0;font-family: Verdana, Helvetica, Arial, sans-serif;color: #333333;text-decoration: underline;">cliquez ici</a>.',
	'email_html_message_subscription_dunning_reminder': 'Cet e-mail est un rappel que votre abonnement est actuellement {{ days_since_first_failed_transaction }} jours en souffrance. Pour apporter votre abonnement à jour, <a href="{{ sub_token_url }}&h:lang=FR&empty=true&cart=checkout">Cliquez ici</a> et compléter votre transaction.',
	'email_html_order_summary': 'Résumé de la commande:',
	'email_html_purchasing_information': 'Informations d’achat:',
	'email_html_subscription_instructions': 'Veuillez utiliser les liens ci-dessous pour mettre à jour vos informations de facturation, modifier ou annuler votre abonnement. Il est à noter que si vous avez plusieurs abonnements associés à votre adresse email, la mise à jour de vos informations de paiement s’appliquera à <em> l’ensemble de vos abonnements actifs </em>. Si vous avez des questions, n’hésitez pas à nous contacter.',
	'email_html_subscription_links': '<a href="{{ sub_token_url }}&h:lang=FR&empty=true&cart=checkout"> Mettre à jour </a> les informations de facturation. <br />
	<a href="{{ sub_token_url }}&h:lang=FR&empty=true&cart=checkout"> Transferer </a> cet abonnement à quelqu’un d’autre. <br />
	<a href="{{ sub_token_url }}&h:lang=FR&empty=true&cart=checkout&sub_cancel=true"> Annuler </a> de cet abonnement.
	<!-- <br /> <a href="{{ sub_token_url }}&h:lang=FR&redirect={{ store_url }}"> Modifier </a> cet abonnement -->',
	'email_message_updateinfo': 'Vos informations de facturation ont été mises à jour comme indiqué ci-dessous. <a href="https://{{ config.store_domain }}/cart?cart=updateinfo" style="margin: 0;padding: 0;font-family: Verdana, Helvetica, Arial, sans-serif;color: #333333;text-decoration: underline;">cliquez ici pour mettre à jour à nouveau vos informations de facturation</a>.',
	'email_message_subscription_cancel': 'Cet email est la confirmation que l’abonnement suivant a été résillié et ne sera plus facturée.',
	'email_message_subscription_dunning_cancel': 'Cet e-mail est la confirmation que l\'abonnement Ci-dessous a été automatiquement annulée et ne sera pas facturé plus.',
	'email_message_subscription_modification': 'Cet email est la confirmation que l’abonnement suivant a été mis à jour.',
	'email_order_number': 'N° de commande',
	'email_reference_number': 'N° de référence',
	'email_ship_to': 'Expédier à',
	'email_shipping': 'Expédition',
	'email_shipping_address': 'Adresse de livraison',
	'email_subject_updateinfo': 'Informations mises à jour',
	'email_subject_subscription_cancelled': 'Abonnement annulé',
	'email_subject_subscription_updated': 'Abonnement mis à jour',
	'email_subject_subscription_past_due': 'Abonnement en souffrance',
	'email_text_cart': 'PANIER',
	'email_text_downloadable_products': 'LIENS DE TÉLÉCHARGEMENT :',
	'email_text_order_summary': 'RÉSUMÉ DE LA COMMANDE :',
	'email_text_manage_subscriptions': 'GÉRER LES ABONNEMENTS: ',
	'email_text_message_subscription_dunning_reminder': 'Cet e-mail est un rappel que votre abonnement est actuellement de {{ days_since_first_failed_transaction }} jours de retard. Pour apporter votre abonnement à jour, utilisez le lien ci-dessous et de compléter votre transaction:
	{{ sub_token_url }}&h:lang=FR&empty=true&cart=checkout',
	'email_text_subscription_instructions': 'Veuillez utiliser les liens ci-dessous pour mettre à jour vos informations de facturation, modifier ou annuler votre abonnement. Il est à noter que si vous avez plusieurs abonnements associés à votre adresse email, la mise à jour de vos informations de paiement s’appliquera à l’ensemble de vos abonnements actifs. Si vous avez des questions, n’hésitez pas à nous contacter.',
	'email_text_subscription_links': 'Mettre à jour les informations de facturation:
	{{ sub_token_url }}&h:lang=FR&cart=checkout

	Annuler cet abonnement:
	{{ sub_token_url }}&h:lang=FR&cart=checkout&sub_cancel=true',
	'email_text_message_order': 'Merci pour votre commande. Veuillez conserver ce reçu. Si vous souhaitez modifier vos informations paiement pour les transactions futures, veuillez utiliser ce lien:',
	'email_text_purchasing_information': 'RENSEIGNEMENTS D’ACHAT :',
	'email_view_in_your_browser': 'Voir dans le navigateur',
	'downloadables_can_not_read_file': '<strong>Erreur:</strong> Il y a eu une erreur de lecture de votre fichier téléchargeable.',
	'downloadables_maximum_downloads_reached': '<strong>Erreur:</strong> Vous avez atteint le maximum de téléchargements pour ce produit.',
	'downloadables_not_found': '<strong>Erreur:</strong> Votre produit téléchargeable n’a pu être trouvée.',
	'downloadables_store_not_found': '<strong>Erreur:</strong> Le magasin que vous cherchez est introuvable.',
	'downloadables_timeout_exceeded': '<strong>Erreur:</strong> Vous avez dépassé le temps imparti entre votre première tentative de téléchargement et cette tentative.',
	'validation_error_address': '<strong>Erreur :</strong> L’adresse doit être renseignée.',
	'validation_error_card_number': '<strong>Erreur :</strong> Veuillez entrer un numéro de carte de crédit ou de débit.',
	'validation_error_city': '<strong>Erreur :</strong> La ville doit être renseignée.',
	'validation_error_company': '<strong>Erreur :</strong> La société doit être renseignée.',
	'validation_error_country': '<strong>Erreur :</strong> Le pays doit être renseigné.',
	'validation_error_email': '<strong>Erreur :</strong> L’adresse email doit être renseignée.',
	'validation_error_email_invalid': '<strong>Erreur :</strong> Veuillez entrer une adresse email valide.',
	'validation_error_encrypt_and_save': '<strong>Erreur :</strong> Vous devez prendre acte que votre numéro de carte de crédit sera stocké de façon sécuritaire pour une utilisation future, ce qui est nécessaire pour traiter les abonnements associés à cette adresse email pour la facturation.',
	'validation_error_first_name': '<strong>Erreur :</strong> Le prénom doit être renseigné.',
	'validation_error_last_name': '<strong>Erreur :</strong> Le nom de famille doit être renseigné.',
	'validation_error_password': '<strong>Erreur :</strong> Veuillez entrer un mot de passe.',
	'validation_error_phone': '<strong>Erreur :</strong> Le téléphone doit être renseigné.',
	'validation_error_postal_code': '<strong>Erreur :</strong> Le code postal doit être renseigné.',
	'validation_error_state': '<strong>Erreur :</strong> L’état/province doit être renseigné',
	'messaging_maintenance_notification': 'Nous sommes désolés pour la gêne occasionnée, mais notre fonctionnalité e-commerce est actuellement en cours de maintenance planifiée et mise à niveau. Nous serons de retour en ligne au plus tard ^^TIME^^. Si vous souhaitez être prévenu lorsque nous reviendrons, ou si vous avez des questions, remplissez le formulaire ci-dessous.',
	'messaging_contact_form_thank_you': 'Merci d’avoir pris le temps de remplir le formulaire de contact. Nous reviendrons vers vous dès que possible.',
	'gateway_declined': '<strong>Erreur :</strong> Votre paiement a été refusé pour la raison suivante :',
	'gateway_error': '<strong>Erreur :</strong> Une erreur est survenue lors du traitement de votre paiement :',
	'gateway_error_status_code': '<strong>Erreur:</strong> La passerelle de paiement a semble injoignable: ',
	'gateway_error_timeout': '<strong>Erreur:</strong> Il y avait un délai d’attente de réponse de la passerelle. Contactez-nous pour vous assurer que votre carte n’a pas été déjà débitée et/ou traiter votre commande manuellement.',
	'gateway_error_unknown': '<strong>Erreur :</strong> Une erreur inconnue est survenue.',
	'gateway_error_wrong_signature': '<strong>Erreur:</strong> La passerelle de paiement a retourné une signature non valide. Contactez-nous pour vous assurer que votre carte n’a pas été déjà débitée et/ou traiter votre commande manuellement.',
	'gateway_line_item_rounding_adjustment': 'Ajustement de l’arrondi',
	'gateway_line_item_rounding_adjustment_description': 'Du fait que les types d’article sont arrondis à l’unité la plus proche, un ajustement est nécessaire afin que leur somme corresponde au total de l’article.',
	'gateway_reason_code': 'Code de réponse :',
	'gateway_3d_secure_not_validated': 'Le contrôle de validation 3D Secure n’a pas réussi. Veuillez réessayer ou utiliser un autre type de paiement.',
	'gateway_cancelled': '<strong>Erreur:</strong> Votre transaction a été annulée. Veuillez réessayer ou utiliser un autre méthode de paiement',
	'gateway_amazon_fps_response': 'N° de transaction Amazon FPS :',
	'gateway_amazon_mws_response': 'ID Amazon Payments de référence:',
	'gateway_amazon_mws_response_ba': 'ID Amazon Payments Accord de facturation: ',
	'gateway_authorize_response': 'N° de transaction Authorize.net :',
	'gateway_beanstream_response': 'N° de transaction Beanstream :',
	'gateway_bitpay_response': 'N° de transaction BitPay : ',
	'gateway_bluefin_response': 'Code d’autorisation Bluefin :',
	'gateway_bluepay_response': 'N° de transaction Bluepay :',
	'gateway_braintree_response': 'N° de transaction Braintree :',
	'gateway_cardstream_response': 'N° de transaction Cardstream :',
	'gateway_coinbase_response': 'N° de transaction Coinbase :',
	'gateway_cybersource_response': 'N° de requête Cyber Source :',
	'gateway_cybersource_review': '<strong>Erreur :</strong> Le gestionnaire de décision CyberSource a annoté la commande à des fins d’examen :',
	'gateway_datacash_response': 'Référence DataCash : ',
	'gateway_dibs_response': 'N° de transaction DIBS :',
	'gateway_digitalriver_response': 'N° de transaction DigitalRiver :',
	'gateway_durango_response': 'N° de transaction Durango :',
	'gateway_dwolla_response': 'N° de transaction Dwolla :',
	'gateway_echo_response': 'Numéro de commande Echo :',
	'gateway_emeriopayments_response': 'N° de transaction Emerio Payments :',
	'gateway_emppay_response': 'N° de transaction eMPPay :',
	'gateway_eprocessingnetwork_response': 'N° de transaction de la passerelle eProcessing Network :',
	'gateway_eway_response': 'N° de transaction eWAY :',
	'gateway_fatzebra_response': 'N° de transaction Fat Zebra :',
	'gateway_firstdata_e4_response': 'N° de transaction First Data e4: ',
	'gateway_firstdata_response': 'N° de transaction First Data :',
	'gateway_fosdick_response': 'N° de transaction Fosdick : ',
	'gateway_goemerchant_response': 'N° de transaction goEmerchant :',
	'gateway_helcim_response': 'N° de transaction Helcim :',
	'gateway_inspire_response': 'N° de transaction de la passerelle Inspire :',
	'gateway_litle_response': 'N° de transaction Litle :',
	'gateway_lucy_response': 'Référence Cynergydata Lucy :',
	'gateway_merchantesolutions_response': 'N° de transaction Merchant e-Solutions :',
	'gateway_mercadopago_response': ' Collection MercadoPago ID :',
	'gateway_migs_anz_egate_response': 'N° de transaction ANZ eGate :',
	'gateway_migs_commweb_response': 'N° de transaction CommWeb :',
	'gateway_moneris_response': 'Référence Moneris :',
	'gateway_netbilling_response': 'N° de transaction Netbilling :',
	'gateway_nmi_response': 'N° de transaction Network Merchants :',
	'gateway_noble_response': 'N° de transaction Plug’n Pay Noble :',
	'gateway_ogone_response': 'N° de transaction Ogone :',
	'gateway_orbital_response': 'N° de transaction Paymentech :',
	'gateway_paperless_response': 'N° de transaction Paperless :',
	'gateway_payconex_response': 'N° de transaction PayConex :',
	'gateway_payflowpro_response': 'Référence Paypal :',
	'gateway_paygate_response': 'N° de transaction PayGate :',
	'gateway_payjunction_response': 'N° de transaction PayJunction :',
	'gateway_payleap_response': 'Référence PayLeap :',
	'gateway_payline_response': 'N° de transaction PayLine: ',
	'gateway_paymentexpress_response': 'N° de transaction PaymentExpress :',
	'gateway_paymentsense_response': 'Code d’autorisation de PaymentSense :',
	'gateway_paypal_ec_response': 'N° de transaction PayPal :',
	'gateway_paypal_ec_response_ba': 'Accord de facturation PayPal ID: ',
	'gateway_paypal_response': 'N° de transaction PayPal :',
	'gateway_paypal_error_10486': 'Cela peut être un problème avec l\'adresse de facturation, la transaction peut dépasser la limite de la carte, ou la transaction a été refusée par l\'émetteur de la carte. S\'il vous plaît résoudre le problème et essayer de soumettre à nouveau.',
	'gateway_paypoint_gateway_response': 'Code d’autorisation de la passerelle Paypoint :',
	'gateway_paypoint_metacharge_response': 'N° de transaction Paypoint Complete Solution :',
	'gateway_pesapal_response': 'Pesapal suivi de paiement ID:',
	'gateway_paytrace_response': 'N° de transaction PayTrace :',
	'gateway_plugnpay_response': 'Code d’autorisation de la passerelle Plugnpay :',
	'gateway_plugnpay_authnet_response': 'N° de transaction Plug’n Pay : ',
	'gateway_propay_response': 'N° de transaction ProPay :',
	'gateway_psigate_response': 'Code de réponse PSiGate :',
	'gateway_quantumgateway_response': 'N° de transaction de la passerelle Quantum :',
	'gateway_quickbooks_response': 'N° de transaction de la passerelle Intuit QuickBooks Merchant Service :',
	'gateway_realex_response': 'Code d’autorisation Realex :',
	'gateway_sagepay_response': 'Code de transaction vendeur Sage Pay :',
	'gateway_sagepayments_response': 'Référence Sage Payments :',
	'gateway_samurai_response': 'Référence Samurai :',
	'gateway_securenet_response': 'N° de transaction SecureNet: ',
	'gateway_securetrading_response': 'Référence SecureTrading :',
	'gateway_skrill_response': 'N° de transaction Skrill :',
	'gateway_smartscreen_response': 'N° de transaction Plug’n Pay SmartScreen :',
	'gateway_stripe_response': 'N° de transaction Stripe :',
	'gateway_totalapps_response': 'N° de transaction Total-Apps :',
	'gateway_transaction_express_response': 'Référence Transaction Express :',
	'gateway_transfirst_response': 'N° de transaction TransFirst :',
	'gateway_trustcommerce_response': 'N° de transaction TrustCommerce :',
	'gateway_twocheckout_response': '2Checkout numéro de facture :',
	'gateway_usaepay_response': 'N° de transaction ePay (États-Unis) :',
	'gateway_vanco_response': 'Référence Vanco :',
	'gateway_virtualmerchant_response': 'N° de transaction Virtual Merchant (Elavon) :',
	'gateway_virtualpiggy_response': 'N° de transaction Virtual Piggy :',
	'gateway_wepay_response': 'WePay Commander ID: ',
	'gateway_westpac_response': 'N° de transaction Westpac PayWay :',
	'gateway_worldpay_online_response': 'Code de commande WorldPay :',
	'gateway_worldpay_response': 'Numéro de commande WorldPay : ',
	'gateway_yuupay_response': 'Unique ID YuuPay : '
} %}

{% set custom_lang = {
	"FR": custom_lang_FR
} %}

{% if original_lang is not defined %}
        {% set original_lang = config.lang %}
{% endif %}
{% set new_lang = {'lang': original_lang } %}
{% for key, item in custom_fields %}
    {% if key == "lang" %}
        {% if item.value|upper in custom_lang|keys %}
            {% set lang = item.value|upper %}
            {% set new_lang = {'lang': config.lang|merge(custom_lang[lang]) } %}
        {% endif %}
    {% endif %}
{% endfor %}
{% set config = config|merge(new_lang) %}

{% if context == "email" %}
	{% if config.lang.custom_subject is defined %}
		{{ config.lang.custom_subject|fc_output_data('email_subject') }}
	{% endif %}
	{% if config.lang.custom_from is defined %}
		{{ config.lang.custom_from|fc_output_data('email_from') }}
	{% endif %}
	{% if config.lang.custom_bcc is defined %}
		{{ config.lang.custom_bcc|fc_output_data('email_bcc') }}
	{% endif %}
{% endif %}

Once you're done with your modifications, save it somewhere for your records.

There are a few different links included in the language strings that redirect users back to the cart - for example to update their information as part of an updateinfo cart action. To maintain the users chosen language, you need to append &h:LANGUAGE_CODE to each individual translation you include.

For example, one French translation looks like this:

'email_message_updateinfo': 'Vos informations de facturation a été mis à jour comme indiqué ci-dessous. <a href="https://{{ config.store_domain }}/cart?cart=updateinfo">cliquez ici pour mettre à jour à nouveau vos informations de facturation</a>.'

To ensure that link redirects to the French checkout page, you would modify it to include &h:lang=FR like this:

'email_message_updateinfo': 'Vos informations de facturation a été mis à jour comme indiqué ci-dessous. <a href="https://{{ config.store_domain }}/cart?cart=updateinfo&h:lang=FR">cliquez ici pour mettre à jour à nouveau vos informations de facturation</a>.'

Obviously, you would change FR to be the language code of the translation you're editing.

Language strings you will want to alter include:

  • email_message_updateinfo
  • email_html_message_order
  • email_html_subscription_links (for the four subscription links)
  • email_text_subscription_links (for the two subscription links)

Note: We've already added these to the translations provided on this page - you'll just need to ensure you've done it for any other translations you do.

Customising Email Subject, From Address and BCC Address

With the different languages, you will probably also want to set a different email subject, and possibly also a different from address and BCC address for the emails to be sent to. You can do this by adding three custom strings to each translation. Specifically these are:

  • custom_subject
  • custom_from
  • custom_bcc

As an example of including those, that would look like this:

{% set custom_lang_FR = {
	'custom_subject': 'This is the custom subject for French',
	'custom_from': 'frenchaddress@yourstore.fr',
	'custom_bcc': 'orders@yourstore.fr',
	'cart_add_coupon': 'Ajouter un coupon',
	'cart_apply': 'Appliquer',
	...
} %}
{% set custom_lang_ES = {
	'custom_subject': 'This is the custom subject for Spanish',
	'custom_from': 'frenchaddress@yourstore.es',
	'custom_bcc': 'orders@yourstore.es',
	...
} %}

Use of all three variables is optional - you can use one, two, all or none of them for each language. If you don't specify one of them, the default from the store will be used.

Step 2: Update the Templates

Now that you have your code ready, select the Custom Template option for the templates and paste your code in the following locations:

  • For the cart include template, paste it in between {% block cart %} and {% if context == 'cart' %}. Remember to include a new line before and after the snippet.
  • For the cart, checkout and receipt templates, paste it at the start of the <body> section.
  • For the email template, paste it at the very start of the template.

Alternate Payment Methods

If your store is using an alternate payment method like Amazon, PayPal, DIBS etc, you will need to add the following code to your checkout template, in between the {% embed checkout.inc.twig %} and {% endembed %} tags:

{% block payment_method %}
	{% if "lang" in custom_fields|keys and custom_fields.lang.value != "" %}
		{% set new_hosted_gateways = {} %}
		{% for hosted_gateway in hosted_payment_gateways %}
			{% set new_gateway = hosted_gateway %}
			{% set custom_strings = {
				lang_pay_with: config.lang['checkout_pay_with_' ~ hosted_gateway.type],
				lang_payment_method: config.lang['checkout_payment_method_' ~ hosted_gateway.type]
			} %}
			{% if "token" in hosted_gateway_vars|keys and hosted_gateway_vars.token != "" %}
				{% set lang_payment_method_confirmed = config.lang.checkout_payment_method_hosted_confirmed %}
				{% if 'checkout_payment_method_' ~ hosted_gateway.type ~ '_confirmed' in config.lang|keys %}
					{% set lang_payment_method_confirmed = config.lang['checkout_payment_method_' ~ hosted_gateway.type ~ '_confirmed'] %}
					{% if hosted_gateway.type == "paypal_ec" %}
						{% set lang_payment_method_confirmed = lang_payment_method_confirmed|replace({ '%s': hosted_gateway_vars.PayerEmail }) %}
					{% endif %}
				{% endif %}
				{% set custom_strings = custom_strings|merge({ lang_payment_method: lang_payment_method_confirmed }) %}
			{% endif %}

			{% set new_gateway = [new_gateway|merge(custom_strings)] %}
			{% set new_hosted_gateways = new_hosted_gateways|merge(new_gateway) %}
		{% endfor %}
		{% set hosted_payment_gateways = new_hosted_gateways %}
	{% endif %}
	{{ parent() }}
{% endblock %}

Recache your templates, and you're almost done.

Step 3: Testing it out

Make sure that you have your site ready for the UTF-8 charset by having this code in your site's <head>:

<meta charset="utf-8" /> 

This is needed just in case you would be using special characters for your translated language.

To test it out, add something to your cart with the h:lang parameter set to the value of whatever your language code is. For the purpose of these examples, the language code fr would be used.

Form example:

<input type="hidden" name="h:lang" value="fr" />

Include the input alongside your product form.

Link example:

https://<yourdomain>.foxycart.com/cart?h:lang=fr 

Include the custom field in your link whenever you add a product.

Using the default store language

This snippet assumes that you've set your store's default language to one that is different to the translations you're adding through the snippet, so it's essentially an extra translation. To allow the customer to change to that default language, simply pass an empty string for the lang attribute to clear out anything the customer may have previously set. For example:

<input type="hidden" name="h:lang" value="" />

or

https://<yourdomain>.foxycart.com/cart?h:lang=

Step 4: Adding more languages

Sticking with the essence of the word “multiple”, you can add any number of languages by replicating the above example as a new entry at the start of the script.

{% set custom_lang_FR = {
    {# French Translations #}
} %}
{% set custom_lang_DE = {
    {# German Translations #}
} %}
{% set custom_lang_AA = {
    {# Your Custom Translations #}
} %}

For every new language you add, you also need to edit the custom_lang object:

{% set custom_lang = {
	"FR": custom_lang_FR,
	"DE": custom_lang_DE,
	"AA": custom_lang_AA
} %}

The following language sets are from the standard FoxyCart languages currently supported. If you need a language other than the following, get in touch with us and we can provide you with a file to assist with translating - and once translated add it as an officially supported language to make things even easier for you.

Site Tools