Index: htdocs/content/plugins/polylang/settings/table-string.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- htdocs/content/plugins/polylang/settings/table-string.php	(date 1587646600516)
+++ htdocs/content/plugins/polylang/settings/table-string.php	(date 1587646600516)
@@ -333,62 +333,76 @@
 		echo '</div>';
 	}
 
-	/**
-	 * Saves the strings translations in DB
-	 * Optionaly clean the DB
-	 *
-	 * @since 1.9
-	 */
-	public function save_translations() {
-		check_admin_referer( 'string-translation', '_wpnonce_string-translation' );
+    /**
+     * Saves the strings translations in DB
+     * Optionaly clean the DB
+     *
+     * @since 1.9
+     */
+    public function save_translations() {
+        check_admin_referer( 'string-translation', '_wpnonce_string-translation' );
 
-		if ( ! empty( $_POST['submit'] ) ) {
-			foreach ( $this->languages as $language ) {
-				if ( empty( $_POST['translation'][ $language->slug ] ) ) { // In case the language filter is active ( thanks to John P. Bloch )
-					continue;
-				}
+        if ( ! empty( $_POST['submit'] ) ) {
+            $blogs_to_modify = array_column(get_sites(),'blog_id');
+            foreach( $blogs_to_modify as $blog_id ) {
+                switch_to_blog($blog_id);
+                foreach ($this->languages as &$language) {
+                    if (empty($_POST['translation'][$language->slug])) { // In case the language filter is active ( thanks to John P. Bloch )
+                        continue;
+                    }
 
-				$mo = new PLL_MO();
-				$mo->import_from_db( $language );
+                    $mo = new PLL_MO();
+                    $mo->import_from_db($language);
 
-				$translations = array_map( 'trim', wp_unslash( $_POST['translation'][ $language->slug ] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
-				foreach ( $translations as $key => $translation ) {
-					/**
-					 * Filter the string translation before it is saved in DB
-					 * Allows to sanitize strings registered with pll_register_string
-					 *
-					 * @since 1.6
-					 * @since 2.7 The translation passed to the filter is unslashed.
-					 *
-					 * @param string $translation The string translation.
-					 * @param string $name        The name as defined in pll_register_string.
-					 * @param string $context     The context as defined in pll_register_string.
-					 */
-					$translation = apply_filters( 'pll_sanitize_string_translation', $translation, $this->strings[ $key ]['name'], $this->strings[ $key ]['context'] );
-					$mo->add_entry( $mo->make_entry( $this->strings[ $key ]['string'], $translation ) );
-				}
+                    $translations = array_map(
+                        'trim',
+                        wp_unslash($_POST['translation'][$language->slug])
+                    ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
+                    foreach ($translations as $key => $translation) {
+                        /**
+                         * Filter the string translation before it is saved in DB
+                         * Allows to sanitize strings registered with pll_register_string
+                         *
+                         * @param string $translation The string translation.
+                         * @param string $name The name as defined in pll_register_string.
+                         * @param string $context The context as defined in pll_register_string.
+                         * @since 2.7 The translation passed to the filter is unslashed.
+                         *
+                         * @since 1.6
+                         */
+                        $translation = apply_filters(
+                            'pll_sanitize_string_translation',
+                            $translation,
+                            $this->strings[$key]['name'],
+                            $this->strings[$key]['context']
+                        );
+                        $mo->add_entry($mo->make_entry($this->strings[$key]['string'], $translation));
+                    }
 
-				// Clean database ( removes all strings which were registered some day but are no more )
-				if ( ! empty( $_POST['clean'] ) ) {
-					$new_mo = new PLL_MO();
+                    // Clean database ( removes all strings which were registered some day but are no more )
+                    if (!empty($_POST['clean'])) {
+                        $new_mo = new PLL_MO();
 
-					foreach ( $this->strings as $string ) {
-						$new_mo->add_entry( $mo->make_entry( $string['string'], $mo->translate( $string['string'] ) ) );
-					}
-				}
+                        foreach ($this->strings as $string) {
+                            $new_mo->add_entry($mo->make_entry($string['string'], $mo->translate($string['string'])));
+                        }
+                    }
 
-				isset( $new_mo ) ? $new_mo->export_to_db( $language ) : $mo->export_to_db( $language );
-			}
+                    $language = isset($new_mo) ? $new_mo->export_to_db($language) : $mo->export_to_db($language);
+                }
+                set_transient('pll_languages_list', array_map('get_object_vars', $this->languages));
+                restore_current_blog();
+            }
 
-			add_settings_error( 'general', 'pll_strings_translations_updated', __( 'Translations updated.', 'polylang' ), 'updated' );
+            add_settings_error( 'general', 'pll_strings_translations_updated', __( 'Translations updated.', 'polylang' ), 'updated' );
 
-			/**
-			 * Fires after the strings translations are saved in DB
-			 *
-			 * @since 1.2
-			 */
-			do_action( 'pll_save_strings_translations' );
-		}
+            /**
+             * Fires after the strings translations are saved in DB
+             *
+             * @since 1.2
+             */
+            do_action( 'pll_save_strings_translations' );
+        }
 
 		// Unregisters strings registered through WPML API
 		if ( $this->current_action() === 'delete' && ! empty( $_POST['strings'] ) && function_exists( 'icl_unregister_string' ) ) {
