@@ -47,10 +47,12 @@ function wpm_translate_url( $url, $language = '' ) {
47
47
$ url = remove_query_arg ( 'lang ' , $ url );
48
48
$ default_uri = str_replace ( $ host , '' , $ url );
49
49
$ default_uri = $ default_uri ? $ default_uri : '/ ' ;
50
- $ pattern = '!^/([a-z]{2})(/|$)!i ' ;
50
+ $ languages = wpm_get_languages ();
51
+ $ parts = explode ( '/ ' , ltrim ( trailingslashit ( $ default_uri ), '/ ' ) );
52
+ $ url_lang = $ parts [0 ];
51
53
52
- if ( preg_match ( $ pattern , $ default_uri ) ) {
53
- $ default_uri = preg_replace ( $ pattern , '/ ' , $ default_uri );
54
+ if ( isset ( $ languages [ $ url_lang ] ) ) {
55
+ $ default_uri = preg_replace ( ' !^/ ' . $ url_lang . ' (/|$)!i ' , '/ ' , $ default_uri );
54
56
}
55
57
56
58
$ default_language = wpm_get_default_language ();
@@ -83,7 +85,7 @@ function wpm_translate_url( $url, $language = '' ) {
83
85
*/
84
86
function wpm_translate_string ( $ string , $ language = '' ) {
85
87
86
- if ( is_serialized_string ( $ string ) || json_decode ( $ string ) ) {
88
+ if ( ! is_string ( $ string ) || is_serialized_string ( $ string ) || json_decode ( $ string ) ) {
87
89
return $ string ;
88
90
}
89
91
@@ -160,7 +162,7 @@ function wpm_string_to_ml_array( $string ) {
160
162
}
161
163
162
164
$ string = htmlspecialchars_decode ( $ string );
163
- $ blocks = preg_split ( '#(<!--:[a-z]{2} -->|<!--:-->|\[:[a-z]{2} \]|\[:\]|\{:[a-z]{2} \}|\{:\})#ism ' , $ string , - 1 , PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE );
165
+ $ blocks = preg_split ( '#(<!--:[a-z-]+ -->|<!--:-->|\[:[a-z-]+ \]|\[:\]|\{:[a-z-]+ \}|\{:\})#ism ' , $ string , - 1 , PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE );
164
166
165
167
if ( empty ( $ blocks ) || count ( $ blocks ) === 1 ) {
166
168
return $ string ;
@@ -177,15 +179,15 @@ function wpm_string_to_ml_array( $string ) {
177
179
$ language = '' ;
178
180
foreach ( $ blocks as $ block ) {
179
181
180
- if ( preg_match ( '#^<!--:([a-z]{2} )-->$#ism ' , $ block , $ matches ) ) {
182
+ if ( preg_match ( '#^<!--:([a-z-]+ )-->$#ism ' , $ block , $ matches ) ) {
181
183
$ language = $ matches [1 ];
182
184
continue ;
183
185
184
- } elseif ( preg_match ( '#^\[:([a-z]{2} )\]$#ism ' , $ block , $ matches ) ) {
186
+ } elseif ( preg_match ( '#^\[:([a-z-]+ )\]$#ism ' , $ block , $ matches ) ) {
185
187
$ language = $ matches [1 ];
186
188
continue ;
187
189
188
- } elseif ( preg_match ( '#^\{:([a-z]{2} )\}$#ism ' , $ block , $ matches ) ) {
190
+ } elseif ( preg_match ( '#^\{:([a-z-]+ )\}$#ism ' , $ block , $ matches ) ) {
189
191
$ language = $ matches [1 ];
190
192
continue ;
191
193
}
@@ -434,8 +436,11 @@ function wpm_translate_term( $term, $taxonomy, $lang = '' ) {
434
436
return wpm_translate_object ( $ term , $ lang );
435
437
}
436
438
437
- return wpm_translate_value ( $ term , $ lang );
439
+ if ( is_array ( $ term ) ) {
440
+ return wpm_translate_value ( $ term , $ lang );
441
+ }
438
442
443
+ return $ term ;
439
444
}
440
445
441
446
@@ -497,7 +502,7 @@ function wpm_is_ml_array( $array ) {
497
502
*/
498
503
function wpm_is_ml_string ( $ string ) {
499
504
500
- if ( is_array ( $ string ) || is_bool ( $ string ) || is_serialized_string ( $ string ) || json_decode ( $ string ) ) {
505
+ if ( ! is_string ( $ string ) || is_serialized_string ( $ string ) || json_decode ( $ string ) ) {
501
506
return false ;
502
507
}
503
508
@@ -547,7 +552,7 @@ function wpm_is_ml_value( $value ) {
547
552
*/
548
553
function wpm_set_new_value ( $ old_value , $ new_value , $ config = array (), $ lang = '' ) {
549
554
550
- if ( is_bool ( $ old_value ) || is_serialized_string ( $ old_value ) || json_decode ( $ old_value ) ) {
555
+ if ( is_bool ( $ old_value ) || is_serialized_string ( $ old_value ) || ( is_string ( $ old_value ) && json_decode ( $ old_value ) ) ) {
551
556
return $ old_value ;
552
557
}
553
558
0 commit comments