Skip Navigation

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

Problem:
The client experienced issues with translations not appearing for review in the WPML Translation Management dashboard, despite having sent them off for translation. Additionally, there was a database error related to an illegal mix of collations.
Solution:
1. We advised the client to ensure all database tables and specific columns are set to the collation

utf8mb4_unicode_520_ci

. This can be adjusted via the 'Operations' tab in tools like phpMyAdmin.
2. We changed the setting for 'Field Groups (acf-field-group)' in WPML > Settings > Post Types Translations to 'Not translatable', as having it set otherwise was causing issues.
3. We confirmed that if translation or review options are not visible, the user profile should be checked if it is set as a translator under Translation Management > Translators.

If this solution does not resolve your issue or seems outdated, we recommend opening a new support ticket. We also advise checking related known issues at https://wpml.org/known-issues/, verifying the version of the permanent fix, and confirming that you have installed the latest versions of themes and plugins. For further assistance, please visit our 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 13 replies, has 0 voices.

Last updated by Andreas W. 1 month ago.

Assisted by: Andreas W..

Author Posts
May 1, 2025 at 1:18 am #16985403

paulW-64

Background of the issue:
I have sent translations off to WPML using DeepL for translation and selected 'Publish and Mark for review'. We don't translate everything to manage costs, so we are selective about what is translated. I didn't select automatic publish and review by WPML AI for the same reason.

Symptoms:
After clicking the 'Review Translations' button link shown on the Translate Management Dashboard, I'm redirected to the Translations page and the table shows 'No Data'.

Questions:
Why are the translation jobs stuck in 'Pending for review' status?
Why does the Translations page show 'No Data' after clicking 'Review Translations'?

May 3, 2025 at 3:37 am #16991336

Andreas W.
WPML Supporter since 12/2018

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

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

Hello,

It seems the minimum requirements on the server are not met:
https://wpml.org/en/home/minimum-requirements/

Could you please increase the WordPress memory limit (WP Memory Limit) to at least 256 MB? WPML requires at least 128 MB.
Your current values ​​are:

PHP Memory Limit 512 MB
WP Memory Limit 128 MB

To do this, you need to connect to your website's server and open the wp-config.php file in a text editor. The file is located in the WordPress root directory.

Add this code to the wp-config.php file to increase WordPress's memory:

define ('WP_MEMORY_LIMIT', '256M');

Add this just before this comment:

// That's all, stop editing! Happy blogging.

The current values ​​can be viewed under WPML > Support > WordPress.

These settings can be restricted directly by your hosting provider. Therefore, I recommend contacting them and asking them to change them directly if the changes are not applied immediately.

If this will not solve the issue, please take a look at WPML > Support > ATE Error Log and send me a screenshot of the latest entries.

Also, please revise WPML > Support > Installer Support and click "Check now". Do you see any connectivity or site key issues indicated in the results?

Finally, it also would be helpful if you could send me a screenshot of the Automatic Translation Editor ID used on your site, which can be found at WPML > Support > Troubleshooting inside the top section of the page.

Best regards,
Andreas

May 5, 2025 at 1:26 am #16994082

paulW-64

Hi Andreas,

I have made the necessary adjustment for memory as requested; you can see from the screenshots included.

I have also provided the screenshot from the Installer Support showing that all is connected as expected.

And finally, I have included the screenshot from the Troubleshooting section.

However, the issue persists.

Please also note that from a security standpoint, we have denied access to all REST APIs
I can allow REST API access, but it would be handy to know which routes are used, can you provide them?

Thanks

wpml-troubleshooting-automatic-translation-id.png
wpml-wordpress-details.png
wpml-installer-version-id.png
May 7, 2025 at 12:03 am #17003931

Andreas W.
WPML Supporter since 12/2018

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

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

In this case, the problem may be caused by the disabled REST API, which is required by WPML.

Source:
https://wpml.org/documentation/support/rest-api-dependencies/

Please test enabling the REST API temporarily and creating a new job.

May 7, 2025 at 5:59 am #17004241

paulW-64

Please note that the restriction I have in place is on the server itself.

And the setup in our office allows me to view the REST API as you can see from the attached screenshot showing the base endpoint - hidden link

However, when using Postman and append the URL to include /wpml as per the document which you provided as per this URL - hidden link

Which based upon the other screenshot, I should be able to fetch.

I get "No route was found matching the URL and request method." as you can see from the included screenshot.

I remove the rule from the server and fetch the base of the REST API /wp-json/

I can see from here the endpoints as per the documentation.

I think the documentation should be updated to show it like
Example:

hidden link

And while after removing the restriction on the server, the support page shows no problem with the REST API as per the screenshot included.

