'assets/block/booking-form-block.js', 'abientot-admin' => 'assets/admin/admin.js', 'abientot-frontend' => 'assets/frontend/booking-form.js', ); $relative = apply_filters( 'load_script_textdomain_relative_path', $paths[$handle], ABIENTOT_PLUGIN_URL . $paths[$handle] ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Core filter from load_script_textdomain(), applied to match core's translation lookup. $community = false; self::$reading_script = true; try { if ( is_string( $relative ) && '' !== $relative ) { $community = load_script_translations( WP_LANG_DIR . '/plugins/abientot-' . $catalog . '-' . md5( $relative ) . '.json', $handle, $domain ); } $bundled = ( '' !== self::bundled_path() ? load_script_translations( self::bundled_path() . '/abientot-' . $catalog . '-' . $handle . '.json', $handle, $domain ) : false ); } finally { self::$reading_script = false; } $base = self::messages( $bundled, $domain ); $preferred = self::messages( $community, $domain ); if ( !$base && !$preferred ) { return false; } $messages = array_replace( $base, $preferred ); $metadata = array_replace( $base[''] ?? array(), $preferred[''] ?? array() ); $metadata['domain'] = $domain; $metadata['lang'] = $metadata['lang'] ?? $catalog; $messages[''] = $metadata; return wp_json_encode( array( 'domain' => $domain, 'locale_data' => array( 'messages' => $messages, ), ) ); } /** Keep context keys and complete plural arrays; ignore untranslated entries. */ private static function messages( $json, string $domain ) : array { if ( !is_string( $json ) ) { return array(); } $data = json_decode( $json, true ); $map = $data['locale_data']['messages'] ?? $data['locale_data'][$domain] ?? null; if ( !is_array( $map ) || !isset( $map[''] ) || !is_array( $map[''] ) ) { return array(); } foreach ( array('lang', 'plural-forms', 'plural_forms') as $key ) { if ( isset( $map[''][$key] ) && !is_string( $map[''][$key] ) ) { return array(); } } $valid = array(); foreach ( $map as $key => $values ) { if ( '' === $key ) { continue; } if ( !is_array( $values ) || !$values || array_keys( $values ) !== range( 0, count( $values ) - 1 ) ) { continue; } $complete = true; foreach ( $values as $value ) { if ( !is_string( $value ) || '' === $value ) { $complete = false; break; } } if ( $complete ) { $valid[$key] = $values; } } if ( !$valid ) { return array(); } $valid[''] = $map['']; return $valid; } }