Skip Navigation

This thread is resolved. Here is a description of the problem and solution.

Problem:
If you're experiencing a fatal error on the WPML Theme & Plugin Localization page when Kadence Blocks is activated, it might be due to a conflict between WPML and Kadence Blocks. This issue is identified by a PHP fatal error related to unknown format specifiers in string placeholders within the WPML String Translation functionality.
Solution:
We recommend checking the WPML > String Translation section for strings that use placeholders like "%s comments". Ensure that placeholders like "%s" are correctly and identically translated across all languages. Additionally, the issue might be linked to a .po or .pot file on your server, which could contain errors. Review these files for any incorrect format specifiers or translation errors. For more details on similar issues, you can visit WPML Errata.

If this solution does not resolve your issue or seems irrelevant due to being outdated or not applicable to your case, we highly recommend checking related known issues at WPML Known Issues, verifying the version of the permanent fix, and confirming that you have installed the latest versions of themes and plugins. If further assistance is needed, please open a new support ticket at WPML Support Forum.

This is the technical support forum for WPML - the multilingual WordPress plugin.

Everyone can read, but only WPML clients can post here. WPML team is replying on the forum 6 days per week, 22 hours per day.

Tagged: 

This topic contains 9 replies, has 3 voices.

Last updated by Pieter 3 months, 4 weeks ago.

Assisted by: Andreas W..

Author Posts
October 26, 2024 at 11:39 am #16333182

Pieter

Background of the issue:
Whilst troubleshooting issues on a development website of one of my clients, I discovered that the WPML Theme & plugin localization page was triggering a fatal error. So I went through the regular troubleshooting steps (debug.log, default theme), and it became clear it was a conflict with a plugin. Long story short: Kadence Blocks is the culprit, once activated the WPML Theme & plugin localization page immediately triggers a fatal error and can no longer be reached.

Please remove this plugin from your compatibility list! The last tested version was on: August 6, 2021!

Every 4-6 months I receive an email from WPML to check compatibility of my plugins, Kadence obviously is not interested in keeping their software compatible, and to be honest I find it quite shocking that plugins of developers not responding to your emails, remain listed as "fully compatible and thoroughly tested", which clearly is utter nonsense!

Symptoms:
WPML Theme & plugin localization page triggers a Fatal Error when Kadence Blocks plugin is activated. When deactivated the page immediately becomes available again.

Questions:
Why is Kadence Blocks still listed as fully compatible when it causes a fatal error?
Can you remove Kadence Blocks from the compatibility list?

October 27, 2024 at 12:03 pm #16334551

Waqas Bin Hasan
Supporter

Languages: English (English )

Timezone: Asia/Karachi (GMT+05:00)

Hi,

Thank you for contacting the support and we appreciate your concern.

Our compatibility team tries their best to maintain 3rd party compatibility. I'll request if you can provide more details on the error (i.e. error dump), as well as, some steps to reproduce and debug information about your setup, our team may help fixing it temporarily while checking with Kadence.

Meanwhile, one of my colleagues takes up this case, I've enabled the debug information section for your next reply.

Additionally you can also take a look at https://wpml.org/faq/checklist-before-opening-a-ticket-in-wpml-support/ and cross-check for a few initial fixes.

See https://wpml.org/purchase/support-policy/privacy-and-security-when-providing-debug-information-for-support/ for details on privacy and security.

Regards.

October 28, 2024 at 1:40 pm #16337894

Pieter

I have disabled another plugin as it was also causing conflicts, that one is Sendcloud | Smart Shipping Service (link of plugin on WP.org)

Steps to reproduce already provided in inital post under Symptoms and below you can find the entry on the Fatal Error that is triggered after visiting the Theme and plugins localization page with Kadence active.

[25-Oct-2024 14:14:18 UTC] PHP Fatal error:  Uncaught ValueError: Unknown format specifier "t" in /public_html/wp-content/plugins/wpml-string-translation/classes/translations-file-scan/wpml-st-translations-file-registration.php:100
Stack trace:
#0 /public_html/wp-content/plugins/wpml-string-translation/classes/translations-file-scan/wpml-st-translations-file-registration.php(100): sprintf()
#1 /public_html/wp-content/plugins/wpml-string-translation/classes/translations-file-scan/wpml-st-translations-file-registration.php(65): WPML_ST_Translations_File_Registration->save_file_info()
#2 /public_html/wp-includes/class-wp-hook.php(326): WPML_ST_Translations_File_Registration->cached_save_mo_file_info()
#3 /public_html/wp-includes/plugin.php(205): WP_Hook->apply_filters()
#4 /public_html/wp-includes/l10n.php(768): apply_filters()
#5 /public_html/wp-content/plugins/wpml-string-translation/classes/MO/JustInTime/MO.php(95): load_textdomain()
#6 /public_html/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/collect/src/Illuminate/Support/Collection.php(228): WPML\ST\MO\JustInTime\MO->WPML\ST\MO\JustInTime\{closure}()
#7 /public_html/wp-content/plugins/wpml-string-translation/classes/MO/JustInTime/MO.php(94): WPML\Collect\Support\Collection->each()
#8 /public_html/wp-content/plugins/wpml-string-translation/classes/MO/JustInTime/MO.php(76): WPML\ST\MO\JustInTime\MO->loadTextDomain()
#9 /public_html/wp-content/plugins/wpml-string-translation/classes/MO/JustInTime/MO.php(48): WPML\ST\MO\JustInTime\MO->load()
#10 /public_html/wp-includes/l10n.php(195): WPML\ST\MO\JustInTime\MO->translate()
#11 /public_html/wp-includes/l10n.php(306): translate()
#12 /public_html/wp-content/plugins/kadence-blocks/vendor/vendor-prefixed/stellarwp/uplink/src/Uplink/Admin/License_Field.php(84): __()
#13 /public_html/wp-content/plugins/kadence-blocks/vendor/vendor-prefixed/stellarwp/uplink/src/Uplink/Admin/Provider.php(106): KadenceWP\KadenceBlocks\StellarWP\Uplink\Admin\License_Field->register_settings()
#14 /public_html/wp-includes/class-wp-hook.php(322): KadenceWP\KadenceBlocks\StellarWP\Uplink\Admin\Provider->admin_init()
#15 /public_html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters()
#16 /public_html/wp-includes/plugin.php(517): WP_Hook->do_action()
#17 /public_html/wp-admin/admin.php(175): do_action()
#18 {main}
  thrown in /public_html/wp-content/plugins/wpml-string-translation/classes/translations-file-scan/wpml-st-translations-file-registration.php on line 100
