PluginProbe
Translate and Go multilingual – Automatic AI translation – wpLingua / 1.0.5
Translate and Go multilingual – Automatic AI translation – wpLingua v1.0.5
2.16.7 2.16.6 2.16.5 2.16.4 2.16.3 2.16.2 2.16.1 2.16.0 2.15.2 2.15.1 2.15.0 2.14.3 2.14.2 2.14.1 2.14.0 2.13.1 2.13.0 2.12.3 2.12.2 2.12.1 trunk 1.0.3 1.0.4 1.0.5 1.1.0 All 112 releases
wplingua / inc / search.php

search.php in Translate and Go multilingual – Automatic AI translation – wpLingua 1.0.5, at inc/search.php

102 lines 1.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 // If this file is called directly, abort.
4 if ( ! defined( 'WPINC' ) ) {
5 die;
6 }
7
8
9 /**
10 * Translate search query if page is translated
11 *
12 * @param object $query
13 * @return void
14 */
15 function wplng_translate_search_query( $query ) {
16
17 /**
18 * Check if it's a search query
19 */
20
21 if ( ! $query->is_search()
22 || ! isset( $query->query['s'] )
23 || ! is_string( $query->query['s'] )
24 ) {
25 return;
26 }
27
28 /**
29 * Get current and website languages
30 * Ckeck if search need to be translate
31 */
32
33 $language_current = wplng_get_language_current_id();
34 $language_website = wplng_get_language_website_id();
35
36 if ( $language_website === $language_current ) {
37 return;
38 }
39
40 /**
41 * Sanitize search query and check if is translatale
42 */
43
44 $search_string = sanitize_text_field( $query->query['s'] );
45
46 if ( ! wplng_text_is_translatable( $search_string ) ) {
47 return;
48 }
49
50 /**
51 * Call API to get the translation
52 */
53
54 $translated_search = wplng_api_call_translate(
55 array( $search_string ),
56 $language_current,
57 $language_website
58 );
59
60 if ( ! isset( $translated_search[0] ) ) {
61 return;
62 }
63
64 $translated_search = $translated_search[0];
65
66 /**
67 * Check and clear the translation
68 */
69
70 // Remove added ponctuation
71 $translated_search = preg_replace(
72 '#[^A-Za-z0-9]#',
73 '',
74 $translated_search
75 );
76
77 // Clear translation
78 $translated_search = trim( esc_attr( $translated_search ) );
79
80 // Check if translation is not empty after cleaning
81 if ( '' === $translated_search ) {
82 return;
83 }
84
85 /**
86 * Replace the search text by the translation
87 */
88
89 $query->set( 's', $translated_search );
90 }
91
92
93 /**
94 * Make search untranslated
95 *
96 * @param bool $is_translatable
97 * @return void
98 */
99 function wplng_exclude_search( $is_translatable ) {
100 return $is_translatable && ! ( is_search() || isset( $_GET['s'] ) );
101 }
102