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.
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.
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.
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.
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,
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.
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?
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.