Version Description
- Admin notice added for conflicting plugins
- Disabled translation of non-selected languages when accessed directly in sub-directory URL structure mode
- Update to WordPress 4.9.1 before updating GTranslate
- Fixed update issue related to bug in new WP 4.9 flatten_dirlist function
Download this release
Release Info
Developer | edo888 |
Plugin | Translate WordPress with GTranslate |
Version | 2.8.35 |
Comparing to | |
See all releases |
Code changes from version 2.8.32 to 2.8.35
- 24/Morocco.png +0 -0
- gtranslate.php +47 -15
- readme.txt +14 -1
- url_addon/gtranslate.php +232 -222
24/Morocco.png
DELETED
Binary file
|
gtranslate.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: GTranslate
|
4 |
Plugin URI: https://gtranslate.io/?xyz=998
|
5 |
Description: Makes your website <strong>multilingual</strong> and available to the world using Google Translate. For support visit <a href="https://wordpress.org/support/plugin/gtranslate">GTranslate Support</a>.
|
6 |
-
Version: 2.8.
|
7 |
Author: Translate AI Multilingual Solutions
|
8 |
Author URI: https://gtranslate.io
|
9 |
Text Domain: gtranslate
|
@@ -230,7 +230,6 @@ class GTranslate extends WP_Widget {
|
|
230 |
public static function admin_menu() {
|
231 |
add_options_page(__('GTranslate Options', 'gtranslate'), 'GTranslate', 'administrator', 'gtranslate_options', array('GTranslate', 'options'));
|
232 |
|
233 |
-
deactivate_plugins(array('wptranslator/WPTranslator.php', 'translatepress-multilingual/index.php', 'google-language-translator/google-language-translator.php', 'google-website-translator/google-website-translator.php', 'weglot/weglot.php'), true);
|
234 |
}
|
235 |
|
236 |
public static function options() {
|
@@ -247,6 +246,14 @@ class GTranslate extends WP_Widget {
|
|
247 |
wp_enqueue_script('jquery-ui-sortable');
|
248 |
wp_enqueue_script('jquery-effects-core');
|
249 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
250 |
$site_url = site_url();
|
251 |
$wp_plugin_url = preg_replace('/^https?:/i', '', plugins_url() . '/gtranslate');
|
252 |
|
@@ -727,14 +734,14 @@ function RefreshDoWidgetCode() {
|
|
727 |
} else if(enterprise_version && translation_method == 'redirect' && new_window) {
|
728 |
widget_code += "function openTab(url) {var form=document.createElement('form');form.method='post';form.action=url;form.target='_blank';document.body.appendChild(form);form.submit();}"+new_line;
|
729 |
if(analytics)
|
730 |
-
widget_code += "function doGTranslate(lang_pair) {if(lang_pair.value)lang_pair=lang_pair.value;if(lang_pair=='')return;var lang=lang_pair.split('|')[1];if(typeof _gaq!='undefined'){_gaq.push(['_trackEvent', 'GTranslate', lang, location.hostname+location.pathname+location.search]);}else {if(typeof ga!='undefined')ga('send', 'event', 'GTranslate', lang, location.hostname+location.pathname+location.search);}var plang=location.hostname.split('.')[0];if(plang.length !=2 && plang.toLowerCase() != 'zh-cn' && plang.toLowerCase() != 'zh-tw' && plang != 'hmn' && plang != 'haw' && plang != 'ceb')plang='"+default_language+"';openTab(location.protocol+'//'+(lang == '"+default_language+"' ? '' : lang+'.')+location.hostname.replace('www.', '').replace(RegExp('^' + plang + '
|
731 |
else
|
732 |
-
widget_code += "function doGTranslate(lang_pair) {if(lang_pair.value)lang_pair=lang_pair.value;if(lang_pair=='')return;var lang=lang_pair.split('|')[1];var plang=location.hostname.split('.')[0];if(plang.length !=2 && plang.toLowerCase() != 'zh-cn' && plang.toLowerCase() != 'zh-tw' && plang != 'hmn' && plang != 'haw' && plang != 'ceb')plang='"+default_language+"';openTab(location.protocol+'//'+(lang == '"+default_language+"' ? '' : lang+'.')+location.hostname.replace('www.', '').replace(RegExp('^' + plang + '
|
733 |
} else if(enterprise_version && translation_method == 'redirect') {
|
734 |
if(analytics)
|
735 |
-
widget_code += "function doGTranslate(lang_pair) {if(lang_pair.value)lang_pair=lang_pair.value;if(lang_pair=='')return;var lang=lang_pair.split('|')[1];if(typeof _gaq!='undefined'){_gaq.push(['_trackEvent', 'GTranslate', lang, location.hostname+location.pathname+location.search]);}else {if(typeof ga!='undefined')ga('send', 'event', 'GTranslate', lang, location.hostname+location.pathname+location.search);}var plang=location.hostname.split('.')[0];if(plang.length !=2 && plang.toLowerCase() != 'zh-cn' && plang.toLowerCase() != 'zh-tw' && plang != 'hmn' && plang != 'haw' && plang != 'ceb')plang='"+default_language+"';location.href=location.protocol+'//'+(lang == '"+default_language+"' ? '' : lang+'.')+location.hostname.replace('www.', '').replace(RegExp('^' + plang + '
|
736 |
else
|
737 |
-
widget_code += "function doGTranslate(lang_pair) {if(lang_pair.value)lang_pair=lang_pair.value;if(lang_pair=='')return;var lang=lang_pair.split('|')[1];var plang=location.hostname.split('.')[0];if(plang.length !=2 && plang.toLowerCase() != 'zh-cn' && plang.toLowerCase() != 'zh-tw' && plang != 'hmn' && plang != 'haw' && plang != 'ceb')plang='"+default_language+"';location.href=location.protocol+'//'+(lang == '"+default_language+"' ? '' : lang+'.')+location.hostname.replace('www.', '').replace(RegExp('^' + plang + '
|
738 |
} else if(translation_method == 'onfly') {
|
739 |
widget_code += "function GTranslateGetCurrentLang() {var keyValue = document['cookie'].match('(^|;) ?googtrans=([^;]*)(;|$)');return keyValue ? keyValue[2].split('/')[2] : null;}"+new_line;
|
740 |
widget_code += "function GTranslateFireEvent(element,event){try{if(document.createEventObject){var evt=document.createEventObject();element.fireEvent('on'+event,evt)}else{var evt=document.createEvent('HTMLEvents');evt.initEvent(event,true,true);element.dispatchEvent(evt)}}catch(e){}}"+new_line;
|
@@ -1327,6 +1334,7 @@ EOT;
|
|
1327 |
|
1328 |
if($data['pro_version']) { // check if rewrite rules are in place
|
1329 |
$htaccess_file = get_home_path() . '.htaccess';
|
|
|
1330 |
if(is_writeable($htaccess_file)) {
|
1331 |
$htaccess = file_get_contents($htaccess_file);
|
1332 |
if(strpos($htaccess, 'gtranslate.php') === false) { // no config rules
|
@@ -1471,7 +1479,7 @@ class GTranslateWidget extends WP_Widget {
|
|
1471 |
class GTranslate_Notices {
|
1472 |
protected $prefix = 'gtranslate';
|
1473 |
public $notice_spam = 0;
|
1474 |
-
public $notice_spam_max =
|
1475 |
|
1476 |
// Basic actions to run
|
1477 |
public function __construct() {
|
@@ -1550,6 +1558,7 @@ class GTranslate_Notices {
|
|
1550 |
$admin_display_msg = (isset($admin_notices[$slug]['msg']) ? $admin_notices[$slug]['msg'] : '');
|
1551 |
$admin_display_title = (isset($admin_notices[$slug]['title']) ? $admin_notices[$slug]['title'] : '');
|
1552 |
$admin_display_link = (isset($admin_notices[$slug]['link']) ? $admin_notices[$slug]['link'] : '');
|
|
|
1553 |
$output_css = false;
|
1554 |
|
1555 |
// Ensure the notice hasn't been hidden and that the current date is after the start date
|
@@ -1569,7 +1578,8 @@ class GTranslate_Notices {
|
|
1569 |
echo '<ul class="gt-notice-body gt-red">
|
1570 |
' . $admin_display_link . '
|
1571 |
</ul>';
|
1572 |
-
|
|
|
1573 |
echo '</div>';
|
1574 |
|
1575 |
$this->notice_spam += 1;
|
@@ -1674,6 +1684,21 @@ class GTranslate_Notices {
|
|
1674 |
}
|
1675 |
|
1676 |
public function gt_admin_notices() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1677 |
/*
|
1678 |
$one_week_support = esc_url(add_query_arg(array($this->prefix . '_admin_notice_ignore' => 'one_week_support')));
|
1679 |
|
@@ -1698,7 +1723,7 @@ class GTranslate_Notices {
|
|
1698 |
'<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $two_week_review_temp . '">' . __('Maybe later', 'gtranslate') . '</a></li>' .
|
1699 |
'<li><span class="dashicons dashicons-dismiss"></span><a href="' . $two_week_review_ignore . '">' . __('Never show again', 'gtranslate') . '</a></li>',
|
1700 |
'later_link' => $two_week_review_temp,
|
1701 |
-
'int' =>
|
1702 |
);
|
1703 |
|
1704 |
$data = get_option('GTranslate');
|
@@ -1715,7 +1740,7 @@ class GTranslate_Notices {
|
|
1715 |
'<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $upgrade_tips_temp . '">' . __('Maybe later', 'gtranslate') . '</a></li>' .
|
1716 |
'<li><span class="dashicons dashicons-dismiss"></span><a href="' . $upgrade_tips_ignore . '">' . __('Never show again', 'gtranslate') . '</a></li>',
|
1717 |
'later_link' => $upgrade_tips_temp,
|
1718 |
-
'int' =>
|
1719 |
);
|
1720 |
|
1721 |
$notices['upgrade_tips'][] = array(
|
@@ -1725,7 +1750,7 @@ class GTranslate_Notices {
|
|
1725 |
'<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $upgrade_tips_temp . '">' . __('Maybe later', 'gtranslate') . '</a></li>' .
|
1726 |
'<li><span class="dashicons dashicons-dismiss"></span><a href="' . $upgrade_tips_ignore . '">' . __('Never show again', 'gtranslate') . '</a></li>',
|
1727 |
'later_link' => $upgrade_tips_temp,
|
1728 |
-
'int' =>
|
1729 |
);
|
1730 |
|
1731 |
$notices['upgrade_tips'][] = array(
|
@@ -1735,7 +1760,7 @@ class GTranslate_Notices {
|
|
1735 |
'<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $upgrade_tips_temp . '">' . __('Maybe later', 'gtranslate') . '</a></li>' .
|
1736 |
'<li><span class="dashicons dashicons-dismiss"></span><a href="' . $upgrade_tips_ignore . '">' . __('Never show again', 'gtranslate') . '</a></li>',
|
1737 |
'later_link' => $upgrade_tips_temp,
|
1738 |
-
'int' =>
|
1739 |
);
|
1740 |
|
1741 |
$notices['upgrade_tips'][] = array(
|
@@ -1745,7 +1770,7 @@ class GTranslate_Notices {
|
|
1745 |
'<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $upgrade_tips_temp . '">' . __('Maybe later', 'gtranslate') . '</a></li>' .
|
1746 |
'<li><span class="dashicons dashicons-dismiss"></span><a href="' . $upgrade_tips_ignore . '">' . __('Never show again', 'gtranslate') . '</a></li>',
|
1747 |
'later_link' => $upgrade_tips_temp,
|
1748 |
-
'int' =>
|
1749 |
);
|
1750 |
|
1751 |
$notices['upgrade_tips'][] = array(
|
@@ -1755,7 +1780,7 @@ class GTranslate_Notices {
|
|
1755 |
'<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $upgrade_tips_temp . '">' . __('Maybe later', 'gtranslate') . '</a></li>' .
|
1756 |
'<li><span class="dashicons dashicons-dismiss"></span><a href="' . $upgrade_tips_ignore . '">' . __('Never show again', 'gtranslate') . '</a></li>',
|
1757 |
'later_link' => $upgrade_tips_temp,
|
1758 |
-
'int' =>
|
1759 |
);
|
1760 |
|
1761 |
shuffle($notices['upgrade_tips']);
|
@@ -1791,7 +1816,14 @@ if($data['pro_version']) { // gtranslate redirect rules with PHP (for environmen
|
|
1791 |
exit;
|
1792 |
} // #2 add trailing slash
|
1793 |
|
1794 |
-
if(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1795 |
$_GET['glang'] = $matches[1];
|
1796 |
$_GET['gurl'] = rawurldecode($matches[2]);
|
1797 |
|
3 |
Plugin Name: GTranslate
|
4 |
Plugin URI: https://gtranslate.io/?xyz=998
|
5 |
Description: Makes your website <strong>multilingual</strong> and available to the world using Google Translate. For support visit <a href="https://wordpress.org/support/plugin/gtranslate">GTranslate Support</a>.
|
6 |
+
Version: 2.8.35
|
7 |
Author: Translate AI Multilingual Solutions
|
8 |
Author URI: https://gtranslate.io
|
9 |
Text Domain: gtranslate
|
230 |
public static function admin_menu() {
|
231 |
add_options_page(__('GTranslate Options', 'gtranslate'), 'GTranslate', 'administrator', 'gtranslate_options', array('GTranslate', 'options'));
|
232 |
|
|
|
233 |
}
|
234 |
|
235 |
public static function options() {
|
246 |
wp_enqueue_script('jquery-ui-sortable');
|
247 |
wp_enqueue_script('jquery-effects-core');
|
248 |
|
249 |
+
/* code editor for widget_code textarea
|
250 |
+
if(function_exists('wp_enqueue_code_editor')) {
|
251 |
+
$editor_settings = wp_enqueue_code_editor(array('type' => 'text/html'));
|
252 |
+
if($editor_settings !== false)
|
253 |
+
wp_add_inline_script('code-editor', sprintf('jQuery(function() {wp.codeEditor.initialize("widget_code", %s);});', wp_json_encode($editor_settings)));
|
254 |
+
}
|
255 |
+
*/
|
256 |
+
|
257 |
$site_url = site_url();
|
258 |
$wp_plugin_url = preg_replace('/^https?:/i', '', plugins_url() . '/gtranslate');
|
259 |
|
734 |
} else if(enterprise_version && translation_method == 'redirect' && new_window) {
|
735 |
widget_code += "function openTab(url) {var form=document.createElement('form');form.method='post';form.action=url;form.target='_blank';document.body.appendChild(form);form.submit();}"+new_line;
|
736 |
if(analytics)
|
737 |
+
widget_code += "function doGTranslate(lang_pair) {if(lang_pair.value)lang_pair=lang_pair.value;if(lang_pair=='')return;var lang=lang_pair.split('|')[1];if(typeof _gaq!='undefined'){_gaq.push(['_trackEvent', 'GTranslate', lang, location.hostname+location.pathname+location.search]);}else {if(typeof ga!='undefined')ga('send', 'event', 'GTranslate', lang, location.hostname+location.pathname+location.search);}var plang=location.hostname.split('.')[0];if(plang.length !=2 && plang.toLowerCase() != 'zh-cn' && plang.toLowerCase() != 'zh-tw' && plang != 'hmn' && plang != 'haw' && plang != 'ceb')plang='"+default_language+"';openTab(location.protocol+'//'+(lang == '"+default_language+"' ? '' : lang+'.')+location.hostname.replace('www.', '').replace(RegExp('^' + plang + '[.]'), '')+gt_request_uri);}"+new_line;
|
738 |
else
|
739 |
+
widget_code += "function doGTranslate(lang_pair) {if(lang_pair.value)lang_pair=lang_pair.value;if(lang_pair=='')return;var lang=lang_pair.split('|')[1];var plang=location.hostname.split('.')[0];if(plang.length !=2 && plang.toLowerCase() != 'zh-cn' && plang.toLowerCase() != 'zh-tw' && plang != 'hmn' && plang != 'haw' && plang != 'ceb')plang='"+default_language+"';openTab(location.protocol+'//'+(lang == '"+default_language+"' ? '' : lang+'.')+location.hostname.replace('www.', '').replace(RegExp('^' + plang + '[.]'), '')+gt_request_uri);}"+new_line;
|
740 |
} else if(enterprise_version && translation_method == 'redirect') {
|
741 |
if(analytics)
|
742 |
+
widget_code += "function doGTranslate(lang_pair) {if(lang_pair.value)lang_pair=lang_pair.value;if(lang_pair=='')return;var lang=lang_pair.split('|')[1];if(typeof _gaq!='undefined'){_gaq.push(['_trackEvent', 'GTranslate', lang, location.hostname+location.pathname+location.search]);}else {if(typeof ga!='undefined')ga('send', 'event', 'GTranslate', lang, location.hostname+location.pathname+location.search);}var plang=location.hostname.split('.')[0];if(plang.length !=2 && plang.toLowerCase() != 'zh-cn' && plang.toLowerCase() != 'zh-tw' && plang != 'hmn' && plang != 'haw' && plang != 'ceb')plang='"+default_language+"';location.href=location.protocol+'//'+(lang == '"+default_language+"' ? '' : lang+'.')+location.hostname.replace('www.', '').replace(RegExp('^' + plang + '[.]'), '')+gt_request_uri;}"+new_line;
|
743 |
else
|
744 |
+
widget_code += "function doGTranslate(lang_pair) {if(lang_pair.value)lang_pair=lang_pair.value;if(lang_pair=='')return;var lang=lang_pair.split('|')[1];var plang=location.hostname.split('.')[0];if(plang.length !=2 && plang.toLowerCase() != 'zh-cn' && plang.toLowerCase() != 'zh-tw' && plang != 'hmn' && plang != 'haw' && plang != 'ceb')plang='"+default_language+"';location.href=location.protocol+'//'+(lang == '"+default_language+"' ? '' : lang+'.')+location.hostname.replace('www.', '').replace(RegExp('^' + plang + '[.]'), '')+gt_request_uri;}"+new_line;
|
745 |
} else if(translation_method == 'onfly') {
|
746 |
widget_code += "function GTranslateGetCurrentLang() {var keyValue = document['cookie'].match('(^|;) ?googtrans=([^;]*)(;|$)');return keyValue ? keyValue[2].split('/')[2] : null;}"+new_line;
|
747 |
widget_code += "function GTranslateFireEvent(element,event){try{if(document.createEventObject){var evt=document.createEventObject();element.fireEvent('on'+event,evt)}else{var evt=document.createEvent('HTMLEvents');evt.initEvent(event,true,true);element.dispatchEvent(evt)}}catch(e){}}"+new_line;
|
1334 |
|
1335 |
if($data['pro_version']) { // check if rewrite rules are in place
|
1336 |
$htaccess_file = get_home_path() . '.htaccess';
|
1337 |
+
// todo: use insert_with_markers functions instead
|
1338 |
if(is_writeable($htaccess_file)) {
|
1339 |
$htaccess = file_get_contents($htaccess_file);
|
1340 |
if(strpos($htaccess, 'gtranslate.php') === false) { // no config rules
|
1479 |
class GTranslate_Notices {
|
1480 |
protected $prefix = 'gtranslate';
|
1481 |
public $notice_spam = 0;
|
1482 |
+
public $notice_spam_max = 3;
|
1483 |
|
1484 |
// Basic actions to run
|
1485 |
public function __construct() {
|
1558 |
$admin_display_msg = (isset($admin_notices[$slug]['msg']) ? $admin_notices[$slug]['msg'] : '');
|
1559 |
$admin_display_title = (isset($admin_notices[$slug]['title']) ? $admin_notices[$slug]['title'] : '');
|
1560 |
$admin_display_link = (isset($admin_notices[$slug]['link']) ? $admin_notices[$slug]['link'] : '');
|
1561 |
+
$admin_display_dismissible= (isset($admin_notices[$slug]['dismissible']) ? $admin_notices[$slug]['dismissible'] : true);
|
1562 |
$output_css = false;
|
1563 |
|
1564 |
// Ensure the notice hasn't been hidden and that the current date is after the start date
|
1578 |
echo '<ul class="gt-notice-body gt-red">
|
1579 |
' . $admin_display_link . '
|
1580 |
</ul>';
|
1581 |
+
if($admin_display_dismissible)
|
1582 |
+
echo '<a href="' . $query_str . '" class="dashicons dashicons-dismiss"></a>';
|
1583 |
echo '</div>';
|
1584 |
|
1585 |
$this->notice_spam += 1;
|
1684 |
}
|
1685 |
|
1686 |
public function gt_admin_notices() {
|
1687 |
+
|
1688 |
+
$deactivate_plugins= array('WP Translator' => 'wptranslator/WPTranslator.php', 'TranslatePress' => 'translatepress-multilingual/index.php', 'Google Language Translator' => 'google-language-translator/google-language-translator.php', 'Google Website Translator' => 'google-website-translator/google-website-translator.php', 'Weglot' => 'weglot/weglot.php');
|
1689 |
+
foreach($deactivate_plugins as $name => $plugin_file) {
|
1690 |
+
if(is_plugin_active($plugin_file)) {
|
1691 |
+
$deactivate_link = wp_nonce_url('plugins.php?action=deactivate&plugin='.urlencode($plugin_file ).'&plugin_status=all&paged=1&s=', 'deactivate-plugin_' . $plugin_file);
|
1692 |
+
$notices['deactivate_plugin_'.strtolower(str_replace(' ', '', $name))] = array(
|
1693 |
+
'title' => sprintf(__('Please deactivate %s plugin', 'gtranslate'), $name),
|
1694 |
+
'msg' => sprintf(__('%s plugin causes conflicts with GTranslate.', 'gtranslate'), $name),
|
1695 |
+
'link' => '<li><span class="dashicons dashicons-dismiss"></span><a href="'.$deactivate_link.'">' . sprintf(__('Deactivate %s plugin', 'gtranslate'), $name) . '</a></li>',
|
1696 |
+
'dismissible' => false,
|
1697 |
+
'int' => 0
|
1698 |
+
);
|
1699 |
+
}
|
1700 |
+
}
|
1701 |
+
|
1702 |
/*
|
1703 |
$one_week_support = esc_url(add_query_arg(array($this->prefix . '_admin_notice_ignore' => 'one_week_support')));
|
1704 |
|
1723 |
'<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $two_week_review_temp . '">' . __('Maybe later', 'gtranslate') . '</a></li>' .
|
1724 |
'<li><span class="dashicons dashicons-dismiss"></span><a href="' . $two_week_review_ignore . '">' . __('Never show again', 'gtranslate') . '</a></li>',
|
1725 |
'later_link' => $two_week_review_temp,
|
1726 |
+
'int' => 5
|
1727 |
);
|
1728 |
|
1729 |
$data = get_option('GTranslate');
|
1740 |
'<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $upgrade_tips_temp . '">' . __('Maybe later', 'gtranslate') . '</a></li>' .
|
1741 |
'<li><span class="dashicons dashicons-dismiss"></span><a href="' . $upgrade_tips_ignore . '">' . __('Never show again', 'gtranslate') . '</a></li>',
|
1742 |
'later_link' => $upgrade_tips_temp,
|
1743 |
+
'int' => 2
|
1744 |
);
|
1745 |
|
1746 |
$notices['upgrade_tips'][] = array(
|
1750 |
'<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $upgrade_tips_temp . '">' . __('Maybe later', 'gtranslate') . '</a></li>' .
|
1751 |
'<li><span class="dashicons dashicons-dismiss"></span><a href="' . $upgrade_tips_ignore . '">' . __('Never show again', 'gtranslate') . '</a></li>',
|
1752 |
'later_link' => $upgrade_tips_temp,
|
1753 |
+
'int' => 2
|
1754 |
);
|
1755 |
|
1756 |
$notices['upgrade_tips'][] = array(
|
1760 |
'<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $upgrade_tips_temp . '">' . __('Maybe later', 'gtranslate') . '</a></li>' .
|
1761 |
'<li><span class="dashicons dashicons-dismiss"></span><a href="' . $upgrade_tips_ignore . '">' . __('Never show again', 'gtranslate') . '</a></li>',
|
1762 |
'later_link' => $upgrade_tips_temp,
|
1763 |
+
'int' => 2
|
1764 |
);
|
1765 |
|
1766 |
$notices['upgrade_tips'][] = array(
|
1770 |
'<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $upgrade_tips_temp . '">' . __('Maybe later', 'gtranslate') . '</a></li>' .
|
1771 |
'<li><span class="dashicons dashicons-dismiss"></span><a href="' . $upgrade_tips_ignore . '">' . __('Never show again', 'gtranslate') . '</a></li>',
|
1772 |
'later_link' => $upgrade_tips_temp,
|
1773 |
+
'int' => 2
|
1774 |
);
|
1775 |
|
1776 |
$notices['upgrade_tips'][] = array(
|
1780 |
'<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $upgrade_tips_temp . '">' . __('Maybe later', 'gtranslate') . '</a></li>' .
|
1781 |
'<li><span class="dashicons dashicons-dismiss"></span><a href="' . $upgrade_tips_ignore . '">' . __('Never show again', 'gtranslate') . '</a></li>',
|
1782 |
'later_link' => $upgrade_tips_temp,
|
1783 |
+
'int' => 2
|
1784 |
);
|
1785 |
|
1786 |
shuffle($notices['upgrade_tips']);
|
1816 |
exit;
|
1817 |
} // #2 add trailing slash
|
1818 |
|
1819 |
+
if($data['widget_look'] == 'flags' or $data['widget_look'] == 'dropdown_with_flags' or $data['widget_look'] == 'flags_name' or $data['widget_look'] == 'flags_code' or $data['widget_look'] == 'popup')
|
1820 |
+
$allowed_languages = $data['fincl_langs'];
|
1821 |
+
elseif($data['widget_look'] == 'flags_dropdown')
|
1822 |
+
$allowed_languages = array_values(array_unique(array_merge($data['fincl_langs'], $data['incl_langs'])));
|
1823 |
+
else
|
1824 |
+
$allowed_languages = $data['incl_langs'];
|
1825 |
+
$allowed_languages = implode('|', $allowed_languages); // ex: en|ru|it|de
|
1826 |
+
if(preg_match('/^\/('.$allowed_languages.')\/(.*)/', $request_uri, $matches)) {
|
1827 |
$_GET['glang'] = $matches[1];
|
1828 |
$_GET['gurl'] = rawurldecode($matches[2]);
|
1829 |
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Author: Translate AI Multilingual Solutions
|
|
4 |
Tags: translate wordpress, multilingual, translate, translation, language, bilingual, localization, translation proxy, i18n, l10n, localisation, multilanguage, google translate
|
5 |
Requires at least: 2.8.1
|
6 |
Tested up to: 4.9
|
7 |
-
Stable tag: 2.8.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
Donate link: https://gtranslate.io/?xyz=998#pricing
|
@@ -219,6 +219,19 @@ You need to go to the language you want to edit, for instance, French: http://do
|
|
219 |
|
220 |
== Changelog ==
|
221 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
222 |
= 2.8.32 =
|
223 |
* New feature: auto switch language based on browser language settigns
|
224 |
* Minor fixes: Greek name in native alphabet, Flag size option for Globe Widget look, vertical position in pixels
|
4 |
Tags: translate wordpress, multilingual, translate, translation, language, bilingual, localization, translation proxy, i18n, l10n, localisation, multilanguage, google translate
|
5 |
Requires at least: 2.8.1
|
6 |
Tested up to: 4.9
|
7 |
+
Stable tag: 2.8.35
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
Donate link: https://gtranslate.io/?xyz=998#pricing
|
219 |
|
220 |
== Changelog ==
|
221 |
|
222 |
+
= 2.8.35 =
|
223 |
+
* Admin notice added for conflicting plugins
|
224 |
+
* Disabled translation of non-selected languages when accessed directly in sub-directory URL structure mode
|
225 |
+
* Update to WordPress 4.9.1 before updating GTranslate
|
226 |
+
* Fixed update issue related to bug in new WP 4.9 flatten_dirlist function
|
227 |
+
|
228 |
+
= 2.8.34 =
|
229 |
+
* Non-stable: Fixed update issue related to bug in new WP 4.9 flatten_dirlist function. Important: If you are using Globe widget look, make sure to open GTranslate settings page, click "Reset Code to Default" under Widget Code section and Save.
|
230 |
+
|
231 |
+
= 2.8.33 =
|
232 |
+
* Fixed issue related to new version of Contact Form 7
|
233 |
+
* Ready for WordPress 4.9
|
234 |
+
|
235 |
= 2.8.32 =
|
236 |
* New feature: auto switch language based on browser language settigns
|
237 |
* Minor fixes: Greek name in native alphabet, Flag size option for Globe Widget look, vertical position in pixels
|
url_addon/gtranslate.php
CHANGED
@@ -1,222 +1,232 @@
|
|
1 |
-
<?php
|
2 |
-
error_reporting(0);
|
3 |
-
|
4 |
-
include 'config.php';
|
5 |
-
|
6 |
-
if(!isset($_GET['glang']) or !isset($_GET['gurl']))
|
7 |
-
exit;
|
8 |
-
|
9 |
-
$glang = $_GET['glang'];
|
10 |
-
|
11 |
-
// pick a server based on hostname
|
12 |
-
$server_id = intval(substr(md5(preg_replace('/^www\./', '', $_SERVER['HTTP_HOST'])), 0, 5), 16) % count($servers);
|
13 |
-
$server = $servers[$server_id];
|
14 |
-
|
15 |
-
$page_url = '/'.$_GET['gurl'];
|
16 |
-
|
17 |
-
$page_url_segments = explode('/', $page_url);
|
18 |
-
foreach($page_url_segments as $i => $segment) {
|
19 |
-
$page_url_segments[$i] = rawurlencode($segment);
|
20 |
-
}
|
21 |
-
$page_url = implode('/', $page_url_segments);
|
22 |
-
|
23 |
-
$get_params = $_GET;
|
24 |
-
if(isset($get_params['glang']))
|
25 |
-
unset($get_params['glang']);
|
26 |
-
if(isset($get_params['gurl']))
|
27 |
-
unset($get_params['gurl']);
|
28 |
-
|
29 |
-
if(count($get_params)) {
|
30 |
-
$page_url .= '?' . http_build_query($get_params);
|
31 |
-
}
|
32 |
-
|
33 |
-
$main_lang = isset($data['default_language']) ? $data['default_language'] : $main_lang;
|
34 |
-
|
35 |
-
if($glang == $main_lang) {
|
36 |
-
$page_url = preg_replace('/^[\/]+/', '/', $page_url);
|
37 |
-
|
38 |
-
header('Location: ' . $page_url, true, 301);
|
39 |
-
exit;
|
40 |
-
}
|
41 |
-
|
42 |
-
$page_url = $server.'.tdn.gtranslate.net' . $page_url;
|
43 |
-
|
44 |
-
$protocol = ((isset($_SERVER['HTTPS']) and ($_SERVER['HTTPS'] == 'on' or $_SERVER['HTTPS'] == 1)) or (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https' : 'http';
|
45 |
-
$page_url = $protocol . '://' . $page_url;
|
46 |
-
|
47 |
-
if(!in_array(strtolower($glang), array('en','ar','bg','zh-cn','zh-tw','hr','cs','da','nl','fi','fr','de','el','hi','it','ja','ko','no','pl','pt','ro','ru','es','sv','ca','tl','iw','id','lv','lt','sr','sk','sl','uk','vi','sq','et','gl','hu','mt','th','tr','fa','af','ms','sw','ga','cy','be','is','mk','yi','hy','az','eu','ka','ht','ur','bn','bs','ceb','eo','gu','ha','hmn','ig','jw','kn','km','lo','la','mi','mr','mn','ne','pa','so','ta','te','yo','zu','my','ny','kk','mg','ml','si','st','su','tg','uz','am','co','haw','ku','ky','lb','ps','sm','gd','sn','sd','fy','xh')))
|
48 |
-
exit;
|
49 |
-
|
50 |
-
if(!function_exists("getallheaders")) {
|
51 |
-
//Adapted from http://www.php.net/manual/en/function.getallheaders.php#99814
|
52 |
-
function getallheaders() {
|
53 |
-
$result = array();
|
54 |
-
foreach($_SERVER as $key => $value) {
|
55 |
-
if (substr($key, 0, 5) == "HTTP_") {
|
56 |
-
$key = str_replace(" ", "-", ucwords(strtolower(str_replace("_", " ", substr($key, 5)))));
|
57 |
-
$result[$key] = $value;
|
58 |
-
} else if ($key == "CONTENT_TYPE") {
|
59 |
-
$result["Content-Type"] = $value;
|
60 |
-
}
|
61 |
-
}
|
62 |
-
return $result;
|
63 |
-
}
|
64 |
-
}
|
65 |
-
|
66 |
-
$request_headers = getallheaders();
|
67 |
-
|
68 |
-
if(isset($request_headers['X-GT-Lang']) or isset($request_headers['X-Gt-Lang']) or isset($request_headers['x-gt-lang'])) {
|
69 |
-
echo 'Please remove DNS cname records for GTranslate!';
|
70 |
-
exit;
|
71 |
-
}
|
72 |
-
|
73 |
-
$host = $glang . '.' . preg_replace('/^www\./', '', $_SERVER['HTTP_HOST']);
|
74 |
-
$request_headers['Host'] = $host;
|
75 |
-
if(isset($request_headers['HOST'])) unset($request_headers['HOST']);
|
76 |
-
if(isset($request_headers['host'])) unset($request_headers['host']);
|
77 |
-
|
78 |
-
if(!function_exists('gzdecode'))
|
79 |
-
$request_headers['Accept-Encoding'] = '';
|
80 |
-
else
|
81 |
-
$request_headers['Accept-Encoding'] = 'gzip';
|
82 |
-
|
83 |
-
if(isset($request_headers['accept-encoding'])) unset($request_headers['accept-encoding']);
|
84 |
-
|
85 |
-
if(isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
|
86 |
-
$request_headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
|
87 |
-
if(isset($request_headers['authorization'])) unset($request_headers['authorization']);
|
88 |
-
}
|
89 |
-
//print_r($request_headers);
|
90 |
-
//exit;
|
91 |
-
|
92 |
-
if(isset($request_headers['
|
93 |
-
$request_headers['Content-Type'] = '
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
//
|
108 |
-
$
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
case '
|
128 |
-
curl_setopt($ch,
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
$
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
$
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
$
|
185 |
-
|
186 |
-
|
187 |
-
$
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
);
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
error_reporting(0);
|
3 |
+
|
4 |
+
include 'config.php';
|
5 |
+
|
6 |
+
if(!isset($_GET['glang']) or !isset($_GET['gurl']))
|
7 |
+
exit;
|
8 |
+
|
9 |
+
$glang = $_GET['glang'];
|
10 |
+
|
11 |
+
// pick a server based on hostname
|
12 |
+
$server_id = intval(substr(md5(preg_replace('/^www\./', '', $_SERVER['HTTP_HOST'])), 0, 5), 16) % count($servers);
|
13 |
+
$server = $servers[$server_id];
|
14 |
+
|
15 |
+
$page_url = '/'.$_GET['gurl'];
|
16 |
+
|
17 |
+
$page_url_segments = explode('/', $page_url);
|
18 |
+
foreach($page_url_segments as $i => $segment) {
|
19 |
+
$page_url_segments[$i] = rawurlencode($segment);
|
20 |
+
}
|
21 |
+
$page_url = implode('/', $page_url_segments);
|
22 |
+
|
23 |
+
$get_params = $_GET;
|
24 |
+
if(isset($get_params['glang']))
|
25 |
+
unset($get_params['glang']);
|
26 |
+
if(isset($get_params['gurl']))
|
27 |
+
unset($get_params['gurl']);
|
28 |
+
|
29 |
+
if(count($get_params)) {
|
30 |
+
$page_url .= '?' . http_build_query($get_params);
|
31 |
+
}
|
32 |
+
|
33 |
+
$main_lang = isset($data['default_language']) ? $data['default_language'] : $main_lang;
|
34 |
+
|
35 |
+
if($glang == $main_lang) {
|
36 |
+
$page_url = preg_replace('/^[\/]+/', '/', $page_url);
|
37 |
+
|
38 |
+
header('Location: ' . $page_url, true, 301);
|
39 |
+
exit;
|
40 |
+
}
|
41 |
+
|
42 |
+
$page_url = $server.'.tdn.gtranslate.net' . $page_url;
|
43 |
+
|
44 |
+
$protocol = ((isset($_SERVER['HTTPS']) and ($_SERVER['HTTPS'] == 'on' or $_SERVER['HTTPS'] == 1)) or (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https' : 'http';
|
45 |
+
$page_url = $protocol . '://' . $page_url;
|
46 |
+
|
47 |
+
if(!in_array(strtolower($glang), array('en','ar','bg','zh-cn','zh-tw','hr','cs','da','nl','fi','fr','de','el','hi','it','ja','ko','no','pl','pt','ro','ru','es','sv','ca','tl','iw','id','lv','lt','sr','sk','sl','uk','vi','sq','et','gl','hu','mt','th','tr','fa','af','ms','sw','ga','cy','be','is','mk','yi','hy','az','eu','ka','ht','ur','bn','bs','ceb','eo','gu','ha','hmn','ig','jw','kn','km','lo','la','mi','mr','mn','ne','pa','so','ta','te','yo','zu','my','ny','kk','mg','ml','si','st','su','tg','uz','am','co','haw','ku','ky','lb','ps','sm','gd','sn','sd','fy','xh')))
|
48 |
+
exit;
|
49 |
+
|
50 |
+
if(!function_exists("getallheaders")) {
|
51 |
+
//Adapted from http://www.php.net/manual/en/function.getallheaders.php#99814
|
52 |
+
function getallheaders() {
|
53 |
+
$result = array();
|
54 |
+
foreach($_SERVER as $key => $value) {
|
55 |
+
if (substr($key, 0, 5) == "HTTP_") {
|
56 |
+
$key = str_replace(" ", "-", ucwords(strtolower(str_replace("_", " ", substr($key, 5)))));
|
57 |
+
$result[$key] = $value;
|
58 |
+
} else if ($key == "CONTENT_TYPE") {
|
59 |
+
$result["Content-Type"] = $value;
|
60 |
+
}
|
61 |
+
}
|
62 |
+
return $result;
|
63 |
+
}
|
64 |
+
}
|
65 |
+
|
66 |
+
$request_headers = getallheaders();
|
67 |
+
|
68 |
+
if(isset($request_headers['X-GT-Lang']) or isset($request_headers['X-Gt-Lang']) or isset($request_headers['x-gt-lang'])) {
|
69 |
+
echo 'Please remove DNS cname records for GTranslate!';
|
70 |
+
exit;
|
71 |
+
}
|
72 |
+
|
73 |
+
$host = $glang . '.' . preg_replace('/^www\./', '', $_SERVER['HTTP_HOST']);
|
74 |
+
$request_headers['Host'] = $host;
|
75 |
+
if(isset($request_headers['HOST'])) unset($request_headers['HOST']);
|
76 |
+
if(isset($request_headers['host'])) unset($request_headers['host']);
|
77 |
+
|
78 |
+
if(!function_exists('gzdecode'))
|
79 |
+
$request_headers['Accept-Encoding'] = '';
|
80 |
+
else
|
81 |
+
$request_headers['Accept-Encoding'] = 'gzip';
|
82 |
+
|
83 |
+
if(isset($request_headers['accept-encoding'])) unset($request_headers['accept-encoding']);
|
84 |
+
|
85 |
+
if(isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
|
86 |
+
$request_headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
|
87 |
+
if(isset($request_headers['authorization'])) unset($request_headers['authorization']);
|
88 |
+
}
|
89 |
+
//print_r($request_headers);
|
90 |
+
//exit;
|
91 |
+
|
92 |
+
if(isset($request_headers['content-type'])) {
|
93 |
+
$request_headers['Content-Type'] = $request_headers['content-type'];
|
94 |
+
unset($request_headers['content-type']);
|
95 |
+
}
|
96 |
+
|
97 |
+
if(isset($request_headers['Content-Type']) and strpos($request_headers['Content-Type'], 'multipart/form-data;') !== false) {
|
98 |
+
$request_headers['Content-Type'] = 'multipart/form-data'; // remove boundary
|
99 |
+
$request_headers['Content-Length'] = '';
|
100 |
+
|
101 |
+
if(isset($request_headers['content-length']))
|
102 |
+
unset($request_headers['content-length']);
|
103 |
+
}
|
104 |
+
|
105 |
+
$headers = array();
|
106 |
+
foreach($request_headers as $key => $val) {
|
107 |
+
// remove cloudflare CF headers: CF-IPCountry, CF-Ray, etc...
|
108 |
+
if(preg_match('/^CF-/i', $key))
|
109 |
+
continue;
|
110 |
+
else
|
111 |
+
$headers[] = $key . ': ' . $val;
|
112 |
+
}
|
113 |
+
|
114 |
+
//print_r($headers);
|
115 |
+
//exit;
|
116 |
+
|
117 |
+
// proxy request
|
118 |
+
$ch = curl_init();
|
119 |
+
curl_setopt($ch, CURLOPT_URL, $page_url);
|
120 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
121 |
+
curl_setopt($ch, CURLOPT_HEADER, true);
|
122 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
123 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
124 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
|
125 |
+
|
126 |
+
switch($_SERVER['REQUEST_METHOD']) {
|
127 |
+
case 'POST': {
|
128 |
+
curl_setopt($ch, CURLOPT_POST, true);
|
129 |
+
if(isset($request_headers['Content-Type']) and strpos($request_headers['Content-Type'], 'multipart/form-data') !== false) {
|
130 |
+
http_build_query_for_curl($_POST, $new_post);
|
131 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, $new_post); // todo: think about $_FILES: http://php.net/manual/en/class.curlfile.php
|
132 |
+
} else {
|
133 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents('php://input'));
|
134 |
+
}
|
135 |
+
}; break;
|
136 |
+
|
137 |
+
case 'PUT': {
|
138 |
+
curl_setopt($ch, CURLOPT_PUT, true);
|
139 |
+
curl_setopt($ch, CURLOPT_INFILE, fopen('php://input', 'r'));
|
140 |
+
}; break;
|
141 |
+
}
|
142 |
+
|
143 |
+
// Debug
|
144 |
+
if($debug or isset($_GET['enable_debug'])) {
|
145 |
+
$fh = fopen('debug.txt', 'a');
|
146 |
+
curl_setopt($ch, CURLOPT_VERBOSE, true);
|
147 |
+
curl_setopt($ch, CURLOPT_STDERR, $fh);
|
148 |
+
}
|
149 |
+
|
150 |
+
$response = curl_exec($ch);
|
151 |
+
$response_info = curl_getinfo($ch);
|
152 |
+
curl_close($ch);
|
153 |
+
|
154 |
+
//print_r($response_info);
|
155 |
+
|
156 |
+
$header_size = $response_info['header_size'];
|
157 |
+
$header = substr($response, 0, $header_size);
|
158 |
+
$html = substr($response, $header_size);
|
159 |
+
|
160 |
+
if(function_exists('gzdecode')) {
|
161 |
+
$return_gz = false;
|
162 |
+
$html_gunzip = @gzdecode($html);
|
163 |
+
|
164 |
+
if($html_gunzip !== false) {
|
165 |
+
$html = $html_gunzip;
|
166 |
+
unset($html_gunzip);
|
167 |
+
|
168 |
+
if(strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) {
|
169 |
+
$return_gz = true;
|
170 |
+
header('Content-Encoding: gzip');
|
171 |
+
header('Vary: Accept-Encoding');
|
172 |
+
}
|
173 |
+
}
|
174 |
+
}
|
175 |
+
|
176 |
+
$response_headers = explode(PHP_EOL, $header);
|
177 |
+
//print_r($response_headers);
|
178 |
+
$headers_sent = '';
|
179 |
+
foreach($response_headers as $header) {
|
180 |
+
if(!empty($header) and !preg_match('/Content\-Length|Transfer\-Encoding|Content\-Encoding|Link/i', $header)) {
|
181 |
+
|
182 |
+
if(preg_match('/^Location:/i', $header)) {
|
183 |
+
$header = str_ireplace($host, $_SERVER['HTTP_HOST'] . '/' . $glang, $header);
|
184 |
+
$header = str_ireplace('Location: /', 'Location: /' . $glang . '/', $header);
|
185 |
+
}
|
186 |
+
|
187 |
+
$headers_sent .= $header;
|
188 |
+
header($header, false);
|
189 |
+
}
|
190 |
+
}
|
191 |
+
//echo $headers_sent;
|
192 |
+
|
193 |
+
// TODO: modify URLs
|
194 |
+
$html = str_ireplace($host, $_SERVER['HTTP_HOST'] . '/' . $glang, $html);
|
195 |
+
$html = str_ireplace('href="/', 'href="/' . $glang . '/', $html);
|
196 |
+
$html = preg_replace('/href=\"\/' . $glang . '\/(af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-CN|zh-TW|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu)\//i', 'href="/$1/', $html); // fix double language code
|
197 |
+
$html = str_ireplace('href="/' . $glang . '//', 'href="//', $html);
|
198 |
+
$html = str_ireplace('action="/', 'action="/' . $glang . '/', $html);
|
199 |
+
$html = str_ireplace('action="/' . $glang . '//', 'action="//', $html);
|
200 |
+
$html = str_ireplace('action="//' . $_SERVER['HTTP_HOST'], 'action="//' . $_SERVER['HTTP_HOST'] . '/' . $glang, $html);
|
201 |
+
|
202 |
+
// woocommerce specific changes
|
203 |
+
$html = str_ireplace(
|
204 |
+
array('"wc_ajax_url":"\\/', '"checkout_url":"\\/', 'var wc_country_select_params', 'var wc_address_i18n_params' ),
|
205 |
+
array('"wc_ajax_url":"\\/'.$glang.'\\/', '"checkout_url":"\\/'.$glang.'\\/', 'var wc_country_select_params2', 'var wc_address_i18n_params2'),
|
206 |
+
$html
|
207 |
+
);
|
208 |
+
|
209 |
+
if(isset($_GET['language_edit'])) {
|
210 |
+
$html = str_replace('/tdn-static/', $protocol . '://tdns.gtranslate.net/tdn-static/', $html);
|
211 |
+
$html = str_replace('/tdn-bin/', $protocol . '://' . $_SERVER['HTTP_HOST'] . '/' . $glang . '/tdn-bin/', $html);
|
212 |
+
}
|
213 |
+
|
214 |
+
if(function_exists('gzencode') and isset($return_gz) and $return_gz and zlib_get_coding_type() == false)
|
215 |
+
echo gzencode($html);
|
216 |
+
else
|
217 |
+
echo $html;
|
218 |
+
|
219 |
+
function http_build_query_for_curl($arrays, &$new = array(), $prefix = null) { // flatten multidimentional array for post
|
220 |
+
if(is_object($arrays)) {
|
221 |
+
$arrays = get_object_vars($arrays);
|
222 |
+
}
|
223 |
+
|
224 |
+
foreach($arrays AS $key => $value) {
|
225 |
+
$k = isset($prefix) ? $prefix . '[' . $key . ']' : $key;
|
226 |
+
if(is_array($value) or is_object($value)) {
|
227 |
+
http_build_query_for_curl($value, $new, $k);
|
228 |
+
} else {
|
229 |
+
$new[$k] = $value;
|
230 |
+
}
|
231 |
+
}
|
232 |
+
}
|