[wp-trac] [WordPress Trac] #63906: Review and improve reliability of language pack upgrades

WordPress Trac noreply at wordpress.org
Mon Sep 1 13:06:24 UTC 2025


#63906: Review and improve reliability of language pack upgrades
-----------------------------+-----------------------------
 Reporter:  jsnajdr          |      Owner:  (none)
     Type:  defect (bug)     |     Status:  new
 Priority:  normal           |  Milestone:  Awaiting Review
Component:  Upgrade/Install  |    Version:  trunk
 Severity:  normal           |   Keywords:
  Focuses:  administration   |
-----------------------------+-----------------------------
 In a [https://github.com/woocommerce/woocommerce/issues/60438 WooCommerce
 GitHub issue] we were investigating user reports about missing
 translations after upgrading the WooCommerce plugin to a new version. And
 we tracked it down to unreliability of language pack upgrades for the
 plugin.

 When you upgrade WooCommerce from version 10.0.4 to 10.1.0, the new
 version 10.1.0 is not fully compatible with the language pack for 10.0.4.
 Some translations will be missing. Even if they are not new: for client-
 side JSON translation files, a translation can move from one JSON file to
 another, and then `load_script_textdomain` will fail to load the matching
 JSON file for a given JS script if the language pack is not up to date.

 A plugin upgrade (at least manual one in WP Admin) should trigger also
 language pack upgrade (it's the `LanguagePackUpgrader::async_upgrade`
 method hooked to `upgrader_process_complete`) but apparently failed
 language pack upgrade doesn't affect the result of the plugin upgrade.
 It's reported as success even if languages failed to update.

 We've seen cases where after a successful plugin upgrade the language pack
 is not updated at all (there are only old files) and the site is therefore
 in a broken state (wrong language in parts of frontend).

 We've also seen a case where `wp-content/languages/plugins/woocommerce`
 contained files from both old and new language packs. That doesn't break
 the site, but it's still something that shouldn't happen: the language
 pack upgrader is supposed to clear the destination directory before moving
 the new files there. This is another sign that something is unreliable.

 Looking at the code confirms that errors from `LanguagePackUpgrader` are
 generally ignored. Wherever we call the upgrader's `upgrade_bulk` method,
 we ignore the return value:
 - in `update-core.php` handling the `do-translation-upgrade` form action
 - in the `async_upgrade` method hooked to be done after a plugin upgrade
 - in the REST handler for `POST /wp/v2/plugins` after a plugin
 install/upgrade

 Compared to that, when calling `upgrade_bulk` on a `Plugin_Upgrader` or
 `Theme_Upgrader` the results are handled and reported.

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/63906>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list