Following your instructions, I sent another job for automatic translation as I have previously as per the screenshot included. However, the issue persists and upon clicking the button to "Review Translations", the screen loads with no data listed.

I look forward to your assistance.

WAInvestments-NewTranslationJob.png
WAInvestments-RESTAPI-AfterServerRuleRemoved.png
WAInvestments-RESTAPI-BaseEndpointPostman.png
WAInvestments-RESTAPI-WPMLEndpointPostman.png
May 7, 2025 at 3:09 pm #17007422

Andreas W.
WPML Supporter since 12/2018

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

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

Hello,

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

You can find the required fields below the comments 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 your website and database before granting us access.
If you can't see the "wp-admin / FTP" fields, your post and website credentials will be set to "PUBLIC." DO NOT publish the data unless you see the required wp-admin / FTP fields.

The private reply form looks like this:
hidden link

Click "I still need assistance" the next time you reply.

Video:
hidden link

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

Best regards,
Andreas

May 8, 2025 at 2:06 pm #17012484

Andreas W.
WPML Supporter since 12/2018

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

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

In the meantime:

You can access the reviews from the right sidebar of the WordPress Editor when editing the original posts or pages.

Example:
hidden link

Click the "Eye" symbol.

---

About the translation queue:

I will need to take a local copy of your site to investigate further the reason for hobs not showing up at WPML > Translations.

May 8, 2025 at 5:35 pm #17013231

Andreas W.
WPML Supporter since 12/2018

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

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

It looks like the capability "wpml_translate" is missing inside the WP User Roles.

I can try to fix this using a custom snippet, but sadly the FTP access I not working and I get a 403 Unauthorized error when trying to use a File Manager Plugin.

Note, that issues like this arise if manual edits have been made to the database or when using plugins like "User Role Editor".

May 9, 2025 at 5:33 am #17014443

paulW-64

Hi Andreas,

Strange, as I have received two emails stating that plugins were activated.

I test the SFTP connection and it appears fine for the details I provided and I have saved.

I did notice that my user profile and another with Admin roles where not showing all options.

I have had to restore the website to the point I saved prior to you investigating this issue, as it broke the Administration view in the backend.

Just note that while the link you provided does in fact show the icon with a link, this requires every item to manually reviewed.

After the restore process, I disabled the User Role Editor. Then visited the page with the same result.

I went onto the WP Engine Logs page and found the below error logged. Looks like it is an issue with querying the data.

I included a screenshot of the DB Schema, there are only 3 tables which use a slightly different collation.

utf8mb3_general_ci (3 tables use this)
utf8mb4_unicode_520_ci (all others appear to use this)

From what I see in the error log, I can't see any of the 3 tables referenced. However, the log is cut off short.

Perhaps the issue is with the Yoast tables.

I look forward to hearing back from you.

Thanks

