Skip Navigation

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

Problem:
The client needed to delete French and German languages from their site using MySQL because the backend option was not functioning properly. They had already started removing language entries from specific WPML tables but were unsure where else to look for remaining translated content.
Solution:
We advised that directly modifying the database to remove languages can be complex and risky, especially since WPML integrates deeply with WordPress's default tables. Instead, we suggested:
1. Re-enabling the languages in WPML.
2. Using the WordPress UI to filter and delete the content for each language.
3. Cleaning up any remaining entries from WPML's string tables using a query like:

DELETE FROM wp_icl_string_translations WHERE language='de';

4. Checking additional tables like

wp_postmeta

and

wp_termmeta

for any leftover data.
If these steps do not resolve the issue, we recommended trying to clean up the site in a minimal setup or allowing us to assist further by providing temporary admin and FTP access.

Please note that this solution might be outdated or not applicable to your specific case. We highly recommend 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. If the problem persists, 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 7 replies, has 2 voices.

Last updated by Andreas W. 6 months, 2 weeks ago.

Assisted by: Andreas W..

Author Posts
May 10, 2024 at 3:52 pm #15615756

tannerT

Hello, I am looking to simply delete French (Grance) and German off my site entirely, the backend option does not work at all, loads for a few seconds, and stops. So this will need to be done via MySQL. I need the queries

Please do not stall with an intro or questions. The context is clear.

I need the step by step queries to completely remove a language in MySQL PHPMYAdmin

Please not we also had Media Translation in place.

May 10, 2024 at 4:20 pm #15615813

Andreas W.
Supporter

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

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

Hello,

It would be kind of complex to handle this with MySQL.

I suggest you first try to clean up any additional custom post types manually in each language and then try to run the dialog again.

It should work as expected once there are only the WordPress default types like posts, pages, media, products and their taxonomies left.

If this will not solve the issue, I can offer to take a look as admin.

Best regards
Andreas

May 10, 2024 at 4:29 pm #15615819

tannerT

Why would this be "kind of complex" to handle with MySQL? I have already started with removing both language from eb21icl_strings, eb21icl_languages, and eb21icl_translations

Although I am not shocked that you successfully did NOT answer my question but instead stalled as I blatantly asked not to do,

I would request again that your next reply has an answer to my question.

Here it is again for your convenience:

HOW DO YOU DELETE A LANGUAGE USING MYSQL ONLY

May 10, 2024 at 6:37 pm #15616197

Andreas W.
Supporter

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

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

If you disable WPML you will see that WPML by default will not remove any content and assign it to the site's default language.

This was also the default behavior in the past and this is why you find now this dialog on your site.

The reason why I said it is too complex to provide a query, is that all your content, incl. the translations is saved on the default WordPress tables.

Each content has an ID in WordPress, and then the WPML language tables use those IDs and add language information from our custom tables while the actual WordPress tables do not hold any language information.

It is true that you can clean up strings from WPML's string tables using queries, but this only affects WPML > String Translation.

An example this would delete all German String Translations:

DELETE FROM wp_icl_string_translations WHERE language='de';

When it comes to posts, pages, attachments, templates, or taxonomies the problem is that if you remove the language information from WPML's translation tables you delete the language information that connects your contents which reside on the WordPress tables, and this way you will no longer be able to filter any posts, pages, templates, etc. by language.

This is why we have programmed the dialog for this purpose, which sadly is having issues on your site. In this case, usually, I would suggest taking a copy of the site, setting it into a minimal setup, and testing the dialog again, but it will be kind of time-consuming to identify what is causing the issue.

As I understand that this issue is causing you an inconvenience and you might not want to clean up the content manually using the user interface of WordPress, I can offer to assist you on this matter, but take note that our support is not obligated to offer such service and I offer this on a voluntary base.

Removing the content manually might be the fastest solution in this case and solvable in less than 10 minutes.

I would like to offer to have a closer look at the problem and request temporary access (wp-admin and FTP) to the website to investigate this issue further.

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

IMPORTANT
Please be sure to make a backup copy of the website and database before allowing us access.
If you can't see the wp-admin / FTP fields, your post and website credentials are set as PUBLIC. DO NOT publish the data unless you see the required wp-admin / FTP fields.

The private response form looks like this:
hidden link

Next time you reply, click "I still need assistance."

Video:
hidden link

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

May 10, 2024 at 6:45 pm #15616200

tannerT

Just posting here that it is not as drastic as you make things sound. You can simply search for a common translated word in german that is unique from other languages in posts (better to use a single character for more coverage) and then continue to manually remove in MySQL

Too bad I had to provide the solution for the forum myself,

May 10, 2024 at 7:17 pm #15616240

Andreas W.
Supporter

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

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

This sounds like a very time-consuming solution.

You could do this easily using the WordPress UI if you have German as a language inside the WPML language settings. Go to your pages list, filter for German, change the display amount setting of WordPress in case the view is limited to only 20 items (top right corner of the screen), then mark everything, delete it, and clean the trash bin.

May 13, 2024 at 1:11 pm #15621095

tannerT

I actually removed with MySQL. So to seek the remaining locations where there may be translated content (excluding that of ICL), I have this list: posts, pages, media, products and their taxonomies left.

Can you please let me know where else I should look?

May 14, 2024 at 12:13 pm #15625231

Andreas W.
Supporter

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

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

Usually also on wp_postmeta and maybe wp_termmeta.

I would like to recommend again, that you enable the German and your custom language in WPML again and then remove the contents using the WordPress user interface. I can not recommend taking direct action on the default WordPress tables of your database.

May 21, 2024 at 1:21 pm #15650870

tannerT

ChatGPT