Skip Navigation

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 8 replies, has 1 voice.

Last updated by richardT-43 2 days ago.

Assisted by: Bobby.

Author Posts
July 2, 2025 at 3:33 pm #17193354

richardT-43

Background of the issue:
I am trying to translate a website hosted on WordPress VIP using WPML and String Translation plugins. The Jetpack plugin is included by default in WordPress VIP, and according to WPML documentation, Jetpack translation is supported.

Symptoms:
When I go to String Translation, I do not see Jetpack's domain. The Contact Us page is mostly translated, except for the '(required)' tag and the text configured via Form attributes.

Questions:
Why is Jetpack's domain not appearing in String Translation?
How can I translate the '(required)' tag and text configured via Form attributes on the Contact Us page?

July 2, 2025 at 3:47 pm #17194115

Otto
WPML Supporter since 09/2015

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

Timezone: America/Argentina/Buenos_Aires (GMT-03:00)

Hello,

Thank you for contacting WPML support.

While you are waiting for one of my colleagues to take this ticket and work on it, let me provide you with the first debugging steps or if I can help with the issue quickly.

Please go to WPML > Theme and plugins localization and select Jetpack and click "Scan selected components for strings".

Best Regards,
Otto

July 2, 2025 at 4:56 pm #17194327

richardT-43

I went to WPML -> Theme and plugins localization. I do not see an entry for Jetpack. In the "Plugins" section I clicked on "All" and I see several "MU" options, including "MU :: jetpack.php". I selected it and clicked on "Scan selected components for strings". After a moment of scanning I got this message.

Scan successful: WPML found 0 strings.
The following files were processed:

wp-content/mu-plugins/jetpack.php

MU_Jetpack.jpg
July 2, 2025 at 7:45 pm #17194754

Bobby
WPML Supporter since 04/2015

Languages: English (English )

Timezone: America/Los_Angeles (GMT-07:00)

Hi there,

I just ran a test on a sandbox using the Jetpack plugin and was able to scan roughly 900+ strings.

Based on the MU next to your plugin I am assuming it's set to Must Use.

In this case please review the following documentation:
https://wpml.org/errata/must-use-plugin-not-available-for-string-scanning-in-theme-and-plugins-localization/

Let me know your results after trying to workaround, please.

July 2, 2025 at 9:05 pm #17194861

richardT-43

This worked in my Local Development Environment (LDE). I was able to see the additional plugins, added them, and find the strings. From there, I translated the strings using String Translation. I was able to test in my local that the translations were being done successfully.

However, in the actual site, after I deployed the changes, the form is still not translated. Tried to purge the cache of the Contact page. Also tried making a change in the page and re-translate it. Do I need to run the "Theme and plugins localization" scan in WP VIP as well?

TranslatedFormInMyLocalDevelopmentEnvironment.jpg
July 2, 2025 at 10:11 pm #17194984

Bobby
WPML Supporter since 04/2015

Languages: English (English )

Timezone: America/Los_Angeles (GMT-07:00)

Thank you for updating us, how are you moving your site from staging to live?

Are they separate instances or are you migrating the changes onto live?

July 3, 2025 at 8:40 pm #17199227

richardT-43

The LDE is in my local machine. I make code changes there.

I also use String Translation there because WP VIP environments are read-only, which mean String Translation cannot work there. So I make changes in my LDE and I push those changes via the repository to WP VIP.

Right now, there is no Staging environment.

I push code changes to the repo, which gets auto-deployed to WP VIP.

Content changes like adding/updating pages and configuring menus I do directly in WP VIP.

I do not push content changes from my LDE to WP VIP.

July 4, 2025 at 7:24 am #17200039

Bobby
WPML Supporter since 04/2015

Languages: English (English )

Timezone: America/Los_Angeles (GMT-07:00)

Thank you for sharing this information! I wasn’t aware of these restrictions with WP VIP Hosting. It looks like there's an active Errata—please review the following documentation and try the suggested workaround.

https://wpml.org/errata/wordpress-vip-hosting/

Let me know your results, please.

July 7, 2025 at 2:34 pm #17209308

richardT-43

That errata takes me to two workarounds:

1) Define OTGS_INSTALLER_SITE_KEY_WPML with the site key. I haven't needed to do this. I've defined a different site key for each domain (eg local, WP VIP) and so far there hasn't been an issue with this configuration.

2) This one takes me to WP VIP documentation, which I am already following. This one explains the process I explained before: make the changes in the LDE and push them to the repository.

July 7, 2025 at 4:41 pm #17210433

richardT-43

Got this working. You should really add a WP VIP specific section in your documentation or make it much more simple to find. I find WPML to be a great tool, but finding these workarounds took way longer than expected.

All I add to do was run the "Theme and plugins localization" tool in WP Admin in the WP VIP environment to add the translation strings.

The full process I had to follow was:

1) Follow the workaround at https://wpml.org/errata/must-use-plugin-not-available-for-string-scanning-in-theme-and-plugins-localization/

This ensures that all the MU plugins are properly available in "Theme and plugins localization".

2) Go to "Theme and plugins localization" in the LDE and scan "MU :: jetpack".

This ensures strings can be translated in the LDE.

3) Perform translations via "String Translation" in the LDE.

4) Push the translation changes to the repository.

This requires the steps in this link because WP VIP file system is read-only.
hidden link

5) In WP VIP, execute step 2.

Be aware that this is done in WP Admin for the WP VIP environment; not in the LDE.

This last step is very important because it ensures that the strings are visible by WPML running inside WP VIP.