{
"installName": "investmentpd",
"environment": "PROD",
"type": "error",
"date": "2025-05-09T05:21:42.692Z",
"severity": null,
"client": null,
"message": "WordPress database error Illegal mix of collations for operation 'UNION' for query ( #012#011#011#011SELECT#012#011#011#011translation_status.rid AS id, 'post' AS type, translation_status.tp_id AS tp_id, batches.id AS local_batch_id, batches.tp_id AS tp_batch_id, batches.batch_name, translation_status.status AS status, original_translations.element_id AS original_element_id, translations.source_language_code AS source_language, translations.language_code AS target_language, translations.trid, translations.element_type, translations.element_id, translation_status.translation_service AS translation_service, translation_status.timestamp AS sent_date, translate_job.deadline_date AS deadline_date, translate_job.completed_date AS completed_date, posts.post_title AS title, source_languages.english_name AS source_language_name, target_languages.english_name AS target_language_name, translate_job.translator_id AS translator_id, translate_job.job_id AS translate_job_id, translation_status.tp_revision AS revision, translation_status.ts_status AS ts_status, translation_status.needs_update AS needs_update, translate_job.editor AS editor, (#012#011#011#011#011SELECT COUNT(job_id)#012#011#011#011#011FROM wp_icl_translate_job as copmpleted_translation_job#012#011#011#011#011WHERE copmpleted_translation_job.rid = translation_status.rid AND copmpleted_translation_job.translated = 1#012#011#011) > 0 AS has_completed_translation, translate_job.editor_job_id AS editor_job_id, translate_job.automatic AS automatic, translate_job.title AS job_title, translation_status.review_status AS review_status#012#011#011#011FROM wp_icl_translation_status translation_status#012#011#011INNER JOIN wp_icl_translations translations#012#011#011#011#011ON translations.translation_id = translation_status.translation_id INNER JOIN wp_icl_translations original_translations#012#011#011#011#011ON original_translations.trid = translations.trid AND original_translations.language_code = translations.source_language_code INNER JOIN (#012#011#011#011SELECT *#012 FROM wp_icl_translate_job as translate_job#012 WHERE job_id = (#012#011#011#011#011SELECT MAX(job_id) AS job_id#012#011#011#011#011FROM wp_icl_translate_job as sub_translate_job#012#011#011#011#011WHERE sub_translate_job.rid = translate_job.rid#012#011#011#011)#012#011#011) AS translate_job ON translate_job.rid = translation_status.rid INNER JOIN wp_posts posts ON posts.ID = original_translations.element_id LEFT JOIN wp_icl_languages source_languages#012#011#011#011#011ON source_languages.code = translations.source_language_code LEFT JOIN wp_icl_languages target_languages#012#011#011#011#011ON target_languages.code = translations.language_code INNER JOIN wp_icl_translation_batches batches#012#011#011#011#011ON batches.id = translation_status.batch_id WHERE original_translations.element_type LIKE 'post%' AND translation_status.status != 0 AND translation_status.status != '42' AND (#012#011#011#011#011(translate_job.translator_id = 4 OR translate_job.translator_id = 0 OR translate_job.translator_id IS NULL) #012#011#011#011#011OR (automatic = 1 OR review_status = 'NEEDS_REVIEW') #012#011#011#011) AND translation_status.translation_service = \"local\" AND ( automatic = 0 OR review_status = 'NEEDS_REVIEW' ) AND ( ( translations.source_language_code = \"en\" AND translations.language_code IN ('en') ) ) ) UNION ( #012#011#011#011SELECT#012#011#011#011translation_status.rid AS id, 'package' AS type, translation_status.tp_id AS tp_id, batches.id AS local_batch_id, batches.tp_id AS tp_batch_id, batches.batch_name, translation_status.status AS status, original_translations.element_id AS original_element_id, translations.source_language_code AS source_language, translations.language_code AS target_language, translations.trid, translations.element_type, translations.element_id, translation_status.translation_service AS translation_service, translation_status.timestamp AS sent_date, translate_job.deadline_date AS deadline_date, translate_job.completed_date AS completed_date, string_packages.title AS title, source_languages.english_name AS source_language_name, target_languages.english_name AS target_language_name, translate_job.translator_id AS translator_id, translate_job.job_id AS translate_job_id, translation_status.tp_revision AS revision, translation_status.ts_status AS ts_status, translation_status.needs_update AS needs_update, translate_job.editor AS editor, (#012#011#011#011#011SELECT COUNT(job_id)#012#011#011#011#011FROM wp_icl_translate_job as copmpleted_translation_job#012#011#011#011#011WHERE copmpleted_translation_job.rid = translation_status.rid AND copmpleted_translation_job.translated = 1#012#011#011) > 0 AS has_completed_translation, translate_job.editor_job_id AS editor_job_id, translate_job.automatic AS automatic, translate_job.title AS job_title, translation_status.review_status AS review_status#012#011#011#011FROM wp_icl_translation_status translation_status#012#011#011INNER JOIN wp_icl_translations translations#012#011#011#011#011ON translations.translation_id = translation_status.translation_id INNER JOIN wp_icl_translations original_translations#012#011#011#011#011ON original_translations.trid = translations.trid AND original_translations.language_code = translations.source_language_code INNER JOIN (#012#011#011#011SELECT *#012 FROM wp_icl_translate_job as translate_job#012 WHERE job_id = (#012#011#011#011#011SELECT MAX(job_id) AS job_id#012#011#011#011#011FROM wp_icl_translate_job as sub_translate_job#012#011#011#011#011WHERE sub_translate_job.rid = translate_job.rid#012#011#011#011)#012#011#011) AS translate_job ON translate_job.rid = translation_status.rid INNER JOIN wp_icl_string_packages string_packages #012#011#011#011ON string_packages.ID = original_translations.element_id LEFT JOIN wp_icl_languages source_languages#012#011#011#011#011ON source_languages.code = translations.source_language_code LEFT JOIN wp_icl_languages target_languages#012#011#011#011#011ON target_languages.code = translations.language_code INNER JOIN wp_icl_translation_batches batches#012#011#011#011#011ON batches.id = translation_status.batch_id WHERE original_translations.element_type LIKE 'package%' AND translation_status.status != 0 AND translation_status.status != '42' AND (#012#011#011#011#011(translate_job.translator_id = 4 OR translate_job.translator_id = 0 OR translate_job.translator_id IS NULL) #012#011#011#011#011OR (automatic = 1 OR review_status = 'NEEDS_REVIEW') #012#011#011#011) AND translation_status.translation_service = \"local\" AND ( automatic = 0 OR review_status = 'NEEDS_REVIEW' ) AND ( ( translations.source_language_code = \"en\" AND translations.language_code IN ('en') ) ) ) UNION ( #012#011#011#011SELECT#012#011#011#011translation_status.rid AS id, 'st-batch_strings' AS type, translation_status.tp_id AS tp_id, batches.id AS local_batch_id, batches.tp_id AS tp_batch_id, batches.batch_name, translation_status.status AS status, original_translations.element_id AS original_element_id, translations.source_language_code AS source_language, translations.language_code AS target_language, translations.trid, translations.element_type, translations.element_id, translation_status.translation_service AS translation_service, translation_status.timestamp AS sent_date, translate_job.deadline_date AS deadline_date, translate_job.completed_date AS completed_date, translation_batches.batch_name AS title, source_languages.english_name AS source_language_name, target_languages.english_name AS target_language_name, translate_job.translator_id AS translator_id, translate_job.job_id AS translate_job_id, translation_status.tp_revision AS revision, translation_status.ts_status AS ts_status, translation_status.needs_update AS needs_update, translate_job.editor AS editor, (#012#011#011#011#011SELECT COUNT(job_id)#012#011#011#011#011FROM wp_icl_translate_job as copmpleted_translation_job#012#011#011#011#011WHERE copmpleted_translation_job.rid = translation_status.rid AND ",
"uuid": "7339e130-01ed-411d-8f32-cde01de7039e"
}