October 28, 2024 at 2:33 pm #16338214

Andreas W.
Supporter

Languages: English (English ) Spanish (Español ) German (Deutsch )

Timezone: America/Lima (GMT-05:00)

Hello,

This is more likley a translation issue inside a language file or directly on String Translation.

Example:
https://wpml.org/errata/php-8-php-fatal-error-uncaught-valueerror-unknown-format-specifier-in/

Revise WPML > String Translation for strings that use placeholders, like for example:

"%s comments"
etc.

It is very likely that on one of the translations, the placeholder was not translated correctly.

Placeholders lie "%s" need to be identical in every language.

Best regards
Andreas

October 28, 2024 at 3:19 pm #16338498

Pieter

Hi Andreas,

Hmmm ok, it would be "good" if that's the issue.

Pity that a search in String Translation on `%s` doesn't work.

I wonder if nuking all the `.mo` files would help?

And what remains of course is that plugin developers seemingly do not have to test their plugins with new versions as there are no consequences. This is a completely different issue, but if not addressed I will keep that in mind for my own plugins here on WPML.

October 28, 2024 at 9:56 pm #16339821

Andreas W.
Supporter

Languages: English (English ) Spanish (Español ) German (Deutsch )

Timezone: America/Lima (GMT-05:00)

Hello,

Yes, deleting and regenerating the .mo-files could be an option, but if the issue remains on WPML > String Translation, then this will not solve the problem.

I would like to request temporary access (wp-admin and FTP) to the site to investigate the issue further.

The required fields are below the comment section when you log in to leave the next reply. The information you provide is private, meaning only you and I can see and access it.

IMPORTANT
Please be sure to back up the site and database before granting us access.

If you can't see the "wp-admin / FTP" fields, your post and site login details will be set to "PUBLIC". DO NOT publish the data unless you see the required wp-admin / FTP fields.

I may need to install a plugin called "All In One WP Migration" here to create a copy of the site that I can use to investigate the issue further.

However, I would also be very grateful if you could provide a staging site or copy of the website from your server for this purpose.

If you have any questions about creating such a staging site, you can consult your hosting provider. Please note that WPML must also be registered on this staging site at https://wpml.org/de/account/websites/.

If you are not able to provide such a copy of the website for testing, please let me know on this ticket.

The private reply form looks like this:
hidden link

The next time you reply, click on "I still need assistance".

Video:
hidden link

Please note that we are obliged to request this information individually on each ticket. We are not allowed to access any credentials that were not specifically submitted on this ticket in the private response form.

Best regards
Andreas

October 29, 2024 at 8:23 am #16340655

Pieter

Hello Andreas,

The issue is not and never was on String Translations. It's on Theme & plugins localization.

Also your reply doesn't make sense, as you said it is not a bug, and the issue is related to a wrong translation of a parameter, such as %s or %1$s.

I replied that searching on that doesn't work in String Translation which I am sure you are aware of.

And now all of a sudden you want access to further "troubleshoot". Troubleshoot what? You gave the answer. I cannot resolve it, because WPML's search function is garbage, but I will have to find something else that works for me.

Unless of course it is not at all what you said it is...

Cannot give you access and I don't have time to setting up a staging site.

Pieter

October 29, 2024 at 3:20 pm #16343233

Andreas W.
Supporter

Languages: English (English ) Spanish (Español ) German (Deutsch )

Timezone: America/Lima (GMT-05:00)

I am really sorry to hear that, but I can not solve the issue for you if you can not provide access.

The error you are reporting points to WPML String Translation and occurs when scanning translation files for new strings. An issue on String Translation can be linked to WPML > Theme & Plugin Localization, as this screen is used to add strings to WPML > String Translation.

It could even be that the main issue here is inside a .po file or .pot file on the server.

Source file error in:
/wp-content/plugins/wpml-string-translation/classes/translations-file-scan/wpml-st-translations-file-registration.php on line 100

October 29, 2024 at 4:00 pm #16343476

Pieter

Hello Andreas,

You cannot solve the issue as you decisively declared it is not a bug with Kadence and instead a problem with a wrong translation.

I also cannot solve the issue as search on "%s" does not function within WPML String Translation as it returns all strings containing the letter "s" 🤦‍♂️

Giving you access or spinning up a staging site is not going to change any of that.

And since the issue is not a dealbreaker (the page can be accessed by deactivating the Kadence plugin), it will just have to be this way.

Thanks anyways.
Pieter

October 30, 2024 at 7:08 am #16344916

Pieter

Kadence has confirmed this is a bug on their side:

https://wordpress.org/support/topic/kadence-blocks-triggers-fatal-error-on-wpml-theme-plugin-localization-page/#post-18104076