Version Description
- (Core/Options) Added handling of actions for the tabs.
- (Core/Controller) Added filter
googlesitekit_canonical_home_url
. - (Core/WP_Options) Fixed PHP Notice:
Array to string conversion
. - (Core/Plugin Install) Fixed
uasort
warning. - (Core) Code clean-up.
- (Vendor/RankMathSEO) Typo.
- (Core/Updater) Updater v.1.0.10.
Download this release
Release Info
Developer | tivnet |
Plugin | WPGlobus – Multilingual Everything! |
Version | 2.6.1 |
Comparing to | |
See all releases |
Code changes from version 2.6.0 to 2.6.1
- data/wpglobus-product-info.json +1 -1
- includes/admin/class-wpglobus-plugin-install.php +1 -1
- includes/class-wpglobus.php +0 -9
- includes/js/wpglobus-options.js +31 -0
- includes/js/wpglobus-options.min.js +1 -1
- includes/vendor/rank-math-seo/class-wpglobus-vendor-rank_math_seo-front.php +81 -81
- includes/vendor/rank-math-seo/class-wpglobus-vendor-rank_math_seo.php +103 -103
- includes/vendor/wpglobus-aioseop.php +39 -38
- includes/wp_options/class-wpglobus-wp_options.php +14 -3
- includes/wpglobus-controller.php +13 -1
- languages/wpglobus.pot +1074 -1074
- readme.txt +269 -260
- vendor/composer/ClassLoader.php +3 -3
- vendor/composer/InstalledVersions.php +227 -0
- vendor/composer/autoload_classmap.php +1 -0
- vendor/composer/autoload_real.php +4 -1
- vendor/composer/autoload_static.php +5 -0
- vendor/composer/installed.json +68 -62
- vendor/composer/installed.php +42 -0
- vendor/tivwp/updater/class-tivwp-updater.php +143 -204
- vendor/tivwp/updater/doc/sample-usage.php +23 -10
- vendor/tivwp/updater/includes/class-tivwp-updater-setup-admin-area.php +30 -61
- vendor/tivwp/updater/includes/license-management-form.php +31 -18
- vendor/tivwp/updater/updater.php +43 -42
- wpglobus.php +2 -2
data/wpglobus-product-info.json
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"multilingual-woocommerce-nets-netaxept":{"title":"{:en}Multilingual WooCommerce Nets Netaxept{:}{:ru}\u041c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f WooCommerce Nets Netaxept{:}","_api_new_version":"1.0.3","_api_tested_up_to":"4.9.8"},"wpglobus-menu-visibility":{"title":"WPGlobus Menu Visibility","_api_new_version":"1.2.0","_api_tested_up_to":"4.9.6"},"wpglobus-multi-currency":{"title":"{:en}Multi-Currency for WooCommerce{:}{:ru}WPGlobus - \u041c\u0443\u043b\u044c\u0442\u0438\u0432\u0430\u043b\u044e\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f WooCommerce{:}","_api_new_version":"1.1.1","_api_tested_up_to":"4.9.4"},"wpglobus-
|
1 |
+
{"multilingual-woocommerce-nets-netaxept":{"title":"{:en}Multilingual WooCommerce Nets Netaxept{:}{:ru}\u041c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f WooCommerce Nets Netaxept{:}","_api_new_version":"1.0.3","_api_tested_up_to":"4.9.8"},"wpglobus-menu-visibility":{"title":"WPGlobus Menu Visibility","_api_new_version":"1.2.0","_api_tested_up_to":"4.9.6"},"wpglobus-multi-currency":{"title":"{:en}Multi-Currency for WooCommerce{:}{:ru}WPGlobus - \u041c\u0443\u043b\u044c\u0442\u0438\u0432\u0430\u043b\u044e\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f WooCommerce{:}","_api_new_version":"1.1.1","_api_tested_up_to":"4.9.4"},"wpglobus-header-images":{"title":"{:en}WPGlobus Header Images{:}{:ru}WPGlobus Header Images{:}","_api_new_version":"2.1.0","_api_tested_up_to":"5.5"},"wpglobus-mobile-menu":{"title":"{:en}WPGlobus Mobile Menu{:}{:ru}WPGlobus Mobile Menu{:}","_api_new_version":"2.1.0","_api_tested_up_to":"5.5.1"},"wpglobus-for-bridge-theme":{"title":"{:en}WPGlobus for the \"Bridge\" theme{:}{:ru}WPGlobus \u0434\u043b\u044f \u0442\u0435\u043c\u044b Bridge{:}","_api_new_version":"2.3.0","_api_tested_up_to":"5.5"},"wpglobus-multilingual-notices":{"title":"{:en}WPGlobus Multilingual Notices{:}{:ru}WPGlobus - \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f{:}","_api_new_version":"2.2.0","_api_tested_up_to":"5.5"},"woocommerce-wpglobus":{"title":"{:en}WPGlobus for WooCommerce{:}{:ru}\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 WooCommerce WPGlobus{:}","_api_new_version":"4.2.0","_api_tested_up_to":"5.6"},"wpglobus-plus":{"title":"{:en}WPGlobus Plus multilingual extension{:}{:ru}WPGlobus \u041f\u043b\u044e\u0441{:}","_api_new_version":"1.5.2","_api_tested_up_to":"5.6"},"wpglobus-language-widgets":{"title":"{:en}WPGlobus Language Widgets{:}{:ru}\u042f\u0437\u044b\u043a\u0438 WPGlobus \u0434\u043b\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432{:}","_api_new_version":"2.0.0","_api_tested_up_to":"5.6.0"}}
|
includes/admin/class-wpglobus-plugin-install.php
CHANGED
@@ -104,7 +104,7 @@ if ( ! class_exists( 'WPGlobus_Plugin_Install' ) ) :
|
|
104 |
* @return int
|
105 |
*/
|
106 |
public static function sort_paid_plugins( $a, $b ) {
|
107 |
-
return $a['order']
|
108 |
}
|
109 |
|
110 |
/**
|
104 |
* @return int
|
105 |
*/
|
106 |
public static function sort_paid_plugins( $a, $b ) {
|
107 |
+
return ( $a['order'] < $b['order'] ) ? - 1 : 1;
|
108 |
}
|
109 |
|
110 |
/**
|
includes/class-wpglobus.php
CHANGED
@@ -605,16 +605,7 @@ class WPGlobus {
|
|
605 |
|
606 |
$type = empty( $post ) ? '' : $post->post_type;
|
607 |
if ( ! $this->disabled_entity( $type ) ) {
|
608 |
-
|
609 |
require_once 'vendor/wpglobus-aioseop.php';
|
610 |
-
/**
|
611 |
-
* @since 2.3.9 remove after testing.
|
612 |
-
*/
|
613 |
-
//require_once 'vendor/class-wpglobus-aioseop.php';
|
614 |
-
//if ( WPGlobus_WP::is_pagenow( array( 'post.php', 'post-new.php' ) ) ) {
|
615 |
-
/** @noinspection PhpUnusedLocalVariableInspection */
|
616 |
-
//$WPGlobus_aioseop = new WPGlobus_aioseop();
|
617 |
-
//}
|
618 |
}
|
619 |
}
|
620 |
}
|
605 |
|
606 |
$type = empty( $post ) ? '' : $post->post_type;
|
607 |
if ( ! $this->disabled_entity( $type ) ) {
|
|
|
608 |
require_once 'vendor/wpglobus-aioseop.php';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
609 |
}
|
610 |
}
|
611 |
}
|
includes/js/wpglobus-options.js
CHANGED
@@ -99,6 +99,11 @@ jQuery(document).ready(function ($) {
|
|
99 |
setTimeout(function(){
|
100 |
$('#section-tab-'+WPGlobusOptions.tab+' .wpglobus-options-menu .wpglobus-tab-link-subsection').eq(0).click();
|
101 |
}, 200);
|
|
|
|
|
|
|
|
|
|
|
102 |
},
|
103 |
initLanguageTable: function() {
|
104 |
var $items = $('.wpglobus-the-language-item-installed');
|
@@ -149,7 +154,11 @@ jQuery(document).ready(function ($) {
|
|
149 |
$('#section-tab-'+tab+' .wpglobus-tab-link-subsection').eq(0).click();
|
150 |
}
|
151 |
}
|
|
|
|
|
|
|
152 |
});
|
|
|
153 |
/* @since 2.5.3 */
|
154 |
$(document).on('click', '.wpglobus-tab-link-subsection', function(event){
|
155 |
var tab = $(this).data('tab');
|
@@ -160,6 +169,28 @@ jQuery(document).ready(function ($) {
|
|
160 |
$('#wpglobus-tab-link-subsection-'+tab).addClass('wpglobus-tab-link-active');
|
161 |
});
|
162 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
initSpecs: function() {
|
164 |
$(document).on('dblclick', '#section-tab-customizer h2', function(ev){
|
165 |
$('.wpglobus-theme-info-spec').removeClass('hidden');
|
99 |
setTimeout(function(){
|
100 |
$('#section-tab-'+WPGlobusOptions.tab+' .wpglobus-options-menu .wpglobus-tab-link-subsection').eq(0).click();
|
101 |
}, 200);
|
102 |
+
|
103 |
+
/**
|
104 |
+
* @since 2.6.1
|
105 |
+
*/
|
106 |
+
api.tabActions( api.getCurrentTabID() );
|
107 |
},
|
108 |
initLanguageTable: function() {
|
109 |
var $items = $('.wpglobus-the-language-item-installed');
|
154 |
$('#section-tab-'+tab+' .wpglobus-tab-link-subsection').eq(0).click();
|
155 |
}
|
156 |
}
|
157 |
+
|
158 |
+
// @since 2.6.1
|
159 |
+
api.tabActions( $(this) );
|
160 |
});
|
161 |
+
|
162 |
/* @since 2.5.3 */
|
163 |
$(document).on('click', '.wpglobus-tab-link-subsection', function(event){
|
164 |
var tab = $(this).data('tab');
|
169 |
$('#wpglobus-tab-link-subsection-'+tab).addClass('wpglobus-tab-link-active');
|
170 |
});
|
171 |
},
|
172 |
+
tabActions: function($tab) {
|
173 |
+
/**
|
174 |
+
* @since 2.6.1
|
175 |
+
*/
|
176 |
+
if ( 'string' === typeof $tab ) {
|
177 |
+
$tab = $('#wpglobus-tab-link-'+$tab).eq(0);
|
178 |
+
}
|
179 |
+
|
180 |
+
if ( $tab.length == 0 ) {
|
181 |
+
return;
|
182 |
+
}
|
183 |
+
|
184 |
+
/**
|
185 |
+
* Hide/Show submit button.
|
186 |
+
* @since 2.6.1
|
187 |
+
*/
|
188 |
+
if ( $tab.hasClass('wpglobus-tab-hide-submit-button') ) {
|
189 |
+
$('#form-wpglobus-options .submit').addClass('hidden');
|
190 |
+
} else {
|
191 |
+
$('#form-wpglobus-options .submit').removeClass('hidden');
|
192 |
+
}
|
193 |
+
},
|
194 |
initSpecs: function() {
|
195 |
$(document).on('dblclick', '#section-tab-customizer h2', function(ev){
|
196 |
$('.wpglobus-theme-info-spec').removeClass('hidden');
|
includes/js/wpglobus-options.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function(
|
1 |
+
jQuery(document).ready(function(e){"use strict";var s;"undefined"!=typeof WPGlobusOptions&&(s={currentTabID:"",firstLanguageCb:null,init:function(){s.initTab(),s.checkHandlers(),s.addListeners(),s.initSpecs()},setCurrentTabID:function(t){s.currentTabID=t},getCurrentTabID:function(){return s.currentTabID},setFirstLanguageCb:function(){null!==s.firstLanguageCb&&s.firstLanguageCb.off("click"),e('#enabled_languages-list li input[type="checkbox"]').prop("disabled",!1);var t=e("#enabled_languages-list li").eq(0);s.firstLanguageCb=t.find('input[type="checkbox"]'),s.firstLanguageCb.prop("checked","checked"),s.firstLanguageCb.prop("disabled","disabled"),s.firstLanguageCb.css({visibility:"hidden"}),s.firstLanguageCb.on("click",function(t){return t.preventDefault(),!1})},handlerEnabled_languages:function(){e(".wpglobus-sortable").sortable({placeholder:"ui-state-highlight",update:function(t,n){e('#enabled_languages-list li input[type="checkbox"]').css({visibility:"visible"}),s.setFirstLanguageCb()}}),e(".wpglobus-sortable").disableSelection(),s.setFirstLanguageCb()},handlerLanguagesTable:function(){var s=e("#wpglobus-options-languagesTable").parents(".wpglobus-options-tab").data("tab");e("#wpglobus-options-languagesTable .manage-column.sortable a").each(function(t,n){var a=e(n).attr("href");-1!=a.indexOf("tab")?-1==a.indexOf("tab-from")&&(a=a.replace(/tab/,"tab-from"),a+="&tab="+s):a+="&tab="+s,e(n).attr("href",a)})},checkHandlers:function(){e(".wpglobus-options-field").each(function(t,n){if(void 0===e(n).data("js-handler"))return!0;var a=e(n).data("js-handler");"function"==typeof s[a]&&s[a]()})},initTab:function(){var t=e("#section-tab-"+WPGlobusOptions.tab);s.setCurrentTabID(WPGlobusOptions.tab),0==t.length&&(s.setCurrentTabID(WPGlobusOptions.defaultTab),t=e("#section-tab-"+s.currentTabID)),t.css({display:"block"}),e("#wpglobus-tab-link-"+s.currentTabID).addClass("wpglobus-tab-link-active"),s.initLanguageTable(),e(".wpglobus-options-wrap .no-inline-js").attr("onclick","return false;"),setTimeout(function(){e("#section-tab-"+WPGlobusOptions.tab+" .wpglobus-options-menu .wpglobus-tab-link-subsection").eq(0).click()},200),s.tabActions(s.getCurrentTabID())},initLanguageTable:function(){var a,s,t=e(".wpglobus-the-language-item-installed");9<t.length||(a=[],t.each(function(t){var n=+e(this).data("order");a[n]=e(this)}),s=e("#wpglobus-options-languagesTable #the-list tr").eq(0),e.each(a,function(t,n){e(s).before(n)}))},addListeners:function(){e(document).on("click","input.wpglobus-enabled_languages",function(t){var n=e(this).prop("checked"),a=e(this).attr("rel");n?e("#"+a).val("1"):e("#"+a).val("")}),e(document).on("click",".wpglobus-tab-link",function(t){var n=e(this).data("tab");s.setCurrentTabID(n),window.history.pushState("data","Title",WPGlobusOptions.newUrl.replace("{*}",n)),e(".wpglobus-options-tab").css({display:"none"}),e("#section-tab-"+n).css({display:"block"}),e(".wpglobus-tab-link").removeClass("wpglobus-tab-link-active"),e("#wpglobus-tab-link-"+n).addClass("wpglobus-tab-link-active"),e("#wpglobus_options_current_tab").val(n),1==e("#section-tab-"+n+" .wpglobus-tab-link-subsection.wpglobus-tab-link-active").length?e("#section-tab-"+n+" .wpglobus-tab-link-subsection.wpglobus-tab-link-active").click():0<e("#section-tab-"+n+" .wpglobus-tab-link-subsection").length&&e("#section-tab-"+n+" .wpglobus-tab-link-subsection").eq(0).click(),s.tabActions(e(this))}),e(document).on("click",".wpglobus-tab-link-subsection",function(t){var n=e(this).data("tab");e(".wpglobus-options-tab-subsection").css({display:"none"}),e("#subsection-tab-"+n).css({display:"block"}),e(".wpglobus-tab-link-subsection").removeClass("wpglobus-tab-link-active"),e("#wpglobus-tab-link-subsection-"+n).addClass("wpglobus-tab-link-active")})},tabActions:function(t){"string"==typeof t&&(t=e("#wpglobus-tab-link-"+t).eq(0)),0!=t.length&&(t.hasClass("wpglobus-tab-hide-submit-button")?e("#form-wpglobus-options .submit").addClass("hidden"):e("#form-wpglobus-options .submit").removeClass("hidden"))},initSpecs:function(){e(document).on("dblclick","#section-tab-customizer h2",function(t){e(".wpglobus-theme-info-spec").removeClass("hidden")}),e(document).on("dblclick",".column-wpglobus_flag",function(t){location=location.href+"&flags"})}},(WPGlobusOptions=e.extend({},WPGlobusOptions,s)).init())});
|
includes/vendor/rank-math-seo/class-wpglobus-vendor-rank_math_seo-front.php
CHANGED
@@ -1,82 +1,82 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* File: class-wpglobus-vendor-rank_math_seo-front.php
|
4 |
-
*
|
5 |
-
* @since 2.4.3
|
6 |
-
* @since 2.4.4 Add filters for title, description.
|
7 |
-
*
|
8 |
-
* @package WPGlobus\
|
9 |
-
* @author Alex Gor(alexgff)
|
10 |
-
*/
|
11 |
-
|
12 |
-
/**
|
13 |
-
* Class WPGlobus_Vendor_RankMathSEO_Front.
|
14 |
-
*/
|
15 |
-
if ( ! class_exists( 'WPGlobus_Vendor_RankMathSEO_Front' ) ) :
|
16 |
-
|
17 |
-
class WPGlobus_Vendor_RankMathSEO_Front {
|
18 |
-
|
19 |
-
public static function controller() {
|
20 |
-
add_filter( 'wpglobus_multilingual_meta_keys', array( __CLASS__, 'filter__multilingual_meta_keys' ), 5 );
|
21 |
-
|
22 |
-
/**
|
23 |
-
* We need this filter when title is empty and use macro.
|
24 |
-
*
|
25 |
-
* @since 2.4.4
|
26 |
-
* @see seo-by-rank-math\includes\frontend\paper\class-paper.php
|
27 |
-
* @see seo-by-rank-math\includes\traits\class-hooker.php
|
28 |
-
*/
|
29 |
-
add_filter( 'rank_math/frontend/title', array( __CLASS__, 'filter__frontend_title' ), 5 );
|
30 |
-
|
31 |
-
/**
|
32 |
-
* @since 2.4.4
|
33 |
-
* @see seo-by-rank-math\includes\frontend\paper\class-paper.php
|
34 |
-
* @see seo-by-rank-math\includes\traits\class-hooker.php
|
35 |
-
*/
|
36 |
-
add_filter( 'rank_math/frontend/description', array( __CLASS__, 'filter__frontend_description' ), 5 );
|
37 |
-
}
|
38 |
-
|
39 |
-
/**
|
40 |
-
* Filter the title.
|
41 |
-
* @since 2.4.4
|
42 |
-
*
|
43 |
-
* @param string $title The title being put out.
|
44 |
-
*/
|
45 |
-
public static function filter__frontend_title( $title ) {
|
46 |
-
|
47 |
-
if ( WPGlobus_Core::has_translations($title) ) {
|
48 |
-
return WPGlobus_Core::extract_text($title);
|
49 |
-
}
|
50 |
-
|
51 |
-
return $title;
|
52 |
-
}
|
53 |
-
|
54 |
-
/**
|
55 |
-
* Filter the description.
|
56 |
-
* @since 2.4.4
|
57 |
-
*
|
58 |
-
* @param string $description The description sentence.
|
59 |
-
*/
|
60 |
-
public static function filter__frontend_description( $description ) {
|
61 |
-
|
62 |
-
if ( WPGlobus_Core::has_translations($description) ) {
|
63 |
-
return WPGlobus_Core::extract_text($description);
|
64 |
-
}
|
65 |
-
|
66 |
-
return $description;
|
67 |
-
}
|
68 |
-
|
69 |
-
/**
|
70 |
-
* Specify meta keys where the meta data can be multilingual.
|
71 |
-
*/
|
72 |
-
public static function filter__multilingual_meta_keys( $multilingual_meta_keys ) {
|
73 |
-
$multilingual_meta_keys['rank_math_title'] = true;
|
74 |
-
$multilingual_meta_keys['rank_math_description'] = true;
|
75 |
-
$multilingual_meta_keys['rank_math_focus_keyword'] = true;
|
76 |
-
return $multilingual_meta_keys;
|
77 |
-
}
|
78 |
-
}
|
79 |
-
|
80 |
-
endif;
|
81 |
-
|
82 |
# --- EOF
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: class-wpglobus-vendor-rank_math_seo-front.php
|
4 |
+
*
|
5 |
+
* @since 2.4.3
|
6 |
+
* @since 2.4.4 Add filters for title, description.
|
7 |
+
*
|
8 |
+
* @package WPGlobus\Vendors\RankMathSEO.
|
9 |
+
* @author Alex Gor(alexgff)
|
10 |
+
*/
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Class WPGlobus_Vendor_RankMathSEO_Front.
|
14 |
+
*/
|
15 |
+
if ( ! class_exists( 'WPGlobus_Vendor_RankMathSEO_Front' ) ) :
|
16 |
+
|
17 |
+
class WPGlobus_Vendor_RankMathSEO_Front {
|
18 |
+
|
19 |
+
public static function controller() {
|
20 |
+
add_filter( 'wpglobus_multilingual_meta_keys', array( __CLASS__, 'filter__multilingual_meta_keys' ), 5 );
|
21 |
+
|
22 |
+
/**
|
23 |
+
* We need this filter when title is empty and use macro.
|
24 |
+
*
|
25 |
+
* @since 2.4.4
|
26 |
+
* @see seo-by-rank-math\includes\frontend\paper\class-paper.php
|
27 |
+
* @see seo-by-rank-math\includes\traits\class-hooker.php
|
28 |
+
*/
|
29 |
+
add_filter( 'rank_math/frontend/title', array( __CLASS__, 'filter__frontend_title' ), 5 );
|
30 |
+
|
31 |
+
/**
|
32 |
+
* @since 2.4.4
|
33 |
+
* @see seo-by-rank-math\includes\frontend\paper\class-paper.php
|
34 |
+
* @see seo-by-rank-math\includes\traits\class-hooker.php
|
35 |
+
*/
|
36 |
+
add_filter( 'rank_math/frontend/description', array( __CLASS__, 'filter__frontend_description' ), 5 );
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Filter the title.
|
41 |
+
* @since 2.4.4
|
42 |
+
*
|
43 |
+
* @param string $title The title being put out.
|
44 |
+
*/
|
45 |
+
public static function filter__frontend_title( $title ) {
|
46 |
+
|
47 |
+
if ( WPGlobus_Core::has_translations($title) ) {
|
48 |
+
return WPGlobus_Core::extract_text($title);
|
49 |
+
}
|
50 |
+
|
51 |
+
return $title;
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Filter the description.
|
56 |
+
* @since 2.4.4
|
57 |
+
*
|
58 |
+
* @param string $description The description sentence.
|
59 |
+
*/
|
60 |
+
public static function filter__frontend_description( $description ) {
|
61 |
+
|
62 |
+
if ( WPGlobus_Core::has_translations($description) ) {
|
63 |
+
return WPGlobus_Core::extract_text($description);
|
64 |
+
}
|
65 |
+
|
66 |
+
return $description;
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Specify meta keys where the meta data can be multilingual.
|
71 |
+
*/
|
72 |
+
public static function filter__multilingual_meta_keys( $multilingual_meta_keys ) {
|
73 |
+
$multilingual_meta_keys['rank_math_title'] = true;
|
74 |
+
$multilingual_meta_keys['rank_math_description'] = true;
|
75 |
+
$multilingual_meta_keys['rank_math_focus_keyword'] = true;
|
76 |
+
return $multilingual_meta_keys;
|
77 |
+
}
|
78 |
+
}
|
79 |
+
|
80 |
+
endif;
|
81 |
+
|
82 |
# --- EOF
|
includes/vendor/rank-math-seo/class-wpglobus-vendor-rank_math_seo.php
CHANGED
@@ -1,104 +1,104 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* File: class-wpglobus-vendor-rank_math_seo.php
|
4 |
-
*
|
5 |
-
* @since 2.4.3
|
6 |
-
*
|
7 |
-
* @package WPGlobus\
|
8 |
-
* @author Alex Gor(alexgff)
|
9 |
-
*/
|
10 |
-
/**
|
11 |
-
* Class WPGlobus_Vendor_RankMathSEO.
|
12 |
-
*/
|
13 |
-
if ( ! class_exists( 'WPGlobus_Vendor_RankMathSEO' ) ) :
|
14 |
-
|
15 |
-
class WPGlobus_Vendor_RankMathSEO {
|
16 |
-
|
17 |
-
protected static $post_meta_fields = null;
|
18 |
-
|
19 |
-
/**
|
20 |
-
* List of fields to add `wpglobus-translatable` class.
|
21 |
-
*/
|
22 |
-
protected static $post_multilingual_fields = null;
|
23 |
-
|
24 |
-
/**
|
25 |
-
* @var object Instance of this class.
|
26 |
-
*/
|
27 |
-
protected static $instance;
|
28 |
-
|
29 |
-
/**
|
30 |
-
* Constructor.
|
31 |
-
*/
|
32 |
-
protected function __construct(){}
|
33 |
-
|
34 |
-
/**
|
35 |
-
* Get instance of this class.
|
36 |
-
*
|
37 |
-
* @return WPGlobus_Vendor_RankMathSEO
|
38 |
-
*/
|
39 |
-
public static function get_instance() {
|
40 |
-
if ( ! ( self::$instance instanceof WPGlobus_Vendor_RankMathSEO ) ) {
|
41 |
-
self::$instance = new self();
|
42 |
-
}
|
43 |
-
|
44 |
-
return self::$instance;
|
45 |
-
}
|
46 |
-
|
47 |
-
/**
|
48 |
-
* Get multilingual fields.
|
49 |
-
*/
|
50 |
-
public static function get_post_multilingual_fields() {
|
51 |
-
if ( is_null( self::$post_multilingual_fields ) ) {
|
52 |
-
return false;
|
53 |
-
}
|
54 |
-
|
55 |
-
return self::$post_multilingual_fields;
|
56 |
-
}
|
57 |
-
|
58 |
-
/**
|
59 |
-
* Get post meta.
|
60 |
-
*
|
61 |
-
* Don't call WPGlobus::Config() inside function to prevent the resetting of `meta` property.
|
62 |
-
*
|
63 |
-
* @param $post_id
|
64 |
-
* @param string $post_type
|
65 |
-
*
|
66 |
-
* @return array
|
67 |
-
*/
|
68 |
-
public static function get_post_meta_fields( $post_id, $post_type = 'post' ) {
|
69 |
-
|
70 |
-
if ( ! is_null( self::$post_meta_fields ) ) {
|
71 |
-
return self::$post_meta_fields;
|
72 |
-
}
|
73 |
-
|
74 |
-
$post_id = (int) $post_id;
|
75 |
-
|
76 |
-
if ( $post_id > 0 ) {
|
77 |
-
|
78 |
-
self::$post_meta_fields = array(
|
79 |
-
'rank_math_title',
|
80 |
-
'rank_math_description',
|
81 |
-
'rank_math_focus_keyword',
|
82 |
-
);
|
83 |
-
}
|
84 |
-
|
85 |
-
return self::$post_meta_fields;
|
86 |
-
}
|
87 |
-
|
88 |
-
/**
|
89 |
-
* Check 3rd party plugin to enable/disable field.
|
90 |
-
*
|
91 |
-
* @param array $field
|
92 |
-
*
|
93 |
-
* @return bool
|
94 |
-
*/
|
95 |
-
protected static function get_3rd_party_field_status( $field ) {
|
96 |
-
// @see wpglobus\includes\vendor\acf\class-wpglobus-acf.php for example.
|
97 |
-
return true;
|
98 |
-
}
|
99 |
-
|
100 |
-
}
|
101 |
-
|
102 |
-
endif;
|
103 |
-
|
104 |
# --- EOF
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: class-wpglobus-vendor-rank_math_seo.php
|
4 |
+
*
|
5 |
+
* @since 2.4.3
|
6 |
+
*
|
7 |
+
* @package WPGlobus\Vendors\RankMathSEO.
|
8 |
+
* @author Alex Gor(alexgff)
|
9 |
+
*/
|
10 |
+
/**
|
11 |
+
* Class WPGlobus_Vendor_RankMathSEO.
|
12 |
+
*/
|
13 |
+
if ( ! class_exists( 'WPGlobus_Vendor_RankMathSEO' ) ) :
|
14 |
+
|
15 |
+
class WPGlobus_Vendor_RankMathSEO {
|
16 |
+
|
17 |
+
protected static $post_meta_fields = null;
|
18 |
+
|
19 |
+
/**
|
20 |
+
* List of fields to add `wpglobus-translatable` class.
|
21 |
+
*/
|
22 |
+
protected static $post_multilingual_fields = null;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* @var object Instance of this class.
|
26 |
+
*/
|
27 |
+
protected static $instance;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Constructor.
|
31 |
+
*/
|
32 |
+
protected function __construct(){}
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Get instance of this class.
|
36 |
+
*
|
37 |
+
* @return WPGlobus_Vendor_RankMathSEO
|
38 |
+
*/
|
39 |
+
public static function get_instance() {
|
40 |
+
if ( ! ( self::$instance instanceof WPGlobus_Vendor_RankMathSEO ) ) {
|
41 |
+
self::$instance = new self();
|
42 |
+
}
|
43 |
+
|
44 |
+
return self::$instance;
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Get multilingual fields.
|
49 |
+
*/
|
50 |
+
public static function get_post_multilingual_fields() {
|
51 |
+
if ( is_null( self::$post_multilingual_fields ) ) {
|
52 |
+
return false;
|
53 |
+
}
|
54 |
+
|
55 |
+
return self::$post_multilingual_fields;
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Get post meta.
|
60 |
+
*
|
61 |
+
* Don't call WPGlobus::Config() inside function to prevent the resetting of `meta` property.
|
62 |
+
*
|
63 |
+
* @param $post_id
|
64 |
+
* @param string $post_type
|
65 |
+
*
|
66 |
+
* @return array
|
67 |
+
*/
|
68 |
+
public static function get_post_meta_fields( $post_id, $post_type = 'post' ) {
|
69 |
+
|
70 |
+
if ( ! is_null( self::$post_meta_fields ) ) {
|
71 |
+
return self::$post_meta_fields;
|
72 |
+
}
|
73 |
+
|
74 |
+
$post_id = (int) $post_id;
|
75 |
+
|
76 |
+
if ( $post_id > 0 ) {
|
77 |
+
|
78 |
+
self::$post_meta_fields = array(
|
79 |
+
'rank_math_title',
|
80 |
+
'rank_math_description',
|
81 |
+
'rank_math_focus_keyword',
|
82 |
+
);
|
83 |
+
}
|
84 |
+
|
85 |
+
return self::$post_meta_fields;
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* Check 3rd party plugin to enable/disable field.
|
90 |
+
*
|
91 |
+
* @param array $field
|
92 |
+
*
|
93 |
+
* @return bool
|
94 |
+
*/
|
95 |
+
protected static function get_3rd_party_field_status( $field ) {
|
96 |
+
// @see wpglobus\includes\vendor\acf\class-wpglobus-acf.php for example.
|
97 |
+
return true;
|
98 |
+
}
|
99 |
+
|
100 |
+
}
|
101 |
+
|
102 |
+
endif;
|
103 |
+
|
104 |
# --- EOF
|
includes/vendor/wpglobus-aioseop.php
CHANGED
@@ -1,39 +1,40 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* File: wpglobus-aioseop.php
|
4 |
-
* Support Standard/Classic mode.
|
5 |
-
*
|
6 |
-
* @since 2.3.9
|
7 |
-
*
|
8 |
-
*
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
*
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
|
|
39 |
# --- EOF
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: wpglobus-aioseop.php
|
4 |
+
* Support Standard/Classic mode.
|
5 |
+
*
|
6 |
+
* @since 2.3.9
|
7 |
+
* @since 2.6.1 Support All in One SEO v.3 only.
|
8 |
+
*
|
9 |
+
* @package WPGlobus\All-in-One-SEO
|
10 |
+
*/
|
11 |
+
|
12 |
+
if ( defined( 'AIOSEOP_VERSION' ) ) {
|
13 |
+
|
14 |
+
if ( version_compare( AIOSEOP_VERSION, '3.4.2', '>=' ) ) {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Load `WPGlobus_aioseop` class after loading of vendor class.
|
18 |
+
* @see `plugins_loaded` action in all-in-one-seo-pack\class-aioseop-core.php
|
19 |
+
*/
|
20 |
+
function wpglobus_vendor__aioseop_load() {
|
21 |
+
require_once 'class-wpglobus-aioseop.php';
|
22 |
+
if ( WPGlobus_WP::is_pagenow( array( 'post.php', 'post-new.php' ) ) ) {
|
23 |
+
/** @noinspection PhpUnusedLocalVariableInspection */
|
24 |
+
$WPGlobus_aioseop = new WPGlobus_aioseop();
|
25 |
+
}
|
26 |
+
}
|
27 |
+
add_action( 'plugins_loaded', 'wpglobus_vendor__aioseop_load', 6 );
|
28 |
+
|
29 |
+
} else {
|
30 |
+
|
31 |
+
require_once 'class-wpglobus-aioseop.php';
|
32 |
+
if ( WPGlobus_WP::is_pagenow( array( 'post.php', 'post-new.php' ) ) ) {
|
33 |
+
/** @noinspection PhpUnusedLocalVariableInspection */
|
34 |
+
$WPGlobus_aioseop = new WPGlobus_aioseop();
|
35 |
+
}
|
36 |
+
}
|
37 |
+
|
38 |
+
}
|
39 |
+
|
40 |
# --- EOF
|
includes/wp_options/class-wpglobus-wp_options.php
CHANGED
@@ -1,11 +1,15 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
*
|
4 |
*
|
5 |
* @package WPGlobus\WP_Options
|
6 |
* @author Alex Gor(alexgff)
|
7 |
*/
|
8 |
|
|
|
|
|
|
|
|
|
9 |
if ( ! class_exists( 'WPGlobus_WP_Options' ) ) :
|
10 |
|
11 |
class WPGlobus_WP_Options {
|
@@ -30,10 +34,15 @@ if ( ! class_exists( 'WPGlobus_WP_Options' ) ) :
|
|
30 |
|
31 |
if ( is_admin() ) {
|
32 |
foreach ( $wp_options as $option ) {
|
33 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
}
|
35 |
}
|
36 |
-
|
37 |
}
|
38 |
|
39 |
/**
|
@@ -78,3 +87,5 @@ if ( ! class_exists( 'WPGlobus_WP_Options' ) ) :
|
|
78 |
}
|
79 |
|
80 |
endif;
|
|
|
|
1 |
<?php
|
2 |
/**
|
3 |
+
* File: class-wpglobus-wp_options.php
|
4 |
*
|
5 |
* @package WPGlobus\WP_Options
|
6 |
* @author Alex Gor(alexgff)
|
7 |
*/
|
8 |
|
9 |
+
/**
|
10 |
+
* Class WPGlobus_WP_Options.
|
11 |
+
* To filter the options from `wp_options` table.
|
12 |
+
*/
|
13 |
if ( ! class_exists( 'WPGlobus_WP_Options' ) ) :
|
14 |
|
15 |
class WPGlobus_WP_Options {
|
34 |
|
35 |
if ( is_admin() ) {
|
36 |
foreach ( $wp_options as $option ) {
|
37 |
+
if ( ! empty( $option ) ) {
|
38 |
+
if ( is_string( $option ) ) {
|
39 |
+
add_filter( 'option_' . $option, array( __CLASS__, 'filter__translate_option' ) );
|
40 |
+
} else {
|
41 |
+
// @since 2.6.1 Case for array.
|
42 |
+
}
|
43 |
+
}
|
44 |
}
|
45 |
}
|
|
|
46 |
}
|
47 |
|
48 |
/**
|
87 |
}
|
88 |
|
89 |
endif;
|
90 |
+
|
91 |
+
# --- EOF
|
includes/wpglobus-controller.php
CHANGED
@@ -552,4 +552,16 @@ if ( defined('APL_VERSION') ) {
|
|
552 |
}
|
553 |
}
|
554 |
|
555 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
552 |
}
|
553 |
}
|
554 |
|
555 |
+
/**
|
556 |
+
* https://sitekit.withgoogle.com/
|
557 |
+
* https://github.com/WPGlobus/WPGlobus/issues/94
|
558 |
+
* @since 2.6.1
|
559 |
+
*/
|
560 |
+
add_filter(
|
561 |
+
'googlesitekit_canonical_home_url',
|
562 |
+
function() {
|
563 |
+
return get_option( 'home' );
|
564 |
+
}
|
565 |
+
);
|
566 |
+
|
567 |
+
# --- EOF
|
languages/wpglobus.pot
CHANGED
@@ -1,1074 +1,1074 @@
|
|
1 |
-
# Copyright (C)
|
2 |
-
# This file is distributed under the same license as the WPGlobus 2.6.
|
3 |
-
msgid ""
|
4 |
-
msgstr ""
|
5 |
-
"Project-Id-Version: WPGlobus 2.6.
|
6 |
-
"MIME-Version: 1.0\n"
|
7 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
-
"Content-Transfer-Encoding: 8bit\n"
|
9 |
-
"Last-Translator: The WPGlobus Team <support@wpglobus.com>\n"
|
10 |
-
"Report-Msgid-Bugs-To: support@wpglobus.com\n"
|
11 |
-
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
12 |
-
|
13 |
-
msgid "Guide"
|
14 |
-
msgstr ""
|
15 |
-
|
16 |
-
msgid "WPGlobus Help Desk"
|
17 |
-
msgstr ""
|
18 |
-
|
19 |
-
msgid "Add-ons"
|
20 |
-
msgstr ""
|
21 |
-
|
22 |
-
msgid "Quick Start"
|
23 |
-
msgstr ""
|
24 |
-
|
25 |
-
msgid "FAQ"
|
26 |
-
msgstr ""
|
27 |
-
|
28 |
-
msgid "Attention: the Multibyte String PHP extension (`mbstring`) is not loaded!"
|
29 |
-
msgstr ""
|
30 |
-
|
31 |
-
msgid "The mbstring extension is required for the full UTF-8 compatibility and better performance. Without it, some parts of WordPress and WPGlobus may function incorrectly. Please contact your hosting company or systems administrator."
|
32 |
-
msgstr ""
|
33 |
-
|
34 |
-
msgid "Go to WPGlobus Settings"
|
35 |
-
msgstr ""
|
36 |
-
|
37 |
-
msgid "Easy as 1-2-3:"
|
38 |
-
msgstr ""
|
39 |
-
|
40 |
-
msgid "Go to WPGlobus admin menu and choose the countries / languages;"
|
41 |
-
msgstr ""
|
42 |
-
|
43 |
-
msgid "Enter the translations to the posts, pages, categories, tags and menus using a clean and simple interface."
|
44 |
-
msgstr ""
|
45 |
-
|
46 |
-
msgid "Switch languages at the front-end using a drop-down menu with language names and country flags."
|
47 |
-
msgstr ""
|
48 |
-
|
49 |
-
msgid "Links:"
|
50 |
-
msgstr ""
|
51 |
-
|
52 |
-
msgid "FAQs"
|
53 |
-
msgstr ""
|
54 |
-
|
55 |
-
msgid "Contact Us"
|
56 |
-
msgstr ""
|
57 |
-
|
58 |
-
msgid "Please give us 5 stars!"
|
59 |
-
msgstr ""
|
60 |
-
|
61 |
-
msgid "WPGlobus does not translate texts automatically!"
|
62 |
-
msgstr ""
|
63 |
-
|
64 |
-
msgid "There are many translation companies and individual translators who can help you write and proofread the texts."
|
65 |
-
msgstr ""
|
66 |
-
|
67 |
-
msgid "When you choose a translator, please look at their native language, country of residence, specialization and knowledge of WordPress."
|
68 |
-
msgstr ""
|
69 |
-
|
70 |
-
#. translators: %s are used to insert HTML link. Keep them in place.
|
71 |
-
msgid "We are planning to maintain a %s list of translators %s on the WPGlobus website. This is not an endorsement, just a courtesy. Please contact them directly and let us know how did it work for you!"
|
72 |
-
msgstr ""
|
73 |
-
|
74 |
-
msgid "Important notes:"
|
75 |
-
msgstr ""
|
76 |
-
|
77 |
-
msgid "WPGlobus only supports the localization URLs in the form of <code>example.com/xx/page/</code>. We do not plan to support subdomains <code>xx.example.com</code> and language queries <code>example.com?lang=xx</code>."
|
78 |
-
msgstr ""
|
79 |
-
|
80 |
-
msgid "Some themes and plugins are <strong>not multilingual-ready</strong>."
|
81 |
-
msgstr ""
|
82 |
-
|
83 |
-
msgid "They might display some texts with no translation, or with all languages mixed together."
|
84 |
-
msgstr ""
|
85 |
-
|
86 |
-
#. translators: %s are used to insert HTML link. Keep them in place.
|
87 |
-
msgid "Please contact the theme / plugin author. If they are unable to assist, consider %s hiring the WPGlobus Team %s to write a custom code for you."
|
88 |
-
msgstr ""
|
89 |
-
|
90 |
-
msgid "Language was set on your profile page"
|
91 |
-
msgstr ""
|
92 |
-
|
93 |
-
msgid "Add"
|
94 |
-
msgstr ""
|
95 |
-
|
96 |
-
msgid "Multilingual Everything!"
|
97 |
-
msgstr ""
|
98 |
-
|
99 |
-
msgid "WPGlobus is a family of WordPress plugins assisting you in making multilingual WordPress blogs and sites."
|
100 |
-
msgstr ""
|
101 |
-
|
102 |
-
msgid "Remove the WPGlobus settings (not recommended)"
|
103 |
-
msgstr ""
|
104 |
-
|
105 |
-
msgid "Clean-up Tool"
|
106 |
-
msgstr ""
|
107 |
-
|
108 |
-
msgid "Support"
|
109 |
-
msgstr ""
|
110 |
-
|
111 |
-
msgid "WARNING: this operation is non-reversible. It is strongly recommended that you backup your database before proceeding."
|
112 |
-
msgstr ""
|
113 |
-
|
114 |
-
msgid "This tool should be used only if you plan to completely uninstall WPGlobus. By running it, you will remove ALL translations you have entered to your post, pages, etc., keeping only the MAIN language texts. Please make sure that all entries have some content in the main language. Otherwise, you might end up with empty titles, no content, no excerpts, blank comments and so on."
|
115 |
-
msgstr ""
|
116 |
-
|
117 |
-
msgid "Make sure that your active theme does not have any code related to WPGlobus. Such code could be added by you or by a 3rd party developer. If that code runs without first verifying that WPGlobus is active, WordPress may die with a fatal error."
|
118 |
-
msgstr ""
|
119 |
-
|
120 |
-
#. translators: %1$s - language name, %2$s - language code. Do not remove.
|
121 |
-
msgid "The main language is currently set to %1$s (%2$s). ALL TEXTS THAT ARE NOT IN %1$s WILL BE DELETED! To change the main language, please go to {{settings}}."
|
122 |
-
msgstr ""
|
123 |
-
|
124 |
-
msgid "You are about to clean the content of the following database tables:"
|
125 |
-
msgstr ""
|
126 |
-
|
127 |
-
msgid "The operations log"
|
128 |
-
msgstr ""
|
129 |
-
|
130 |
-
msgid "We are going to write a detailed log of all the database changes performed. It should help in the case you need to restore something important. The log will be written to the file:"
|
131 |
-
msgstr ""
|
132 |
-
|
133 |
-
msgid "Uncheck if you do not want to write the operations log (we recommend to keep it checked)"
|
134 |
-
msgstr ""
|
135 |
-
|
136 |
-
msgid "You have been warned..."
|
137 |
-
msgstr ""
|
138 |
-
|
139 |
-
msgid "Please confirm by checking the box below:"
|
140 |
-
msgstr ""
|
141 |
-
|
142 |
-
msgid "I have read and understood everything written on this page. I am aware that by using this tool I may loose some content of my website. I have made a database backup and know how to restore it if necessary. I am fully responsible for the results."
|
143 |
-
msgstr ""
|
144 |
-
|
145 |
-
msgid "YES, I CONFIRM"
|
146 |
-
msgstr ""
|
147 |
-
|
148 |
-
msgid "Process with the Clean-up"
|
149 |
-
msgstr ""
|
150 |
-
|
151 |
-
msgid "Default"
|
152 |
-
msgstr ""
|
153 |
-
|
154 |
-
msgid "Section"
|
155 |
-
msgstr ""
|
156 |
-
|
157 |
-
msgid "Show all sections"
|
158 |
-
msgstr ""
|
159 |
-
|
160 |
-
msgid "Save & Reload"
|
161 |
-
msgstr ""
|
162 |
-
|
163 |
-
msgid "WPGlobus"
|
164 |
-
msgstr ""
|
165 |
-
|
166 |
-
msgid "You need to update WordPress to 4.5 or later to get Fields Settings section"
|
167 |
-
msgstr ""
|
168 |
-
|
169 |
-
msgid "Fields Settings"
|
170 |
-
msgstr ""
|
171 |
-
|
172 |
-
msgid "WPGlobus Settings"
|
173 |
-
msgstr ""
|
174 |
-
|
175 |
-
msgid "Help"
|
176 |
-
msgstr ""
|
177 |
-
|
178 |
-
msgid "Languages"
|
179 |
-
msgstr ""
|
180 |
-
|
181 |
-
msgid "Enabled Languages"
|
182 |
-
msgstr ""
|
183 |
-
|
184 |
-
msgid "These languages are currently enabled on your site."
|
185 |
-
msgstr ""
|
186 |
-
|
187 |
-
msgid "Choose a language you would like to enable."
|
188 |
-
msgstr ""
|
189 |
-
|
190 |
-
msgid "Press the [Save & Publish] button to confirm."
|
191 |
-
msgstr ""
|
192 |
-
|
193 |
-
#. translators: %1$s and %2$s - placeholders to insert HTML link around 'here'
|
194 |
-
#. translators: %1$s and %2$s - placeholders to insert HTML link around 'here'.
|
195 |
-
msgid "or Add new Language %1$s here %2$s"
|
196 |
-
msgstr ""
|
197 |
-
|
198 |
-
msgid "Add Languages"
|
199 |
-
msgstr ""
|
200 |
-
|
201 |
-
msgid "Language Selector Mode"
|
202 |
-
msgstr ""
|
203 |
-
|
204 |
-
msgid "Two-letter Code with flag (en, ru, it, etc.)"
|
205 |
-
msgstr ""
|
206 |
-
|
207 |
-
msgid "Full Name (English, Russian, Italian, etc.)"
|
208 |
-
msgstr ""
|
209 |
-
|
210 |
-
msgid "Full Name with flag (English, Russian, Italian, etc.)"
|
211 |
-
msgstr ""
|
212 |
-
|
213 |
-
msgid "Flags only"
|
214 |
-
msgstr ""
|
215 |
-
|
216 |
-
msgid "Choose the way language name and country flag are shown in the drop-down menu"
|
217 |
-
msgstr ""
|
218 |
-
|
219 |
-
msgid "select navigation menu"
|
220 |
-
msgstr ""
|
221 |
-
|
222 |
-
msgid "Language Selector Menu"
|
223 |
-
msgstr ""
|
224 |
-
|
225 |
-
msgid "Choose the navigation menu where the language selector will be shown"
|
226 |
-
msgstr ""
|
227 |
-
|
228 |
-
msgid "No menus have been created yet. Create some."
|
229 |
-
msgstr ""
|
230 |
-
|
231 |
-
msgid "\"All Pages\" menus Language selector"
|
232 |
-
msgstr ""
|
233 |
-
|
234 |
-
msgid "Adds language selector to the menus that automatically list all existing pages (using `wp_list_pages`)"
|
235 |
-
msgstr ""
|
236 |
-
|
237 |
-
msgid "Custom CSS"
|
238 |
-
msgstr ""
|
239 |
-
|
240 |
-
msgid "Here you can enter the CSS rules to adjust the language selector menu for your theme. Look at the examples in the `style-samples.css` file."
|
241 |
-
msgstr ""
|
242 |
-
|
243 |
-
msgid "Post types"
|
244 |
-
msgstr ""
|
245 |
-
|
246 |
-
msgid "Uncheck to disable WPGlobus"
|
247 |
-
msgstr ""
|
248 |
-
|
249 |
-
msgid "Redirect"
|
250 |
-
msgstr ""
|
251 |
-
|
252 |
-
msgid "Choose the language automatically, based on:"
|
253 |
-
msgstr ""
|
254 |
-
|
255 |
-
msgid "Preferred language set in the browser"
|
256 |
-
msgstr ""
|
257 |
-
|
258 |
-
msgid "When a user comes to the site for the first time, try to find the best matching language version of the page."
|
259 |
-
msgstr ""
|
260 |
-
|
261 |
-
msgid "Custom JS Code"
|
262 |
-
msgstr ""
|
263 |
-
|
264 |
-
msgid "Title"
|
265 |
-
msgstr ""
|
266 |
-
|
267 |
-
msgid "(Paste your JS code here.)"
|
268 |
-
msgstr ""
|
269 |
-
|
270 |
-
msgid "To add a Custom JS Code in Customizer, you need to upgrade WordPress to version 4.9 or later."
|
271 |
-
msgstr ""
|
272 |
-
|
273 |
-
msgid "With your version of WordPress, please use the"
|
274 |
-
msgstr ""
|
275 |
-
|
276 |
-
msgid "WPGlobus Settings page"
|
277 |
-
msgstr ""
|
278 |
-
|
279 |
-
msgid "Label"
|
280 |
-
msgstr ""
|
281 |
-
|
282 |
-
msgid "Description"
|
283 |
-
msgstr ""
|
284 |
-
|
285 |
-
msgid "Here you can specify which fields should be considered multilingual by WPGlobus. To exclude a field, uncheck it and then press the button %s below."
|
286 |
-
msgstr ""
|
287 |
-
|
288 |
-
msgid "Thank you for installing WPGlobus!"
|
289 |
-
msgstr ""
|
290 |
-
|
291 |
-
msgid "Read About WPGlobus"
|
292 |
-
msgstr ""
|
293 |
-
|
294 |
-
msgid "Click the <strong>[Languages]</strong> tab at the left to setup the options."
|
295 |
-
msgstr ""
|
296 |
-
|
297 |
-
msgid "Should you have any questions or comments, please do not hesitate to contact us."
|
298 |
-
msgstr ""
|
299 |
-
|
300 |
-
msgid "Sincerely Yours,"
|
301 |
-
msgstr ""
|
302 |
-
|
303 |
-
msgid "The WPGlobus Team"
|
304 |
-
msgstr ""
|
305 |
-
|
306 |
-
#. translators: %?$s: HTML codes for hyperlink. Do not remove.
|
307 |
-
#. translators: %?$s: HTML codes for hyperlink. Do not remove.
|
308 |
-
msgid "We would hate to see you go. If something goes wrong, do not uninstall WPGlobus yet. Please %1$stalk to us%2$s and let us help!"
|
309 |
-
msgstr ""
|
310 |
-
|
311 |
-
msgid "Please note that if you deactivate WPGlobus, your site will show all the languages together, mixed up. You will need to remove all translations, keeping only one language."
|
312 |
-
msgstr ""
|
313 |
-
|
314 |
-
#. translators: %s: link to the Clean-up Tool
|
315 |
-
#. translators: %s: link to the Clean-up Tool.
|
316 |
-
msgid "If there are just a few places, you should edit them manually. To automatically remove all translations at once, you can use the %s. WARNING: The clean-up operation is irreversible, so use it only if you need to completely uninstall WPGlobus."
|
317 |
-
msgstr ""
|
318 |
-
|
319 |
-
#. translators: %?$s: HTML codes for hyperlink. Do not remove.
|
320 |
-
#. translators: %?$s: HTML codes for hyperlink. Do not remove.
|
321 |
-
msgid "%1$sClean-up Tool%2$s"
|
322 |
-
msgstr ""
|
323 |
-
|
324 |
-
#. translators: %s: name of current theme
|
325 |
-
msgid "Sorry, WPGlobus customizer doesn't support current theme %s."
|
326 |
-
msgstr ""
|
327 |
-
|
328 |
-
#. translators: %?$s: HTML codes for hyperlink. Do not remove.
|
329 |
-
msgid "Please use %1$sWPGlobus options page%2$s instead."
|
330 |
-
msgstr ""
|
331 |
-
|
332 |
-
msgid "Expand/Shrink"
|
333 |
-
msgstr ""
|
334 |
-
|
335 |
-
msgid "WPGlobus News"
|
336 |
-
msgstr ""
|
337 |
-
|
338 |
-
msgid "Options updated"
|
339 |
-
msgstr ""
|
340 |
-
|
341 |
-
msgid "Please enter a language code!"
|
342 |
-
msgstr ""
|
343 |
-
|
344 |
-
msgid "Language code already exists!"
|
345 |
-
msgstr ""
|
346 |
-
|
347 |
-
msgid "Please specify the language flag!"
|
348 |
-
msgstr ""
|
349 |
-
|
350 |
-
msgid "Please enter the language name!"
|
351 |
-
msgstr ""
|
352 |
-
|
353 |
-
msgid "Please enter the language name in English!"
|
354 |
-
msgstr ""
|
355 |
-
|
356 |
-
msgid "Please enter the locale!"
|
357 |
-
msgstr ""
|
358 |
-
|
359 |
-
msgid "Add Language"
|
360 |
-
msgstr ""
|
361 |
-
|
362 |
-
msgid "Delete Language"
|
363 |
-
msgstr ""
|
364 |
-
|
365 |
-
msgid "Edit Language"
|
366 |
-
msgstr ""
|
367 |
-
|
368 |
-
msgid "Language Code"
|
369 |
-
msgstr ""
|
370 |
-
|
371 |
-
msgid "2-Letter ISO Language Code for the Language you want to insert. (Example: en)"
|
372 |
-
msgstr ""
|
373 |
-
|
374 |
-
msgid "Language flag"
|
375 |
-
msgstr ""
|
376 |
-
|
377 |
-
msgid "Name"
|
378 |
-
msgstr ""
|
379 |
-
|
380 |
-
msgid "The name of the language in its native alphabet. (Examples: English, Русский)"
|
381 |
-
msgstr ""
|
382 |
-
|
383 |
-
msgid "Name in English"
|
384 |
-
msgstr ""
|
385 |
-
|
386 |
-
msgid "The name of the language in English"
|
387 |
-
msgstr ""
|
388 |
-
|
389 |
-
msgid "Locale"
|
390 |
-
msgstr ""
|
391 |
-
|
392 |
-
msgid "PHP/WordPress Locale of the language. (Examples: en_US, ru_RU)"
|
393 |
-
msgstr ""
|
394 |
-
|
395 |
-
msgid "Are you sure you want to delete?"
|
396 |
-
msgstr ""
|
397 |
-
|
398 |
-
msgid "Save Changes"
|
399 |
-
msgstr ""
|
400 |
-
|
401 |
-
msgid "Back to the WPGlobus Settings"
|
402 |
-
msgstr ""
|
403 |
-
|
404 |
-
msgid "Current Version"
|
405 |
-
msgstr ""
|
406 |
-
|
407 |
-
msgid "Premium add-on"
|
408 |
-
msgstr ""
|
409 |
-
|
410 |
-
msgid "Installed"
|
411 |
-
msgstr ""
|
412 |
-
|
413 |
-
msgid "Get it now!"
|
414 |
-
msgstr ""
|
415 |
-
|
416 |
-
#. translators: placeholders are for the HTML tags.
|
417 |
-
msgid "If you have already purchased a WPGlobus premium extension, please read %1$sthe installation instructions here%2$s"
|
418 |
-
msgstr ""
|
419 |
-
|
420 |
-
msgid "Help Desk"
|
421 |
-
msgstr ""
|
422 |
-
|
423 |
-
msgid "Email not sent. Please fill in the entire form."
|
424 |
-
msgstr ""
|
425 |
-
|
426 |
-
msgid "Email not sent. Please verify that your name and email are entered correctly."
|
427 |
-
msgstr ""
|
428 |
-
|
429 |
-
msgid "Email sent."
|
430 |
-
msgstr ""
|
431 |
-
|
432 |
-
msgid "Thank you for using WPGlobus!"
|
433 |
-
msgstr ""
|
434 |
-
|
435 |
-
msgid "Our Support Team is here to answer your questions or concerns."
|
436 |
-
msgstr ""
|
437 |
-
|
438 |
-
msgid "To help us serve you better:"
|
439 |
-
msgstr ""
|
440 |
-
|
441 |
-
msgid "Please check if the problem persists if you switch to a standard WordPress theme."
|
442 |
-
msgstr ""
|
443 |
-
|
444 |
-
msgid "Try deactivating other plugins to see if any of them conflicts with WPGlobus."
|
445 |
-
msgstr ""
|
446 |
-
|
447 |
-
msgid "Please fill in and submit the contact form:"
|
448 |
-
msgstr ""
|
449 |
-
|
450 |
-
msgid "Please make sure the email address is correct."
|
451 |
-
msgstr ""
|
452 |
-
|
453 |
-
msgid "Subject"
|
454 |
-
msgstr ""
|
455 |
-
|
456 |
-
msgid "Short description of the problem"
|
457 |
-
msgstr ""
|
458 |
-
|
459 |
-
msgid "Detailed description"
|
460 |
-
msgstr ""
|
461 |
-
|
462 |
-
msgid "Technical Information"
|
463 |
-
msgstr ""
|
464 |
-
|
465 |
-
msgid "This information helps us to find the problem source"
|
466 |
-
msgstr ""
|
467 |
-
|
468 |
-
msgid "Alternatively, please email %s. Do not forget to copy and paste the technical information to your email message."
|
469 |
-
msgstr ""
|
470 |
-
|
471 |
-
msgid "WPGlobus Recommends:"
|
472 |
-
msgstr ""
|
473 |
-
|
474 |
-
msgid "WPGlobus for WooCommerce"
|
475 |
-
msgstr ""
|
476 |
-
|
477 |
-
msgid "Translate product titles and descriptions, product categories, tags and attributes."
|
478 |
-
msgstr ""
|
479 |
-
|
480 |
-
msgid "Get it now:"
|
481 |
-
msgstr ""
|
482 |
-
|
483 |
-
msgid "WooCommerce Multi-Currency"
|
484 |
-
msgstr ""
|
485 |
-
|
486 |
-
msgid "Accept multiple currencies in your online store!"
|
487 |
-
msgstr ""
|
488 |
-
|
489 |
-
msgid "Check it out:"
|
490 |
-
msgstr ""
|
491 |
-
|
492 |
-
msgid "To translate permalinks, please activate the module Slug."
|
493 |
-
msgstr ""
|
494 |
-
|
495 |
-
msgid "Translate permalinks with our premium add-on, WPGlobus Plus!"
|
496 |
-
msgstr ""
|
497 |
-
|
498 |
-
#. translators: %1$s - this plugin name. %2$s - the required PHP version.
|
499 |
-
msgid "For %1$s to work correctly, PHP version %2$s or later is required."
|
500 |
-
msgstr ""
|
501 |
-
|
502 |
-
#. translators: %3$s - the current PHP version.
|
503 |
-
msgid "The PHP version on your server is %3$s."
|
504 |
-
msgstr ""
|
505 |
-
|
506 |
-
#. translators: %1$s - this plugin name. %2$s - the required WordPress version.
|
507 |
-
msgid "For %1$s to work correctly, WordPress version %2$s or later is required."
|
508 |
-
msgstr ""
|
509 |
-
|
510 |
-
msgid "Save draft before using extra language."
|
511 |
-
msgstr ""
|
512 |
-
|
513 |
-
msgid "Builder"
|
514 |
-
msgstr ""
|
515 |
-
|
516 |
-
msgid "Сompatibility Settings"
|
517 |
-
msgstr ""
|
518 |
-
|
519 |
-
#. translators: ON/OFF status of WPGlobus on the edit pages.
|
520 |
-
#. translators: ON/OFF status of WPGlobus on the edit pages.
|
521 |
-
msgid "ON"
|
522 |
-
msgstr ""
|
523 |
-
|
524 |
-
msgid "Turn off"
|
525 |
-
msgstr ""
|
526 |
-
|
527 |
-
msgid "OFF"
|
528 |
-
msgstr ""
|
529 |
-
|
530 |
-
msgid "Turn on"
|
531 |
-
msgstr ""
|
532 |
-
|
533 |
-
msgid "Elementor"
|
534 |
-
msgstr ""
|
535 |
-
|
536 |
-
msgid "WPGlobus languages"
|
537 |
-
msgstr ""
|
538 |
-
|
539 |
-
msgid "current"
|
540 |
-
msgstr ""
|
541 |
-
|
542 |
-
msgid "WPGlobus provides multilingual support for Elementor only when the option %1$s%2$s%3$s is set to %4$s."
|
543 |
-
msgstr ""
|
544 |
-
|
545 |
-
msgid "Before switching the language, please save draft or publish."
|
546 |
-
msgstr ""
|
547 |
-
|
548 |
-
#. translators: Metabox title FOR language.
|
549 |
-
msgctxt "filter__seo_meta_box_title"
|
550 |
-
msgid "for"
|
551 |
-
msgstr ""
|
552 |
-
|
553 |
-
msgid "Page is being reloaded. Please wait..."
|
554 |
-
msgstr ""
|
555 |
-
|
556 |
-
msgid "Before switching the language, please save draft or publish, then reload page."
|
557 |
-
msgstr ""
|
558 |
-
|
559 |
-
msgid "WPGlobus provides multilingual support for Elementor only when the option `CSS Print Method` is set to `External File`."
|
560 |
-
msgstr ""
|
561 |
-
|
562 |
-
msgid "Open Elementor Settings page"
|
563 |
-
msgstr ""
|
564 |
-
|
565 |
-
msgid "WPGlobus widget"
|
566 |
-
msgstr ""
|
567 |
-
|
568 |
-
msgid "Add language switcher"
|
569 |
-
msgstr ""
|
570 |
-
|
571 |
-
msgid "Flags"
|
572 |
-
msgstr ""
|
573 |
-
|
574 |
-
msgid "List"
|
575 |
-
msgstr ""
|
576 |
-
|
577 |
-
msgid "List with flags"
|
578 |
-
msgstr ""
|
579 |
-
|
580 |
-
msgid "Select"
|
581 |
-
msgstr ""
|
582 |
-
|
583 |
-
msgid "Select with language code"
|
584 |
-
msgstr ""
|
585 |
-
|
586 |
-
msgid "Dropdown"
|
587 |
-
msgstr ""
|
588 |
-
|
589 |
-
msgid "Dropdown with flags"
|
590 |
-
msgstr ""
|
591 |
-
|
592 |
-
msgid "Selector type"
|
593 |
-
msgstr ""
|
594 |
-
|
595 |
-
msgid "You cannot disable the main language."
|
596 |
-
msgstr ""
|
597 |
-
|
598 |
-
msgid "Need a multilingual slug?"
|
599 |
-
msgstr ""
|
600 |
-
|
601 |
-
msgid "*) Available after the menu is saved."
|
602 |
-
msgstr ""
|
603 |
-
|
604 |
-
#. translators: %s are for A tags.
|
605 |
-
msgid "To have the %1$sImage%2$s widget varying by language,"
|
606 |
-
msgstr ""
|
607 |
-
|
608 |
-
#. translators: %s are for A tags.
|
609 |
-
msgid "please use the %1$sWPGlobus language widgets%2$s add-on"
|
610 |
-
msgstr ""
|
611 |
-
|
612 |
-
msgid "You must enable Pretty Permalinks to use WPGlobus."
|
613 |
-
msgstr ""
|
614 |
-
|
615 |
-
msgid "Please go to Settings > Permalinks > Common Settings and choose a non-default option."
|
616 |
-
msgstr ""
|
617 |
-
|
618 |
-
msgid "Language Selector Menu Style"
|
619 |
-
msgstr ""
|
620 |
-
|
621 |
-
msgid "WPGlobus Plus"
|
622 |
-
msgstr ""
|
623 |
-
|
624 |
-
msgid "Drop-down languages menu or Flat (in one line)"
|
625 |
-
msgstr ""
|
626 |
-
|
627 |
-
msgid "Do not change"
|
628 |
-
msgstr ""
|
629 |
-
|
630 |
-
msgid "Drop-down (vertical)"
|
631 |
-
msgstr ""
|
632 |
-
|
633 |
-
msgid "Flat (horizontal)"
|
634 |
-
msgstr ""
|
635 |
-
|
636 |
-
msgid "If you see this message then your browser may not display the WPGlobus Settings panel properly. Please try another browser."
|
637 |
-
msgstr ""
|
638 |
-
|
639 |
-
msgid "Сompatibility"
|
640 |
-
msgstr ""
|
641 |
-
|
642 |
-
#. translators: placeholders for "strong" tags.
|
643 |
-
msgid "Click the %1$s[Languages]%2$s tab at the left to setup the options."
|
644 |
-
msgstr ""
|
645 |
-
|
646 |
-
#. translators: placeholders for "strong" tags.
|
647 |
-
msgid "Use the %1$s[Languages Table]%2$s section to add a new language or to edit the language attributes: name, code, flag icon, etc."
|
648 |
-
msgstr ""
|
649 |
-
|
650 |
-
msgid "Important notes"
|
651 |
-
msgstr ""
|
652 |
-
|
653 |
-
#. translators: placeholders for "strong" tags.
|
654 |
-
msgid "Version %1$s1.9.17%2$s "
|
655 |
-
msgstr ""
|
656 |
-
|
657 |
-
#. translators: placeholders for "strong" tags.
|
658 |
-
msgid "Starting from this version, %1$sWPGlobus%2$s operates in two modes"
|
659 |
-
msgstr ""
|
660 |
-
|
661 |
-
#. translators: placeholders for "strong" tags; compatibility tab link.
|
662 |
-
msgid "%1$sBuilder mode%2$s: WPGlobus turns this mode on automatically when it discovers any of the plugins/add-ons listed on the %1$s[%3$s]%2$s tab."
|
663 |
-
msgstr ""
|
664 |
-
|
665 |
-
#. translators: placeholders for "strong" tags; compatibility tab link.
|
666 |
-
msgid "%1$sStandard/Classic mode%2$s: is used when there are no plugins `Builder` or if you explicitly turned off builder support on the %1$s[%3$s]%2$s tab."
|
667 |
-
msgstr ""
|
668 |
-
|
669 |
-
#. translators: placeholders for "strong" tags.
|
670 |
-
msgid "Version %1$s2.2.11%2$s "
|
671 |
-
msgstr ""
|
672 |
-
|
673 |
-
msgid "Starting from this version"
|
674 |
-
msgstr ""
|
675 |
-
|
676 |
-
#. translators: placeholders for "strong" tags.
|
677 |
-
msgid "The %1$sBuilder mode%2$s is turned OFF by default for all custom post types (CPT)."
|
678 |
-
msgstr ""
|
679 |
-
|
680 |
-
#. translators: placeholders for "strong" tags.
|
681 |
-
msgid "To turn on the %1$sBuilder mode%2$s for specific post types, please visit the %1$s[%3$s]%2$s tab."
|
682 |
-
msgstr ""
|
683 |
-
|
684 |
-
msgid "Welcome!"
|
685 |
-
msgstr ""
|
686 |
-
|
687 |
-
msgid "Deactivating / Uninstalling"
|
688 |
-
msgstr ""
|
689 |
-
|
690 |
-
msgid "Uninstall"
|
691 |
-
msgstr ""
|
692 |
-
|
693 |
-
msgid "All add-ons"
|
694 |
-
msgstr ""
|
695 |
-
|
696 |
-
msgid "Mobile Menu"
|
697 |
-
msgstr ""
|
698 |
-
|
699 |
-
msgid "Language Widgets"
|
700 |
-
msgstr ""
|
701 |
-
|
702 |
-
msgid "We Recommend..."
|
703 |
-
msgstr ""
|
704 |
-
|
705 |
-
msgid "Our premium add-on, WPGlobus Plus, will add several features to your website, such as:"
|
706 |
-
msgstr ""
|
707 |
-
|
708 |
-
msgid "- Ability to write a post in one language and immediately publish it, not waiting for the translation to other languages;"
|
709 |
-
msgstr ""
|
710 |
-
|
711 |
-
msgid "- Set different URLs for each translation;"
|
712 |
-
msgstr ""
|
713 |
-
|
714 |
-
msgid "- In Yoast SEO, set the focus keyword and do the Page Analysis separately for each translation;"
|
715 |
-
msgstr ""
|
716 |
-
|
717 |
-
msgid "- and more..."
|
718 |
-
msgstr ""
|
719 |
-
|
720 |
-
msgid "Click here to download"
|
721 |
-
msgstr ""
|
722 |
-
|
723 |
-
msgid "Thanks for installing WPGlobus! Now you have a multilingual website and can translate your blog posts and pages to many languages."
|
724 |
-
msgstr ""
|
725 |
-
|
726 |
-
msgid "The next step is to translate your WooCommerce-based store!"
|
727 |
-
msgstr ""
|
728 |
-
|
729 |
-
msgid "With the WPGlobus for WooCommerce premium add-on, you will be able to translate product titles and descriptions, categories, tags and attributes."
|
730 |
-
msgstr ""
|
731 |
-
|
732 |
-
msgid "Multi-currency"
|
733 |
-
msgstr ""
|
734 |
-
|
735 |
-
msgid "Your WooCommerce-powered store is set to show prices and accept payments in a single currency only."
|
736 |
-
msgstr ""
|
737 |
-
|
738 |
-
msgid "With WPGlobus, you can add multiple currencies to your store and charge UK customers in Pounds, US customers in Dollars, Spanish clients in Euros, etc. Accepting multiple currencies will strengthen your competitive edge and positioning for global growth!"
|
739 |
-
msgstr ""
|
740 |
-
|
741 |
-
msgid "The WPGlobus Multi-Currency premium add-on provides switching currencies and re-calculating prices on-the-fly."
|
742 |
-
msgstr ""
|
743 |
-
|
744 |
-
msgid "WPGlobus Premium Add-ons"
|
745 |
-
msgstr ""
|
746 |
-
|
747 |
-
msgid "We have written several Premium add-ons for WPGlobus. With those add-ons, you will be able to:"
|
748 |
-
msgstr ""
|
749 |
-
|
750 |
-
msgid "<strong>Translate URLs</strong> (/my-page/ translates to /fr/ma-page, /ru/моя-страница and so on);"
|
751 |
-
msgstr ""
|
752 |
-
|
753 |
-
msgid "Postpone translation to some languages and <strong>publish only the translated texts</strong>;"
|
754 |
-
msgstr ""
|
755 |
-
|
756 |
-
msgid "Maintain <strong>separate menus and widgets for each language</strong>;"
|
757 |
-
msgstr ""
|
758 |
-
|
759 |
-
msgid "<strong>Translate WooCommerce</strong> products and taxonomies;"
|
760 |
-
msgstr ""
|
761 |
-
|
762 |
-
msgid "Enter separate focus keywords for each language in the <strong>Yoast SEO</strong>;"
|
763 |
-
msgstr ""
|
764 |
-
|
765 |
-
msgid "...and more."
|
766 |
-
msgstr ""
|
767 |
-
|
768 |
-
msgid "Click here to visit the WPGlobus Store"
|
769 |
-
msgstr ""
|
770 |
-
|
771 |
-
msgid "Select a language"
|
772 |
-
msgstr ""
|
773 |
-
|
774 |
-
#. translators: %3$s placeholder for the icon (actual picture).
|
775 |
-
msgid "Place the %1$smain language%2$s of your site at the top of the list by dragging the %3$s icons."
|
776 |
-
msgstr ""
|
777 |
-
|
778 |
-
#. translators: placeholders for the "strong" HTML tags.
|
779 |
-
msgid "%1$sUncheck%2$s the languages you do not plan to use."
|
780 |
-
msgstr ""
|
781 |
-
|
782 |
-
#. translators: placeholders for the "strong" HTML tags.
|
783 |
-
msgid "%1$sAdd%2$s more languages using the section below."
|
784 |
-
msgstr ""
|
785 |
-
|
786 |
-
msgid "When done, click the [Save Changes] button."
|
787 |
-
msgstr ""
|
788 |
-
|
789 |
-
#. translators: %s - placeholder for the "Save Changes" button text.
|
790 |
-
msgid "Press the %s button to confirm."
|
791 |
-
msgstr ""
|
792 |
-
|
793 |
-
#. translators: dropdown option meaning that none of the navigation menus should show the language selector.
|
794 |
-
msgid "-- none --"
|
795 |
-
msgstr ""
|
796 |
-
|
797 |
-
msgid "All menus"
|
798 |
-
msgstr ""
|
799 |
-
|
800 |
-
msgid "Instructions:"
|
801 |
-
msgstr ""
|
802 |
-
|
803 |
-
msgid "(Found in some themes)"
|
804 |
-
msgstr ""
|
805 |
-
|
806 |
-
msgid "Enable"
|
807 |
-
msgstr ""
|
808 |
-
|
809 |
-
msgid "Languages table"
|
810 |
-
msgstr ""
|
811 |
-
|
812 |
-
msgid "Use this table to add, edit or delete languages."
|
813 |
-
msgstr ""
|
814 |
-
|
815 |
-
msgid "NOTE: you cannot remove the main language."
|
816 |
-
msgstr ""
|
817 |
-
|
818 |
-
msgid "WPGlobus is enabled on these Post Types"
|
819 |
-
msgstr ""
|
820 |
-
|
821 |
-
msgid "Uncheck to disable"
|
822 |
-
msgstr ""
|
823 |
-
|
824 |
-
msgid "Please note that there are post types, which status is managed by other plugins and cannot be changed here."
|
825 |
-
msgstr ""
|
826 |
-
|
827 |
-
msgid "Post Types"
|
828 |
-
msgstr ""
|
829 |
-
|
830 |
-
msgid "You should put here only the code provided by WPGlobus Support. Do not write anything else in the sections below as it might break the functionality of your website!"
|
831 |
-
msgstr ""
|
832 |
-
|
833 |
-
msgid "Custom Code"
|
834 |
-
msgstr ""
|
835 |
-
|
836 |
-
msgid "Enabled"
|
837 |
-
msgstr ""
|
838 |
-
|
839 |
-
msgid "Builders support"
|
840 |
-
msgstr ""
|
841 |
-
|
842 |
-
msgid "Builder mode is enabled on these Post Types"
|
843 |
-
msgstr ""
|
844 |
-
|
845 |
-
msgid "Old fashioned language switcher"
|
846 |
-
msgstr ""
|
847 |
-
|
848 |
-
msgid "Block Editor"
|
849 |
-
msgstr ""
|
850 |
-
|
851 |
-
msgid "Block Editor Options"
|
852 |
-
msgstr ""
|
853 |
-
|
854 |
-
msgid "With the current settings, you will see the following lines in the section HEAD of your site pages"
|
855 |
-
msgstr ""
|
856 |
-
|
857 |
-
msgid "(example for two languages)"
|
858 |
-
msgstr ""
|
859 |
-
|
860 |
-
msgid "Tell search engines about localized versions of your pages using the hreflang tag"
|
861 |
-
msgstr ""
|
862 |
-
|
863 |
-
msgid "Output the hreflang tag as"
|
864 |
-
msgstr ""
|
865 |
-
|
866 |
-
msgid "Language- and region-specific (en-US, ru-RU, etc.)"
|
867 |
-
msgstr ""
|
868 |
-
|
869 |
-
msgid "Language- and region-specific (en-us, ru-ru, etc.)"
|
870 |
-
msgstr ""
|
871 |
-
|
872 |
-
msgid "Language code only (en, ru, etc.)"
|
873 |
-
msgstr ""
|
874 |
-
|
875 |
-
msgid "Use the code `x-default` for the main language"
|
876 |
-
msgstr ""
|
877 |
-
|
878 |
-
msgid "Multilingual SEO"
|
879 |
-
msgstr ""
|
880 |
-
|
881 |
-
msgid "Multilingual SEO Options"
|
882 |
-
msgstr ""
|
883 |
-
|
884 |
-
msgid "With WPGlobus, you can get translations for posts and pages using REST API."
|
885 |
-
msgstr ""
|
886 |
-
|
887 |
-
msgid "Go to %1$s%2$s%3$s to see the content in language: %4$s."
|
888 |
-
msgstr ""
|
889 |
-
|
890 |
-
msgid "For demonstration, you can try the first post that WordPress creates at the initial installation."
|
891 |
-
msgstr ""
|
892 |
-
|
893 |
-
msgid "Please read the %1$sWordPress REST API documentation%2$s for more information."
|
894 |
-
msgstr ""
|
895 |
-
|
896 |
-
msgid "In the REST API response, you can find the %1$stranslation%2$s field, which shows whether translations exist for the fields %1$stitle%2$s, %1$scontent%2$s and %1$sexcerpt%2$s or not, for each language. See the screenshot below:"
|
897 |
-
msgstr ""
|
898 |
-
|
899 |
-
msgid "Description:"
|
900 |
-
msgstr ""
|
901 |
-
|
902 |
-
msgid "REST API"
|
903 |
-
msgstr ""
|
904 |
-
|
905 |
-
msgid "Translate strings"
|
906 |
-
msgstr ""
|
907 |
-
|
908 |
-
msgid "item"
|
909 |
-
msgstr ""
|
910 |
-
|
911 |
-
msgid "items"
|
912 |
-
msgstr ""
|
913 |
-
|
914 |
-
msgid "Code"
|
915 |
-
msgstr ""
|
916 |
-
|
917 |
-
msgid "Edit"
|
918 |
-
msgstr ""
|
919 |
-
|
920 |
-
msgid "Delete"
|
921 |
-
msgstr ""
|
922 |
-
|
923 |
-
msgid "File"
|
924 |
-
msgstr ""
|
925 |
-
|
926 |
-
msgid "Flag"
|
927 |
-
msgstr ""
|
928 |
-
|
929 |
-
msgid "Language name"
|
930 |
-
msgstr ""
|
931 |
-
|
932 |
-
msgid "English language name"
|
933 |
-
msgstr ""
|
934 |
-
|
935 |
-
msgid "No items found"
|
936 |
-
msgstr ""
|
937 |
-
|
938 |
-
msgid "Add new Language"
|
939 |
-
msgstr ""
|
940 |
-
|
941 |
-
msgid "No items of this type were found."
|
942 |
-
msgstr ""
|
943 |
-
|
944 |
-
msgid "Select an item"
|
945 |
-
msgstr ""
|
946 |
-
|
947 |
-
msgid "Multilingual support of this add-on is currently in Beta stage."
|
948 |
-
msgstr ""
|
949 |
-
|
950 |
-
msgid "We do not recommend using it on production sites."
|
951 |
-
msgstr ""
|
952 |
-
|
953 |
-
msgid "Please report all problems to %1$sWPGlobus Technical Support%2$s."
|
954 |
-
msgstr ""
|
955 |
-
|
956 |
-
msgid "WordPress version"
|
957 |
-
msgstr ""
|
958 |
-
|
959 |
-
msgid "In the WordPress core"
|
960 |
-
msgstr ""
|
961 |
-
|
962 |
-
msgid "Core"
|
963 |
-
msgstr ""
|
964 |
-
|
965 |
-
msgid "Current version"
|
966 |
-
msgstr ""
|
967 |
-
|
968 |
-
msgid "Stage"
|
969 |
-
msgstr ""
|
970 |
-
|
971 |
-
msgid "Status"
|
972 |
-
msgstr ""
|
973 |
-
|
974 |
-
msgid "Block editor"
|
975 |
-
msgstr ""
|
976 |
-
|
977 |
-
msgid "production"
|
978 |
-
msgstr ""
|
979 |
-
|
980 |
-
msgid "List of supported add-ons"
|
981 |
-
msgstr ""
|
982 |
-
|
983 |
-
msgid "Add-on"
|
984 |
-
msgstr ""
|
985 |
-
|
986 |
-
msgid "Supported minimum version"
|
987 |
-
msgstr ""
|
988 |
-
|
989 |
-
msgid "Not installed"
|
990 |
-
msgstr ""
|
991 |
-
|
992 |
-
msgid "Installed, inactive"
|
993 |
-
msgstr ""
|
994 |
-
|
995 |
-
msgid "Active"
|
996 |
-
msgstr ""
|
997 |
-
|
998 |
-
msgid "WPGlobus Customizer is integrated into the Customize Theme panel"
|
999 |
-
msgstr ""
|
1000 |
-
|
1001 |
-
msgid "However, some themes do not follow all WordPress standards strictly."
|
1002 |
-
msgstr ""
|
1003 |
-
|
1004 |
-
msgid "WPGlobus Customizer may behave incorrectly with those themes."
|
1005 |
-
msgstr ""
|
1006 |
-
|
1007 |
-
msgid "To avoid conflicts, you can switch the WPGlobus Customizer off:"
|
1008 |
-
msgstr ""
|
1009 |
-
|
1010 |
-
msgid "Below is the list of themes that do not support the WPGlobus Customizer. With those themes, WPGlobus Customizer is switched off by default"
|
1011 |
-
msgstr ""
|
1012 |
-
|
1013 |
-
msgid "The currently active theme is"
|
1014 |
-
msgstr ""
|
1015 |
-
|
1016 |
-
msgid "In the current version, WPGlobus Customizer does not support"
|
1017 |
-
msgstr ""
|
1018 |
-
|
1019 |
-
msgid "translation of the navigation menus"
|
1020 |
-
msgstr ""
|
1021 |
-
|
1022 |
-
msgid "to translate, please go to"
|
1023 |
-
msgstr ""
|
1024 |
-
|
1025 |
-
msgid "Go to Customizer"
|
1026 |
-
msgstr ""
|
1027 |
-
|
1028 |
-
msgid "is undefined"
|
1029 |
-
msgstr ""
|
1030 |
-
|
1031 |
-
msgid "is set to"
|
1032 |
-
msgstr ""
|
1033 |
-
|
1034 |
-
msgid "by adding to the file wp-config.php"
|
1035 |
-
msgstr ""
|
1036 |
-
|
1037 |
-
msgid "now"
|
1038 |
-
msgstr ""
|
1039 |
-
|
1040 |
-
msgid "We rely on your support!"
|
1041 |
-
msgstr ""
|
1042 |
-
|
1043 |
-
msgid "Please consider a small donation to support the future development."
|
1044 |
-
msgstr ""
|
1045 |
-
|
1046 |
-
msgid "Thank you!"
|
1047 |
-
msgstr ""
|
1048 |
-
|
1049 |
-
msgid "WPGlobus Plus!"
|
1050 |
-
msgstr ""
|
1051 |
-
|
1052 |
-
msgid "Advanced features and tweaks: URL translation, multilingual SEO analysis, separate publishing and more! "
|
1053 |
-
msgstr ""
|
1054 |
-
|
1055 |
-
msgid "Get WPGlobus Plus now!"
|
1056 |
-
msgstr ""
|
1057 |
-
|
1058 |
-
msgid "Bulk editing of the multilingual titles and descriptions is not supported by the current version."
|
1059 |
-
msgstr ""
|
1060 |
-
|
1061 |
-
msgid "Therefore, to avoid any data loss, we do not recommend using this."
|
1062 |
-
msgstr ""
|
1063 |
-
|
1064 |
-
msgid "WPGlobus warning: "
|
1065 |
-
msgstr ""
|
1066 |
-
|
1067 |
-
msgid "https://github.com/WPGlobus/WPGlobus"
|
1068 |
-
msgstr ""
|
1069 |
-
|
1070 |
-
msgid "A WordPress Globalization / Multilingual Plugin. Posts, pages, menus, widgets and even custom fields - in multiple languages!"
|
1071 |
-
msgstr ""
|
1072 |
-
|
1073 |
-
msgid "https://wpglobus.com/"
|
1074 |
-
msgstr ""
|
1 |
+
# Copyright (C) 2021 WPGlobus 2.6.1
|
2 |
+
# This file is distributed under the same license as the WPGlobus 2.6.1 package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: WPGlobus 2.6.1\n"
|
6 |
+
"MIME-Version: 1.0\n"
|
7 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
+
"Content-Transfer-Encoding: 8bit\n"
|
9 |
+
"Last-Translator: The WPGlobus Team <support@wpglobus.com>\n"
|
10 |
+
"Report-Msgid-Bugs-To: support@wpglobus.com\n"
|
11 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
12 |
+
|
13 |
+
msgid "Guide"
|
14 |
+
msgstr ""
|
15 |
+
|
16 |
+
msgid "WPGlobus Help Desk"
|
17 |
+
msgstr ""
|
18 |
+
|
19 |
+
msgid "Add-ons"
|
20 |
+
msgstr ""
|
21 |
+
|
22 |
+
msgid "Quick Start"
|
23 |
+
msgstr ""
|
24 |
+
|
25 |
+
msgid "FAQ"
|
26 |
+
msgstr ""
|
27 |
+
|
28 |
+
msgid "Attention: the Multibyte String PHP extension (`mbstring`) is not loaded!"
|
29 |
+
msgstr ""
|
30 |
+
|
31 |
+
msgid "The mbstring extension is required for the full UTF-8 compatibility and better performance. Without it, some parts of WordPress and WPGlobus may function incorrectly. Please contact your hosting company or systems administrator."
|
32 |
+
msgstr ""
|
33 |
+
|
34 |
+
msgid "Go to WPGlobus Settings"
|
35 |
+
msgstr ""
|
36 |
+
|
37 |
+
msgid "Easy as 1-2-3:"
|
38 |
+
msgstr ""
|
39 |
+
|
40 |
+
msgid "Go to WPGlobus admin menu and choose the countries / languages;"
|
41 |
+
msgstr ""
|
42 |
+
|
43 |
+
msgid "Enter the translations to the posts, pages, categories, tags and menus using a clean and simple interface."
|
44 |
+
msgstr ""
|
45 |
+
|
46 |
+
msgid "Switch languages at the front-end using a drop-down menu with language names and country flags."
|
47 |
+
msgstr ""
|
48 |
+
|
49 |
+
msgid "Links:"
|
50 |
+
msgstr ""
|
51 |
+
|
52 |
+
msgid "FAQs"
|
53 |
+
msgstr ""
|
54 |
+
|
55 |
+
msgid "Contact Us"
|
56 |
+
msgstr ""
|
57 |
+
|
58 |
+
msgid "Please give us 5 stars!"
|
59 |
+
msgstr ""
|
60 |
+
|
61 |
+
msgid "WPGlobus does not translate texts automatically!"
|
62 |
+
msgstr ""
|
63 |
+
|
64 |
+
msgid "There are many translation companies and individual translators who can help you write and proofread the texts."
|
65 |
+
msgstr ""
|
66 |
+
|
67 |
+
msgid "When you choose a translator, please look at their native language, country of residence, specialization and knowledge of WordPress."
|
68 |
+
msgstr ""
|
69 |
+
|
70 |
+
#. translators: %s are used to insert HTML link. Keep them in place.
|
71 |
+
msgid "We are planning to maintain a %s list of translators %s on the WPGlobus website. This is not an endorsement, just a courtesy. Please contact them directly and let us know how did it work for you!"
|
72 |
+
msgstr ""
|
73 |
+
|
74 |
+
msgid "Important notes:"
|
75 |
+
msgstr ""
|
76 |
+
|
77 |
+
msgid "WPGlobus only supports the localization URLs in the form of <code>example.com/xx/page/</code>. We do not plan to support subdomains <code>xx.example.com</code> and language queries <code>example.com?lang=xx</code>."
|
78 |
+
msgstr ""
|
79 |
+
|
80 |
+
msgid "Some themes and plugins are <strong>not multilingual-ready</strong>."
|
81 |
+
msgstr ""
|
82 |
+
|
83 |
+
msgid "They might display some texts with no translation, or with all languages mixed together."
|
84 |
+
msgstr ""
|
85 |
+
|
86 |
+
#. translators: %s are used to insert HTML link. Keep them in place.
|
87 |
+
msgid "Please contact the theme / plugin author. If they are unable to assist, consider %s hiring the WPGlobus Team %s to write a custom code for you."
|
88 |
+
msgstr ""
|
89 |
+
|
90 |
+
msgid "Language was set on your profile page"
|
91 |
+
msgstr ""
|
92 |
+
|
93 |
+
msgid "Add"
|
94 |
+
msgstr ""
|
95 |
+
|
96 |
+
msgid "Multilingual Everything!"
|
97 |
+
msgstr ""
|
98 |
+
|
99 |
+
msgid "WPGlobus is a family of WordPress plugins assisting you in making multilingual WordPress blogs and sites."
|
100 |
+
msgstr ""
|
101 |
+
|
102 |
+
msgid "Remove the WPGlobus settings (not recommended)"
|
103 |
+
msgstr ""
|
104 |
+
|
105 |
+
msgid "Clean-up Tool"
|
106 |
+
msgstr ""
|
107 |
+
|
108 |
+
msgid "Support"
|
109 |
+
msgstr ""
|
110 |
+
|
111 |
+
msgid "WARNING: this operation is non-reversible. It is strongly recommended that you backup your database before proceeding."
|
112 |
+
msgstr ""
|
113 |
+
|
114 |
+
msgid "This tool should be used only if you plan to completely uninstall WPGlobus. By running it, you will remove ALL translations you have entered to your post, pages, etc., keeping only the MAIN language texts. Please make sure that all entries have some content in the main language. Otherwise, you might end up with empty titles, no content, no excerpts, blank comments and so on."
|
115 |
+
msgstr ""
|
116 |
+
|
117 |
+
msgid "Make sure that your active theme does not have any code related to WPGlobus. Such code could be added by you or by a 3rd party developer. If that code runs without first verifying that WPGlobus is active, WordPress may die with a fatal error."
|
118 |
+
msgstr ""
|
119 |
+
|
120 |
+
#. translators: %1$s - language name, %2$s - language code. Do not remove.
|
121 |
+
msgid "The main language is currently set to %1$s (%2$s). ALL TEXTS THAT ARE NOT IN %1$s WILL BE DELETED! To change the main language, please go to {{settings}}."
|
122 |
+
msgstr ""
|
123 |
+
|
124 |
+
msgid "You are about to clean the content of the following database tables:"
|
125 |
+
msgstr ""
|
126 |
+
|
127 |
+
msgid "The operations log"
|
128 |
+
msgstr ""
|
129 |
+
|
130 |
+
msgid "We are going to write a detailed log of all the database changes performed. It should help in the case you need to restore something important. The log will be written to the file:"
|
131 |
+
msgstr ""
|
132 |
+
|
133 |
+
msgid "Uncheck if you do not want to write the operations log (we recommend to keep it checked)"
|
134 |
+
msgstr ""
|
135 |
+
|
136 |
+
msgid "You have been warned..."
|
137 |
+
msgstr ""
|
138 |
+
|
139 |
+
msgid "Please confirm by checking the box below:"
|
140 |
+
msgstr ""
|
141 |
+
|
142 |
+
msgid "I have read and understood everything written on this page. I am aware that by using this tool I may loose some content of my website. I have made a database backup and know how to restore it if necessary. I am fully responsible for the results."
|
143 |
+
msgstr ""
|
144 |
+
|
145 |
+
msgid "YES, I CONFIRM"
|
146 |
+
msgstr ""
|
147 |
+
|
148 |
+
msgid "Process with the Clean-up"
|
149 |
+
msgstr ""
|
150 |
+
|
151 |
+
msgid "Default"
|
152 |
+
msgstr ""
|
153 |
+
|
154 |
+
msgid "Section"
|
155 |
+
msgstr ""
|
156 |
+
|
157 |
+
msgid "Show all sections"
|
158 |
+
msgstr ""
|
159 |
+
|
160 |
+
msgid "Save & Reload"
|
161 |
+
msgstr ""
|
162 |
+
|
163 |
+
msgid "WPGlobus"
|
164 |
+
msgstr ""
|
165 |
+
|
166 |
+
msgid "You need to update WordPress to 4.5 or later to get Fields Settings section"
|
167 |
+
msgstr ""
|
168 |
+
|
169 |
+
msgid "Fields Settings"
|
170 |
+
msgstr ""
|
171 |
+
|
172 |
+
msgid "WPGlobus Settings"
|
173 |
+
msgstr ""
|
174 |
+
|
175 |
+
msgid "Help"
|
176 |
+
msgstr ""
|
177 |
+
|
178 |
+
msgid "Languages"
|
179 |
+
msgstr ""
|
180 |
+
|
181 |
+
msgid "Enabled Languages"
|
182 |
+
msgstr ""
|
183 |
+
|
184 |
+
msgid "These languages are currently enabled on your site."
|
185 |
+
msgstr ""
|
186 |
+
|
187 |
+
msgid "Choose a language you would like to enable."
|
188 |
+
msgstr ""
|
189 |
+
|
190 |
+
msgid "Press the [Save & Publish] button to confirm."
|
191 |
+
msgstr ""
|
192 |
+
|
193 |
+
#. translators: %1$s and %2$s - placeholders to insert HTML link around 'here'
|
194 |
+
#. translators: %1$s and %2$s - placeholders to insert HTML link around 'here'.
|
195 |
+
msgid "or Add new Language %1$s here %2$s"
|
196 |
+
msgstr ""
|
197 |
+
|
198 |
+
msgid "Add Languages"
|
199 |
+
msgstr ""
|
200 |
+
|
201 |
+
msgid "Language Selector Mode"
|
202 |
+
msgstr ""
|
203 |
+
|
204 |
+
msgid "Two-letter Code with flag (en, ru, it, etc.)"
|
205 |
+
msgstr ""
|
206 |
+
|
207 |
+
msgid "Full Name (English, Russian, Italian, etc.)"
|
208 |
+
msgstr ""
|
209 |
+
|
210 |
+
msgid "Full Name with flag (English, Russian, Italian, etc.)"
|
211 |
+
msgstr ""
|
212 |
+
|
213 |
+
msgid "Flags only"
|
214 |
+
msgstr ""
|
215 |
+
|
216 |
+
msgid "Choose the way language name and country flag are shown in the drop-down menu"
|
217 |
+
msgstr ""
|
218 |
+
|
219 |
+
msgid "select navigation menu"
|
220 |
+
msgstr ""
|
221 |
+
|
222 |
+
msgid "Language Selector Menu"
|
223 |
+
msgstr ""
|
224 |
+
|
225 |
+
msgid "Choose the navigation menu where the language selector will be shown"
|
226 |
+
msgstr ""
|
227 |
+
|
228 |
+
msgid "No menus have been created yet. Create some."
|
229 |
+
msgstr ""
|
230 |
+
|
231 |
+
msgid "\"All Pages\" menus Language selector"
|
232 |
+
msgstr ""
|
233 |
+
|
234 |
+
msgid "Adds language selector to the menus that automatically list all existing pages (using `wp_list_pages`)"
|
235 |
+
msgstr ""
|
236 |
+
|
237 |
+
msgid "Custom CSS"
|
238 |
+
msgstr ""
|
239 |
+
|
240 |
+
msgid "Here you can enter the CSS rules to adjust the language selector menu for your theme. Look at the examples in the `style-samples.css` file."
|
241 |
+
msgstr ""
|
242 |
+
|
243 |
+
msgid "Post types"
|
244 |
+
msgstr ""
|
245 |
+
|
246 |
+
msgid "Uncheck to disable WPGlobus"
|
247 |
+
msgstr ""
|
248 |
+
|
249 |
+
msgid "Redirect"
|
250 |
+
msgstr ""
|
251 |
+
|
252 |
+
msgid "Choose the language automatically, based on:"
|
253 |
+
msgstr ""
|
254 |
+
|
255 |
+
msgid "Preferred language set in the browser"
|
256 |
+
msgstr ""
|
257 |
+
|
258 |
+
msgid "When a user comes to the site for the first time, try to find the best matching language version of the page."
|
259 |
+
msgstr ""
|
260 |
+
|
261 |
+
msgid "Custom JS Code"
|
262 |
+
msgstr ""
|
263 |
+
|
264 |
+
msgid "Title"
|
265 |
+
msgstr ""
|
266 |
+
|
267 |
+
msgid "(Paste your JS code here.)"
|
268 |
+
msgstr ""
|
269 |
+
|
270 |
+
msgid "To add a Custom JS Code in Customizer, you need to upgrade WordPress to version 4.9 or later."
|
271 |
+
msgstr ""
|
272 |
+
|
273 |
+
msgid "With your version of WordPress, please use the"
|
274 |
+
msgstr ""
|
275 |
+
|
276 |
+
msgid "WPGlobus Settings page"
|
277 |
+
msgstr ""
|
278 |
+
|
279 |
+
msgid "Label"
|
280 |
+
msgstr ""
|
281 |
+
|
282 |
+
msgid "Description"
|
283 |
+
msgstr ""
|
284 |
+
|
285 |
+
msgid "Here you can specify which fields should be considered multilingual by WPGlobus. To exclude a field, uncheck it and then press the button %s below."
|
286 |
+
msgstr ""
|
287 |
+
|
288 |
+
msgid "Thank you for installing WPGlobus!"
|
289 |
+
msgstr ""
|
290 |
+
|
291 |
+
msgid "Read About WPGlobus"
|
292 |
+
msgstr ""
|
293 |
+
|
294 |
+
msgid "Click the <strong>[Languages]</strong> tab at the left to setup the options."
|
295 |
+
msgstr ""
|
296 |
+
|
297 |
+
msgid "Should you have any questions or comments, please do not hesitate to contact us."
|
298 |
+
msgstr ""
|
299 |
+
|
300 |
+
msgid "Sincerely Yours,"
|
301 |
+
msgstr ""
|
302 |
+
|
303 |
+
msgid "The WPGlobus Team"
|
304 |
+
msgstr ""
|
305 |
+
|
306 |
+
#. translators: %?$s: HTML codes for hyperlink. Do not remove.
|
307 |
+
#. translators: %?$s: HTML codes for hyperlink. Do not remove.
|
308 |
+
msgid "We would hate to see you go. If something goes wrong, do not uninstall WPGlobus yet. Please %1$stalk to us%2$s and let us help!"
|
309 |
+
msgstr ""
|
310 |
+
|
311 |
+
msgid "Please note that if you deactivate WPGlobus, your site will show all the languages together, mixed up. You will need to remove all translations, keeping only one language."
|
312 |
+
msgstr ""
|
313 |
+
|
314 |
+
#. translators: %s: link to the Clean-up Tool
|
315 |
+
#. translators: %s: link to the Clean-up Tool.
|
316 |
+
msgid "If there are just a few places, you should edit them manually. To automatically remove all translations at once, you can use the %s. WARNING: The clean-up operation is irreversible, so use it only if you need to completely uninstall WPGlobus."
|
317 |
+
msgstr ""
|
318 |
+
|
319 |
+
#. translators: %?$s: HTML codes for hyperlink. Do not remove.
|
320 |
+
#. translators: %?$s: HTML codes for hyperlink. Do not remove.
|
321 |
+
msgid "%1$sClean-up Tool%2$s"
|
322 |
+
msgstr ""
|
323 |
+
|
324 |
+
#. translators: %s: name of current theme
|
325 |
+
msgid "Sorry, WPGlobus customizer doesn't support current theme %s."
|
326 |
+
msgstr ""
|
327 |
+
|
328 |
+
#. translators: %?$s: HTML codes for hyperlink. Do not remove.
|
329 |
+
msgid "Please use %1$sWPGlobus options page%2$s instead."
|
330 |
+
msgstr ""
|
331 |
+
|
332 |
+
msgid "Expand/Shrink"
|
333 |
+
msgstr ""
|
334 |
+
|
335 |
+
msgid "WPGlobus News"
|
336 |
+
msgstr ""
|
337 |
+
|
338 |
+
msgid "Options updated"
|
339 |
+
msgstr ""
|
340 |
+
|
341 |
+
msgid "Please enter a language code!"
|
342 |
+
msgstr ""
|
343 |
+
|
344 |
+
msgid "Language code already exists!"
|
345 |
+
msgstr ""
|
346 |
+
|
347 |
+
msgid "Please specify the language flag!"
|
348 |
+
msgstr ""
|
349 |
+
|
350 |
+
msgid "Please enter the language name!"
|
351 |
+
msgstr ""
|
352 |
+
|
353 |
+
msgid "Please enter the language name in English!"
|
354 |
+
msgstr ""
|
355 |
+
|
356 |
+
msgid "Please enter the locale!"
|
357 |
+
msgstr ""
|
358 |
+
|
359 |
+
msgid "Add Language"
|
360 |
+
msgstr ""
|
361 |
+
|
362 |
+
msgid "Delete Language"
|
363 |
+
msgstr ""
|
364 |
+
|
365 |
+
msgid "Edit Language"
|
366 |
+
msgstr ""
|
367 |
+
|
368 |
+
msgid "Language Code"
|
369 |
+
msgstr ""
|
370 |
+
|
371 |
+
msgid "2-Letter ISO Language Code for the Language you want to insert. (Example: en)"
|
372 |
+
msgstr ""
|
373 |
+
|
374 |
+
msgid "Language flag"
|
375 |
+
msgstr ""
|
376 |
+
|
377 |
+
msgid "Name"
|
378 |
+
msgstr ""
|
379 |
+
|
380 |
+
msgid "The name of the language in its native alphabet. (Examples: English, Русский)"
|
381 |
+
msgstr ""
|
382 |
+
|
383 |
+
msgid "Name in English"
|
384 |
+
msgstr ""
|
385 |
+
|
386 |
+
msgid "The name of the language in English"
|
387 |
+
msgstr ""
|
388 |
+
|
389 |
+
msgid "Locale"
|
390 |
+
msgstr ""
|
391 |
+
|
392 |
+
msgid "PHP/WordPress Locale of the language. (Examples: en_US, ru_RU)"
|
393 |
+
msgstr ""
|
394 |
+
|
395 |
+
msgid "Are you sure you want to delete?"
|
396 |
+
msgstr ""
|
397 |
+
|
398 |
+
msgid "Save Changes"
|
399 |
+
msgstr ""
|
400 |
+
|
401 |
+
msgid "Back to the WPGlobus Settings"
|
402 |
+
msgstr ""
|
403 |
+
|
404 |
+
msgid "Current Version"
|
405 |
+
msgstr ""
|
406 |
+
|
407 |
+
msgid "Premium add-on"
|
408 |
+
msgstr ""
|
409 |
+
|
410 |
+
msgid "Installed"
|
411 |
+
msgstr ""
|
412 |
+
|
413 |
+
msgid "Get it now!"
|
414 |
+
msgstr ""
|
415 |
+
|
416 |
+
#. translators: placeholders are for the HTML tags.
|
417 |
+
msgid "If you have already purchased a WPGlobus premium extension, please read %1$sthe installation instructions here%2$s"
|
418 |
+
msgstr ""
|
419 |
+
|
420 |
+
msgid "Help Desk"
|
421 |
+
msgstr ""
|
422 |
+
|
423 |
+
msgid "Email not sent. Please fill in the entire form."
|
424 |
+
msgstr ""
|
425 |
+
|
426 |
+
msgid "Email not sent. Please verify that your name and email are entered correctly."
|
427 |
+
msgstr ""
|
428 |
+
|
429 |
+
msgid "Email sent."
|
430 |
+
msgstr ""
|
431 |
+
|
432 |
+
msgid "Thank you for using WPGlobus!"
|
433 |
+
msgstr ""
|
434 |
+
|
435 |
+
msgid "Our Support Team is here to answer your questions or concerns."
|
436 |
+
msgstr ""
|
437 |
+
|
438 |
+
msgid "To help us serve you better:"
|
439 |
+
msgstr ""
|
440 |
+
|
441 |
+
msgid "Please check if the problem persists if you switch to a standard WordPress theme."
|
442 |
+
msgstr ""
|
443 |
+
|
444 |
+
msgid "Try deactivating other plugins to see if any of them conflicts with WPGlobus."
|
445 |
+
msgstr ""
|
446 |
+
|
447 |
+
msgid "Please fill in and submit the contact form:"
|
448 |
+
msgstr ""
|
449 |
+
|
450 |
+
msgid "Please make sure the email address is correct."
|
451 |
+
msgstr ""
|
452 |
+
|
453 |
+
msgid "Subject"
|
454 |
+
msgstr ""
|
455 |
+
|
456 |
+
msgid "Short description of the problem"
|
457 |
+
msgstr ""
|
458 |
+
|
459 |
+
msgid "Detailed description"
|
460 |
+
msgstr ""
|
461 |
+
|
462 |
+
msgid "Technical Information"
|
463 |
+
msgstr ""
|
464 |
+
|
465 |
+
msgid "This information helps us to find the problem source"
|
466 |
+
msgstr ""
|
467 |
+
|
468 |
+
msgid "Alternatively, please email %s. Do not forget to copy and paste the technical information to your email message."
|
469 |
+
msgstr ""
|
470 |
+
|
471 |
+
msgid "WPGlobus Recommends:"
|
472 |
+
msgstr ""
|
473 |
+
|
474 |
+
msgid "WPGlobus for WooCommerce"
|
475 |
+
msgstr ""
|
476 |
+
|
477 |
+
msgid "Translate product titles and descriptions, product categories, tags and attributes."
|
478 |
+
msgstr ""
|
479 |
+
|
480 |
+
msgid "Get it now:"
|
481 |
+
msgstr ""
|
482 |
+
|
483 |
+
msgid "WooCommerce Multi-Currency"
|
484 |
+
msgstr ""
|
485 |
+
|
486 |
+
msgid "Accept multiple currencies in your online store!"
|
487 |
+
msgstr ""
|
488 |
+
|
489 |
+
msgid "Check it out:"
|
490 |
+
msgstr ""
|
491 |
+
|
492 |
+
msgid "To translate permalinks, please activate the module Slug."
|
493 |
+
msgstr ""
|
494 |
+
|
495 |
+
msgid "Translate permalinks with our premium add-on, WPGlobus Plus!"
|
496 |
+
msgstr ""
|
497 |
+
|
498 |
+
#. translators: %1$s - this plugin name. %2$s - the required PHP version.
|
499 |
+
msgid "For %1$s to work correctly, PHP version %2$s or later is required."
|
500 |
+
msgstr ""
|
501 |
+
|
502 |
+
#. translators: %3$s - the current PHP version.
|
503 |
+
msgid "The PHP version on your server is %3$s."
|
504 |
+
msgstr ""
|
505 |
+
|
506 |
+
#. translators: %1$s - this plugin name. %2$s - the required WordPress version.
|
507 |
+
msgid "For %1$s to work correctly, WordPress version %2$s or later is required."
|
508 |
+
msgstr ""
|
509 |
+
|
510 |
+
msgid "Save draft before using extra language."
|
511 |
+
msgstr ""
|
512 |
+
|
513 |
+
msgid "Builder"
|
514 |
+
msgstr ""
|
515 |
+
|
516 |
+
msgid "Сompatibility Settings"
|
517 |
+
msgstr ""
|
518 |
+
|
519 |
+
#. translators: ON/OFF status of WPGlobus on the edit pages.
|
520 |
+
#. translators: ON/OFF status of WPGlobus on the edit pages.
|
521 |
+
msgid "ON"
|
522 |
+
msgstr ""
|
523 |
+
|
524 |
+
msgid "Turn off"
|
525 |
+
msgstr ""
|
526 |
+
|
527 |
+
msgid "OFF"
|
528 |
+
msgstr ""
|
529 |
+
|
530 |
+
msgid "Turn on"
|
531 |
+
msgstr ""
|
532 |
+
|
533 |
+
msgid "Elementor"
|
534 |
+
msgstr ""
|
535 |
+
|
536 |
+
msgid "WPGlobus languages"
|
537 |
+
msgstr ""
|
538 |
+
|
539 |
+
msgid "current"
|
540 |
+
msgstr ""
|
541 |
+
|
542 |
+
msgid "WPGlobus provides multilingual support for Elementor only when the option %1$s%2$s%3$s is set to %4$s."
|
543 |
+
msgstr ""
|
544 |
+
|
545 |
+
msgid "Before switching the language, please save draft or publish."
|
546 |
+
msgstr ""
|
547 |
+
|
548 |
+
#. translators: Metabox title FOR language.
|
549 |
+
msgctxt "filter__seo_meta_box_title"
|
550 |
+
msgid "for"
|
551 |
+
msgstr ""
|
552 |
+
|
553 |
+
msgid "Page is being reloaded. Please wait..."
|
554 |
+
msgstr ""
|
555 |
+
|
556 |
+
msgid "Before switching the language, please save draft or publish, then reload page."
|
557 |
+
msgstr ""
|
558 |
+
|
559 |
+
msgid "WPGlobus provides multilingual support for Elementor only when the option `CSS Print Method` is set to `External File`."
|
560 |
+
msgstr ""
|
561 |
+
|
562 |
+
msgid "Open Elementor Settings page"
|
563 |
+
msgstr ""
|
564 |
+
|
565 |
+
msgid "WPGlobus widget"
|
566 |
+
msgstr ""
|
567 |
+
|
568 |
+
msgid "Add language switcher"
|
569 |
+
msgstr ""
|
570 |
+
|
571 |
+
msgid "Flags"
|
572 |
+
msgstr ""
|
573 |
+
|
574 |
+
msgid "List"
|
575 |
+
msgstr ""
|
576 |
+
|
577 |
+
msgid "List with flags"
|
578 |
+
msgstr ""
|
579 |
+
|
580 |
+
msgid "Select"
|
581 |
+
msgstr ""
|
582 |
+
|
583 |
+
msgid "Select with language code"
|
584 |
+
msgstr ""
|
585 |
+
|
586 |
+
msgid "Dropdown"
|
587 |
+
msgstr ""
|
588 |
+
|
589 |
+
msgid "Dropdown with flags"
|
590 |
+
msgstr ""
|
591 |
+
|
592 |
+
msgid "Selector type"
|
593 |
+
msgstr ""
|
594 |
+
|
595 |
+
msgid "You cannot disable the main language."
|
596 |
+
msgstr ""
|
597 |
+
|
598 |
+
msgid "Need a multilingual slug?"
|
599 |
+
msgstr ""
|
600 |
+
|
601 |
+
msgid "*) Available after the menu is saved."
|
602 |
+
msgstr ""
|
603 |
+
|
604 |
+
#. translators: %s are for A tags.
|
605 |
+
msgid "To have the %1$sImage%2$s widget varying by language,"
|
606 |
+
msgstr ""
|
607 |
+
|
608 |
+
#. translators: %s are for A tags.
|
609 |
+
msgid "please use the %1$sWPGlobus language widgets%2$s add-on"
|
610 |
+
msgstr ""
|
611 |
+
|
612 |
+
msgid "You must enable Pretty Permalinks to use WPGlobus."
|
613 |
+
msgstr ""
|
614 |
+
|
615 |
+
msgid "Please go to Settings > Permalinks > Common Settings and choose a non-default option."
|
616 |
+
msgstr ""
|
617 |
+
|
618 |
+
msgid "Language Selector Menu Style"
|
619 |
+
msgstr ""
|
620 |
+
|
621 |
+
msgid "WPGlobus Plus"
|
622 |
+
msgstr ""
|
623 |
+
|
624 |
+
msgid "Drop-down languages menu or Flat (in one line)"
|
625 |
+
msgstr ""
|
626 |
+
|
627 |
+
msgid "Do not change"
|
628 |
+
msgstr ""
|
629 |
+
|
630 |
+
msgid "Drop-down (vertical)"
|
631 |
+
msgstr ""
|
632 |
+
|
633 |
+
msgid "Flat (horizontal)"
|
634 |
+
msgstr ""
|
635 |
+
|
636 |
+
msgid "If you see this message then your browser may not display the WPGlobus Settings panel properly. Please try another browser."
|
637 |
+
msgstr ""
|
638 |
+
|
639 |
+
msgid "Сompatibility"
|
640 |
+
msgstr ""
|
641 |
+
|
642 |
+
#. translators: placeholders for "strong" tags.
|
643 |
+
msgid "Click the %1$s[Languages]%2$s tab at the left to setup the options."
|
644 |
+
msgstr ""
|
645 |
+
|
646 |
+
#. translators: placeholders for "strong" tags.
|
647 |
+
msgid "Use the %1$s[Languages Table]%2$s section to add a new language or to edit the language attributes: name, code, flag icon, etc."
|
648 |
+
msgstr ""
|
649 |
+
|
650 |
+
msgid "Important notes"
|
651 |
+
msgstr ""
|
652 |
+
|
653 |
+
#. translators: placeholders for "strong" tags.
|
654 |
+
msgid "Version %1$s1.9.17%2$s "
|
655 |
+
msgstr ""
|
656 |
+
|
657 |
+
#. translators: placeholders for "strong" tags.
|
658 |
+
msgid "Starting from this version, %1$sWPGlobus%2$s operates in two modes"
|
659 |
+
msgstr ""
|
660 |
+
|
661 |
+
#. translators: placeholders for "strong" tags; compatibility tab link.
|
662 |
+
msgid "%1$sBuilder mode%2$s: WPGlobus turns this mode on automatically when it discovers any of the plugins/add-ons listed on the %1$s[%3$s]%2$s tab."
|
663 |
+
msgstr ""
|
664 |
+
|
665 |
+
#. translators: placeholders for "strong" tags; compatibility tab link.
|
666 |
+
msgid "%1$sStandard/Classic mode%2$s: is used when there are no plugins `Builder` or if you explicitly turned off builder support on the %1$s[%3$s]%2$s tab."
|
667 |
+
msgstr ""
|
668 |
+
|
669 |
+
#. translators: placeholders for "strong" tags.
|
670 |
+
msgid "Version %1$s2.2.11%2$s "
|
671 |
+
msgstr ""
|
672 |
+
|
673 |
+
msgid "Starting from this version"
|
674 |
+
msgstr ""
|
675 |
+
|
676 |
+
#. translators: placeholders for "strong" tags.
|
677 |
+
msgid "The %1$sBuilder mode%2$s is turned OFF by default for all custom post types (CPT)."
|
678 |
+
msgstr ""
|
679 |
+
|
680 |
+
#. translators: placeholders for "strong" tags.
|
681 |
+
msgid "To turn on the %1$sBuilder mode%2$s for specific post types, please visit the %1$s[%3$s]%2$s tab."
|
682 |
+
msgstr ""
|
683 |
+
|
684 |
+
msgid "Welcome!"
|
685 |
+
msgstr ""
|
686 |
+
|
687 |
+
msgid "Deactivating / Uninstalling"
|
688 |
+
msgstr ""
|
689 |
+
|
690 |
+
msgid "Uninstall"
|
691 |
+
msgstr ""
|
692 |
+
|
693 |
+
msgid "All add-ons"
|
694 |
+
msgstr ""
|
695 |
+
|
696 |
+
msgid "Mobile Menu"
|
697 |
+
msgstr ""
|
698 |
+
|
699 |
+
msgid "Language Widgets"
|
700 |
+
msgstr ""
|
701 |
+
|
702 |
+
msgid "We Recommend..."
|
703 |
+
msgstr ""
|
704 |
+
|
705 |
+
msgid "Our premium add-on, WPGlobus Plus, will add several features to your website, such as:"
|
706 |
+
msgstr ""
|
707 |
+
|
708 |
+
msgid "- Ability to write a post in one language and immediately publish it, not waiting for the translation to other languages;"
|
709 |
+
msgstr ""
|
710 |
+
|
711 |
+
msgid "- Set different URLs for each translation;"
|
712 |
+
msgstr ""
|
713 |
+
|
714 |
+
msgid "- In Yoast SEO, set the focus keyword and do the Page Analysis separately for each translation;"
|
715 |
+
msgstr ""
|
716 |
+
|
717 |
+
msgid "- and more..."
|
718 |
+
msgstr ""
|
719 |
+
|
720 |
+
msgid "Click here to download"
|
721 |
+
msgstr ""
|
722 |
+
|
723 |
+
msgid "Thanks for installing WPGlobus! Now you have a multilingual website and can translate your blog posts and pages to many languages."
|
724 |
+
msgstr ""
|
725 |
+
|
726 |
+
msgid "The next step is to translate your WooCommerce-based store!"
|
727 |
+
msgstr ""
|
728 |
+
|
729 |
+
msgid "With the WPGlobus for WooCommerce premium add-on, you will be able to translate product titles and descriptions, categories, tags and attributes."
|
730 |
+
msgstr ""
|
731 |
+
|
732 |
+
msgid "Multi-currency"
|
733 |
+
msgstr ""
|
734 |
+
|
735 |
+
msgid "Your WooCommerce-powered store is set to show prices and accept payments in a single currency only."
|
736 |
+
msgstr ""
|
737 |
+
|
738 |
+
msgid "With WPGlobus, you can add multiple currencies to your store and charge UK customers in Pounds, US customers in Dollars, Spanish clients in Euros, etc. Accepting multiple currencies will strengthen your competitive edge and positioning for global growth!"
|
739 |
+
msgstr ""
|
740 |
+
|
741 |
+
msgid "The WPGlobus Multi-Currency premium add-on provides switching currencies and re-calculating prices on-the-fly."
|
742 |
+
msgstr ""
|
743 |
+
|
744 |
+
msgid "WPGlobus Premium Add-ons"
|
745 |
+
msgstr ""
|
746 |
+
|
747 |
+
msgid "We have written several Premium add-ons for WPGlobus. With those add-ons, you will be able to:"
|
748 |
+
msgstr ""
|
749 |
+
|
750 |
+
msgid "<strong>Translate URLs</strong> (/my-page/ translates to /fr/ma-page, /ru/моя-страница and so on);"
|
751 |
+
msgstr ""
|
752 |
+
|
753 |
+
msgid "Postpone translation to some languages and <strong>publish only the translated texts</strong>;"
|
754 |
+
msgstr ""
|
755 |
+
|
756 |
+
msgid "Maintain <strong>separate menus and widgets for each language</strong>;"
|
757 |
+
msgstr ""
|
758 |
+
|
759 |
+
msgid "<strong>Translate WooCommerce</strong> products and taxonomies;"
|
760 |
+
msgstr ""
|
761 |
+
|
762 |
+
msgid "Enter separate focus keywords for each language in the <strong>Yoast SEO</strong>;"
|
763 |
+
msgstr ""
|
764 |
+
|
765 |
+
msgid "...and more."
|
766 |
+
msgstr ""
|
767 |
+
|
768 |
+
msgid "Click here to visit the WPGlobus Store"
|
769 |
+
msgstr ""
|
770 |
+
|
771 |
+
msgid "Select a language"
|
772 |
+
msgstr ""
|
773 |
+
|
774 |
+
#. translators: %3$s placeholder for the icon (actual picture).
|
775 |
+
msgid "Place the %1$smain language%2$s of your site at the top of the list by dragging the %3$s icons."
|
776 |
+
msgstr ""
|
777 |
+
|
778 |
+
#. translators: placeholders for the "strong" HTML tags.
|
779 |
+
msgid "%1$sUncheck%2$s the languages you do not plan to use."
|
780 |
+
msgstr ""
|
781 |
+
|
782 |
+
#. translators: placeholders for the "strong" HTML tags.
|
783 |
+
msgid "%1$sAdd%2$s more languages using the section below."
|
784 |
+
msgstr ""
|
785 |
+
|
786 |
+
msgid "When done, click the [Save Changes] button."
|
787 |
+
msgstr ""
|
788 |
+
|
789 |
+
#. translators: %s - placeholder for the "Save Changes" button text.
|
790 |
+
msgid "Press the %s button to confirm."
|
791 |
+
msgstr ""
|
792 |
+
|
793 |
+
#. translators: dropdown option meaning that none of the navigation menus should show the language selector.
|
794 |
+
msgid "-- none --"
|
795 |
+
msgstr ""
|
796 |
+
|
797 |
+
msgid "All menus"
|
798 |
+
msgstr ""
|
799 |
+
|
800 |
+
msgid "Instructions:"
|
801 |
+
msgstr ""
|
802 |
+
|
803 |
+
msgid "(Found in some themes)"
|
804 |
+
msgstr ""
|
805 |
+
|
806 |
+
msgid "Enable"
|
807 |
+
msgstr ""
|
808 |
+
|
809 |
+
msgid "Languages table"
|
810 |
+
msgstr ""
|
811 |
+
|
812 |
+
msgid "Use this table to add, edit or delete languages."
|
813 |
+
msgstr ""
|
814 |
+
|
815 |
+
msgid "NOTE: you cannot remove the main language."
|
816 |
+
msgstr ""
|
817 |
+
|
818 |
+
msgid "WPGlobus is enabled on these Post Types"
|
819 |
+
msgstr ""
|
820 |
+
|
821 |
+
msgid "Uncheck to disable"
|
822 |
+
msgstr ""
|
823 |
+
|
824 |
+
msgid "Please note that there are post types, which status is managed by other plugins and cannot be changed here."
|
825 |
+
msgstr ""
|
826 |
+
|
827 |
+
msgid "Post Types"
|
828 |
+
msgstr ""
|
829 |
+
|
830 |
+
msgid "You should put here only the code provided by WPGlobus Support. Do not write anything else in the sections below as it might break the functionality of your website!"
|
831 |
+
msgstr ""
|
832 |
+
|
833 |
+
msgid "Custom Code"
|
834 |
+
msgstr ""
|
835 |
+
|
836 |
+
msgid "Enabled"
|
837 |
+
msgstr ""
|
838 |
+
|
839 |
+
msgid "Builders support"
|
840 |
+
msgstr ""
|
841 |
+
|
842 |
+
msgid "Builder mode is enabled on these Post Types"
|
843 |
+
msgstr ""
|
844 |
+
|
845 |
+
msgid "Old fashioned language switcher"
|
846 |
+
msgstr ""
|
847 |
+
|
848 |
+
msgid "Block Editor"
|
849 |
+
msgstr ""
|
850 |
+
|
851 |
+
msgid "Block Editor Options"
|
852 |
+
msgstr ""
|
853 |
+
|
854 |
+
msgid "With the current settings, you will see the following lines in the section HEAD of your site pages"
|
855 |
+
msgstr ""
|
856 |
+
|
857 |
+
msgid "(example for two languages)"
|
858 |
+
msgstr ""
|
859 |
+
|
860 |
+
msgid "Tell search engines about localized versions of your pages using the hreflang tag"
|
861 |
+
msgstr ""
|
862 |
+
|
863 |
+
msgid "Output the hreflang tag as"
|
864 |
+
msgstr ""
|
865 |
+
|
866 |
+
msgid "Language- and region-specific (en-US, ru-RU, etc.)"
|
867 |
+
msgstr ""
|
868 |
+
|
869 |
+
msgid "Language- and region-specific (en-us, ru-ru, etc.)"
|
870 |
+
msgstr ""
|
871 |
+
|
872 |
+
msgid "Language code only (en, ru, etc.)"
|
873 |
+
msgstr ""
|
874 |
+
|
875 |
+
msgid "Use the code `x-default` for the main language"
|
876 |
+
msgstr ""
|
877 |
+
|
878 |
+
msgid "Multilingual SEO"
|
879 |
+
msgstr ""
|
880 |
+
|
881 |
+
msgid "Multilingual SEO Options"
|
882 |
+
msgstr ""
|
883 |
+
|
884 |
+
msgid "With WPGlobus, you can get translations for posts and pages using REST API."
|
885 |
+
msgstr ""
|
886 |
+
|
887 |
+
msgid "Go to %1$s%2$s%3$s to see the content in language: %4$s."
|
888 |
+
msgstr ""
|
889 |
+
|
890 |
+
msgid "For demonstration, you can try the first post that WordPress creates at the initial installation."
|
891 |
+
msgstr ""
|
892 |
+
|
893 |
+
msgid "Please read the %1$sWordPress REST API documentation%2$s for more information."
|
894 |
+
msgstr ""
|
895 |
+
|
896 |
+
msgid "In the REST API response, you can find the %1$stranslation%2$s field, which shows whether translations exist for the fields %1$stitle%2$s, %1$scontent%2$s and %1$sexcerpt%2$s or not, for each language. See the screenshot below:"
|
897 |
+
msgstr ""
|
898 |
+
|
899 |
+
msgid "Description:"
|
900 |
+
msgstr ""
|
901 |
+
|
902 |
+
msgid "REST API"
|
903 |
+
msgstr ""
|
904 |
+
|
905 |
+
msgid "Translate strings"
|
906 |
+
msgstr ""
|
907 |
+
|
908 |
+
msgid "item"
|
909 |
+
msgstr ""
|
910 |
+
|
911 |
+
msgid "items"
|
912 |
+
msgstr ""
|
913 |
+
|
914 |
+
msgid "Code"
|
915 |
+
msgstr ""
|
916 |
+
|
917 |
+
msgid "Edit"
|
918 |
+
msgstr ""
|
919 |
+
|
920 |
+
msgid "Delete"
|
921 |
+
msgstr ""
|
922 |
+
|
923 |
+
msgid "File"
|
924 |
+
msgstr ""
|
925 |
+
|
926 |
+
msgid "Flag"
|
927 |
+
msgstr ""
|
928 |
+
|
929 |
+
msgid "Language name"
|
930 |
+
msgstr ""
|
931 |
+
|
932 |
+
msgid "English language name"
|
933 |
+
msgstr ""
|
934 |
+
|
935 |
+
msgid "No items found"
|
936 |
+
msgstr ""
|
937 |
+
|
938 |
+
msgid "Add new Language"
|
939 |
+
msgstr ""
|
940 |
+
|
941 |
+
msgid "No items of this type were found."
|
942 |
+
msgstr ""
|
943 |
+
|
944 |
+
msgid "Select an item"
|
945 |
+
msgstr ""
|
946 |
+
|
947 |
+
msgid "Multilingual support of this add-on is currently in Beta stage."
|
948 |
+
msgstr ""
|
949 |
+
|
950 |
+
msgid "We do not recommend using it on production sites."
|
951 |
+
msgstr ""
|
952 |
+
|
953 |
+
msgid "Please report all problems to %1$sWPGlobus Technical Support%2$s."
|
954 |
+
msgstr ""
|
955 |
+
|
956 |
+
msgid "WordPress version"
|
957 |
+
msgstr ""
|
958 |
+
|
959 |
+
msgid "In the WordPress core"
|
960 |
+
msgstr ""
|
961 |
+
|
962 |
+
msgid "Core"
|
963 |
+
msgstr ""
|
964 |
+
|
965 |
+
msgid "Current version"
|
966 |
+
msgstr ""
|
967 |
+
|
968 |
+
msgid "Stage"
|
969 |
+
msgstr ""
|
970 |
+
|
971 |
+
msgid "Status"
|
972 |
+
msgstr ""
|
973 |
+
|
974 |
+
msgid "Block editor"
|
975 |
+
msgstr ""
|
976 |
+
|
977 |
+
msgid "production"
|
978 |
+
msgstr ""
|
979 |
+
|
980 |
+
msgid "List of supported add-ons"
|
981 |
+
msgstr ""
|
982 |
+
|
983 |
+
msgid "Add-on"
|
984 |
+
msgstr ""
|
985 |
+
|
986 |
+
msgid "Supported minimum version"
|
987 |
+
msgstr ""
|
988 |
+
|
989 |
+
msgid "Not installed"
|
990 |
+
msgstr ""
|
991 |
+
|
992 |
+
msgid "Installed, inactive"
|
993 |
+
msgstr ""
|
994 |
+
|
995 |
+
msgid "Active"
|
996 |
+
msgstr ""
|
997 |
+
|
998 |
+
msgid "WPGlobus Customizer is integrated into the Customize Theme panel"
|
999 |
+
msgstr ""
|
1000 |
+
|
1001 |
+
msgid "However, some themes do not follow all WordPress standards strictly."
|
1002 |
+
msgstr ""
|
1003 |
+
|
1004 |
+
msgid "WPGlobus Customizer may behave incorrectly with those themes."
|
1005 |
+
msgstr ""
|
1006 |
+
|
1007 |
+
msgid "To avoid conflicts, you can switch the WPGlobus Customizer off:"
|
1008 |
+
msgstr ""
|
1009 |
+
|
1010 |
+
msgid "Below is the list of themes that do not support the WPGlobus Customizer. With those themes, WPGlobus Customizer is switched off by default"
|
1011 |
+
msgstr ""
|
1012 |
+
|
1013 |
+
msgid "The currently active theme is"
|
1014 |
+
msgstr ""
|
1015 |
+
|
1016 |
+
msgid "In the current version, WPGlobus Customizer does not support"
|
1017 |
+
msgstr ""
|
1018 |
+
|
1019 |
+
msgid "translation of the navigation menus"
|
1020 |
+
msgstr ""
|
1021 |
+
|
1022 |
+
msgid "to translate, please go to"
|
1023 |
+
msgstr ""
|
1024 |
+
|
1025 |
+
msgid "Go to Customizer"
|
1026 |
+
msgstr ""
|
1027 |
+
|
1028 |
+
msgid "is undefined"
|
1029 |
+
msgstr ""
|
1030 |
+
|
1031 |
+
msgid "is set to"
|
1032 |
+
msgstr ""
|
1033 |
+
|
1034 |
+
msgid "by adding to the file wp-config.php"
|
1035 |
+
msgstr ""
|
1036 |
+
|
1037 |
+
msgid "now"
|
1038 |
+
msgstr ""
|
1039 |
+
|
1040 |
+
msgid "We rely on your support!"
|
1041 |
+
msgstr ""
|
1042 |
+
|
1043 |
+
msgid "Please consider a small donation to support the future development."
|
1044 |
+
msgstr ""
|
1045 |
+
|
1046 |
+
msgid "Thank you!"
|
1047 |
+
msgstr ""
|
1048 |
+
|
1049 |
+
msgid "WPGlobus Plus!"
|
1050 |
+
msgstr ""
|
1051 |
+
|
1052 |
+
msgid "Advanced features and tweaks: URL translation, multilingual SEO analysis, separate publishing and more! "
|
1053 |
+
msgstr ""
|
1054 |
+
|
1055 |
+
msgid "Get WPGlobus Plus now!"
|
1056 |
+
msgstr ""
|
1057 |
+
|
1058 |
+
msgid "Bulk editing of the multilingual titles and descriptions is not supported by the current version."
|
1059 |
+
msgstr ""
|
1060 |
+
|
1061 |
+
msgid "Therefore, to avoid any data loss, we do not recommend using this."
|
1062 |
+
msgstr ""
|
1063 |
+
|
1064 |
+
msgid "WPGlobus warning: "
|
1065 |
+
msgstr ""
|
1066 |
+
|
1067 |
+
msgid "https://github.com/WPGlobus/WPGlobus"
|
1068 |
+
msgstr ""
|
1069 |
+
|
1070 |
+
msgid "A WordPress Globalization / Multilingual Plugin. Posts, pages, menus, widgets and even custom fields - in multiple languages!"
|
1071 |
+
msgstr ""
|
1072 |
+
|
1073 |
+
msgid "https://wpglobus.com/"
|
1074 |
+
msgstr ""
|
readme.txt
CHANGED
@@ -1,260 +1,269 @@
|
|
1 |
-
=== WPGlobus - Multilingual Everything! ===
|
2 |
-
Contributors: tivnetinc, alexgff, tivnet
|
3 |
-
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=SLF8M4YNZHNQN
|
4 |
-
Tags: WPGlobus, localization, multilanguage, multilingual, translate
|
5 |
-
Requires at least: 5.5
|
6 |
-
Tested up to: 5.6
|
7 |
-
Requires PHP: 5.6
|
8 |
-
Stable tag: trunk
|
9 |
-
License: GPL-3.0-or-later
|
10 |
-
License URI: https://spdx.org/licenses/GPL-3.0-or-later.html
|
11 |
-
|
12 |
-
Multilingual/Globalization: URL-based multilanguage; easy translation interface, compatible with Gutenberg, Yoast SEO, All in One SEO Pack and ACF!
|
13 |
-
|
14 |
-
== Description ==
|
15 |
-
|
16 |
-
**WPGlobus** is a family of WordPress plugins assisting you in translating and maintaining bilingual/multilingual WordPress blogs and sites.
|
17 |
-
|
18 |
-
= Quick Start Video =
|
19 |
-
|
20 |
-
https://www.youtube.com/watch?v=zoTWY9JrXLs
|
21 |
-
|
22 |
-
Please also read the [Quick Start Guide](https://wpglobus.com/quick-start/).
|
23 |
-
|
24 |
-
= Important Notes: please read before using WPGlobus! =
|
25 |
-
|
26 |
-
* NO AUTOMATIC TRANSLATION:
|
27 |
-
* WPGlobus does NOT translate texts automatically! You will **translate texts manually**.
|
28 |
-
* PAGE BUILDERS / COMPOSERS:
|
29 |
-
* Starting from the version 1.9.17, WPGlobus supports Gutenberg, WPBakery Page Builder and Elementor. Other builders, such as "Page Builder by SiteOrigin", "Beaver Builder", Fusion ("Avada"), Elegant ("Divi"), etc. are currently in development.
|
30 |
-
* IF YOU UNINSTALL, YOU LOSE TRANSLATIONS:
|
31 |
-
* WPGlobus stores all translations using a special format: `{:en}English{:}{:fr}French{:}{:es}Spanish{:}`. If you decide to **deactivate and uninstall WPGlobus**, you **must run the clean-up tool** to keep only one language. See the details on the "Welcome" tab in the WPGlobus Settings.
|
32 |
-
* COOKIES:
|
33 |
-
* WPGlobus use browser cookies to store the selected language in the form `wpglobus-language=xx` where `xx` is a two-letter language code: `en`, `de`, `fr`, etc.
|
34 |
-
* NO MULTISITE:
|
35 |
-
* The **multisite** mode (multiple virtual sites sharing a single WordPress installation) is **not tested and not supported**.
|
36 |
-
* FREE PLUGIN with PAID EXTENSIONS:
|
37 |
-
* Some functionality is available only with our **premium add-ons**. Details below.
|
38 |
-
* OLD PHP / OLD WORDPRESS:
|
39 |
-
* We develop and test our software using the **latest versions of PHP, WordPress, and all plugins**. If you have an older version and something is not working properly - please upgrade before contacting us.
|
40 |
-
* MBSTRING:
|
41 |
-
* For the full UTF-8 compatibility and better performance, please make sure that the [Multibyte String](http://php.net/manual/en/intro.mbstring.php) PHP extension is enabled.
|
42 |
-
|
43 |
-
= What is in the FREE version of WPGlobus? =
|
44 |
-
|
45 |
-
The WPGlobus plugin provides you with the general multilingual tools.
|
46 |
-
|
47 |
-
* **Manually translate** posts, pages, categories, tags, menus, and widgets;
|
48 |
-
* **Add one or several languages** to your WP blog/site using custom combinations of country flags, locales and language names;
|
49 |
-
* **Enable multilingual SEO features** of "Yoast SEO" and "All in One SEO" plugins;
|
50 |
-
* **Switch the languages at the front-end** using: a drop-down menu extension and/or a customizable widget with various display options;
|
51 |
-
* **Switch the Administrator interface language** using a top bar selector;
|
52 |
-
|
53 |
-
The WPGlobus plugin serves as the **foundation** to other plugins in the family.
|
54 |
-
|
55 |
-
= There are several Free Add-ons: =
|
56 |
-
|
57 |
-
* [WPGlobus Featured Images](https://wordpress.org/plugins/wpglobus-featured-images/): allows setting featured images separately for each language.
|
58 |
-
* [WPGlobus Translate Options](https://wordpress.org/plugins/wpglobus-translate-options/): enables selective translation of the `wp_options` table strings. You need to use it when your theme or a 3rd party plugin (a slider, for example) allows you to enter some texts (headings, buttons, etc.) and stores them in the `options` table.
|
59 |
-
* [WPGlobus for WPBakery Page Builder](https://wordpress.org/plugins/wpglobus-for-wpbakery-visual-composer/): enables WPGlobus on certain themes that use WPBakery's Builder in the standard ("classic") mode.
|
60 |
-
* [WPGlobus for Black Studio TinyMCE Widget](https://wordpress.org/plugins/wpglobus-for-black-studio-tinymce-widget/): adds multilingual editing capabilities to the visual editor widget.
|
61 |
-
|
62 |
-
= When do I need WPGlobus Premium Add-ons? =
|
63 |
-
|
64 |
-
* To translate URLs (`/my-page/` translates to `/fr/ma-page`, `/ru/моя-страница` and so on);
|
65 |
-
* To "postpone" translation to all languages and publish only those that are ready;
|
66 |
-
* To have completely separate menus for each language;
|
67 |
-
* To translate WooCommerce products and taxonomies;
|
68 |
-
* To have separate "focus keywords" for each language in the Yoast SEO;
|
69 |
-
* ...and more.
|
70 |
-
|
71 |
-
For more details, please check out the descriptions of each paid add-on on our website:
|
72 |
-
|
73 |
-
* [WooCommerce WPGlobus](https://wpglobus.com/product/woocommerce-wpglobus/): adds multilingual capabilities to WooCommerce-based online stores.
|
74 |
-
* [WPGlobus Plus](https://wpglobus.com/product/wpglobus-plus/): adds URL fine-tuning, publishing status per translation, multilingual Yoast SEO analysis and more.
|
75 |
-
* [WPGlobus Language Widgets](https://wpglobus.com/product/wpglobus-language-widget/): Multilingual widget logic: show and hide widget depending on the current language.
|
76 |
-
* [WPGlobus Header Images](https://wpglobus.com/product/wpglobus-header-images/): Display different header images per language. Show images depending on the settings in the Customizer.
|
77 |
-
* [WPGlobus Menu Visibility](https://wpglobus.com/product/wpglobus-menu-visibility/): Show or hide menu items depending on the current language.
|
78 |
-
* [WPGlobus Mobile Menu](https://wpglobus.com/product/wpglobus-mobile-menu/): makes the WPGlobus language switcher menu compatible with mobile devices and narrow screens.
|
79 |
-
* [WPGlobus for the "Bridge" theme](https://wpglobus.com/product/wpglobus-for-bridge-theme/): create different sliders for each language when using theme "Bridge".
|
80 |
-
* [Multilingual WooCommerce Nets Netaxept](https://wpglobus.com/product/multilingual-woocommerce-nets-netaxept/): with this add-on, you will be able to translate the Nets payment methods' titles and descriptions to multiple languages.
|
81 |
-
|
82 |
-
= Compatibility with WordPress Themes =
|
83 |
-
|
84 |
-
* WPGlobus works correctly with all themes that apply proper filtering before outputting content.
|
85 |
-
* As most of the themes save their settings in the `options` table, you can use the [WPGlobus Translate Options](https://wordpress.org/plugins/wpglobus-translate-options/) plugin to process those settings correctly.
|
86 |
-
* Some themes incorporate 3rd party plugins (e.g., sliders, forms, composers) - not all of them are 100% multilingual-ready. When you see elements that cannot be translated, please **tell the theme/plugin authors**. We are ready to help them.
|
87 |
-
* Read more on the topic [here](https://wpglobus.com/documentation/wpglobus-compatibility-with-themes-and-plugins/).
|
88 |
-
|
89 |
-
= Compatibility with WordPress Plugins =
|
90 |
-
|
91 |
-
We have checked WPGlobus together with many plugins, including:
|
92 |
-
|
93 |
-
* ACF - Advanced Custom Fields. [WPGlobus Plus](https://wpglobus.com/product/wpglobus-plus/) premium add-on is required for WYSIWYG fields support,
|
94 |
-
* Advanced Post List,
|
95 |
-
* All in One SEO Pack,
|
96 |
-
* WordPress SEO Plugin – Rank Math,
|
97 |
-
* Black Studio TinyMCE Widget (with our free add-on),
|
98 |
-
* MailChimp for WordPress,
|
99 |
-
* Max Mega Menu,
|
100 |
-
* Popups - WordPress Popup,
|
101 |
-
* Sidebar Login,
|
102 |
-
* WPBakery Page Builder,
|
103 |
-
* Whistles,
|
104 |
-
* Widget Logic,
|
105 |
-
* Yoast SEO. [WPGlobus Plus](https://wpglobus.com/product/wpglobus-plus/) premium add-on is required for multilingual focus keyword and SEO analysis.
|
106 |
-
|
107 |
-
Some 3rd-party plugins are supported with our [premium add-ons](https://wpglobus.com/shop/):
|
108 |
-
|
109 |
-
* [TablePress](https://wpglobus.com/product/wpglobus-plus/#tablepress),
|
110 |
-
* [WooCommerce and some of its extensions](https://wpglobus.com/product/woocommerce-wpglobus/),
|
111 |
-
* [WooCommerce Nets Netaxept Payment Plugin](https://wpglobus.com/product/multilingual-woocommerce-nets-netaxept/)
|
112 |
-
|
113 |
-
WPGlobus is compatible with ClassicPress Version 1.
|
114 |
-
|
115 |
-
= Permalinks =
|
116 |
-
|
117 |
-
**IMPORTANT:** WPGlobus will not work if your URLs look like `example.com?p=123` or `example.com/index.php/category/post/`.
|
118 |
-
|
119 |
-
Please go to `Settings->Permalinks` and change the permalink structure to non-default and with no `index.php` in it. If you are unable to do that for some reason, please talk to your hosting provider or systems administrator.
|
120 |
-
|
121 |
-
**Note:** WooCommerce adds their own section to the Permalinks. It is important to fill in all the information. For example, you need to specify your Shop Base, for example, `/product/`. If you leave it blank, WooCommerce will try to translate the base (eg `/produkt/` for German), which will result in a 404 error.
|
122 |
-
|
123 |
-
= Developing on `localhost` or custom ports =
|
124 |
-
|
125 |
-
WPGlobus may not work correctly on development servers having URLs like `//localhost/mysite` or on custom ports like `//myserver.dev:3000`. Please use a proper domain name (a fake one from `/etc/hosts` is OK), and port 80.
|
126 |
-
|
127 |
-
= More info and ways to contact the WPGlobus Development Team =
|
128 |
-
|
129 |
-
* [WPGlobus.com website](https://wpglobus.com/).
|
130 |
-
* [Open source code on GitHub](https://github.com/WPGlobus).
|
131 |
-
|
132 |
-
= Admin interface translations: =
|
133 |
-
|
134 |
-
**NOTE:** Please do not translate anything using the WordPress interface! Join our translation team on Transifex or translate the POT file using `POEdit`. Thank you!
|
135 |
-
|
136 |
-
* `de_DE` by [Tobias Hopp](http://www.tobiashopp.info/) ~ [WPGlobus ist ein Paket von mehreren WordPress-Plugins, die Möglichkeiten zur Übersetzung von Wordpress-Installationen bieten.](https://de.wordpress.org/plugins/wpglobus/)
|
137 |
-
* `es_ES` by [FX Bénard](http://wp-translations.org/) and [Patricia Casado](http://mascositas.com/) ~ [WPGlobus es una familia de plugins de WordPress que ayudan en la traducción de blogs de WordPress.](https://es.wordpress.org/plugins/wpglobus/)
|
138 |
-
* `fr_FR` by [FX Bénard](http://wp-translations.org/) ~ [WPGlobus fait partie des extensions WordPress qui vous aident à rendre les blogs et les sites WordPress multilingues.](https://fr.wordpress.org/plugins/wpglobus/)
|
139 |
-
* `id_ID` by [ChameleonJohn](https://www.chameleonjohn.com/) ~ [WPGlobus adalah keluarga plugin WordPress yang membantu Anda dalam membuat blog dan situs WordPress multibahasa.](https://id.wordpress.org/plugins/wpglobus/)
|
140 |
-
* `pl_PL` by [Maciej Gryniuk](http://maciej-gryniuk.tk/) ~ [WPGlobus jest rodziną wtyczek do WordPress'a pomocnych w tworzeniu wielojęzycznych blogów i stron na WordPress'ie.](https://pl.wordpress.org/plugins/wpglobus/)
|
141 |
-
* `ro_RO` by [Rodica-Elena Andronache](http://themeisle.com/) ~ [WPGlobus este o familie de plugin-uri WordPress ce te asistă în realizarea de bloguri și site-uri WordPress multilingve.](https://ro.wordpress.org/plugins/wpglobus/)
|
142 |
-
* `ru_RU` by [The WPGlobus Team](https://wpglobus.com/ru/) ~ [WPGlobus - это коллекция плагинов ВордПресс для создания мультиязычных сайтов](https://ru.wordpress.org/plugins/wpglobus/)
|
143 |
-
* `sv_SE` by [Elger Lindgren](http://bilddigital.se/) ~ [WPGlobus är en familj av WordPress-tillägg som hjälper dig att göra flerspråkiga Wordpressbloggar och webbplatser.](https://sv.wordpress.org/plugins/wpglobus/)
|
144 |
-
* `tr_TR` by [Borahan Conkeroglu](https://twitter.com/boracon68) ~ [WPGlobus WordPress bloglarını ve sitelerini çokdilli yapmakta size yardım eden bir WordPress eklentileri ailesidir.](https://tr.wordpress.org/plugins/wpglobus/)
|
145 |
-
* `uk` by [Pavlo Novak](https://plus.google.com/u/0/114797816817149043222) ~ ["WPGlobus - це колекція ВордПресс плагінів для створення багатомовних сайтів."](https://uk.wordpress.org/plugins/wpglobus/)
|
146 |
-
|
147 |
-
== Installation ==
|
148 |
-
|
149 |
-
You can install this plugin directly from your WordPress dashboard:
|
150 |
-
|
151 |
-
1. Go to the *Plugins* menu and click *Add New*.
|
152 |
-
1. Search for *WPGlobus*.
|
153 |
-
1. Click *Install Now* next to the WPGlobus plugin.
|
154 |
-
1. Activate the plugin.
|
155 |
-
|
156 |
-
Alternatively, see the guide to [Manually Installing Plugins](https://codex.wordpress.org/Managing_Plugins#Manual_Plugin_Installation).
|
157 |
-
|
158 |
-
To install with PHP Composer:
|
159 |
-
|
160 |
-
* https://wpackagist.org/search?q=wpglobus
|
161 |
-
* https://packagist.org/packages/wpglobus/wpglobus
|
162 |
-
|
163 |
-
== Frequently Asked Questions ==
|
164 |
-
|
165 |
-
= Please read these first: =
|
166 |
-
|
167 |
-
* [The Quick Start Guide](https://wpglobus.com/quick-start/)
|
168 |
-
* [Before contacting Support...](https://wpglobus.com/before-contacting-wpglobus-support/)
|
169 |
-
|
170 |
-
= No automatic translation =
|
171 |
-
|
172 |
-
WPGlobus does NOT translate texts! You need to **translate texts manually**.
|
173 |
-
|
174 |
-
= After deactivating WPGlobus, all my pages look like garbage! =
|
175 |
-
|
176 |
-
What you see is a mix of the languages, which WPGlobus knows how to handle when it's active.
|
177 |
-
When you deactivate WPGlobus, your site is not multilingual anymore, and you have to remove all translations.
|
178 |
-
|
179 |
-
WPGlobus stores all translations using a special format: `{:en}English{:}{:fr}French{:}{:es}Spanish{:}`. If you decide to **deactivate WPGlobus**, you **must run the clean-up tool** to keep only one language. See the details on the "Uninstall" tab in the WPGlobus Settings.
|
180 |
-
|
181 |
-
= When I switch language, I am getting 404 on all pages =
|
182 |
-
|
183 |
-
Please go to the `Admin - Settings - Permalinks` page. Make sure that the `Common Settings` is not set to "Plain" and then press the `Save Changes` button. It should help.
|
184 |
-
|
185 |
-
= Is there a PRO version? =
|
186 |
-
|
187 |
-
We do not make a "PRO" plugin that replaces the free one. Instead, we have a set of add-ons that extend the WPGlobus functionality. Please found them on [our website](https://wpglobus.com).
|
188 |
-
|
189 |
-
**NOTE:** When you install an add-on, such as **WPGlobus Plus**, you must keep the WPGlobus plugin activated!
|
190 |
-
|
191 |
-
= From the WPGlobus.com FAQ Archives: =
|
192 |
-
|
193 |
-
* [Do you support PHP 5.x? PHP 7.x?](https://wpglobus.com/faq/support-php-5-2/)
|
194 |
-
* [Do you support MSIE / Opera / Safari / Chrome / Firefox - Version x.x?](https://wpglobus.com/faq/support-msie-opera-safari-chrome-firefox/)
|
195 |
-
* [Do you plan to support subdomains and URL query parameters?](https://wpglobus.com/faq/subdomains-and-url-query-parameters/)
|
196 |
-
* [I am using WPML, qTranslate-X, Polylang, Multilingual Press, etc. Can I switch to WPGlobus?](https://wpglobus.com/faq/i-am-using-wpml-qtranslate-polylang-multilingual-press-etc-can-i-switch-to-wpglobus/)
|
197 |
-
* [Do you support WooCommerce, EDD, other e-Commerce plugins?](https://wpglobus.com/faq/support-woocommerce-edd/)
|
198 |
-
* [Is it possible to set the user's language automatically based on IP and/or browser language?](https://wpglobus.com/faq/set-language-by-ip/)
|
199 |
-
* [How do I contribute to WPGlobus?](https://wpglobus.com/faq/how-do-i-contribute-to-wpglobus/)
|
200 |
-
|
201 |
-
== Screenshots ==
|
202 |
-
|
203 |
-
1. The Welcome screen.
|
204 |
-
2. Settings panel.
|
205 |
-
3. Languages setup.
|
206 |
-
4. Attaching language switcher to a menu.
|
207 |
-
5. Editing post in multiple languages.
|
208 |
-
6. Multilingual Yoast SEO and Featured Images.
|
209 |
-
7. Language Switcher widget and Multilingual Editor dialog.
|
210 |
-
8. Multilingual WooCommerce store powered by [WooCommerce WPGlobus](https://wpglobus.com/product/woocommerce-wpglobus/).
|
211 |
-
|
212 |
-
== Upgrade Notice ==
|
213 |
-
|
214 |
-
= 2.0.0 =
|
215 |
-
|
216 |
-
WPGlobus Version 2 supports WordPress 5.x, with Gutenberg.
|
217 |
-
|
218 |
-
== Changelog ==
|
219 |
-
|
220 |
-
= 2.6.
|
221 |
-
* (
|
222 |
-
* (Core)
|
223 |
-
* (Core/
|
224 |
-
|
225 |
-
|
226 |
-
* (Vendor/
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
* (
|
231 |
-
* (
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
* (
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
* (
|
241 |
-
|
242 |
-
= 2.5.
|
243 |
-
|
244 |
-
* (
|
245 |
-
* (
|
246 |
-
|
247 |
-
= 2.5.
|
248 |
-
|
249 |
-
* (
|
250 |
-
|
251 |
-
=
|
252 |
-
|
253 |
-
*
|
254 |
-
*
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== WPGlobus - Multilingual Everything! ===
|
2 |
+
Contributors: tivnetinc, alexgff, tivnet
|
3 |
+
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=SLF8M4YNZHNQN
|
4 |
+
Tags: WPGlobus, localization, multilanguage, multilingual, translate
|
5 |
+
Requires at least: 5.5
|
6 |
+
Tested up to: 5.6
|
7 |
+
Requires PHP: 5.6
|
8 |
+
Stable tag: trunk
|
9 |
+
License: GPL-3.0-or-later
|
10 |
+
License URI: https://spdx.org/licenses/GPL-3.0-or-later.html
|
11 |
+
|
12 |
+
Multilingual/Globalization: URL-based multilanguage; easy translation interface, compatible with Gutenberg, Yoast SEO, All in One SEO Pack and ACF!
|
13 |
+
|
14 |
+
== Description ==
|
15 |
+
|
16 |
+
**WPGlobus** is a family of WordPress plugins assisting you in translating and maintaining bilingual/multilingual WordPress blogs and sites.
|
17 |
+
|
18 |
+
= Quick Start Video =
|
19 |
+
|
20 |
+
https://www.youtube.com/watch?v=zoTWY9JrXLs
|
21 |
+
|
22 |
+
Please also read the [Quick Start Guide](https://wpglobus.com/quick-start/).
|
23 |
+
|
24 |
+
= Important Notes: please read before using WPGlobus! =
|
25 |
+
|
26 |
+
* NO AUTOMATIC TRANSLATION:
|
27 |
+
* WPGlobus does NOT translate texts automatically! You will **translate texts manually**.
|
28 |
+
* PAGE BUILDERS / COMPOSERS:
|
29 |
+
* Starting from the version 1.9.17, WPGlobus supports Gutenberg, WPBakery Page Builder and Elementor. Other builders, such as "Page Builder by SiteOrigin", "Beaver Builder", Fusion ("Avada"), Elegant ("Divi"), etc. are currently in development.
|
30 |
+
* IF YOU UNINSTALL, YOU LOSE TRANSLATIONS:
|
31 |
+
* WPGlobus stores all translations using a special format: `{:en}English{:}{:fr}French{:}{:es}Spanish{:}`. If you decide to **deactivate and uninstall WPGlobus**, you **must run the clean-up tool** to keep only one language. See the details on the "Welcome" tab in the WPGlobus Settings.
|
32 |
+
* COOKIES:
|
33 |
+
* WPGlobus use browser cookies to store the selected language in the form `wpglobus-language=xx` where `xx` is a two-letter language code: `en`, `de`, `fr`, etc.
|
34 |
+
* NO MULTISITE:
|
35 |
+
* The **multisite** mode (multiple virtual sites sharing a single WordPress installation) is **not tested and not supported**.
|
36 |
+
* FREE PLUGIN with PAID EXTENSIONS:
|
37 |
+
* Some functionality is available only with our **premium add-ons**. Details below.
|
38 |
+
* OLD PHP / OLD WORDPRESS:
|
39 |
+
* We develop and test our software using the **latest versions of PHP, WordPress, and all plugins**. If you have an older version and something is not working properly - please upgrade before contacting us.
|
40 |
+
* MBSTRING:
|
41 |
+
* For the full UTF-8 compatibility and better performance, please make sure that the [Multibyte String](http://php.net/manual/en/intro.mbstring.php) PHP extension is enabled.
|
42 |
+
|
43 |
+
= What is in the FREE version of WPGlobus? =
|
44 |
+
|
45 |
+
The WPGlobus plugin provides you with the general multilingual tools.
|
46 |
+
|
47 |
+
* **Manually translate** posts, pages, categories, tags, menus, and widgets;
|
48 |
+
* **Add one or several languages** to your WP blog/site using custom combinations of country flags, locales and language names;
|
49 |
+
* **Enable multilingual SEO features** of "Yoast SEO" and "All in One SEO" plugins;
|
50 |
+
* **Switch the languages at the front-end** using: a drop-down menu extension and/or a customizable widget with various display options;
|
51 |
+
* **Switch the Administrator interface language** using a top bar selector;
|
52 |
+
|
53 |
+
The WPGlobus plugin serves as the **foundation** to other plugins in the family.
|
54 |
+
|
55 |
+
= There are several Free Add-ons: =
|
56 |
+
|
57 |
+
* [WPGlobus Featured Images](https://wordpress.org/plugins/wpglobus-featured-images/): allows setting featured images separately for each language.
|
58 |
+
* [WPGlobus Translate Options](https://wordpress.org/plugins/wpglobus-translate-options/): enables selective translation of the `wp_options` table strings. You need to use it when your theme or a 3rd party plugin (a slider, for example) allows you to enter some texts (headings, buttons, etc.) and stores them in the `options` table.
|
59 |
+
* [WPGlobus for WPBakery Page Builder](https://wordpress.org/plugins/wpglobus-for-wpbakery-visual-composer/): enables WPGlobus on certain themes that use WPBakery's Builder in the standard ("classic") mode.
|
60 |
+
* [WPGlobus for Black Studio TinyMCE Widget](https://wordpress.org/plugins/wpglobus-for-black-studio-tinymce-widget/): adds multilingual editing capabilities to the visual editor widget.
|
61 |
+
|
62 |
+
= When do I need WPGlobus Premium Add-ons? =
|
63 |
+
|
64 |
+
* To translate URLs (`/my-page/` translates to `/fr/ma-page`, `/ru/моя-страница` and so on);
|
65 |
+
* To "postpone" translation to all languages and publish only those that are ready;
|
66 |
+
* To have completely separate menus for each language;
|
67 |
+
* To translate WooCommerce products and taxonomies;
|
68 |
+
* To have separate "focus keywords" for each language in the Yoast SEO;
|
69 |
+
* ...and more.
|
70 |
+
|
71 |
+
For more details, please check out the descriptions of each paid add-on on our website:
|
72 |
+
|
73 |
+
* [WooCommerce WPGlobus](https://wpglobus.com/product/woocommerce-wpglobus/): adds multilingual capabilities to WooCommerce-based online stores.
|
74 |
+
* [WPGlobus Plus](https://wpglobus.com/product/wpglobus-plus/): adds URL fine-tuning, publishing status per translation, multilingual Yoast SEO analysis and more.
|
75 |
+
* [WPGlobus Language Widgets](https://wpglobus.com/product/wpglobus-language-widget/): Multilingual widget logic: show and hide widget depending on the current language.
|
76 |
+
* [WPGlobus Header Images](https://wpglobus.com/product/wpglobus-header-images/): Display different header images per language. Show images depending on the settings in the Customizer.
|
77 |
+
* [WPGlobus Menu Visibility](https://wpglobus.com/product/wpglobus-menu-visibility/): Show or hide menu items depending on the current language.
|
78 |
+
* [WPGlobus Mobile Menu](https://wpglobus.com/product/wpglobus-mobile-menu/): makes the WPGlobus language switcher menu compatible with mobile devices and narrow screens.
|
79 |
+
* [WPGlobus for the "Bridge" theme](https://wpglobus.com/product/wpglobus-for-bridge-theme/): create different sliders for each language when using theme "Bridge".
|
80 |
+
* [Multilingual WooCommerce Nets Netaxept](https://wpglobus.com/product/multilingual-woocommerce-nets-netaxept/): with this add-on, you will be able to translate the Nets payment methods' titles and descriptions to multiple languages.
|
81 |
+
|
82 |
+
= Compatibility with WordPress Themes =
|
83 |
+
|
84 |
+
* WPGlobus works correctly with all themes that apply proper filtering before outputting content.
|
85 |
+
* As most of the themes save their settings in the `options` table, you can use the [WPGlobus Translate Options](https://wordpress.org/plugins/wpglobus-translate-options/) plugin to process those settings correctly.
|
86 |
+
* Some themes incorporate 3rd party plugins (e.g., sliders, forms, composers) - not all of them are 100% multilingual-ready. When you see elements that cannot be translated, please **tell the theme/plugin authors**. We are ready to help them.
|
87 |
+
* Read more on the topic [here](https://wpglobus.com/documentation/wpglobus-compatibility-with-themes-and-plugins/).
|
88 |
+
|
89 |
+
= Compatibility with WordPress Plugins =
|
90 |
+
|
91 |
+
We have checked WPGlobus together with many plugins, including:
|
92 |
+
|
93 |
+
* ACF - Advanced Custom Fields. [WPGlobus Plus](https://wpglobus.com/product/wpglobus-plus/) premium add-on is required for WYSIWYG fields support,
|
94 |
+
* Advanced Post List,
|
95 |
+
* All in One SEO Pack,
|
96 |
+
* WordPress SEO Plugin – Rank Math,
|
97 |
+
* Black Studio TinyMCE Widget (with our free add-on),
|
98 |
+
* MailChimp for WordPress,
|
99 |
+
* Max Mega Menu,
|
100 |
+
* Popups - WordPress Popup,
|
101 |
+
* Sidebar Login,
|
102 |
+
* WPBakery Page Builder,
|
103 |
+
* Whistles,
|
104 |
+
* Widget Logic,
|
105 |
+
* Yoast SEO. [WPGlobus Plus](https://wpglobus.com/product/wpglobus-plus/) premium add-on is required for multilingual focus keyword and SEO analysis.
|
106 |
+
|
107 |
+
Some 3rd-party plugins are supported with our [premium add-ons](https://wpglobus.com/shop/):
|
108 |
+
|
109 |
+
* [TablePress](https://wpglobus.com/product/wpglobus-plus/#tablepress),
|
110 |
+
* [WooCommerce and some of its extensions](https://wpglobus.com/product/woocommerce-wpglobus/),
|
111 |
+
* [WooCommerce Nets Netaxept Payment Plugin](https://wpglobus.com/product/multilingual-woocommerce-nets-netaxept/)
|
112 |
+
|
113 |
+
WPGlobus is compatible with ClassicPress Version 1.
|
114 |
+
|
115 |
+
= Permalinks =
|
116 |
+
|
117 |
+
**IMPORTANT:** WPGlobus will not work if your URLs look like `example.com?p=123` or `example.com/index.php/category/post/`.
|
118 |
+
|
119 |
+
Please go to `Settings->Permalinks` and change the permalink structure to non-default and with no `index.php` in it. If you are unable to do that for some reason, please talk to your hosting provider or systems administrator.
|
120 |
+
|
121 |
+
**Note:** WooCommerce adds their own section to the Permalinks. It is important to fill in all the information. For example, you need to specify your Shop Base, for example, `/product/`. If you leave it blank, WooCommerce will try to translate the base (eg `/produkt/` for German), which will result in a 404 error.
|
122 |
+
|
123 |
+
= Developing on `localhost` or custom ports =
|
124 |
+
|
125 |
+
WPGlobus may not work correctly on development servers having URLs like `//localhost/mysite` or on custom ports like `//myserver.dev:3000`. Please use a proper domain name (a fake one from `/etc/hosts` is OK), and port 80.
|
126 |
+
|
127 |
+
= More info and ways to contact the WPGlobus Development Team =
|
128 |
+
|
129 |
+
* [WPGlobus.com website](https://wpglobus.com/).
|
130 |
+
* [Open source code on GitHub](https://github.com/WPGlobus).
|
131 |
+
|
132 |
+
= Admin interface translations: =
|
133 |
+
|
134 |
+
**NOTE:** Please do not translate anything using the WordPress interface! Join our translation team on Transifex or translate the POT file using `POEdit`. Thank you!
|
135 |
+
|
136 |
+
* `de_DE` by [Tobias Hopp](http://www.tobiashopp.info/) ~ [WPGlobus ist ein Paket von mehreren WordPress-Plugins, die Möglichkeiten zur Übersetzung von Wordpress-Installationen bieten.](https://de.wordpress.org/plugins/wpglobus/)
|
137 |
+
* `es_ES` by [FX Bénard](http://wp-translations.org/) and [Patricia Casado](http://mascositas.com/) ~ [WPGlobus es una familia de plugins de WordPress que ayudan en la traducción de blogs de WordPress.](https://es.wordpress.org/plugins/wpglobus/)
|
138 |
+
* `fr_FR` by [FX Bénard](http://wp-translations.org/) ~ [WPGlobus fait partie des extensions WordPress qui vous aident à rendre les blogs et les sites WordPress multilingues.](https://fr.wordpress.org/plugins/wpglobus/)
|
139 |
+
* `id_ID` by [ChameleonJohn](https://www.chameleonjohn.com/) ~ [WPGlobus adalah keluarga plugin WordPress yang membantu Anda dalam membuat blog dan situs WordPress multibahasa.](https://id.wordpress.org/plugins/wpglobus/)
|
140 |
+
* `pl_PL` by [Maciej Gryniuk](http://maciej-gryniuk.tk/) ~ [WPGlobus jest rodziną wtyczek do WordPress'a pomocnych w tworzeniu wielojęzycznych blogów i stron na WordPress'ie.](https://pl.wordpress.org/plugins/wpglobus/)
|
141 |
+
* `ro_RO` by [Rodica-Elena Andronache](http://themeisle.com/) ~ [WPGlobus este o familie de plugin-uri WordPress ce te asistă în realizarea de bloguri și site-uri WordPress multilingve.](https://ro.wordpress.org/plugins/wpglobus/)
|
142 |
+
* `ru_RU` by [The WPGlobus Team](https://wpglobus.com/ru/) ~ [WPGlobus - это коллекция плагинов ВордПресс для создания мультиязычных сайтов](https://ru.wordpress.org/plugins/wpglobus/)
|
143 |
+
* `sv_SE` by [Elger Lindgren](http://bilddigital.se/) ~ [WPGlobus är en familj av WordPress-tillägg som hjälper dig att göra flerspråkiga Wordpressbloggar och webbplatser.](https://sv.wordpress.org/plugins/wpglobus/)
|
144 |
+
* `tr_TR` by [Borahan Conkeroglu](https://twitter.com/boracon68) ~ [WPGlobus WordPress bloglarını ve sitelerini çokdilli yapmakta size yardım eden bir WordPress eklentileri ailesidir.](https://tr.wordpress.org/plugins/wpglobus/)
|
145 |
+
* `uk` by [Pavlo Novak](https://plus.google.com/u/0/114797816817149043222) ~ ["WPGlobus - це колекція ВордПресс плагінів для створення багатомовних сайтів."](https://uk.wordpress.org/plugins/wpglobus/)
|
146 |
+
|
147 |
+
== Installation ==
|
148 |
+
|
149 |
+
You can install this plugin directly from your WordPress dashboard:
|
150 |
+
|
151 |
+
1. Go to the *Plugins* menu and click *Add New*.
|
152 |
+
1. Search for *WPGlobus*.
|
153 |
+
1. Click *Install Now* next to the WPGlobus plugin.
|
154 |
+
1. Activate the plugin.
|
155 |
+
|
156 |
+
Alternatively, see the guide to [Manually Installing Plugins](https://codex.wordpress.org/Managing_Plugins#Manual_Plugin_Installation).
|
157 |
+
|
158 |
+
To install with PHP Composer:
|
159 |
+
|
160 |
+
* https://wpackagist.org/search?q=wpglobus
|
161 |
+
* https://packagist.org/packages/wpglobus/wpglobus
|
162 |
+
|
163 |
+
== Frequently Asked Questions ==
|
164 |
+
|
165 |
+
= Please read these first: =
|
166 |
+
|
167 |
+
* [The Quick Start Guide](https://wpglobus.com/quick-start/)
|
168 |
+
* [Before contacting Support...](https://wpglobus.com/before-contacting-wpglobus-support/)
|
169 |
+
|
170 |
+
= No automatic translation =
|
171 |
+
|
172 |
+
WPGlobus does NOT translate texts! You need to **translate texts manually**.
|
173 |
+
|
174 |
+
= After deactivating WPGlobus, all my pages look like garbage! =
|
175 |
+
|
176 |
+
What you see is a mix of the languages, which WPGlobus knows how to handle when it's active.
|
177 |
+
When you deactivate WPGlobus, your site is not multilingual anymore, and you have to remove all translations.
|
178 |
+
|
179 |
+
WPGlobus stores all translations using a special format: `{:en}English{:}{:fr}French{:}{:es}Spanish{:}`. If you decide to **deactivate WPGlobus**, you **must run the clean-up tool** to keep only one language. See the details on the "Uninstall" tab in the WPGlobus Settings.
|
180 |
+
|
181 |
+
= When I switch language, I am getting 404 on all pages =
|
182 |
+
|
183 |
+
Please go to the `Admin - Settings - Permalinks` page. Make sure that the `Common Settings` is not set to "Plain" and then press the `Save Changes` button. It should help.
|
184 |
+
|
185 |
+
= Is there a PRO version? =
|
186 |
+
|
187 |
+
We do not make a "PRO" plugin that replaces the free one. Instead, we have a set of add-ons that extend the WPGlobus functionality. Please found them on [our website](https://wpglobus.com).
|
188 |
+
|
189 |
+
**NOTE:** When you install an add-on, such as **WPGlobus Plus**, you must keep the WPGlobus plugin activated!
|
190 |
+
|
191 |
+
= From the WPGlobus.com FAQ Archives: =
|
192 |
+
|
193 |
+
* [Do you support PHP 5.x? PHP 7.x?](https://wpglobus.com/faq/support-php-5-2/)
|
194 |
+
* [Do you support MSIE / Opera / Safari / Chrome / Firefox - Version x.x?](https://wpglobus.com/faq/support-msie-opera-safari-chrome-firefox/)
|
195 |
+
* [Do you plan to support subdomains and URL query parameters?](https://wpglobus.com/faq/subdomains-and-url-query-parameters/)
|
196 |
+
* [I am using WPML, qTranslate-X, Polylang, Multilingual Press, etc. Can I switch to WPGlobus?](https://wpglobus.com/faq/i-am-using-wpml-qtranslate-polylang-multilingual-press-etc-can-i-switch-to-wpglobus/)
|
197 |
+
* [Do you support WooCommerce, EDD, other e-Commerce plugins?](https://wpglobus.com/faq/support-woocommerce-edd/)
|
198 |
+
* [Is it possible to set the user's language automatically based on IP and/or browser language?](https://wpglobus.com/faq/set-language-by-ip/)
|
199 |
+
* [How do I contribute to WPGlobus?](https://wpglobus.com/faq/how-do-i-contribute-to-wpglobus/)
|
200 |
+
|
201 |
+
== Screenshots ==
|
202 |
+
|
203 |
+
1. The Welcome screen.
|
204 |
+
2. Settings panel.
|
205 |
+
3. Languages setup.
|
206 |
+
4. Attaching language switcher to a menu.
|
207 |
+
5. Editing post in multiple languages.
|
208 |
+
6. Multilingual Yoast SEO and Featured Images.
|
209 |
+
7. Language Switcher widget and Multilingual Editor dialog.
|
210 |
+
8. Multilingual WooCommerce store powered by [WooCommerce WPGlobus](https://wpglobus.com/product/woocommerce-wpglobus/).
|
211 |
+
|
212 |
+
== Upgrade Notice ==
|
213 |
+
|
214 |
+
= 2.0.0 =
|
215 |
+
|
216 |
+
WPGlobus Version 2 supports WordPress 5.x, with Gutenberg.
|
217 |
+
|
218 |
+
== Changelog ==
|
219 |
+
|
220 |
+
= 2.6.1 =
|
221 |
+
* (Core/Options) Added handling of actions for the tabs.
|
222 |
+
* (Core/Controller) Added filter `googlesitekit_canonical_home_url`.
|
223 |
+
* (Core/WP_Options) Fixed PHP Notice: `Array to string conversion`.
|
224 |
+
* (Core/Plugin Install) Fixed `uasort` warning.
|
225 |
+
* (Core) Code clean-up.
|
226 |
+
* (Vendor/RankMathSEO) Typo.
|
227 |
+
* (Core/Updater) Updater v.1.0.10.
|
228 |
+
|
229 |
+
= 2.6.0 =
|
230 |
+
* (Compatibility) Admin and Builders JavaScript code refactored to work with WordPress 5.6.*
|
231 |
+
* (Core) Revised filters on `widgets.php` page.
|
232 |
+
* (Core/WidgetsJS) Code refactored for Image widgets.
|
233 |
+
|
234 |
+
= 2.5.23 =
|
235 |
+
* (Vendor/Yoast) Fixed filter for the post title when post meta is empty.
|
236 |
+
|
237 |
+
= 2.5.22 =
|
238 |
+
|
239 |
+
* (Vendor/Yoast) Added filters for the taxonomy title, description, Open Graph title and description.
|
240 |
+
* (Vendor/Yoast) Fixed filter for the post title.
|
241 |
+
|
242 |
+
= 2.5.21 =
|
243 |
+
|
244 |
+
* (Customizer) WPGlobus Customizer is switched off for the `NewYork City` theme.
|
245 |
+
* (Customizer) CSS tweak for the `description` field.
|
246 |
+
|
247 |
+
= 2.5.20 =
|
248 |
+
|
249 |
+
* (Core/Recommendations) Added admin notices about required versions of WordPress PHP.
|
250 |
+
|
251 |
+
= 2.5.19 =
|
252 |
+
|
253 |
+
* (Options/Languages table) Added Georgian language and flag image.
|
254 |
+
* (Vendor/Yoast) Added multilingual support for the fields in the Social tab.
|
255 |
+
|
256 |
+
= 2.5.18 =
|
257 |
+
|
258 |
+
* (Builders/Pods) Fixed `Uncaught Error: Call to a member function fields() on bool`.
|
259 |
+
|
260 |
+
= Earlier versions and Add-ons =
|
261 |
+
|
262 |
+
* [See the complete changelog here](https://github.com/WPGlobus/WPGlobus/blob/master/CHANGELOG.md)
|
263 |
+
* [WPGlobus for WooCommerce](https://wpglobus.com/extensions/woocommerce-wpglobus/woocommerce-wpglobus-changelog/)
|
264 |
+
* [WPGlobus Plus](https://wpglobus.com/extensions/wpglobus-plus/changelog/)
|
265 |
+
|
266 |
+
== Demo Sites ==
|
267 |
+
|
268 |
+
* [WPGlobus.com](https://wpglobus.com/):
|
269 |
+
* Bilingual site using a variety of posts, pages, custom post types, forms, and a WooCommerce store with Subscription and API extensions.
|
vendor/composer/ClassLoader.php
CHANGED
@@ -37,8 +37,8 @@ namespace Composer\Autoload;
|
|
37 |
*
|
38 |
* @author Fabien Potencier <fabien@symfony.com>
|
39 |
* @author Jordi Boggiano <j.boggiano@seld.be>
|
40 |
-
* @see
|
41 |
-
* @see
|
42 |
*/
|
43 |
class ClassLoader
|
44 |
{
|
@@ -60,7 +60,7 @@ class ClassLoader
|
|
60 |
public function getPrefixes()
|
61 |
{
|
62 |
if (!empty($this->prefixesPsr0)) {
|
63 |
-
return call_user_func_array('array_merge', $this->prefixesPsr0);
|
64 |
}
|
65 |
|
66 |
return array();
|
37 |
*
|
38 |
* @author Fabien Potencier <fabien@symfony.com>
|
39 |
* @author Jordi Boggiano <j.boggiano@seld.be>
|
40 |
+
* @see https://www.php-fig.org/psr/psr-0/
|
41 |
+
* @see https://www.php-fig.org/psr/psr-4/
|
42 |
*/
|
43 |
class ClassLoader
|
44 |
{
|
60 |
public function getPrefixes()
|
61 |
{
|
62 |
if (!empty($this->prefixesPsr0)) {
|
63 |
+
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
|
64 |
}
|
65 |
|
66 |
return array();
|
vendor/composer/InstalledVersions.php
ADDED
@@ -0,0 +1,227 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Composer;
|
4 |
+
|
5 |
+
use Composer\Semver\VersionParser;
|
6 |
+
|
7 |
+
|
8 |
+
|
9 |
+
|
10 |
+
|
11 |
+
|
12 |
+
class InstalledVersions
|
13 |
+
{
|
14 |
+
private static $installed = array (
|
15 |
+
'root' =>
|
16 |
+
array (
|
17 |
+
'pretty_version' => 'dev-develop',
|
18 |
+
'version' => 'dev-develop',
|
19 |
+
'aliases' =>
|
20 |
+
array (
|
21 |
+
),
|
22 |
+
'reference' => '8be7f5ab873c73ea567597fdd26f07e620363071',
|
23 |
+
'name' => 'wpglobus/wpglobus',
|
24 |
+
),
|
25 |
+
'versions' =>
|
26 |
+
array (
|
27 |
+
'bemailr/wp-requirements' =>
|
28 |
+
array (
|
29 |
+
'pretty_version' => '2.0.3',
|
30 |
+
'version' => '2.0.3.0',
|
31 |
+
'aliases' =>
|
32 |
+
array (
|
33 |
+
),
|
34 |
+
'reference' => 'e903973b0dfc1178f89c757bd205327811ea4658',
|
35 |
+
),
|
36 |
+
'tivwp/updater' =>
|
37 |
+
array (
|
38 |
+
'pretty_version' => '1.0.10',
|
39 |
+
'version' => '1.0.10.0',
|
40 |
+
'aliases' =>
|
41 |
+
array (
|
42 |
+
),
|
43 |
+
'reference' => 'c380367c0e30359c16dde53d023208e349257be2',
|
44 |
+
),
|
45 |
+
'wpglobus/wpglobus' =>
|
46 |
+
array (
|
47 |
+
'pretty_version' => 'dev-develop',
|
48 |
+
'version' => 'dev-develop',
|
49 |
+
'aliases' =>
|
50 |
+
array (
|
51 |
+
),
|
52 |
+
'reference' => '8be7f5ab873c73ea567597fdd26f07e620363071',
|
53 |
+
),
|
54 |
+
),
|
55 |
+
);
|
56 |
+
|
57 |
+
|
58 |
+
|
59 |
+
|
60 |
+
|
61 |
+
|
62 |
+
|
63 |
+
public static function getInstalledPackages()
|
64 |
+
{
|
65 |
+
return array_keys(self::$installed['versions']);
|
66 |
+
}
|
67 |
+
|
68 |
+
|
69 |
+
|
70 |
+
|
71 |
+
|
72 |
+
|
73 |
+
|
74 |
+
|
75 |
+
|
76 |
+
public static function isInstalled($packageName)
|
77 |
+
{
|
78 |
+
return isset(self::$installed['versions'][$packageName]);
|
79 |
+
}
|
80 |
+
|
81 |
+
|
82 |
+
|
83 |
+
|
84 |
+
|
85 |
+
|
86 |
+
|
87 |
+
|
88 |
+
|
89 |
+
|
90 |
+
|
91 |
+
|
92 |
+
|
93 |
+
|
94 |
+
public static function satisfies(VersionParser $parser, $packageName, $constraint)
|
95 |
+
{
|
96 |
+
$constraint = $parser->parseConstraints($constraint);
|
97 |
+
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
|
98 |
+
|
99 |
+
return $provided->matches($constraint);
|
100 |
+
}
|
101 |
+
|
102 |
+
|
103 |
+
|
104 |
+
|
105 |
+
|
106 |
+
|
107 |
+
|
108 |
+
|
109 |
+
|
110 |
+
|
111 |
+
public static function getVersionRanges($packageName)
|
112 |
+
{
|
113 |
+
if (!isset(self::$installed['versions'][$packageName])) {
|
114 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
115 |
+
}
|
116 |
+
|
117 |
+
$ranges = array();
|
118 |
+
if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
|
119 |
+
$ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
|
120 |
+
}
|
121 |
+
if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
|
122 |
+
$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
|
123 |
+
}
|
124 |
+
if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
|
125 |
+
$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
|
126 |
+
}
|
127 |
+
if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
|
128 |
+
$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
|
129 |
+
}
|
130 |
+
|
131 |
+
return implode(' || ', $ranges);
|
132 |
+
}
|
133 |
+
|
134 |
+
|
135 |
+
|
136 |
+
|
137 |
+
|
138 |
+
public static function getVersion($packageName)
|
139 |
+
{
|
140 |
+
if (!isset(self::$installed['versions'][$packageName])) {
|
141 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
142 |
+
}
|
143 |
+
|
144 |
+
if (!isset(self::$installed['versions'][$packageName]['version'])) {
|
145 |
+
return null;
|
146 |
+
}
|
147 |
+
|
148 |
+
return self::$installed['versions'][$packageName]['version'];
|
149 |
+
}
|
150 |
+
|
151 |
+
|
152 |
+
|
153 |
+
|
154 |
+
|
155 |
+
public static function getPrettyVersion($packageName)
|
156 |
+
{
|
157 |
+
if (!isset(self::$installed['versions'][$packageName])) {
|
158 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
159 |
+
}
|
160 |
+
|
161 |
+
if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
|
162 |
+
return null;
|
163 |
+
}
|
164 |
+
|
165 |
+
return self::$installed['versions'][$packageName]['pretty_version'];
|
166 |
+
}
|
167 |
+
|
168 |
+
|
169 |
+
|
170 |
+
|
171 |
+
|
172 |
+
public static function getReference($packageName)
|
173 |
+
{
|
174 |
+
if (!isset(self::$installed['versions'][$packageName])) {
|
175 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
176 |
+
}
|
177 |
+
|
178 |
+
if (!isset(self::$installed['versions'][$packageName]['reference'])) {
|
179 |
+
return null;
|
180 |
+
}
|
181 |
+
|
182 |
+
return self::$installed['versions'][$packageName]['reference'];
|
183 |
+
}
|
184 |
+
|
185 |
+
|
186 |
+
|
187 |
+
|
188 |
+
|
189 |
+
public static function getRootPackage()
|
190 |
+
{
|
191 |
+
return self::$installed['root'];
|
192 |
+
}
|
193 |
+
|
194 |
+
|
195 |
+
|
196 |
+
|
197 |
+
|
198 |
+
|
199 |
+
|
200 |
+
public static function getRawData()
|
201 |
+
{
|
202 |
+
return self::$installed;
|
203 |
+
}
|
204 |
+
|
205 |
+
|
206 |
+
|
207 |
+
|
208 |
+
|
209 |
+
|
210 |
+
|
211 |
+
|
212 |
+
|
213 |
+
|
214 |
+
|
215 |
+
|
216 |
+
|
217 |
+
|
218 |
+
|
219 |
+
|
220 |
+
|
221 |
+
|
222 |
+
|
223 |
+
public static function reload($data)
|
224 |
+
{
|
225 |
+
self::$installed = $data;
|
226 |
+
}
|
227 |
+
}
|
vendor/composer/autoload_classmap.php
CHANGED
@@ -6,4 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
|
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
|
|
9 |
);
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
9 |
+
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
10 |
);
|
vendor/composer/autoload_real.php
CHANGED
@@ -13,6 +13,9 @@ class ComposerAutoloaderInit73ad96349088be86890408600b0d3e35
|
|
13 |
}
|
14 |
}
|
15 |
|
|
|
|
|
|
|
16 |
public static function getLoader()
|
17 |
{
|
18 |
if (null !== self::$loader) {
|
@@ -25,7 +28,7 @@ class ComposerAutoloaderInit73ad96349088be86890408600b0d3e35
|
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
-
|
29 |
|
30 |
call_user_func(\Composer\Autoload\ComposerStaticInit73ad96349088be86890408600b0d3e35::getInitializer($loader));
|
31 |
} else {
|
13 |
}
|
14 |
}
|
15 |
|
16 |
+
/**
|
17 |
+
* @return \Composer\Autoload\ClassLoader
|
18 |
+
*/
|
19 |
public static function getLoader()
|
20 |
{
|
21 |
if (null !== self::$loader) {
|
28 |
|
29 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
30 |
if ($useStaticLoader) {
|
31 |
+
require __DIR__ . '/autoload_static.php';
|
32 |
|
33 |
call_user_func(\Composer\Autoload\ComposerStaticInit73ad96349088be86890408600b0d3e35::getInitializer($loader));
|
34 |
} else {
|
vendor/composer/autoload_static.php
CHANGED
@@ -6,9 +6,14 @@ namespace Composer\Autoload;
|
|
6 |
|
7 |
class ComposerStaticInit73ad96349088be86890408600b0d3e35
|
8 |
{
|
|
|
|
|
|
|
|
|
9 |
public static function getInitializer(ClassLoader $loader)
|
10 |
{
|
11 |
return \Closure::bind(function () use ($loader) {
|
|
|
12 |
|
13 |
}, null, ClassLoader::class);
|
14 |
}
|
6 |
|
7 |
class ComposerStaticInit73ad96349088be86890408600b0d3e35
|
8 |
{
|
9 |
+
public static $classMap = array (
|
10 |
+
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
11 |
+
);
|
12 |
+
|
13 |
public static function getInitializer(ClassLoader $loader)
|
14 |
{
|
15 |
return \Closure::bind(function () use ($loader) {
|
16 |
+
$loader->classMap = ComposerStaticInit73ad96349088be86890408600b0d3e35::$classMap;
|
17 |
|
18 |
}, null, ClassLoader::class);
|
19 |
}
|
vendor/composer/installed.json
CHANGED
@@ -1,62 +1,68 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
"
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
"
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
"
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
"
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
"
|
35 |
-
"
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
"
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
"
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
"
|
60 |
-
|
61 |
-
|
62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"packages": [
|
3 |
+
{
|
4 |
+
"name": "bemailr/wp-requirements",
|
5 |
+
"version": "2.0.3",
|
6 |
+
"version_normalized": "2.0.3.0",
|
7 |
+
"source": {
|
8 |
+
"type": "git",
|
9 |
+
"url": "https://github.com/bemailr/wp-requirements.git",
|
10 |
+
"reference": "e903973b0dfc1178f89c757bd205327811ea4658"
|
11 |
+
},
|
12 |
+
"dist": {
|
13 |
+
"type": "zip",
|
14 |
+
"url": "https://api.github.com/repos/bemailr/wp-requirements/zipball/e903973b0dfc1178f89c757bd205327811ea4658",
|
15 |
+
"reference": "e903973b0dfc1178f89c757bd205327811ea4658",
|
16 |
+
"shasum": ""
|
17 |
+
},
|
18 |
+
"time": "2016-10-18T23:09:16+00:00",
|
19 |
+
"type": "library",
|
20 |
+
"installation-source": "dist",
|
21 |
+
"notification-url": "https://packagist.org/downloads/",
|
22 |
+
"license": [
|
23 |
+
"GPL-3.0"
|
24 |
+
],
|
25 |
+
"description": "A helpful library for checking the prerequisites when activating / running a WordPress plugin.",
|
26 |
+
"keywords": [
|
27 |
+
"wordpress"
|
28 |
+
],
|
29 |
+
"install-path": "../bemailr/wp-requirements"
|
30 |
+
},
|
31 |
+
{
|
32 |
+
"name": "tivwp/updater",
|
33 |
+
"version": "1.0.10",
|
34 |
+
"version_normalized": "1.0.10.0",
|
35 |
+
"source": {
|
36 |
+
"type": "git",
|
37 |
+
"url": "https://bitbucket.org/tivwp/tivwp-updater.git",
|
38 |
+
"reference": "c380367c0e30359c16dde53d023208e349257be2"
|
39 |
+
},
|
40 |
+
"dist": {
|
41 |
+
"type": "zip",
|
42 |
+
"url": "https://bitbucket.org/tivwp/tivwp-updater/get/c380367c0e30359c16dde53d023208e349257be2.zip",
|
43 |
+
"reference": "c380367c0e30359c16dde53d023208e349257be2",
|
44 |
+
"shasum": ""
|
45 |
+
},
|
46 |
+
"time": "2020-12-25T19:34:18+00:00",
|
47 |
+
"type": "library",
|
48 |
+
"installation-source": "dist",
|
49 |
+
"license": [
|
50 |
+
"GPL-3.0"
|
51 |
+
],
|
52 |
+
"authors": [
|
53 |
+
{
|
54 |
+
"name": "Gregory Karpinsky",
|
55 |
+
"email": "gregory@tiv.net"
|
56 |
+
}
|
57 |
+
],
|
58 |
+
"description": "Interface to WooCommerce API Manager",
|
59 |
+
"homepage": "https://bitbucket.org/tivwp/tivwp-updater",
|
60 |
+
"support": {
|
61 |
+
"source": "https://bitbucket.org/tivwp/tivwp-updater/src/c380367c0e30359c16dde53d023208e349257be2/?at=1.0.10"
|
62 |
+
},
|
63 |
+
"install-path": "../tivwp/updater"
|
64 |
+
}
|
65 |
+
],
|
66 |
+
"dev": true,
|
67 |
+
"dev-package-names": []
|
68 |
+
}
|
vendor/composer/installed.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php return array (
|
2 |
+
'root' =>
|
3 |
+
array (
|
4 |
+
'pretty_version' => 'dev-develop',
|
5 |
+
'version' => 'dev-develop',
|
6 |
+
'aliases' =>
|
7 |
+
array (
|
8 |
+
),
|
9 |
+
'reference' => '8be7f5ab873c73ea567597fdd26f07e620363071',
|
10 |
+
'name' => 'wpglobus/wpglobus',
|
11 |
+
),
|
12 |
+
'versions' =>
|
13 |
+
array (
|
14 |
+
'bemailr/wp-requirements' =>
|
15 |
+
array (
|
16 |
+
'pretty_version' => '2.0.3',
|
17 |
+
'version' => '2.0.3.0',
|
18 |
+
'aliases' =>
|
19 |
+
array (
|
20 |
+
),
|
21 |
+
'reference' => 'e903973b0dfc1178f89c757bd205327811ea4658',
|
22 |
+
),
|
23 |
+
'tivwp/updater' =>
|
24 |
+
array (
|
25 |
+
'pretty_version' => '1.0.10',
|
26 |
+
'version' => '1.0.10.0',
|
27 |
+
'aliases' =>
|
28 |
+
array (
|
29 |
+
),
|
30 |
+
'reference' => 'c380367c0e30359c16dde53d023208e349257be2',
|
31 |
+
),
|
32 |
+
'wpglobus/wpglobus' =>
|
33 |
+
array (
|
34 |
+
'pretty_version' => 'dev-develop',
|
35 |
+
'version' => 'dev-develop',
|
36 |
+
'aliases' =>
|
37 |
+
array (
|
38 |
+
),
|
39 |
+
'reference' => '8be7f5ab873c73ea567597fdd26f07e620363071',
|
40 |
+
),
|
41 |
+
),
|
42 |
+
);
|
vendor/tivwp/updater/class-tivwp-updater.php
CHANGED
@@ -5,9 +5,13 @@
|
|
5 |
* @package TIVWP_Updater
|
6 |
*/
|
7 |
|
8 |
-
|
9 |
-
|
10 |
-
|
|
|
|
|
|
|
|
|
11 |
|
12 |
/**
|
13 |
* Class TIVWP_Updater
|
@@ -149,7 +153,7 @@ class TIVWP_Updater {
|
|
149 |
*/
|
150 |
public function __construct( array $args = array() ) {
|
151 |
|
152 |
-
$this->
|
153 |
|
154 |
// Note: these settings are for a specific plugin, so cannot do it at the loader.
|
155 |
$ok_to_run = true;
|
@@ -162,18 +166,18 @@ class TIVWP_Updater {
|
|
162 |
/**
|
163 |
* Override the $ok_to_run value.
|
164 |
*
|
165 |
-
* @example
|
166 |
-
* <code>
|
167 |
-
* add_filter( 'tivwp-updater-ok-to-run', '__return_true' );
|
168 |
-
* </code>
|
169 |
-
*
|
170 |
* @param bool $ok_to_run The value.
|
171 |
* @param TIVWP_Updater $this The Updater class instance.
|
|
|
|
|
|
|
|
|
|
|
172 |
*/
|
173 |
-
$ok_to_run = apply_filters( '
|
174 |
|
175 |
if ( $ok_to_run ) {
|
176 |
-
$this->
|
177 |
}
|
178 |
|
179 |
}
|
@@ -183,7 +187,7 @@ class TIVWP_Updater {
|
|
183 |
*
|
184 |
* @param array $args To initialize class variables.
|
185 |
*/
|
186 |
-
protected function
|
187 |
foreach ( explode( ',', self::CONSTRUCTOR_VARS ) as $var_name ) {
|
188 |
if ( isset( $args[ $var_name ] ) ) {
|
189 |
/* @noinspection PhpVariableVariableInspection */
|
@@ -206,10 +210,11 @@ class TIVWP_Updater {
|
|
206 |
/**
|
207 |
* Setup filters and actions.
|
208 |
*/
|
209 |
-
protected function
|
210 |
|
211 |
// Tell WP where to check for plugin updates.
|
212 |
-
add_filter(
|
|
|
213 |
array(
|
214 |
$this,
|
215 |
'filter__pre_set_site_transient_update_plugins',
|
@@ -230,17 +235,12 @@ class TIVWP_Updater {
|
|
230 |
*/
|
231 |
public function action__init() {
|
232 |
foreach ( explode( ',', self::PERSISTENT_VARS ) as $key ) {
|
233 |
-
$this->
|
234 |
}
|
235 |
|
236 |
-
|
237 |
-
* These two methods will work only if there is no instance yet.
|
238 |
-
* Migration should be tried first, and then - generate a new instance.
|
239 |
-
*/
|
240 |
-
$this->_migration();
|
241 |
-
$this->_maybe_generate_instance();
|
242 |
|
243 |
-
$this->
|
244 |
|
245 |
/**
|
246 |
* This action will display the License Management Form after the plugin row.
|
@@ -262,7 +262,7 @@ class TIVWP_Updater {
|
|
262 |
*/
|
263 |
public function action__shutdown() {
|
264 |
foreach ( explode( ',', self::PERSISTENT_VARS ) as $key ) {
|
265 |
-
$this->
|
266 |
}
|
267 |
}
|
268 |
|
@@ -271,7 +271,7 @@ class TIVWP_Updater {
|
|
271 |
*
|
272 |
* @param string $key The variable name.
|
273 |
*/
|
274 |
-
protected function
|
275 |
/* @noinspection PhpVariableVariableInspection */
|
276 |
if ( ! isset( $this->$key ) ) {
|
277 |
return;
|
@@ -296,7 +296,7 @@ class TIVWP_Updater {
|
|
296 |
*
|
297 |
* @param string $key The variable name.
|
298 |
*/
|
299 |
-
protected function
|
300 |
/* @noinspection PhpVariableVariableInspection */
|
301 |
if ( ! isset( $this->$key ) ) {
|
302 |
return;
|
@@ -305,6 +305,8 @@ class TIVWP_Updater {
|
|
305 |
if ( null !== $stored_value ) {
|
306 |
/* @noinspection PhpVariableVariableInspection */
|
307 |
$this->$key = $stored_value;
|
|
|
|
|
308 |
}
|
309 |
}
|
310 |
|
@@ -325,7 +327,7 @@ class TIVWP_Updater {
|
|
325 |
* @return array The response array.
|
326 |
*/
|
327 |
public function get_status() {
|
328 |
-
return $this->
|
329 |
}
|
330 |
|
331 |
/**
|
@@ -334,7 +336,7 @@ class TIVWP_Updater {
|
|
334 |
* @return array The response array.
|
335 |
*/
|
336 |
public function activate() {
|
337 |
-
return $this->
|
338 |
}
|
339 |
|
340 |
/**
|
@@ -343,7 +345,7 @@ class TIVWP_Updater {
|
|
343 |
* @return array The response array.
|
344 |
*/
|
345 |
public function deactivate() {
|
346 |
-
return $this->
|
347 |
}
|
348 |
|
349 |
/**
|
@@ -353,7 +355,7 @@ class TIVWP_Updater {
|
|
353 |
*
|
354 |
* @see set_site_transient
|
355 |
*
|
356 |
-
* @param
|
357 |
*
|
358 |
* @return mixed $transient Updated value of site transient.
|
359 |
*/
|
@@ -363,7 +365,7 @@ class TIVWP_Updater {
|
|
363 |
// Not our business?
|
364 |
empty( $transient->checked[ $this->plugin_name ] )
|
365 |
// Do we have data?
|
366 |
-
|| ! $this->
|
367 |
) {
|
368 |
return $transient;
|
369 |
}
|
@@ -376,10 +378,11 @@ class TIVWP_Updater {
|
|
376 |
'version' => $current_version,
|
377 |
);
|
378 |
|
379 |
-
$response = $this->
|
380 |
|
381 |
-
if (
|
382 |
-
|
|
|
383 |
) {
|
384 |
$transient->response[ $this->plugin_name ] = $response;
|
385 |
}
|
@@ -423,7 +426,7 @@ class TIVWP_Updater {
|
|
423 |
'software_version' => $current_version,
|
424 |
);
|
425 |
|
426 |
-
$response = $this->
|
427 |
|
428 |
// If everything is okay return the $response.
|
429 |
if ( isset( $response->sections ) ) {
|
@@ -490,17 +493,9 @@ class TIVWP_Updater {
|
|
490 |
* Images must not go wider than their container.
|
491 |
*/
|
492 |
public function fix_info_sections_style() {
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
clear: none;
|
497 |
-
}
|
498 |
-
|
499 |
-
#section-holder .section img {
|
500 |
-
max-width: 100%
|
501 |
-
}
|
502 |
-
</style>
|
503 |
-
<?php
|
504 |
}
|
505 |
|
506 |
/**
|
@@ -510,18 +505,20 @@ class TIVWP_Updater {
|
|
510 |
*
|
511 |
* @return stdClass The response.
|
512 |
*/
|
513 |
-
protected function
|
514 |
-
$request_parameters = array_merge(
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
|
|
|
|
|
|
522 |
|
523 |
-
$url = add_query_arg( 'wc-api', 'upgrade-api', $this->url_product ) . '&' .
|
524 |
-
http_build_query( $request_parameters, '', '&' );
|
525 |
|
526 |
$result = wp_safe_remote_get( esc_url_raw( $url ) );
|
527 |
|
@@ -533,9 +530,7 @@ class TIVWP_Updater {
|
|
533 |
|| ( 200 !== (int) wp_remote_retrieve_response_code( $result ) )
|
534 |
) {
|
535 |
|
536 |
-
$error_message = '<h3>' .
|
537 |
-
esc_html__( 'Licensing server connection error.', 'tivwp-updater' ) .
|
538 |
-
'</h3>';
|
539 |
|
540 |
/* @noinspection NotOptimalIfConditionsInspection */
|
541 |
if ( is_wp_error( $result ) ) {
|
@@ -574,9 +569,9 @@ class TIVWP_Updater {
|
|
574 |
*/
|
575 |
|
576 |
$response_body = wp_remote_retrieve_body( $result );
|
577 |
-
if ( is_serialized( $response_body ) )
|
578 |
|
579 |
-
$response_object =
|
580 |
|
581 |
if ( is_object( $response_object ) ) {
|
582 |
/**
|
@@ -599,7 +594,7 @@ class TIVWP_Updater {
|
|
599 |
|
600 |
return $response_object;
|
601 |
}
|
602 |
-
|
603 |
|
604 |
/**
|
605 |
* And this is an "impossible" case. WP will show a default error message.
|
@@ -614,18 +609,19 @@ class TIVWP_Updater {
|
|
614 |
*
|
615 |
* @return string The response.
|
616 |
*/
|
617 |
-
protected function
|
618 |
-
$args = array_merge(
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
|
|
|
|
626 |
|
627 |
-
$url = add_query_arg( 'wc-api', 'am-software-api', $this->url_product ) . '&' .
|
628 |
-
http_build_query( $args, '', '&' );
|
629 |
|
630 |
if ( class_exists( 'TIVWP_Debug_Bar' ) ) {
|
631 |
TIVWP_Debug_Bar::print_link( $url );
|
@@ -639,10 +635,8 @@ class TIVWP_Updater {
|
|
639 |
*
|
640 |
* @return string The URL.
|
641 |
*/
|
642 |
-
protected function
|
643 |
-
return $this->
|
644 |
-
'request' => 'status',
|
645 |
-
) );
|
646 |
}
|
647 |
|
648 |
/**
|
@@ -650,10 +644,8 @@ class TIVWP_Updater {
|
|
650 |
*
|
651 |
* @return string The URL.
|
652 |
*/
|
653 |
-
protected function
|
654 |
-
return $this->
|
655 |
-
'request' => 'activation',
|
656 |
-
) );
|
657 |
}
|
658 |
|
659 |
/**
|
@@ -661,10 +653,8 @@ class TIVWP_Updater {
|
|
661 |
*
|
662 |
* @return string The URL.
|
663 |
*/
|
664 |
-
protected function
|
665 |
-
return $this->
|
666 |
-
'request' => 'deactivation',
|
667 |
-
) );
|
668 |
}
|
669 |
|
670 |
/**
|
@@ -674,16 +664,18 @@ class TIVWP_Updater {
|
|
674 |
*
|
675 |
* @return array Response from the server.
|
676 |
*/
|
677 |
-
protected function
|
678 |
|
679 |
-
if ( ! $this->
|
680 |
-
$response_body = wp_json_encode(
|
681 |
-
|
682 |
-
|
683 |
-
|
|
|
|
|
684 |
|
685 |
} else {
|
686 |
-
$result = wp_safe_remote_get( $url );
|
687 |
if ( is_wp_error( $result ) ) {
|
688 |
|
689 |
$error_message = '';
|
@@ -693,44 +685,58 @@ class TIVWP_Updater {
|
|
693 |
$error_message = implode( '; ', $error_messages );
|
694 |
}
|
695 |
|
696 |
-
$response_body = wp_json_encode(
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
|
|
|
|
|
|
|
|
|
|
702 |
|
703 |
} elseif ( 200 !== (int) wp_remote_retrieve_response_code( $result ) ) {
|
704 |
|
705 |
-
$response_body = wp_json_encode(
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
|
|
|
|
|
|
|
|
|
|
712 |
} else {
|
713 |
$response_body = wp_remote_retrieve_body( $result );
|
714 |
}
|
715 |
}
|
716 |
|
717 |
-
|
|
|
|
|
|
|
|
|
718 |
return json_decode( $response_body, true );
|
719 |
}
|
720 |
|
721 |
/**
|
722 |
* Generate a new instance if not set yet.
|
723 |
*/
|
724 |
-
protected function
|
725 |
if ( ! $this->instance ) {
|
726 |
-
$this->instance = substr( sha1( site_url() . (string)
|
727 |
|
728 |
/**
|
729 |
* If a new instance has been generated, we must update the state.
|
730 |
* Updating must be hooked, and not run here, when we are called from
|
731 |
* the Constructor.
|
732 |
*/
|
733 |
-
$this->
|
734 |
add_action( 'admin_init', array( $this, 'update_state' ) );
|
735 |
}
|
736 |
}
|
@@ -740,7 +746,7 @@ class TIVWP_Updater {
|
|
740 |
*
|
741 |
* @todo nonce.
|
742 |
*/
|
743 |
-
protected function
|
744 |
// @codingStandardsIgnoreStart
|
745 |
if ( empty( $_POST ) ) {
|
746 |
return;
|
@@ -772,18 +778,15 @@ class TIVWP_Updater {
|
|
772 |
|
773 |
$key = 'action';
|
774 |
$_sk = $this->slug . '_' . $key;
|
775 |
-
if (
|
776 |
-
&& $this->licence_key
|
777 |
-
&& $this->email
|
778 |
-
&& isset( $form_data[ $_sk ] )
|
779 |
-
|
780 |
-
) {
|
781 |
if ( 'activate' === $form_data[ $_sk ] ) {
|
782 |
-
$this->
|
|
|
783 |
} elseif ( 'deactivate' === $form_data[ $_sk ] ) {
|
784 |
-
$this->
|
|
|
785 |
} elseif ( 'status' === $form_data[ $_sk ] ) {
|
786 |
-
$this->
|
787 |
}
|
788 |
}
|
789 |
|
@@ -792,8 +795,8 @@ class TIVWP_Updater {
|
|
792 |
/**
|
793 |
* Reset the state: clear notification and the transient.
|
794 |
*/
|
795 |
-
protected function
|
796 |
-
$this->
|
797 |
delete_site_transient( 'update_plugins' );
|
798 |
}
|
799 |
|
@@ -801,7 +804,7 @@ class TIVWP_Updater {
|
|
801 |
* Public wrapper to use in callbacks.
|
802 |
*/
|
803 |
public function update_state() {
|
804 |
-
$this->
|
805 |
}
|
806 |
|
807 |
/**
|
@@ -809,7 +812,7 @@ class TIVWP_Updater {
|
|
809 |
*
|
810 |
* @param string|string[] $message Message or array of messages.
|
811 |
*/
|
812 |
-
protected function
|
813 |
$this->notifications = (array) $message;
|
814 |
}
|
815 |
|
@@ -818,103 +821,41 @@ class TIVWP_Updater {
|
|
818 |
*
|
819 |
* @param string $message The message.
|
820 |
*/
|
821 |
-
protected function
|
822 |
$this->notifications[] = $message;
|
823 |
}
|
824 |
|
825 |
/**
|
826 |
* Clear all notification messages.
|
827 |
*/
|
828 |
-
protected function
|
829 |
$this->notifications = array();
|
830 |
}
|
831 |
|
832 |
-
/**
|
833 |
-
* Migrate options from the old WPGlobus Updater.
|
834 |
-
* Works only if there is no instance yet.
|
835 |
-
*/
|
836 |
-
protected function _migration() {
|
837 |
-
|
838 |
-
if ( $this->instance ) {
|
839 |
-
return;
|
840 |
-
}
|
841 |
-
|
842 |
-
/**
|
843 |
-
* Example of the old options. (slug is `wpglobus_plus`)
|
844 |
-
*
|
845 |
-
* <code>
|
846 |
-
* wpgupd_wpglobus_plus_act
|
847 |
-
* Activated
|
848 |
-
*
|
849 |
-
* wpgupd_wpglobus_plus_data
|
850 |
-
* a:2:{s:24:"wpgupd_wpglobus_plus_api";s:38:"wc_order_****";
|
851 |
-
* s:37:"wpgupd_wpglobus_plus_activation_email";s:20:"email@example.com";}
|
852 |
-
*
|
853 |
-
* wpgupd_wpglobus_plus_dea_cb_key
|
854 |
-
* on
|
855 |
-
*
|
856 |
-
* wpgupd_wpglobus_plus_inst
|
857 |
-
* d91ae12*****
|
858 |
-
*
|
859 |
-
* wpgupd_wpglobus_plus_pid
|
860 |
-
* WPGlobus Plus
|
861 |
-
* </code>
|
862 |
-
*/
|
863 |
-
|
864 |
-
// Options prefix - code snipped copied from the WPGlobus Updater.
|
865 |
-
$prefix = $this->product_id;
|
866 |
-
$prefix = strtolower( $prefix );
|
867 |
-
$prefix = preg_replace( '/[^%a-z0-9 _-]/', '', $prefix );
|
868 |
-
$prefix = preg_replace( '/[\s-_]+/', '_', $prefix );
|
869 |
-
$prefix = trim( $prefix, '_' );
|
870 |
-
$prefix = 'wpgupd_' . $prefix;
|
871 |
-
|
872 |
-
// Migrate instance.
|
873 |
-
$_old_instance = get_option( $prefix . '_inst' );
|
874 |
-
if ( $_old_instance ) {
|
875 |
-
$this->instance = $_old_instance;
|
876 |
-
}
|
877 |
-
|
878 |
-
// Migrate license and email (serialized in `_data`).
|
879 |
-
$_old_data = get_option( $prefix . '_data' );
|
880 |
-
if ( ! $this->licence_key && ! empty( $_old_data[ $prefix . '_api' ] ) ) {
|
881 |
-
$this->licence_key = $_old_data[ $prefix . '_api' ];
|
882 |
-
}
|
883 |
-
if ( ! $this->email && ! empty( $_old_data[ $prefix . '_activation_email' ] ) ) {
|
884 |
-
$this->email = $_old_data[ $prefix . '_activation_email' ];
|
885 |
-
}
|
886 |
-
|
887 |
-
// Update status after migration.
|
888 |
-
$this->_try_to_get_status();
|
889 |
-
|
890 |
-
}
|
891 |
-
|
892 |
/**
|
893 |
* Try to activate and update status.
|
894 |
*/
|
895 |
-
protected function
|
896 |
-
$this->
|
897 |
$result = $this->activate();
|
898 |
if ( ! empty( $result[ self::KEY_ERROR ] ) ) {
|
899 |
-
$this->
|
900 |
-
} elseif ( isset( $result['activated'] )
|
901 |
-
&& $result['activated']
|
902 |
-
) {
|
903 |
$this->status = self::STATUS_ACTIVE;
|
904 |
-
$this->
|
905 |
}
|
906 |
}
|
907 |
|
908 |
/**
|
909 |
* Try to deactivate and update status.
|
910 |
*/
|
911 |
-
protected function
|
912 |
-
$this->
|
913 |
$result = $this->deactivate();
|
914 |
if ( ! empty( $result[ self::KEY_ERROR ] ) ) {
|
915 |
-
$this->
|
916 |
if ( ! empty( $result[ self::KEY_ADDITIONAL_INFO ] ) ) {
|
917 |
-
$this->
|
918 |
}
|
919 |
/**
|
920 |
* If the server returns status "inactive" then we assume that the
|
@@ -927,12 +868,10 @@ class TIVWP_Updater {
|
|
927 |
if ( isset( $result['activated'] ) && self::STATUS_INACTIVE === $result['activated'] ) {
|
928 |
$this->status = self::STATUS_INACTIVE;
|
929 |
}
|
930 |
-
} elseif ( isset( $result['deactivated'] )
|
931 |
-
&& $result['deactivated']
|
932 |
-
) {
|
933 |
$this->status = self::STATUS_INACTIVE;
|
934 |
if ( ! empty( $result['activations_remaining'] ) ) {
|
935 |
-
$this->
|
936 |
}
|
937 |
}
|
938 |
}
|
@@ -940,16 +879,16 @@ class TIVWP_Updater {
|
|
940 |
/**
|
941 |
* Get status from the Licensing server and update the class variables.
|
942 |
*/
|
943 |
-
protected function
|
944 |
|
945 |
$result = $this->get_status();
|
946 |
if ( ! empty( $result[ self::KEY_ERROR ] ) ) {
|
947 |
$this->status = self::STATUS_INACTIVE;
|
948 |
-
$this->
|
949 |
} elseif ( ! empty( $result['status_check'] ) ) {
|
950 |
$this->status = $result['status_check'];
|
951 |
if ( ! empty( $result['activations_remaining'] ) ) {
|
952 |
-
$this->
|
953 |
}
|
954 |
}
|
955 |
}
|
@@ -959,7 +898,7 @@ class TIVWP_Updater {
|
|
959 |
*
|
960 |
* @return bool True if both are not empty.
|
961 |
*/
|
962 |
-
protected function
|
963 |
return ( $this->licence_key && $this->email );
|
964 |
}
|
965 |
}
|
5 |
* @package TIVWP_Updater
|
6 |
*/
|
7 |
|
8 |
+
/**
|
9 |
+
* This is to avoid the PHPStorm warning about multiple Updater classes in the project.
|
10 |
+
* Had to place it file-wide because otherwise PHPCS complains about improper class comment.
|
11 |
+
*
|
12 |
+
* @noinspection RedundantSuppression
|
13 |
+
* @noinspection PhpUndefinedClassInspection
|
14 |
+
*/
|
15 |
|
16 |
/**
|
17 |
* Class TIVWP_Updater
|
153 |
*/
|
154 |
public function __construct( array $args = array() ) {
|
155 |
|
156 |
+
$this->initialize_class_variables( $args );
|
157 |
|
158 |
// Note: these settings are for a specific plugin, so cannot do it at the loader.
|
159 |
$ok_to_run = true;
|
166 |
/**
|
167 |
* Override the $ok_to_run value.
|
168 |
*
|
|
|
|
|
|
|
|
|
|
|
169 |
* @param bool $ok_to_run The value.
|
170 |
* @param TIVWP_Updater $this The Updater class instance.
|
171 |
+
*
|
172 |
+
* @example
|
173 |
+
* <code>
|
174 |
+
* add_filter( 'tivwp-updater-ok-to-run', '__return_true' );
|
175 |
+
* </code>
|
176 |
*/
|
177 |
+
$ok_to_run = apply_filters( 'tivwp_updater_ok_to_run', $ok_to_run, $this );
|
178 |
|
179 |
if ( $ok_to_run ) {
|
180 |
+
$this->set_hooks();
|
181 |
}
|
182 |
|
183 |
}
|
187 |
*
|
188 |
* @param array $args To initialize class variables.
|
189 |
*/
|
190 |
+
protected function initialize_class_variables( array $args ) {
|
191 |
foreach ( explode( ',', self::CONSTRUCTOR_VARS ) as $var_name ) {
|
192 |
if ( isset( $args[ $var_name ] ) ) {
|
193 |
/* @noinspection PhpVariableVariableInspection */
|
210 |
/**
|
211 |
* Setup filters and actions.
|
212 |
*/
|
213 |
+
protected function set_hooks() {
|
214 |
|
215 |
// Tell WP where to check for plugin updates.
|
216 |
+
add_filter(
|
217 |
+
'pre_set_site_transient_update_plugins',
|
218 |
array(
|
219 |
$this,
|
220 |
'filter__pre_set_site_transient_update_plugins',
|
235 |
*/
|
236 |
public function action__init() {
|
237 |
foreach ( explode( ',', self::PERSISTENT_VARS ) as $key ) {
|
238 |
+
$this->var_load( $key );
|
239 |
}
|
240 |
|
241 |
+
$this->maybe_generate_instance();
|
|
|
|
|
|
|
|
|
|
|
242 |
|
243 |
+
$this->process_admin_requests();
|
244 |
|
245 |
/**
|
246 |
* This action will display the License Management Form after the plugin row.
|
262 |
*/
|
263 |
public function action__shutdown() {
|
264 |
foreach ( explode( ',', self::PERSISTENT_VARS ) as $key ) {
|
265 |
+
$this->var_save( $key );
|
266 |
}
|
267 |
}
|
268 |
|
271 |
*
|
272 |
* @param string $key The variable name.
|
273 |
*/
|
274 |
+
protected function var_save( $key ) {
|
275 |
/* @noinspection PhpVariableVariableInspection */
|
276 |
if ( ! isset( $this->$key ) ) {
|
277 |
return;
|
296 |
*
|
297 |
* @param string $key The variable name.
|
298 |
*/
|
299 |
+
protected function var_load( $key ) {
|
300 |
/* @noinspection PhpVariableVariableInspection */
|
301 |
if ( ! isset( $this->$key ) ) {
|
302 |
return;
|
305 |
if ( null !== $stored_value ) {
|
306 |
/* @noinspection PhpVariableVariableInspection */
|
307 |
$this->$key = $stored_value;
|
308 |
+
} elseif ( 'email' === $key ) {
|
309 |
+
$this->email = get_option( 'admin_email', '' );
|
310 |
}
|
311 |
}
|
312 |
|
327 |
* @return array The response array.
|
328 |
*/
|
329 |
public function get_status() {
|
330 |
+
return $this->get_server_response( $this->url_status() );
|
331 |
}
|
332 |
|
333 |
/**
|
336 |
* @return array The response array.
|
337 |
*/
|
338 |
public function activate() {
|
339 |
+
return $this->get_server_response( $this->url_activation() );
|
340 |
}
|
341 |
|
342 |
/**
|
345 |
* @return array The response array.
|
346 |
*/
|
347 |
public function deactivate() {
|
348 |
+
return $this->get_server_response( $this->url_deactivation() );
|
349 |
}
|
350 |
|
351 |
/**
|
355 |
*
|
356 |
* @see set_site_transient
|
357 |
*
|
358 |
+
* @param mixed $transient The value of site transient.
|
359 |
*
|
360 |
* @return mixed $transient Updated value of site transient.
|
361 |
*/
|
365 |
// Not our business?
|
366 |
empty( $transient->checked[ $this->plugin_name ] )
|
367 |
// Do we have data?
|
368 |
+
|| ! $this->is_license_pair_filled_in()
|
369 |
) {
|
370 |
return $transient;
|
371 |
}
|
378 |
'version' => $current_version,
|
379 |
);
|
380 |
|
381 |
+
$response = $this->get_upgrade_api_response( $request_parameters );
|
382 |
|
383 |
+
if (
|
384 |
+
isset( $response->new_version )
|
385 |
+
&& version_compare( (string) $response->new_version, $current_version, '>' )
|
386 |
) {
|
387 |
$transient->response[ $this->plugin_name ] = $response;
|
388 |
}
|
426 |
'software_version' => $current_version,
|
427 |
);
|
428 |
|
429 |
+
$response = $this->get_upgrade_api_response( $request_parameters );
|
430 |
|
431 |
// If everything is okay return the $response.
|
432 |
if ( isset( $response->sections ) ) {
|
493 |
* Images must not go wider than their container.
|
494 |
*/
|
495 |
public function fix_info_sections_style() {
|
496 |
+
echo '<style id="tivwp-updater-fix-info-css">';
|
497 |
+
include __DIR__ . '/assets/css/fix-info-sections.css';
|
498 |
+
echo '</style>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
499 |
}
|
500 |
|
501 |
/**
|
505 |
*
|
506 |
* @return stdClass The response.
|
507 |
*/
|
508 |
+
protected function get_upgrade_api_response( array $request_parameters ) {
|
509 |
+
$request_parameters = array_merge(
|
510 |
+
array(
|
511 |
+
'activation_email' => $this->email,
|
512 |
+
'api_key' => $this->licence_key,
|
513 |
+
'domain' => $this->platform,
|
514 |
+
'instance' => $this->instance,
|
515 |
+
'plugin_name' => $this->plugin_name,
|
516 |
+
'product_id' => $this->product_id,
|
517 |
+
),
|
518 |
+
$request_parameters
|
519 |
+
);
|
520 |
|
521 |
+
$url = add_query_arg( 'wc-api', 'upgrade-api', $this->url_product ) . '&' . http_build_query( $request_parameters, '', '&' );
|
|
|
522 |
|
523 |
$result = wp_safe_remote_get( esc_url_raw( $url ) );
|
524 |
|
530 |
|| ( 200 !== (int) wp_remote_retrieve_response_code( $result ) )
|
531 |
) {
|
532 |
|
533 |
+
$error_message = '<h3>' . esc_html__( 'Licensing server connection error.', 'tivwp-updater' ) . '</h3>';
|
|
|
|
|
534 |
|
535 |
/* @noinspection NotOptimalIfConditionsInspection */
|
536 |
if ( is_wp_error( $result ) ) {
|
569 |
*/
|
570 |
|
571 |
$response_body = wp_remote_retrieve_body( $result );
|
572 |
+
if ( is_serialized( $response_body ) ) {
|
573 |
|
574 |
+
$response_object = maybe_unserialize( $response_body );
|
575 |
|
576 |
if ( is_object( $response_object ) ) {
|
577 |
/**
|
594 |
|
595 |
return $response_object;
|
596 |
}
|
597 |
+
}
|
598 |
|
599 |
/**
|
600 |
* And this is an "impossible" case. WP will show a default error message.
|
609 |
*
|
610 |
* @return string The response.
|
611 |
*/
|
612 |
+
protected function build_url( array $args ) {
|
613 |
+
$args = array_merge(
|
614 |
+
array(
|
615 |
+
'product_id' => $this->product_id,
|
616 |
+
'instance' => $this->instance,
|
617 |
+
'email' => $this->email,
|
618 |
+
'licence_key' => $this->licence_key,
|
619 |
+
'platform' => $this->platform,
|
620 |
+
),
|
621 |
+
$args
|
622 |
+
);
|
623 |
|
624 |
+
$url = add_query_arg( 'wc-api', 'am-software-api', $this->url_product ) . '&' . http_build_query( $args, '', '&' );
|
|
|
625 |
|
626 |
if ( class_exists( 'TIVWP_Debug_Bar' ) ) {
|
627 |
TIVWP_Debug_Bar::print_link( $url );
|
635 |
*
|
636 |
* @return string The URL.
|
637 |
*/
|
638 |
+
protected function url_status() {
|
639 |
+
return $this->build_url( array( 'request' => 'status' ) );
|
|
|
|
|
640 |
}
|
641 |
|
642 |
/**
|
644 |
*
|
645 |
* @return string The URL.
|
646 |
*/
|
647 |
+
protected function url_activation() {
|
648 |
+
return $this->build_url( array( 'request' => 'activation' ) );
|
|
|
|
|
649 |
}
|
650 |
|
651 |
/**
|
653 |
*
|
654 |
* @return string The URL.
|
655 |
*/
|
656 |
+
protected function url_deactivation() {
|
657 |
+
return $this->build_url( array( 'request' => 'deactivation' ) );
|
|
|
|
|
658 |
}
|
659 |
|
660 |
/**
|
664 |
*
|
665 |
* @return array Response from the server.
|
666 |
*/
|
667 |
+
protected function get_server_response( $url ) {
|
668 |
|
669 |
+
if ( ! $this->is_license_pair_filled_in() ) {
|
670 |
+
$response_body = wp_json_encode(
|
671 |
+
array(
|
672 |
+
self::KEY_ERROR =>
|
673 |
+
__( 'License / email is empty or invalid.', 'tivwp-updater' ),
|
674 |
+
)
|
675 |
+
);
|
676 |
|
677 |
} else {
|
678 |
+
$result = wp_safe_remote_get( $url, array( 'sslverify' => false ) );
|
679 |
if ( is_wp_error( $result ) ) {
|
680 |
|
681 |
$error_message = '';
|
685 |
$error_message = implode( '; ', $error_messages );
|
686 |
}
|
687 |
|
688 |
+
$response_body = wp_json_encode(
|
689 |
+
array(
|
690 |
+
self::KEY_ERROR => implode(
|
691 |
+
' ',
|
692 |
+
array(
|
693 |
+
__( 'Licensing server connection error.', 'tivwp-updater' ),
|
694 |
+
$error_message,
|
695 |
+
)
|
696 |
+
),
|
697 |
+
)
|
698 |
+
);
|
699 |
|
700 |
} elseif ( 200 !== (int) wp_remote_retrieve_response_code( $result ) ) {
|
701 |
|
702 |
+
$response_body = wp_json_encode(
|
703 |
+
array(
|
704 |
+
self::KEY_ERROR => implode(
|
705 |
+
' ',
|
706 |
+
array(
|
707 |
+
__( 'Licensing server connection error.', 'tivwp-updater' ),
|
708 |
+
$result['response']['code'] . ' - '
|
709 |
+
. $result['response']['message'],
|
710 |
+
)
|
711 |
+
),
|
712 |
+
)
|
713 |
+
);
|
714 |
} else {
|
715 |
$response_body = wp_remote_retrieve_body( $result );
|
716 |
}
|
717 |
}
|
718 |
|
719 |
+
/**
|
720 |
+
* The JSON_OBJECT_AS_ARRAY constant exists since PHP 5.4
|
721 |
+
*
|
722 |
+
* @noinspection PhpComposerExtensionStubsInspection
|
723 |
+
*/
|
724 |
return json_decode( $response_body, true );
|
725 |
}
|
726 |
|
727 |
/**
|
728 |
* Generate a new instance if not set yet.
|
729 |
*/
|
730 |
+
protected function maybe_generate_instance() {
|
731 |
if ( ! $this->instance ) {
|
732 |
+
$this->instance = substr( sha1( site_url() . (string) wp_rand( 100, 999 ) ), 0, 12 );
|
733 |
|
734 |
/**
|
735 |
* If a new instance has been generated, we must update the state.
|
736 |
* Updating must be hooked, and not run here, when we are called from
|
737 |
* the Constructor.
|
738 |
*/
|
739 |
+
$this->reset_state();
|
740 |
add_action( 'admin_init', array( $this, 'update_state' ) );
|
741 |
}
|
742 |
}
|
746 |
*
|
747 |
* @todo nonce.
|
748 |
*/
|
749 |
+
protected function process_admin_requests() {
|
750 |
// @codingStandardsIgnoreStart
|
751 |
if ( empty( $_POST ) ) {
|
752 |
return;
|
778 |
|
779 |
$key = 'action';
|
780 |
$_sk = $this->slug . '_' . $key;
|
781 |
+
if ( $this->licence_key && $this->email && isset( $form_data[ $_sk ] ) ) {
|
|
|
|
|
|
|
|
|
|
|
782 |
if ( 'activate' === $form_data[ $_sk ] ) {
|
783 |
+
$this->try_to_activate();
|
784 |
+
$this->update_state();
|
785 |
} elseif ( 'deactivate' === $form_data[ $_sk ] ) {
|
786 |
+
$this->try_to_deactivate();
|
787 |
+
$this->update_state();
|
788 |
} elseif ( 'status' === $form_data[ $_sk ] ) {
|
789 |
+
$this->try_to_get_status();
|
790 |
}
|
791 |
}
|
792 |
|
795 |
/**
|
796 |
* Reset the state: clear notification and the transient.
|
797 |
*/
|
798 |
+
protected function reset_state() {
|
799 |
+
$this->notification_clear_all();
|
800 |
delete_site_transient( 'update_plugins' );
|
801 |
}
|
802 |
|
804 |
* Public wrapper to use in callbacks.
|
805 |
*/
|
806 |
public function update_state() {
|
807 |
+
$this->try_to_get_status();
|
808 |
}
|
809 |
|
810 |
/**
|
812 |
*
|
813 |
* @param string|string[] $message Message or array of messages.
|
814 |
*/
|
815 |
+
protected function notifications_set( $message = '' ) {
|
816 |
$this->notifications = (array) $message;
|
817 |
}
|
818 |
|
821 |
*
|
822 |
* @param string $message The message.
|
823 |
*/
|
824 |
+
protected function notification_add( $message ) {
|
825 |
$this->notifications[] = $message;
|
826 |
}
|
827 |
|
828 |
/**
|
829 |
* Clear all notification messages.
|
830 |
*/
|
831 |
+
protected function notification_clear_all() {
|
832 |
$this->notifications = array();
|
833 |
}
|
834 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
835 |
/**
|
836 |
* Try to activate and update status.
|
837 |
*/
|
838 |
+
protected function try_to_activate() {
|
839 |
+
$this->reset_state();
|
840 |
$result = $this->activate();
|
841 |
if ( ! empty( $result[ self::KEY_ERROR ] ) ) {
|
842 |
+
$this->notification_add( $result[ self::KEY_ERROR ] );
|
843 |
+
} elseif ( isset( $result['activated'] ) && $result['activated'] ) {
|
|
|
|
|
844 |
$this->status = self::STATUS_ACTIVE;
|
845 |
+
$this->notification_add( $result['message'] );
|
846 |
}
|
847 |
}
|
848 |
|
849 |
/**
|
850 |
* Try to deactivate and update status.
|
851 |
*/
|
852 |
+
protected function try_to_deactivate() {
|
853 |
+
$this->reset_state();
|
854 |
$result = $this->deactivate();
|
855 |
if ( ! empty( $result[ self::KEY_ERROR ] ) ) {
|
856 |
+
$this->notification_add( $result[ self::KEY_ERROR ] );
|
857 |
if ( ! empty( $result[ self::KEY_ADDITIONAL_INFO ] ) ) {
|
858 |
+
$this->notification_add( $result[ self::KEY_ADDITIONAL_INFO ] );
|
859 |
}
|
860 |
/**
|
861 |
* If the server returns status "inactive" then we assume that the
|
868 |
if ( isset( $result['activated'] ) && self::STATUS_INACTIVE === $result['activated'] ) {
|
869 |
$this->status = self::STATUS_INACTIVE;
|
870 |
}
|
871 |
+
} elseif ( isset( $result['deactivated'] ) && $result['deactivated'] ) {
|
|
|
|
|
872 |
$this->status = self::STATUS_INACTIVE;
|
873 |
if ( ! empty( $result['activations_remaining'] ) ) {
|
874 |
+
$this->notification_add( $result['activations_remaining'] );
|
875 |
}
|
876 |
}
|
877 |
}
|
879 |
/**
|
880 |
* Get status from the Licensing server and update the class variables.
|
881 |
*/
|
882 |
+
protected function try_to_get_status() {
|
883 |
|
884 |
$result = $this->get_status();
|
885 |
if ( ! empty( $result[ self::KEY_ERROR ] ) ) {
|
886 |
$this->status = self::STATUS_INACTIVE;
|
887 |
+
$this->notifications_set( $result[ self::KEY_ERROR ] );
|
888 |
} elseif ( ! empty( $result['status_check'] ) ) {
|
889 |
$this->status = $result['status_check'];
|
890 |
if ( ! empty( $result['activations_remaining'] ) ) {
|
891 |
+
$this->notifications_set( $result['activations_remaining'] );
|
892 |
}
|
893 |
}
|
894 |
}
|
898 |
*
|
899 |
* @return bool True if both are not empty.
|
900 |
*/
|
901 |
+
protected function is_license_pair_filled_in() {
|
902 |
return ( $this->licence_key && $this->email );
|
903 |
}
|
904 |
}
|
vendor/tivwp/updater/doc/sample-usage.php
CHANGED
@@ -5,6 +5,11 @@
|
|
5 |
* @package TIVWP_Updater
|
6 |
*/
|
7 |
|
|
|
|
|
|
|
|
|
|
|
8 |
/**
|
9 |
* Load.
|
10 |
*/
|
@@ -12,8 +17,11 @@ if (
|
|
12 |
version_compare( PHP_VERSION, '5.3.0', '>=' )
|
13 |
&& file_exists( dirname( __FILE__ ) . '/vendor/tivwp/updater/updater.php' )
|
14 |
) {
|
15 |
-
|
16 |
-
|
|
|
|
|
|
|
17 |
require_once dirname( __FILE__ ) . '/vendor/tivwp/updater/updater.php';
|
18 |
}
|
19 |
|
@@ -21,15 +29,20 @@ if (
|
|
21 |
* Setup.
|
22 |
*/
|
23 |
function tivwp_updater_sample_plugin__setup_updater() {
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
}
|
32 |
|
33 |
add_action( 'tivwp_updater_factory', 'tivwp_updater_sample_plugin__setup_updater' );
|
34 |
|
35 |
-
/* EOF */
|
5 |
* @package TIVWP_Updater
|
6 |
*/
|
7 |
|
8 |
+
// Exit if accessed directly.
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
/**
|
14 |
* Load.
|
15 |
*/
|
17 |
version_compare( PHP_VERSION, '5.3.0', '>=' )
|
18 |
&& file_exists( dirname( __FILE__ ) . '/vendor/tivwp/updater/updater.php' )
|
19 |
) {
|
20 |
+
/**
|
21 |
+
* No warning about missing file. This is a sample.
|
22 |
+
*
|
23 |
+
* @noinspection PhpIncludeInspection
|
24 |
+
*/
|
25 |
require_once dirname( __FILE__ ) . '/vendor/tivwp/updater/updater.php';
|
26 |
}
|
27 |
|
29 |
* Setup.
|
30 |
*/
|
31 |
function tivwp_updater_sample_plugin__setup_updater() {
|
32 |
+
/**
|
33 |
+
* No warning about possible multiple files having this library.
|
34 |
+
*
|
35 |
+
* @noinspection RedundantSuppression
|
36 |
+
* @noinspection PhpUndefinedClassInspection
|
37 |
+
*/
|
38 |
+
new TIVWP_Updater(
|
39 |
+
array(
|
40 |
+
'plugin_file' => __FILE__,
|
41 |
+
'product_id' => 'My Plugin',
|
42 |
+
'url_product' => 'http://www.example.com/product/my-plugin/',
|
43 |
+
)
|
44 |
+
);
|
45 |
}
|
46 |
|
47 |
add_action( 'tivwp_updater_factory', 'tivwp_updater_sample_plugin__setup_updater' );
|
48 |
|
|
vendor/tivwp/updater/includes/class-tivwp-updater-setup-admin-area.php
CHANGED
@@ -5,9 +5,12 @@
|
|
5 |
* @package TIVWP_Updater
|
6 |
*/
|
7 |
|
8 |
-
|
9 |
-
|
10 |
-
|
|
|
|
|
|
|
11 |
|
12 |
/**
|
13 |
* Class TIVWP_Updater_Setup_Admin_Area
|
@@ -33,36 +36,10 @@ class TIVWP_Updater_Setup_Admin_Area {
|
|
33 |
* Embed the stylesheet.
|
34 |
*/
|
35 |
public static function embed_css() {
|
36 |
-
ob_start();
|
37 |
-
?>
|
38 |
-
|
39 |
-
<!--suppress CssUnusedSymbol -->
|
40 |
-
<style id="tivwp-updater-css" data-version="<?php echo esc_attr( TIVWP_UPDATER_VERSION ); ?>">
|
41 |
-
.tivwp-updater-status-value {
|
42 |
-
font-weight: 700;
|
43 |
-
}
|
44 |
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
}
|
49 |
-
|
50 |
-
.tivwp-updater-instance,
|
51 |
-
.tivwp-updater-notifications {
|
52 |
-
opacity: .6;
|
53 |
-
}
|
54 |
-
</style>
|
55 |
-
<?php
|
56 |
-
$the_css = ob_get_clean();
|
57 |
-
if ( ! defined( 'SCRIPT_DEBUG' ) || ! SCRIPT_DEBUG ) {
|
58 |
-
$the_css = preg_replace( '/\s+/', ' ', $the_css );
|
59 |
-
}
|
60 |
-
echo wp_kses( $the_css, array(
|
61 |
-
'style' => array(
|
62 |
-
'id' => array(),
|
63 |
-
'data-version' => array(),
|
64 |
-
),
|
65 |
-
) );
|
66 |
}
|
67 |
|
68 |
/**
|
@@ -72,30 +49,9 @@ class TIVWP_Updater_Setup_Admin_Area {
|
|
72 |
* @since 1.0.2
|
73 |
*/
|
74 |
public static function embed_js() {
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
<script id="tivwp-updater-js" data-version="<?php echo esc_attr( TIVWP_UPDATER_VERSION ); ?>">
|
79 |
-
jQuery(function ($) {
|
80 |
-
$('.tivwp-updater-action-button').on("click", function () {
|
81 |
-
var dataPlugin = $(this).data('tivwp-updater-plugin');
|
82 |
-
$(this).css({cursor: "wait", opacity: ".3"});
|
83 |
-
$('input[type="checkbox"]').prop("checked", false);
|
84 |
-
$('tr[data-plugin="' + dataPlugin + '"]').find('input[type="checkbox"]').prop("checked", true);
|
85 |
-
})
|
86 |
-
});
|
87 |
-
</script>
|
88 |
-
<?php
|
89 |
-
$the_script = ob_get_clean();
|
90 |
-
if ( ! defined( 'SCRIPT_DEBUG' ) || ! SCRIPT_DEBUG ) {
|
91 |
-
$the_script = preg_replace( '/\s+/', ' ', $the_script );
|
92 |
-
}
|
93 |
-
echo wp_kses( $the_script, array(
|
94 |
-
'script' => array(
|
95 |
-
'id' => array(),
|
96 |
-
'data-version' => array(),
|
97 |
-
),
|
98 |
-
) );
|
99 |
}
|
100 |
|
101 |
/**
|
@@ -107,14 +63,27 @@ class TIVWP_Updater_Setup_Admin_Area {
|
|
107 |
protected static function load_translations() {
|
108 |
|
109 |
$domain = 'tivwp-updater';
|
110 |
-
|
111 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
|
113 |
// Try to load from the languages directory first.
|
114 |
-
if (
|
115 |
-
|
116 |
-
load_textdomain( $domain,
|
|
|
|
|
117 |
}
|
118 |
|
|
|
|
|
|
|
|
|
119 |
}
|
120 |
}
|
5 |
* @package TIVWP_Updater
|
6 |
*/
|
7 |
|
8 |
+
/**
|
9 |
+
* This is to avoid the PHPStorm warning about multiple Updater classes in the project.
|
10 |
+
* Had to place it file-wide because otherwise PHPCS complains about improper class comment.
|
11 |
+
* @noinspection RedundantSuppression
|
12 |
+
* @noinspection PhpUndefinedClassInspection
|
13 |
+
*/
|
14 |
|
15 |
/**
|
16 |
* Class TIVWP_Updater_Setup_Admin_Area
|
36 |
* Embed the stylesheet.
|
37 |
*/
|
38 |
public static function embed_css() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
|
40 |
+
echo '<style id="tivwp-updater-css">';
|
41 |
+
include __DIR__ . '/../assets/css/tivwp-updater.css';
|
42 |
+
echo '</style>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
}
|
44 |
|
45 |
/**
|
49 |
* @since 1.0.2
|
50 |
*/
|
51 |
public static function embed_js() {
|
52 |
+
echo '<script id="tivwp-updater-js">';
|
53 |
+
include __DIR__ . '/../assets/js/tivwp-updater.js';
|
54 |
+
echo '</script>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
}
|
56 |
|
57 |
/**
|
63 |
protected static function load_translations() {
|
64 |
|
65 |
$domain = 'tivwp-updater';
|
66 |
+
|
67 |
+
if ( function_exists( 'determine_locale' ) ) {
|
68 |
+
$locale = determine_locale();
|
69 |
+
} else {
|
70 |
+
$locale = is_admin() ? get_user_locale() : get_locale();
|
71 |
+
}
|
72 |
+
$locale = apply_filters( 'plugin_locale', $locale, $domain );
|
73 |
+
|
74 |
+
$mofile_name = $domain . '-' . $locale . '.mo';
|
75 |
|
76 |
// Try to load from the languages directory first.
|
77 |
+
if ( defined( 'WP_LANG_DIR' ) ) {
|
78 |
+
$mofile = WP_LANG_DIR . '/' . $mofile_name;
|
79 |
+
if ( load_textdomain( $domain, $mofile ) ) {
|
80 |
+
return;
|
81 |
+
}
|
82 |
}
|
83 |
|
84 |
+
// Then try to load from our languages folder.
|
85 |
+
$mofile = __DIR__ . '/../languages/' . $mofile_name;
|
86 |
+
load_textdomain( $domain, $mofile );
|
87 |
+
|
88 |
}
|
89 |
}
|
vendor/tivwp/updater/includes/license-management-form.php
CHANGED
@@ -2,11 +2,15 @@
|
|
2 |
/**
|
3 |
* View: License management form.
|
4 |
*
|
5 |
-
* @package TIVWP_Updater
|
6 |
-
*
|
7 |
* @var TIVWP_Updater $this
|
|
|
8 |
*/
|
9 |
|
|
|
|
|
|
|
|
|
|
|
10 |
$_slug = sanitize_title( $this->slug );
|
11 |
?>
|
12 |
|
@@ -30,7 +34,7 @@ $_slug = sanitize_title( $this->slug );
|
|
30 |
<?php echo esc_html( $this->instance ); ?>
|
31 |
</div>
|
32 |
<button type="submit"
|
33 |
-
class="tivwp-updater-action-button"
|
34 |
data-tivwp-updater-slug="<?php echo esc_attr( $_slug ); ?>"
|
35 |
data-tivwp-updater-plugin="<?php echo esc_attr( $this->plugin_name ); ?>"
|
36 |
name="<?php echo esc_attr( $_slug ); ?>_action"
|
@@ -51,22 +55,28 @@ $_slug = sanitize_title( $this->slug );
|
|
51 |
</div>
|
52 |
<?php endif; ?>
|
53 |
<div>
|
54 |
-
|
55 |
<?php esc_html_e( 'Key' ); ?>:
|
56 |
-
|
57 |
-
|
58 |
-
name="<?php echo esc_attr( $_slug ); ?>_licence_key"
|
59 |
-
value="<?php echo esc_attr( $this->licence_key ); ?>"
|
60 |
-
<?php disabled( TIVWP_Updater::STATUS_ACTIVE === $this->status && $this->licence_key ); ?>
|
61 |
-
/>
|
62 |
-
<label for="<?php echo esc_attr( $_slug ); ?>_email">
|
63 |
<?php esc_html_e( 'Email' ); ?>:
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
<?php
|
71 |
$_action = ( TIVWP_Updater::STATUS_ACTIVE === $this->status ? 'deactivate' : 'activate' );
|
72 |
$_action_label = ( TIVWP_Updater::STATUS_ACTIVE === $this->status
|
@@ -75,7 +85,7 @@ $_slug = sanitize_title( $this->slug );
|
|
75 |
);
|
76 |
?>
|
77 |
<button type="submit"
|
78 |
-
class="tivwp-updater-action-button"
|
79 |
data-tivwp-updater-slug="<?php echo esc_attr( $_slug ); ?>"
|
80 |
data-tivwp-updater-plugin="<?php echo esc_attr( $this->plugin_name ); ?>"
|
81 |
name="<?php echo esc_attr( $_slug ); ?>_action"
|
@@ -95,4 +105,7 @@ $_slug = sanitize_title( $this->slug );
|
|
95 |
}
|
96 |
?>
|
97 |
</td>
|
|
|
|
|
|
|
98 |
</tr>
|
2 |
/**
|
3 |
* View: License management form.
|
4 |
*
|
|
|
|
|
5 |
* @var TIVWP_Updater $this
|
6 |
+
* @package TIVWP_Updater
|
7 |
*/
|
8 |
|
9 |
+
// Exit if accessed directly.
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
+
exit;
|
12 |
+
}
|
13 |
+
|
14 |
$_slug = sanitize_title( $this->slug );
|
15 |
?>
|
16 |
|
34 |
<?php echo esc_html( $this->instance ); ?>
|
35 |
</div>
|
36 |
<button type="submit"
|
37 |
+
class="button tivwp-updater-action-button"
|
38 |
data-tivwp-updater-slug="<?php echo esc_attr( $_slug ); ?>"
|
39 |
data-tivwp-updater-plugin="<?php echo esc_attr( $this->plugin_name ); ?>"
|
40 |
name="<?php echo esc_attr( $_slug ); ?>_action"
|
55 |
</div>
|
56 |
<?php endif; ?>
|
57 |
<div>
|
58 |
+
<?php if ( TIVWP_Updater::STATUS_ACTIVE === $this->status ) : ?>
|
59 |
<?php esc_html_e( 'Key' ); ?>:
|
60 |
+
<code>'<?php echo esc_attr( $this->licence_key ); ?>'</code>
|
61 |
+
|
|
|
|
|
|
|
|
|
|
|
62 |
<?php esc_html_e( 'Email' ); ?>:
|
63 |
+
<code>'<?php echo esc_attr( $this->email ); ?>'</code>
|
64 |
+
<?php else : ?>
|
65 |
+
<label for="<?php echo esc_attr( $_slug ); ?>_licence_key">
|
66 |
+
<?php esc_html_e( 'Key' ); ?>:
|
67 |
+
</label>
|
68 |
+
<input type="text" id="<?php echo esc_attr( $_slug ); ?>_licence_key"
|
69 |
+
name="<?php echo esc_attr( $_slug ); ?>_licence_key"
|
70 |
+
value="<?php echo esc_attr( $this->licence_key ); ?>"
|
71 |
+
/>
|
72 |
+
<label for="<?php echo esc_attr( $_slug ); ?>_email">
|
73 |
+
<?php esc_html_e( 'Email' ); ?>:
|
74 |
+
</label>
|
75 |
+
<input type="email" id="<?php echo esc_attr( $_slug ); ?>_email"
|
76 |
+
name="<?php echo esc_attr( $_slug ); ?>_email"
|
77 |
+
value="<?php echo esc_attr( $this->email ); ?>"
|
78 |
+
/>
|
79 |
+
<?php endif; ?>
|
80 |
<?php
|
81 |
$_action = ( TIVWP_Updater::STATUS_ACTIVE === $this->status ? 'deactivate' : 'activate' );
|
82 |
$_action_label = ( TIVWP_Updater::STATUS_ACTIVE === $this->status
|
85 |
);
|
86 |
?>
|
87 |
<button type="submit"
|
88 |
+
class="button tivwp-updater-action-button"
|
89 |
data-tivwp-updater-slug="<?php echo esc_attr( $_slug ); ?>"
|
90 |
data-tivwp-updater-plugin="<?php echo esc_attr( $this->plugin_name ); ?>"
|
91 |
name="<?php echo esc_attr( $_slug ); ?>_action"
|
105 |
}
|
106 |
?>
|
107 |
</td>
|
108 |
+
<?php if ( version_compare( $GLOBALS['wp_version'], '5.5.0', '>=' ) ) : ?>
|
109 |
+
<td class="column-auto-updates"> </td>
|
110 |
+
<?php endif; ?>
|
111 |
</tr>
|
vendor/tivwp/updater/updater.php
CHANGED
@@ -7,9 +7,7 @@
|
|
7 |
*
|
8 |
* @link https://woocommerce.com/products/woocommerce-api-manager/
|
9 |
*
|
10 |
-
* @
|
11 |
-
* @author WPGlobus
|
12 |
-
* @copyright Copyright 2018 TIV.NET INC. and Gregory Karpinsky
|
13 |
*/
|
14 |
|
15 |
// Exit if accessed directly.
|
@@ -17,49 +15,52 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
17 |
exit;
|
18 |
}
|
19 |
|
20 |
-
if ( is_admin() ) {
|
21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
/**
|
23 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
*/
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
* @see \TIVWP_Updater::__construct
|
33 |
-
*/
|
34 |
-
if (
|
35 |
-
defined( 'TIVWP_UPDATER_VERSION' )
|
36 |
-
|| is_multisite()
|
37 |
-
|| version_compare( $GLOBALS['wp_version'], '4.5', '<' )
|
38 |
-
) {
|
39 |
-
return;
|
40 |
-
}
|
41 |
|
42 |
-
|
43 |
-
* Load the class and tell others that it's done.
|
44 |
-
*/
|
45 |
-
require_once dirname( __FILE__ ) . '/class-tivwp-updater.php';
|
46 |
-
define( 'TIVWP_UPDATER_VERSION', '1.0.9' );
|
47 |
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
TIVWP_Updater_Setup_Admin_Area::construct();
|
53 |
-
}
|
54 |
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
do_action( 'tivwp_updater_factory' );
|
59 |
}
|
60 |
-
// TODO: Increase the "minus" part with every new release.
|
61 |
-
, 9999 - 10
|
62 |
-
);
|
63 |
-
}
|
64 |
|
65 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
*
|
8 |
* @link https://woocommerce.com/products/woocommerce-api-manager/
|
9 |
*
|
10 |
+
* @copyright Copyright 2020 TIV.NET INC.
|
|
|
|
|
11 |
*/
|
12 |
|
13 |
// Exit if accessed directly.
|
15 |
exit;
|
16 |
}
|
17 |
|
18 |
+
if ( ! is_admin() ) {
|
19 |
+
return;
|
20 |
+
}
|
21 |
+
|
22 |
+
add_action(
|
23 |
+
'plugins_loaded',
|
24 |
+
/**
|
25 |
+
* The Updater "Factory".
|
26 |
+
*/
|
27 |
+
function () {
|
28 |
/**
|
29 |
+
* Bail out it:
|
30 |
+
* - Already loaded.
|
31 |
+
* - WP is old (we do not test and do not want to support older WP).
|
32 |
+
* - Multisite (we do not support it in general).
|
33 |
+
* Additional checks are done for specific plugins,
|
34 |
+
*
|
35 |
+
* @see \TIVWP_Updater::__construct
|
36 |
*/
|
37 |
+
if (
|
38 |
+
defined( 'TIVWP_UPDATER_VERSION' )
|
39 |
+
|| is_multisite()
|
40 |
+
|| version_compare( $GLOBALS['wp_version'], '4.5', '<' )
|
41 |
+
) {
|
42 |
+
return;
|
43 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
|
45 |
+
define( 'TIVWP_UPDATER_VERSION', '1.0.10' );
|
|
|
|
|
|
|
|
|
46 |
|
47 |
+
/**
|
48 |
+
* Load the class and tell others that it's done.
|
49 |
+
*/
|
50 |
+
require_once dirname( __FILE__ ) . '/class-tivwp-updater.php';
|
|
|
|
|
51 |
|
52 |
+
if ( isset( $GLOBALS['pagenow'] ) && 'plugins.php' === $GLOBALS['pagenow'] ) {
|
53 |
+
require_once dirname( __FILE__ ) . '/includes/class-tivwp-updater-setup-admin-area.php';
|
54 |
+
TIVWP_Updater_Setup_Admin_Area::construct();
|
|
|
55 |
}
|
|
|
|
|
|
|
|
|
56 |
|
57 |
+
/**
|
58 |
+
* Let everyone create the uploader objects.
|
59 |
+
*/
|
60 |
+
do_action( 'tivwp_updater_factory' );
|
61 |
+
},
|
62 |
+
// TODO: Increase the "minus" part with every new release.
|
63 |
+
9999 - 11
|
64 |
+
);
|
65 |
+
|
66 |
+
|
wpglobus.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* Description: A WordPress Globalization / Multilingual Plugin. Posts, pages, menus, widgets and even custom fields - in multiple languages!
|
16 |
* Text Domain: wpglobus
|
17 |
* Domain Path: /languages/
|
18 |
-
* Version: 2.6.
|
19 |
* Author: WPGlobus
|
20 |
* Author URI: https://wpglobus.com/
|
21 |
* Network: false
|
@@ -44,7 +44,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
44 |
exit;
|
45 |
}
|
46 |
|
47 |
-
define( 'WPGLOBUS_VERSION', '2.6.
|
48 |
define( 'WPGLOBUS_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
|
49 |
define( 'WPGLOBUS_AJAX', 'wpglobus-ajax' );
|
50 |
|
15 |
* Description: A WordPress Globalization / Multilingual Plugin. Posts, pages, menus, widgets and even custom fields - in multiple languages!
|
16 |
* Text Domain: wpglobus
|
17 |
* Domain Path: /languages/
|
18 |
+
* Version: 2.6.1
|
19 |
* Author: WPGlobus
|
20 |
* Author URI: https://wpglobus.com/
|
21 |
* Network: false
|
44 |
exit;
|
45 |
}
|
46 |
|
47 |
+
define( 'WPGLOBUS_VERSION', '2.6.1' );
|
48 |
define( 'WPGLOBUS_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
|
49 |
define( 'WPGLOBUS_AJAX', 'wpglobus-ajax' );
|
50 |
|