| 1 | <?php |
|---|
| 2 | |
|---|
| 3 | if ( ! function_exists( 'wp_php_filters_for_js_l10n' ) ) : |
|---|
| 4 | function wp_php_filters_for_js_l10n( $json_translations, $file, $handle, $domain ) { |
|---|
| 5 | $translations = json_decode( $json_translations, true ); |
|---|
| 6 | |
|---|
| 7 | if ( is_array( $translations ) && isset( $translations['locale_data'], $translations['locale_data']['messages'] ) && is_array( $translations['locale_data']['messages'] ) ) { |
|---|
| 8 | foreach ( $translations['locale_data']['messages'] as $original_string => &$translated_strings ) { |
|---|
| 9 | if ( ! $original_string || ! is_array( $translated_strings ) ) { |
|---|
| 10 | continue; |
|---|
| 11 | } |
|---|
| 12 | |
|---|
| 13 | $context = ''; |
|---|
| 14 | |
|---|
| 15 | if ( strpos( $original_string, chr( 4 ) ) ) { |
|---|
| 16 | $with_context = explode( chr( 4 ), $original_string ); |
|---|
| 17 | $context = $with_context[0]; |
|---|
| 18 | $original_string = $with_context[1]; |
|---|
| 19 | } |
|---|
| 20 | |
|---|
| 21 | foreach ( $translated_strings as &$translated_string ) { |
|---|
| 22 | if ( $context ) { |
|---|
| 23 | $translated_string = apply_filters( 'gettext_with_context', $translated_string, $original_string, $context, $domain ); |
|---|
| 24 | } else { |
|---|
| 25 | $translated_string = apply_filters( 'gettext', $translated_string, $original_string, $domain ); |
|---|
| 26 | } |
|---|
| 27 | } |
|---|
| 28 | } |
|---|
| 29 | } |
|---|
| 30 | |
|---|
| 31 | return wp_json_encode( $translations ); |
|---|
| 32 | } |
|---|
| 33 | add_filter( 'load_script_translation', 'wp_php_filters_for_js_l10n', 10, 4 ); |
|---|
| 34 | endif; |
|---|