Version Description
- Adding missing Uruguay flag
- Improved security for dynamic translations
- Disable automatic language redirect when editing a page with Oxygen or Beaver Builder
- Fixed cases of missing table sql errors
- Fixed sql error for some MariaDB setups due to deprecated syntax
- Fixed some issues with Exclude certain paths functionality.
Download this release
Release Info
Developer | madalin.ungureanu |
Plugin | TranslatePress – Translate Multilingual sites |
Version | 1.9.6 |
Comparing to | |
See all releases |
Code changes from version 1.9.5 to 1.9.6
- assets/images/flags/es_UY.png +0 -0
- class-translate-press.php +1 -1
- includes/advanced-settings/do-not-translate-certain-paths.php +6 -2
- includes/class-query.php +57 -4
- includes/class-translation-manager.php +22 -15
- includes/compatibility-functions.php +44 -18
- includes/external-functions.php +9 -0
- includes/trp-ajax.php +4 -0
- index.php +1 -1
- languages/translatepress-multilingual.pot +2 -2
- readme.txt +10 -2
assets/images/flags/es_UY.png
ADDED
Binary file
|
class-translate-press.php
CHANGED
@@ -57,7 +57,7 @@ class TRP_Translate_Press{
|
|
57 |
define( 'TRP_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
58 |
define( 'TRP_PLUGIN_BASE', plugin_basename( __DIR__ . '/index.php' ) );
|
59 |
define( 'TRP_PLUGIN_SLUG', 'translatepress-multilingual' );
|
60 |
-
define( 'TRP_PLUGIN_VERSION', '1.9.
|
61 |
|
62 |
wp_cache_add_non_persistent_groups(array('trp'));
|
63 |
|
57 |
define( 'TRP_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
58 |
define( 'TRP_PLUGIN_BASE', plugin_basename( __DIR__ . '/index.php' ) );
|
59 |
define( 'TRP_PLUGIN_SLUG', 'translatepress-multilingual' );
|
60 |
+
define( 'TRP_PLUGIN_VERSION', '1.9.6' );
|
61 |
|
62 |
wp_cache_add_non_persistent_groups(array('trp'));
|
63 |
|
includes/advanced-settings/do-not-translate-certain-paths.php
CHANGED
@@ -102,6 +102,8 @@ function trp_exclude_include_paths_to_run_on(){
|
|
102 |
|
103 |
if( empty( $current_slug ) || $current_slug == '/' )
|
104 |
$current_slug = "{{home}}";
|
|
|
|
|
105 |
|
106 |
if( $advanced_settings['translateable_content']['option'] == 'exclude' ){
|
107 |
|
@@ -169,6 +171,8 @@ function trp_exclude_include_do_not_redirect_on_excluded_pages( $redirect, $lang
|
|
169 |
|
170 |
if( empty( $current_slug ) || $current_slug == '/' )
|
171 |
$current_slug = "{{home}}";
|
|
|
|
|
172 |
|
173 |
if( $advanced_settings['translateable_content']['option'] == 'exclude' ){
|
174 |
|
@@ -205,10 +209,10 @@ add_action( 'init', 'trp_exclude_include_redirect_to_default_language', 1 );
|
|
205 |
function trp_exclude_include_redirect_to_default_language(){
|
206 |
|
207 |
if( isset( $_GET['trp-edit-translation'] ) && ( $_GET['trp-edit-translation'] == 'true' || $_GET['trp-edit-translation'] == 'preview' ) )
|
208 |
-
return
|
209 |
|
210 |
if( isset( $_GET['trp-string-translation'] ) && $_GET['trp-string-translation'] == 'true' )
|
211 |
-
return
|
212 |
|
213 |
if( is_admin() )
|
214 |
return;
|
102 |
|
103 |
if( empty( $current_slug ) || $current_slug == '/' )
|
104 |
$current_slug = "{{home}}";
|
105 |
+
else
|
106 |
+
$current_slug = '/' . ltrim( $current_slug, '/' );
|
107 |
|
108 |
if( $advanced_settings['translateable_content']['option'] == 'exclude' ){
|
109 |
|
171 |
|
172 |
if( empty( $current_slug ) || $current_slug == '/' )
|
173 |
$current_slug = "{{home}}";
|
174 |
+
else
|
175 |
+
$current_slug = '/' . ltrim( $current_slug, '/' );
|
176 |
|
177 |
if( $advanced_settings['translateable_content']['option'] == 'exclude' ){
|
178 |
|
209 |
function trp_exclude_include_redirect_to_default_language(){
|
210 |
|
211 |
if( isset( $_GET['trp-edit-translation'] ) && ( $_GET['trp-edit-translation'] == 'true' || $_GET['trp-edit-translation'] == 'preview' ) )
|
212 |
+
return;
|
213 |
|
214 |
if( isset( $_GET['trp-string-translation'] ) && $_GET['trp-string-translation'] == 'true' )
|
215 |
+
return;
|
216 |
|
217 |
if( is_admin() )
|
218 |
return;
|
includes/class-query.php
CHANGED
@@ -11,9 +11,11 @@ class TRP_Query{
|
|
11 |
protected $table_name;
|
12 |
public $db;
|
13 |
protected $settings;
|
|
|
14 |
protected $translation_render;
|
15 |
protected $error_manager;
|
16 |
protected $tables_exist = array();
|
|
|
17 |
|
18 |
const NOT_TRANSLATED = 0;
|
19 |
const MACHINE_TRANSLATED = 1;
|
@@ -655,11 +657,12 @@ class TRP_Query{
|
|
655 |
}
|
656 |
|
657 |
$on_duplicate = ' ON DUPLICATE KEY UPDATE ';
|
|
|
658 |
foreach ( $columns_to_update as $column ) {
|
659 |
if ( $column == 'id' ){
|
660 |
continue;
|
661 |
}
|
662 |
-
$on_duplicate .= $column . '=
|
663 |
}
|
664 |
$query .= implode( ', ', $place_holders );
|
665 |
|
@@ -795,11 +798,12 @@ class TRP_Query{
|
|
795 |
}
|
796 |
|
797 |
$on_duplicate = ' ON DUPLICATE KEY UPDATE ';
|
|
|
798 |
foreach ( $columns_to_update as $column ) {
|
799 |
if ( $column == 'id' ){
|
800 |
continue;
|
801 |
}
|
802 |
-
|
803 |
}
|
804 |
$query .= implode( ', ', $place_holders );
|
805 |
|
@@ -1281,13 +1285,18 @@ class TRP_Query{
|
|
1281 |
|
1282 |
public function maybe_record_automatic_translation_error($error_details = array(), $ignore_last_error = false ){
|
1283 |
if ( !empty( $this->db->last_error) || $ignore_last_error ){
|
|
|
1284 |
if( !$this->error_manager ){
|
1285 |
-
$trp = TRP_Translate_Press::get_trp_instance();
|
1286 |
$this->error_manager = $trp->get_component( 'error_manager' );
|
1287 |
}
|
|
|
|
|
|
|
|
|
1288 |
$default_error_details = array(
|
1289 |
'last_error' => $this->db->last_error,
|
1290 |
-
'disable_automatic_translations' => true
|
|
|
1291 |
);
|
1292 |
$error_details = array_merge( $default_error_details, $error_details );
|
1293 |
$this->error_manager->record_error( $error_details );
|
@@ -1398,4 +1407,48 @@ class TRP_Query{
|
|
1398 |
$sql = "DROP TABLE `" . sanitize_text_field( $table_name ). "`";
|
1399 |
return $this->db->query( $sql );
|
1400 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1401 |
}
|
11 |
protected $table_name;
|
12 |
public $db;
|
13 |
protected $settings;
|
14 |
+
protected $url_converter;
|
15 |
protected $translation_render;
|
16 |
protected $error_manager;
|
17 |
protected $tables_exist = array();
|
18 |
+
protected $db_sql_version = null;
|
19 |
|
20 |
const NOT_TRANSLATED = 0;
|
21 |
const MACHINE_TRANSLATED = 1;
|
657 |
}
|
658 |
|
659 |
$on_duplicate = ' ON DUPLICATE KEY UPDATE ';
|
660 |
+
$key_term_values = $this->is_values_accepted() ? 'VALUES' : 'VALUE';
|
661 |
foreach ( $columns_to_update as $column ) {
|
662 |
if ( $column == 'id' ){
|
663 |
continue;
|
664 |
}
|
665 |
+
$on_duplicate .= $column . '=' . $key_term_values . '(' . $column . '),';
|
666 |
}
|
667 |
$query .= implode( ', ', $place_holders );
|
668 |
|
798 |
}
|
799 |
|
800 |
$on_duplicate = ' ON DUPLICATE KEY UPDATE ';
|
801 |
+
$key_term_values = $this->is_values_accepted() ? 'VALUES' : 'VALUE';
|
802 |
foreach ( $columns_to_update as $column ) {
|
803 |
if ( $column == 'id' ){
|
804 |
continue;
|
805 |
}
|
806 |
+
$on_duplicate .= $column . '=' . $key_term_values . '(' . $column . '),';
|
807 |
}
|
808 |
$query .= implode( ', ', $place_holders );
|
809 |
|
1285 |
|
1286 |
public function maybe_record_automatic_translation_error($error_details = array(), $ignore_last_error = false ){
|
1287 |
if ( !empty( $this->db->last_error) || $ignore_last_error ){
|
1288 |
+
$trp = TRP_Translate_Press::get_trp_instance();
|
1289 |
if( !$this->error_manager ){
|
|
|
1290 |
$this->error_manager = $trp->get_component( 'error_manager' );
|
1291 |
}
|
1292 |
+
if( !$this->url_converter ) {
|
1293 |
+
$this->url_converter = $trp->get_component( 'url_converter' );
|
1294 |
+
}
|
1295 |
+
|
1296 |
$default_error_details = array(
|
1297 |
'last_error' => $this->db->last_error,
|
1298 |
+
'disable_automatic_translations' => true,
|
1299 |
+
'url' => $this->url_converter->cur_page_url(),
|
1300 |
);
|
1301 |
$error_details = array_merge( $default_error_details, $error_details );
|
1302 |
$this->error_manager->record_error( $error_details );
|
1407 |
$sql = "DROP TABLE `" . sanitize_text_field( $table_name ). "`";
|
1408 |
return $this->db->query( $sql );
|
1409 |
}
|
1410 |
+
|
1411 |
+
/**
|
1412 |
+
* Return db sql version
|
1413 |
+
*
|
1414 |
+
* Using 'select version()' instead of wpdb->db_server_info because
|
1415 |
+
* db_server_info returns format 5.5.5-10.3.3-mariadb instead of 10.3.3-mariadb on some setups
|
1416 |
+
* https://www.php.net/manual/en/mysqli.get-server-info.php#118822
|
1417 |
+
*
|
1418 |
+
* @return string|null
|
1419 |
+
*/
|
1420 |
+
public function get_db_sql_version(){
|
1421 |
+
if ( $this->db_sql_version === null ){
|
1422 |
+
$this->db_sql_version = $this->db->get_var( 'select version()' );
|
1423 |
+
$this->db_sql_version = ( $this->db_sql_version === null ) ? '0' : $this->db_sql_version;
|
1424 |
+
}
|
1425 |
+
return $this->db_sql_version;
|
1426 |
+
}
|
1427 |
+
|
1428 |
+
/**
|
1429 |
+
* Whether it is safe to use VALUES() instead of VALUE()
|
1430 |
+
*
|
1431 |
+
* Starting with 10.3.3 MariaDB recommends using VALUE() instead of VALUES()
|
1432 |
+
* Even though they say they still accept the term values for 'on duplicate key update' syntax,
|
1433 |
+
* some users still report syntax error.
|
1434 |
+
* https://mariadb.com/kb/en/values-value/
|
1435 |
+
*
|
1436 |
+
* MySQL servers marked the use of VALUES deprecated starting with 8.0.20 but have not removed support for it.
|
1437 |
+
* We can't use the MariaDB approach, their alternative is different and not supported by earlier versions.
|
1438 |
+
* For now, there is no need to further complicate this SQL query based on DB version and make.
|
1439 |
+
*
|
1440 |
+
*
|
1441 |
+
* @return bool
|
1442 |
+
*/
|
1443 |
+
public function is_values_accepted(){
|
1444 |
+
$return = true;
|
1445 |
+
$db_sql_version = strtolower( $this->get_db_sql_version() );
|
1446 |
+
if ( strpos( $db_sql_version, 'mariadb' ) !== false ){
|
1447 |
+
$db_server_array = explode('-', $db_sql_version);
|
1448 |
+
if( isset( $db_server_array[1] ) && $db_server_array[1] == 'mariadb' && version_compare($db_server_array[0], '10.3.3', '>=') ){
|
1449 |
+
$return = false;
|
1450 |
+
}
|
1451 |
+
}
|
1452 |
+
return $return;
|
1453 |
+
}
|
1454 |
}
|
includes/class-translation-manager.php
CHANGED
@@ -522,23 +522,26 @@ class TRP_Translation_Manager
|
|
522 |
{
|
523 |
|
524 |
|
525 |
-
global $trp_translated_gettext_texts;
|
526 |
-
if (
|
527 |
$language = get_locale();
|
528 |
|
529 |
-
if (
|
|
|
530 |
$trp = TRP_Translate_Press::get_trp_instance();
|
531 |
-
|
532 |
-
|
|
|
533 |
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
|
538 |
-
|
539 |
-
|
|
|
|
|
540 |
}
|
541 |
-
$trp_translated_gettext_texts = $trp_strings;
|
542 |
}
|
543 |
}
|
544 |
}
|
@@ -583,8 +586,7 @@ class TRP_Translation_Manager
|
|
583 |
$this->call_gettext_filters('woocommerce_');
|
584 |
}
|
585 |
|
586 |
-
public function
|
587 |
-
{
|
588 |
global $pagenow;
|
589 |
|
590 |
if (!$this->url_converter) {
|
@@ -596,7 +598,11 @@ class TRP_Translation_Manager
|
|
596 |
}
|
597 |
|
598 |
// Do not process gettext strings on wp-login pages. Do not process strings in admin area except for when when is_ajax_on_frontend. Do not process gettext strings when is rest api from admin url referer. Do not process gettext on xmlrpc.pho
|
599 |
-
|
|
|
|
|
|
|
|
|
600 |
add_filter('gettext', array($this, $prefix . 'process_gettext_strings'), 100, 3);
|
601 |
add_filter('gettext_with_context', array($this, $prefix . 'process_gettext_strings_with_context'), 100, 4);
|
602 |
add_filter('ngettext', array($this, $prefix . 'process_ngettext_strings'), 100, 5);
|
@@ -776,7 +782,8 @@ class TRP_Translation_Manager
|
|
776 |
|
777 |
/* get_locale() returns WP Settings Language (WPLANG). It might not be a language in TP so it may not have a TP table. */
|
778 |
$current_locale = get_locale();
|
779 |
-
|
|
|
780 |
return $translation;
|
781 |
}
|
782 |
|
522 |
{
|
523 |
|
524 |
|
525 |
+
global $trp_translated_gettext_texts, $trp_translated_gettext_texts_language;
|
526 |
+
if ( $this->processing_gettext_is_needed() ){
|
527 |
$language = get_locale();
|
528 |
|
529 |
+
if ( in_array( $language, $this->settings['translation-languages'] ) ) {
|
530 |
+
$trp_translated_gettext_texts_language = $language;
|
531 |
$trp = TRP_Translate_Press::get_trp_instance();
|
532 |
+
if ( !$this->trp_query ) {
|
533 |
+
$this->trp_query = $trp->get_component( 'query' );
|
534 |
+
}
|
535 |
|
536 |
+
$strings = $this->trp_query->get_all_gettext_strings( $language );
|
537 |
+
if ( !empty( $strings ) ) {
|
538 |
+
$trp_translated_gettext_texts = $strings;
|
539 |
|
540 |
+
foreach ( $trp_translated_gettext_texts as $key => $value ) {
|
541 |
+
$trp_strings[ $value['domain'] . '::' . $value['original'] ] = $value;
|
542 |
+
}
|
543 |
+
$trp_translated_gettext_texts = $trp_strings;
|
544 |
}
|
|
|
545 |
}
|
546 |
}
|
547 |
}
|
586 |
$this->call_gettext_filters('woocommerce_');
|
587 |
}
|
588 |
|
589 |
+
public function processing_gettext_is_needed(){
|
|
|
590 |
global $pagenow;
|
591 |
|
592 |
if (!$this->url_converter) {
|
598 |
}
|
599 |
|
600 |
// Do not process gettext strings on wp-login pages. Do not process strings in admin area except for when when is_ajax_on_frontend. Do not process gettext strings when is rest api from admin url referer. Do not process gettext on xmlrpc.pho
|
601 |
+
return (($pagenow != 'wp-login.php') && (!is_admin() || $this::is_ajax_on_frontend()) && !$this->is_admin_request && $pagenow != 'xmlrpc.php');
|
602 |
+
}
|
603 |
+
|
604 |
+
public function call_gettext_filters($prefix = '') {
|
605 |
+
if ( $this->processing_gettext_is_needed() ){
|
606 |
add_filter('gettext', array($this, $prefix . 'process_gettext_strings'), 100, 3);
|
607 |
add_filter('gettext_with_context', array($this, $prefix . 'process_gettext_strings_with_context'), 100, 4);
|
608 |
add_filter('ngettext', array($this, $prefix . 'process_ngettext_strings'), 100, 5);
|
782 |
|
783 |
/* get_locale() returns WP Settings Language (WPLANG). It might not be a language in TP so it may not have a TP table. */
|
784 |
$current_locale = get_locale();
|
785 |
+
global $trp_translated_gettext_texts_language;
|
786 |
+
if ( !in_array($current_locale, $this->settings['translation-languages'] ) || empty( $trp_translated_gettext_texts_language) || $trp_translated_gettext_texts_language !== $current_locale ) {
|
787 |
return $translation;
|
788 |
}
|
789 |
|
includes/compatibility-functions.php
CHANGED
@@ -42,7 +42,9 @@ add_filter( 'trp_allow_tp_to_run', 'trp_missing_mbstrings_library' );
|
|
42 |
*/
|
43 |
add_filter( 'nav_menu_link_attributes', 'trp_remove_html_from_menu_title', 10, 3);
|
44 |
function trp_remove_html_from_menu_title( $atts, $item, $args ){
|
45 |
-
|
|
|
|
|
46 |
return $atts;
|
47 |
}
|
48 |
|
@@ -839,27 +841,51 @@ if( function_exists('ct_is_show_builder') ) {
|
|
839 |
|
840 |
}
|
841 |
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
848 |
|
849 |
-
|
850 |
|
851 |
-
|
852 |
-
|
853 |
-
|
|
|
|
|
854 |
|
855 |
-
$
|
856 |
-
$current_lang = $url_converter->get_lang_from_url_string( $current_url );
|
857 |
|
858 |
-
|
859 |
-
$
|
|
|
|
|
860 |
|
861 |
-
wp_redirect( $link_to_redirect, 301 );
|
862 |
-
exit;
|
863 |
}
|
864 |
|
865 |
}
|
@@ -1352,7 +1378,7 @@ function trp_force_search( $bool ){
|
|
1352 |
add_filter('gettext_with_context', 'trp_mylisting_exclude_string', 101, 4 );
|
1353 |
}
|
1354 |
}
|
1355 |
-
|
1356 |
function trp_mylisting_exclude_string( $translation, $text, $context, $domain ){
|
1357 |
|
1358 |
if( $domain == 'my-listing' && $text == 'my-listings' )
|
42 |
*/
|
43 |
add_filter( 'nav_menu_link_attributes', 'trp_remove_html_from_menu_title', 10, 3);
|
44 |
function trp_remove_html_from_menu_title( $atts, $item, $args ){
|
45 |
+
if( isset( $atts['title'] ) )
|
46 |
+
$atts['title'] = wp_strip_all_tags($atts['title']);
|
47 |
+
|
48 |
return $atts;
|
49 |
}
|
50 |
|
841 |
|
842 |
}
|
843 |
|
844 |
+
if( function_exists( 'ct_is_show_builder' ) || defined( 'FL_BUILDER_VERSION' ) ){
|
845 |
+
|
846 |
+
/**
|
847 |
+
* Used to redirect Oxygen Builder front-end to the default language.
|
848 |
+
* Hooked before TRP_Language_Switcher::redirect_to_correct_language() so we don't redirect twice
|
849 |
+
*/
|
850 |
+
add_action( 'template_redirect', 'trp_page_builder_compatibility_redirect_to_default_language', 10 );
|
851 |
+
function trp_page_builder_compatibility_redirect_to_default_language(){
|
852 |
+
|
853 |
+
if( !is_admin() && ( ( isset( $_GET['ct_builder'] ) && $_GET['ct_builder'] == 'true' ) || isset( $_GET['fl_builder'] ) ) ){
|
854 |
+
|
855 |
+
$trp = TRP_Translate_Press::get_trp_instance();
|
856 |
+
$url_converter = $trp->get_component('url_converter');
|
857 |
+
$settings = ( new TRP_Settings() )->get_settings();
|
858 |
+
|
859 |
+
$current_url = $url_converter->cur_page_url();
|
860 |
+
$current_lang = $url_converter->get_lang_from_url_string( $current_url );
|
861 |
+
|
862 |
+
if( ( $current_lang == null && $settings['add-subdirectory-to-default-language'] == 'yes' ) || ( $current_lang != null && $current_lang != $settings['default-language'] ) ){
|
863 |
+
$link_to_redirect = $url_converter->get_url_for_language( $settings['default-language'], null, '' );
|
864 |
+
|
865 |
+
if( $link_to_redirect != $current_url ){
|
866 |
+
wp_redirect( $link_to_redirect, 301 );
|
867 |
+
exit;
|
868 |
+
}
|
869 |
+
|
870 |
+
}
|
871 |
+
|
872 |
+
}
|
873 |
|
874 |
+
}
|
875 |
|
876 |
+
/**
|
877 |
+
* Disable automatic language redirect when the Oxygen or Beaver Builders are showing
|
878 |
+
*/
|
879 |
+
add_action( 'plugins_loaded', 'trp_page_builder_compatibility_disable_automatic_language_redirect' );
|
880 |
+
function trp_page_builder_compatibility_disable_automatic_language_redirect(){
|
881 |
|
882 |
+
if( ( isset( $_GET['ct_builder'] ) && $_GET['ct_builder'] == 'true' ) || isset( $_GET['fl_builder'] ) ){
|
|
|
883 |
|
884 |
+
$trp = TRP_Translate_Press::get_trp_instance();
|
885 |
+
$loader = $trp->get_component( 'loader' );
|
886 |
+
|
887 |
+
$loader->remove_hook( 'wp_enqueue_scripts', 'enqueue_cookie_adding' );
|
888 |
|
|
|
|
|
889 |
}
|
890 |
|
891 |
}
|
1378 |
add_filter('gettext_with_context', 'trp_mylisting_exclude_string', 101, 4 );
|
1379 |
}
|
1380 |
}
|
1381 |
+
|
1382 |
function trp_mylisting_exclude_string( $translation, $text, $context, $domain ){
|
1383 |
|
1384 |
if( $domain == 'my-listing' && $text == 'my-listings' )
|
includes/external-functions.php
CHANGED
@@ -114,3 +114,12 @@ function trp_sort_dictionary_by_original( $dictionaries, $type, $group, $languag
|
|
114 |
}
|
115 |
return $array;
|
116 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
}
|
115 |
return $array;
|
116 |
}
|
117 |
+
|
118 |
+
function trp_is_valid_language_code( $language_code ){
|
119 |
+
// allowed characters A-Z a-z 0-9 - _
|
120 |
+
if ( preg_match('/[^A-Za-z0-9\-_]/i', $language_code ) ) {
|
121 |
+
return false;
|
122 |
+
}else{
|
123 |
+
return true;
|
124 |
+
}
|
125 |
+
}
|
includes/trp-ajax.php
CHANGED
@@ -22,6 +22,10 @@ class TRP_Ajax{
|
|
22 |
}
|
23 |
|
24 |
include './external-functions.php';
|
|
|
|
|
|
|
|
|
25 |
|
26 |
if ( $this->connect_to_db() ){
|
27 |
|
22 |
}
|
23 |
|
24 |
include './external-functions.php';
|
25 |
+
if ( !trp_is_valid_language_code( $_POST['language'] ) || !trp_is_valid_language_code( $_POST['$original_language'] ) ) {
|
26 |
+
echo json_encode( 'TranslatePress Error: Invalid language code' );
|
27 |
+
exit;
|
28 |
+
}
|
29 |
|
30 |
if ( $this->connect_to_db() ){
|
31 |
|
index.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: TranslatePress - Multilingual
|
4 |
Plugin URI: https://translatepress.com/
|
5 |
Description: Experience a better way of translating your WordPress site using a visual front-end translation editor, with full support for WooCommerce and site builders.
|
6 |
-
Version: 1.9.
|
7 |
Author: Cozmoslabs, Razvan Mocanu, Madalin Ungureanu, Cristophor Hurduban
|
8 |
Author URI: https://cozmoslabs.com/
|
9 |
Text Domain: translatepress-multilingual
|
3 |
Plugin Name: TranslatePress - Multilingual
|
4 |
Plugin URI: https://translatepress.com/
|
5 |
Description: Experience a better way of translating your WordPress site using a visual front-end translation editor, with full support for WooCommerce and site builders.
|
6 |
+
Version: 1.9.6
|
7 |
Author: Cozmoslabs, Razvan Mocanu, Madalin Ungureanu, Cristophor Hurduban
|
8 |
Author URI: https://cozmoslabs.com/
|
9 |
Text Domain: translatepress-multilingual
|
languages/translatepress-multilingual.pot
CHANGED
@@ -681,11 +681,11 @@ msgstr ""
|
|
681 |
msgid "Translate Page"
|
682 |
msgstr ""
|
683 |
|
684 |
-
#: includes/class-translation-manager.php:
|
685 |
msgid "Security check"
|
686 |
msgstr ""
|
687 |
|
688 |
-
#: includes/class-translation-manager.php:
|
689 |
msgid "<strong>Warning:</strong> Some strings have possibly incorrectly encoded characters. This may result in breaking the queries, rendering the page untranslated in live mode. Consider revising the following strings or their method of outputting."
|
690 |
msgstr ""
|
691 |
|
681 |
msgid "Translate Page"
|
682 |
msgstr ""
|
683 |
|
684 |
+
#: includes/class-translation-manager.php:1268
|
685 |
msgid "Security check"
|
686 |
msgstr ""
|
687 |
|
688 |
+
#: includes/class-translation-manager.php:1342
|
689 |
msgid "<strong>Warning:</strong> Some strings have possibly incorrectly encoded characters. This may result in breaking the queries, rendering the page untranslated in live mode. Consider revising the following strings or their method of outputting."
|
690 |
msgstr ""
|
691 |
|
readme.txt
CHANGED
@@ -3,9 +3,9 @@ Contributors: cozmoslabs, razvan.mo, madalin.ungureanu, sareiodata, cristophor
|
|
3 |
Donate link: https://www.translatepress.com/
|
4 |
Tags: translate, translation, multilingual, automatic translation, bilingual, front-end translation, google translate, language
|
5 |
Requires at least: 3.1.0
|
6 |
-
Tested up to: 5.6.
|
7 |
Requires PHP: 5.6.20
|
8 |
-
Stable tag: 1.9.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -138,6 +138,14 @@ For more information please check out our [documentation](https://translatepress
|
|
138 |
|
139 |
|
140 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
= 1.9.5 =
|
142 |
* Added setting that allows you to translate only certain paths or exclude certain paths from being translated.
|
143 |
* Fixed some cases where GET parameters were lost from links in translated languages
|
3 |
Donate link: https://www.translatepress.com/
|
4 |
Tags: translate, translation, multilingual, automatic translation, bilingual, front-end translation, google translate, language
|
5 |
Requires at least: 3.1.0
|
6 |
+
Tested up to: 5.6.2
|
7 |
Requires PHP: 5.6.20
|
8 |
+
Stable tag: 1.9.6
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
138 |
|
139 |
|
140 |
== Changelog ==
|
141 |
+
= 1.9.6 =
|
142 |
+
* Adding missing Uruguay flag
|
143 |
+
* Improved security for dynamic translations
|
144 |
+
* Disable automatic language redirect when editing a page with Oxygen or Beaver Builder
|
145 |
+
* Fixed cases of missing table sql errors
|
146 |
+
* Fixed sql error for some MariaDB setups due to deprecated syntax
|
147 |
+
* Fixed some issues with Exclude certain paths functionality.
|
148 |
+
|
149 |
= 1.9.5 =
|
150 |
* Added setting that allows you to translate only certain paths or exclude certain paths from being translated.
|
151 |
* Fixed some cases where GET parameters were lost from links in translated languages
|