Skip to content Skip to sidebar

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.

Sun Mon Tue Wed Thu Fri Sat
- 8:00 – 13:00 9:00 – 13:00 9:00 – 13:00 8:00 – 12:00 8:00 – 12:00 -
- 14:00 – 17:00 14:00 – 18:00 14:00 – 18:00 13:00 – 17:00 13:00 – 17:00 -

Supporter timezone: Europe/Zagreb (GMT+01:00)

Tagged: 

This topic contains 24 replies, has 1 voice.

Last updated by Bruno Kos 1 day, 14 hours ago.

Assisted by: Bruno Kos.

Author Posts
January 16, 2026 at 2:35 pm #17737429

nicoT-5

Hi,

no I don't think this can be it for simple reasons:

1. The migration from Divi to Elementor is not currently happening but was completed in the end of 2022.
2. The Bulgarian translations were only added in 2025.

I'm sure that switching the old post to Elementor is solving the issue, as I already tested it and recorded it in Video V that I had shared with you: hidden link

However, the issue with that is, that it would cost us several thousand dollars to translate content again, that was already translated. Avoiding that is what I would like to find a solution for.

January 17, 2026 at 3:48 pm #17739230

nicoT-5

If it isn't possible to resolve this technically, would there be a way to aquire the necessary translation credits at cost, considering we already paid for the initial translation?

My estimate would be that we need to translate 400*700*15 = 4.200.000 words. This is estimated to be roughly 30 Mio Characters. Deepl API would cost 600€ for that, but with WPML it would cost us 8,4 Mio Credits which is priced quite a bit higher.

If it can't be resolved technically, I'd appreciate if we could find an alternative solution.

January 19, 2026 at 1:24 pm #17742741

Bruno Kos
WPML Supporter since 12/2018

Languages: English (English ) German (Deutsch ) French (Français )

Timezone: Europe/Zagreb (GMT+01:00)

Following the review from our Tier 2 team, I’d like to confirm our understanding of the situation and make sure we are aligned.

If we understand correctly, the goal is not to prevent translations from consistently being marked as “needs update,” but rather to avoid having content retranslated even when the underlying logic and structure of the post have changed significantly.

For example, the post we reviewed was using the old (pre-Gutenberg) editor and was opening in the native editor. In this scenario, the original and translated posts appear to have simply been linked together, meaning they were never stored in the WPML String Translation memory, the Advanced Translation Editor memory, or the WPML translation job records.

Given this, to avoid being charged for automatic translation, the recommended approach would be to use the “minor edit” checkbox, then edit the translation directly using the native editor, and continue managing updates this way moving forward.

Could you please confirm whether this matches your understanding and expectations, or let us know if there is anything else we should be aware of or investigate further on our end?

do not update translation.jpg
January 19, 2026 at 2:07 pm #17742887

nicoT-5

Well, yes and no.

The situation is:
We frequently need to update such older content. Marking it as 'minor update' does not resolve the issue for us, since updating the links and anchor texts is key for us.

We are fine keeping the older posts in the native Gutenberg editor. However, there we have the mentioned issues.

We would also be fine updating the older posts to new Elementor editor. However, there we then have the re-translation cost issue.

Ideal end result for us: We can update old posts to Elementor without incurring thousands of dollars of additional costs.

Alternative acceptable end result for us: We can update old posts within the native Gutenberg editor without the issues raised in this ticket.

Does that make our intent more clear? If not please let me know and I'll try to rephrase what we are looking for.

January 19, 2026 at 4:41 pm #17743577

Bruno Kos
WPML Supporter since 12/2018

Languages: English (English ) German (Deutsch ) French (Français )

Timezone: Europe/Zagreb (GMT+01:00)

Is your expectation that WPML should be able to treat existing translations of legacy content as authoritative when:

- Migrating posts from Gutenberg to Elementor, or
- Making structural edits (such as links and anchor text) within Gutenberg

even if this means bypassing automatic translation workflows and associated billing?

Clarifying this will help us determine whether a supported solution exists or whether this is a current product limitation.

In other words, can you confirm whether avoiding automatic retranslation costs when migrating legacy content to Elementor is a requirement?

January 19, 2026 at 4:56 pm #17743597

nicoT-5

1) My core expectation is that I can make strucutral edits within Gutenberg and automatic translation with WPML works as expected, meaning:

It recognizes when a link and/or text element was changed and flags it as 'update needed' and then charges us only for the translation of that changed piece.

I do not understand what you mean with bypassing automatic translation as this is not what we've done nor what we intend. We used the automatic translation so far and also want to use it when updating content.

2) My nice-to-have expectation would be that I can migrate posts from Gutenberg to Elementor and not lose the 'cached translation'. If you can provide 1) then I understand if you don't want to support 2). So I would be fine with 1) even if I'd prefer 2).

3) If you can't provide 1) for technical reasons, then my proposal was 2) and have a support of providing the re-translation at cost rather than with your mark-up.

January 19, 2026 at 5:25 pm #17743708

Bruno Kos
WPML Supporter since 12/2018

Languages: English (English ) German (Deutsch ) French (Français )

Timezone: Europe/Zagreb (GMT+01:00)

Is it correct that migrating posts from Gutenberg to Elementor without triggering a full retranslation is a nice-to-have for you, but not a strict requirement, as long as updating links, anchor texts, or other structural elements within Gutenberg results in only those changes being translated and charged?

