Passer la navigation

Ce sujet est résolu. Voici une description du problème et de la solution.

Problème :
Le client rencontre une erreur fatale dans le backoffice indiquant un problème de type avec la fonction WP_Translation_Controller::translate(), où un Array est passé au lieu d'une chaîne de caractères (string).

Solution :
1. Nous recommandons de mettre à jour les plugins WPML, String Translation et WooCommerce Multilingual pour assurer la compatibilité avec WordPress 6.5. Vous pouvez télécharger les mises à jour depuis votre compte WPML sur https://wpml.org/fr/account/downloads/.
2. Si le problème persiste après la mise à jour, il pourrait être lié à des Payment Gateways de WooCommerce. le client a le plugin "WooCommerce Systempay Payment". Un cas similaire a été discuté dans notre forum, que vous pouvez consulter la solution ici : https://wpml.org/fr/forums/topic/quand-string-translation-actif-liste-des-commandes-naffiche-plus-que-1-commande-2/#post-13528265.

Si la solution proposée ne résout pas votre problème ou si elle semble obsolète, nous vous invitons à ouvrir un nouveau ticket de support. Nous vous recommandons également de consulter la page des problèmes connus (https://wpml.org/known-issues/) pour vérifier si votre problème a déjà été identifié et de vous assurer que vous avez installé les dernières versions des thèmes et plugins.

Il s'agit du forum d'assistance technique de WPML, le plug-in multilingue pour WordPress.

Il est accessible à tous, toutefois seuls les clients de WPML peuvent y publier leurs messages. L'équipe du WPML répond sur le forum 6 jours par semaine, 22 heures par jour.

Ce sujet contient 2 réponses, a 2 voix.

Dernière mise à jour par Nicolas V. Il y a 1 année et 2 mois.

Assisté par: Nicolas V..

Auteur Messages
Avril 4, 2024 à 9:41 am #15481951

matthieuC-3

une erreur fatale seulement sur le backoffice

Fatal error: Uncaught TypeError: Argument 1 passed to WP_Translation_Controller::translate() must be of the type string, array given, called in /home/u369100743/domains/bustoque.fr/public_html/wp-includes/l10n/class-wp-translations.php on line 144 and defined in /home/u369100743/domains/bustoque.fr/public_html/wp-includes/l10n/class-wp-translation-controller.php:263 Stack trace: #0 /home/u369100743/domains/bustoque.fr/public_html/wp-includes/l10n/class-wp-translations.php(144): WP_Translation_Controller->translate(Array, '', 'woocommerce') #1 /home/u369100743/domains/bustoque.fr/public_html/wp-includes/l10n.php(195): WP_Translations->translate(Array) #2 /home/u369100743/domains/bustoque.fr/public_html/wp-includes/l10n.php(306): translate(Array, 'woocommerce') #3 /home/u369100743/domains/bustoque.fr/public_html/wp-content/plugins/sav_woocommerce-multilingual/inc/class-wcml-wc-gateways.php(156): __(Array, 'woocommerce') #4 /home/u369100743/domains/bustoque.fr/public_html/wp-content/plugins/sav_woocommerce-multilingual/inc/c in /home/u369100743/domains/bustoque.fr/public_html/wp-includes/l10n/class-wp-translation-controller.php on line 263

Avril 4, 2024 à 4:26 pm #15485022

Nicolas V.
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

Merci d'avoir contacté le support de WPML. Nous avons publié de nouvelles versions de WPML, String Translation et WooCommerce Multilingual compatibles avec WP 6.5. Commençons donc par mettre à jour les plugins.

Ref: https://wpml.org/changelog/2024/04/wpml-4-6-10-and-wcml-5-3-6-ready-for-wordpress-6-5/

Vous pouvez télécharger tous nos plugins directement dans votre compte WPML.
- Allez sur https://wpml.org/fr/account/downloads/
- et cliquez sur "Télécharger WPML manuellement" pour les voir et les télécharger
- Puis dans votre backoffice, allez dans "Extensions > Ajouter" et utiliser le bouton en haut de l'écran pour téléverser le fichier .zip

---

Notez également que dans les erreurs le plugin mentionné est sav_woocommerce-multilingual, notre plugin s'appelle woocommerce-multilingual. J'imagine que vous l'avez renommé mais je le précise quand même au cas ou il s'agirait d'un autre plugin.

Avril 4, 2024 à 4:41 pm #15485044

Nicolas V.
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: America/Lima (GMT-05:00)

Re,

Voici la fonction ou un Array est passé ou lieu d'un String:

public function get_translated_gateway_string( $string, $gateway_id, $name ) {
		$translated_string = apply_filters(
			'wpml_translate_single_string',
			$string,
			self::STRINGS_CONTEXT,
			$gateway_id . '_gateway_' . $name,
			$this->get_current_gateway_language()
		);

		if ( $translated_string === $string ) {
			$translated_string = __( $string, 'woocommerce' );
			if ( 'cheque' === $gateway_id && $translated_string === $string && 'title' === $name ) {
				$translated_string = _x( $string, 'Check payment method', 'woocommerce' );
			}
		}

		return $translated_string;
	}

Cela concerne la traduction des Payment Gateways de WooCommerce. Je vois que vous avez "WooCommerce Systempay Payment".

En cherchant sur notre forum j'ai trouvé un ticket assez ancien concernant ce plugin: https://wpml.org/fr/forums/topic/quand-string-translation-actif-liste-des-commandes-naffiche-plus-que-1-commande-2/#post-13528265

Il semble que ce ne soit pas la première fois qu'un Array est passé au lieu d'un String.
J'attends donc votre feedback afin de voir si nous devons faire remonter votre ticket.

Avril 5, 2024 à 7:16 am #15486467

matthieuC-3

bonjour

tous mes plugins etaient bien à jour
effectivement c'est moi qui l'avait renommé pour le desactiver et ainsi avoir à nouveau accès à mon back-office

le code récupérer sur l'ancien ticket (pas si ancien d'ailleurs) fonctionne parfaitement. J'ai pourtant cherché avant de contacter le support (ce que je fais quasiment jamais) mais je n'avais identifié que c'était à cause des gateway

un grand merci pour l'efficacité et la rapidité