WA Investments-Prod-DBSchema.png
WA Investments-PluginActivation.png
WA Investments-BorkenAdmin.png
May 9, 2025 at 6:24 pm #17017668

Andreas W.
WPML Supporter since 12/2018

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

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

The error states:

WordPress database error Illegal mix of collations for operation

All tables and the same database should be set to "utf8mb4_unicode_520_ci".

You will also need to make sure that this value is set on specific columns of each table.

Tools like phpMyAdmin have a special option on the "Operations" tab, which will adjust the value for table structures and table entries with one single click.

In doubt, please consult your hosting support.

If you would like me to take a look at the database, please do not hesitate to ask but make sure to take a backup of your database first.

---

About the user roles and capabilities:

It might be advisable to reset "User Role Editor" and remove this plugin, unless it is essential for the website to operate. Further, it might be that after that the user roles in WordPress will have to get recreated manually.

May 12, 2025 at 12:14 am #17020783

paulW-64

Hi,

I have fixed this WP DB error, it was the post_title column in the post table. The error previously shared no longer appears in the error logs.

Please note that this has not resolved the issue still.

Plus, I'm currently logged in as administrator and the "User Role Editor" plugin is deactivated.

I enabled "Query Monitor" plugin and noticed the below error.

Deprecated
Automatic conversion of false to array is deprecated
wp-content/plugins/wpml-sticky-links/classes/class-wpml-sticky-links.php:19
WPML_Sticky_Links->__construct()

wp-content/plugins/wpml-sticky-links/plugin.php:35

I never saw any issues or errors logged in the browser console.

There is this an ACF warning message which keeps appearing, but I have already set our preference.

I thought I'd mention it, but it has never been an issue in the past.

I hope that you can assist in finding where this issue.

WAInvestments-Notice-ACF.png
WAInvestments-Notice-ACF-Settings.png
May 13, 2025 at 4:40 pm #17029184

Andreas W.
WPML Supporter since 12/2018

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

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

Note, that "Field Groups (acf-field-group)" at WPML > Settings > Post Types Translations should be set to "Not translatable".

It was currently set to "Translatable use translation if available or fallback to default language" and I changed it to "Not translatable".

If I now go to WPML > Translations I can see the available reviews.

reviews.jpg
May 14, 2025 at 1:24 am #17029984

paulW-64

Hello,

I see that the error message is gone, however when I visit the below URL, it still is not showing the items for review for my profile.
/wp-admin/admin.php?page=tm%2Fmenu%2Ftranslations-queue.php

When I visit the below URL it shows information, similar to your screenshot but no "Actions" are shown.
/wp-admin/admin.php?page=tm%2Fmenu%2Fmain.php&sm=jobs

Please note that when I switch to another profile with Administrator user role, then they do appear.

Based on this, I then looked under Translation Management > Translators, it didn't like my profile setup as a "Translator". I updated this and it appears correct.

However, I'm curious as to why it was working previously and then suddenly it was an issue.

Thoughts?

May 14, 2025 at 2:24 am #17030005

Andreas W.
WPML Supporter since 12/2018

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

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

It seems the issue was that ACF Field Groups were set to "Translablable", but they should not be translated. It might be that a translation job for one of the ACF groups caused an issue.

If you can not see any translation or review options, then the user is not an admin or is not assigned as a translator in Translation Management > Translators.

In case further assistance is needed, please let me know.