And if translating only the changed parts within Gutenberg is not technically possible for legacy content, can you confirm that your fallback expectation would be to migrate to Elementor, but with some form of cost mitigation for the required full retranslation?

January 20, 2026 at 6:58 am #17744695

nicoT-5

Yes, that is correct.

January 20, 2026 at 1:31 pm #17746636

Bruno Kos
WPML Supporter since 12/2018

Languages: English (English ) German (Deutsch ) French (Français )

Timezone: Europe/Zagreb (GMT+01:00)

I’ll need to consult with our development team to determine whether this is feasible and whether the request can be supported. I’ll follow up once I have more information.

January 26, 2026 at 7:34 am #17761053

Bruno Kos
WPML Supporter since 12/2018

Languages: English (English ) German (Deutsch ) French (Français )

Timezone: Europe/Zagreb (GMT+01:00)

Hi,

We reviewed all the provided videos in detail and performed an in-depth technical analysis (including local testing with your site data). Below is a clear summary of our findings and conclusions.

General observations

* The issues you are experiencing are not related to a single post, language, or editor.
* The behavior depends primarily on how translations were originally created (WPML native editor vs Advanced Translation Editor), not on whether the post uses Gutenberg or Elementor.
* Elementor-based posts behave consistently and as expected.
* Gutenberg-based posts show inconsistent behavior in some scenarios, which we consider a real issue on our side.

1. Inconsistent “Needs update” vs “Completed” statuses

* After editing certain Gutenberg posts, only some languages are marked as “Needs update” while others remain “Completed”.
* This happens even when the same type of change is made (for example, modifying or adding a link).
* All translations should be marked as “Needs update” in these cases, but this does not always happen.
* This behavior is incorrect and should not occur.
* We were able to reproduce this issue internally with other posts, although it is no longer reproducible on the original post because it was already converted to Elementor in the provided package.

As part of our investigation, we identified a workaround at code level that addresses this issue. The problem is caused by an empty value being treated as valid content when detecting changes.

This is within plugins\sitepress-multilingual-cms\addons\wpml-page-builders\classes\Shared\AutoUpdate\Hooks.php, line 81:

Current behavior (problematic):

return Maybe::of( $post->ID )
    ->map( [ self::class, 'getPackages' ] )
    ->map( Fns::map( $joinPackageStringHashes ) )
    ->filter()                                   // Empty value is treated as valid
    ->map( Lst::join( self::HASH_SEP ) )
    ->getOrElse( $content );

Proposed workaround, so the above should be replaced with:

return Maybe::of( $post->ID )
    ->map( [ self::class, 'getPackages' ] )
    ->map( Fns::map( $joinPackageStringHashes ) )
    ->map( Lst::join( self::HASH_SEP ) )
    ->filter()                                   // Filter after joining
    ->getOrElse( $content );

By applying the filter after joining the package strings, empty results are correctly ignored and WPML can properly detect content changes. This workaround is currently under verification by our Compatibility team.

If you would like, we can guide you through testing this workaround on a staging or testing server.

2. Why link-only changes sometimes trigger high credit usage

* Credit usage is calculated based on a comparison between:

* The current English content
* The last completed translation created using the Advanced Translation Editor (ATE)
* If a language has never been translated using ATE (only via the WPML native editor), WPML does not store the original content for comparison.
* In such cases, when the content is sent to ATE, WPML treats it as if it were never translated before and charges for the full word count.
* This explains why adding or modifying a simple link can sometimes result in a large estimated and charged word count for certain languages.

3. Why word counts differ per language

Different word count estimations are expected and correct, based on translation history:

* Languages showing 0 words

* These already have up-to-date ATE translations.
* No content difference is detected, so no credits are charged.

* Languages showing a small number of words (for example, 6 words)

* These have existing ATE translations, but the stored version is slightly outdated.
* Only the difference is charged, not the full content.

* Languages showing a large number of words (for example, 132 words)

* These were originally translated using the WPML native editor.
* No ATE history exists, so WPML must translate the entire content from scratch.

4. Important clarification

* The issue is not related to Gutenberg vs Elementor.
* What matters is whether a translation was created using:

* Advanced Translation Editor (ATE), or
* WPML native editor
* If a translation was created using the native editor, WPML treats it as “never translated” when sending it to ATE later.

5. Why Elementor appears to “fix” the issue

* Elementor itself is not the fix.
* Converting a post to Elementor often leads users to resend translations via ATE, which creates a proper ATE translation history.
* Once a language has an ATE translation, future updates are charged only for differences and behave correctly.
* However, the initial conversion and resend can trigger a high credit estimate, which is understandably confusing and frustrating.

6. Options going forward for older posts

Unfortunately, for posts that were originally translated using the WPML native editor, there is no way to retroactively link them to ATE without cost.

The available options are:

* Continue updating translations directly in the WPML native editor (recommended for existing content).
* Convert the post and resend translations to ATE, accepting that the first resend will be treated as a full translation.
* Avoid resending Gutenberg posts with mixed translation history to ATE until the identified issue is fully resolved.

Summary

* The mixed “Needs update” / “Completed” status after Gutenberg edits is a real issue on our side and is being investigated (you can try the workaround above)
* Credit usage is technically correct but confusing when languages have mixed translation history.
* Elementor posts behave correctly because they consistently use ATE.

Let me know if you have any questions related to the above.