WooCommerce Multilingual – run WooCommerce with WPML - Version 4.2.2

Version Description

  • Added a filter to include links to the String Translation table for custom options/settings in Woocommerce Gateway settings panel
  • Added logic to display a warning in the back-end when built in taxonomies translation status (set to 'translate') is overridden
  • Added the ability to translate the currency switcher format in String Translation
  • My account Bookings list page displays bookings in all languages
  • Updating variable product does not refresh product visibility terms
  • Currency switcher doesn't reload the product page if # is present in the URL
  • Fixed a PHP fatal error that was occurring when using WooCommerce Multilingual together with Sensei
  • The 'featured' product field was not synchronized across product translations
  • When updating a translation, the product translation slug was overwritten if product contains page builders fields
  • The 'reset password' form in a secondary language pointed to a 404 error
  • "product/%product_cat%" product permalink doesn't work for products without category assigned in second language if "Uncategorized" string not translated in String Translation module
  • It was not possible to set the custom price value in secondary currencies as '0'
  • It was not possible to translate attribute slugs if the attributes base was not translated
  • Currency switcher styles were not loaded when using only a shortcode currency switcher
  • The customer order email was sent in default language when the 'Processing' button was clicked on the back-end
Download this release

Release Info

Developer sergey.r
Plugin Icon 128x128 WooCommerce Multilingual – run WooCommerce with WPML
Version 4.2.2
Comparing to
See all releases

Code changes from version 4.2.1.1 to 4.2.2

Files changed (60) hide show
  1. changelog/4.2.2.md +18 -0
  2. classes/shortcodes/class-wcml-wc-shortcode-product-category.php +62 -0
  3. compatibility/class-wcml-bookings.php +29 -0
  4. compatibility/class-wcml-klarna-gateway.php +17 -8
  5. inc/admin-menus/class-wcml-admin-menus.php +3 -3
  6. inc/class-wcml-capabilities.php +31 -29
  7. inc/class-wcml-compatibility.php +1 -1
  8. inc/class-wcml-dependencies.php +37 -1
  9. inc/class-wcml-emails.php +134 -86
  10. inc/class-wcml-endpoints.php +20 -17
  11. inc/class-wcml-terms.php +75 -41
  12. inc/class-wcml-upgrade.php +19 -6
  13. inc/class-wcml-url-translation.php +247 -149
  14. inc/class-wcml-wc-gateways.php +29 -21
  15. inc/class-woocommerce-wpml.php +129 -120
  16. inc/currencies/class-wcml-custom-prices.php +2 -3
  17. inc/currencies/class-wcml-multi-currency-prices.php +9 -9
  18. inc/currencies/class-wcml-multi-currency-resources.php +2 -3
  19. inc/currencies/currency-switcher/class-wcml-currency-switcher-ajax.php +2 -0
  20. inc/currencies/currency-switcher/class-wcml-currency-switcher-templates.php +125 -57
  21. inc/currencies/currency-switcher/class-wcml-currency-switcher.php +16 -7
  22. inc/template-classes/class-wcml-menus-wrap.php +7 -4
  23. inc/template-classes/currency-switcher/class-wcml-currency-switcher-template.php +11 -0
  24. inc/translation-editor/class-wcml-editor-ui-product-job.php +7 -3
  25. inc/translation-editor/class-wcml-synchronize-product-data.php +29 -2
  26. inc/translation-editor/class-wcml-synchronize-variations-data.php +23 -13
  27. locale/orig/woocommerce-multilingual.po +2402 -2169
  28. locale/woocommerce-multilingual-ar.mo +0 -0
  29. locale/woocommerce-multilingual-de_DE.mo +0 -0
  30. locale/woocommerce-multilingual-el.mo +0 -0
  31. locale/woocommerce-multilingual-es_ES.mo +0 -0
  32. locale/woocommerce-multilingual-fr_FR.mo +0 -0
  33. locale/woocommerce-multilingual-he_IL.mo +0 -0
  34. locale/woocommerce-multilingual-it_IT.mo +0 -0
  35. locale/woocommerce-multilingual-ja.mo +0 -0
  36. locale/woocommerce-multilingual-ko_KR.mo +0 -0
  37. locale/woocommerce-multilingual-nl_NL.mo +0 -0
  38. locale/woocommerce-multilingual-pl_PL.mo +0 -0
  39. locale/woocommerce-multilingual-pt_BR.mo +0 -0
  40. locale/woocommerce-multilingual-pt_PT.mo +0 -0
  41. locale/woocommerce-multilingual-ru_RU.mo +0 -0
  42. locale/woocommerce-multilingual-sv_SE.mo +0 -0
  43. locale/woocommerce-multilingual-uk_UA.mo +0 -0
  44. locale/woocommerce-multilingual-vi.mo +0 -0
  45. locale/woocommerce-multilingual-zh_CN.mo +0 -0
  46. locale/woocommerce-multilingual-zh_TW.mo +0 -0
  47. readme.txt +18 -1
  48. res/js/lock_fields.js +1 -1
  49. res/js/lock_fields.min.js +1 -1
  50. res/js/wcml-multi-currency.js +13 -9
  51. res/js/wcml-multi-currency.min.js +1 -1
  52. templates/menus-wrap.twig +12 -9
  53. vendor/autoload.php +1 -1
  54. vendor/autoload_52.php +1 -1
  55. vendor/composer/autoload_classmap.php +1 -0
  56. vendor/composer/autoload_real.php +4 -4
  57. vendor/composer/autoload_real_52.php +3 -3
  58. vendor/composer/autoload_static.php +6 -5
  59. wpml-config.xml +1 -0
  60. wpml-woocommerce.php +2 -2
changelog/4.2.2.md ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Features
2
+ * [wcml-2120] Added a filter to include links to the String Translation table for custom options/settings in Woocommerce Gateway settings panel
3
+ * [wcml-2119] Added logic to display a warning in the back-end when built in taxonomies translation status (set to 'translate') is overridden
4
+ * [wcml-1484] Added the ability to translate the currency switcher format in String Translation
5
+
6
+ # Fixes
7
+ * [wcml-2137] My account Bookings list page displays bookings in all languages
8
+ * [wcml-2134] Updating variable product does not refresh product visibility terms
9
+ * [wcml-2131] Currency switcher doesn't reload the product page if # is present in the URL
10
+ * [wcml-2123] Fixed a PHP fatal error that was occurring when using WooCommerce Multilingual together with Sensei
11
+ * [wcml-2117] The 'featured' product field was not synchronized across product translations
12
+ * [wcml-2116] When updating a translation, the product translation slug was overwritten if product contains page builders fields
13
+ * [wcml-2115] The 'reset password' form in a secondary language pointed to a 404 error
14
+ * [wcml-2114] "product/%product_cat%" product permalink doesn't work for products without category assigned in second language if "Uncategorized" string not translated in String Translation module
15
+ * [wcml-2107] It was not possible to set the custom price value in secondary currencies as '0'
16
+ * [wcml-2090] It was not possible to translate attribute slugs if the attributes base was not translated
17
+ * [wcml-2086] Currency switcher styles were not loaded when using only a shortcode currency switcher
18
+ * [wcml-2028] The customer order email was sent in default language when the 'Processing' button was clicked on the back-end
classes/shortcodes/class-wcml-wc-shortcode-product-category.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Class WCML_WC_Shortcode_Product_Category
4
+ * @since 4.2.2
5
+ */
6
+ class WCML_WC_Shortcode_Product_Category {
7
+
8
+ /**
9
+ * @var SitePress
10
+ */
11
+ private $sitepress;
12
+
13
+ /**
14
+ * WCML_WC_Shortcode_Product_Category constructor.
15
+ * @param SitePress $sitepress
16
+ */
17
+ public function __construct( SitePress $sitepress ) {
18
+ $this->sitepress = $sitepress;
19
+ }
20
+
21
+ public function add_hooks() {
22
+ add_filter( 'woocommerce_shortcode_products_query', array( $this, 'translate_category' ), 10, 2 );
23
+ }
24
+
25
+
26
+ /**
27
+ * @param array $args
28
+ * @param array $atts
29
+ *
30
+ * @return array
31
+ */
32
+ public function translate_category( $args, $atts ) {
33
+ if ( isset( $atts['category'] ) ) {
34
+
35
+ // Get translated category slugs, we need to remove WPML filter.
36
+ $filter_exists = remove_filter( 'terms_clauses', array( $this->sitepress, 'terms_clauses' ), 10 );
37
+ $categories = get_terms( array( 'slug' => $atts['category'], 'taxonomy' => 'product_cat' ) );
38
+ if ( $filter_exists ) {
39
+ add_filter( 'terms_clauses', array( $this->sitepress, 'terms_clauses' ), 10, 4 );
40
+ }
41
+
42
+ // Replace slugs in query arguments.
43
+ $terms = wp_list_pluck( $categories, 'slug' );
44
+ foreach ( $args['tax_query'] as $i => $tax_query ) {
45
+ $args['tax_query'][ $i ] = array();
46
+ if ( ! is_int( key( $tax_query ) ) ) {
47
+ $tax_query = array( $tax_query );
48
+ }
49
+ foreach ( $tax_query as $j => $condition ) {
50
+ if ( 'product_cat' === $condition['taxonomy'] ) {
51
+ $condition['terms'] = $terms;
52
+ }
53
+ $args['tax_query'][ $i ][] = $condition;
54
+ }
55
+ }
56
+ }
57
+
58
+ return $args;
59
+ }
60
+
61
+
62
+ }
compatibility/class-wcml-bookings.php CHANGED
@@ -197,6 +197,8 @@ class WCML_Bookings {
197
 
198
  add_filter( 'wcml_add_to_cart_sold_individually', array( $this, 'add_to_cart_sold_individually' ), 10, 4 );
199
 
 
 
200
  }
201
 
202
  function wcml_price_field_after_booking_base_cost( $post_id ) {
@@ -2354,6 +2356,33 @@ class WCML_Bookings {
2354
 
2355
  }
2356
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2357
 
2358
 
2359
  }
197
 
198
  add_filter( 'wcml_add_to_cart_sold_individually', array( $this, 'add_to_cart_sold_individually' ), 10, 4 );
199
 
200
+ add_filter( 'woocommerce_bookings_account_tables', array( $this, 'filter_my_account_bookings_tables_by_current_language' ) );
201
+
202
  }
203
 
204
  function wcml_price_field_after_booking_base_cost( $post_id ) {
2356
 
2357
  }
2358
 
2359
+ public function filter_my_account_bookings_tables_by_current_language( $tables ) {
2360
+
2361
+ $current_language = $this->sitepress->get_current_language();
2362
+
2363
+ foreach ( $tables as $table_key => $table ) {
2364
+
2365
+ if ( isset( $table['bookings'] ) ) {
2366
+
2367
+ foreach ( $table['bookings'] as $key => $booking ) {
2368
+ $language_code = get_post_meta( $booking->get_id(), '_language_code', true );
2369
+
2370
+ if( !$language_code ){
2371
+ $language_code = $this->sitepress->get_language_for_element( $booking->get_product_id(), 'post_product' );
2372
+ }
2373
+
2374
+ if ( $language_code !== $current_language ) {
2375
+ unset( $tables[ $table_key ]['bookings'][ $key ] );
2376
+ }
2377
+ }
2378
+ }
2379
+
2380
+ $tables[ $table_key ]['bookings'] = array_values( $tables[ $table_key ]['bookings'] );
2381
+ }
2382
+
2383
+ return $tables;
2384
+ }
2385
+
2386
 
2387
 
2388
  }
compatibility/class-wcml-klarna-gateway.php CHANGED
@@ -1,18 +1,27 @@
1
  <?php
2
 
3
- class WCML_Klarna_Gateway{
4
 
5
- public function add_hooks(){
6
 
7
- add_filter( 'wcml_multi_currency_ajax_actions', array( $this, 'ajax_action_needs_multi_currency' ) );
8
 
9
- }
10
 
11
- function ajax_action_needs_multi_currency( $actions ){
12
 
13
- $actions[] = 'klarna_checkout_cart_callback_update';
 
 
 
 
 
 
 
 
 
14
 
15
- return $actions;
16
- }
17
 
18
  }
1
  <?php
2
 
3
+ class WCML_Klarna_Gateway {
4
 
5
+ public function add_hooks() {
6
 
7
+ add_filter( 'wcml_multi_currency_ajax_actions', array( $this, 'ajax_action_needs_multi_currency' ) );
8
 
9
+ }
10
 
11
+ public function ajax_action_needs_multi_currency( $actions ) {
12
 
13
+ $actions[] = 'klarna_checkout_cart_callback_update';
14
+ $actions[] = 'klarna_checkout_coupons_callback';
15
+ $actions[] = 'klarna_checkout_remove_coupon_callback';
16
+ $actions[] = 'klarna_checkout_cart_callback_remove';
17
+ $actions[] = 'klarna_checkout_shipping_callback';
18
+ $actions[] = 'kco_iframe_shipping_option_change_cb';
19
+ $actions[] = 'klarna_checkout_order_note_callback';
20
+ $actions[] = 'kco_iframe_change_cb';
21
+ $actions[] = 'kco_iframe_shipping_address_change_v2_cb';
22
+ $actions[] = 'kco_iframe_shipping_address_change_cb';
23
 
24
+ return $actions;
25
+ }
26
 
27
  }
inc/admin-menus/class-wcml-admin-menus.php CHANGED
@@ -47,7 +47,7 @@ class WCML_Admin_Menus{
47
  $wp_api = self::$sitepress->get_wp_api();
48
  if (!$wp_api->current_user_can('wpml_manage_translation_management')) {
49
  $wp_api->add_submenu_page(null,
50
- __('Translations', 'wpml-translation-management'), __('Translations', 'wpml-translation-management'),
51
  'wpml_operate_woocommerce_multilingual', WPML_TM_FOLDER . '/menu/translations-queue.php', array($WPML_Translation_Management, 'translation_queue_page'));
52
  }
53
  }
@@ -151,7 +151,7 @@ class WCML_Admin_Menus{
151
 
152
  if ( $pos !== false && $pagenow == 'edit-tags.php' ) {
153
  $prot_link = '<span class="button" style="padding:4px;margin-top:0px; float: left;"><img align="baseline" src="' . ICL_PLUGIN_URL . '/res/img/icon16.png" width="16" height="16" style="margin-bottom:-4px" /> <a href="' . WCML_Links::generate_tracking_link( 'https://wpml.org/documentation/related-projects/woocommerce-multilingual/', 'woocommerce-multilingual', 'documentation', '#3' ) . '" target="_blank" style="text-decoration: none;">' .
154
- __( 'How to translate attributes', 'sitepress' ) . '<\/a>' . '<\/span><br \/><br \/>';
155
  ?>
156
  <script type="text/javascript">
157
  jQuery("table.widefat").before('<?php echo $prot_link ?>');
@@ -163,7 +163,7 @@ class WCML_Admin_Menus{
163
  if ( isset($_GET['taxonomy']) && $_GET['taxonomy'] == 'product_cat' ) {
164
 
165
  $prot_link = '<span class="button" style="padding:4px;margin-top:0px; float: left;"><img align="baseline" src="' . ICL_PLUGIN_URL . '/res/img/icon16.png" width="16" height="16" style="margin-bottom:-4px" /> <a href="' . WCML_Links::generate_tracking_link( 'https://wpml.org/documentation/related-projects/woocommerce-multilingual/', 'woocommerce-multilingual', 'documentation', '#3' ) . '" target="_blank" style="text-decoration: none;">' .
166
- __( 'How to translate product categories', 'sitepress' ) . '<\/a>' . '<\/span><br \/><br \/>';
167
  ?>
168
  <script type="text/javascript">
169
  jQuery("table.widefat").before('<?php echo $prot_link ?>');
47
  $wp_api = self::$sitepress->get_wp_api();
48
  if (!$wp_api->current_user_can('wpml_manage_translation_management')) {
49
  $wp_api->add_submenu_page(null,
50
+ __( 'Translations', 'woocommerce-multilingual' ), __( 'Translations', 'woocommerce-multilingual' ),
51
  'wpml_operate_woocommerce_multilingual', WPML_TM_FOLDER . '/menu/translations-queue.php', array($WPML_Translation_Management, 'translation_queue_page'));
52
  }
53
  }
151
 
152
  if ( $pos !== false && $pagenow == 'edit-tags.php' ) {
153
  $prot_link = '<span class="button" style="padding:4px;margin-top:0px; float: left;"><img align="baseline" src="' . ICL_PLUGIN_URL . '/res/img/icon16.png" width="16" height="16" style="margin-bottom:-4px" /> <a href="' . WCML_Links::generate_tracking_link( 'https://wpml.org/documentation/related-projects/woocommerce-multilingual/', 'woocommerce-multilingual', 'documentation', '#3' ) . '" target="_blank" style="text-decoration: none;">' .
154
+ __( 'How to translate attributes', 'woocommerce-multilingual' ) . '<\/a>' . '<\/span><br \/><br \/>';
155
  ?>
156
  <script type="text/javascript">
157
  jQuery("table.widefat").before('<?php echo $prot_link ?>');
163
  if ( isset($_GET['taxonomy']) && $_GET['taxonomy'] == 'product_cat' ) {
164
 
165
  $prot_link = '<span class="button" style="padding:4px;margin-top:0px; float: left;"><img align="baseline" src="' . ICL_PLUGIN_URL . '/res/img/icon16.png" width="16" height="16" style="margin-bottom:-4px" /> <a href="' . WCML_Links::generate_tracking_link( 'https://wpml.org/documentation/related-projects/woocommerce-multilingual/', 'woocommerce-multilingual', 'documentation', '#3' ) . '" target="_blank" style="text-decoration: none;">' .
166
+ __( 'How to translate product categories', 'woocommerce-multilingual' ) . '<\/a>' . '<\/span><br \/><br \/>';
167
  ?>
168
  <script type="text/javascript">
169
  jQuery("table.widefat").before('<?php echo $prot_link ?>');
inc/class-wcml-capabilities.php CHANGED
@@ -1,33 +1,35 @@
1
  <?php
2
 
3
- class WCML_Capabilities{
4
-
5
- public static function set_up_capabilities(){
6
-
7
- $role = get_role( 'administrator' );
8
- if($role){
9
- $role->add_cap( 'wpml_manage_woocommerce_multilingual' );
10
- $role->add_cap( 'wpml_operate_woocommerce_multilingual' );
11
- }
12
-
13
- $role = get_role( 'super_admin' );
14
- if($role){
15
- $role->add_cap( 'wpml_manage_woocommerce_multilingual' );
16
- $role->add_cap( 'wpml_operate_woocommerce_multilingual' );
17
- }
18
-
19
- $super_admins = get_super_admins();
20
- foreach ($super_admins as $admin) {
21
- $user = new WP_User( $admin );
22
- $user->add_cap( 'wpml_manage_woocommerce_multilingual' );
23
- $user->add_cap( 'wpml_operate_woocommerce_multilingual' );
24
- }
25
-
26
- $role = get_role( 'shop_manager' );
27
- if($role){
28
- $role->add_cap( 'wpml_operate_woocommerce_multilingual' );
29
- }
30
-
31
- }
 
 
32
 
33
  }
1
  <?php
2
 
3
+ class WCML_Capabilities {
4
+
5
+ public static function set_up_capabilities() {
6
+
7
+ $role = get_role( 'administrator' );
8
+ if ( $role ) {
9
+ $role->add_cap( 'wpml_manage_woocommerce_multilingual' );
10
+ $role->add_cap( 'wpml_operate_woocommerce_multilingual' );
11
+ }
12
+
13
+ $role = get_role( 'super_admin' );
14
+ if ( $role ) {
15
+ $role->add_cap( 'wpml_manage_woocommerce_multilingual' );
16
+ $role->add_cap( 'wpml_operate_woocommerce_multilingual' );
17
+ }
18
+
19
+ if ( is_multisite() ) {
20
+ $super_admins = get_super_admins();
21
+ foreach ( $super_admins as $admin ) {
22
+ $user = new WP_User( $admin );
23
+ $user->add_cap( 'wpml_manage_woocommerce_multilingual' );
24
+ $user->add_cap( 'wpml_operate_woocommerce_multilingual' );
25
+ }
26
+ }
27
+
28
+ $role = get_role( 'shop_manager' );
29
+ if ( $role ) {
30
+ $role->add_cap( 'wpml_operate_woocommerce_multilingual' );
31
+ }
32
+
33
+ }
34
 
35
  }
inc/class-wcml-compatibility.php CHANGED
@@ -102,7 +102,7 @@ class WCML_Compatibility {
102
  $this->sensei = new WCML_Sensei(
103
  $this->sitepress,
104
  $this->wpdb,
105
- WPML_Custom_Columns( $this->wpdb, $this->sitepress )
106
  );
107
  $this->sensei->add_hooks();
108
  }
102
  $this->sensei = new WCML_Sensei(
103
  $this->sitepress,
104
  $this->wpdb,
105
+ new WPML_Custom_Columns( $this->wpdb, $this->sitepress )
106
  );
107
  $this->sensei->add_hooks();
108
  }
inc/class-wcml-dependencies.php CHANGED
@@ -67,6 +67,7 @@ class WCML_Dependencies{
67
 
68
  if($this->allok){
69
  $this->check_for_incompatible_permalinks();
 
70
  }
71
 
72
  if(isset($sitepress)){
@@ -110,7 +111,42 @@ class WCML_Dependencies{
110
  <div class="message error"><p><?php printf(__('WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href="%s">WPML Media</a> versions prior %s.',
111
  'woocommerce-multilingual'), WCML_Links::generate_tracking_link('https://wpml.org/'), '2.1'); ?></p></div>
112
  <?php }
113
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
 
115
  /**
116
  * Adds admin notice.
67
 
68
  if($this->allok){
69
  $this->check_for_incompatible_permalinks();
70
+ $this->check_for_transaltable_default_taxonomies();
71
  }
72
 
73
  if(isset($sitepress)){
111
  <div class="message error"><p><?php printf(__('WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href="%s">WPML Media</a> versions prior %s.',
112
  'woocommerce-multilingual'), WCML_Links::generate_tracking_link('https://wpml.org/'), '2.1'); ?></p></div>
113
  <?php }
114
+
115
+ /**
116
+ * Adds default taxonomies notice.
117
+ */
118
+ public function check_for_transaltable_default_taxonomies() {
119
+
120
+ $default_taxonomies = array( 'product_cat', 'product_tag', 'product_shipping_class' );
121
+ $show_error = false;
122
+
123
+ foreach ( $default_taxonomies as $taxonomy ) {
124
+ if ( ! is_taxonomy_translated( $taxonomy ) ) {
125
+ $show_error = true;
126
+ break;
127
+ }
128
+ }
129
+
130
+ if ( $show_error ) {
131
+ $support_link = '<a href="https://wpml.org/forums/forum/english-support/">' . __( 'WPML support', 'woocommerce-multilingual' ) . '</a>';
132
+
133
+ /* translators: Part 1/6 of a message telling users that some taxonomies, required for WCML to work, are not set as translatable when they should */
134
+ $sentences[] = _x( "Some taxonomies in your site are forced to be untranslatable. This is causing a problem when you're trying to run a multilingual WooCommerce site.", 'Default taxonomies must be translatable: 1/6', 'woocommerce-multilingual' );
135
+ /* translators: Part 2/6 of a message telling users that some taxonomies, required for WCML to work, are not set as translatable when they should */
136
+ $sentences[] = _x( 'A plugin or the theme are probably doing this.', 'Default taxonomies must be translatable: 2/6', 'woocommerce-multilingual' );
137
+ /* translators: Part 3/6 of a message telling users that some taxonomies, required for WCML to work, are not set as translatable when they should */
138
+ $sentences[] = _x( 'What you can do:', 'Default taxonomies must be translatable: 3/6', 'woocommerce-multilingual' );
139
+ /* translators: Part 4/6 of a message telling users that some taxonomies, required for WCML to work, are not set as translatable when they should */
140
+ $sentences[] = _x( '1. Temporarily disable plugins and see if this message disappears.', 'Default taxonomies must be translatable: 4/6', 'woocommerce-multilingual' );
141
+ /* translators: Part 5/6 of a message telling users that some taxonomies, required for WCML to work, are not set as translatable when they should */
142
+ $sentences[] = _x( '2. Temporarily switch the theme and see if this message disappears.', 'Default taxonomies must be translatable: 5/6', 'woocommerce-multilingual' );
143
+ /* translators: Part 6/6 of a message telling users that some taxonomies, required for WCML to work, are not set as translatable when they should */
144
+ $sentences[] = sprintf( _x( "It's best to contact %s, tell that you're getting this message and offer to send a Duplicator copy of the site. We will work with the theme/plugin author and fix the problem for good. In the meanwhile, we'll give you a temporary solution, so you're not stuck.", 'Default taxonomies must be translatable: 6/6', 'woocommerce-multilingual' ), $support_link );
145
+
146
+ $this->err_message = '<div class="message error"><p>' . implode( '</p><p>', $sentences ) . '</p></div>';
147
+ add_action( 'admin_notices', array( $this, 'plugin_notice_message' ) );
148
+ }
149
+ }
150
 
151
  /**
152
  * Adds admin notice.
inc/class-wcml-emails.php CHANGED
@@ -3,54 +3,91 @@ class WCML_Emails{
3
 
4
  private $order_id = false;
5
  private $locale = false;
 
6
  private $woocommerce_wpml;
 
7
  private $sitepress;
 
 
8
 
9
- function __construct( &$woocommerce_wpml, &$sitepress ) {
10
  $this->woocommerce_wpml = $woocommerce_wpml;
11
- $this->sitepress = $sitepress;
12
-
13
- add_action( 'init', array( $this, 'init' ) );
14
  }
15
 
16
- function init(){
17
  global $pagenow;
18
  //wrappers for email's header
19
- if(is_admin() && !defined( 'DOING_AJAX' )){
20
- add_action('woocommerce_order_status_completed_notification', array($this, 'email_heading_completed'),9);
21
- add_action('woocommerce_order_status_changed', array($this, 'comments_language'),10);
 
 
 
22
  }
23
 
24
- add_action('woocommerce_new_customer_note_notification', array($this, 'email_heading_note'),9);
25
- add_action('wp_ajax_woocommerce_mark_order_complete',array($this,'email_refresh_in_ajax'),9);
 
26
 
27
- add_action( 'woocommerce_order_status_pending_to_processing_notification', array( $this, 'email_heading_processing' ), 9 );
28
- add_action( 'woocommerce_order_status_pending_to_on-hold_notification', array( $this, 'email_heading_processing' ), 9 );
 
 
 
 
 
 
29
 
30
  //wrappers for email's body
31
- add_action('woocommerce_before_resend_order_emails', array($this, 'email_header'));
32
- add_action('woocommerce_after_resend_order_email', array($this, 'email_footer'));
33
 
34
  //filter string language before for emails
35
- add_filter('icl_current_string_language',array($this,'icl_current_string_language'),10 ,2);
36
 
37
  //change order status
38
- add_action('woocommerce_order_status_completed',array($this,'refresh_email_lang_complete'),9);
39
- add_action('woocommerce_order_status_pending_to_processing_notification',array($this,'refresh_email_lang'),9);
40
- add_action('woocommerce_order_status_pending_to_on-hold_notification',array($this,'refresh_email_lang'),9);
41
- add_action('woocommerce_new_customer_note',array($this,'refresh_email_lang'),9);
 
 
 
 
 
 
42
 
43
 
44
- add_action('woocommerce_order_partially_refunded_notification', array($this,'email_heading_refund'), 9);
45
- add_action('woocommerce_order_partially_refunded_notification', array($this,'refresh_email_lang'), 9);
46
 
47
  //new order admins email
48
- add_action( 'woocommerce_order_status_pending_to_processing_notification', array( $this, 'new_order_admin_email' ), 9 );
49
- add_action( 'woocommerce_order_status_pending_to_completed_notification', array( $this, 'new_order_admin_email' ), 9 );
50
- add_action( 'woocommerce_order_status_pending_to_on-hold_notification', array( $this, 'new_order_admin_email' ), 9 );
51
- add_action( 'woocommerce_order_status_failed_to_processing_notification', array( $this, 'new_order_admin_email' ), 9 );
52
- add_action( 'woocommerce_order_status_failed_to_completed_notification', array( $this, 'new_order_admin_email' ), 9 );
53
- add_action( 'woocommerce_order_status_failed_to_on-hold_notification', array( $this, 'new_order_admin_email' ), 9 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  add_action( 'woocommerce_before_resend_order_emails', array( $this, 'backend_new_order_admin_email' ), 9 );
55
 
56
  add_filter( 'icl_st_admin_string_return_cached', array( $this, 'admin_string_return_cached' ), 10, 2 );
@@ -58,31 +95,44 @@ class WCML_Emails{
58
  add_filter( 'plugin_locale', array( $this, 'set_locale_for_emails' ), 10, 2 );
59
  add_filter( 'woocommerce_countries', array( $this, 'translate_woocommerce_countries' ) );
60
 
61
- if( is_admin() && $pagenow == 'admin.php' && isset($_GET['page']) && $_GET['page'] == 'wc-settings' && isset($_GET['tab']) && $_GET['tab'] == 'email' ){
62
- add_action('admin_footer', array($this, 'show_language_links_for_wc_emails'));
63
  $this->set_emails_string_language();
64
  }
65
 
66
- if(
67
  (
68
- !isset( $_GET['post_type'] ) ||
69
  $_GET['post_type'] != 'shop_order'
70
  ) &&
71
  (
72
- !isset( $_GET[ 'action' ] ) ||
73
- !in_array( $_GET['action'] , array( 'woocommerce_mark_order_complete', 'woocommerce_mark_order_status', 'mark_processing' ) )
 
 
74
  )
75
- ){
76
  add_filter( 'woocommerce_order_items_meta_get_formatted', array( $this, 'filter_formatted_items' ), 10, 2 );
77
  }
78
 
79
- add_filter( 'woocommerce_allow_send_queued_transactional_email', array( $this, 'send_queued_transactional_email' ), 10, 3 );
 
 
 
 
 
 
80
  }
81
 
82
- function email_refresh_in_ajax(){
83
- if( isset( $_GET[ 'order_id' ] ) ){
84
- $this->refresh_email_lang( $_GET[ 'order_id' ] );
85
- $this->email_heading_completed( $_GET[ 'order_id' ], true );
 
 
 
 
 
86
  }
87
  }
88
 
@@ -141,80 +191,78 @@ class WCML_Emails{
141
  }
142
 
143
  function email_heading_completed( $order_id, $no_checking = false ){
144
- global $woocommerce;
145
- if( ( class_exists( 'WC_Email_Customer_Completed_Order' ) || $no_checking ) && isset( $woocommerce->mailer()->emails[ 'WC_Email_Customer_Completed_Order' ] ) ){
146
 
147
- $woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->heading = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_completed_order_settings', '[woocommerce_customer_completed_order_settings]heading' );
 
 
148
 
149
- $woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->subject = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_completed_order_settings', '[woocommerce_customer_completed_order_settings]subject' );
150
 
151
- $woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->heading_downloadable = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_completed_order_settings', '[woocommerce_customer_completed_order_settings]heading_downloadable' );
152
 
153
- $woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->subject_downloadable = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_completed_order_settings', '[woocommerce_customer_completed_order_settings]subject_downloadable' );
154
 
155
- $enabled = $woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->enabled;
156
- $woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->enabled = false;
157
- $woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->trigger($order_id);
158
- $woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->enabled = $enabled;
159
  }
160
  }
161
 
162
  function email_heading_processing($order_id){
163
- global $woocommerce;
164
 
165
- if( class_exists( 'WC_Email_Customer_Processing_Order' ) && isset( $woocommerce->mailer()->emails[ 'WC_Email_Customer_Processing_Order' ] ) ){
166
 
167
- $woocommerce->mailer()->emails['WC_Email_Customer_Processing_Order']->heading = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_processing_order_settings', '[woocommerce_customer_processing_order_settings]heading', $order_id );
168
 
169
- $woocommerce->mailer()->emails['WC_Email_Customer_Processing_Order']->subject = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_processing_order_settings', '[woocommerce_customer_processing_order_settings]subject', $order_id );
170
- $enabled = $woocommerce->mailer()->emails['WC_Email_Customer_Processing_Order']->enabled;
171
- $woocommerce->mailer()->emails['WC_Email_Customer_Processing_Order']->enabled = false;
172
- $woocommerce->mailer()->emails['WC_Email_Customer_Processing_Order']->trigger($order_id);
173
- $woocommerce->mailer()->emails['WC_Email_Customer_Processing_Order']->enabled = $enabled;
174
 
175
  }
176
  }
177
 
178
  function email_heading_note($args){
179
- global $woocommerce;
180
 
181
- if( class_exists( 'WC_Email_Customer_Note' ) && isset( $woocommerce->mailer()->emails[ 'WC_Email_Customer_Note' ] ) ){
182
 
183
- $woocommerce->mailer()->emails['WC_Email_Customer_Note']->heading = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_note_settings', '[woocommerce_customer_note_settings]heading' );
184
 
185
- $woocommerce->mailer()->emails['WC_Email_Customer_Note']->subject = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_note_settings', '[woocommerce_customer_note_settings]subject' );
186
 
187
- $enabled = $woocommerce->mailer()->emails['WC_Email_Customer_Note']->enabled;
188
- $woocommerce->mailer()->emails['WC_Email_Customer_Note']->enabled = false;
189
- $woocommerce->mailer()->emails['WC_Email_Customer_Note']->trigger($args);
190
- $woocommerce->mailer()->emails['WC_Email_Customer_Note']->enabled = $enabled;
191
  }
192
  }
193
 
194
  function email_heading_refund( $order_id, $refund_id = null ){
195
- global $woocommerce;
196
- if( class_exists( 'WC_Email_Customer_Refunded_Order' ) && isset( $woocommerce->mailer()->emails[ 'WC_Email_Customer_Refunded_Order' ] ) ){
197
 
198
- $woocommerce->mailer()->emails['WC_Email_Customer_Refunded_Order']->heading =
 
 
199
  $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_refunded_order_settings',
200
  '[woocommerce_customer_refunded_order_settings]heading_partial', $order_id );
201
- $woocommerce->mailer()->emails['WC_Email_Customer_Refunded_Order']->subject =
202
  $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_refunded_order_settings',
203
  '[woocommerce_customer_refunded_order_settings]subject_partial', $order_id );
204
 
205
- $enabled = $woocommerce->mailer()->emails['WC_Email_Customer_Refunded_Order']->enabled;
206
- $woocommerce->mailer()->emails['WC_Email_Customer_Refunded_Order']->enabled = false;
207
- $woocommerce->mailer()->emails['WC_Email_Customer_Refunded_Order']->trigger($order_id, true, $refund_id);
208
- $woocommerce->mailer()->emails['WC_Email_Customer_Refunded_Order']->enabled = $enabled;
209
 
210
  }
211
  }
212
 
213
 
214
  function new_order_admin_email($order_id){
215
- global $woocommerce;
216
- if( isset( $woocommerce->mailer()->emails[ 'WC_Email_New_Order' ] ) ){
217
- $recipients = explode(',',$woocommerce->mailer()->emails['WC_Email_New_Order']->get_recipient());
218
  foreach($recipients as $recipient){
219
  $user = get_user_by('email',$recipient);
220
  if($user){
@@ -225,15 +273,15 @@ class WCML_Emails{
225
 
226
  $this->change_email_language( $user_lang );
227
 
228
- $woocommerce->mailer()->emails['WC_Email_New_Order']->heading = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_new_order_settings', '[woocommerce_new_order_settings]heading', $order_id );
229
 
230
- $woocommerce->mailer()->emails['WC_Email_New_Order']->subject = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_new_order_settings', '[woocommerce_new_order_settings]subject', $order_id );
231
 
232
- $woocommerce->mailer()->emails['WC_Email_New_Order']->recipient = $recipient;
233
 
234
- $woocommerce->mailer()->emails['WC_Email_New_Order']->trigger($order_id);
235
  }
236
- $woocommerce->mailer()->emails['WC_Email_New_Order']->enabled = false;
237
  $this->refresh_email_lang($order_id);
238
  }
239
  }
@@ -284,16 +332,16 @@ class WCML_Emails{
284
 
285
  }
286
 
287
- function change_email_language($lang){
288
- global $woocommerce;
289
- $this->sitepress->switch_lang($lang,true);
290
  $this->locale = $this->sitepress->get_locale( $lang );
291
- unload_textdomain('woocommerce');
292
  unload_textdomain( 'default' );
293
  global $wp_locale;
294
  $wp_locale = new WP_Locale();
295
 
296
- $woocommerce->load_plugin_textdomain();
297
  load_default_textdomain( $this->locale );
298
  }
299
 
3
 
4
  private $order_id = false;
5
  private $locale = false;
6
+ /** @var woocommerce_wpml */
7
  private $woocommerce_wpml;
8
+ /** @var Sitepress */
9
  private $sitepress;
10
+ /** @var WooCommerce */
11
+ private $woocommerce;
12
 
13
+ function __construct( woocommerce_wpml $woocommerce_wpml, SitePress $sitepress, WooCommerce $woocommerce ) {
14
  $this->woocommerce_wpml = $woocommerce_wpml;
15
+ $this->sitepress = $sitepress;
16
+ $this->woocommerce = $woocommerce;
 
17
  }
18
 
19
+ function add_hooks(){
20
  global $pagenow;
21
  //wrappers for email's header
22
+ if ( is_admin() && ! defined( 'DOING_AJAX' ) ) {
23
+ add_action( 'woocommerce_order_status_completed_notification', array(
24
+ $this,
25
+ 'email_heading_completed'
26
+ ), 9 );
27
+ add_action( 'woocommerce_order_status_changed', array( $this, 'comments_language' ), 10 );
28
  }
29
 
30
+ add_action( 'woocommerce_new_customer_note_notification', array( $this, 'email_heading_note' ), 9 );
31
+
32
+ add_action( 'wp_ajax_woocommerce_mark_order_status', array( $this, 'email_refresh_in_ajax' ), 9 );
33
 
34
+ add_action( 'woocommerce_order_status_pending_to_processing_notification', array(
35
+ $this,
36
+ 'email_heading_processing'
37
+ ), 9 );
38
+ add_action( 'woocommerce_order_status_pending_to_on-hold_notification', array(
39
+ $this,
40
+ 'email_heading_processing'
41
+ ), 9 );
42
 
43
  //wrappers for email's body
44
+ add_action( 'woocommerce_before_resend_order_emails', array( $this, 'email_header' ) );
45
+ add_action( 'woocommerce_after_resend_order_email', array( $this, 'email_footer' ) );
46
 
47
  //filter string language before for emails
48
+ add_filter( 'icl_current_string_language', array( $this, 'icl_current_string_language' ), 10, 2 );
49
 
50
  //change order status
51
+ add_action( 'woocommerce_order_status_completed', array( $this, 'refresh_email_lang_complete' ), 9 );
52
+ add_action( 'woocommerce_order_status_pending_to_processing_notification', array(
53
+ $this,
54
+ 'refresh_email_lang'
55
+ ), 9 );
56
+ add_action( 'woocommerce_order_status_pending_to_on-hold_notification', array(
57
+ $this,
58
+ 'refresh_email_lang'
59
+ ), 9 );
60
+ add_action( 'woocommerce_new_customer_note', array( $this, 'refresh_email_lang' ), 9 );
61
 
62
 
63
+ add_action( 'woocommerce_order_partially_refunded_notification', array( $this, 'email_heading_refund' ), 9 );
64
+ add_action( 'woocommerce_order_partially_refunded_notification', array( $this, 'refresh_email_lang' ), 9 );
65
 
66
  //new order admins email
67
+ add_action( 'woocommerce_order_status_pending_to_processing_notification', array(
68
+ $this,
69
+ 'new_order_admin_email'
70
+ ), 9 );
71
+ add_action( 'woocommerce_order_status_pending_to_completed_notification', array(
72
+ $this,
73
+ 'new_order_admin_email'
74
+ ), 9 );
75
+ add_action( 'woocommerce_order_status_pending_to_on-hold_notification', array(
76
+ $this,
77
+ 'new_order_admin_email'
78
+ ), 9 );
79
+ add_action( 'woocommerce_order_status_failed_to_processing_notification', array(
80
+ $this,
81
+ 'new_order_admin_email'
82
+ ), 9 );
83
+ add_action( 'woocommerce_order_status_failed_to_completed_notification', array(
84
+ $this,
85
+ 'new_order_admin_email'
86
+ ), 9 );
87
+ add_action( 'woocommerce_order_status_failed_to_on-hold_notification', array(
88
+ $this,
89
+ 'new_order_admin_email'
90
+ ), 9 );
91
  add_action( 'woocommerce_before_resend_order_emails', array( $this, 'backend_new_order_admin_email' ), 9 );
92
 
93
  add_filter( 'icl_st_admin_string_return_cached', array( $this, 'admin_string_return_cached' ), 10, 2 );
95
  add_filter( 'plugin_locale', array( $this, 'set_locale_for_emails' ), 10, 2 );
96
  add_filter( 'woocommerce_countries', array( $this, 'translate_woocommerce_countries' ) );
97
 
98
+ if ( is_admin() && $pagenow == 'admin.php' && isset( $_GET['page'] ) && $_GET['page'] == 'wc-settings' && isset( $_GET['tab'] ) && $_GET['tab'] == 'email' ) {
99
+ add_action( 'admin_footer', array( $this, 'show_language_links_for_wc_emails' ) );
100
  $this->set_emails_string_language();
101
  }
102
 
103
+ if (
104
  (
105
+ ! isset( $_GET['post_type'] ) ||
106
  $_GET['post_type'] != 'shop_order'
107
  ) &&
108
  (
109
+ ! isset( $_GET['action'] ) ||
110
+ ! in_array( $_GET['action'], array(
111
+ 'woocommerce_mark_order_status'
112
+ ) )
113
  )
114
+ ) {
115
  add_filter( 'woocommerce_order_items_meta_get_formatted', array( $this, 'filter_formatted_items' ), 10, 2 );
116
  }
117
 
118
+ add_filter( 'woocommerce_allow_send_queued_transactional_email', array(
119
+ $this,
120
+ 'send_queued_transactional_email'
121
+ ), 10, 3 );
122
+
123
+ add_filter( 'woocommerce_email_setup_locale', '__return_false' );
124
+ add_filter( 'woocommerce_email_restore_locale', '__return_false' );
125
  }
126
 
127
+ function email_refresh_in_ajax() {
128
+ if ( isset( $_GET['order_id'] ) ) {
129
+ $this->refresh_email_lang( $_GET['order_id'] );
130
+
131
+ if ( isset( $_GET['status'] ) && 'completed' === $_GET['status'] ) {
132
+ $this->email_heading_completed( $_GET['order_id'], true );
133
+ }
134
+
135
+ return true;
136
  }
137
  }
138
 
191
  }
192
 
193
  function email_heading_completed( $order_id, $no_checking = false ){
 
 
194
 
195
+ if( ( class_exists( 'WC_Email_Customer_Completed_Order' ) || $no_checking ) && isset( $this->woocommerce->mailer()->emails[ 'WC_Email_Customer_Completed_Order' ] ) ){
196
+
197
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->heading = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_completed_order_settings', '[woocommerce_customer_completed_order_settings]heading' );
198
 
199
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->subject = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_completed_order_settings', '[woocommerce_customer_completed_order_settings]subject' );
200
 
201
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->heading_downloadable = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_completed_order_settings', '[woocommerce_customer_completed_order_settings]heading_downloadable' );
202
 
203
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->subject_downloadable = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_completed_order_settings', '[woocommerce_customer_completed_order_settings]subject_downloadable' );
204
 
205
+ $enabled = $this->woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->enabled;
206
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->enabled = false;
207
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->trigger($order_id);
208
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Completed_Order']->enabled = $enabled;
209
  }
210
  }
211
 
212
  function email_heading_processing($order_id){
 
213
 
214
+ if( class_exists( 'WC_Email_Customer_Processing_Order' ) && isset( $this->woocommerce->mailer()->emails[ 'WC_Email_Customer_Processing_Order' ] ) ){
215
 
216
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Processing_Order']->heading = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_processing_order_settings', '[woocommerce_customer_processing_order_settings]heading', $order_id );
217
 
218
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Processing_Order']->subject = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_processing_order_settings', '[woocommerce_customer_processing_order_settings]subject', $order_id );
219
+ $enabled = $this->woocommerce->mailer()->emails['WC_Email_Customer_Processing_Order']->enabled;
220
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Processing_Order']->enabled = false;
221
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Processing_Order']->trigger($order_id);
222
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Processing_Order']->enabled = $enabled;
223
 
224
  }
225
  }
226
 
227
  function email_heading_note($args){
 
228
 
229
+ if( class_exists( 'WC_Email_Customer_Note' ) && isset( $this->woocommerce->mailer()->emails[ 'WC_Email_Customer_Note' ] ) ){
230
 
231
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Note']->heading = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_note_settings', '[woocommerce_customer_note_settings]heading' );
232
 
233
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Note']->subject = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_note_settings', '[woocommerce_customer_note_settings]subject' );
234
 
235
+ $enabled = $this->woocommerce->mailer()->emails['WC_Email_Customer_Note']->enabled;
236
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Note']->enabled = false;
237
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Note']->trigger($args);
238
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Note']->enabled = $enabled;
239
  }
240
  }
241
 
242
  function email_heading_refund( $order_id, $refund_id = null ){
 
 
243
 
244
+ if( class_exists( 'WC_Email_Customer_Refunded_Order' ) && isset( $this->woocommerce->mailer()->emails[ 'WC_Email_Customer_Refunded_Order' ] ) ){
245
+
246
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Refunded_Order']->heading =
247
  $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_refunded_order_settings',
248
  '[woocommerce_customer_refunded_order_settings]heading_partial', $order_id );
249
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Refunded_Order']->subject =
250
  $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_customer_refunded_order_settings',
251
  '[woocommerce_customer_refunded_order_settings]subject_partial', $order_id );
252
 
253
+ $enabled = $this->woocommerce->mailer()->emails['WC_Email_Customer_Refunded_Order']->enabled;
254
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Refunded_Order']->enabled = false;
255
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Refunded_Order']->trigger($order_id, true, $refund_id);
256
+ $this->woocommerce->mailer()->emails['WC_Email_Customer_Refunded_Order']->enabled = $enabled;
257
 
258
  }
259
  }
260
 
261
 
262
  function new_order_admin_email($order_id){
263
+
264
+ if( isset( $this->woocommerce->mailer()->emails[ 'WC_Email_New_Order' ] ) ){
265
+ $recipients = explode(',',$this->woocommerce->mailer()->emails['WC_Email_New_Order']->get_recipient());
266
  foreach($recipients as $recipient){
267
  $user = get_user_by('email',$recipient);
268
  if($user){
273
 
274
  $this->change_email_language( $user_lang );
275
 
276
+ $this->woocommerce->mailer()->emails['WC_Email_New_Order']->heading = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_new_order_settings', '[woocommerce_new_order_settings]heading', $order_id );
277
 
278
+ $this->woocommerce->mailer()->emails['WC_Email_New_Order']->subject = $this->wcml_get_translated_email_string( 'admin_texts_woocommerce_new_order_settings', '[woocommerce_new_order_settings]subject', $order_id );
279
 
280
+ $this->woocommerce->mailer()->emails['WC_Email_New_Order']->recipient = $recipient;
281
 
282
+ $this->woocommerce->mailer()->emails['WC_Email_New_Order']->trigger($order_id);
283
  }
284
+ $this->woocommerce->mailer()->emails['WC_Email_New_Order']->enabled = false;
285
  $this->refresh_email_lang($order_id);
286
  }
287
  }
332
 
333
  }
334
 
335
+ function change_email_language( $lang ) {
336
+
337
+ $this->sitepress->switch_lang( $lang, true );
338
  $this->locale = $this->sitepress->get_locale( $lang );
339
+ unload_textdomain( 'woocommerce' );
340
  unload_textdomain( 'default' );
341
  global $wp_locale;
342
  $wp_locale = new WP_Locale();
343
 
344
+ $this->woocommerce->load_plugin_textdomain();
345
  load_default_textdomain( $this->locale );
346
  }
347
 
inc/class-wcml-endpoints.php CHANGED
@@ -318,24 +318,27 @@ class WCML_Endpoints{
318
  return $translated_slug;
319
  }
320
 
321
- function filter_get_endpoint_url( $url, $endpoint, $value, $permalink ){
322
-
323
- // return translated edit account slugs
324
- remove_filter( 'woocommerce_get_endpoint_url', array( $this, 'filter_get_endpoint_url' ), 10, 4 );
325
- if ( isset( WC()->query->query_vars['edit-address'] ) && WC()->query->query_vars['edit-address'] == $endpoint && in_array( $value, array(
326
- 'shipping',
327
- 'billing'
328
- ) )
329
- ) {
330
- $url = wc_get_endpoint_url( 'edit-address', $this->get_translated_edit_address_slug( $value ) );
331
- } elseif ( $endpoint === get_option( 'woocommerce_myaccount_lost_password_endpoint' ) ) {
332
- $translated_lost_password_endpoint = apply_filters( 'wpml_translate_single_string', $endpoint, 'WooCommerce Endpoints', 'lost-password' );
333
- $url = wc_get_endpoint_url( $translated_lost_password_endpoint );
334
- }
335
- add_filter( 'woocommerce_get_endpoint_url', array( $this, 'filter_get_endpoint_url' ), 10, 4 );
336
 
337
- return $url;
338
- }
 
 
 
339
 
340
  public function update_original_endpoints_strings(){
341
 
318
  return $translated_slug;
319
  }
320
 
321
+ function filter_get_endpoint_url( $url, $endpoint, $value, $permalink ) {
322
+
323
+ // return translated edit account slugs
324
+ remove_filter( 'woocommerce_get_endpoint_url', array( $this, 'filter_get_endpoint_url' ), 10, 4 );
325
+ if ( isset( WC()->query->query_vars['edit-address'] ) && WC()->query->query_vars['edit-address'] == $endpoint && in_array( $value, array(
326
+ 'shipping',
327
+ 'billing'
328
+ ) )
329
+ ) {
330
+ $url = wc_get_endpoint_url( 'edit-address', $this->get_translated_edit_address_slug( $value ) );
331
+ } elseif ( $endpoint === get_option( 'woocommerce_myaccount_lost_password_endpoint' ) ) {
332
+ $translated_lost_password_endpoint = apply_filters( 'wpml_translate_single_string', $endpoint, 'WooCommerce Endpoints', 'lost-password' );
333
+
334
+ $wc_account_page_url = wc_get_page_permalink( 'myaccount' );
335
+ $url = wc_get_endpoint_url( $translated_lost_password_endpoint, '', $wc_account_page_url );
336
 
337
+ }
338
+ add_filter( 'woocommerce_get_endpoint_url', array( $this, 'filter_get_endpoint_url' ), 10, 4 );
339
+
340
+ return $url;
341
+ }
342
 
343
  public function update_original_endpoints_strings(){
344
 
inc/class-wcml-terms.php CHANGED
@@ -6,48 +6,68 @@ class WCML_Terms{
6
  private $NEW_TAXONOMY_TERMS = 1;
7
  private $NEW_TAXONOMY_IGNORED = 2;
8
 
9
- private $woocommerce_wpml;
10
- private $sitepress;
 
 
 
11
  private $wpdb;
12
 
13
- function __construct( &$woocommerce_wpml, &$sitepress, &$wpdb ){
14
- $this->woocommerce_wpml = $woocommerce_wpml;
15
- $this->sitepress = $sitepress;
16
- $this->wpdb = $wpdb;
 
 
 
 
 
 
 
 
17
 
18
- add_action('updated_woocommerce_term_meta',array($this,'sync_term_order'), 100,4);
19
 
20
- add_filter('wp_get_object_terms', array($this->sitepress, 'get_terms_filter'));
21
-
22
- add_action('icl_save_term_translation', array($this,'save_wc_term_meta'), 100,4);
23
-
24
- add_action('created_term', array($this, 'translated_terms_status_update'), 10,3);
25
- add_action('edit_term', array($this, 'translated_terms_status_update'), 10,3);
26
- add_action('wp_ajax_wcml_update_term_translated_warnings', array( $this, 'wcml_update_term_translated_warnings'));
27
 
28
- add_action('created_term', array( $this, 'set_flag_for_variation_on_attribute_update'), 10, 3);
29
 
30
- add_filter('wpml_taxonomy_translation_bottom', array( $this, 'sync_taxonomy_translations'), 10, 3 );
31
 
32
- add_action('wp_ajax_wcml_sync_product_variations', array( $this, 'wcml_sync_product_variations'));
33
- add_action('wp_ajax_wcml_tt_sync_taxonomies_in_content', array( $this, 'wcml_sync_taxonomies_in_content'));
34
- add_action('wp_ajax_wcml_tt_sync_taxonomies_in_content_preview', array( $this, 'wcml_sync_taxonomies_in_content_preview'));
35
-
36
- if(is_admin()){
37
- add_action('admin_menu', array($this, 'admin_menu_setup'));
38
- }
39
-
40
- add_action('delete_term',array($this, 'wcml_delete_term'),10,4);
41
- add_filter('get_the_terms',array($this,'shipping_terms'),10,3);
42
- //filter coupons terms in admin
43
- add_filter('get_terms',array($this,'filter_coupons_terms'),10,3);
44
- add_filter('get_terms',array($this,'filter_shipping_classes_terms'),10,3);
45
 
46
- add_filter( 'woocommerce_get_product_terms', array( $this, 'get_product_terms_filter' ), 10, 4 );
47
- add_action( 'created_term_translation', array( $this, 'set_flag_to_sync'), 10, 3 );
48
 
49
- add_action( 'updated_term_meta', array( $this, 'update_product_count_term'), 10, 4 );
50
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
 
52
  function admin_menu_setup(){
53
  global $pagenow;
@@ -537,6 +557,7 @@ class WCML_Terms{
537
  global $wp_post_types, $wp_taxonomies;
538
 
539
  $default_language = $this->sitepress->get_default_language();
 
540
 
541
  $posts = $this->wpdb->get_results($this->wpdb->prepare( "SELECT * FROM {$this->wpdb->posts} AS p LEFT JOIN {$this->wpdb->prefix}icl_translations AS tr ON tr.element_id = p.ID WHERE p.post_status = 'publish' AND p.post_type = %s AND tr.source_language_code is NULL", $object_type ) );
542
 
@@ -574,11 +595,11 @@ class WCML_Terms{
574
  $updated_terms = array();
575
  foreach($current_terms as $cterm){
576
  if($cterm->term_id != $term->term_id){
577
- $updated_terms[] = $taxonomy != 'product_type' ? $term->term_id : $term->name;
578
  }
579
  if(!$preview){
580
 
581
- if( $taxonomy != 'product_type' && !is_taxonomy_hierarchical($taxonomy)){
582
  $updated_terms = array_unique( array_map( 'intval', $updated_terms ) );
583
  }
584
 
@@ -615,7 +636,7 @@ class WCML_Terms{
615
 
616
  if(!$preview){
617
 
618
- if( $taxonomy != 'product_type' && !is_taxonomy_hierarchical($taxonomy)){
619
  $terms_array = array_unique( array_map( 'intval', $terms_array ) );
620
  }
621
 
@@ -918,11 +939,16 @@ class WCML_Terms{
918
 
919
  $no_tax_to_trnls = false;
920
  foreach ( $taxonomies as $taxonomy ){
921
- if ( $taxonomy == 'product_type' || $this->get_untranslated_terms_number( $taxonomy ) == 0 ) {
922
- continue;
923
- } else {
924
- $no_tax_to_trnls = true;
925
- }
 
 
 
 
 
926
  }
927
 
928
  return $no_tax_to_trnls;
@@ -987,4 +1013,12 @@ class WCML_Terms{
987
  add_action( 'updated_term_meta', array( $this, 'update_product_count_term'), 10, 4 );
988
  }
989
 
 
 
 
 
 
 
 
 
990
  }
6
  private $NEW_TAXONOMY_TERMS = 1;
7
  private $NEW_TAXONOMY_IGNORED = 2;
8
 
9
+ /** @var woocommerce_wpml */
10
+ private $woocommerce_wpml;
11
+ /** @var SitePress */
12
+ private $sitepress;
13
+ /** @var wpdb */
14
  private $wpdb;
15
 
16
+ /**
17
+ * WCML_Terms constructor.
18
+ *
19
+ * @param woocommerce_wpml $woocommerce_wpml
20
+ * @param SitePress $sitepress
21
+ * @param wpdb $wpdb
22
+ */
23
+ function __construct( woocommerce_wpml $woocommerce_wpml, SitePress $sitepress, wpdb $wpdb ){
24
+ $this->woocommerce_wpml = $woocommerce_wpml;
25
+ $this->sitepress = $sitepress;
26
+ $this->wpdb = $wpdb;
27
+ }
28
 
29
+ public function add_hooks() {
30
 
31
+ add_action( 'updated_woocommerce_term_meta', array( $this, 'sync_term_order' ), 100, 4 );
 
 
 
 
 
 
32
 
33
+ add_filter( 'wp_get_object_terms', array( $this->sitepress, 'get_terms_filter' ) );
34
 
35
+ add_action( 'icl_save_term_translation', array( $this, 'save_wc_term_meta' ), 100, 4 );
36
 
37
+ add_action( 'created_term', array( $this, 'translated_terms_status_update' ), 10, 3 );
38
+ add_action( 'edit_term', array( $this, 'translated_terms_status_update' ), 10, 3 );
39
+ add_action( 'wp_ajax_wcml_update_term_translated_warnings', array(
40
+ $this,
41
+ 'wcml_update_term_translated_warnings'
42
+ ) );
 
 
 
 
 
 
 
43
 
44
+ add_action( 'created_term', array( $this, 'set_flag_for_variation_on_attribute_update' ), 10, 3 );
 
45
 
46
+ add_filter( 'wpml_taxonomy_translation_bottom', array( $this, 'sync_taxonomy_translations' ), 10, 3 );
47
+
48
+ add_action( 'wp_ajax_wcml_sync_product_variations', array( $this, 'wcml_sync_product_variations' ) );
49
+ add_action( 'wp_ajax_wcml_tt_sync_taxonomies_in_content', array( $this, 'wcml_sync_taxonomies_in_content' ) );
50
+ add_action( 'wp_ajax_wcml_tt_sync_taxonomies_in_content_preview', array(
51
+ $this,
52
+ 'wcml_sync_taxonomies_in_content_preview'
53
+ ) );
54
+
55
+ if ( is_admin() ) {
56
+ add_action( 'admin_menu', array( $this, 'admin_menu_setup' ) );
57
+ }
58
+
59
+ add_action( 'delete_term', array( $this, 'wcml_delete_term' ), 10, 4 );
60
+ add_filter( 'get_the_terms', array( $this, 'shipping_terms' ), 10, 3 );
61
+ //filter coupons terms in admin
62
+ add_filter( 'get_terms', array( $this, 'filter_coupons_terms' ), 10, 3 );
63
+ add_filter( 'get_terms', array( $this, 'filter_shipping_classes_terms' ), 10, 3 );
64
+
65
+ add_filter( 'woocommerce_get_product_terms', array( $this, 'get_product_terms_filter' ), 10, 4 );
66
+ add_action( 'created_term_translation', array( $this, 'set_flag_to_sync' ), 10, 3 );
67
+
68
+ add_action( 'updated_term_meta', array( $this, 'update_product_count_term' ), 10, 4 );
69
+
70
+ }
71
 
72
  function admin_menu_setup(){
73
  global $pagenow;
557
  global $wp_post_types, $wp_taxonomies;
558
 
559
  $default_language = $this->sitepress->get_default_language();
560
+ $is_taxonomy_translatable = $this->is_translatable_wc_taxonomy( $taxonomy );
561
 
562
  $posts = $this->wpdb->get_results($this->wpdb->prepare( "SELECT * FROM {$this->wpdb->posts} AS p LEFT JOIN {$this->wpdb->prefix}icl_translations AS tr ON tr.element_id = p.ID WHERE p.post_status = 'publish' AND p.post_type = %s AND tr.source_language_code is NULL", $object_type ) );
563
 
595
  $updated_terms = array();
596
  foreach($current_terms as $cterm){
597
  if($cterm->term_id != $term->term_id){
598
+ $updated_terms[] = $is_taxonomy_translatable ? $term->term_id : $term->name;
599
  }
600
  if(!$preview){
601
 
602
+ if( $is_taxonomy_translatable && !is_taxonomy_hierarchical($taxonomy)){
603
  $updated_terms = array_unique( array_map( 'intval', $updated_terms ) );
604
  }
605
 
636
 
637
  if(!$preview){
638
 
639
+ if( $is_taxonomy_translatable && !is_taxonomy_hierarchical($taxonomy)){
640
  $terms_array = array_unique( array_map( 'intval', $terms_array ) );
641
  }
642
 
939
 
940
  $no_tax_to_trnls = false;
941
  foreach ( $taxonomies as $taxonomy ){
942
+
943
+ $is_fully_translated = 0 === $this->get_untranslated_terms_number( $taxonomy );
944
+ if (
945
+ ! $this->is_translatable_wc_taxonomy( $taxonomy ) ||
946
+ $is_fully_translated
947
+ ) {
948
+ continue;
949
+ } else {
950
+ $no_tax_to_trnls = true;
951
+ }
952
  }
953
 
954
  return $no_tax_to_trnls;
1013
  add_action( 'updated_term_meta', array( $this, 'update_product_count_term'), 10, 4 );
1014
  }
1015
 
1016
+ public function is_translatable_wc_taxonomy( $taxonomy ) {
1017
+ if ( in_array( $taxonomy, array( 'product_type', 'product_visibility' ), true ) ) {
1018
+ return false;
1019
+ }
1020
+
1021
+ return true;
1022
+ }
1023
+
1024
  }
inc/class-wcml-upgrade.php CHANGED
@@ -19,7 +19,8 @@ class WCML_Upgrade{
19
  '3.9.1',
20
  '4.0',
21
  '4.1.0',
22
- '4.2.0'
 
23
  );
24
 
25
  function __construct(){
@@ -42,10 +43,10 @@ class WCML_Upgrade{
42
  $wcml_settings['notifications'][$n] =
43
  array(
44
  'show' => 1,
45
- 'text' => __('Looks like you are upgrading from a previous version of WooCommerce Multilingual. Would you like to automatically create translated variations and images?', 'wcml').
46
  '<br /><strong>' .
47
- ' <a href="' . admin_url('admin.php?page=wpml-wcml&tab=troubleshooting') . '">' . __('Yes, go to the troubleshooting page', 'wcml') . '</a> |' .
48
- ' <a href="#" onclick="jQuery.ajax({type:\'POST\',url: ajaxurl,data:\'action=wcml_hide_notice&notice='.$n.'\',success:function(){jQuery(\'#' . $n . '\').fadeOut()}});return false;">' . __('No - dismiss', 'wcml') . '</a>' .
49
  '</strong>'
50
  );
51
  update_option('_wcml_settings', $wcml_settings);
@@ -601,7 +602,19 @@ class WCML_Upgrade{
601
  $wcml_settings[ 'dismiss_cart_warning' ] = 0;
602
 
603
  update_option( '_wcml_settings', $wcml_settings );
604
-
605
  }
606
-
 
 
 
 
 
 
 
 
 
 
 
 
 
607
  }
19
  '3.9.1',
20
  '4.0',
21
  '4.1.0',
22
+ '4.2.0',
23
+ '4.2.2'
24
  );
25
 
26
  function __construct(){
43
  $wcml_settings['notifications'][$n] =
44
  array(
45
  'show' => 1,
46
+ 'text' => __( 'Looks like you are upgrading from a previous version of WooCommerce Multilingual. Would you like to automatically create translated variations and images?', 'woocommerce-multilingual' ).
47
  '<br /><strong>' .
48
+ ' <a href="' . admin_url('admin.php?page=wpml-wcml&tab=troubleshooting') . '">' . __( 'Yes, go to the troubleshooting page', 'woocommerce-multilingual' ) . '</a> |' .
49
+ ' <a href="#" onclick="jQuery.ajax({type:\'POST\',url: ajaxurl,data:\'action=wcml_hide_notice&notice='.$n.'\',success:function(){jQuery(\'#' . $n . '\').fadeOut()}});return false;">' . __( 'No - dismiss', 'woocommerce-multilingual' ) . '</a>' .
50
  '</strong>'
51
  );
52
  update_option('_wcml_settings', $wcml_settings);
602
  $wcml_settings[ 'dismiss_cart_warning' ] = 0;
603
 
604
  update_option( '_wcml_settings', $wcml_settings );
 
605
  }
606
+
607
+ private function upgrade_4_2_2(){
608
+
609
+ // #wcml-2128
610
+ $user = new WP_User( 'admin' );
611
+ if( $user->exists() && ! is_super_admin( $user->ID ) ) {
612
+ $user->remove_cap( 'wpml_manage_woocommerce_multilingual' );
613
+ if( ! in_array( 'shop_manager', $user->roles, true ) ){
614
+ $user->remove_cap( 'wpml_operate_woocommerce_multilingual' );
615
+ }
616
+ }
617
+
618
+ }
619
+
620
  }
inc/class-wcml-url-translation.php CHANGED
@@ -2,13 +2,32 @@
2
 
3
  class WCML_Url_Translation {
4
 
 
 
 
 
 
 
 
5
  public $default_product_base;
6
  public $default_product_category_base;
7
  public $default_product_category_gettext_base;
8
  public $default_product_tag_base;
9
  public $default_product_tag_gettext_base;
10
 
11
- function __construct() {
 
 
 
 
 
 
 
 
 
 
 
 
12
  $this->default_product_base = 'product';
13
  $this->default_product_category_base = 'product-category';
14
  $this->default_product_tag_base = 'product-tag';
@@ -17,7 +36,6 @@ class WCML_Url_Translation {
17
  }
18
 
19
  function set_up() {
20
- global $woocommerce_wpml;
21
 
22
  $this->wc_permalinks = get_option( 'woocommerce_permalinks' );
23
 
@@ -48,7 +66,9 @@ class WCML_Url_Translation {
48
  add_filter( 'query_vars', array( $this, 'translate_query_var_for_product' ) );
49
  add_filter( 'wp_redirect', array( $this, 'encode_shop_slug' ), 10, 2 );
50
 
51
- if ( empty( $woocommerce_wpml->settings['url_translation_set_up'] ) ) {
 
 
52
 
53
  $this->clean_up_product_and_taxonomy_bases();
54
 
@@ -57,24 +77,23 @@ class WCML_Url_Translation {
57
 
58
  $this->register_product_and_taxonomy_bases();
59
 
60
- $woocommerce_wpml->settings['url_translation_set_up'] = 1;
61
- $woocommerce_wpml->update_settings();
62
  }
63
 
64
  }
65
 
66
  function clean_up_product_and_taxonomy_bases() {
67
- global $wpdb;
68
 
69
  $base = $this->get_woocommerce_product_base();
70
 
71
  //delete other old product bases
72
- $wpdb->query( "DELETE FROM {$wpdb->prefix}icl_strings WHERE context = 'WordPress' AND value != '" . trim( $base, '/' ) . "' AND name LIKE 'URL slug:%' " );
73
 
74
  //update name for current base
75
 
76
- $wpdb->update(
77
- $wpdb->prefix . 'icl_strings',
78
  array(
79
  'context' => 'WordPress',
80
  'name' => 'URL slug: product'
@@ -106,7 +125,7 @@ class WCML_Url_Translation {
106
  }
107
 
108
  if ( $taxonomy ) {
109
- $wpdb->query( "DELETE FROM {$wpdb->prefix}icl_strings WHERE context LIKE '" . sprintf( 'URL %s slugs - ', $taxonomy ) . "%'" );
110
  }
111
 
112
  }
@@ -165,12 +184,11 @@ class WCML_Url_Translation {
165
  } else {
166
 
167
  // force_product_slug_translation_on
168
- global $sitepress;
169
- $iclsettings = $sitepress->get_settings();
170
  if ( empty( $iclsettings['posts_slug_translation']['on'] ) || empty( $iclsettings['posts_slug_translation']['types']['product'] ) ) {
171
  $iclsettings['posts_slug_translation']['on'] = 1;
172
  $iclsettings['posts_slug_translation']['types']['product'] = 1;
173
- $sitepress->save_settings( $iclsettings );
174
  }
175
 
176
  $string = icl_get_string_id( $slug, $this->url_strings_context(), $this->url_string_name( 'product' ) );
@@ -195,7 +213,6 @@ class WCML_Url_Translation {
195
  }
196
 
197
  function register_product_and_taxonomy_bases( $value = false, $old_value = false ) {
198
- global $woocommerce_wpml;
199
 
200
  if ( empty( $value ) ) {
201
  $permalink_options = $this->wc_permalinks;
@@ -207,14 +224,14 @@ class WCML_Url_Translation {
207
  $product_base = ! empty( $permalink_options['product_base'] ) ? trim( $permalink_options['product_base'], '/' ) : $this->default_product_base;
208
  $name = $this->url_string_name( 'product' );
209
 
210
- $string_language = $woocommerce_wpml->strings->get_string_language( $product_base, $this->url_strings_context(), $name );
211
  if ( is_null( $string_language ) ) {
212
  $string_language = '';
213
  }
214
  do_action( 'wpml_register_single_string', $this->url_strings_context(), $name, $product_base, false, $string_language );
215
 
216
  if ( isset( $_POST['product_base_language'] ) ) {
217
- $woocommerce_wpml->strings->set_string_language( $product_base, $this->url_strings_context(), $name, $_POST['product_base_language'] );
218
  }
219
 
220
  if ( $product_base == $this->default_product_base ) {
@@ -225,14 +242,14 @@ class WCML_Url_Translation {
225
  $category_base = ! empty( $permalink_options['category_base'] ) ? $permalink_options['category_base'] : $this->default_product_category_base;
226
  $name = $this->url_string_name( 'product_cat' );
227
 
228
- $string_language = $woocommerce_wpml->strings->get_string_language( $category_base, $this->url_strings_context(), $name );
229
  if ( is_null( $string_language ) ) {
230
  $string_language = '';
231
  }
232
  do_action( 'wpml_register_single_string', $this->url_strings_context(), $name, $category_base, false, $string_language );
233
 
234
  if ( isset( $_POST['category_base_language'] ) ) {
235
- $woocommerce_wpml->strings->set_string_language( $category_base, $this->url_strings_context(), $name, $_POST['category_base_language'] );
236
  }
237
 
238
  if ( $category_base == $this->default_product_category_base ) {
@@ -243,14 +260,14 @@ class WCML_Url_Translation {
243
  $tag_base = ! empty( $permalink_options['tag_base'] ) ? $permalink_options['tag_base'] : $this->default_product_tag_base;
244
  $name = $this->url_string_name( 'product_tag' );
245
 
246
- $string_language = $woocommerce_wpml->strings->get_string_language( $tag_base, $this->url_strings_context(), $name );
247
  if ( is_null( $string_language ) ) {
248
  $string_language = '';
249
  }
250
  do_action( 'wpml_register_single_string', $this->url_strings_context(), $name, $tag_base, false, $string_language );
251
 
252
  if ( isset( $_POST['tag_base_language'] ) ) {
253
- $woocommerce_wpml->strings->set_string_language( $tag_base, $this->url_strings_context(), $name, $_POST['tag_base_language'] );
254
  }
255
 
256
  if ( $tag_base == $this->default_product_tag_base ) {
@@ -261,14 +278,14 @@ class WCML_Url_Translation {
261
  if ( isset( $permalink_options['attribute_base'] ) && $permalink_options['attribute_base'] ) {
262
  $attr_base = trim( $permalink_options['attribute_base'], '/' );
263
 
264
- $string_language = $woocommerce_wpml->strings->get_string_language( $attr_base, $this->url_strings_context(), $name );
265
  if ( is_null( $string_language ) ) {
266
  $string_language = '';
267
  }
268
  do_action( 'wpml_register_single_string', $this->url_strings_context(), $this->url_string_name( 'attribute' ), $attr_base, false, $string_language );
269
 
270
  if ( isset( $_POST['attribute_base_language'] ) ) {
271
- $woocommerce_wpml->strings->set_string_language( $attr_base, $this->url_strings_context(), $this->url_string_name( 'attribute' ), $_POST['attribute_base_language'] );
272
  }
273
  }
274
 
@@ -301,20 +318,19 @@ class WCML_Url_Translation {
301
  }
302
 
303
  function add_default_slug_translations( $slug, $name ) {
304
- global $woocommerce_wpml, $sitepress, $wpdb;
305
 
306
  $string_id = icl_get_string_id( $slug, $this->url_strings_context(), $name );
307
- $string_language = $woocommerce_wpml->strings->get_string_language( $slug, $this->url_strings_context(), $name );
308
 
309
  // will use a filter in the future wpmlst-529
310
- $string_object = new WPML_ST_String( $string_id, $wpdb );
311
  $string_translation_statuses = $string_object->get_translation_statuses();
312
 
313
  foreach ( $string_translation_statuses as $s ) {
314
  $string_translations[ $s->language ] = $s->status;
315
  }
316
 
317
- $languages = $sitepress->get_active_languages();
318
 
319
  foreach ( $languages as $language => $language_info ) {
320
 
@@ -323,7 +339,7 @@ class WCML_Url_Translation {
323
  // check if there's an existing translation
324
  if ( ! isset( $string_translations[ $language ] ) ) {
325
 
326
- $slug_translation = $woocommerce_wpml->strings->get_translation_from_woocommerce_mo_file( $slug, $language, false );
327
 
328
  if ( $slug_translation ) {
329
  // add string translation
@@ -338,12 +354,11 @@ class WCML_Url_Translation {
338
  }
339
 
340
  function force_bases_in_strings_languages( $value ) {
341
- global $sitepress, $woocommerce_wpml;
342
 
343
- if ( $value && $sitepress->get_current_language() != 'en' ) {
344
 
345
  remove_filter( 'gettext_with_context', array(
346
- $woocommerce_wpml->strings,
347
  'category_base_in_strings_language'
348
  ), 99, 3 );
349
  $taxonomies = array(
@@ -369,7 +384,7 @@ class WCML_Url_Translation {
369
  ),
370
  );
371
  add_filter( 'gettext_with_context', array(
372
- $woocommerce_wpml->strings,
373
  'category_base_in_strings_language'
374
  ), 99, 3 );
375
  foreach ( $taxonomies as $taxonomy => $taxonomy_details ) {
@@ -394,127 +409,190 @@ class WCML_Url_Translation {
394
 
395
  }
396
 
 
 
 
 
 
397
  function translate_bases_in_rewrite_rules( $value ) {
398
- global $sitepress, $woocommerce_wpml;
399
 
400
  if ( ! empty( $value ) ) {
 
 
 
 
401
 
402
- $taxonomies = array( 'product_cat', 'product_tag' );
 
403
 
404
- foreach ( $taxonomies as $taxonomy ) {
405
- $slug_details = $this->get_translated_tax_slug( $taxonomy );
 
 
 
 
 
406
 
407
- $string_language = $woocommerce_wpml->strings->get_string_language( $slug_details['slug'], $this->url_strings_context(), $this->url_string_name( $taxonomy ) );
408
- if ( $sitepress->get_current_language() == $string_language ) {
409
- continue;
410
- }
411
 
412
- if ( $slug_details ) {
 
 
 
413
 
414
- $slug_match = addslashes( ltrim( $slug_details['slug'], '/' ) );
415
- $slug_translation_match = ltrim( $slug_details['translated_slug'], '/' );
416
 
417
- $buff_value = array();
 
418
 
419
- foreach ( (array) $value as $k => $v ) {
420
 
421
- if ( $slug_details['slug'] != $slug_details['translated_slug'] && preg_match( '#^[^/]*/?' . $slug_match . '/#', $k ) ) {
422
- $k = preg_replace( '#^([^/]*)(/?)' . $slug_match . '/#', '$1$2' . $slug_translation_match . '/', $k );
423
- }
424
 
425
- $buff_value[ $k ] = $v;
 
426
  }
427
- $value = $buff_value;
428
- unset( $buff_value );
429
- }
430
 
 
 
 
 
431
  }
432
 
433
- // handle attributes
434
- $wc_taxonomies = wc_get_attribute_taxonomies();
435
- $wc_taxonomies_wc_format = array();
436
- foreach ( $wc_taxonomies as $k => $v ) {
437
- $wc_taxonomies_wc_format[] = 'pa_' . $v->attribute_name;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
438
  }
439
 
440
- foreach ( $wc_taxonomies_wc_format as $taxonomy ) {
441
- $taxonomy_obj = get_taxonomy( $taxonomy );
442
 
443
- if ( isset( $taxonomy_obj->rewrite['slug'] ) ) {
444
- $exp = explode( '/', trim( $taxonomy_obj->rewrite['slug'], '/' ) );
445
- $slug = join( '/', array_slice( $exp, 0, count( $exp ) - 1 ) );
446
 
447
- $attribute_slug = preg_replace( "#^$slug/#", '', $taxonomy_obj->rewrite['slug'] );
448
- }
449
 
450
- if ( isset( $slug ) ) {
451
- $string_language = $woocommerce_wpml->strings->get_string_language( $slug, $this->url_strings_context(), $this->url_string_name( 'attribute' ) );
452
 
453
- if ( $sitepress->get_current_language() != $string_language ) {
454
 
455
- $slug_translation = apply_filters( 'wpml_translate_single_string', $slug, $this->url_strings_context(), $this->url_string_name( 'attribute' ) );
456
- if ( $slug_translation ) {
457
 
458
- $attribute_slug_translation = apply_filters( 'wpml_translate_single_string', $attribute_slug, $this->url_strings_context(), $this->url_string_name( 'attribute_slug', $attribute_slug ) );
 
 
459
 
460
- $slug_match = addslashes( ltrim( $slug, '/' ) );
461
- $slug_translation_match = ltrim( $slug_translation, '/' );
462
 
463
- $buff_value = array();
464
- foreach ( (array) $value as $k => $v ) {
465
- if ( $slug != $slug_translation && preg_match( '#^' . $slug_match . '/(.*)#', $k ) ) {
466
- $k = preg_replace( '#^' . $slug_match . '/(' . $attribute_slug . ')/(.*)#', $slug_translation_match . '/' . $attribute_slug_translation . '/$2', $k );
467
- }
468
- $buff_value[ $k ] = $v;
469
- }
470
 
471
- $value = $buff_value;
472
- unset( $buff_value );
 
473
 
474
- }
475
 
476
  }
477
- }
478
 
 
479
  }
480
 
 
481
 
482
- //filter shop page rewrite slug
483
- $current_shop_id = wc_get_page_id( 'shop' );
484
- $default_shop_id = apply_filters( 'translate_object_id', $current_shop_id, 'page', true, $sitepress->get_default_language() );
485
 
486
- if ( is_null( get_post( $current_shop_id ) ) || is_null( get_post( $default_shop_id ) ) ) {
487
- return $value;
488
- }
 
 
 
 
 
 
 
 
489
 
490
- $current_slug = get_post( $current_shop_id )->post_name;
491
- $default_slug = get_post( $default_shop_id )->post_name;
 
492
 
493
- if ( $current_slug != $default_slug ) {
494
- $buff_value = array();
495
- foreach ( (array) $value as $k => $v ) {
496
 
497
- if ( preg_match( '#^' . $default_slug . '/\?\$$#', $k ) ||
498
- preg_match( '#^' . $default_slug . '/\(?feed#', $k ) ||
499
- preg_match( '#^' . $default_slug . '/page#', $k )
500
- ) {
501
 
502
- $k = preg_replace( '#^' . $default_slug . '/#', $current_slug . '/', $k );
503
- }
 
 
504
 
505
- $buff_value[ $k ] = $v;
506
  }
507
 
508
- $value = $buff_value;
509
- unset( $buff_value );
510
  }
 
 
 
511
  }
512
 
513
  return $value;
514
  }
515
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
516
  function translate_taxonomy_base( $termlink, $term, $taxonomy ) {
517
- global $wp_rewrite, $wpml_term_translations, $sitepress;
518
  static $no_recursion_flag;
519
 
520
  // handles product categories, product tags and attributes
@@ -536,7 +614,7 @@ class WCML_Url_Translation {
536
  if ( ! is_null( $wpml_term_translations ) ) {
537
  $term_language = $term->term_id ? $wpml_term_translations->get_element_lang_code( $term->term_taxonomy_id ) : false;
538
  } else {
539
- $term_language = $term->term_id ? $sitepress->get_language_for_element( $term->term_taxonomy_id, 'tax_' . $taxonomy ) : false;
540
  }
541
 
542
  if ( $term_language ) {
@@ -546,37 +624,43 @@ class WCML_Url_Translation {
546
  $base = $slug_details['slug'];
547
  $base_translated = $slug_details['translated_slug'];
548
 
549
- if ( ! empty( $base_translated ) && $base_translated != $base && isset( $wp_rewrite->extra_permastructs[ $taxonomy ] ) ) {
550
 
551
  $buff = $wp_rewrite->extra_permastructs[ $taxonomy ]['struct'];
552
 
553
- // translate the attribute base
554
- $wp_rewrite->extra_permastructs[ $taxonomy ]['struct'] = preg_replace( '#^' . $base . '/(.*)#', $base_translated . '/$1', $wp_rewrite->extra_permastructs[ $taxonomy ]['struct'] );
 
 
555
 
556
  // translate the attribute slug
557
- if ( isset( $this->wc_permalinks['attribute_base'] ) && $this->wc_permalinks['attribute_base'] === $base ) {
558
-
559
- $attribute_slug = preg_replace( '#^' . $base . '/([^/]+)/.+$#', '$1', $wp_rewrite->extra_permastructs[ $taxonomy ]['struct'] );
560
- $attribute_slug_default = preg_replace( '#^pa_#', '', $taxonomy );
561
- $attribute_slug_translation = apply_filters(
562
- 'wpml_translate_single_string',
563
- $attribute_slug,
564
- $this->url_strings_context(),
565
- $this->url_string_name( 'attribute_slug', $attribute_slug_default ),
566
- $term_language
567
- );
568
-
569
- if ( $attribute_slug_translation != $attribute_slug ) {
570
  $wp_rewrite->extra_permastructs[ $taxonomy ]['struct'] = preg_replace(
571
  '#^' . $base_translated . '/([^/]+)/(.+)$#',
572
  $base_translated . '/' . $attribute_slug_translation . '/$2',
573
  $wp_rewrite->extra_permastructs[ $taxonomy ]['struct']
574
  );
 
 
 
 
 
 
575
  }
576
-
577
  }
578
 
579
-
580
  $no_recursion_flag = true;
581
  $termlink = get_term_link( $term, $taxonomy );
582
 
@@ -597,7 +681,6 @@ class WCML_Url_Translation {
597
  }
598
 
599
  function get_translated_tax_slug( $taxonomy, $language = false ) {
600
- global $sitepress, $woocommerce_wpml;
601
 
602
  switch ( $taxonomy ) {
603
  case 'product_tag':
@@ -608,7 +691,7 @@ class WCML_Url_Translation {
608
  $slug = 'product-tag';
609
  }
610
 
611
- $string_language = $woocommerce_wpml->strings->get_string_language( $slug, $this->url_strings_context(), $this->url_string_name( $taxonomy ) );
612
 
613
  break;
614
 
@@ -620,14 +703,14 @@ class WCML_Url_Translation {
620
  $slug = 'product-category';
621
  }
622
 
623
- $string_language = $woocommerce_wpml->strings->get_string_language( $slug, $this->url_strings_context(), $this->url_string_name( $taxonomy ) );
624
 
625
  break;
626
 
627
  default:
628
  $slug = trim( $this->wc_permalinks['attribute_base'], '/' );
629
 
630
- $string_language = $woocommerce_wpml->strings->get_string_language( $slug, $this->url_strings_context(), $this->url_string_name( 'attribute' ) );
631
 
632
  $taxonomy = 'attribute';
633
 
@@ -635,7 +718,7 @@ class WCML_Url_Translation {
635
  }
636
 
637
  if ( ! $language ) {
638
- $language = $sitepress->get_current_language();
639
  }
640
 
641
  if ( $slug && $language != 'all' && $language != $string_language ) {
@@ -656,7 +739,6 @@ class WCML_Url_Translation {
656
  }
657
 
658
  function get_base_translation( $base, $language ) {
659
- global $woocommerce_wpml;
660
 
661
  // case of attribute slugs
662
  if ( strpos( $base, 'attribute_slug-' ) === 0 ) {
@@ -719,14 +801,13 @@ class WCML_Url_Translation {
719
  }
720
 
721
  function get_source_slug_language( $base ) {
722
- global $sitepress, $woocommerce_wpml;
723
 
724
  if ( $base == 'shop' ) {
725
- $source_language = $sitepress->get_language_for_element( get_option( 'woocommerce_shop_page_id' ), 'post_page' );
726
  } elseif ( in_array( $base, array( 'product', 'product_cat', 'product_tag', 'attribute' ) ) ) {
727
- $source_language = $woocommerce_wpml->strings->get_string_language( $base, $this->url_strings_context(), $this->url_string_name( $base ) );
728
  } else {
729
- $source_language = $woocommerce_wpml->strings->get_string_language( $base, 'WooCommerce Endpoints', $base );
730
  }
731
 
732
  return $source_language;
@@ -739,8 +820,6 @@ class WCML_Url_Translation {
739
  die( 'Invalid nonce' );
740
  }
741
 
742
- global $wpdb, $woocommerce_wpml, $sitepress;
743
-
744
  $original_base = $_POST['base'];
745
  $original_base_value = $_POST['base_value'];
746
  $base_translation = $_POST['base_translation'];
@@ -754,7 +833,7 @@ class WCML_Url_Translation {
754
 
755
  $trnsl_shop_obj = get_post( $translated_shop_id );
756
  $new_slug = wp_unique_post_slug( sanitize_title( $_POST['base_translation'] ), $translated_shop_id, $trnsl_shop_obj->post_status, $trnsl_shop_obj->post_type, $trnsl_shop_obj->post_parent );
757
- $wpdb->update( $wpdb->posts, array( 'post_name' => $new_slug ), array( 'ID' => $translated_shop_id ) );
758
 
759
  }
760
 
@@ -770,15 +849,15 @@ class WCML_Url_Translation {
770
  if ( ! $string_id && function_exists( 'icl_register_string' ) ) {
771
  $string_id = icl_register_string( 'WooCommerce Endpoints', $original_base, $original_base_value );
772
  }
773
- $woocommerce_wpml->endpoints->add_endpoints();
774
- $woocommerce_wpml->endpoints->flush_rules_for_endpoints_translations();
775
  }
776
 
777
  icl_add_string_translation( $string_id, $language, $base_translation, ICL_STRING_TRANSLATION_COMPLETE );
778
 
779
  }
780
 
781
- $edit_base = new WCML_Store_URLs_Edit_Base_UI( $original_base, $language, $woocommerce_wpml, $sitepress );
782
  $html = $edit_base->get_view();
783
 
784
  echo json_encode( $html );
@@ -808,12 +887,11 @@ class WCML_Url_Translation {
808
  }
809
 
810
  public function translate_query_var_for_product( $public_query_vars ) {
811
- global $woocommerce_wpml, $sitepress;
812
 
813
- $product_permalink = $woocommerce_wpml->strings->product_permalink_slug();
814
- $string_language = $woocommerce_wpml->strings->get_string_language( $product_permalink, $this->url_strings_context(), $this->url_string_name( 'product' ) );
815
 
816
- if ( $sitepress->get_current_language() != $string_language ) {
817
  $translated_slug = $this->get_translated_product_base_by_lang( false, $product_permalink );
818
 
819
  if ( isset( $_GET[ $translated_slug ] ) ) {
@@ -828,16 +906,13 @@ class WCML_Url_Translation {
828
  }
829
 
830
  public function get_translated_product_base_by_lang( $language = false, $product_slug = false ) {
831
- global $woocommerce_wpml;
832
 
833
  if ( ! $language ) {
834
- global $sitepress;
835
- $language = $sitepress->get_current_language();
836
-
837
  }
838
 
839
  if ( ! $product_slug ) {
840
- $product_slug = $woocommerce_wpml->strings->product_permalink_slug();
841
  }
842
 
843
  if ( version_compare( WPML_ST_VERSION, '2.3', '>=' ) ) {
@@ -853,8 +928,7 @@ class WCML_Url_Translation {
853
 
854
  public function encode_shop_slug( $location, $status ) {
855
  if ( get_post_type( get_query_var( 'p' ) ) == 'product' ) {
856
- global $sitepress;
857
- $language = $sitepress->get_language_for_element( get_query_var( 'p' ), 'post_product' );
858
  $base_slug = $this->get_translated_product_base_by_lang( $language );
859
 
860
  $location = str_replace( $base_slug, urlencode( $base_slug ), $location );
@@ -862,4 +936,28 @@ class WCML_Url_Translation {
862
 
863
  return $location;
864
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
865
  }
2
 
3
  class WCML_Url_Translation {
4
 
5
+ /** @var woocommerce_wpml */
6
+ private $woocommerce_wpml;
7
+ /** @var Sitepress */
8
+ private $sitepress;
9
+ /** @var wpdb */
10
+ private $wpdb;
11
+
12
  public $default_product_base;
13
  public $default_product_category_base;
14
  public $default_product_category_gettext_base;
15
  public $default_product_tag_base;
16
  public $default_product_tag_gettext_base;
17
 
18
+ /**
19
+ * WCML_Url_Translation constructor.
20
+ *
21
+ * @param woocommerce_wpml $woocommerce_wpml
22
+ * @param SitePress $sitepress
23
+ * @param wpdb $wpdb
24
+ */
25
+ public function __construct( woocommerce_wpml $woocommerce_wpml, SitePress $sitepress, wpdb $wpdb )
26
+ {
27
+ $this->woocommerce_wpml = $woocommerce_wpml;
28
+ $this->sitepress = $sitepress;
29
+ $this->wpdb = $wpdb;
30
+
31
  $this->default_product_base = 'product';
32
  $this->default_product_category_base = 'product-category';
33
  $this->default_product_tag_base = 'product-tag';
36
  }
37
 
38
  function set_up() {
 
39
 
40
  $this->wc_permalinks = get_option( 'woocommerce_permalinks' );
41
 
66
  add_filter( 'query_vars', array( $this, 'translate_query_var_for_product' ) );
67
  add_filter( 'wp_redirect', array( $this, 'encode_shop_slug' ), 10, 2 );
68
 
69
+ add_filter( 'post_type_link', array( $this, 'translate_product_post_type_link' ), 10, 2 );
70
+
71
+ if ( empty( $this->woocommerce_wpml->settings['url_translation_set_up'] ) ) {
72
 
73
  $this->clean_up_product_and_taxonomy_bases();
74
 
77
 
78
  $this->register_product_and_taxonomy_bases();
79
 
80
+ $this->woocommerce_wpml->settings['url_translation_set_up'] = 1;
81
+ $this->woocommerce_wpml->update_settings();
82
  }
83
 
84
  }
85
 
86
  function clean_up_product_and_taxonomy_bases() {
 
87
 
88
  $base = $this->get_woocommerce_product_base();
89
 
90
  //delete other old product bases
91
+ $this->wpdb->query( "DELETE FROM {$this->wpdb->prefix}icl_strings WHERE context = 'WordPress' AND value != '" . trim( $base, '/' ) . "' AND name LIKE 'URL slug:%' " );
92
 
93
  //update name for current base
94
 
95
+ $this->wpdb->update(
96
+ $this->wpdb->prefix . 'icl_strings',
97
  array(
98
  'context' => 'WordPress',
99
  'name' => 'URL slug: product'
125
  }
126
 
127
  if ( $taxonomy ) {
128
+ $this->wpdb->query( "DELETE FROM {$this->wpdb->prefix}icl_strings WHERE context LIKE '" . sprintf( 'URL %s slugs - ', $taxonomy ) . "%'" );
129
  }
130
 
131
  }
184
  } else {
185
 
186
  // force_product_slug_translation_on
187
+ $iclsettings = $this->sitepress->get_settings();
 
188
  if ( empty( $iclsettings['posts_slug_translation']['on'] ) || empty( $iclsettings['posts_slug_translation']['types']['product'] ) ) {
189
  $iclsettings['posts_slug_translation']['on'] = 1;
190
  $iclsettings['posts_slug_translation']['types']['product'] = 1;
191
+ $this->sitepress->save_settings( $iclsettings );
192
  }
193
 
194
  $string = icl_get_string_id( $slug, $this->url_strings_context(), $this->url_string_name( 'product' ) );
213
  }
214
 
215
  function register_product_and_taxonomy_bases( $value = false, $old_value = false ) {
 
216
 
217
  if ( empty( $value ) ) {
218
  $permalink_options = $this->wc_permalinks;
224
  $product_base = ! empty( $permalink_options['product_base'] ) ? trim( $permalink_options['product_base'], '/' ) : $this->default_product_base;
225
  $name = $this->url_string_name( 'product' );
226
 
227
+ $string_language = $this->woocommerce_wpml->strings->get_string_language( $product_base, $this->url_strings_context(), $name );
228
  if ( is_null( $string_language ) ) {
229
  $string_language = '';
230
  }
231
  do_action( 'wpml_register_single_string', $this->url_strings_context(), $name, $product_base, false, $string_language );
232
 
233
  if ( isset( $_POST['product_base_language'] ) ) {
234
+ $this->woocommerce_wpml->strings->set_string_language( $product_base, $this->url_strings_context(), $name, $_POST['product_base_language'] );
235
  }
236
 
237
  if ( $product_base == $this->default_product_base ) {
242
  $category_base = ! empty( $permalink_options['category_base'] ) ? $permalink_options['category_base'] : $this->default_product_category_base;
243
  $name = $this->url_string_name( 'product_cat' );
244
 
245
+ $string_language = $this->woocommerce_wpml->strings->get_string_language( $category_base, $this->url_strings_context(), $name );
246
  if ( is_null( $string_language ) ) {
247
  $string_language = '';
248
  }
249
  do_action( 'wpml_register_single_string', $this->url_strings_context(), $name, $category_base, false, $string_language );
250
 
251
  if ( isset( $_POST['category_base_language'] ) ) {
252
+ $this->woocommerce_wpml->strings->set_string_language( $category_base, $this->url_strings_context(), $name, $_POST['category_base_language'] );
253
  }
254
 
255
  if ( $category_base == $this->default_product_category_base ) {
260
  $tag_base = ! empty( $permalink_options['tag_base'] ) ? $permalink_options['tag_base'] : $this->default_product_tag_base;
261
  $name = $this->url_string_name( 'product_tag' );
262
 
263
+ $string_language = $this->woocommerce_wpml->strings->get_string_language( $tag_base, $this->url_strings_context(), $name );
264
  if ( is_null( $string_language ) ) {
265
  $string_language = '';
266
  }
267
  do_action( 'wpml_register_single_string', $this->url_strings_context(), $name, $tag_base, false, $string_language );
268
 
269
  if ( isset( $_POST['tag_base_language'] ) ) {
270
+ $this->woocommerce_wpml->strings->set_string_language( $tag_base, $this->url_strings_context(), $name, $_POST['tag_base_language'] );
271
  }
272
 
273
  if ( $tag_base == $this->default_product_tag_base ) {
278
  if ( isset( $permalink_options['attribute_base'] ) && $permalink_options['attribute_base'] ) {
279
  $attr_base = trim( $permalink_options['attribute_base'], '/' );
280
 
281
+ $string_language = $this->woocommerce_wpml->strings->get_string_language( $attr_base, $this->url_strings_context(), $name );
282
  if ( is_null( $string_language ) ) {
283
  $string_language = '';
284
  }
285
  do_action( 'wpml_register_single_string', $this->url_strings_context(), $this->url_string_name( 'attribute' ), $attr_base, false, $string_language );
286
 
287
  if ( isset( $_POST['attribute_base_language'] ) ) {
288
+ $this->woocommerce_wpml->strings->set_string_language( $attr_base, $this->url_strings_context(), $this->url_string_name( 'attribute' ), $_POST['attribute_base_language'] );
289
  }
290
  }
291
 
318
  }
319
 
320
  function add_default_slug_translations( $slug, $name ) {
 
321
 
322
  $string_id = icl_get_string_id( $slug, $this->url_strings_context(), $name );
323
+ $string_language = $this->woocommerce_wpml->strings->get_string_language( $slug, $this->url_strings_context(), $name );
324
 
325
  // will use a filter in the future wpmlst-529
326
+ $string_object = new WPML_ST_String( $string_id, $this->wpdb );
327
  $string_translation_statuses = $string_object->get_translation_statuses();
328
 
329
  foreach ( $string_translation_statuses as $s ) {
330
  $string_translations[ $s->language ] = $s->status;
331
  }
332
 
333
+ $languages = $this->sitepress->get_active_languages();
334
 
335
  foreach ( $languages as $language => $language_info ) {
336
 
339
  // check if there's an existing translation
340
  if ( ! isset( $string_translations[ $language ] ) ) {
341
 
342
+ $slug_translation = $this->woocommerce_wpml->strings->get_translation_from_woocommerce_mo_file( $slug, $language, false );
343
 
344
  if ( $slug_translation ) {
345
  // add string translation
354
  }
355
 
356
  function force_bases_in_strings_languages( $value ) {
 
357
 
358
+ if ( $value && $this->sitepress->get_current_language() != 'en' ) {
359
 
360
  remove_filter( 'gettext_with_context', array(
361
+ $this->woocommerce_wpml->strings,
362
  'category_base_in_strings_language'
363
  ), 99, 3 );
364
  $taxonomies = array(
384
  ),
385
  );
386
  add_filter( 'gettext_with_context', array(
387
+ $this->woocommerce_wpml->strings,
388
  'category_base_in_strings_language'
389
  ), 99, 3 );
390
  foreach ( $taxonomies as $taxonomy => $taxonomy_details ) {
409
 
410
  }
411
 
412
+ /**
413
+ * @param array $value
414
+ *
415
+ * @return array
416
+ */
417
  function translate_bases_in_rewrite_rules( $value ) {
 
418
 
419
  if ( ! empty( $value ) ) {
420
+ $value = $this->translate_wc_default_taxonomies_bases_in_rewrite_rules( $value );
421
+ $value = $this->translate_attributes_bases_in_rewrite_rules( $value );
422
+ $value = $this->translate_shop_page_base_in_rewrite_rules( $value );
423
+ }
424
 
425
+ return $value;
426
+ }
427
 
428
+ /**
429
+ * @param array $value
430
+ *
431
+ * @return array
432
+ */
433
+ public function translate_wc_default_taxonomies_bases_in_rewrite_rules( $value ){
434
+ $taxonomies = array( 'product_cat', 'product_tag' );
435
 
436
+ foreach ( $taxonomies as $taxonomy ) {
437
+ $slug_details = $this->get_translated_tax_slug( $taxonomy );
 
 
438
 
439
+ $string_language = $this->woocommerce_wpml->strings->get_string_language( $slug_details['slug'], $this->url_strings_context(), $this->url_string_name( $taxonomy ) );
440
+ if ( $this->sitepress->get_current_language() == $string_language ) {
441
+ continue;
442
+ }
443
 
444
+ if ( $slug_details ) {
 
445
 
446
+ $slug_match = addslashes( ltrim( $slug_details['slug'], '/' ) );
447
+ $slug_translation_match = ltrim( $slug_details['translated_slug'], '/' );
448
 
449
+ $buff_value = array();
450
 
451
+ foreach ( (array) $value as $k => $v ) {
 
 
452
 
453
+ if ( $slug_details['slug'] != $slug_details['translated_slug'] && preg_match( '#^[^/]*/?' . $slug_match . '/#', $k ) ) {
454
+ $k = preg_replace( '#^([^/]*)(/?)' . $slug_match . '/#', '$1$2' . $slug_translation_match . '/', $k );
455
  }
 
 
 
456
 
457
+ $buff_value[ $k ] = $v;
458
+ }
459
+ $value = $buff_value;
460
+ unset( $buff_value );
461
  }
462
 
463
+ }
464
+
465
+ return $value;
466
+ }
467
+
468
+ /**
469
+ * @param array $value
470
+ *
471
+ * @return array
472
+ */
473
+ public function translate_attributes_bases_in_rewrite_rules( $value ) {
474
+
475
+ // handle attributes
476
+ $wc_taxonomies = wc_get_attribute_taxonomies();
477
+ $wc_taxonomies_wc_format = array();
478
+ foreach ( $wc_taxonomies as $k => $v ) {
479
+ $wc_taxonomies_wc_format[] = 'pa_' . $v->attribute_name;
480
+ }
481
+
482
+ foreach ( $wc_taxonomies_wc_format as $taxonomy ) {
483
+ $taxonomy_obj = get_taxonomy( $taxonomy );
484
+
485
+ if ( isset( $taxonomy_obj->rewrite['slug'] ) ) {
486
+ $exp = explode( '/', trim( $taxonomy_obj->rewrite['slug'], '/' ) );
487
+ $slug = join( '/', array_slice( $exp, 0, count( $exp ) - 1 ) );
488
+
489
+ $attribute_slug = preg_replace( "#^$slug/#", '', $taxonomy_obj->rewrite['slug'] );
490
  }
491
 
492
+ if ( isset( $slug ) ) {
493
+ $string_language = $this->woocommerce_wpml->strings->get_string_language( $slug, $this->url_strings_context(), $this->url_string_name( 'attribute' ) );
494
 
495
+ if ( $this->sitepress->get_current_language() != $string_language ) {
 
 
496
 
497
+ $slug_translation = apply_filters( 'wpml_translate_single_string', $slug, $this->url_strings_context(), $this->url_string_name( 'attribute' ) );
 
498
 
499
+ $attribute_slug_translation = apply_filters( 'wpml_translate_single_string', $attribute_slug, $this->url_strings_context(), $this->url_string_name( 'attribute_slug', $attribute_slug ) );
 
500
 
501
+ if ( $slug && $slug_translation && $slug !== $slug_translation ) {
502
 
503
+ $slug_match = addslashes( ltrim( $slug, '/' ) );
504
+ $slug_translation_match = ltrim( $slug_translation, '/' );
505
 
506
+ $pattern = '#^' . $slug_match . '/(.*)#';
507
+ $replacement_pattern = '#^' . $slug_match . '/(' . $attribute_slug . ')/(.*)#';
508
+ $replacement = $slug_translation_match . '/' . $attribute_slug_translation . '/$2';
509
 
510
+ $value = $this->replace_bases_in_rewrite_rules( $value, $pattern, $replacement_pattern, $replacement );
 
511
 
512
+ } elseif ( $attribute_slug_translation && $attribute_slug !== $attribute_slug_translation ) {
 
 
 
 
 
 
513
 
514
+ $slug_match = addslashes( ltrim( $attribute_slug, '/' ) );
515
+ $pattern = '#' . $slug_match . '/(.*)#';
516
+ $replacement = $attribute_slug_translation . '/$1';
517
 
518
+ $value = $this->replace_bases_in_rewrite_rules( $value, $pattern, $pattern, $replacement );
519
 
520
  }
 
521
 
522
+ }
523
  }
524
 
525
+ }
526
 
527
+ return $value;
 
 
528
 
529
+ }
530
+
531
+ /**
532
+ * @param array $value
533
+ *
534
+ * @return array
535
+ */
536
+ public function translate_shop_page_base_in_rewrite_rules( $value ){
537
+ //filter shop page rewrite slug
538
+ $current_shop_id = wc_get_page_id( 'shop' );
539
+ $default_shop_id = apply_filters( 'translate_object_id', $current_shop_id, 'page', true, $this->sitepress->get_default_language() );
540
 
541
+ if ( is_null( get_post( $current_shop_id ) ) || is_null( get_post( $default_shop_id ) ) ) {
542
+ return $value;
543
+ }
544
 
545
+ $current_slug = get_post( $current_shop_id )->post_name;
546
+ $default_slug = get_post( $default_shop_id )->post_name;
 
547
 
548
+ if ( $current_slug != $default_slug ) {
549
+ $buff_value = array();
550
+ foreach ( (array) $value as $k => $v ) {
 
551
 
552
+ if ( preg_match( '#^' . $default_slug . '/\?\$$#', $k ) ||
553
+ preg_match( '#^' . $default_slug . '/\(?feed#', $k ) ||
554
+ preg_match( '#^' . $default_slug . '/page#', $k )
555
+ ) {
556
 
557
+ $k = preg_replace( '#^' . $default_slug . '/#', $current_slug . '/', $k );
558
  }
559
 
560
+ $buff_value[ $k ] = $v;
 
561
  }
562
+
563
+ $value = $buff_value;
564
+ unset( $buff_value );
565
  }
566
 
567
  return $value;
568
  }
569
 
570
+ /**
571
+ * @param array $value
572
+ * @param string $pattern
573
+ * @param string $replacement_pattern
574
+ * @param string $replacement
575
+ *
576
+ * @return array
577
+ */
578
+ public function replace_bases_in_rewrite_rules( $value, $pattern, $replacement_pattern, $replacement ){
579
+
580
+ $buff_value = array();
581
+ foreach ( (array) $value as $k => $v ) {
582
+ if ( preg_match( $pattern , $k ) ) {
583
+ $k = preg_replace( $replacement_pattern, $replacement, $k );
584
+ }
585
+ $buff_value[ $k ] = $v;
586
+ }
587
+
588
+ $value = $buff_value;
589
+ unset( $buff_value );
590
+
591
+ return $value;
592
+ }
593
+
594
  function translate_taxonomy_base( $termlink, $term, $taxonomy ) {
595
+ global $wp_rewrite, $wpml_term_translations;
596
  static $no_recursion_flag;
597
 
598
  // handles product categories, product tags and attributes
614
  if ( ! is_null( $wpml_term_translations ) ) {
615
  $term_language = $term->term_id ? $wpml_term_translations->get_element_lang_code( $term->term_taxonomy_id ) : false;
616
  } else {
617
+ $term_language = $term->term_id ? $this->sitepress->get_language_for_element( $term->term_taxonomy_id, 'tax_' . $taxonomy ) : false;
618
  }
619
 
620
  if ( $term_language ) {
624
  $base = $slug_details['slug'];
625
  $base_translated = $slug_details['translated_slug'];
626
 
627
+ if ( isset( $wp_rewrite->extra_permastructs[ $taxonomy ] ) ) {
628
 
629
  $buff = $wp_rewrite->extra_permastructs[ $taxonomy ]['struct'];
630
 
631
+ if( $base_translated !== $base ){
632
+ // translate the attribute base
633
+ $wp_rewrite->extra_permastructs[ $taxonomy ]['struct'] = preg_replace( '#^' . $base . '/(.*)#', $base_translated . '/$1', $wp_rewrite->extra_permastructs[ $taxonomy ]['struct'] );
634
+ }
635
 
636
  // translate the attribute slug
637
+ $attribute_slug = preg_replace( '#^' . $base . '/([^/]+)/.+$#', '$1', $wp_rewrite->extra_permastructs[ $taxonomy ]['struct'] );
638
+ $attribute_slug_default = preg_replace( '#^pa_#', '', $taxonomy );
639
+ $attribute_slug_translation = apply_filters(
640
+ 'wpml_translate_single_string',
641
+ $attribute_slug,
642
+ $this->url_strings_context(),
643
+ $this->url_string_name( 'attribute_slug', $attribute_slug_default ),
644
+ $term_language
645
+ );
646
+
647
+ if ( $attribute_slug_translation != $attribute_slug ) {
648
+
649
+ if( $base ){
650
  $wp_rewrite->extra_permastructs[ $taxonomy ]['struct'] = preg_replace(
651
  '#^' . $base_translated . '/([^/]+)/(.+)$#',
652
  $base_translated . '/' . $attribute_slug_translation . '/$2',
653
  $wp_rewrite->extra_permastructs[ $taxonomy ]['struct']
654
  );
655
+ }else{
656
+ $wp_rewrite->extra_permastructs[ $taxonomy ]['struct'] = preg_replace(
657
+ '#' . $attribute_slug_default . '/(.+)$#',
658
+ $attribute_slug_translation . '/$1',
659
+ $wp_rewrite->extra_permastructs[ $taxonomy ]['struct']
660
+ );
661
  }
 
662
  }
663
 
 
664
  $no_recursion_flag = true;
665
  $termlink = get_term_link( $term, $taxonomy );
666
 
681
  }
682
 
683
  function get_translated_tax_slug( $taxonomy, $language = false ) {
 
684
 
685
  switch ( $taxonomy ) {
686
  case 'product_tag':
691
  $slug = 'product-tag';
692
  }
693
 
694
+ $string_language = $this->woocommerce_wpml->strings->get_string_language( $slug, $this->url_strings_context(), $this->url_string_name( $taxonomy ) );
695
 
696
  break;
697
 
703
  $slug = 'product-category';
704
  }
705
 
706
+ $string_language = $this->woocommerce_wpml->strings->get_string_language( $slug, $this->url_strings_context(), $this->url_string_name( $taxonomy ) );
707
 
708
  break;
709
 
710
  default:
711
  $slug = trim( $this->wc_permalinks['attribute_base'], '/' );
712
 
713
+ $string_language = $this->woocommerce_wpml->strings->get_string_language( $slug, $this->url_strings_context(), $this->url_string_name( 'attribute' ) );
714
 
715
  $taxonomy = 'attribute';
716
 
718
  }
719
 
720
  if ( ! $language ) {
721
+ $language = $this->sitepress->get_current_language();
722
  }
723
 
724
  if ( $slug && $language != 'all' && $language != $string_language ) {
739
  }
740
 
741
  function get_base_translation( $base, $language ) {
 
742
 
743
  // case of attribute slugs
744
  if ( strpos( $base, 'attribute_slug-' ) === 0 ) {
801
  }
802
 
803
  function get_source_slug_language( $base ) {
 
804
 
805
  if ( $base == 'shop' ) {
806
+ $source_language = $this->sitepress->get_language_for_element( get_option( 'woocommerce_shop_page_id' ), 'post_page' );
807
  } elseif ( in_array( $base, array( 'product', 'product_cat', 'product_tag', 'attribute' ) ) ) {
808
+ $source_language = $this->woocommerce_wpml->strings->get_string_language( $base, $this->url_strings_context(), $this->url_string_name( $base ) );
809
  } else {
810
+ $source_language = $this->woocommerce_wpml->strings->get_string_language( $base, 'WooCommerce Endpoints', $base );
811
  }
812
 
813
  return $source_language;
820
  die( 'Invalid nonce' );
821
  }
822
 
 
 
823
  $original_base = $_POST['base'];
824
  $original_base_value = $_POST['base_value'];
825
  $base_translation = $_POST['base_translation'];
833
 
834
  $trnsl_shop_obj = get_post( $translated_shop_id );
835
  $new_slug = wp_unique_post_slug( sanitize_title( $_POST['base_translation'] ), $translated_shop_id, $trnsl_shop_obj->post_status, $trnsl_shop_obj->post_type, $trnsl_shop_obj->post_parent );
836
+ $this->wpdb->update( $this->wpdb->posts, array( 'post_name' => $new_slug ), array( 'ID' => $translated_shop_id ) );
837
 
838
  }
839
 
849
  if ( ! $string_id && function_exists( 'icl_register_string' ) ) {
850
  $string_id = icl_register_string( 'WooCommerce Endpoints', $original_base, $original_base_value );
851
  }
852
+ $this->woocommerce_wpml->endpoints->add_endpoints();
853
+ $this->woocommerce_wpml->endpoints->flush_rules_for_endpoints_translations();
854
  }
855
 
856
  icl_add_string_translation( $string_id, $language, $base_translation, ICL_STRING_TRANSLATION_COMPLETE );
857
 
858
  }
859
 
860
+ $edit_base = new WCML_Store_URLs_Edit_Base_UI( $original_base, $language, $this->woocommerce_wpml, $this->sitepress );
861
  $html = $edit_base->get_view();
862
 
863
  echo json_encode( $html );
887
  }
888
 
889
  public function translate_query_var_for_product( $public_query_vars ) {
 
890
 
891
+ $product_permalink = $this->woocommerce_wpml->strings->product_permalink_slug();
892
+ $string_language = $this->woocommerce_wpml->strings->get_string_language( $product_permalink, $this->url_strings_context(), $this->url_string_name( 'product' ) );
893
 
894
+ if ( $this->sitepress->get_current_language() != $string_language ) {
895
  $translated_slug = $this->get_translated_product_base_by_lang( false, $product_permalink );
896
 
897
  if ( isset( $_GET[ $translated_slug ] ) ) {
906
  }
907
 
908
  public function get_translated_product_base_by_lang( $language = false, $product_slug = false ) {
 
909
 
910
  if ( ! $language ) {
911
+ $language = $this->sitepress->get_current_language();
 
 
912
  }
913
 
914
  if ( ! $product_slug ) {
915
+ $product_slug = $this->woocommerce_wpml->strings->product_permalink_slug();
916
  }
917
 
918
  if ( version_compare( WPML_ST_VERSION, '2.3', '>=' ) ) {
928
 
929
  public function encode_shop_slug( $location, $status ) {
930
  if ( get_post_type( get_query_var( 'p' ) ) == 'product' ) {
931
+ $language = $this->sitepress->get_language_for_element( get_query_var( 'p' ), 'post_product' );
 
932
  $base_slug = $this->get_translated_product_base_by_lang( $language );
933
 
934
  $location = str_replace( $base_slug, urlencode( $base_slug ), $location );
936
 
937
  return $location;
938
  }
939
+
940
+ public function translate_product_post_type_link( $permalink, $post ) {
941
+
942
+ // Abort if post is not a product or permalink don't have 'uncategorized' flag
943
+ if ( 'product' !== $post->post_type || false === strpos( $permalink, '/uncategorized/' ) ) {
944
+ return $permalink;
945
+ }
946
+
947
+ $permalinks = wc_get_permalink_structure();
948
+
949
+ // Make sure the product permalink have %product_cat% flag.
950
+ if ( preg_match( '`/(.+)(/%product_cat%)`', $permalinks['product_rewrite_slug'], $matches ) ) {
951
+ $find = 'uncategorized';
952
+ $element_language = $this->sitepress->get_language_for_element( $post->ID, 'post_product' );
953
+ $replace = $this->woocommerce_wpml->strings->get_translation_from_woocommerce_mo_file( 'slug' . chr( 4 ) . $find, $element_language, false );
954
+
955
+ if ( ! is_null( $replace ) ) {
956
+ $permalink = str_replace( $find, $replace, $permalink );
957
+ }
958
+ }
959
+
960
+ return $permalink;
961
+ }
962
+
963
  }
inc/class-wcml-wc-gateways.php CHANGED
@@ -95,11 +95,8 @@ class WCML_WC_Gateways{
95
 
96
  function show_language_links_for_gateways(){
97
 
98
- $text_keys = array(
99
- 'title',
100
- 'description',
101
- 'instructions'
102
- );
103
  $wc_payment_gateways = WC_Payment_Gateways::instance();
104
 
105
  foreach( $wc_payment_gateways->payment_gateways() as $payment_gateway ) {
@@ -154,31 +151,42 @@ class WCML_WC_Gateways{
154
 
155
  function register_and_set_gateway_strings_language(){
156
 
157
- foreach( $_POST as $key => $language ){
 
 
 
 
 
 
158
 
159
- if( substr( $key, 0, 9 ) == 'wcml_lang' ){
 
160
 
161
- $gateway_string = explode( '-', $key );
 
 
162
 
163
- if( isset( $gateway_string[2] ) ){
 
164
 
165
- $gateway_key = str_replace( '_settings', '', $gateway_string[1] );
166
- $gateway_string_name = str_replace( 'woocommerce_', '', $gateway_key ) .'_gateway_'. $gateway_string[2];
167
- $gateway_key .= '_'.$gateway_string[2];
168
 
169
- $gateway_settings = get_option( $gateway_string[1], true );
170
 
171
- $string_value = isset( $_POST[ $gateway_key ] ) ? $_POST[ $gateway_key ] : '';
172
- $opt_string_value = isset( $gateway_settings[ $gateway_string[2] ] ) ? $gateway_settings[ $gateway_string[2] ] : $string_value;
 
 
173
 
174
- $context = 'woocommerce';
175
 
176
- do_action( 'wpml_register_single_string', $context, $gateway_string_name, $string_value, false, $this->woocommerce_wpml->strings->get_string_language( $opt_string_value, $context ) );
 
 
 
 
177
 
178
- $this->woocommerce_wpml->strings->set_string_language( $string_value, $context, $gateway_string_name, $language );
179
- }
180
- }
181
- }
182
  }
183
 
184
  }
95
 
96
  function show_language_links_for_gateways(){
97
 
98
+ $text_keys = $this->get_gateway_text_keys_to_translate();
99
+
 
 
 
100
  $wc_payment_gateways = WC_Payment_Gateways::instance();
101
 
102
  foreach( $wc_payment_gateways->payment_gateways() as $payment_gateway ) {
151
 
152
  function register_and_set_gateway_strings_language(){
153
 
154
+ foreach( $_POST as $key => $language ){
155
+
156
+ if( '_enabled' === substr( $key, -8 ) ){
157
+ $gateway = str_replace( '_enabled', '', $key );
158
+ $gateway_settings = get_option( $gateway.'_settings', array() );
159
+ }
160
+ }
161
 
162
+ if ( isset( $gateway ) ) {
163
+ $text_keys = $this->get_gateway_text_keys_to_translate();
164
 
165
+ foreach ( $text_keys as $text_key ) {
166
+ $gateway_string_name = str_replace( 'woocommerce_', '', $gateway ) . '_gateway_' . $text_key;
167
+ $gateway_key = $gateway . '_' . $text_key;
168
 
169
+ $string_value = isset( $_POST[ $gateway_key ] ) ? $_POST[ $gateway_key ] : '';
170
+ $opt_string_value = isset( $gateway_settings[ $text_key ] ) ? $gateway_settings[ $text_key ] : $string_value;
171
 
172
+ $context = 'woocommerce';
 
 
173
 
174
+ do_action( 'wpml_register_single_string', $context, $gateway_string_name, $string_value, false, $this->woocommerce_wpml->strings->get_string_language( $opt_string_value, $context ) );
175
 
176
+ $this->woocommerce_wpml->strings->set_string_language( $string_value, $context, $gateway_string_name, $language );
177
+ }
178
+ }
179
+ }
180
 
181
+ public function get_gateway_text_keys_to_translate(){
182
 
183
+ $text_keys = array(
184
+ 'title',
185
+ 'description',
186
+ 'instructions'
187
+ );
188
 
189
+ return apply_filters( 'wcml_gateway_text_keys_to_translate', $text_keys );
 
 
 
190
  }
191
 
192
  }
inc/class-woocommerce-wpml.php CHANGED
@@ -96,6 +96,8 @@ class woocommerce_wpml {
96
  $this->cs_templates->init_hooks();
97
  }
98
 
 
 
99
 
100
  }
101
 
@@ -117,127 +119,134 @@ class woocommerce_wpml {
117
 
118
  return self::$_instance;
119
  }
120
- public function init(){
121
- global $sitepress, $wpdb, $woocommerce;
122
 
123
- new WCML_Upgrade;
124
-
125
- $this->dependencies = new WCML_Dependencies;
126
- $this->check_dependencies = $this->dependencies->check();
127
-
128
- WCML_Admin_Menus::set_up_menus( $this, $sitepress, $wpdb, $this->check_dependencies );
129
-
130
- if( !$this->check_dependencies ){
131
- WCML_Capabilities::set_up_capabilities();
132
-
133
- wp_register_style( 'otgs-ico', WCML_PLUGIN_URL . '/res/css/otgs-ico.css', null, WCML_VERSION );
134
- wp_enqueue_style( 'otgs-ico');
135
-
136
- WCML_Resources::load_management_css();
137
- WCML_Resources::load_tooltip_resources();
138
- return false;
139
- }
140
-
141
- $this->compatibility = new WCML_Compatibility( $sitepress, $this, $wpdb, new WPML_Element_Translation_Package );
142
-
143
- $actions_that_need_mc = array(
144
- 'save-mc-options',
145
- 'wcml_new_currency',
146
- 'wcml_save_currency',
147
- 'wcml_delete_currency',
148
- 'wcml_update_currency_lang',
149
- 'wcml_update_default_currency',
150
- 'wcml_price_preview',
151
- 'wcml_currencies_switcher_preview',
152
- 'wcml_currencies_switcher_save_settings',
153
- 'wcml_delete_currency_switcher',
154
- 'wcml_currencies_order'
155
- );
156
-
157
- $this->cart = new WCML_Cart( $this, $sitepress, $woocommerce );
158
-
159
- if($this->settings['enable_multi_currency'] == WCML_MULTI_CURRENCIES_INDEPENDENT
160
- || ( isset($_GET['page']) && $_GET['page'] == 'wpml-wcml' && isset($_GET['tab']) && $_GET['tab'] == 'multi-currency' )
161
- || ( isset( $_POST[ 'action' ] ) && in_array( $_POST[ 'action' ], $actions_that_need_mc ) )
162
- ){
163
- $this->multi_currency = new WCML_Multi_Currency;
164
- $wcml_price_filters = new WCML_Price_Filter( $this );
165
- $wcml_price_filters->add_hooks();
166
- }else{
167
- add_shortcode('currency_switcher', '__return_empty_string');
168
- }
169
-
170
- if( is_admin() ) {
171
- $this->troubleshooting = new WCML_Troubleshooting( $this, $sitepress, $wpdb );
172
- $this->links = new WCML_Links($this, $sitepress);
173
- $this->translation_editor = new WCML_Translation_Editor($this, $sitepress, $wpdb);
174
- $this->languages_upgrader = new WCML_Languages_Upgrader;
175
- $this->sync_variations_data = new WCML_Synchronize_Variations_Data($this, $sitepress, $wpdb);
176
- $this->wcml_products_screen = new WCML_Products_Screen_Options($sitepress);
177
- $this->wcml_products_screen->init();
178
- new WCML_Pointers();
179
- }
180
-
181
- $this->sync_product_data = new WCML_Synchronize_Product_Data( $this, $sitepress, $wpdb );
182
- $this->sync_product_data->add_hooks();
183
- $this->duplicate_product = new WCML_WC_Admin_Duplicate_Product( $this, $sitepress, $wpdb );
184
- $this->products = new WCML_Products( $this, $sitepress, $wpdb );
185
- $this->products->add_hooks();
186
- $this->store = new WCML_Store_Pages ($this, $sitepress ) ;
187
- $this->emails = new WCML_Emails( $this, $sitepress );
188
- $this->terms = new WCML_Terms( $this, $sitepress, $wpdb );
189
- $this->attributes = new WCML_Attributes( $this, $sitepress, $wpdb );
190
- $this->attributes->add_hooks();
191
- $this->orders = new WCML_Orders( $this, $sitepress );
192
- $this->strings = new WCML_WC_Strings( $this, $sitepress );
193
- $this->strings->add_hooks();
194
- $this->shipping = new WCML_WC_Shipping( $sitepress );
195
- $this->shipping->add_hooks();
196
- $this->gateways = new WCML_WC_Gateways( $this, $sitepress );
197
- $this->currencies = new WCML_Currencies( $this );
198
- $this->url_translation = new WCML_Url_Translation ( $this, $sitepress );
199
- $this->url_translation->set_up();
200
- $this->endpoints = new WCML_Endpoints( $this );
201
- $this->requests = new WCML_Requests;
202
- $this->cart = new WCML_Cart( $this, $sitepress, $woocommerce );
203
- $this->cart->add_hooks();
204
- $this->coupons = new WCML_Coupons( $this, $sitepress );
205
- $this->coupons->add_hooks();
206
- $this->locale = new WCML_Locale( $this, $sitepress );
207
- $this->media = new WCML_Media( $this, $sitepress, $wpdb );
208
- $this->downloadable = new WCML_Downloadable_Products( $this, $sitepress );
209
- $this->downloadable->add_hooks();
210
- $this->page_builders = new WCML_Page_Builders( $sitepress );
211
- $this->reports = new WCML_Reports;
212
- $this->wcml_products_screen = new WCML_Products_Screen_Options();
213
- $this->wcml_products_screen->init();
214
- $this->cart_sync_warnings = new WCML_Cart_Sync_Warnings( $this, $sitepress );
215
- $this->cart_sync_warnings->add_hooks();
216
-
217
- $payment_method_filter = new WCML_Payment_Method_Filter();
218
- $payment_method_filter->add_hooks();
219
-
220
- new WCML_Ajax_Setup( $sitepress );
221
- new WCML_Fix_Copied_Custom_Fields_WPML353();
222
-
223
- WCML_Install::initialize( $this, $sitepress );
224
-
225
- WCML_Resources::set_up_resources( $this, $sitepress );
226
-
227
- add_filter('woocommerce_get_checkout_payment_url', array('WCML_Links', 'filter_woocommerce_redirect_location'));
228
- add_filter('woocommerce_get_cancel_order_url', array('WCML_Links', 'filter_woocommerce_redirect_location'));
229
- add_filter('woocommerce_get_return_url', array('WCML_Links', 'filter_woocommerce_redirect_location'));
230
-
231
- add_action('wp_ajax_wcml_update_setting_ajx', array($this, 'update_setting_ajx'));
232
-
233
- if( is_admin() ){
234
- $taxonomy_translation_link_filters = new WCML_Taxonomy_Translation_Link_Filters( $this->attributes );
235
- $taxonomy_translation_link_filters->add_filters();
236
-
237
- $tp_support = new WCML_TP_Support( $this, $wpdb , new WPML_Element_Translation_Package );
238
- $tp_support->add_hooks();
239
- }
240
- }
 
 
 
 
 
 
 
 
 
241
 
242
  public function get_settings(){
243
 
96
  $this->cs_templates->init_hooks();
97
  }
98
 
99
+ $wc_shortccode_product_category = new WCML_WC_Shortcode_Product_Category( $sitepress );
100
+ $wc_shortccode_product_category->add_hooks();
101
 
102
  }
103
 
119
 
120
  return self::$_instance;
121
  }
 
 
122
 
123
+ public function init() {
124
+ global $sitepress, $wpdb, $woocommerce;
125
+
126
+ new WCML_Upgrade;
127
+
128
+ $this->dependencies = new WCML_Dependencies;
129
+ $this->check_dependencies = $this->dependencies->check();
130
+
131
+ WCML_Admin_Menus::set_up_menus( $this, $sitepress, $wpdb, $this->check_dependencies );
132
+
133
+ if ( ! $this->check_dependencies ) {
134
+ WCML_Capabilities::set_up_capabilities();
135
+
136
+ wp_register_style( 'otgs-ico', WCML_PLUGIN_URL . '/res/css/otgs-ico.css', null, WCML_VERSION );
137
+ wp_enqueue_style( 'otgs-ico' );
138
+
139
+ WCML_Resources::load_management_css();
140
+ WCML_Resources::load_tooltip_resources();
141
+
142
+ return false;
143
+ }
144
+
145
+ $this->compatibility = new WCML_Compatibility( $sitepress, $this, $wpdb, new WPML_Element_Translation_Package );
146
+
147
+ $actions_that_need_mc = array(
148
+ 'save-mc-options',
149
+ 'wcml_new_currency',
150
+ 'wcml_save_currency',
151
+ 'wcml_delete_currency',
152
+ 'wcml_update_currency_lang',
153
+ 'wcml_update_default_currency',
154
+ 'wcml_price_preview',
155
+ 'wcml_currencies_switcher_preview',
156
+ 'wcml_currencies_switcher_save_settings',
157
+ 'wcml_delete_currency_switcher',
158
+ 'wcml_currencies_order'
159
+ );
160
+
161
+ $this->cart = new WCML_Cart( $this, $sitepress, $woocommerce );
162
+
163
+ if ( $this->settings['enable_multi_currency'] == WCML_MULTI_CURRENCIES_INDEPENDENT
164
+ || ( isset( $_GET['page'] ) && $_GET['page'] == 'wpml-wcml' && isset( $_GET['tab'] ) && $_GET['tab'] == 'multi-currency' )
165
+ || ( isset( $_POST['action'] ) && in_array( $_POST['action'], $actions_that_need_mc ) )
166
+ ) {
167
+ $this->multi_currency = new WCML_Multi_Currency;
168
+ $wcml_price_filters = new WCML_Price_Filter( $this );
169
+ $wcml_price_filters->add_hooks();
170
+ } else {
171
+ add_shortcode( 'currency_switcher', '__return_empty_string' );
172
+ }
173
+
174
+ if ( is_admin() ) {
175
+ $this->troubleshooting = new WCML_Troubleshooting( $this, $sitepress, $wpdb );
176
+ $this->links = new WCML_Links( $this, $sitepress );
177
+ $this->translation_editor = new WCML_Translation_Editor( $this, $sitepress, $wpdb );
178
+ $this->languages_upgrader = new WCML_Languages_Upgrader;
179
+ $this->sync_variations_data = new WCML_Synchronize_Variations_Data( $this, $sitepress, $wpdb );
180
+ $this->sync_variations_data->add_hooks();
181
+ $this->wcml_products_screen = new WCML_Products_Screen_Options( $sitepress );
182
+ $this->wcml_products_screen->init();
183
+ new WCML_Pointers();
184
+ }
185
+
186
+ $this->sync_product_data = new WCML_Synchronize_Product_Data( $this, $sitepress, $wpdb );
187
+ $this->sync_product_data->add_hooks();
188
+ $this->duplicate_product = new WCML_WC_Admin_Duplicate_Product( $this, $sitepress, $wpdb );
189
+ $this->products = new WCML_Products( $this, $sitepress, $wpdb );
190
+ $this->products->add_hooks();
191
+ $this->store = new WCML_Store_Pages ( $this, $sitepress );
192
+ $this->strings = new WCML_WC_Strings( $this, $sitepress );
193
+ $this->strings->add_hooks();
194
+ $this->emails = new WCML_Emails( $this, $sitepress, $woocommerce );
195
+ $this->emails->add_hooks();
196
+ $this->terms = new WCML_Terms( $this, $sitepress, $wpdb );
197
+ $this->terms->add_hooks();
198
+ $this->attributes = new WCML_Attributes( $this, $sitepress, $wpdb );
199
+ $this->attributes->add_hooks();
200
+ $this->orders = new WCML_Orders( $this, $sitepress );
201
+ $this->shipping = new WCML_WC_Shipping( $sitepress );
202
+ $this->shipping->add_hooks();
203
+ $this->gateways = new WCML_WC_Gateways( $this, $sitepress );
204
+ $this->currencies = new WCML_Currencies( $this );
205
+ $this->url_translation = new WCML_Url_Translation ( $this, $sitepress, $wpdb );
206
+ $this->url_translation->set_up();
207
+ $this->endpoints = new WCML_Endpoints( $this );
208
+ $this->requests = new WCML_Requests;
209
+ $this->cart = new WCML_Cart( $this, $sitepress, $woocommerce );
210
+ $this->cart->add_hooks();
211
+ $this->coupons = new WCML_Coupons( $this, $sitepress );
212
+ $this->locale = new WCML_Locale( $this, $sitepress );
213
+ $this->media = new WCML_Media( $this, $sitepress, $wpdb );
214
+ $this->downloadable = new WCML_Downloadable_Products( $this, $sitepress );
215
+ $this->downloadable->add_hooks();
216
+ $this->page_builders = new WCML_Page_Builders( $sitepress );
217
+ $this->reports = new WCML_Reports;
218
+ $this->wcml_products_screen = new WCML_Products_Screen_Options();
219
+ $this->wcml_products_screen->init();
220
+ $this->cart_sync_warnings = new WCML_Cart_Sync_Warnings( $this, $sitepress );
221
+ $this->cart_sync_warnings->add_hooks();
222
+
223
+ $payment_method_filter = new WCML_Payment_Method_Filter();
224
+ $payment_method_filter->add_hooks();
225
+
226
+ new WCML_Ajax_Setup( $sitepress );
227
+ new WCML_Fix_Copied_Custom_Fields_WPML353();
228
+
229
+ WCML_Install::initialize( $this, $sitepress );
230
+
231
+ WCML_Resources::set_up_resources( $this, $sitepress );
232
+
233
+ add_filter( 'woocommerce_get_checkout_payment_url', array(
234
+ 'WCML_Links',
235
+ 'filter_woocommerce_redirect_location'
236
+ ) );
237
+ add_filter( 'woocommerce_get_cancel_order_url', array( 'WCML_Links', 'filter_woocommerce_redirect_location' ) );
238
+ add_filter( 'woocommerce_get_return_url', array( 'WCML_Links', 'filter_woocommerce_redirect_location' ) );
239
+
240
+ add_action( 'wp_ajax_wcml_update_setting_ajx', array( $this, 'update_setting_ajx' ) );
241
+
242
+ if ( is_admin() ) {
243
+ $taxonomy_translation_link_filters = new WCML_Taxonomy_Translation_Link_Filters( $this->attributes );
244
+ $taxonomy_translation_link_filters->add_filters();
245
+
246
+ $tp_support = new WCML_TP_Support( $this, $wpdb, new WPML_Element_Translation_Package );
247
+ $tp_support->add_hooks();
248
+ }
249
+ }
250
 
251
  public function get_settings(){
252
 
inc/currencies/class-wcml-custom-prices.php CHANGED
@@ -67,7 +67,7 @@ class WCML_Custom_Prices{
67
 
68
  foreach($prices_keys as $key){
69
 
70
- if(!empty($product_meta[$key . '_' . $currency][0])){
71
  $custom_prices[$key] = $product_meta[$key . '_' . $currency][0];
72
  }
73
 
@@ -80,8 +80,7 @@ class WCML_Custom_Prices{
80
  $current__price_value = $custom_prices['_price'];
81
 
82
  // update sale price
83
- if(!empty($custom_prices['_sale_price'])){
84
-
85
  if(!empty($product_meta['_wcml_schedule_' . $currency][0])){
86
  // custom dates
87
  if(!empty($product_meta['_sale_price_dates_from_' . $currency][0]) && !empty($product_meta['_sale_price_dates_to_' . $currency][0])){
67
 
68
  foreach($prices_keys as $key){
69
 
70
+ if( isset($product_meta[$key . '_' . $currency][0])){
71
  $custom_prices[$key] = $product_meta[$key . '_' . $currency][0];
72
  }
73
 
80
  $current__price_value = $custom_prices['_price'];
81
 
82
  // update sale price
83
+ if(isset($custom_prices['_sale_price']) && is_numeric($custom_prices['_sale_price']) ){
 
84
  if(!empty($product_meta['_wcml_schedule_' . $currency][0])){
85
  // custom dates
86
  if(!empty($product_meta['_sale_price_dates_from_' . $currency][0]) && !empty($product_meta['_sale_price_dates_to_' . $currency][0])){
inc/currencies/class-wcml-multi-currency-prices.php CHANGED
@@ -131,7 +131,7 @@ class WCML_Multi_Currency_Prices {
131
 
132
  $manual_prices = $this->multi_currency->custom_prices->get_product_custom_prices( $product_id, $currency );
133
 
134
- if ( $manual_prices && ! empty( $manual_prices['_price'] ) ) {
135
 
136
  $price = $manual_prices['_price'];
137
 
@@ -177,6 +177,7 @@ class WCML_Multi_Currency_Prices {
177
  // legacy prior 3.1
178
  $original_object_id = apply_filters( 'translate_object_id', $object_id, get_post_type( $object_id ), false, $sitepress->get_default_language() );
179
  $ccr = get_post_meta( $original_object_id, '_custom_conversion_rate', true );
 
180
  if ( in_array( $meta_key, array(
181
  '_price',
182
  '_regular_price',
@@ -192,26 +193,25 @@ class WCML_Multi_Currency_Prices {
192
  // 1. manual prices
193
  $manual_prices = $this->multi_currency->custom_prices->get_product_custom_prices( $object_id, $this->multi_currency->get_client_currency() );
194
 
195
- if ( $manual_prices && ! empty( $manual_prices[ $meta_key ] ) ) {
196
 
197
  $price = $manual_prices[ $meta_key ];
198
 
199
  } else {
200
  // 2. automatic conversion
201
  $price = get_post_meta( $object_id, $meta_key, $single );
202
- $price = apply_filters( 'wcml_raw_price_amount', $price );
203
-
 
204
  }
205
-
206
  }
207
 
208
-
209
  $no_filter = false;
210
  }
211
 
212
  }
213
 
214
- return ! empty( $price ) ? $price : $null;
215
  }
216
 
217
  public function variation_prices_filter( $null, $object_id, $meta_key, $single ) {
@@ -235,7 +235,7 @@ class WCML_Multi_Currency_Prices {
235
  if ( isset( $manual_prices[ $k ] ) ) {
236
  $variation_fields[ $k ][ $j ] = $manual_prices[ $k ]; // manual price
237
 
238
- } else {
239
  $variation_fields[ $k ][ $j ] = apply_filters( 'wcml_raw_price_amount', $amount ); // automatic conversion
240
  }
241
 
@@ -250,7 +250,7 @@ class WCML_Multi_Currency_Prices {
250
 
251
  }
252
 
253
- return ! empty( $variation_fields ) ? $variation_fields : $null;
254
 
255
  }
256
 
131
 
132
  $manual_prices = $this->multi_currency->custom_prices->get_product_custom_prices( $product_id, $currency );
133
 
134
+ if ( $manual_prices && isset( $manual_prices['_price'] ) ) {
135
 
136
  $price = $manual_prices['_price'];
137
 
177
  // legacy prior 3.1
178
  $original_object_id = apply_filters( 'translate_object_id', $object_id, get_post_type( $object_id ), false, $sitepress->get_default_language() );
179
  $ccr = get_post_meta( $original_object_id, '_custom_conversion_rate', true );
180
+
181
  if ( in_array( $meta_key, array(
182
  '_price',
183
  '_regular_price',
193
  // 1. manual prices
194
  $manual_prices = $this->multi_currency->custom_prices->get_product_custom_prices( $object_id, $this->multi_currency->get_client_currency() );
195
 
196
+ if ( $manual_prices && isset( $manual_prices[ $meta_key ] ) ) {
197
 
198
  $price = $manual_prices[ $meta_key ];
199
 
200
  } else {
201
  // 2. automatic conversion
202
  $price = get_post_meta( $object_id, $meta_key, $single );
203
+ if( $price ){
204
+ $price = apply_filters( 'wcml_raw_price_amount', $price );
205
+ }
206
  }
 
207
  }
208
 
 
209
  $no_filter = false;
210
  }
211
 
212
  }
213
 
214
+ return isset( $price ) ? $price : $null;
215
  }
216
 
217
  public function variation_prices_filter( $null, $object_id, $meta_key, $single ) {
235
  if ( isset( $manual_prices[ $k ] ) ) {
236
  $variation_fields[ $k ][ $j ] = $manual_prices[ $k ]; // manual price
237
 
238
+ } elseif( $amount ) {
239
  $variation_fields[ $k ][ $j ] = apply_filters( 'wcml_raw_price_amount', $amount ); // automatic conversion
240
  }
241
 
250
 
251
  }
252
 
253
+ return isset( $variation_fields ) ? $variation_fields : $null;
254
 
255
  }
256
 
inc/currencies/class-wcml-multi-currency-resources.php CHANGED
@@ -35,9 +35,8 @@ class WCML_Multi_Currency_Resources{
35
  'symbol'=> get_woocommerce_currency_symbol( self::$multi_currency->get_client_currency() )
36
  );
37
 
38
- if( !empty(self::$multi_currency->W3TC) || function_exists('wp_cache_is_enabled') && wp_cache_is_enabled() ){
39
- $script_vars['w3tc'] = 1;
40
- }
41
 
42
  wp_localize_script('wcml-mc-scripts', 'wcml_mc_settings', $script_vars );
43
 
35
  'symbol'=> get_woocommerce_currency_symbol( self::$multi_currency->get_client_currency() )
36
  );
37
 
38
+ $script_vars['w3tc'] = (int) ! empty( self::$multi_currency->W3TC )
39
+ || ( function_exists( 'wp_cache_is_enabled' ) && wp_cache_is_enabled() );
 
40
 
41
  wp_localize_script('wcml-mc-scripts', 'wcml_mc_settings', $script_vars );
42
 
inc/currencies/currency-switcher/class-wcml-currency-switcher-ajax.php CHANGED
@@ -54,6 +54,8 @@ class WCML_Currency_Switcher_Ajax{
54
  $switcher_settings[ 'switcher_style' ] = sanitize_text_field( $_POST[ 'switcher_style' ] );
55
  $switcher_settings[ 'template' ] = $currency_switcher_format;
56
 
 
 
57
  foreach( $_POST[ 'color_scheme' ] as $color_id => $color ){
58
  $switcher_settings[ 'color_scheme' ][ sanitize_text_field( $color_id ) ] = sanitize_hex_color( $color );
59
  }
54
  $switcher_settings[ 'switcher_style' ] = sanitize_text_field( $_POST[ 'switcher_style' ] );
55
  $switcher_settings[ 'template' ] = $currency_switcher_format;
56
 
57
+ do_action('wpml_register_single_string', 'woocommerce-multilingual', $switcher_id .'_switcher_format' , $currency_switcher_format );
58
+
59
  foreach( $_POST[ 'color_scheme' ] as $color_id => $color ){
60
  $switcher_settings[ 'color_scheme' ][ sanitize_text_field( $color_id ) ] = sanitize_hex_color( $color );
61
  }
inc/currencies/currency-switcher/class-wcml-currency-switcher-templates.php CHANGED
@@ -2,19 +2,22 @@
2
 
3
  class WCML_Currency_Switcher_Templates {
4
 
5
- const CONFIG_FILE = 'config.json';
 
6
 
7
- /*
8
  * @var woocommerce_wpml
9
  */
10
  private $woocommerce_wpml;
11
 
12
- /*
13
  * @var WPML_WP_API $wp_api
14
  */
15
  private $wp_api;
16
 
17
- /** @var string $uploads_path */
 
 
18
  private $uploads_path;
19
 
20
  /**
@@ -22,10 +25,19 @@ class WCML_Currency_Switcher_Templates {
22
  */
23
  private $wpml_file;
24
 
25
- /* @var array $templates Collection of WCML_CS_Template */
 
 
26
  private $templates = false;
27
 
28
- /* @var string $ds */
 
 
 
 
 
 
 
29
  private $ds = DIRECTORY_SEPARATOR;
30
 
31
  public function __construct( woocommerce_wpml $woocommerce_wpml, WPML_WP_API $wp_api, WCML_File $wpml_file = null ) {
@@ -153,53 +165,84 @@ class WCML_Currency_Switcher_Templates {
153
  return $config;
154
  }
155
 
156
- private function init_available_templates() {
157
 
158
- $templates = array();
159
- $dirs_to_scan = array();
160
-
161
- $sub_dir = $this->ds . 'templates' . $this->ds . 'currency-switchers';
162
-
163
- $wcml_core_path = WCML_PLUGIN_PATH . $sub_dir;
164
- $theme_path = get_template_directory() . $this->ds . 'wpml' . $sub_dir;
165
- $child_theme_path = get_stylesheet_directory() . $this->ds . 'wpml' . $sub_dir;
166
- $uploads_path = $this->get_uploads_path() . $this->ds . 'wpml' . $sub_dir;
167
-
168
- array_unshift( $dirs_to_scan, $wcml_core_path, $theme_path, $child_theme_path, $uploads_path );
169
-
170
- /**
171
- * Filter the directories to scan
172
- *
173
- * @param array $dirs_to_scan
174
- */
175
- $dirs_to_scan = apply_filters( 'wcml_cs_directories_to_scan', $dirs_to_scan );
176
-
177
- $templates_paths = $this->scan_template_paths( $dirs_to_scan );
178
-
179
- foreach ( $templates_paths as $template_path ) {
180
- $template_path = $this->wpml_file->fix_dir_separator( $template_path );
181
- if ( file_exists( $template_path . $this->ds . WCML_Currency_Switcher_Template::FILENAME ) ) {
182
- $tpl = array();
183
- $config = $this->parse_template_config( $template_path );
184
-
185
- $tpl['path'] = $template_path;
186
- $tpl['name'] = isset( $config['name'] ) ? $config['name'] : null;
187
- $tpl['name'] = $this->get_unique_name( $tpl['name'], $template_path );
188
- $tpl['slug'] = sanitize_title_with_dashes( $tpl['name'] );
189
- $tpl['css'] = $this->get_files( 'css', $template_path, $config );
190
- $tpl['js'] = $this->get_files( 'js', $template_path, $config );
191
-
192
- if ( $this->is_core_template( $template_path ) ) {
193
- $tpl['is_core'] = true;
194
- $tpl['slug'] = isset( $config['slug'] ) ? $config['slug'] : $tpl['slug'];
195
- }
196
 
197
- $templates[ $tpl['slug'] ] = new WCML_Currency_Switcher_Template( $this->woocommerce_wpml, $tpl );
198
- }
199
- }
200
 
201
- $this->set_templates( $templates );
202
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
203
 
204
  /**
205
  * @param array $dirs_to_scan
@@ -321,13 +364,7 @@ class WCML_Currency_Switcher_Templates {
321
 
322
  foreach ( $templates as $slug => $template ) {
323
 
324
- foreach ( $template->get_scripts() as $k => $url ) {
325
- wp_enqueue_script( $template->get_resource_handler( $k ), $url, array(), WCML_VERSION );
326
- }
327
-
328
- foreach ( $template->get_styles() as $k => $url ) {
329
- wp_enqueue_style( $template->get_resource_handler( $k ), $url, array(), WCML_VERSION );
330
- }
331
 
332
  if ( $template->has_styles() ) {
333
  $style_handler = $template->get_inline_style_handler();
@@ -367,6 +404,37 @@ class WCML_Currency_Switcher_Templates {
367
  }
368
  }
369
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
370
  /**
371
  * @param string $css
372
  *
2
 
3
  class WCML_Currency_Switcher_Templates {
4
 
5
+ const CONFIG_FILE = 'config.json';
6
+ const OPTION_NAME = 'wcml_currency_switcher_template_objects';
7
 
8
+ /**
9
  * @var woocommerce_wpml
10
  */
11
  private $woocommerce_wpml;
12
 
13
+ /**
14
  * @var WPML_WP_API $wp_api
15
  */
16
  private $wp_api;
17
 
18
+ /**
19
+ * @var string $uploads_path
20
+ */
21
  private $uploads_path;
22
 
23
  /**
25
  */
26
  private $wpml_file;
27
 
28
+ /**
29
+ * @var array $templates Collection of WCML_CS_Template
30
+ */
31
  private $templates = false;
32
 
33
+ /**
34
+ * @var array $enqueued_templates
35
+ */
36
+ private $enqueued_templates = array();
37
+
38
+ /**
39
+ * @var string $ds
40
+ */
41
  private $ds = DIRECTORY_SEPARATOR;
42
 
43
  public function __construct( woocommerce_wpml $woocommerce_wpml, WPML_WP_API $wp_api, WCML_File $wpml_file = null ) {
165
  return $config;
166
  }
167
 
168
+ private function init_available_templates() {
169
 
170
+ $is_admin_ui_page = isset( $_GET['page'] ) && 'wpml-wcml' === $_GET['page'] && isset( $_GET['tab'] ) && 'multi-currency' === $_GET['tab'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
 
172
+ if ( ! $is_admin_ui_page ) {
173
+ $this->templates = $this->get_templates_from_transient();
174
+ }
175
 
176
+ if ( $this->templates === false ) {
177
+ $templates = array();
178
+ $dirs_to_scan = array();
179
+
180
+ $sub_dir = $this->ds . 'templates' . $this->ds . 'currency-switchers';
181
+
182
+ $wcml_core_path = WCML_PLUGIN_PATH . $sub_dir;
183
+ $theme_path = get_template_directory() . $this->ds . 'wpml' . $sub_dir;
184
+ $child_theme_path = get_stylesheet_directory() . $this->ds . 'wpml' . $sub_dir;
185
+ $uploads_path = $this->get_uploads_path() . $this->ds . 'wpml' . $sub_dir;
186
+
187
+ array_unshift( $dirs_to_scan, $wcml_core_path, $theme_path, $child_theme_path, $uploads_path );
188
+
189
+ /**
190
+ * Filter the directories to scan
191
+ *
192
+ * @param array $dirs_to_scan
193
+ */
194
+ $dirs_to_scan = apply_filters( 'wcml_cs_directories_to_scan', $dirs_to_scan );
195
+
196
+ $templates_paths = $this->scan_template_paths( $dirs_to_scan );
197
+
198
+ foreach ( $templates_paths as $template_path ) {
199
+ $template_path = $this->wpml_file->fix_dir_separator( $template_path );
200
+ if ( file_exists( $template_path . $this->ds . WCML_Currency_Switcher_Template::FILENAME ) ) {
201
+ $tpl = array();
202
+ $config = $this->parse_template_config( $template_path );
203
+
204
+ $tpl['path'] = $template_path;
205
+ $tpl['name'] = isset( $config['name'] ) ? $config['name'] : null;
206
+ $tpl['name'] = $this->get_unique_name( $tpl['name'], $template_path );
207
+ $tpl['slug'] = sanitize_title_with_dashes( $tpl['name'] );
208
+ $tpl['css'] = $this->get_files( 'css', $template_path, $config );
209
+ $tpl['js'] = $this->get_files( 'js', $template_path, $config );
210
+
211
+ if ( $this->is_core_template( $template_path ) ) {
212
+ $tpl['is_core'] = true;
213
+ $tpl['slug'] = isset( $config['slug'] ) ? $config['slug'] : $tpl['slug'];
214
+ }
215
+
216
+ $templates[ $tpl['slug'] ] = new WCML_Currency_Switcher_Template( $this->woocommerce_wpml, $tpl );
217
+ }
218
+ }
219
+
220
+ update_option( self::OPTION_NAME, $templates );
221
+
222
+ $this->set_templates( $templates );
223
+ }
224
+
225
+ }
226
+
227
+ private function get_templates_from_transient() {
228
+ $templates = get_option( self::OPTION_NAME );
229
+ if ( $templates && $this->are_template_paths_valid( $templates ) ) {
230
+ return $templates;
231
+ }
232
+ return false;
233
+ }
234
+
235
+
236
+ private function are_template_paths_valid( $templates ) {
237
+ $paths_are_valid = true;
238
+ foreach ( $templates as $template ) {
239
+ if ( ! $template->is_path_valid() ) {
240
+ $paths_are_valid = false;
241
+ break;
242
+ }
243
+ }
244
+ return $paths_are_valid;
245
+ }
246
 
247
  /**
248
  * @param array $dirs_to_scan
364
 
365
  foreach ( $templates as $slug => $template ) {
366
 
367
+ $this->enqueue_template_assets( $slug, $template );
 
 
 
 
 
 
368
 
369
  if ( $template->has_styles() ) {
370
  $style_handler = $template->get_inline_style_handler();
404
  }
405
  }
406
 
407
+ /**
408
+ * @param string $slug
409
+ * @param WCML_Currency_Switcher_Template $template
410
+ *
411
+ */
412
+ public function enqueue_template_assets( $slug, $template ){
413
+
414
+ $this->enqueued_templates[] = $slug;
415
+
416
+ foreach ( $template->get_scripts() as $k => $url ) {
417
+ wp_enqueue_script( $template->get_resource_handler( $k ), $url, array(), WCML_VERSION );
418
+ }
419
+
420
+ foreach ( $template->get_styles() as $k => $url ) {
421
+ wp_enqueue_style( $template->get_resource_handler( $k ), $url, array(), WCML_VERSION );
422
+ }
423
+
424
+ }
425
+
426
+
427
+ /**
428
+ * @param $slug
429
+ * @param $template
430
+ */
431
+ public function maybe_late_enqueue_template( $slug, $template ) {
432
+ if ( ! in_array( $slug, $this->enqueued_templates ) ) {
433
+ $this->enqueue_template_assets( $slug, $template );
434
+ }
435
+ }
436
+
437
+
438
  /**
439
  * @param string $css
440
  *
inc/currencies/currency-switcher/class-wcml-currency-switcher.php CHANGED
@@ -79,17 +79,19 @@ class WCML_Currency_Switcher{
79
 
80
  $args = $this->check_and_convert_switcher_style( $args );
81
 
82
- $switcher_style_not_available = !isset( $args[ 'switcher_style' ] ) || !$this->woocommerce_wpml->cs_templates->check_is_active( $args[ 'switcher_style' ] );
83
  if (
84
  !isset( $args[ 'preview' ] ) &&
85
- $switcher_style_not_available
86
  ) {
87
  $args[ 'switcher_style' ] = isset( $currency_switcher_settings[ 'switcher_style' ] ) ? $currency_switcher_settings[ 'switcher_style' ] : $this->woocommerce_wpml->cs_templates->get_first_active();
88
  }
89
 
90
  if ( !isset( $args[ 'format' ] ) ) {
91
- $args[ 'format' ] = isset( $currency_switcher_settings[ 'template' ] ) && '' !== $currency_switcher_settings[ 'template' ] ?
92
- $currency_switcher_settings[ 'template' ] : '%name% (%symbol%) - %code%';
 
 
 
93
  }
94
 
95
  if ( !isset( $args[ 'color_scheme' ] ) ) {
@@ -134,8 +136,13 @@ class WCML_Currency_Switcher{
134
  }
135
 
136
  $template = $this->woocommerce_wpml->cs_templates->get_template( $args[ 'switcher_style' ] );
137
- $template->set_model( $this->get_model_data( $args, $currencies ) );
138
- $preview = $template->get_view();
 
 
 
 
 
139
  } else{
140
 
141
  if( is_admin() ){
@@ -157,9 +164,11 @@ class WCML_Currency_Switcher{
157
 
158
  $css_classes = $this->get_css_classes( array( $args[ 'switcher_style' ], $args[ 'switcher_id' ], 'wcml_currency_switcher' ) );
159
 
 
 
160
  $model = array(
161
  'css_classes' => $css_classes,
162
- 'format' => isset( $args['format'] ) ? $args['format'] : '%name% (%symbol%) - %code%',
163
  'currencies' => $currencies,
164
  'selected_currency' => $this->woocommerce_wpml->multi_currency->get_client_currency()
165
  );
79
 
80
  $args = $this->check_and_convert_switcher_style( $args );
81
 
 
82
  if (
83
  !isset( $args[ 'preview' ] ) &&
84
+ !isset( $args[ 'switcher_style' ] )
85
  ) {
86
  $args[ 'switcher_style' ] = isset( $currency_switcher_settings[ 'switcher_style' ] ) ? $currency_switcher_settings[ 'switcher_style' ] : $this->woocommerce_wpml->cs_templates->get_first_active();
87
  }
88
 
89
  if ( !isset( $args[ 'format' ] ) ) {
90
+
91
+ $args['format'] = '%name% (%symbol%) - %code%';
92
+ if( isset( $currency_switcher_settings[ 'template' ] ) && '' !== $currency_switcher_settings[ 'template' ] ){
93
+ $args[ 'format' ] = apply_filters( 'wpml_translate_single_string', $currency_switcher_settings[ 'template' ], 'woocommerce-multilingual', $args[ 'switcher_id' ] .'_switcher_format' ) ;
94
+ }
95
  }
96
 
97
  if ( !isset( $args[ 'color_scheme' ] ) ) {
136
  }
137
 
138
  $template = $this->woocommerce_wpml->cs_templates->get_template( $args[ 'switcher_style' ] );
139
+
140
+ if( $template ) {
141
+ $this->woocommerce_wpml->cs_templates->maybe_late_enqueue_template( $args['switcher_style'], $template );
142
+ $template->set_model( $this->get_model_data( $args, $currencies ) );
143
+ $preview = $template->get_view();
144
+ }
145
+
146
  } else{
147
 
148
  if( is_admin() ){
164
 
165
  $css_classes = $this->get_css_classes( array( $args[ 'switcher_style' ], $args[ 'switcher_id' ], 'wcml_currency_switcher' ) );
166
 
167
+ $format = isset( $args['format'] ) ? $args['format'] : '%name% (%symbol%) - %code%';
168
+
169
  $model = array(
170
  'css_classes' => $css_classes,
171
+ 'format' => $format,
172
  'currencies' => $currencies,
173
  'selected_currency' => $this->woocommerce_wpml->multi_currency->get_client_currency()
174
  );
inc/template-classes/class-wcml-menus-wrap.php CHANGED
@@ -95,14 +95,16 @@ class WCML_Menus_Wrap extends WPML_Templates_Factory {
95
  'title' => !$this->woocommerce_wpml->terms->is_fully_translated( 'product_cat' ) ? __('You have untranslated terms!', 'woocommerce-multilingual') : '',
96
  'active' => $current_tab == 'product_cat' ? 'nav-tab-active':'',
97
  'url' => admin_url('admin.php?page=wpml-wcml&tab=product_cat'),
98
- 'translated'=> $this->woocommerce_wpml->terms->is_fully_translated( 'product_cat' )
 
99
  ),
100
  'product_tag' => array(
101
  'name' => __('Tags', 'woocommerce-multilingual'),
102
  'title' => !$this->woocommerce_wpml->terms->is_fully_translated( 'product_tag' ) ? __('You have untranslated terms!', 'woocommerce-multilingual') : '',
103
  'active' => $current_tab == 'product_tag' ? 'nav-tab-active':'',
104
  'url' => admin_url('admin.php?page=wpml-wcml&tab=product_tag'),
105
- 'translated'=> $this->woocommerce_wpml->terms->is_fully_translated( 'product_tag' )
 
106
  )
107
  ),
108
  'custom_taxonomies' => array(
@@ -123,7 +125,8 @@ class WCML_Menus_Wrap extends WPML_Templates_Factory {
123
  'title' => !$this->woocommerce_wpml->terms->is_fully_translated( 'product_shipping_class' ) ? __('You have untranslated terms!', 'woocommerce-multilingual') : '',
124
  'active' => $current_tab == 'product_shipping_class' ? 'nav-tab-active':'',
125
  'url' => admin_url('admin.php?page=wpml-wcml&tab=product_shipping_class'),
126
- 'translated'=> $this->woocommerce_wpml->terms->is_fully_translated( 'product_shipping_class' )
 
127
  ),
128
  'settings' => array(
129
  'name' => __( 'Settings', 'woocommerce-multilingual' ),
@@ -156,7 +159,7 @@ class WCML_Menus_Wrap extends WPML_Templates_Factory {
156
  'rate' => array(
157
  'on' => !isset( $this->woocommerce_wpml->settings['rate-block'] ),
158
  'message' => sprintf(__('Thank you for using %sWooCommerce Multilingual%s! You can express your love and
159
- support by %s rating our plugin and saying that %sit works%s for you.', 'woocommerce-wpml'),
160
  '<strong>',
161
  '</strong>',
162
  '<a href="https://wordpress.org/support/view/plugin-reviews/woocommerce-multilingual?filter=5#postform" target="_blank">&#9733;&#9733;&#9733;&#9733;&#9733;</a>',
95
  'title' => !$this->woocommerce_wpml->terms->is_fully_translated( 'product_cat' ) ? __('You have untranslated terms!', 'woocommerce-multilingual') : '',
96
  'active' => $current_tab == 'product_cat' ? 'nav-tab-active':'',
97
  'url' => admin_url('admin.php?page=wpml-wcml&tab=product_cat'),
98
+ 'translated'=> $this->woocommerce_wpml->terms->is_fully_translated( 'product_cat' ),
99
+ 'is_translatable' => is_taxonomy_translated( 'product_cat' )
100
  ),
101
  'product_tag' => array(
102
  'name' => __('Tags', 'woocommerce-multilingual'),
103
  'title' => !$this->woocommerce_wpml->terms->is_fully_translated( 'product_tag' ) ? __('You have untranslated terms!', 'woocommerce-multilingual') : '',
104
  'active' => $current_tab == 'product_tag' ? 'nav-tab-active':'',
105
  'url' => admin_url('admin.php?page=wpml-wcml&tab=product_tag'),
106
+ 'translated'=> $this->woocommerce_wpml->terms->is_fully_translated( 'product_tag' ),
107
+ 'is_translatable' => is_taxonomy_translated( 'product_tag' )
108
  )
109
  ),
110
  'custom_taxonomies' => array(
125
  'title' => !$this->woocommerce_wpml->terms->is_fully_translated( 'product_shipping_class' ) ? __('You have untranslated terms!', 'woocommerce-multilingual') : '',
126
  'active' => $current_tab == 'product_shipping_class' ? 'nav-tab-active':'',
127
  'url' => admin_url('admin.php?page=wpml-wcml&tab=product_shipping_class'),
128
+ 'translated'=> $this->woocommerce_wpml->terms->is_fully_translated( 'product_shipping_class' ),
129
+ 'is_translatable' => is_taxonomy_translated( 'product_shipping_class' )
130
  ),
131
  'settings' => array(
132
  'name' => __( 'Settings', 'woocommerce-multilingual' ),
159
  'rate' => array(
160
  'on' => !isset( $this->woocommerce_wpml->settings['rate-block'] ),
161
  'message' => sprintf(__('Thank you for using %sWooCommerce Multilingual%s! You can express your love and
162
+ support by %s rating our plugin and saying that %sit works%s for you.', 'woocommerce-multilingual' ),
163
  '<strong>',
164
  '</strong>',
165
  '<a href="https://wordpress.org/support/view/plugin-reviews/woocommerce-multilingual?filter=5#postform" target="_blank">&#9733;&#9733;&#9733;&#9733;&#9733;</a>',
inc/template-classes/currency-switcher/class-wcml-currency-switcher-template.php CHANGED
@@ -205,4 +205,15 @@ class WCML_Currency_Switcher_Template extends WPML_Templates_Factory {
205
  public function is_core() {
206
  return isset( $this->template['is_core'] ) ? (bool) $this->template['is_core'] : false;
207
  }
 
 
 
 
 
 
 
 
 
 
 
208
  }
205
  public function is_core() {
206
  return isset( $this->template['is_core'] ) ? (bool) $this->template['is_core'] : false;
207
  }
208
+
209
+ public function is_path_valid() {
210
+ $valid = true;
211
+ foreach ( $this->template_paths as $path ) {
212
+ if ( ! file_exists( $path ) ) {
213
+ $valid = false;
214
+ break;
215
+ }
216
+ }
217
+ return $valid;
218
+ }
219
  }
inc/translation-editor/class-wcml-editor-ui-product-job.php CHANGED
@@ -276,7 +276,7 @@ class WCML_Editor_UI_Product_Job extends WPML_Editor_UI_Job {
276
 
277
  $taxonomies = get_object_taxonomies( 'product', 'objects' );
278
  foreach( $taxonomies as $taxonomy => $taxonomy_obj ){
279
- if( $taxonomy != 'product_type' && is_taxonomy_translated( $taxonomy ) ){
280
  $product_terms = wp_get_post_terms( $this->product_id, $taxonomy );
281
  if( $product_terms ){
282
  $tax_section = new WPML_Editor_UI_Field_Section( $taxonomy_obj->label, __( 'Changes in these translations will affect terms in general! ( Not only for this product )', 'woocommerce-multilingual' ));
@@ -500,7 +500,7 @@ class WCML_Editor_UI_Product_Job extends WPML_Editor_UI_Job {
500
  $taxonomies = get_object_taxonomies( 'product', 'objects' );
501
 
502
  foreach( $taxonomies as $taxonomy => $taxonomy_obj ){
503
- if( $taxonomy != 'product_type' && is_taxonomy_translated( $taxonomy ) ){
504
  $product_terms = wp_get_post_terms( $this->product_id, $taxonomy );
505
  if( !is_wp_error( $product_terms ) ){
506
  foreach( $product_terms as $term ){
@@ -684,7 +684,11 @@ class WCML_Editor_UI_Product_Job extends WPML_Editor_UI_Job {
684
  $_POST[ 'new_title' ] = $translations[ md5( 'title' ) ];
685
  $_POST[ 'new_slug' ] = $new_post_name;
686
  $new_slug = wp_unique_post_slug( $new_post_name, $tr_product_id, $this->original_post->post_status, $this->original_post->post_type, $args[ 'post_parent' ] );
687
- $this->wpdb->update( $this->wpdb->posts, array( 'post_name' => $new_slug ), array( 'ID' => $tr_product_id ) );
 
 
 
 
688
  }
689
 
690
  $this->sitepress->set_element_language_details( $tr_product_id, 'post_' . $this->original_post->post_type, $product_trid, $this->get_target_language() );
276
 
277
  $taxonomies = get_object_taxonomies( 'product', 'objects' );
278
  foreach( $taxonomies as $taxonomy => $taxonomy_obj ){
279
+ if( $this->woocommerce_wpml->terms->is_translatable_wc_taxonomy( $taxonomy ) && is_taxonomy_translated( $taxonomy ) ){
280
  $product_terms = wp_get_post_terms( $this->product_id, $taxonomy );
281
  if( $product_terms ){
282
  $tax_section = new WPML_Editor_UI_Field_Section( $taxonomy_obj->label, __( 'Changes in these translations will affect terms in general! ( Not only for this product )', 'woocommerce-multilingual' ));
500
  $taxonomies = get_object_taxonomies( 'product', 'objects' );
501
 
502
  foreach( $taxonomies as $taxonomy => $taxonomy_obj ){
503
+ if( $this->woocommerce_wpml->terms->is_translatable_wc_taxonomy( $taxonomy ) && is_taxonomy_translated( $taxonomy ) ){
504
  $product_terms = wp_get_post_terms( $this->product_id, $taxonomy );
505
  if( !is_wp_error( $product_terms ) ){
506
  foreach( $product_terms as $term ){
684
  $_POST[ 'new_title' ] = $translations[ md5( 'title' ) ];
685
  $_POST[ 'new_slug' ] = $new_post_name;
686
  $new_slug = wp_unique_post_slug( $new_post_name, $tr_product_id, $this->original_post->post_status, $this->original_post->post_type, $args[ 'post_parent' ] );
687
+
688
+ wp_update_post( array(
689
+ 'ID' => $tr_product_id,
690
+ 'post_name' => $new_slug
691
+ ) );
692
  }
693
 
694
  $this->sitepress->set_element_language_details( $tr_product_id, 'post_' . $this->original_post->post_type, $product_trid, $this->get_target_language() );
inc/translation-editor/class-wcml-synchronize-product-data.php CHANGED
@@ -43,6 +43,8 @@ class WCML_Synchronize_Product_Data{
43
  add_action( 'wpml_translation_update', array( $this, 'icl_connect_translations_action' ) );
44
 
45
  add_action( 'deleted_term_relationships', array( $this, 'delete_term_relationships_update_term_count' ), 10, 2 );
 
 
46
  }
47
 
48
  add_action( 'woocommerce_reduce_order_stock', array( $this, 'sync_product_stocks_reduce' ) );
@@ -174,14 +176,14 @@ class WCML_Synchronize_Product_Data{
174
  $tt_names = array();
175
  if ($terms) {
176
  foreach ($terms as $term) {
177
- if( $term->taxonomy == 'product_type' ){
178
  $tt_names[] = $term->name;
179
  continue;
180
  }
181
  $tt_ids[] = $term->term_id;
182
  }
183
 
184
- if( $taxonomy == 'product_type' ) {
185
  wp_set_post_terms( $tr_product_id, $tt_names, $taxonomy );
186
  }else{
187
  $this->wcml_update_term_count_by_ids( $tt_ids, $lang, $taxonomy, $tr_product_id );
@@ -678,4 +680,29 @@ class WCML_Synchronize_Product_Data{
678
  return $is_sync_needed;
679
  }
680
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
681
  }
43
  add_action( 'wpml_translation_update', array( $this, 'icl_connect_translations_action' ) );
44
 
45
  add_action( 'deleted_term_relationships', array( $this, 'delete_term_relationships_update_term_count' ), 10, 2 );
46
+
47
+ add_action( 'woocommerce_product_set_visibility', array( $this, 'sync_product_translations_visibility' ) );
48
  }
49
 
50
  add_action( 'woocommerce_reduce_order_stock', array( $this, 'sync_product_stocks_reduce' ) );
176
  $tt_names = array();
177
  if ($terms) {
178
  foreach ($terms as $term) {
179
+ if ( in_array( $term->taxonomy, array( 'product_type', 'product_visibility' ) ) ) {
180
  $tt_names[] = $term->name;
181
  continue;
182
  }
183
  $tt_ids[] = $term->term_id;
184
  }
185
 
186
+ if ( ! $this->woocommerce_wpml->terms->is_translatable_wc_taxonomy( $taxonomy ) ) {
187
  wp_set_post_terms( $tr_product_id, $tt_names, $taxonomy );
188
  }else{
189
  $this->wcml_update_term_count_by_ids( $tt_ids, $lang, $taxonomy, $tr_product_id );
680
  return $is_sync_needed;
681
  }
682
 
683
+ public function sync_product_translations_visibility( $product_id ) {
684
+
685
+ if ( $this->woocommerce_wpml->products->is_original_product( $product_id ) ) {
686
+
687
+ $trid = $this->sitepress->get_element_trid( $product_id, 'post_product' );
688
+ $translations = $this->sitepress->get_element_translations( $trid, 'post_product' );
689
+
690
+ if ( $translations ) {
691
+
692
+ $product = wc_get_product( $product_id );
693
+ $terms = array();
694
+ if ( $product->is_featured() ) {
695
+ $terms[] = 'featured';
696
+ }
697
+
698
+ foreach ( $translations as $translation ) {
699
+ if ( ! $translation->original ) {
700
+ wp_set_post_terms( $translation->element_id, $terms, 'product_visibility', false );
701
+ }
702
+ }
703
+ }
704
+ }
705
+
706
+ }
707
+
708
  }
inc/translation-editor/class-wcml-synchronize-variations-data.php CHANGED
@@ -2,22 +2,29 @@
2
 
3
  class WCML_Synchronize_Variations_Data{
4
 
5
- private $woocommerce_wpml;
6
- private $sitepress;
 
 
 
7
  private $wpdb;
8
 
9
- public function __construct( &$woocommerce_wpml, &$sitepress, &$wpdb ) {
10
- $this->woocommerce_wpml = $woocommerce_wpml;
11
- $this->sitepress = $sitepress;
12
- $this->wpdb = $wpdb;
 
13
 
14
- add_action( 'woocommerce_ajax_save_product_variations', array( $this, 'sync_product_variations_action' ), 11 );
15
- add_action( 'wp_ajax_woocommerce_remove_variations', array( $this, 'remove_translations_for_variations' ), 9 );
16
 
17
- //save taxonomy in WPML interface
18
- add_action( 'wp_ajax_wpml_tt_save_term_translation', array( $this, 'update_taxonomy_in_variations' ), 7 );
 
 
 
 
 
19
 
20
- add_action( 'wp_ajax_woocommerce_remove_variation', array( $this, 'remove_variation_ajax' ), 9 );
21
  }
22
 
23
  public function sync_product_variations_action( $product_id ){
@@ -206,9 +213,10 @@ class WCML_Synchronize_Variations_Data{
206
  $name = $tt;
207
  }
208
 
209
- $terms = get_the_terms( $original_variation_id, $name );
 
 
210
  if ( !empty( $terms ) ) {
211
- $tax_sync = array();
212
  foreach ( $terms as $term ) {
213
  if ( $this->sitepress->is_translated_taxonomy( $tt ) ) {
214
  $term_id = apply_filters( 'translate_object_id', $term->term_id, $name, false, $lang );
@@ -221,6 +229,8 @@ class WCML_Synchronize_Variations_Data{
221
  }
222
  //set the fourth parameter in 'true' because we need to add new terms, instead of replacing all
223
  wp_set_object_terms( $tr_variation_id, $tax_sync, $name, true );
 
 
224
  }
225
  }
226
  }
2
 
3
  class WCML_Synchronize_Variations_Data{
4
 
5
+ /** @var woocommerce_wpml */
6
+ private $woocommerce_wpml;
7
+ /** @var SitePress */
8
+ private $sitepress;
9
+ /** @var wpdb */
10
  private $wpdb;
11
 
12
+ public function __construct( woocommerce_wpml $woocommerce_wpml, SitePress $sitepress, wpdb $wpdb ) {
13
+ $this->woocommerce_wpml = $woocommerce_wpml;
14
+ $this->sitepress = $sitepress;
15
+ $this->wpdb = $wpdb;
16
+ }
17
 
18
+ public function add_hooks(){
 
19
 
20
+ add_action( 'woocommerce_ajax_save_product_variations', array( $this, 'sync_product_variations_action' ), 11 );
21
+ add_action( 'wp_ajax_woocommerce_remove_variations', array( $this, 'remove_translations_for_variations' ), 9 );
22
+
23
+ //save taxonomy in WPML interface
24
+ add_action( 'wp_ajax_wpml_tt_save_term_translation', array( $this, 'update_taxonomy_in_variations' ), 7 );
25
+
26
+ add_action( 'wp_ajax_woocommerce_remove_variation', array( $this, 'remove_variation_ajax' ), 9 );
27
 
 
28
  }
29
 
30
  public function sync_product_variations_action( $product_id ){
213
  $name = $tt;
214
  }
215
 
216
+ $terms = get_the_terms( $original_variation_id, $name );
217
+ $tax_sync = array();
218
+
219
  if ( !empty( $terms ) ) {
 
220
  foreach ( $terms as $term ) {
221
  if ( $this->sitepress->is_translated_taxonomy( $tt ) ) {
222
  $term_id = apply_filters( 'translate_object_id', $term->term_id, $name, false, $lang );
229
  }
230
  //set the fourth parameter in 'true' because we need to add new terms, instead of replacing all
231
  wp_set_object_terms( $tr_variation_id, $tax_sync, $name, true );
232
+ }elseif( ! $this->woocommerce_wpml->terms->is_translatable_wc_taxonomy( $name ) ){
233
+ wp_set_object_terms( $tr_variation_id, $tax_sync, $name );
234
  }
235
  }
236
  }
locale/orig/woocommerce-multilingual.po CHANGED
@@ -13,683 +13,389 @@ msgstr ""
13
  "Language:en\n"
14
  "MIME-Version: 1.0\n"
15
 
16
- # 'label' => get_woocommerce_currency_symbol( $currency_code ),
17
- # 'description' => __( 'One-off cost for the booking as a whole.', 'woocommerce-bookings' ),
18
- # 'value' => get_post_meta( $post_id, '_wc_booking_cost_' . $currency_code, true ),
19
-
20
- msgid "One-off cost for the booking as a whole."
21
- msgstr ""
22
-
23
- # 'label' => get_woocommerce_currency_symbol( $currency_code ),
24
- # 'description' => __( 'This is the cost per block booked. All other costs (for resources and persons) are added to this.', 'woocommerce-bookings' ),
25
- # 'value' => get_post_meta( $post_id, '_wc_booking_base_cost_' . $currency_code, true ),
26
 
27
- msgid "This is the cost per block booked. All other costs (for resources and persons) are added to this."
28
  msgstr ""
29
 
30
- # 'label' => get_woocommerce_currency_symbol( $currency_code ),
31
- # 'description' => __( 'The cost is displayed to the user on the frontend. Leave blank to have it calculated for you. If a booking has varying costs, this will be prefixed with the word "from:".', 'woocommerce-bookings' ),
32
- # 'value' => get_post_meta( $post_id, '_wc_display_cost_' . $currency_code, true ),
33
 
34
- msgid "The cost is displayed to the user on the frontend. Leave blank to have it calculated for you. If a booking has varying costs, this will be prefixed with the word \"from:\"."
35
  msgstr ""
36
 
37
- # echo '<input type="radio" name="_wcml_custom_costs" id="wcml_custom_costs_auto" value="0" class="wcml_custom_costs_input" ' . $checked . ' />';
38
- # echo '<label for="wcml_custom_costs_auto">' . __( 'Calculate costs in other currencies automatically', 'woocommerce-multilingual' ) . '</label>';
39
- #
40
 
41
- msgid "Calculate costs in other currencies automatically"
42
  msgstr ""
43
 
44
- # echo '<input type="radio" name="_wcml_custom_costs" value="1" id="wcml_custom_costs_manually" class="wcml_custom_costs_input" ' . $checked . ' />';
45
- # echo '<label for="wcml_custom_costs_manually">' . __( 'Set costs in other currencies manually', 'woocommerce-multilingual' ) . '</label>';
46
- #
47
 
48
- msgid "Set costs in other currencies manually"
49
  msgstr ""
50
 
51
- # if ( ! $nonce || ! wp_verify_nonce( $nonce, 'booking_set_currency' ) ) {
52
- # echo json_encode( array( 'error' => __( 'Invalid nonce', 'woocommerce-multilingual' ) ) );
53
- # die();
54
 
55
- msgid "Invalid nonce"
56
  msgstr ""
57
 
58
- #
59
- # $bookings_section = new WPML_Editor_UI_Field_Section( __( 'Bookings', 'woocommerce-multilingual' ) );
60
- #
61
 
62
- msgid "Bookings"
63
  msgstr ""
64
 
65
- # $group = new WPML_Editor_UI_Field_Group( '', true );
66
- # $booking_field = new WPML_Editor_UI_Single_Line_Field( '_wc_booking_resouce_label', __( 'Resources Label', 'woocommerce-multilingual' ), $data, true );
67
- # $group->add_field( $booking_field );
68
 
69
- msgid "Resources Label"
70
  msgstr ""
71
 
72
- # if ( $orig_resources ) {
73
- # $group = new WPML_Editor_UI_Field_Group( __( 'Resources', 'woocommerce-multilingual' ) );
74
- # $group_title = __( 'Resources', 'woocommerce-multilingual' );
75
 
76
- msgid "Resources"
77
  msgstr ""
78
 
79
- #
80
- # $resource_field = new WPML_Editor_UI_Single_Line_Field( 'bookings-resource_' . $resource_id . '_title', __( 'Title', 'woocommerce-multilingual' ), $data, true );
81
- # $group->add_field( $resource_field );
82
 
83
- msgid "Title"
84
  msgstr ""
85
 
86
- # $divider = true;
87
- # $group_title = __( 'Person Types', 'woocommerce-multilingual' );
88
- # foreach ( $original_persons as $person_id ) {
89
 
90
- msgid "Person Types"
91
  msgstr ""
92
 
93
- #
94
- # $person_field = new WPML_Editor_UI_Single_Line_Field( 'bookings-person_' . $person_id . '_title', __( 'Person Type Name', 'woocommerce-multilingual' ), $data, false );
95
- # $group->add_field( $person_field );
96
 
97
- msgid "Person Type Name"
98
  msgstr ""
99
 
100
- # $group->add_field( $person_field );
101
- # $person_field = new WPML_Editor_UI_Single_Line_Field( 'bookings-person_' . $person_id . '_description', __( 'Description', 'woocommerce-multilingual' ), $data, false );
102
- # $group->add_field( $person_field );
103
 
104
- msgid "Description"
105
  msgstr ""
106
 
107
- # if ( $meta_key == '_wc_booking_resouce_label' ) {
108
- # return __( 'Resources label', 'woocommerce-multilingual' );
109
- # }
110
 
111
- msgid "Resources label"
112
  msgstr ""
113
 
114
- # $pointer_ui = new WCML_Pointer_UI(
115
- # sprintf( __( 'You can translate the titles of your custom Resources on the %sWooCommerce product translation page%s', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page=wpml-wcml').'">', '</a>' ),
116
- # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-bookings-woocommerce-multilingual/',
117
 
118
- msgid "You can translate the titles of your custom Resources on the %sWooCommerce product translation page%s"
119
  msgstr ""
120
 
121
- # $pointer_ui = new WCML_Pointer_UI(
122
- # sprintf( __( 'You can translate the Person Type Name and Description on the %sWooCommerce product translation page%s', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page=wpml-wcml').'">', '</a>' ),
123
- # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-bookings-woocommerce-multilingual/',
124
 
125
- msgid "You can translate the Person Type Name and Description on the %sWooCommerce product translation page%s"
126
  msgstr ""
127
 
128
- # <tr valign="top">
129
- # <th scope="row"><?php _e( 'Booking currency', 'woocommerce-multilingual' ); ?></th>
130
- # <td>
131
 
132
- msgid "Booking currency"
133
  msgstr ""
134
 
135
- # $message = '<div><p class="icl_cyan_box">';
136
- # $message .= sprintf(__('To translate Extra Options strings please save %s and go to the <b><a href="%s">String Translation interface</a></b>', 'woocommerce-multilingual'), $text, admin_url('admin.php?page='.WPML_ST_FOLDER.'/menu/string-translation.php&context=wc_extra_product_options'));
137
- # $message .= '</p></div>';
138
 
139
- msgid "To translate Extra Options strings please save %s and go to the <b><a href=\"%s\">String Translation interface</a></b>"
140
  msgstr ""
141
 
142
- # $pointer_ui = new WCML_Pointer_UI(
143
- # sprintf( __( 'You can translate this method title on the %sWPML String Translation page%s. Use the search on the top of that page to find the method title string.', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page='.WPML_ST_FOLDER.'/menu/string-translation.php').'">', '</a>' ),
144
- # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-table-rate-shipping-woocommerce-multilingual/',
145
 
146
- msgid "You can translate this method title on the %sWPML String Translation page%s. Use the search on the top of that page to find the method title string."
147
  msgstr ""
148
 
149
- # $pointer_ui = new WCML_Pointer_UI(
150
- # sprintf( __( 'You can translate the labels of your table rates on the %sWPML String Translation page%s. Use the search on the top of that page to find the labels strings.', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page='.WPML_ST_FOLDER.'/menu/string-translation.php').'">', '</a>' ),
151
- # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-table-rate-shipping-woocommerce-multilingual/',
152
 
153
- msgid "You can translate the labels of your table rates on the %sWPML String Translation page%s. Use the search on the top of that page to find the labels strings."
154
  msgstr ""
155
 
156
- #
157
- # $composite_section = new WPML_Editor_UI_Field_Section( __( 'Composite Products ( Components )', 'woocommerce-multilingual' ) );
158
- # end( $composite_data );
159
 
160
- msgid "Composite Products ( Components )"
161
  msgstr ""
162
 
163
- # $group = new WPML_Editor_UI_Field_Group( '', $divider );
164
- # $composite_field = new WPML_Editor_UI_Single_Line_Field( 'composite_'.$component_id.'_title', __( 'Name', 'woocommerce-multilingual' ), $data, false );
165
- # $group->add_field( $composite_field );
166
 
167
- msgid "Name"
168
  msgstr ""
169
 
170
- #
171
- # $composite_scenarios = new WPML_Editor_UI_Field_Section( __( 'Composite Products ( Scenarios )', 'woocommerce-multilingual' ) );
172
- # end( $composite_scenarios_meta );
173
 
174
- msgid "Composite Products ( Scenarios )"
175
  msgstr ""
176
 
177
- #
178
- # $bundles_section = new WPML_Editor_UI_Field_Section( __( 'Product Bundles', 'woocommerce-multilingual' ) );
179
- # end( $product_bundles );
180
 
181
- msgid "Product Bundles"
182
  msgstr ""
183
 
184
- # $pointer_ui = new WCML_Pointer_UI(
185
- # sprintf( __( 'You can translate strings related to global add-ons on the %sWPML String Translation page%s. Use the search on the top of that page to find the strings.', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page='.WPML_ST_FOLDER.'/menu/string-translation.php&context=wc_product_addons_strings').'">', '</a>' ),
186
- # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-product-add-ons-woocommerce-multilingual/',
187
 
188
- msgid "You can translate strings related to global add-ons on the %sWPML String Translation page%s. Use the search on the top of that page to find the strings."
189
  msgstr ""
190
 
191
- #
192
- # $addons_section = new WPML_Editor_UI_Field_Section( sprintf( __( 'Product Add-ons Group "%s"', 'woocommerce-multilingual' ), $product_addon['name'] ) );
193
- #
194
 
195
- msgid "Product Add-ons Group \"%s\""
196
  msgstr ""
197
 
198
- #
199
- # $labels_group = new WPML_Editor_UI_Field_Group( __( 'Options', 'woocommerce-multilingual' ) , true );
200
- #
201
 
202
- msgid "Options"
203
  msgstr ""
204
 
205
- # foreach ( $product_addon['options'] as $option_id => $option ) {
206
- # $option_label_field = new WPML_Editor_UI_Single_Line_Field( 'addon_'.$addon_id.'_option_'.$option_id.'_label', __( 'Label', 'woocommerce-multilingual' ), $data, false );
207
- # $labels_group->add_field( $option_label_field );
208
 
209
- msgid "Label"
210
  msgstr ""
211
 
212
- # $pointer_ui = new WCML_Pointer_UI(
213
- # sprintf( __( 'You can translate the Group Name, Group Description and every Option Label of your product add-on on the %sWooCommerce product translation page%s', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page=wpml-wcml').'">', '</a>' ),
214
- # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-product-add-ons-woocommerce-multilingual/',
215
 
216
- msgid "You can translate the Group Name, Group Description and every Option Label of your product add-on on the %sWooCommerce product translation page%s"
217
  msgstr ""
218
 
219
- # 'name' => 'language',
220
- # 'label' => __( 'Language', 'woo_ce' ),
221
- # 'default' => 1
222
 
223
- msgid "Language"
224
  msgstr ""
225
 
226
- # 'name' => 'translation_of',
227
- # 'label' => __( 'Translation of', 'woo_ce' ),
228
- # 'default' => 1
229
 
230
- msgid "Translation of"
231
  msgstr ""
232
 
233
- #
234
- # $tour_section = new WPML_Editor_UI_Field_Section( __('Tour Data', 'woocommerce-multilingual'));
235
- #
236
 
237
- msgid "Tour Data"
238
  msgstr ""
239
 
240
- # $group->add_field($composite_field);
241
- # $composite_field = new WPML_Editor_UI_Single_Line_Field('adventure_tour_' . $tour_tab_id . '_content', __('Content', 'woocommerce-multilingual'), $data, false);
242
- # $group->add_field($composite_field);
243
 
244
- msgid "Content"
245
  msgstr ""
246
 
247
- # if( $this->is_subscriptions_product( $product_id ) || $this->new_subscription ){
248
- # $labels[ '_regular_price' ] = __( 'Subscription Price', 'woocommerce-multilingual' );
249
- # $labels[ '_subscription_sign_up_fee' ] = __( 'Sign-up Fee', 'woocommerce-multilingual' );
250
 
251
- msgid "Subscription Price"
252
  msgstr ""
253
 
254
- # $labels[ '_regular_price' ] = __( 'Subscription Price', 'woocommerce-multilingual' );
255
- # $labels[ '_subscription_sign_up_fee' ] = __( 'Sign-up Fee', 'woocommerce-multilingual' );
256
- # }
257
 
258
- msgid "Sign-up Fee"
259
  msgstr ""
260
 
261
- # $pointer_ui = new WCML_Pointer_UI(
262
- # sprintf( __( 'You can translate strings related to subscription products on the %sWPML String Translation page%s. Use the search on the top of that page to find the strings.', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page='.WPML_ST_FOLDER.'/menu/string-translation.php&context=woocommerce_subscriptions').'">', '</a>' ),
263
- # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-subscriptions-woocommerce-multilingual/',
264
 
265
- msgid "You can translate strings related to subscription products on the %sWPML String Translation page%s. Use the search on the top of that page to find the strings."
266
  msgstr ""
267
 
268
- #
269
- # $tabs_section = new WPML_Editor_UI_Field_Section( __( 'Product tabs', 'woocommerce-multilingual' ) );
270
- #
271
 
272
- msgid "Product tabs"
273
  msgstr ""
274
 
275
- # $group->add_field( $tab_field );
276
- # $tab_field = new WPML_Editor_UI_Single_Line_Field( 'coretab_' . $prod_tab['id'].'_heading' , __( 'Heading', 'woocommerce-multilingual' ), $data, false );
277
- # $group->add_field( $tab_field );
278
 
279
- msgid "Heading"
280
  msgstr ""
281
 
282
- # $pointer_ui = new WCML_Pointer_UI(
283
- # sprintf( __( 'You can translate your custom product tabs on the %sWooCommerce product translation page%s', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page=wpml-wcml').'">', '</a>' ),
284
- # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-tab-manager-woocommerce-multilingual/',
285
 
286
- msgid "You can translate your custom product tabs on the %sWooCommerce product translation page%s"
287
  msgstr ""
288
 
289
- # }
290
- # wp_send_json_error( __( 'Notice does not exists.', 'sitepress' ) );
291
- # }
292
 
293
- msgid "Notice does not exists."
294
  msgstr ""
295
 
296
- # }
297
- # wp_send_json_error( __( 'Group does not exist.', 'sitepress' ) );
298
- # }
299
 
300
- msgid "Group does not exist."
301
  msgstr ""
302
 
303
- # if ( $this->hide_html_added || $notice->can_be_hidden() ) {
304
- # $result .= ' data-hide-text="' . __( 'Hide', 'sitepress' ) . '" ';
305
- # }
306
 
307
- msgid "Hide"
308
  msgstr ""
309
 
310
- # } else {
311
- # $hide_html .= esc_html__( 'Hide this notice.', 'sitepress' );
312
- # }
313
 
314
- msgid "Hide this notice."
315
  msgstr ""
316
 
317
- # } else {
318
- # $dismiss_html .= esc_html__( 'Dismiss this notice.', 'sitepress' );
319
- # }
320
 
321
- msgid "Dismiss this notice."
322
  msgstr ""
323
 
324
- # $notice->get_collapsed_text(),
325
- # $localized_text ? esc_html( $localized_text ) : esc_html__( 'Show this notice.', 'sitepress' ),
326
- # $notice->get_text()
327
 
328
- msgid "Show this notice."
329
  msgstr ""
330
 
331
- # $this->admin_notice = '<div class="error wpml-admin-notice">';
332
- # $this->admin_notice .= '<h3>' . __( 'WPML Update is Incomplete', 'sitepress' ) . '</h3>';
333
- # $this->admin_notice .= '<p>' . implode( '</p><p>', $notice_paragraphs ) . '</p>';
334
 
335
- msgid "WPML Update is Incomplete"
336
  msgstr ""
337
 
338
- # if ( count( $this->valid_plugins ) === 1 ) {
339
- # $paragraph = __( 'You are running updated %s, but the following component is not updated:', 'sitepress' );
340
- # $paragraph = sprintf( $paragraph, '<strong>' . $this->valid_plugins[0] . '</strong>' );
341
 
342
- msgid "You are running updated %s, but the following component is not updated:"
343
  msgstr ""
344
 
345
- # } else {
346
- # $paragraph = __( 'You are running updated %s and %s, but the following components are not updated:', 'sitepress' );
347
- # $first_valid_plugins = implode( ', ', array_slice( $this->valid_plugins, 0, - 1 ) );
348
 
349
- msgid "You are running updated %s and %s, but the following components are not updated:"
350
  msgstr ""
351
 
352
- # } else {
353
- # $paragraph = __( 'The following components are not updated:', 'sitepress' );
354
  # }
355
 
356
- msgid "The following components are not updated:"
357
  msgstr ""
358
 
359
- # private function get_invalid_plugins_report_footer() {
360
- # $wpml_org_url = '<a href="https://wpml.org/account/" title="WPML.org account">' . __( 'WPML.org account', 'sitepress' ) . '</a>';
361
- #
362
 
363
- msgid "WPML.org account"
364
  msgstr ""
365
 
366
- #
367
- # $notice_paragraph = __( 'Your site will not work as it should in this configuration', 'sitepress' );
368
- # $notice_paragraph .= ' ';
369
 
370
- msgid "Your site will not work as it should in this configuration"
371
  msgstr ""
372
 
373
- # $notice_paragraph .= ' ';
374
- # $notice_paragraph .= __( 'Please update all components which you are using.', 'sitepress' );
375
- # $notice_paragraph .= ' ';
376
 
377
- msgid "Please update all components which you are using."
378
  msgstr ""
379
 
380
- # $notice_paragraph .= ' ';
381
- # $notice_paragraph .= sprintf( __( 'For WPML components you can receive updates from your %s or automatically, after you register WPML.', 'sitepress' ), $wpml_org_url );
382
- #
383
 
384
- msgid "For WPML components you can receive updates from your %s or automatically, after you register WPML."
385
  msgstr ""
386
 
387
- # if ( false !== strpos( $e->getMessage(), 'create' ) ) {
388
- # $text = sprintf( __( 'WPML could not create a cache directory in %s', 'sitepress' ), $this->cache_directory );
389
- # } else {
390
 
391
- msgid "WPML could not create a cache directory in %s"
392
  msgstr ""
393
 
394
- # } else {
395
- # $text = sprintf( __( 'WPML could not write in the cache directory: %s', 'sitepress' ), $this->cache_directory );
396
- # }
397
 
398
- msgid "WPML could not write in the cache directory: %s"
399
  msgstr ""
400
 
401
- # $translation_array = array(
402
- # 'installing' => __( 'Installing %s', 'installer' ),
403
- # 'updating' => __( 'Updating %s', 'installer' ),
404
 
405
- msgid "Installing %s"
406
- msgstr ""
407
-
408
- # 'installing' => __( 'Installing %s', 'installer' ),
409
- # 'updating' => __( 'Updating %s', 'installer' ),
410
- # 'activating' => __( 'Activating %s', 'installer' )
411
-
412
- msgid "Updating %s"
413
- msgstr ""
414
-
415
- # 'updating' => __( 'Updating %s', 'installer' ),
416
- # 'activating' => __( 'Activating %s', 'installer' )
417
- # );
418
-
419
- msgid "Activating %s"
420
- msgstr ""
421
-
422
- # $this->menu_multisite_redirect();
423
- # add_options_page(__('Installer', 'installer'), __('Installer', 'installer'), 'manage_options', 'installer', array($this, 'show_products')) ;
424
- # }else{
425
-
426
- msgid "Installer"
427
- msgstr ""
428
-
429
- # public function plugins_action_links_registered($links){
430
- # $links[] = '<a href="' . $this->menu_url() . '">' . __('Registered', 'installer') . '</a>';
431
- # return $links;
432
-
433
- msgid "Registered"
434
- msgstr ""
435
-
436
- # public function plugins_action_links_not_registered($links){
437
- # $links[] = '<a href="' . $this->menu_url() . '">' . __('Register', 'installer') . '</a>';
438
- # return $links;
439
-
440
- msgid "Register"
441
- msgstr ""
442
-
443
- # 'type' => 'error',
444
- # 'text' => sprintf( __( 'You are using an invalid site key defined as the constant %s (most likely in wp-config.php).
445
- # Please remove it or use the correct value in order to be able to register correctly.', 'installer' ), 'OTGS_INSTALLER_SITE_KEY_' . strtoupper( $repository_id ) )
446
-
447
- msgid "You are using an invalid site key defined as the constant %s (most likely in wp-config.php). \r\n Please remove it or use the correct value in order to be able to register correctly."
448
- msgstr ""
449
-
450
- # echo '<div class="updated error otgs-is-dismissible"><p>';
451
- # printf(__("To get automatic updates, you need to register %s for this site. %sRegister %s%s", 'sitepress'),
452
- # $nag['product_name'], '<a class="button-primary" href="' . $this->menu_url() . '">', $nag['product_name'], '</a>');
453
-
454
- msgid "To get automatic updates, you need to register %s for this site. %sRegister %s%s"
455
- msgstr ""
456
-
457
- # echo '</p>';
458
- # echo '<span class="installer-dismiss-nag notice-dismiss" data-repository="' . $nag['repository_id'] . '"><span class="screen-reader-text">' . __('Dismiss', 'sitepress') . '</span></span>';
459
- # echo '</div>';
460
-
461
- msgid "Dismiss"
462
- msgstr ""
463
-
464
- #
465
- # $tabs['commercial'] = __('Commercial', 'installer');
466
- #
467
-
468
- msgid "Commercial"
469
- msgstr ""
470
-
471
- #
472
- # $error = sprintf(__("Installer cannot display the products information because the automatic updating for %s was explicitly disabled with the configuration below (usually in wp-config.php):", 'installer'), strtoupper( join(', ', $repository_names) ));
473
- # $error .= '<br /><br /><code>define("OTGS_DISABLE_AUTO_UPDATES", true);</code><br /><br />';
474
-
475
- msgid "Installer cannot display the products information because the automatic updating for %s was explicitly disabled with the configuration below (usually in wp-config.php):"
476
- msgstr ""
477
-
478
- # $error .= '<br /><br /><code>define("OTGS_DISABLE_AUTO_UPDATES", true);</code><br /><br />';
479
- # $error .= sprintf(__("In order to see the products information, please run the %smanual updates check%s to initialize the products list or (temporarily) remove the above code.", 'installer'), '<a href="' . admin_url('update-core.php') . '">', '</a>');
480
- #
481
-
482
- msgid "In order to see the products information, please run the %smanual updates check%s to initialize the products list or (temporarily) remove the above code."
483
- msgstr ""
484
-
485
- #
486
- # $error = sprintf(__("Installer cannot contact our updates server to get information about the available products and check for new versions. If you are seeing this message for the first time, you can ignore it, as it may be a temporary communication problem. If the problem persists and your WordPress admin is slowing down, you can disable automated version checks. Add the following line to your wp-config.php file:", 'installer'), strtoupper($id));
487
- # $error .= '<br /><br /><code>define("OTGS_DISABLE_AUTO_UPDATES", true);</code>';
488
-
489
- msgid "Installer cannot contact our updates server to get information about the available products and check for new versions. If you are seeing this message for the first time, you can ignore it, as it may be a temporary communication problem. If the problem persists and your WordPress admin is slowing down, you can disable automated version checks. Add the following line to your wp-config.php file:"
490
- msgstr ""
491
-
492
- #
493
- # echo '<center>' . __('No repositories defined.', 'installer') . '</center>';
494
- #
495
-
496
- msgid "No repositories defined."
497
- msgstr ""
498
-
499
- # } else {
500
- # $error = __( 'Invalid site key for the current site.', 'installer' )
501
- # . '<br /><div class="installer-footnote">' . __('Please note that the site key is case sensitive.', 'installer') . '</div>';
502
-
503
- msgid "Invalid site key for the current site."
504
- msgstr ""
505
-
506
- # $error = __( 'Invalid site key for the current site.', 'installer' )
507
- # . '<br /><div class="installer-footnote">' . __('Please note that the site key is case sensitive.', 'installer') . '</div>';
508
- # }
509
-
510
- msgid "Please note that the site key is case sensitive."
511
- msgstr ""
512
-
513
- # if( preg_match('#Could not resolve host: (.*)#', $error, $matches) || preg_match('#Couldn\'t resolve host \'(.*)\'#', $error, $matches) ){
514
- # $error = sprintf(__("%s cannot access %s to register. Try again to see if it's a temporary problem. If the problem continues, make sure that this site has access to the Internet. You can still use the plugin without registration, but you will not receive automated updates.", 'installer'),
515
- # '<strong><i>' . $this->get_generic_product_name($repository_id) . '</i></strong>',
516
-
517
- msgid "%s cannot access %s to register. Try again to see if it's a temporary problem. If the problem continues, make sure that this site has access to the Internet. You can still use the plugin without registration, but you will not receive automated updates."
518
- msgstr ""
519
-
520
- # unset($this->settings['repositories'][$repository_id]['subscription']);
521
- # $error = __( 'Invalid site key for the current site. If the error persists, try to unregister first and then register again with the same site key.', 'installer' );
522
- # }
523
-
524
- msgid "Invalid site key for the current site. If the error persists, try to unregister first and then register again with the same site key."
525
- msgstr ""
526
-
527
- # $days = 30;
528
- # $message = __('You will have to renew your subscription in order to continue getting the updates and support.', 'installer');
529
- #
530
-
531
- msgid "You will have to renew your subscription in order to continue getting the updates and support."
532
- msgstr ""
533
-
534
- # echo $this->_plugins_renew_warnings[$plugin_file]. ' ';
535
- # printf(__('%sRenew here%s.', 'installer'),
536
- # '<a href="' . $this->menu_url() . '">', '</a>');
537
-
538
- msgid "%sRenew here%s."
539
- msgstr ""
540
-
541
- # $ret = false;
542
- # $message = __('Your subscription appears to no longer be valid. Please try to register again using a valid site key.', 'installer');
543
- # }
544
-
545
- msgid "Your subscription appears to no longer be valid. Please try to register again using a valid site key."
546
- msgstr ""
547
-
548
- # <p class="installer-q-icon">
549
- # <?php printf( __('You must have a valid subscription in order to get upgrades or support for this plugin. %sPurchase a subscription or enter an existing site key%s.', 'installer'),
550
- # '<a href="' . $this->menu_url() . '">', '</a>'); ?>
551
-
552
- msgid "You must have a valid subscription in order to get upgrades or support for this plugin. %sPurchase a subscription or enter an existing site key%s."
553
- msgstr ""
554
-
555
- #
556
- # $error_message = sprintf(__("%s cannot update because your site's registration is not valid. Please %sregister %s%s again for this site first.", 'installer'),
557
- # '<strong>' . $plugin_name . '</strong>', '<a target="_top" href="' . $this->menu_url() . '&validate_repository=' . $plugin_repository .
558
-
559
- msgid "%s cannot update because your site's registration is not valid. Please %sregister %s%s again for this site first."
560
- msgstr ""
561
-
562
- # echo '<div class="wrap">';
563
- # echo '<h2>' . __( 'Update Plugin', 'installer' ) . '</h2>';
564
- # echo '<a href="' . admin_url('plugins.php') . '">' . __( 'Return to the plugins page', 'installer' ) . '</a>';
565
-
566
- msgid "Update Plugin"
567
- msgstr ""
568
-
569
- # echo '<h2>' . __( 'Update Plugin', 'installer' ) . '</h2>';
570
- # echo '<a href="' . admin_url('plugins.php') . '">' . __( 'Return to the plugins page', 'installer' ) . '</a>';
571
- # echo '</div>';
572
-
573
- msgid "Return to the plugins page"
574
- msgstr ""
575
-
576
- # echo '<div><p class="installer-warn-box">' .
577
- # sprintf(_n('Your subscription expires in %d day.', 'Your subscription expires in %d days.', $days_to_expiration, 'installer'), $days_to_expiration) .
578
- # '<br />' . $message .
579
-
580
- msgid "Your subscription expires in %d day."
581
- msgstr ""
582
-
583
- # echo '<div><p class="installer-warn-box">' .
584
- # sprintf(_n('Your subscription expires in %d day.', 'Your subscription expires in %d days.', $days_to_expiration, 'installer'), $days_to_expiration) .
585
- # '<br />' . $message .
586
-
587
- msgid "Your subscription expires in %d days."
588
- msgstr ""
589
-
590
- # public function win_paths_exception_message(){
591
- # return __('Downloading is not possible. WordPress cannot create required folders because of the
592
- # 256 characters limitation of the current Windows environment.', 'installer');
593
-
594
- msgid "Downloading is not possible. WordPress cannot create required folders because of the\r\n 256 characters limitation of the current Windows environment."
595
- msgstr ""
596
-
597
- # echo '<div class="wrap">';
598
- # echo '<h2>' . __('Update Plugin') . '</h2>';
599
- # echo '<a href="' . admin_url('update-core.php') . '">' . __('Return to the updates page', 'installer') . '</a>';
600
-
601
- msgid "Update Plugin"
602
- msgstr ""
603
-
604
- # echo '<h2>' . __('Update Plugin') . '</h2>';
605
- # echo '<a href="' . admin_url('update-core.php') . '">' . __('Return to the updates page', 'installer') . '</a>';
606
- # echo '</div>';
607
-
608
- msgid "Return to the updates page"
609
- msgstr ""
610
-
611
- # $theme_repo_name = $this->installer_theme_get_repo_product_name( $frontend_tab_selected );;
612
- # $response['unregistered_messages'] = sprintf( __( 'To install and update %s, please %sregister%s %s for this site.', 'installer' ),
613
- # $theme_repo_name, '<a href="' . $registration_url . '">', '</a>', $theme_repo_name );
614
-
615
- msgid "To install and update %s, please %sregister%s %s for this site."
616
- msgstr ""
617
-
618
- # if(empty($args['repository']) || empty($args['package']) || empty($args['product'])){
619
- # echo __('Incorrect setup', 'installer');
620
- # return;
621
-
622
- msgid "Incorrect setup"
623
- msgstr ""
624
-
625
- # if(!$product){
626
- # echo __('Invalid product', 'installer');
627
- # return;
628
-
629
- msgid "Invalid product"
630
- msgstr ""
631
-
632
- # }else{
633
- # echo __('Unknown repository', 'installer');
634
- # return;
635
-
636
- msgid "Unknown repository"
637
- msgstr ""
638
-
639
- # if($subscription_type != $product['subscription_type'] && !$this->have_superior_subscription($subscription_type, $product) && $site_key){
640
- # $subscription_no_match = sprintf(__(' Your current site key (%s) does not match the selected product (%s).', 'installer'), $site_key, $product['name']);
641
- # }
642
-
643
- msgid " Your current site key (%s) does not match the selected product (%s)."
644
- msgstr ""
645
-
646
- #
647
- # <a class="button-primary" href="<?php echo $this->append_parameters_to_buy_url($product['url'], $repository_id, $args) ?>"><?php printf(__('Buy %s', 'installer'), $args['product_name']) ?></a>
648
- #
649
-
650
- msgid "Buy %s"
651
- msgstr ""
652
-
653
- # <br />
654
- # <?php printf(__('Already bought %s?', 'installer'), $args['product_name']) ?>
655
- # <a class="enter_site_key_js<?php if( WP_Installer::get_repository_hardcoded_site_key( $repository_id ) ): ?> disabled<?php endif ?>" href="#"
656
-
657
- msgid "Already bought %s?"
658
- msgstr ""
659
-
660
- # <li>
661
- # <a href="<?php echo $this->append_parameters_to_buy_url($renewal['url'], $repository_id, $args) ?>"><?php printf(__('Renew %s', 'installer'), $args['product_name']) ?></a>
662
- # </li>
663
-
664
- msgid "Renew %s"
665
- msgstr ""
666
-
667
- # >
668
- # <?php printf(__("Remove current site key (%s)", 'installer'), $site_key) ?>
669
- # </a>
670
-
671
- msgid "Remove current site key (%s)"
672
- msgstr ""
673
-
674
- # <?php if($support_link): ?>
675
- # <p><a href="<?php echo $support_link ?>" target="_blank"><?php printf(__('%s support on wpml.org', 'installer'), $args['name'] ) ?></a></p>
676
- #
677
-
678
- msgid "%s support on wpml.org"
679
- msgstr ""
680
-
681
- # disabled="disabled"
682
- # title="<?php printf( esc_attr__("Site-key was set by %s, most likely in wp-config.php. Please remove the constant before attempting to register.", 'installer'), 'OTGS_INSTALLER_SITE_KEY_' . strtoupper($repository_id) ) ?>"
683
- # <?php endif; ?>
684
-
685
- msgid "Site-key was set by %s, most likely in wp-config.php. Please remove the constant before attempting to register."
686
- msgstr ""
687
-
688
- # disabled="disabled"
689
- # title="<?php printf( esc_attr__("Site-key was set by %s, most likely in wp-config.php. Please remove the constant before attempting to unregister.", 'installer'), 'OTGS_INSTALLER_SITE_KEY_' . strtoupper($repository_id) ) ?>"
690
- # <?php endif; ?>
691
-
692
- msgid "Site-key was set by %s, most likely in wp-config.php. Please remove the constant before attempting to unregister."
693
  msgstr ""
694
 
695
  # >
@@ -699,9 +405,9 @@ msgstr ""
699
  msgid "Enter site key"
700
  msgstr ""
701
 
702
- #
703
  # <div><p class="installer-warn-box"><?php _e('Subscription is expired.', 'installer') ?></p></div>
704
- #
705
 
706
  msgid "Subscription is expired."
707
  msgstr ""
@@ -727,44 +433,37 @@ msgstr ""
727
  msgid "Downloading is not possible because WordPress cannot write into the plugins folder. %sHow to fix%s."
728
  msgstr ""
729
 
730
- # <br clear="all" /><br />
731
- # <strong><?php _e('Downloads:', 'installer') ?></strong>
732
- #
733
-
734
- msgid "Downloads:"
735
- msgstr ""
736
-
737
  # <th>&nbsp;</th>
738
  # <th><?php _e('Plugin', 'installer') ?></th>
739
- # <th><?php _e('Current version', 'installer') ?></th>
740
 
741
  msgid "Plugin"
742
  msgstr ""
743
 
744
  # <th><?php _e('Plugin', 'installer') ?></th>
745
- # <th><?php _e('Current version', 'installer') ?></th>
746
- # <th><?php _e('Released', 'installer') ?></th>
747
 
748
- msgid "Current version"
749
  msgstr ""
750
 
751
- # <th><?php _e('Current version', 'installer') ?></th>
 
752
  # <th><?php _e('Released', 'installer') ?></th>
753
- # <th><?php _e('Installed version', 'installer') ?></th>
754
 
755
- msgid "Released"
756
  msgstr ""
757
 
 
758
  # <th><?php _e('Released', 'installer') ?></th>
759
- # <th><?php _e('Installed version', 'installer') ?></th>
760
  # <th>&nbsp;</th>
761
 
762
- msgid "Installed version"
763
  msgstr ""
764
 
765
  # <span class="<?php echo $class ?>"><?php echo $v; ?></span>
766
- # <?php if($this->plugin_is_embedded_version($download['name'], $download['slug'])): ?>&nbsp;<?php _e('(embedded)', 'installer'); ?><?php endif; ?>
767
- # <?php endif; ?>
768
 
769
  msgid "(embedded)"
770
  msgstr ""
@@ -820,51 +519,93 @@ msgstr ""
820
 
821
  # &nbsp;
822
  # <label><input name="activate" type="checkbox" value="1" disabled="disabled" />&nbsp;<?php _e('Activate after download', 'installer') ?></label>
823
- #
824
 
825
  msgid "Activate after download"
826
  msgstr ""
827
 
828
- #
829
  # <div class="installer-status-success"><?php _e('Operation complete!', 'installer') ?></div>
830
- #
831
 
832
  msgid "Operation complete!"
833
  msgstr ""
834
 
835
- #
836
  # <span class="installer-revalidate-message hidden"><?php _e("Download failed!\n\nPlease refresh the page and try again.", 'installer') ?></span>
837
  # </form>
838
 
839
  msgid "Download failed!\n\nPlease refresh the page and try again."
840
  msgstr ""
841
 
842
- #
843
  # <input type="submit" class="button-secondary" value="<?php esc_attr_e('Download', 'installer') ?>" disabled="disabled" />
844
  # &nbsp;
845
 
846
  msgid "Download"
847
  msgstr ""
848
 
849
- # >
850
- # <?php printf(__('Register %s', 'installer'), $generic_product_name); ?>
851
- # </a>&nbsp;&nbsp;
852
 
853
- msgid "Register %s"
854
  msgstr ""
855
 
856
- #
857
- # <div class="alignleft" style="margin-top:6px;"><?php printf(__('1. Go to your %s%s account%s and add this site URL: %s', 'installer'),
858
- # '<a href="' . $this->settings['repositories'][$repository_id]['data']['site_keys_management_url'] . '?add='.urlencode($this->get_installer_site_url( $repository_id )).'">',
859
 
860
- msgid "1. Go to your %s%s account%s and add this site URL: %s"
861
  msgstr ""
862
 
863
- # >
864
- # <?php printf(__("Unregister %s from this site", 'installer'), $generic_product_name) ?></a>&nbsp;
865
- # <a class="update_site_key_js button-secondary" href="#" data-repository=<?php echo $repository_id ?>
866
 
867
- msgid "Unregister %s from this site"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
868
  msgstr ""
869
 
870
  # <?php if($expires = $this->settings['repositories'][$repository_id]['subscription']['data']->expires): ?>
@@ -881,9 +622,9 @@ msgstr ""
881
  msgid "%s is registered on this site. Your Lifetime account gives you updates for life."
882
  msgstr ""
883
 
884
- #
885
  # <p><i><?php printf(__('This page lets you install plugins and update existing plugins. To remove any of these plugins, go to the %splugins%s page and if you have the permission to remove plugins you should be able to do this.', 'installer'), '<a href="' . admin_url('plugins.php') . '">' , '</a>'); ?></i></p>
886
- #
887
 
888
  msgid "This page lets you install plugins and update existing plugins. To remove any of these plugins, go to the %splugins%s page and if you have the permission to remove plugins you should be able to do this."
889
  msgstr ""
@@ -944,13 +685,6 @@ msgstr ""
944
  msgid "OK"
945
  msgstr ""
946
 
947
- # <input class="button-primary" type="submit" value="<?php esc_attr_e('OK', 'installer') ?>" />
948
- # <input class="button-secondary cancel_site_key_js" type="button" value="<?php esc_attr_e('Cancel', 'installer') ?>" />
949
- #
950
-
951
- msgid "Cancel"
952
- msgstr ""
953
-
954
  # <a class="remove_site_key_js button-secondary" href="#" data-repository=<?php echo $repository_id ?>
955
  # data-confirmation="<?php esc_attr_e('Are you sure you want to unregister?', 'installer') ?>"
956
  # data-nonce="<?php echo wp_create_nonce('remove_site_key_' . $repository_id) ?>"
@@ -965,55 +699,6 @@ msgstr ""
965
  msgid "Click to see individual components options."
966
  msgstr ""
967
 
968
- # <td class="twelve">
969
- # <div class="installer-status-downloading"><?php _e('downloading...', 'installer') ?></div>
970
- # <div class="installer-status-downloaded" data-fail="<?php _e('failed!', 'installer') ?>"><?php _e('downloaded', 'installer') ?></div>
971
-
972
- msgid "downloading..."
973
- msgstr ""
974
-
975
- # <div class="installer-status-downloading"><?php _e('downloading...', 'installer') ?></div>
976
- # <div class="installer-status-downloaded" data-fail="<?php _e('failed!', 'installer') ?>"><?php _e('downloaded', 'installer') ?></div>
977
- # </td>
978
-
979
- msgid "downloaded"
980
- msgstr ""
981
-
982
- #
983
- # <span class="installer-revalidate-message hidden"><?php _e("Download failed!\n\nClick OK to revalidate your subscription or CANCEL to try again.", 'installer') ?></span>
984
- # </form>
985
-
986
- msgid "Download failed!\n\nClick OK to revalidate your subscription or CANCEL to try again."
987
- msgstr ""
988
-
989
- # <th><?php _e('Plugin', 'installer') ?></th>
990
- # <th><img src="<?php echo $this->plugin_url() ?>/res/img/globe.png" alt="<?php esc_attr_e('Available', 'installer') ?>" width="16" height="16"></th>
991
- # <th><img src="<?php echo $this->plugin_url() ?>/res/img/computer.png" alt="<?php esc_attr_e('Installed', 'installer') ?>" width="16" height="16"></th>
992
-
993
- msgid "Available"
994
- msgstr ""
995
-
996
- # <th><img src="<?php echo $this->plugin_url() ?>/res/img/globe.png" alt="<?php esc_attr_e('Available', 'installer') ?>" width="16" height="16"></th>
997
- # <th><img src="<?php echo $this->plugin_url() ?>/res/img/computer.png" alt="<?php esc_attr_e('Installed', 'installer') ?>" width="16" height="16"></th>
998
- # <th><img src="<?php echo $this->plugin_url() ?>/res/img/dn2.gif" alt="<?php esc_attr_e('Downloading', 'installer') ?>" width="16" height="16"></th>
999
-
1000
- msgid "Installed"
1001
- msgstr ""
1002
-
1003
- # <th><img src="<?php echo $this->plugin_url() ?>/res/img/computer.png" alt="<?php esc_attr_e('Installed', 'installer') ?>" width="16" height="16"></th>
1004
- # <th><img src="<?php echo $this->plugin_url() ?>/res/img/dn2.gif" alt="<?php esc_attr_e('Downloading', 'installer') ?>" width="16" height="16"></th>
1005
- # <th><img src="<?php echo $this->plugin_url() ?>/res/img/on.png" alt="<?php esc_attr_e('Activate', 'installer') ?>" width="16" height="16"></th>
1006
-
1007
- msgid "Downloading"
1008
- msgstr ""
1009
-
1010
- # <th><img src="<?php echo $this->plugin_url() ?>/res/img/dn2.gif" alt="<?php esc_attr_e('Downloading', 'installer') ?>" width="16" height="16"></th>
1011
- # <th><img src="<?php echo $this->plugin_url() ?>/res/img/on.png" alt="<?php esc_attr_e('Activate', 'installer') ?>" width="16" height="16"></th>
1012
- # </tr>
1013
-
1014
- msgid "Activate"
1015
- msgstr ""
1016
-
1017
  # $taxonomy_obj = get_taxonomy($taxonomy);
1018
  # $message = sprintf(__('To translate %s please use the %s translation%s page, inside the %sWooCommerce Multilingual admin%s.', 'woocommerce-multilingual'),
1019
  # $taxonomy_obj->labels->name,
@@ -1021,16 +706,16 @@ msgstr ""
1021
  msgid "To translate %s please use the %s translation%s page, inside the %sWooCommerce Multilingual admin%s."
1022
  msgstr ""
1023
 
1024
- #
1025
  # $response['progress'] = $response['go'] ? sprintf(__('%d products left', 'woocommerce-multilingual'), count($post_ids) - $posts_processed) : __('Synchronization complete!', 'woocommerce-multilingual');
1026
- #
1027
 
1028
  msgid "%d products left"
1029
  msgstr ""
1030
 
1031
- #
1032
  # $response['progress'] = $response['go'] ? sprintf(__('%d products left', 'woocommerce-multilingual'), count($post_ids) - $posts_processed) : __('Synchronization complete!', 'woocommerce-multilingual');
1033
- #
1034
 
1035
  msgid "Synchronization complete!"
1036
  msgstr ""
@@ -1063,331 +748,312 @@ msgstr ""
1063
  msgid "All %s have the same %s assignments."
1064
  msgstr ""
1065
 
1066
- #
1067
  # $out .= sprintf(__('Successfully updated %s for all translated %s.', 'woocommerce-multilingual'), $wp_taxonomies[$taxonomy]->labels->name, $wp_post_types[$object_type]->labels->name);
1068
- #
1069
 
1070
  msgid "Successfully updated %s for all translated %s."
1071
  msgstr ""
1072
 
1073
- # 'id' => 'wcml-settings-saved',
1074
- # 'text' => __('Your settings have been saved.', 'woocommerce-multilingual' ),
1075
- # 'group' => 'wcml-multi-currency',
1076
 
1077
- msgid "Your settings have been saved."
1078
  msgstr ""
1079
 
1080
- #
1081
- # $args['title'] = empty($_POST['currency']) ? __('Add new currency', 'woocommerce-multilingual') : __('Update currency', 'woocommerce-multilingual');
1082
- #
1083
 
1084
- msgid "Add new currency"
1085
  msgstr ""
1086
 
1087
- #
1088
- # $args['title'] = empty($_POST['currency']) ? __('Add new currency', 'woocommerce-multilingual') : __('Update currency', 'woocommerce-multilingual');
1089
- #
1090
 
1091
- msgid "Update currency"
1092
  msgstr ""
1093
 
1094
- #
1095
- # $args['title'] = sprintf( __( 'Update settings for %s', 'woocommerce-multilingual' ),
1096
- # '<strong>' . $args['currency_name'] . ' (' . $args['currency_symbol'] . ')</strong>' );
1097
 
1098
- msgid "Update settings for %s"
1099
  msgstr ""
1100
 
1101
- # 'id' => $message_id,
1102
- # 'text' => sprintf(__('The default currency was changed. In order to show accurate prices in all currencies, you need to update the exchange rates under the %sMulti-currency%s configuration.',
1103
- # 'woocommerce-multilingual'), '<a href="' . admin_url('admin.php?page=wpml-wcml&tab=multi-currency') . '">', '</a>'),
1104
 
1105
- msgid "The default currency was changed. In order to show accurate prices in all currencies, you need to update the exchange rates under the %sMulti-currency%s configuration."
1106
  msgstr ""
1107
 
1108
- # 'interval' => $interval,
1109
- # 'display' => sprintf( __( 'Monthly on the %s', 'woocommerce-multilingual' ), $month_day ),
1110
  # );
 
 
1111
 
1112
- msgid "Monthly on the %s"
1113
  msgstr ""
1114
 
1115
- # 'interval' => 604800,
1116
- # 'display' => sprintf( __( 'Weekly on %s', 'woocommerce-multilingual' ), $week_day ),
1117
- # );
1118
 
1119
- msgid "Weekly on %s"
1120
  msgstr ""
1121
 
1122
- # if( strpos( $json->error->info, 'You have not supplied an API Access Key' ) !== false ){
1123
- # $error = __('You have entered an incorrect API Access Key', 'woocommerce-multilingual');
1124
- # }else{
1125
 
1126
- msgid "You have entered an incorrect API Access Key"
1127
  msgstr ""
1128
 
1129
- # } else{
1130
- # $error = __( 'Cannot get exchange rates. Connection failed.', 'woocommerce-multilingual' );
1131
- # }
1132
 
1133
- msgid "Cannot get exchange rates. Connection failed."
1134
  msgstr ""
1135
 
1136
- # if( !is_numeric( $rate ) ){
1137
- # $error = sprintf( __("Error reading the exchange rate for %s. Please try again. If the error persist, try selecting a different exchange rate service.", 'woocommerce-multilingual' ), $to );
1138
- # parent::save_last_error( $error );
1139
 
1140
- msgid "Error reading the exchange rate for %s. Please try again. If the error persist, try selecting a different exchange rate service."
1141
  msgstr ""
1142
 
1143
- # <?php if(empty($orders_currencies)): ?>
1144
- # <option value=""><?php _e('Currency - no orders found', 'woocommerce-multilingual') ?></option>
1145
- # <?php else: ?>
1146
 
1147
- msgid "Currency - no orders found"
1148
  msgstr ""
1149
 
1150
- # $woocommerce_wpml->update_settings();
1151
- # echo json_encode( array('message' => __( 'Currencies order updated', 'woocommerce-multilingual' )) );
1152
- # die;
1153
 
1154
- msgid "Currencies order updated"
1155
  msgstr ""
1156
 
1157
- #
1158
- # $preview = '<i>' . __("You haven't added any secondary currencies.", 'woocommerce-multilingual') . '</i>';
1159
- #
1160
 
1161
- msgid "You haven't added any secondary currencies."
1162
  msgstr ""
1163
 
1164
- #
1165
- # parent::__construct( 'currency_sel_widget', __('Currency switcher', 'woocommerce-multilingual'), __('Currency switcher', 'woocommerce-multilingual'));
1166
- # }
1167
 
1168
- msgid "Currency switcher"
1169
  msgstr ""
1170
 
1171
- #
1172
- # printf('<p><a href="%s">%s</a></p>',admin_url('admin.php?page=wpml-wcml&tab=multi-currency#currency-switcher'),__('Configure options', 'woocommerce-multilingual'));
1173
- # return;
1174
 
1175
- msgid "Configure options"
1176
  msgstr ""
1177
 
1178
- #
1179
- # if(confirm('" . esc_js(__("All the products will be removed from the current order in order to change the currency", 'woocommerce-multilingual')). "')){
1180
- # jQuery.ajax({
1181
 
1182
- msgid "All the products will be removed from the current order in order to change the currency"
1183
  msgstr ""
1184
 
1185
- # <select id="dropdown_shop_order_currency" name="_order_currency">
1186
- # <option value=""><?php _e( 'Show all currencies', 'woocommerce-multilingual' ) ?></option>
1187
- # <?php foreach($order_currencies as $currency => $count): ?>
1188
 
1189
- msgid "Show all currencies"
1190
  msgstr ""
1191
 
1192
- # <li class="wide">
1193
- # <label><?php _e('Order currency:', 'woocommerce-multilingual'); ?></label>
1194
- # <select id="dropdown_shop_order_currency" name="wcml_shop_order_currency">
1195
 
1196
- msgid "Order currency:"
1197
  msgstr ""
1198
 
1199
- # 'strings' => array(
1200
- # 'choose' => __( 'Choose a file', 'woocommerce_multilingual' ),
1201
- # 'save_tooltip' => __( 'At least one of these fields is required: title, content or excerpt', 'woocommerce_multilingual' ),
1202
 
1203
- msgid "Choose a file"
1204
  msgstr ""
1205
 
1206
- # 'choose' => __( 'Choose a file', 'woocommerce_multilingual' ),
1207
- # 'save_tooltip' => __( 'At least one of these fields is required: title, content or excerpt', 'woocommerce_multilingual' ),
1208
- # 'resign_tooltip'=> __( 'This translation job will no longer be assigned to you. Other translators will be able take it and continue the translation.', 'woocommerce-multilingual')
1209
 
1210
- msgid "At least one of these fields is required: title, content or excerpt"
1211
  msgstr ""
1212
 
1213
- # 'save_tooltip' => __( 'At least one of these fields is required: title, content or excerpt', 'woocommerce_multilingual' ),
1214
- # 'resign_tooltip'=> __( 'This translation job will no longer be assigned to you. Other translators will be able take it and continue the translation.', 'woocommerce-multilingual')
1215
- # ),
1216
 
1217
- msgid "This translation job will no longer be assigned to you. Other translators will be able take it and continue the translation."
1218
  msgstr ""
1219
 
1220
- # echo '<img src="' . WCML_PLUGIN_URL . '/res/images/locked.png" class="wcml_lock_img wcml_lock_icon" alt="' .
1221
- # __( 'This field is locked for editing because WPML will copy its value from the original language.', 'woocommerce-multilingual' ) .
1222
- # '" title="' . __( 'This field is locked for editing because WPML will copy its value from the original language.', 'woocommerce-multilingual' ) .
1223
 
1224
- msgid "This field is locked for editing because WPML will copy its value from the original language."
1225
  msgstr ""
1226
 
1227
- # echo '<h3 class="wcml_prod_hidden_notice">' .
1228
- # sprintf( __( "This is a translation of %s. Some of the fields are not editable. It's recommended to use the %s for translating products.",
1229
- # 'woocommerce-multilingual' ),
1230
 
1231
- msgid "This is a translation of %s. Some of the fields are not editable. It's recommended to use the %s for translating products."
1232
  msgstr ""
1233
 
1234
- # '<a data-action="product-translation-dialog" class="js-wcml-dialog-trigger" data-id="' . $original_id . '" data-job_id="" data-language="' . $language . '">' .
1235
- # __( 'WooCommerce Multilingual products translator', 'woocommerce-multilingual' ) . '</a>' ) . '</h3>';
1236
- # }
1237
 
1238
- msgid "WooCommerce Multilingual products translator"
1239
  msgstr ""
1240
 
1241
- # $widget_opt = array(
1242
- # 'description' => __( 'Shows a list of the products that existed in the cart before the cart is reset on the front end after switching the language or the currency. It will be hidden when there are no products to show.', 'woocommerce-multilingual' ),
1243
- # );
1244
 
1245
- msgid "Shows a list of the products that existed in the cart before the cart is reset on the front end after switching the language or the currency. It will be hidden when there are no products to show."
1246
  msgstr ""
1247
 
1248
- # 'wcml_cart_deleted_items',
1249
- # __( 'Products before cart reset', 'woocommerce-multilingual' ),
1250
- # $widget_opt
1251
 
1252
- msgid "Products before cart reset"
1253
  msgstr ""
1254
 
1255
- #
1256
- # $dialog_title = __( 'Switching currency?', 'woocommerce-multilingual');
1257
- # $confirmation_message = __( 'Your cart is not empty! After you switched the currency, all items from the cart will be removed and you have to add them again.', 'woocommerce-multilingual');
1258
 
1259
- msgid "Switching currency?"
1260
- msgstr ""
1261
-
1262
- # $dialog_title = __( 'Switching currency?', 'woocommerce-multilingual');
1263
- # $confirmation_message = __( 'Your cart is not empty! After you switched the currency, all items from the cart will be removed and you have to add them again.', 'woocommerce-multilingual');
1264
- # $stay_in = sprintf( __( 'Keep using %s', 'woocommerce-multilingual'), $current_currency );
1265
-
1266
- msgid "Your cart is not empty! After you switched the currency, all items from the cart will be removed and you have to add them again."
1267
  msgstr ""
1268
 
1269
- # $confirmation_message = __( 'Your cart is not empty! After you switched the currency, all items from the cart will be removed and you have to add them again.', 'woocommerce-multilingual');
1270
- # $stay_in = sprintf( __( 'Keep using %s', 'woocommerce-multilingual'), $current_currency );
1271
- # $switch_to = __( 'Proceed', 'woocommerce-multilingual');
1272
 
1273
- msgid "Keep using %s"
1274
  msgstr ""
1275
 
1276
- # $stay_in = sprintf( __( 'Keep using %s', 'woocommerce-multilingual'), $current_currency );
1277
- # $switch_to = __( 'Proceed', 'woocommerce-multilingual');
1278
- #
1279
 
1280
- msgid "Proceed"
1281
  msgstr ""
1282
 
1283
- # if( apply_filters( 'wcml_add_to_cart_sold_individually', true, $cart_item_data, $product_id, $quantity ) && $current_product_trid == $cart_element_trid && $cart_item[ 'quantity' ] > 0 ){
1284
- # throw new Exception( sprintf( '<a href="%s" class="button wc-forward">%s</a> %s', wc_get_cart_url(), __( 'View cart', 'woocommerce' ), sprintf( __( 'You cannot add another "%s" to your cart.', 'woocommerce' ), get_the_title( $product_id ) ) ) );
1285
- # }
1286
 
1287
- msgid "View cart"
 
1288
  msgstr ""
1289
 
1290
- # if( apply_filters( 'wcml_add_to_cart_sold_individually', true, $cart_item_data, $product_id, $quantity ) && $current_product_trid == $cart_element_trid && $cart_item[ 'quantity' ] > 0 ){
1291
- # throw new Exception( sprintf( '<a href="%s" class="button wc-forward">%s</a> %s', wc_get_cart_url(), __( 'View cart', 'woocommerce' ), sprintf( __( 'You cannot add another "%s" to your cart.', 'woocommerce' ), get_the_title( $product_id ) ) ) );
1292
  # }
1293
 
1294
- msgid "You cannot add another \"%s\" to your cart."
1295
- msgstr ""
1296
-
1297
- # input.parent().append('<div class="translation_controls"></div>');
1298
- # input.parent().find('.translation_controls').append('<a href="<?php echo $st_page ?>" style="margin-left: 10px"><?php _e('translations', 'woocommerce-multilingual') ?></a>');
1299
- # jQuery('#<?php echo $emails_option.'_'.$setting_key.'_language_selector' ?>').prependTo(input.parent().find('.translation_controls'));
1300
-
1301
- msgid "translations"
1302
- msgstr ""
1303
-
1304
- # //dummy array for names
1305
- # $names = array( __('Cart', 'woocommerce-multilingual'),
1306
- # __('Checkout', 'woocommerce-multilingual'),
1307
-
1308
- msgid "Cart"
1309
  msgstr ""
1310
 
1311
- # $names = array( __('Cart', 'woocommerce-multilingual'),
1312
- # __('Checkout', 'woocommerce-multilingual'),
1313
- # __('Checkout &rarr; Pay', 'woocommerce-multilingual'),
1314
 
1315
- msgid "Checkout"
1316
  msgstr ""
1317
 
1318
- # __('Checkout', 'woocommerce-multilingual'),
1319
- # __('Checkout &rarr; Pay', 'woocommerce-multilingual'),
1320
- # __('Order Received', 'woocommerce-multilingual'),
1321
 
1322
- msgid "Checkout &rarr; Pay"
1323
  msgstr ""
1324
 
1325
- # __('Checkout &rarr; Pay', 'woocommerce-multilingual'),
1326
- # __('Order Received', 'woocommerce-multilingual'),
1327
- # __('My Account', 'woocommerce-multilingual'),
1328
 
1329
- msgid "Order Received"
1330
  msgstr ""
1331
 
1332
- # __('Order Received', 'woocommerce-multilingual'),
1333
- # __('My Account', 'woocommerce-multilingual'),
1334
- # __('Change Password', 'woocommerce-multilingual'),
1335
 
1336
- msgid "My Account"
1337
  msgstr ""
1338
 
1339
- # __('My Account', 'woocommerce-multilingual'),
1340
- # __('Change Password', 'woocommerce-multilingual'),
1341
- # __('Edit My Address', 'woocommerce-multilingual'),
1342
 
1343
- msgid "Change Password"
1344
  msgstr ""
1345
 
1346
- # __('Change Password', 'woocommerce-multilingual'),
1347
- # __('Edit My Address', 'woocommerce-multilingual'),
1348
- # __('Logout', 'woocommerce-multilingual'),
1349
 
1350
- msgid "Edit My Address"
1351
  msgstr ""
1352
 
1353
- # __('Edit My Address', 'woocommerce-multilingual'),
1354
- # __('Logout', 'woocommerce-multilingual'),
1355
- # __('Lost Password', 'woocommerce-multilingual'),
1356
 
1357
- msgid "Logout"
1358
  msgstr ""
1359
 
1360
- # __('Logout', 'woocommerce-multilingual'),
1361
- # __('Lost Password', 'woocommerce-multilingual'),
1362
- # __('View Order', 'woocommerce-multilingual'),
1363
 
1364
- msgid "Lost Password"
1365
  msgstr ""
1366
 
1367
- # __('Lost Password', 'woocommerce-multilingual'),
1368
- # __('View Order', 'woocommerce-multilingual'),
1369
- # __('Shop', 'woocommerce-multilingual'));
1370
 
1371
- msgid "View Order"
1372
  msgstr ""
1373
 
1374
- # __('View Order', 'woocommerce-multilingual'),
1375
- # __('Shop', 'woocommerce-multilingual'));
1376
- #
1377
 
1378
- msgid "Shop"
1379
  msgstr ""
1380
 
1381
- # if( !$is_translated ){
1382
- # $text = sprintf( __( 'To quickly translate this and other WooCommerce store pages, please run the %ssetup wizard%s.', 'woocommerce-multilingual' ),
1383
- # '<a href="' . admin_url( 'admin.php?page=wcml-setup' ) . '">', '</a>' );
1384
 
1385
- msgid "To quickly translate this and other WooCommerce store pages, please run the %ssetup wizard%s."
1386
  msgstr ""
1387
 
1388
  # ?>
1389
  # <div class="message error"><p><?php printf(__('WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href="%s">WPML</a> versions prior %s.',
1390
- # 'woocommerce-multilingual'), WCML_Links::generate_tracking_link('https://wpml.org/'), '3.4'); ?></p></div>
1391
 
1392
  msgid "WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href=\"%s\">WPML</a> versions prior %s."
1393
  msgstr ""
@@ -1401,21 +1067,21 @@ msgstr ""
1401
 
1402
  # ?>
1403
  # <div class="message error"><p><?php printf(__('WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href="%s">WPML Translation Management</a> versions prior %s.',
1404
- # 'woocommerce-multilingual'), WCML_Links::generate_tracking_link('https://wpml.org/'), '1.9'); ?></p></div>
1405
 
1406
  msgid "WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href=\"%s\">WPML Translation Management</a> versions prior %s."
1407
  msgstr ""
1408
 
1409
  # ?>
1410
  # <div class="message error"><p><?php printf(__('WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href="%s">WPML String Translation</a> versions prior %s.',
1411
- # 'woocommerce-multilingual'), WCML_Links::generate_tracking_link('https://wpml.org/'), '2.0'); ?></p></div>
1412
 
1413
  msgid "WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href=\"%s\">WPML String Translation</a> versions prior %s."
1414
  msgstr ""
1415
 
1416
  # ?>
1417
  # <div class="message error"><p><?php printf(__('WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href="%s">WPML Media</a> versions prior %s.',
1418
- # 'woocommerce-multilingual'), WCML_Links::generate_tracking_link('https://wpml.org/'), '2.1'); ?></p></div>
1419
 
1420
  msgid "WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href=\"%s\">WPML Media</a> versions prior %s."
1421
  msgstr ""
@@ -1427,7 +1093,7 @@ msgstr ""
1427
  msgid "and"
1428
  msgstr ""
1429
 
1430
- #
1431
  # <div class="message error"><p><?php printf(__('WooCommerce Multilingual is enabled but not effective. It requires %s in order to work.', 'woocommerce-multilingual'), $missing); ?></p></div>
1432
  # <?php
1433
 
@@ -1443,7 +1109,7 @@ msgstr ""
1443
 
1444
  # $message .= ' | ';
1445
  # $message .= '<a href="' . admin_url('admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=mcsetup#icl_custom_posts_sync_options') . '">' . __('Configure products slug translation', 'woocommerce-multilingual') . '</a>';
1446
- #
1447
 
1448
  msgid "Configure products slug translation"
1449
  msgstr ""
@@ -1455,9 +1121,9 @@ msgstr ""
1455
  msgid "If you want different slugs for shop pages (%s/%s), you need to disable the shop prefix for products in <a href=\"%s\">WooCommerce Settings</a>"
1456
  msgstr ""
1457
 
1458
- #
1459
  # $ret['success_1'] = '&nbsp;' . sprintf(__('Finished! You can visit the %sstrings translation%s screen to translate the strings now.', 'woocommerce-multilingual'), '<a href="' . admin_url('admin.php?page=' . WPML_ST_FOLDER . '/menu/string-translation.php') . '">', '</a>');
1460
- #
1461
 
1462
  msgid "Finished! You can visit the %sstrings translation%s screen to translate the strings now."
1463
  msgstr ""
@@ -1490,791 +1156,733 @@ msgstr ""
1490
  msgid "Custom taxonomy %s configuration from wpml-config.xml file was altered!"
1491
  msgstr ""
1492
 
1493
- # $current_language_details = $sitepress->get_language_details( $this->lang_from );
1494
- # $dialog_title = __( 'Switching language?', 'woocommerce-multilingual' );
1495
- # $confirmation_message = sprintf( __( "You've switched language and there are items in the cart. If you keep the %s language, the cart will be emptied and you will have to add the items again to the cart.", 'woocommerce-multilingual' ), $new_language_details[ 'display_name' ] );
1496
 
1497
- msgid "Switching language?"
1498
  msgstr ""
1499
 
1500
- # $dialog_title = __( 'Switching language?', 'woocommerce-multilingual' );
1501
- # $confirmation_message = sprintf( __( "You've switched language and there are items in the cart. If you keep the %s language, the cart will be emptied and you will have to add the items again to the cart.", 'woocommerce-multilingual' ), $new_language_details[ 'display_name' ] );
1502
- # $stay_in = sprintf( __( 'Stay in %s', 'woocommerce-multilingual' ), $new_language_details[ 'display_name' ] );
1503
 
1504
- msgid "You've switched language and there are items in the cart. If you keep the %s language, the cart will be emptied and you will have to add the items again to the cart."
1505
  msgstr ""
1506
 
1507
- # $confirmation_message = sprintf( __( "You've switched language and there are items in the cart. If you keep the %s language, the cart will be emptied and you will have to add the items again to the cart.", 'woocommerce-multilingual' ), $new_language_details[ 'display_name' ] );
1508
- # $stay_in = sprintf( __( 'Stay in %s', 'woocommerce-multilingual' ), $new_language_details[ 'display_name' ] );
1509
- # $switch_to = sprintf( __( 'Switch back to %s', 'woocommerce-multilingual' ), $current_language_details[ 'display_name' ] );
1510
 
1511
- msgid "Stay in %s"
1512
  msgstr ""
1513
 
1514
- # $stay_in = sprintf( __( 'Stay in %s', 'woocommerce-multilingual' ), $new_language_details[ 'display_name' ] );
1515
- # $switch_to = sprintf( __( 'Switch back to %s', 'woocommerce-multilingual' ), $current_language_details[ 'display_name' ] );
1516
- #
1517
 
1518
- msgid "Switch back to %s"
1519
  msgstr ""
1520
 
1521
- # }elseif( isset( $product_translations[ $language[ 'code' ] ] ) && $product_translations[ $language[ 'code' ] ]->original ) { ?>
1522
- # <span title="<?php echo $language['english_name'] . ': ' . __('Original language', 'woocommerce-multilingual'); ?>">
1523
- # <i class="otgs-ico-original"></i>
1524
 
1525
- msgid "Original language"
1526
  msgstr ""
1527
 
1528
- # ?>
1529
- # <a href="<?php echo $edit_url ?>" title="<?php echo $language[ 'english_name' ] . ': ' . __( 'Take this and edit', 'woocommerce-multilingual' ); ?>">
1530
- # <i class="otgs-ico-add"></i>
1531
 
1532
- msgid "Take this and edit"
1533
  msgstr ""
1534
 
1535
- # if (!$tr_status ) { ?>
1536
- # title="<?php echo $language[ 'english_name' ] . ': ' . __( 'Add translation', 'woocommerce-multilingual' ); ?>">
1537
- # <i class="otgs-ico-add"></i>
1538
 
1539
- msgid "Add translation"
1540
  msgstr ""
1541
 
1542
- # <?php }elseif( $tr_status->needs_update ){ ?>
1543
- # title="<?php echo $language[ 'english_name' ] . ': ' . __( 'Update translation', 'woocommerce-multilingual' ); ?>">
1544
- # <i class="otgs-ico-refresh"></i>
1545
 
1546
- msgid "Update translation"
1547
  msgstr ""
1548
 
1549
- # <?php }elseif( $tr_status->status != ICL_TM_COMPLETE && $tr_status->status != ICL_TM_DUPLICATE ){ ?>
1550
- # title="<?php echo $language[ 'english_name' ] . ': ' . __( 'Finish translating', 'woocommerce-multilingual' ); ?>">
1551
- # <i class="otgs-ico-refresh"></i>
1552
 
1553
- msgid "Finish translating"
1554
  msgstr ""
1555
 
1556
- # <?php }elseif( $tr_status->status == ICL_TM_COMPLETE ){ ?>
1557
- # title="<?php echo $language[ 'english_name' ] . ': ' . __( 'Edit translation', 'woocommerce-multilingual' ); ?>">
1558
- # <i class="otgs-ico-edit"></i>
1559
 
1560
- msgid "Edit translation"
1561
  msgstr ""
1562
 
1563
- # $new_actions[ 'quick_hide' ] = '<a href="#TB_inline?width=200&height=150&inlineId=quick_edit_notice" class="thickbox" title="' .
1564
- # __('Edit this item inline', 'woocommerce-multilingual') . '">' .
1565
- # __('Quick Edit', 'woocommerce-multilingual') . '</a>';
1566
 
1567
- msgid "Edit this item inline"
1568
  msgstr ""
1569
 
1570
- # __('Edit this item inline', 'woocommerce-multilingual') . '">' .
1571
- # __('Quick Edit', 'woocommerce-multilingual') . '</a>';
1572
- # } else {
1573
 
1574
- msgid "Quick Edit"
1575
  msgstr ""
1576
 
1577
- # if( $tr_status->status == ICL_TM_IN_PROGRESS ) { ?>
1578
- # <a title="<?php _e( 'Translation in progress', 'woocommerce-multilingual' ); ?>"><i
1579
- # class="otgs-ico-in-progress"></i></a>
1580
 
1581
- msgid "Translation in progress"
1582
  msgstr ""
1583
 
1584
- # jQuery('#dropdown_shop_order_language').on('change', function(){
1585
- # if(confirm('" . esc_js(__("All the products will be removed from the current order in order to change the language", 'woocommerce-multilingual')). "')){
1586
- # var lang = jQuery(this).val();
1587
 
1588
- msgid "All the products will be removed from the current order in order to change the language"
1589
  msgstr ""
1590
 
1591
- # <li class="wide">
1592
- # <label><?php _e('Order language:'); ?></label>
1593
- # <select id="dropdown_shop_order_language" name="wcml_shop_order_language">
1594
 
1595
- msgid "Order language:"
1596
  msgstr ""
1597
 
1598
- # $slug = $this->get_woocommerce_product_base();
1599
- # $return['name'] = __('Product Base', 'woocommerce-multilingual');
1600
- # break;
1601
 
1602
- msgid "Product Base"
1603
  msgstr ""
1604
 
1605
- # $slug = !empty( $this->wc_permalinks['tag_base'] ) ? trim( $this->wc_permalinks['tag_base'], '/' ) : 'product-tag';
1606
- # $return['name'] = __('Product Tag Base', 'woocommerce-multilingual');
1607
- # break;
1608
 
1609
- msgid "Product Tag Base"
1610
  msgstr ""
1611
 
1612
- # $slug = !empty( $this->wc_permalinks['category_base'] ) ? trim( $this->wc_permalinks['category_base'], '/' ) : 'product-category';
1613
- # $return['name'] = __('Product Category Base', 'woocommerce-multilingual');
1614
- # break;
1615
 
1616
- msgid "Product Category Base"
1617
  msgstr ""
1618
 
1619
- # $slug = trim( $this->wc_permalinks['attribute_base'], '/' );
1620
- # $return['name'] = __('Product Attribute Base', 'woocommerce-multilingual');
1621
- # break;
1622
 
1623
- msgid "Product Attribute Base"
1624
  msgstr ""
1625
 
1626
- # case 'attribute_slug':
1627
- # $return['name'] = __('Attribute Slug', 'woocommerce-multilingual');
1628
- # $string_id = icl_get_string_id( $slug, $this->url_strings_context(), $this->url_string_name( $base, $slug ) );
1629
 
1630
- msgid "Attribute Slug"
1631
  msgstr ""
1632
 
1633
- # $slug = isset( $endpoints[ $base ] ) ? $endpoints[ $base ] : false ;
1634
- # $return['name'] = sprintf( __('Endpoint: %s', 'woocommerce-multilingual'), $base);
1635
- # $string_id = icl_get_string_id( $slug, 'WooCommerce Endpoints', $base );
1636
 
1637
- msgid "Endpoint: %s"
1638
  msgstr ""
1639
 
1640
- # $this->default_product_tag_base = 'product-tag';
1641
- # $this->default_product_category_gettext_base = _x( 'product-category', 'slug', 'woocommerce' );
1642
- # $this->default_product_tag_gettext_base = _x( 'product-tag', 'slug', 'woocommerce' );
1643
 
1644
- msgctxt "slug"
1645
- msgid "product-category"
1646
  msgstr ""
1647
 
1648
- # $this->default_product_category_gettext_base = _x( 'product-category', 'slug', 'woocommerce' );
1649
- # $this->default_product_tag_gettext_base = _x( 'product-tag', 'slug', 'woocommerce' );
1650
- #
1651
-
1652
- msgctxt "slug"
1653
- msgid "product-tag"
1654
  msgstr ""
1655
 
1656
- # array(
1657
- # 'warn' => __( "Downloading translations... Please don't close this page.", 'woocommerce-multilingual' )
1658
- # )
1659
 
1660
- msgid "Downloading translations... Please don't close this page."
1661
  msgstr ""
1662
 
1663
- # <p>
1664
- # <?php printf(__("You've successfully installed %sWooCommerce Multilingual%s. Would you like to see a quick overview?", 'woocommerce-multilingual'), '<strong>', '</strong>'); ?>
1665
- # </p>
1666
 
1667
- msgid "You've successfully installed %sWooCommerce Multilingual%s. Would you like to see a quick overview?"
1668
  msgstr ""
1669
 
1670
- # <p>
1671
- # <?php printf(__("We detected a problem in your WPML configuration: the %sproduct_type%s taxonomy is set as translatable and this would cause problems with translated products. You can fix this in the %sMultilingual Content Setup page%s.", 'woocommerce-multilingual'), '<i>', '</i>','<a href="' . admin_url( 'admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=mcsetup#ml-content-setup-sec-8' ) . '">','</a>'); ?>
1672
- # </p>
1673
 
1674
- msgid "We detected a problem in your WPML configuration: the %sproduct_type%s taxonomy is set as translatable and this would cause problems with translated products. You can fix this in the %sMultilingual Content Setup page%s."
1675
  msgstr ""
1676
 
1677
- # <p>
1678
- # <?php printf(__("We detected that the %sproduct_type%s field was set incorrectly for some product translations. This happened because the product_type taxonomy was translated. You can fix this in the WooCommerce Multilingual %stroubleshooting page%s.", 'woocommerce-multilingual'), '<i>', '</i>','<a href="' . admin_url( 'admin.php?page=wpml-wcml&tab=troubleshooting' ) . '">','</a>'); ?>
1679
- # </p>
1680
 
1681
- msgid "We detected that the %sproduct_type%s field was set incorrectly for some product translations. This happened because the product_type taxonomy was translated. You can fix this in the WooCommerce Multilingual %stroubleshooting page%s."
1682
  msgstr ""
1683
 
1684
- # <a class="button-primary align-right" href="<?php echo WCML_Links::generate_tracking_link('https://wpml.org/documentation/related-projects/woocommerce-multilingual/','woocommerce-multilingual','documentation'); ?>" target="_blank">
1685
- # <?php _e('Learn how to turn your e-commerce site multilingual', 'woocommerce-multilingual') ?>
1686
- # </a>
1687
 
1688
- msgid "Learn how to turn your e-commerce site multilingual"
1689
  msgstr ""
1690
 
1691
- # </p>
1692
- # <a class="notice-dismiss" href="<?php echo $url; ?>"><span class="screen-reader-text"><?php _e('Dismiss', 'woocommerce-multilingual') ?></span></a>
1693
- # </div>
1694
 
1695
- msgid "Dismiss"
1696
  msgstr ""
1697
 
1698
- # 'show' => 1,
1699
- # 'text' => __('Looks like you are upgrading from a previous version of WooCommerce Multilingual. Would you like to automatically create translated variations and images?', 'wcml').
1700
- # '<br /><strong>' .
1701
 
1702
- msgid "Looks like you are upgrading from a previous version of WooCommerce Multilingual. Would you like to automatically create translated variations and images?"
1703
  msgstr ""
1704
 
1705
- # '<br /><strong>' .
1706
- # ' <a href="' . admin_url('admin.php?page=wpml-wcml&tab=troubleshooting') . '">' . __('Yes, go to the troubleshooting page', 'wcml') . '</a> |' .
1707
- # ' <a href="#" onclick="jQuery.ajax({type:\'POST\',url: ajaxurl,data:\'action=wcml_hide_notice&notice='.$n.'\',success:function(){jQuery(\'#' . $n . '\').fadeOut()}});return false;">' . __('No - dismiss', 'wcml') . '</a>' .
1708
 
1709
- msgid "Yes, go to the troubleshooting page"
1710
  msgstr ""
1711
 
1712
- # ' <a href="' . admin_url('admin.php?page=wpml-wcml&tab=troubleshooting') . '">' . __('Yes, go to the troubleshooting page', 'wcml') . '</a> |' .
1713
- # ' <a href="#" onclick="jQuery.ajax({type:\'POST\',url: ajaxurl,data:\'action=wcml_hide_notice&notice='.$n.'\',success:function(){jQuery(\'#' . $n . '\').fadeOut()}});return false;">' . __('No - dismiss', 'wcml') . '</a>' .
1714
- # '</strong>'
1715
 
1716
- msgid "No - dismiss"
1717
  msgstr ""
1718
 
1719
- #
1720
- # printf( '<p>'.__('In order to edit custom attributes you need to use the <a href="%s">custom product translation editor</a>', 'woocommerce-multilingual').'</p>', admin_url('admin.php?page=wpml-wcml&tab=products&prid='.$original_product_id ) );
1721
- # }
1722
 
1723
- msgid "In order to edit custom attributes you need to use the <a href=\"%s\">custom product translation editor</a>"
1724
  msgstr ""
1725
 
1726
- # jQuery('input[name="woocommerce_product_category_slug"]').parent().append('<br><i class="icon-warning-sign"><?php
1727
- # _e('You are using the same value as for the regular category base. This is known to create conflicts resulting in urls not working properly.', 'woocommerce-multilingual') ?></i>');
1728
- # }
1729
 
1730
- msgid "You are using the same value as for the regular category base. This is known to create conflicts resulting in urls not working properly."
1731
  msgstr ""
1732
 
1733
- # if( empty( $permalink_options['product_base'] ) ){
1734
- # $value = _x( 'product', 'default-slug', 'woocommerce' );
1735
- # }else{
1736
 
1737
- msgctxt "default-slug"
1738
- msgid "product"
1739
  msgstr ""
1740
 
1741
- # 'strings' => array(
1742
- # 'title' => __('WooCommerce Multilingual', 'woocommerce-multilingual'),
1743
- # 'untranslated_terms'=> __('You have untranslated terms!', 'woocommerce-multilingual')
1744
 
1745
- msgid "WooCommerce Multilingual"
1746
  msgstr ""
1747
 
1748
- # 'title' => __('WooCommerce Multilingual', 'woocommerce-multilingual'),
1749
- # 'untranslated_terms'=> __('You have untranslated terms!', 'woocommerce-multilingual')
1750
- # ),
1751
 
1752
- msgid "You have untranslated terms!"
1753
  msgstr ""
1754
 
1755
- # 'products' => array(
1756
- # 'title' => __('Products', 'woocommerce-multilingual'),
1757
- # 'url' => admin_url('admin.php?page=wpml-wcml'),
1758
 
1759
- msgid "Products"
1760
  msgstr ""
1761
 
1762
- # 'product_cat' => array(
1763
- # 'name' => __('Categories', 'woocommerce-multilingual'),
1764
- # 'title' => !$this->woocommerce_wpml->terms->is_fully_translated( 'product_cat' ) ? __('You have untranslated terms!', 'woocommerce-multilingual') : '',
1765
 
1766
- msgid "Categories"
1767
  msgstr ""
1768
 
1769
- # 'product_tag' => array(
1770
- # 'name' => __('Tags', 'woocommerce-multilingual'),
1771
- # 'title' => !$this->woocommerce_wpml->terms->is_fully_translated( 'product_tag' ) ? __('You have untranslated terms!', 'woocommerce-multilingual') : '',
1772
 
1773
- msgid "Tags"
1774
  msgstr ""
1775
 
1776
- # 'custom_taxonomies' => array(
1777
- # 'name' => __('Custom Taxonomies', 'woocommerce-multilingual'),
1778
- # 'active' => $current_tab == 'custom-taxonomies' ? 'nav-tab-active':'',
1779
 
1780
- msgid "Custom Taxonomies"
1781
  msgstr ""
1782
 
1783
- # 'attributes' => array(
1784
- # 'name' => __('Attributes', 'woocommerce-multilingual'),
1785
- # 'active' => $current_tab == 'product-attributes' ? 'nav-tab-active':'',
1786
 
1787
- msgid "Attributes"
1788
  msgstr ""
1789
 
1790
- # 'shipping_classes' => array(
1791
- # 'name' => __('Shipping Classes', 'woocommerce-multilingual'),
1792
- # 'title' => !$this->woocommerce_wpml->terms->is_fully_translated( 'product_shipping_class' ) ? __('You have untranslated terms!', 'woocommerce-multilingual') : '',
1793
 
1794
- msgid "Shipping Classes"
1795
  msgstr ""
1796
 
1797
- # 'settings' => array(
1798
- # 'name' => __( 'Settings', 'woocommerce-multilingual' ),
1799
- # 'active' => $current_tab == 'settings' ? 'nav-tab-active':'',
1800
 
1801
- msgid "Settings"
1802
  msgstr ""
1803
 
1804
- # 'multi_currency' => array(
1805
- # 'name' => __( 'Multi-currency', 'woocommerce-multilingual' ),
1806
- # 'active' => $current_tab == 'multi-currency' ? 'nav-tab-active':'',
1807
 
1808
- msgid "Multi-currency"
1809
  msgstr ""
1810
 
1811
- # 'slugs' => array(
1812
- # 'name' => __( 'Store URLs', 'woocommerce-multilingual' ),
1813
- # 'active' => $current_tab == 'slugs' ? 'nav-tab-active':'',
1814
 
1815
- msgid "Store URLs"
1816
  msgstr ""
1817
 
1818
- # 'status' => array(
1819
- # 'name' => __( 'Status', 'woocommerce-multilingual' ),
1820
- # 'active' => $current_tab == 'status' ? 'nav-tab-active':'',
1821
 
1822
- msgid "Status"
1823
  msgstr ""
1824
 
1825
- # 'troubleshooting' => array(
1826
- # 'name' => __( 'Troubleshooting', 'woocommerce-multilingual' ),
1827
- # 'active' => $current_tab == 'troubleshooting' ? 'nav-tab-active':'',
1828
 
1829
- msgid "Troubleshooting"
1830
  msgstr ""
1831
 
1832
- # 'on' => !isset( $this->woocommerce_wpml->settings['rate-block'] ),
1833
- # 'message' => sprintf(__('Thank you for using %sWooCommerce Multilingual%s! You can express your love and
1834
- # support by %s rating our plugin and saying that %sit works%s for you.', 'woocommerce_wpml'),
1835
 
1836
- msgid "Thank you for using %sWooCommerce Multilingual%s! You can express your love and\n support by %s rating our plugin and saying that %sit works%s for you."
1837
  msgstr ""
1838
 
1839
- # ),
1840
- # 'hide_text' => __('Hide','woocommerce-multilingual'),
1841
- # 'nonce' => wp_nonce_field('wcml_settings', 'wcml_settings_nonce', true, false)
1842
 
1843
- msgid "Hide"
1844
  msgstr ""
1845
 
1846
- # ?>
1847
- # <div class="wpml-loading-taxonomy"><span class="spinner is-active"></span><?php echo __( 'Loading ...', 'woocommerce-multilingual' ) ?></div>
1848
- # <div class="wpml_taxonomy_loaded" style="display:none">
1849
 
1850
- msgid "Loading ..."
1851
  msgstr ""
1852
 
1853
- # 'strings' => array(
1854
- # 'image' => __( 'Image', 'woocommerce-multilingual' ),
1855
- # 'product' => __( 'Product', 'woocommerce-multilingual' ),
1856
 
1857
- msgid "Image"
1858
  msgstr ""
1859
 
1860
- # 'image' => __( 'Image', 'woocommerce-multilingual' ),
1861
- # 'product' => __( 'Product', 'woocommerce-multilingual' ),
1862
- # 'type' => __( 'Type', 'woocommerce-multilingual' ),
1863
 
1864
- msgid "Product"
1865
  msgstr ""
1866
 
1867
- # 'product' => __( 'Product', 'woocommerce-multilingual' ),
1868
- # 'type' => __( 'Type', 'woocommerce-multilingual' ),
1869
- # 'date' => __( 'Date', 'woocommerce-multilingual' ),
1870
 
1871
- msgid "Type"
1872
  msgstr ""
1873
 
1874
- # 'type' => __( 'Type', 'woocommerce-multilingual' ),
1875
- # 'date' => __( 'Date', 'woocommerce-multilingual' ),
1876
- # 'categories' => __( 'Categories', 'woocommerce-multilingual' ),
1877
 
1878
- msgid "Date"
1879
  msgstr ""
1880
 
1881
- # 'categories' => __( 'Categories', 'woocommerce-multilingual' ),
1882
- # 'no_products' => __( 'No products found', 'woocommerce-multilingual' ),
1883
- # 'draft' => __( 'Draft', 'woocommerce-multilingual' ),
1884
 
1885
- msgid "No products found"
1886
  msgstr ""
1887
 
1888
- # 'no_products' => __( 'No products found', 'woocommerce-multilingual' ),
1889
- # 'draft' => __( 'Draft', 'woocommerce-multilingual' ),
1890
- # 'private' => __( 'Private', 'woocommerce-multilingual' ),
1891
 
1892
- msgid "Draft"
1893
  msgstr ""
1894
 
1895
- # 'draft' => __( 'Draft', 'woocommerce-multilingual' ),
1896
- # 'private' => __( 'Private', 'woocommerce-multilingual' ),
1897
- # 'pending' => __( 'Pending', 'woocommerce-multilingual' ),
1898
 
1899
- msgid "Private"
1900
  msgstr ""
1901
 
1902
- # 'private' => __( 'Private', 'woocommerce-multilingual' ),
1903
- # 'pending' => __( 'Pending', 'woocommerce-multilingual' ),
1904
- # 'future' => __( 'Scheduled', 'woocommerce-multilingual' ),
1905
 
1906
- msgid "Pending"
1907
  msgstr ""
1908
 
1909
- # 'pending' => __( 'Pending', 'woocommerce-multilingual' ),
1910
- # 'future' => __( 'Scheduled', 'woocommerce-multilingual' ),
1911
- # 'parent' => __( 'Parent product: %s', 'woocommerce-multilingual' ),
1912
 
1913
- msgid "Scheduled"
1914
  msgstr ""
1915
 
1916
- # 'future' => __( 'Scheduled', 'woocommerce-multilingual' ),
1917
- # 'parent' => __( 'Parent product: %s', 'woocommerce-multilingual' ),
1918
- # 'edit_item' => __( 'Edit this item', 'woocommerce-multilingual' ),
1919
 
1920
- msgid "Parent product: %s"
1921
  msgstr ""
1922
 
1923
- # 'parent' => __( 'Parent product: %s', 'woocommerce-multilingual' ),
1924
- # 'edit_item' => __( 'Edit this item', 'woocommerce-multilingual' ),
1925
- # 'edit' => __( 'Edit', 'woocommerce-multilingual' ),
1926
 
1927
- msgid "Edit this item"
1928
  msgstr ""
1929
 
1930
- # 'edit_item' => __( 'Edit this item', 'woocommerce-multilingual' ),
1931
- # 'edit' => __( 'Edit', 'woocommerce-multilingual' ),
1932
- # 'view_link' => __( 'View "%s"', 'woocommerce-multilingual' ),
1933
 
1934
- msgid "Edit"
1935
  msgstr ""
1936
 
1937
- # 'edit' => __( 'Edit', 'woocommerce-multilingual' ),
1938
- # 'view_link' => __( 'View "%s"', 'woocommerce-multilingual' ),
1939
- # 'view' => __( 'View', 'woocommerce-multilingual' ),
1940
 
1941
- msgid "View \"%s\""
1942
  msgstr ""
1943
 
1944
- # 'view_link' => __( 'View "%s"', 'woocommerce-multilingual' ),
1945
- # 'view' => __( 'View', 'woocommerce-multilingual' ),
1946
- # 'published' => __( 'Published', 'woocommerce-multilingual' ),
1947
 
1948
- msgid "View"
1949
  msgstr ""
1950
 
1951
- # 'view' => __( 'View', 'woocommerce-multilingual' ),
1952
- # 'published' => __( 'Published', 'woocommerce-multilingual' ),
1953
- # 'modified' => __( 'Last Modified', 'woocommerce-multilingual' ),
1954
 
1955
- msgid "Published"
1956
  msgstr ""
1957
 
1958
- # 'published' => __( 'Published', 'woocommerce-multilingual' ),
1959
- # 'modified' => __( 'Last Modified', 'woocommerce-multilingual' ),
1960
- # ),
1961
 
1962
- msgid "Last Modified"
1963
  msgstr ""
1964
 
1965
- # 'strings' => array(
1966
- # 'all_lang' => __( 'All languages', 'woocommerce-multilingual' ),
1967
- # 'all_cats' => __( 'All categories', 'woocommerce-multilingual' ),
1968
 
1969
- msgid "All languages"
1970
  msgstr ""
1971
 
1972
- # 'all_lang' => __( 'All languages', 'woocommerce-multilingual' ),
1973
- # 'all_cats' => __( 'All categories', 'woocommerce-multilingual' ),
1974
- # 'all_trnsl_stats' => __( 'All translation statuses', 'woocommerce-multilingual' ),
1975
 
1976
- msgid "All categories"
1977
  msgstr ""
1978
 
1979
- # 'all_cats' => __( 'All categories', 'woocommerce-multilingual' ),
1980
- # 'all_trnsl_stats' => __( 'All translation statuses', 'woocommerce-multilingual' ),
1981
- # 'not_trnsl' => __( 'Not translated or needs updating', 'woocommerce-multilingual' ),
1982
 
1983
- msgid "All translation statuses"
1984
  msgstr ""
1985
 
1986
- # 'all_trnsl_stats' => __( 'All translation statuses', 'woocommerce-multilingual' ),
1987
- # 'not_trnsl' => __( 'Not translated or needs updating', 'woocommerce-multilingual' ),
1988
- # 'need_upd' => __( 'Needs updating', 'woocommerce-multilingual' ),
1989
 
1990
- msgid "Not translated or needs updating"
1991
  msgstr ""
1992
 
1993
- # 'not_trnsl' => __( 'Not translated or needs updating', 'woocommerce-multilingual' ),
1994
- # 'need_upd' => __( 'Needs updating', 'woocommerce-multilingual' ),
1995
- # 'in_progress' => __( 'Translation in progress', 'woocommerce-multilingual' ),
1996
 
1997
- msgid "Needs updating"
1998
  msgstr ""
1999
 
2000
- # 'in_progress' => __( 'Translation in progress', 'woocommerce-multilingual' ),
2001
- # 'complete' => __( 'Translation complete', 'woocommerce-multilingual' ),
2002
- # 'all_stats' => __( 'All statuses', 'woocommerce-multilingual' ),
2003
 
2004
- msgid "Translation complete"
2005
  msgstr ""
2006
 
2007
- # 'complete' => __( 'Translation complete', 'woocommerce-multilingual' ),
2008
- # 'all_stats' => __( 'All statuses', 'woocommerce-multilingual' ),
2009
- # 'filter' => __( 'Filter', 'woocommerce-multilingual' ),
2010
 
2011
- msgid "All statuses"
2012
  msgstr ""
2013
 
2014
- # 'all_stats' => __( 'All statuses', 'woocommerce-multilingual' ),
2015
- # 'filter' => __( 'Filter', 'woocommerce-multilingual' ),
2016
- # 'reset' => __( 'Reset', 'woocommerce-multilingual' ),
2017
 
2018
- msgid "Filter"
2019
  msgstr ""
2020
 
2021
- # 'filter' => __( 'Filter', 'woocommerce-multilingual' ),
2022
- # 'reset' => __( 'Reset', 'woocommerce-multilingual' ),
2023
- # 'search' => __( 'Search', 'woocommerce-multilingual' ),
2024
 
2025
- msgid "Reset"
2026
  msgstr ""
2027
 
2028
- # 'reset' => __( 'Reset', 'woocommerce-multilingual' ),
2029
- # 'search' => __( 'Search', 'woocommerce-multilingual' ),
2030
- # ),
2031
 
2032
- msgid "Search"
2033
  msgstr ""
2034
 
2035
- # 'strings' => array(
2036
- # 'items' => __( '%d items', 'woocommerce-multilingual' ),
2037
- # 'first' => __( 'Go to the first page', 'woocommerce-multilingual' ),
2038
 
2039
- msgid "%d items"
2040
  msgstr ""
2041
 
2042
- # 'items' => __( '%d items', 'woocommerce-multilingual' ),
2043
- # 'first' => __( 'Go to the first page', 'woocommerce-multilingual' ),
2044
- # 'previous' => __( 'Go to the previous page', 'woocommerce-multilingual' ),
2045
 
2046
- msgid "Go to the first page"
2047
  msgstr ""
2048
 
2049
- # 'first' => __( 'Go to the first page', 'woocommerce-multilingual' ),
2050
- # 'previous' => __( 'Go to the previous page', 'woocommerce-multilingual' ),
2051
- # 'select' => __( 'Select Page', 'woocommerce-multilingual' ),
2052
 
2053
- msgid "Go to the previous page"
2054
  msgstr ""
2055
 
2056
- # 'previous' => __( 'Go to the previous page', 'woocommerce-multilingual' ),
2057
- # 'select' => __( 'Select Page', 'woocommerce-multilingual' ),
2058
- # 'current' => __( 'Current page', 'woocommerce-multilingual' ),
2059
 
2060
- msgid "Select Page"
2061
  msgstr ""
2062
 
2063
- # 'select' => __( 'Select Page', 'woocommerce-multilingual' ),
2064
- # 'current' => __( 'Current page', 'woocommerce-multilingual' ),
2065
- # 'of' => __( 'of', 'woocommerce-multilingual' ),
2066
 
2067
- msgid "Current page"
2068
  msgstr ""
2069
 
2070
- # 'current' => __( 'Current page', 'woocommerce-multilingual' ),
2071
- # 'of' => __( 'of', 'woocommerce-multilingual' ),
2072
- # 'next' => __( 'Go to the next page', 'woocommerce-multilingual' ),
2073
 
2074
- msgid "of"
2075
  msgstr ""
2076
 
2077
- # 'of' => __( 'of', 'woocommerce-multilingual' ),
2078
- # 'next' => __( 'Go to the next page', 'woocommerce-multilingual' ),
2079
- # 'last' => __( 'Go to the last page', 'woocommerce-multilingual' ),
2080
 
2081
- msgid "Go to the next page"
2082
  msgstr ""
2083
 
2084
- # 'next' => __( 'Go to the next page', 'woocommerce-multilingual' ),
2085
- # 'last' => __( 'Go to the last page', 'woocommerce-multilingual' ),
2086
- # )
2087
 
2088
- msgid "Go to the last page"
2089
  msgstr ""
2090
 
2091
- # 'translation_interface' => array(
2092
- # 'heading' => __('Product Translation Interface','woocommerce-multilingual'),
2093
- # 'tip' => __( 'The recommended way is using the WPML Translation Editor. It is streamlined for making the translation process much easier while also providing a much better integration with various WooCommerce extensions.',
2094
 
2095
- msgid "Product Translation Interface"
2096
  msgstr ""
2097
 
2098
- # 'heading' => __('Product Translation Interface','woocommerce-multilingual'),
2099
- # 'tip' => __( 'The recommended way is using the WPML Translation Editor. It is streamlined for making the translation process much easier while also providing a much better integration with various WooCommerce extensions.',
2100
- # 'woocommerce-multilingual' ),
2101
 
2102
- msgid "The recommended way is using the WPML Translation Editor. It is streamlined for making the translation process much easier while also providing a much better integration with various WooCommerce extensions."
 
2103
  msgstr ""
2104
 
2105
- # 'wcml' => array(
2106
- # 'label' => __('WPML Translation Editor', 'woocommerce-multilingual'),
2107
- #
2108
 
2109
- msgid "WPML Translation Editor"
2110
  msgstr ""
2111
 
2112
- # 'native' => array(
2113
- # 'label' => __('Native WooCommerce product editing screen' , 'woocommerce-multilingual'),
2114
- #
2115
 
2116
- msgid "Native WooCommerce product editing screen"
2117
  msgstr ""
2118
 
2119
- # 'synchronization' => array(
2120
- # 'heading' => __('Products Synchronization', 'woocommerce-multilingual'),
2121
- # 'tip' => __( 'Configure specific product properties that should be synced to translations.', 'woocommerce-multilingual' ),
2122
 
2123
- msgid "Products Synchronization"
2124
  msgstr ""
2125
 
2126
- # 'heading' => __('Products Synchronization', 'woocommerce-multilingual'),
2127
- # 'tip' => __( 'Configure specific product properties that should be synced to translations.', 'woocommerce-multilingual' ),
2128
- # 'sync_date' => array(
2129
 
2130
- msgid "Configure specific product properties that should be synced to translations."
2131
  msgstr ""
2132
 
2133
- # 'value' => $this->woocommerce_wpml->settings['products_sync_date'],
2134
- # 'label' => __('Sync publishing date for translated products.', 'woocommerce-multilingual')
2135
- # ),
2136
 
2137
- msgid "Sync publishing date for translated products."
2138
  msgstr ""
2139
 
2140
- # 'value' => $this->woocommerce_wpml->settings['products_sync_order'],
2141
- # 'label' => __('Sync products and product taxonomies order.', 'woocommerce-multilingual')
2142
- # ),
2143
 
2144
- msgid "Sync products and product taxonomies order."
2145
  msgstr ""
2146
 
2147
- # 'file_sync' => array(
2148
- # 'heading' => __('Products Download Files', 'woocommerce-multilingual'),
2149
- # 'tip' => __( 'If you are using downloadable products, you can choose to have their paths
2150
 
2151
- msgid "Products Download Files"
2152
  msgstr ""
2153
 
2154
- # 'heading' => __('Products Download Files', 'woocommerce-multilingual'),
2155
- # 'tip' => __( 'If you are using downloadable products, you can choose to have their paths
2156
- # synchronized, or seperate for each language.', 'woocommerce-multilingual' ),
2157
 
2158
- msgid "If you are using downloadable products, you can choose to have their paths\n synchronized, or seperate for each language."
2159
  msgstr ""
2160
 
2161
- # 'value' => $this->woocommerce_wpml->settings['file_path_sync'],
2162
- # 'label_same' => __('Use the same files for translations', 'woocommerce-multilingual'),
2163
- # 'label_diff' => __('Add separate download files for translations', 'woocommerce-multilingual'),
2164
 
2165
- msgid "Use the same files for translations"
2166
  msgstr ""
2167
 
2168
- # 'label_same' => __('Use the same files for translations', 'woocommerce-multilingual'),
2169
- # 'label_diff' => __('Add separate download files for translations', 'woocommerce-multilingual'),
2170
- # ),
2171
 
2172
- msgid "Add separate download files for translations"
2173
  msgstr ""
2174
 
2175
- # 'cart_sync' => array(
2176
- # 'tip' => __('You can choose to clear the cart contents when you change language or currency in case you have problems in cart or checkout page', 'woocommerce-multilingual'),
2177
- # 'heading' => __('Cart', 'woocommerce-multilingual'),
2178
-
2179
- msgid "You can choose to clear the cart contents when you change language or currency in case you have problems in cart or checkout page"
2180
- msgstr ""
2181
-
2182
- # 'lang_switch' => array(
2183
- # 'heading' => __('Switching languages when there are items in the cart', 'woocommerce-multilingual'),
2184
- # 'sync_label' => __('Synchronize cart content when switching languages', 'woocommerce-multilingual'),
2185
-
2186
- msgid "Switching languages when there are items in the cart"
2187
- msgstr ""
2188
-
2189
- # 'heading' => __('Switching languages when there are items in the cart', 'woocommerce-multilingual'),
2190
- # 'sync_label' => __('Synchronize cart content when switching languages', 'woocommerce-multilingual'),
2191
- # 'clear_label' => __('Prompt for a confirmation and reset the cart', 'woocommerce-multilingual'),
2192
-
2193
- msgid "Synchronize cart content when switching languages"
2194
- msgstr ""
2195
-
2196
- # 'sync_label' => __('Synchronize cart content when switching languages', 'woocommerce-multilingual'),
2197
- # 'clear_label' => __('Prompt for a confirmation and reset the cart', 'woocommerce-multilingual'),
2198
- # 'value' => $this->woocommerce_wpml->settings['cart_sync']['lang_switch']
2199
-
2200
- msgid "Prompt for a confirmation and reset the cart"
2201
- msgstr ""
2202
-
2203
- # 'currency_switch' => array(
2204
- # 'heading' => __('Switching currencies when there are items in the cart', 'woocommerce-multilingual'),
2205
- # 'sync_label' => __('Synchronize cart content when switching currencies', 'woocommerce-multilingual'),
2206
-
2207
- msgid "Switching currencies when there are items in the cart"
2208
- msgstr ""
2209
-
2210
- # 'heading' => __('Switching currencies when there are items in the cart', 'woocommerce-multilingual'),
2211
- # 'sync_label' => __('Synchronize cart content when switching currencies', 'woocommerce-multilingual'),
2212
- # 'clear_label' => __('Prompt for a confirmation and reset the cart', 'woocommerce-multilingual'),
2213
-
2214
- msgid "Synchronize cart content when switching currencies"
2215
- msgstr ""
2216
-
2217
- # ),
2218
- # 'doc_link' => sprintf( __( 'Not sure which option to choose? Read about %spotential issues when switching languages and currencies while the cart has items%s.',
2219
- # 'woocommerce-multilingual' ),
2220
-
2221
- msgid "Not sure which option to choose? Read about %spotential issues when switching languages and currencies while the cart has items%s."
2222
- msgstr ""
2223
-
2224
- # 'nonce' => wp_nonce_field('wcml_save_settings_nonce', 'wcml_nonce', true, false),
2225
- # 'save_label' => __( 'Save changes', 'woocommerce-multilingual' ),
2226
- #
2227
-
2228
- msgid "Save changes"
2229
- msgstr ""
2230
-
2231
- # 'url' => admin_url( 'admin.php?page=wpml-wcml&tab=troubleshooting' ),
2232
- # 'label' => __( 'Troubleshooting page', 'woocommerce-multilingual' )
2233
- # )
2234
 
2235
- msgid "Troubleshooting page"
2236
  msgstr ""
2237
 
2238
- # 'strings' => array(
2239
- # 'use_custom' => __( 'Use custom settings for translations download files', 'woocommerce-multilingual' ),
2240
- # 'use_same' => __( 'Use the same files for translations', 'woocommerce-multilingual' ),
2241
 
2242
- msgid "Use custom settings for translations download files"
2243
  msgstr ""
2244
 
2245
- # 'content' => $this->content,
2246
- # 'trnsl_title' => __( 'How to translate this?', 'woocommerce-multilingual' ),
2247
- # 'doc_link' => $this->doc_link,
2248
 
2249
- msgid "How to translate this?"
2250
  msgstr ""
2251
 
2252
- # 'doc_link' => $this->doc_link,
2253
- # 'doc_link_text' => __( 'Learn more', 'woocommerce-multilingual' ),
2254
- # ),
2255
 
2256
- msgid "Learn more"
2257
  msgstr ""
2258
 
2259
- # 'strings' => array(
2260
- # 'update_trnsl' => __('Update Translation', 'woocommerce-multilingual'),
2261
- # 'hide' => __('Hide This Message', 'woocommerce-multilingual'),
2262
 
2263
- msgid "Update Translation"
2264
  msgstr ""
2265
 
2266
- # 'update_trnsl' => __('Update Translation', 'woocommerce-multilingual'),
2267
- # 'hide' => __('Hide This Message', 'woocommerce-multilingual'),
2268
- # 'trnsl_available' => sprintf( __( '<strong>WooCommerce Translation Available</strong> &#8211; Install or update your <code>%s</code> translations to version <code>%s</code>.', 'woocommerce-multilingual' ), implode(', ', $this->notices ), WC_VERSION )
2269
 
2270
- msgid "Hide This Message"
2271
  msgstr ""
2272
 
2273
- # 'hide' => __('Hide This Message', 'woocommerce-multilingual'),
2274
- # 'trnsl_available' => sprintf( __( '<strong>WooCommerce Translation Available</strong> &#8211; Install or update your <code>%s</code> translations to version <code>%s</code>.', 'woocommerce-multilingual' ), implode(', ', $this->notices ), WC_VERSION )
2275
  # ),
2276
 
2277
- msgid "<strong>WooCommerce Translation Available</strong> &#8211; Install or update your <code>%s</code> translations to version <code>%s</code>."
2278
  msgstr ""
2279
 
2280
  # 'strings' => array(
@@ -2370,19 +1978,12 @@ msgstr ""
2370
 
2371
  # 'base_not_trnsl' => __( 'Your product permalink base is not translated to:', 'woocommerce-multilingual' ),
2372
  # 'trsl_urls' => __( 'Translate URLs', 'woocommerce-multilingual' ),
2373
- # 'def_and_st_not_en' => __( "Your site's default language is not English and the strings language is also not English.", 'woocommerce-multilingual' ),
2374
 
2375
  msgid "Translate URLs"
2376
  msgstr ""
2377
 
2378
  # 'trsl_urls' => __( 'Translate URLs', 'woocommerce-multilingual' ),
2379
- # 'def_and_st_not_en' => __( "Your site's default language is not English and the strings language is also not English.", 'woocommerce-multilingual' ),
2380
- # 'run_not_en' => __( 'Running WooCommerce multilingual with default language other than English.', 'woocommerce-multilingual' ),
2381
-
2382
- msgid "Your site's default language is not English and the strings language is also not English."
2383
- msgstr ""
2384
-
2385
- # 'def_and_st_not_en' => __( "Your site's default language is not English and the strings language is also not English.", 'woocommerce-multilingual' ),
2386
  # 'run_not_en' => __( 'Running WooCommerce multilingual with default language other than English.', 'woocommerce-multilingual' ),
2387
  # 'url_problems' => __( 'This may cause problems with URLs in different languages.', 'woocommerce-multilingual' ),
2388
 
@@ -2398,19 +1999,12 @@ msgstr ""
2398
 
2399
  # 'url_problems' => __( 'This may cause problems with URLs in different languages.', 'woocommerce-multilingual' ),
2400
  # 'change_def_lang' => __( 'Change default language', 'woocommerce-multilingual' ),
2401
- # 'def_not_en' => __( "Your site's default language is not English.", 'woocommerce-multilingual' ),
2402
 
2403
  msgid "Change default language"
2404
  msgstr ""
2405
 
2406
  # 'change_def_lang' => __( 'Change default language', 'woocommerce-multilingual' ),
2407
- # 'def_not_en' => __( "Your site's default language is not English.", 'woocommerce-multilingual' ),
2408
- # 'attent_sett' => __( 'There are some settings that require careful attention.', 'woocommerce-multilingual' ),
2409
-
2410
- msgid "Your site's default language is not English."
2411
- msgstr ""
2412
-
2413
- # 'def_not_en' => __( "Your site's default language is not English.", 'woocommerce-multilingual' ),
2414
  # 'attent_sett' => __( 'There are some settings that require careful attention.', 'woocommerce-multilingual' ),
2415
  # 'over_sett' => __( 'Some settings from the WooCommerce Multilingual wpml-config.xml file have been overwritten.', 'woocommerce-multilingual' ),
2416
 
@@ -2438,6 +2032,34 @@ msgstr ""
2438
  msgid "Multilingual Content Setup"
2439
  msgstr ""
2440
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2441
  # 'strings' => array(
2442
  # 'products_missing' => __( 'Products Missing Translations', 'woocommerce-multilingual' ),
2443
  # 'miss_trnsl_one' => __( '%d %s translation missing.', 'woocommerce-multilingual' ),
@@ -2473,25 +2095,11 @@ msgstr ""
2473
  msgid "Right now, there are no products needing translation."
2474
  msgstr ""
2475
 
2476
- # 'no_secondary' => __( "You haven't added any secondary currencies.", 'woocommerce-multilingual' ),
2477
- # 'sec_currencies' => __( 'Secondary currencies: %s', 'woocommerce-multilingual' ),
2478
- # 'not_enabled' => __( 'Multi-currency is not enabled.', 'woocommerce-multilingual' ),
2479
-
2480
- msgid "Secondary currencies: %s"
2481
- msgstr ""
2482
-
2483
- # 'sec_currencies' => __( 'Secondary currencies: %s', 'woocommerce-multilingual' ),
2484
- # 'not_enabled' => __( 'Multi-currency is not enabled.', 'woocommerce-multilingual' ),
2485
- # 'add_cur' => __( 'Add Currencies', 'woocommerce-multilingual' )
2486
-
2487
- msgid "Multi-currency is not enabled."
2488
- msgstr ""
2489
-
2490
- # 'not_enabled' => __( 'Multi-currency is not enabled.', 'woocommerce-multilingual' ),
2491
- # 'add_cur' => __( 'Add Currencies', 'woocommerce-multilingual' )
2492
  # )
2493
 
2494
- msgid "Add Currencies"
2495
  msgstr ""
2496
 
2497
  # 'strings' => array(
@@ -2529,214 +2137,921 @@ msgstr ""
2529
  msgid "WooCommerce Multilingual depends on several plugins to work. If any required plugin is missing, you should install and activate it."
2530
  msgstr ""
2531
 
2532
- # 'strings' => array(
2533
- # 'store_pages' => __( 'WooCommerce Store Pages', 'woocommerce-multilingual' ),
2534
- # 'pages_trnsl' => __( 'To run a multilingual e-commerce site, you need to have the WooCommerce shop pages translated to all the site\'s languages. Once all the pages are installed you can add the translations for them from this menu.', 'woocommerce-multilingual' ),
2535
 
2536
- msgid "WooCommerce Store Pages"
2537
  msgstr ""
2538
 
2539
- # 'store_pages' => __( 'WooCommerce Store Pages', 'woocommerce-multilingual' ),
2540
- # 'pages_trnsl' => __( 'To run a multilingual e-commerce site, you need to have the WooCommerce shop pages translated to all the site\'s languages. Once all the pages are installed you can add the translations for them from this menu.', 'woocommerce-multilingual' ),
2541
- # 'store_pages' => __( 'WooCommerce Store Pages', 'woocommerce-multilingual' ),
2542
 
2543
- msgid "To run a multilingual e-commerce site, you need to have the WooCommerce shop pages translated to all the site's languages. Once all the pages are installed you can add the translations for them from this menu."
2544
  msgstr ""
2545
 
2546
- # 'store_pages' => __( 'WooCommerce Store Pages', 'woocommerce-multilingual' ),
2547
- # 'not_created' => __( 'One or more WooCommerce pages have not been created.', 'woocommerce-multilingual' ),
2548
- # 'install' => __( 'Install WooCommerce Pages', 'woocommerce-multilingual' ),
2549
 
2550
- msgid "One or more WooCommerce pages have not been created."
2551
  msgstr ""
2552
 
2553
- # 'not_created' => __( 'One or more WooCommerce pages have not been created.', 'woocommerce-multilingual' ),
2554
- # 'install' => __( 'Install WooCommerce Pages', 'woocommerce-multilingual' ),
2555
- # 'not_exist' => __( 'WooCommerce store pages do not exist for these languages:', 'woocommerce-multilingual' ),
2556
 
2557
- msgid "Install WooCommerce Pages"
2558
  msgstr ""
2559
 
2560
- # 'install' => __( 'Install WooCommerce Pages', 'woocommerce-multilingual' ),
2561
- # 'not_exist' => __( 'WooCommerce store pages do not exist for these languages:', 'woocommerce-multilingual' ),
2562
- # 'create_transl' => __( 'Create missing translations', 'woocommerce-multilingual' ),
2563
 
2564
- msgid "WooCommerce store pages do not exist for these languages:"
2565
  msgstr ""
2566
 
2567
- # 'not_exist' => __( 'WooCommerce store pages do not exist for these languages:', 'woocommerce-multilingual' ),
2568
- # 'create_transl' => __( 'Create missing translations', 'woocommerce-multilingual' ),
2569
- # 'translated_wpml' => __( 'These pages are currently being translated by translators via WPML: ', 'woocommerce-multilingual' ),
2570
 
2571
- msgid "Create missing translations"
2572
  msgstr ""
2573
 
2574
- # 'create_transl' => __( 'Create missing translations', 'woocommerce-multilingual' ),
2575
- # 'translated_wpml' => __( 'These pages are currently being translated by translators via WPML: ', 'woocommerce-multilingual' ),
2576
- # 'translated' => __( 'WooCommerce store pages are translated to all the site\'s languages.', 'woocommerce-multilingual' )
2577
 
2578
- msgid "These pages are currently being translated by translators via WPML: "
2579
  msgstr ""
2580
 
2581
- # 'translated_wpml' => __( 'These pages are currently being translated by translators via WPML: ', 'woocommerce-multilingual' ),
2582
- # 'translated' => __( 'WooCommerce store pages are translated to all the site\'s languages.', 'woocommerce-multilingual' )
2583
- # ),
2584
 
2585
- msgid "WooCommerce store pages are translated to all the site's languages."
2586
  msgstr ""
2587
 
2588
- # 'strings' => array(
2589
- # 'label' => __( 'Translatable?', 'woocommerce-multilingual' ),
2590
- # 'description' => __( 'Enable this if you want to translate attribute values with Woocommerce Multilingual', 'woocommerce-multilingual' ),
2591
 
2592
- msgid "Translatable?"
2593
  msgstr ""
2594
 
2595
- # 'label' => __( 'Translatable?', 'woocommerce-multilingual' ),
2596
- # 'description' => __( 'Enable this if you want to translate attribute values with Woocommerce Multilingual', 'woocommerce-multilingual' ),
2597
- # 'notice' => __( 'Existing translations and variations associated will be deleted.', 'woocommerce-multilingual' )
2598
 
2599
- msgid "Enable this if you want to translate attribute values with Woocommerce Multilingual"
2600
  msgstr ""
2601
 
2602
- # 'description' => __( 'Enable this if you want to translate attribute values with Woocommerce Multilingual', 'woocommerce-multilingual' ),
2603
- # 'notice' => __( 'Existing translations and variations associated will be deleted.', 'woocommerce-multilingual' )
2604
- # )
2605
 
2606
- msgid "Existing translations and variations associated will be deleted."
2607
  msgstr ""
2608
 
2609
- # $last_updated = empty( $this->settings['last_updated'] ) ?
2610
- # '<i>' . __( 'never', 'woocommerce-multilingual' ) . '</i>' :
2611
- # date_i18n( 'F j, Y g:i a', $this->settings['last_updated'] );
2612
 
2613
- msgid "never"
2614
  msgstr ""
2615
 
2616
- #
2617
- # 'header' => __( 'Automatic Exchange Rates', 'woocommerce-multilingual' ),
2618
- # 'no_currencies' => __( "You haven't added any secondary currencies.", 'woocommerce-multilingual' ),
2619
 
2620
- msgid "Automatic Exchange Rates"
2621
  msgstr ""
2622
 
2623
- # 'no_currencies' => __( "You haven't added any secondary currencies.", 'woocommerce-multilingual' ),
2624
- # 'enable_automatic' => __( 'Enable automatic exchange rates', 'woocommerce-multilingual' ),
2625
- # 'services_label' => __( 'Exchange rates source', 'woocommerce-multilingual' ),
2626
 
2627
- msgid "Enable automatic exchange rates"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2628
  msgstr ""
2629
 
2630
- # 'enable_automatic' => __( 'Enable automatic exchange rates', 'woocommerce-multilingual' ),
2631
- # 'services_label' => __( 'Exchange rates source', 'woocommerce-multilingual' ),
2632
- # 'lifting_label' => __( 'Lifting charge', 'woocommerce-multilingual' ),
2633
 
2634
- msgid "Exchange rates source"
2635
  msgstr ""
2636
 
2637
- # 'services_label' => __( 'Exchange rates source', 'woocommerce-multilingual' ),
2638
- # 'lifting_label' => __( 'Lifting charge', 'woocommerce-multilingual' ),
2639
- # 'lifting_details1' => __( 'The lifting charge adjusts the exchange rate provided by the selected service before it is saved. The exchange rates displayed in the table above include the lifting charge.', 'woocommerce-multilingual' ),
2640
 
2641
- msgid "Lifting charge"
2642
  msgstr ""
2643
 
2644
- # 'lifting_label' => __( 'Lifting charge', 'woocommerce-multilingual' ),
2645
- # 'lifting_details1' => __( 'The lifting charge adjusts the exchange rate provided by the selected service before it is saved. The exchange rates displayed in the table above include the lifting charge.', 'woocommerce-multilingual' ),
2646
- # 'lifting_details2' => __( 'Exchange rate = %s exchange rate x (1 + lifting charge / 100)', 'woocommerce-multilingual' ),
2647
 
2648
- msgid "The lifting charge adjusts the exchange rate provided by the selected service before it is saved. The exchange rates displayed in the table above include the lifting charge."
2649
  msgstr ""
2650
 
2651
- # 'lifting_details1' => __( 'The lifting charge adjusts the exchange rate provided by the selected service before it is saved. The exchange rates displayed in the table above include the lifting charge.', 'woocommerce-multilingual' ),
2652
- # 'lifting_details2' => __( 'Exchange rate = %s exchange rate x (1 + lifting charge / 100)', 'woocommerce-multilingual' ),
2653
- # 'services_api' => __( 'API key (required)', 'woocommerce-multilingual' ),
2654
 
2655
- msgid "Exchange rate = %s exchange rate x (1 + lifting charge / 100)"
2656
  msgstr ""
2657
 
2658
- # 'lifting_details2' => __( 'Exchange rate = %s exchange rate x (1 + lifting charge / 100)', 'woocommerce-multilingual' ),
2659
- # 'services_api' => __( 'API key (required)', 'woocommerce-multilingual' ),
2660
- # 'frequency' => __( 'Update frequency', 'woocommerce-multilingual' ),
2661
 
2662
- msgid "API key (required)"
2663
  msgstr ""
2664
 
2665
- # 'services_api' => __( 'API key (required)', 'woocommerce-multilingual' ),
2666
- # 'frequency' => __( 'Update frequency', 'woocommerce-multilingual' ),
2667
- # 'update' => __( 'Update manually now', 'woocommerce-multilingual' ),
2668
 
2669
- msgid "Update frequency"
2670
  msgstr ""
2671
 
2672
- # 'frequency' => __( 'Update frequency', 'woocommerce-multilingual' ),
2673
- # 'update' => __( 'Update manually now', 'woocommerce-multilingual' ),
2674
- # 'update_tip' => __( 'You have to save all settings before updating exchange rates', 'woocommerce-multilingual' ),
2675
 
2676
- msgid "Update manually now"
2677
  msgstr ""
2678
 
2679
- # 'update' => __( 'Update manually now', 'woocommerce-multilingual' ),
2680
- # 'update_tip' => __( 'You have to save all settings before updating exchange rates', 'woocommerce-multilingual' ),
2681
- # 'manually' => __( 'Manually', 'woocommerce-multilingual'),
2682
 
2683
- msgid "You have to save all settings before updating exchange rates"
2684
  msgstr ""
2685
 
2686
- # 'update_tip' => __( 'You have to save all settings before updating exchange rates', 'woocommerce-multilingual' ),
2687
- # 'manually' => __( 'Manually', 'woocommerce-multilingual'),
2688
- # 'daily' => __( 'Daily', 'woocommerce-multilingual' ),
2689
 
2690
- msgid "Manually"
2691
  msgstr ""
2692
 
2693
- # 'manually' => __( 'Manually', 'woocommerce-multilingual'),
2694
- # 'daily' => __( 'Daily', 'woocommerce-multilingual' ),
2695
- # 'weekly' => __( 'Weekly on', 'woocommerce-multilingual' ),
2696
 
2697
- msgid "Daily"
2698
  msgstr ""
2699
 
2700
- # 'daily' => __( 'Daily', 'woocommerce-multilingual' ),
2701
- # 'weekly' => __( 'Weekly on', 'woocommerce-multilingual' ),
2702
- # 'monthly' => __( 'Monthly on the', 'woocommerce-multilingual' ),
2703
 
2704
- msgid "Weekly on"
2705
  msgstr ""
2706
 
2707
- # 'weekly' => __( 'Weekly on', 'woocommerce-multilingual' ),
2708
- # 'monthly' => __( 'Monthly on the', 'woocommerce-multilingual' ),
2709
- # 'key_placeholder' => __( 'Enter API key', 'woocommerce-multilingual' ),
2710
 
2711
- msgid "Monthly on the"
2712
  msgstr ""
2713
 
2714
- # 'monthly' => __( 'Monthly on the', 'woocommerce-multilingual' ),
2715
- # 'key_placeholder' => __( 'Enter API key', 'woocommerce-multilingual' ),
2716
- # 'key_required' => __( 'API key (required)', 'woocommerce-multilingual' ),
2717
 
2718
- msgid "Enter API key"
2719
  msgstr ""
2720
 
2721
- # 'updated_time' => sprintf(
2722
- # __('Last updated: %s', 'woocommerce-multilingual' ),
2723
- # '<span class="time">' . $last_updated . '</span>'
2724
 
2725
- msgid "Last updated: %s"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2726
  msgstr ""
2727
 
 
 
2728
  # ),
2729
- # 'updated_success' => __( 'Exchange rates updated successfully', 'woocommerce-multilingual' ),
2730
- # 'visit_website' => __( 'Visit website', 'woocommerce-multilingual' )
2731
 
2732
- msgid "Exchange rates updated successfully"
2733
  msgstr ""
2734
 
2735
- # 'updated_success' => __( 'Exchange rates updated successfully', 'woocommerce-multilingual' ),
2736
- # 'visit_website' => __( 'Visit website', 'woocommerce-multilingual' )
2737
- #
2738
 
2739
- msgid "Visit website"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2740
  msgstr ""
2741
 
2742
  # 'form' => array(
@@ -2755,7 +3070,7 @@ msgstr ""
2755
 
2756
  # 'label' => __( 'Exchange Rate', 'woocommerce-multilingual' ),
2757
  # 'only_numeric' => __( 'Only numeric', 'woocommerce-multilingual' ),
2758
- # 'set_on' => empty($this->args['currency']['updated'] ) ? '' :
2759
 
2760
  msgid "Only numeric"
2761
  msgstr ""
@@ -2874,12 +3189,12 @@ msgstr ""
2874
 
2875
  # 'nearest' => __( 'Nearest', 'woocommerce-multilingual' ),
2876
  # 'increment' => __( 'Increment for nearest integer', 'woocommerce-multilingual' ),
2877
- #
2878
 
2879
  msgid "Increment for nearest integer"
2880
  msgstr ""
2881
 
2882
- #
2883
  # 'rounding_tooltip' => sprintf( __("Round the converted price to the closest integer. %se.g. 15.78 becomes 16.00", 'woocommerce-multilingual'), '<br />' ),
2884
  # 'increment_tooltip' => sprintf( __('The resulting price will be an increment of this value after initial rounding.%se.g.:', 'woocommerce-multilingual'), '<br>' ) . '<br />' .
2885
 
@@ -2935,18 +3250,11 @@ msgstr ""
2935
  msgid "Autosubtract amount"
2936
  msgstr ""
2937
 
2938
- #
2939
- # 'cancel' => __( 'Cancel', 'woocommerce-multilingual' ),
2940
- # 'save' => __( 'Save', 'woocommerce-multilingual' )
2941
-
2942
- msgid "Cancel"
2943
- msgstr ""
2944
-
2945
  # 'cancel' => __( 'Cancel', 'woocommerce-multilingual' ),
2946
- # 'save' => __( 'Save', 'woocommerce-multilingual' )
2947
- #
2948
 
2949
- msgid "Save"
2950
  msgstr ""
2951
 
2952
  # 'automatic_rates' => $exchange_rates_automatic,
@@ -2956,837 +3264,844 @@ msgstr ""
2956
  msgid "Exchange rate updated automatically from %s"
2957
  msgstr ""
2958
 
2959
- # $this->custom_prices_fields = apply_filters( 'wcml_custom_prices_fields', array( '_regular_price', '_sale_price' ), $product_id );
2960
- # $this->custom_prices_fields_labels = apply_filters( 'wcml_custom_prices_fields_labels', array( '_regular_price' => __( 'Regular Price', 'woocommerce-multilingual' ), '_sale_price' => __( 'Sale Price', 'woocommerce-multilingual' ) ), $product_id );
2961
- #
2962
 
2963
- msgid "Regular Price"
2964
  msgstr ""
2965
 
2966
- # $this->custom_prices_fields = apply_filters( 'wcml_custom_prices_fields', array( '_regular_price', '_sale_price' ), $product_id );
2967
- # $this->custom_prices_fields_labels = apply_filters( 'wcml_custom_prices_fields_labels', array( '_regular_price' => __( 'Regular Price', 'woocommerce-multilingual' ), '_sale_price' => __( 'Sale Price', 'woocommerce-multilingual' ) ), $product_id );
2968
- #
2969
 
2970
- msgid "Sale Price"
2971
  msgstr ""
2972
 
2973
- # 'strings' => apply_filters( 'wcml_custom_prices_strings', array(
2974
- # 'not_set' => sprintf( __( 'Multi-currency is enabled but no secondary currencies have been set. %sAdd secondary currencies%s.',
2975
- # 'woocommerce-multilingual' ), '<a href="' . admin_url('admin.php?page=wpml-wcml&tab=multi-currency') . '">', '</a>' ),
2976
 
2977
- msgid "Multi-currency is enabled but no secondary currencies have been set. %sAdd secondary currencies%s."
2978
  msgstr ""
2979
 
2980
- # 'woocommerce-multilingual' ), '<a href="' . admin_url('admin.php?page=wpml-wcml&tab=multi-currency') . '">', '</a>' ),
2981
- # 'calc_auto' => __( 'Calculate prices in other currencies automatically', 'woocommerce-multilingual' ),
2982
- # 'see_prices' => __( 'Click to see the prices in the other currencies as they are currently shown on the front end.', 'woocommerce-multilingual' ),
2983
 
2984
- msgid "Calculate prices in other currencies automatically"
2985
  msgstr ""
2986
 
2987
- # 'calc_auto' => __( 'Calculate prices in other currencies automatically', 'woocommerce-multilingual' ),
2988
- # 'see_prices' => __( 'Click to see the prices in the other currencies as they are currently shown on the front end.', 'woocommerce-multilingual' ),
2989
- # 'show' => __( 'Show', 'woocommerce-multilingual' ),
2990
 
2991
- msgid "Click to see the prices in the other currencies as they are currently shown on the front end."
2992
  msgstr ""
2993
 
2994
- # 'see_prices' => __( 'Click to see the prices in the other currencies as they are currently shown on the front end.', 'woocommerce-multilingual' ),
2995
- # 'show' => __( 'Show', 'woocommerce-multilingual' ),
2996
- # 'hide' => __( 'Hide', 'woocommerce-multilingual' ),
2997
 
2998
- msgid "Show"
2999
  msgstr ""
3000
 
3001
- # 'hide' => __( 'Hide', 'woocommerce-multilingual' ),
3002
- # 'set_manually' => __( 'Set prices in other currencies manually', 'woocommerce-multilingual' ),
3003
- # 'enter_prices' => __( 'Enter prices in other currencies', 'woocommerce-multilingual' ),
3004
 
3005
- msgid "Set prices in other currencies manually"
3006
  msgstr ""
3007
 
3008
- # 'set_manually' => __( 'Set prices in other currencies manually', 'woocommerce-multilingual' ),
3009
- # 'enter_prices' => __( 'Enter prices in other currencies', 'woocommerce-multilingual' ),
3010
- # 'hide_prices' => __( 'Hide prices in other currencies', 'woocommerce-multilingual' ),
3011
 
3012
- msgid "Enter prices in other currencies"
3013
  msgstr ""
3014
 
3015
- # 'enter_prices' => __( 'Enter prices in other currencies', 'woocommerce-multilingual' ),
3016
- # 'hide_prices' => __( 'Hide prices in other currencies', 'woocommerce-multilingual' ),
3017
- # 'det_auto' => __( 'Determined automatically based on exchange rate', 'woocommerce-multilingual' ),
3018
 
3019
- msgid "Hide prices in other currencies"
3020
  msgstr ""
3021
 
3022
- # 'hide_prices' => __( 'Hide prices in other currencies', 'woocommerce-multilingual' ),
3023
- # 'det_auto' => __( 'Determined automatically based on exchange rate', 'woocommerce-multilingual' ),
3024
- # '_regular_price' => __( 'Regular Price', 'woocommerce-multilingual' ),
3025
 
3026
- msgid "Determined automatically based on exchange rate"
3027
  msgstr ""
3028
 
3029
- # '_sale_price' => __( 'Sale Price', 'woocommerce-multilingual' ),
3030
- # 'schedule' => __( 'Schedule', 'woocommerce-multilingual' ),
3031
- # 'same_as_def' => __( 'Same as default currency', 'woocommerce-multilingual' ),
3032
 
3033
- msgid "Schedule"
3034
  msgstr ""
3035
 
3036
- # 'schedule' => __( 'Schedule', 'woocommerce-multilingual' ),
3037
- # 'same_as_def' => __( 'Same as default currency', 'woocommerce-multilingual' ),
3038
- # 'set_dates' => __( 'Set dates', 'woocommerce-multilingual' ),
3039
 
3040
- msgid "Same as default currency"
3041
  msgstr ""
3042
 
3043
- # 'same_as_def' => __( 'Same as default currency', 'woocommerce-multilingual' ),
3044
- # 'set_dates' => __( 'Set dates', 'woocommerce-multilingual' ),
3045
- # 'collapse' => __( 'Collapse', 'woocommerce-multilingual' ),
3046
 
3047
- msgid "Set dates"
3048
  msgstr ""
3049
 
3050
- # 'set_dates' => __( 'Set dates', 'woocommerce-multilingual' ),
3051
- # 'collapse' => __( 'Collapse', 'woocommerce-multilingual' ),
3052
- # 'from' => __( 'From&hellip;', 'woocommerce-multilingual' ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3053
 
3054
- msgid "Collapse"
3055
  msgstr ""
3056
 
3057
- # 'collapse' => __( 'Collapse', 'woocommerce-multilingual' ),
3058
- # 'from' => __( 'From&hellip;', 'woocommerce-multilingual' ),
3059
- # 'to' => __( 'To&hellip;', 'woocommerce-multilingual' ),
3060
 
3061
- msgid "From&hellip;"
3062
  msgstr ""
3063
 
3064
- # 'from' => __( 'From&hellip;', 'woocommerce-multilingual' ),
3065
- # 'to' => __( 'To&hellip;', 'woocommerce-multilingual' ),
3066
- # 'enter_price' => __( 'Please enter in a value less than the regular price', 'woocommerce-multilingual' ) ),
3067
 
3068
- msgid "To&hellip;"
3069
  msgstr ""
3070
 
3071
- # 'to' => __( 'To&hellip;', 'woocommerce-multilingual' ),
3072
- # 'enter_price' => __( 'Please enter in a value less than the regular price', 'woocommerce-multilingual' ) ),
3073
- # $this->product_id
3074
 
3075
- msgid "Please enter in a value less than the regular price"
3076
  msgstr ""
3077
 
3078
- # 'headers' => array(
3079
- # 'enable_disable' => __( 'Enable/disable', 'woocommerce-multilingual' ),
3080
- # 'currencies' => __( 'Currencies', 'woocommerce-multilingual' ),
3081
 
3082
- msgid "Enable/disable"
3083
  msgstr ""
3084
 
3085
- # 'enable_disable' => __( 'Enable/disable', 'woocommerce-multilingual' ),
3086
- # 'currencies' => __( 'Currencies', 'woocommerce-multilingual' ),
3087
- # ),
3088
 
3089
- msgid "Currencies"
3090
  msgstr ""
3091
 
3092
- # ),
3093
- # 'add_currency_button' => __( 'Add currency', 'woocommerce-multilingual' ),
3094
- # 'currencies_table' => array(
3095
 
3096
- msgid "Add currency"
3097
  msgstr ""
3098
 
3099
- # 'currencies_table' => array(
3100
- # 'head_currency' => __('Currency', 'woocommerce-multilingual'),
3101
- # 'head_rate' => __('Rate', 'woocommerce-multilingual'),
3102
 
3103
- msgid "Currency"
3104
  msgstr ""
3105
 
3106
- # 'head_currency' => __('Currency', 'woocommerce-multilingual'),
3107
- # 'head_rate' => __('Rate', 'woocommerce-multilingual'),
3108
- # 'default' => __( 'default', 'woocommerce-multilingual' ),
3109
 
3110
- msgid "Rate"
3111
  msgstr ""
3112
 
3113
- # 'head_rate' => __('Rate', 'woocommerce-multilingual'),
3114
- # 'default' => __( 'default', 'woocommerce-multilingual' ),
3115
- # 'edit' => __( 'Edit', 'woocommerce-multilingual' ),
3116
 
3117
- msgid "default"
3118
  msgstr ""
3119
 
3120
- # 'edit' => __( 'Edit', 'woocommerce-multilingual' ),
3121
- # 'default_currency' => __( 'Default currency', 'woocommerce-multilingual' ),
3122
- # 'default_cur_tip' => __( 'Switch to this currency when switching language in the front-end', 'woocommerce-multilingual' ),
3123
 
3124
- msgid "Default currency"
3125
  msgstr ""
3126
 
3127
- # 'default_currency' => __( 'Default currency', 'woocommerce-multilingual' ),
3128
- # 'default_cur_tip' => __( 'Switch to this currency when switching language in the front-end', 'woocommerce-multilingual' ),
3129
- # 'keep_currency' => __( 'Keep', 'woocommerce-multilingual' ),
3130
 
3131
- msgid "Switch to this currency when switching language in the front-end"
3132
  msgstr ""
3133
 
3134
- # 'default_cur_tip' => __( 'Switch to this currency when switching language in the front-end', 'woocommerce-multilingual' ),
3135
- # 'keep_currency' => __( 'Keep', 'woocommerce-multilingual' ),
3136
- # 'delete' => __( 'Delete', 'woocommerce-multilingual' ),
3137
 
3138
- msgid "Keep"
3139
  msgstr ""
3140
 
3141
- # 'keep_currency' => __( 'Keep', 'woocommerce-multilingual' ),
3142
- # 'delete' => __( 'Delete', 'woocommerce-multilingual' ),
3143
- # 'help_title' => __( 'Currencies to display for each language', 'woocommerce-multilingual' ),
3144
 
3145
- msgid "Delete"
3146
  msgstr ""
3147
 
3148
- # 'delete' => __( 'Delete', 'woocommerce-multilingual' ),
3149
- # 'help_title' => __( 'Currencies to display for each language', 'woocommerce-multilingual' ),
3150
- # 'enable_for' => __('Enable %s for %s', 'woocommerce-multilingual'),
3151
 
3152
- msgid "Currencies to display for each language"
3153
  msgstr ""
3154
 
3155
- # 'help_title' => __( 'Currencies to display for each language', 'woocommerce-multilingual' ),
3156
- # 'enable_for' => __('Enable %s for %s', 'woocommerce-multilingual'),
3157
- # 'disable_for' => __('Disable %s for %s', 'woocommerce-multilingual')
3158
 
3159
- msgid "Enable %s for %s"
3160
  msgstr ""
3161
 
3162
- # 'enable_for' => __('Enable %s for %s', 'woocommerce-multilingual'),
3163
- # 'disable_for' => __('Disable %s for %s', 'woocommerce-multilingual')
3164
- # )
3165
 
3166
- msgid "Disable %s for %s"
3167
  msgstr ""
3168
 
3169
- # 'wc_currencies' => $this->wc_currencies,
3170
- # 'positioned_price' => sprintf( __( ' (%s)', 'woocommerce-multilingual' ), $this->get_positioned_price( $this->wc_currency ) ) ,
3171
- #
3172
 
3173
- msgid " (%s)"
3174
  msgstr ""
3175
 
3176
- #
3177
- # 'wc_currency_empty_warn' => sprintf(__('The multi-currency mode cannot be enabled as a specific currency was not set. Go to the %sWooCommerce settings%s page and select the default currency for your store.',
3178
- # 'woocommerce-multilingual'), '<a href="' . admin_url('admin.php?page=wc-settings') . '">', '</a>'),
3179
 
3180
- msgid "The multi-currency mode cannot be enabled as a specific currency was not set. Go to the %sWooCommerce settings%s page and select the default currency for your store."
3181
  msgstr ""
3182
 
3183
- # 'mco_disabled' => empty($wc_currency),
3184
- # 'label_mco' => __( "Enable the multi-currency mode", 'woocommerce-multilingual' ),
3185
- # 'label_mco_learn_url' => WCML_Links::generate_tracking_link( 'https://wpml.org/documentation/related-projects/woocommerce-multilingual/multi-currency-support-woocommerce/', 'multi-currency-support-woocommerce', 'documentation' ),
3186
 
3187
- msgid "Enable the multi-currency mode"
3188
  msgstr ""
3189
 
3190
- # 'checked' => $this->woocommerce_wpml->settings['display_custom_prices'] == 1,
3191
- # 'label' => __( 'Show only products with custom prices in secondary currencies', 'woocommerce-multilingual' ),
3192
- # 'tip' => __( 'When this option is on, when you switch to a secondary currency on the front end, only the products with custom prices in that currency are being displayed. Products with prices determined based on the exchange rate are hidden.', 'woocommerce-multilingual' )
3193
 
3194
- msgid "Show only products with custom prices in secondary currencies"
3195
  msgstr ""
3196
 
3197
- # 'label' => __( 'Show only products with custom prices in secondary currencies', 'woocommerce-multilingual' ),
3198
- # 'tip' => __( 'When this option is on, when you switch to a secondary currency on the front end, only the products with custom prices in that currency are being displayed. Products with prices determined based on the exchange rate are hidden.', 'woocommerce-multilingual' )
3199
- # ),
3200
 
3201
- msgid "When this option is on, when you switch to a secondary currency on the front end, only the products with custom prices in that currency are being displayed. Products with prices determined based on the exchange rate are hidden."
3202
  msgstr ""
3203
 
3204
- # 'submit' => __( 'Save changes', 'woocommerce-multilingual' ),
3205
- # 'navigate_warn' => __( 'The changes you made will be lost if you navigate away from this page.', 'woocommerce-multilingual' ),
3206
- # 'cur_lang_warn' => __( 'At least one currency must be enabled for this language!', 'woocommerce-multilingual' )
3207
 
3208
- msgid "The changes you made will be lost if you navigate away from this page."
3209
  msgstr ""
3210
 
3211
- # 'navigate_warn' => __( 'The changes you made will be lost if you navigate away from this page.', 'woocommerce-multilingual' ),
3212
- # 'cur_lang_warn' => __( 'At least one currency must be enabled for this language!', 'woocommerce-multilingual' )
3213
- #
3214
 
3215
- msgid "At least one currency must be enabled for this language!"
3216
  msgstr ""
3217
 
3218
- # 'headers' => array(
3219
- # 'main' => __('Currency switcher options', 'woocommerce-multilingual'),
3220
- # 'style' => __('Currency switcher style', 'woocommerce-multilingual'),
3221
 
3222
- msgid "Currency switcher options"
3223
  msgstr ""
3224
 
3225
- # 'main' => __('Currency switcher options', 'woocommerce-multilingual'),
3226
- # 'style' => __('Currency switcher style', 'woocommerce-multilingual'),
3227
- # 'order' => __( 'Currency order', 'woocommerce-multilingual' ),
3228
 
3229
- msgid "Currency switcher style"
3230
  msgstr ""
3231
 
3232
- # 'style' => __('Currency switcher style', 'woocommerce-multilingual'),
3233
- # 'order' => __( 'Currency order', 'woocommerce-multilingual' ),
3234
- # 'parameters' => __( 'Available parameters', 'woocommerce-multilingual' ),
3235
 
3236
- msgid "Currency order"
3237
  msgstr ""
3238
 
3239
- # 'order' => __( 'Currency order', 'woocommerce-multilingual' ),
3240
- # 'parameters' => __( 'Available parameters', 'woocommerce-multilingual' ),
3241
- # 'parameters_list' => '%code%, %symbol%, %name%, %subtotal%',
3242
 
3243
- msgid "Available parameters"
3244
  msgstr ""
3245
 
3246
- # 'parameters_list' => '%code%, %symbol%, %name%, %subtotal%',
3247
- # 'template' => __( 'Template for currency switcher', 'woocommerce-multilingual' ),
3248
- # 'visibility' => __('Visibility', 'woocommerce-multilingual')
3249
 
3250
- msgid "Template for currency switcher"
3251
  msgstr ""
3252
 
3253
- # 'template' => __( 'Template for currency switcher', 'woocommerce-multilingual' ),
3254
- # 'visibility' => __('Visibility', 'woocommerce-multilingual')
3255
  # ),
3256
 
3257
- msgid "Visibility"
3258
  msgstr ""
3259
 
3260
- # 'preview' => $this->woocommerce_wpml->multi_currency->currency_switcher->wcml_currency_switcher( array('echo' => false) ),
3261
- # 'preview_text' => __( 'Currency switcher preview', 'woocommerce-multilingual' ),
3262
- # 'style' => isset($this->woocommerce_wpml->settings['currency_switcher_style']) ? $this->woocommerce_wpml->settings['currency_switcher_style'] : false,
3263
 
3264
- msgid "Currency switcher preview"
3265
  msgstr ""
3266
 
3267
  # 'options' => array(
3268
- # 'dropdown' => __('Drop-down menu', 'woocommerce-multilingual'),
3269
- # 'list' => __('List of currencies', 'woocommerce-multilingual'),
3270
 
3271
- msgid "Drop-down menu"
3272
  msgstr ""
3273
 
3274
- # 'dropdown' => __('Drop-down menu', 'woocommerce-multilingual'),
3275
- # 'list' => __('List of currencies', 'woocommerce-multilingual'),
3276
- # 'vertical' => __('Vertical', 'woocommerce-multilingual'),
3277
 
3278
- msgid "List of currencies"
3279
  msgstr ""
3280
 
3281
- # 'list' => __('List of currencies', 'woocommerce-multilingual'),
3282
- # 'vertical' => __('Vertical', 'woocommerce-multilingual'),
3283
- # 'horizontal' => __('Horizontal', 'woocommerce-multilingual'),
3284
 
3285
- msgid "Vertical"
3286
  msgstr ""
3287
 
3288
- # 'vertical' => __('Vertical', 'woocommerce-multilingual'),
3289
- # 'horizontal' => __('Horizontal', 'woocommerce-multilingual'),
3290
- # 'allowed_tags' => __('Allowed HTML tags: <img> <span> <u> <strong> <em>', 'woocommerce-multilingual')
3291
 
3292
- msgid "Horizontal"
3293
  msgstr ""
3294
 
3295
- # 'horizontal' => __('Horizontal', 'woocommerce-multilingual'),
3296
- # 'allowed_tags' => __('Allowed HTML tags: <img> <span> <u> <strong> <em>', 'woocommerce-multilingual')
3297
  # ),
3298
 
3299
- msgid "Allowed HTML tags: <img> <span> <u> <strong> <em>"
3300
- msgstr ""
3301
-
3302
- # 'order_nonce' => wp_create_nonce( 'set_currencies_order_nonce' ),
3303
- # 'order_tip' => __( 'Drag the currencies to change their order', 'woocommerce-multilingual' ),
3304
- # 'parameters_tip' => __( '%name%, %symbol%, %code%', 'woocommerce-multilingual' ),
3305
-
3306
- msgid "Drag the currencies to change their order"
3307
  msgstr ""
3308
 
3309
- # 'order_tip' => __( 'Drag the currencies to change their order', 'woocommerce-multilingual' ),
3310
- # 'parameters_tip' => __( '%name%, %symbol%, %code%', 'woocommerce-multilingual' ),
3311
- # 'template' => isset($this->woocommerce_wpml->settings['wcml_curr_template']) ?
3312
 
3313
- msgid "%name%, %symbol%, %code%"
3314
  msgstr ""
3315
 
3316
- # $this->woocommerce_wpml->settings['wcml_curr_template'] : '',
3317
- # 'template_tip' => __( 'Default: %name% (%symbol%) - %code%', 'woocommerce-multilingual' ),
3318
- # 'template_default' => '%name% (%symbol%) - %code%',
3319
 
3320
- msgid "Default: %name% (%symbol%) - %code%"
3321
  msgstr ""
3322
 
3323
- # 'template_default' => '%name% (%symbol%) - %code%',
3324
- # 'visibility_label' => __('Show a currency selector on the product page template', 'woocommerce-multilingual'),
3325
- # 'visibility_on' => isset($this->woocommerce_wpml->settings['currency_switcher_product_visibility']) ?
3326
 
3327
- msgid "Show a currency selector on the product page template"
3328
  msgstr ""
3329
 
3330
- # 'products' => $this->get_removed_products(),
3331
- # 'title' => sprintf( __( 'Products removed after switching to %s:', 'woocommerce-multilingual'), $switched_to ),
3332
- # 'clear' => __( 'Clear list', 'woocommerce-multilingual'),
3333
 
3334
- msgid "Products removed after switching to %s:"
3335
  msgstr ""
3336
 
3337
- # 'title' => sprintf( __( 'Products removed after switching to %s:', 'woocommerce-multilingual'), $switched_to ),
3338
- # 'clear' => __( 'Clear list', 'woocommerce-multilingual'),
3339
- # 'nonce' => wp_create_nonce( 'wcml_clear_removed_items' ),
3340
 
3341
- msgid "Clear list"
3342
  msgstr ""
3343
 
3344
- # 'troubl' => __( 'Troubleshooting', 'woocommerce-multilingual' ),
3345
- # 'backup' => __( 'Please make a backup of your database before you start the synchronization', 'woocommerce-multilingual' ),
3346
- # 'sync' => __( 'Sync variables products', 'woocommerce-multilingual' ),
3347
 
3348
- msgid "Please make a backup of your database before you start the synchronization"
3349
  msgstr ""
3350
 
3351
- # 'backup' => __( 'Please make a backup of your database before you start the synchronization', 'woocommerce-multilingual' ),
3352
- # 'sync' => __( 'Sync variables products', 'woocommerce-multilingual' ),
3353
- # 'upd_prod_count' => __( 'Update products count:', 'woocommerce-multilingual' ),
3354
 
3355
- msgid "Sync variables products"
3356
  msgstr ""
3357
 
3358
- # 'sync' => __( 'Sync variables products', 'woocommerce-multilingual' ),
3359
- # 'upd_prod_count' => __( 'Update products count:', 'woocommerce-multilingual' ),
3360
- # 'prod_var' => __( 'products with variations', 'woocommerce-multilingual' ),
3361
 
3362
- msgid "Update products count:"
3363
  msgstr ""
3364
 
3365
- # 'upd_prod_count' => __( 'Update products count:', 'woocommerce-multilingual' ),
3366
- # 'prod_var' => __( 'products with variations', 'woocommerce-multilingual' ),
3367
- # 'sync_var' => __( 'Sync products variations:', 'woocommerce-multilingual' ),
3368
 
3369
- msgid "products with variations"
3370
  msgstr ""
3371
 
3372
- # 'prod_var' => __( 'products with variations', 'woocommerce-multilingual' ),
3373
- # 'sync_var' => __( 'Sync products variations:', 'woocommerce-multilingual' ),
3374
- # 'left' => __( 'left', 'woocommerce-multilingual' ),
3375
 
3376
- msgid "Sync products variations:"
3377
  msgstr ""
3378
 
3379
- # 'sync_var' => __( 'Sync products variations:', 'woocommerce-multilingual' ),
3380
- # 'left' => __( 'left', 'woocommerce-multilingual' ),
3381
- # 'sync_gallery' => __( 'Sync products "gallery images":', 'woocommerce-multilingual' ),
3382
 
3383
- msgid "left"
3384
  msgstr ""
3385
 
3386
- # 'left' => __( 'left', 'woocommerce-multilingual' ),
3387
- # 'sync_gallery' => __( 'Sync products "gallery images":', 'woocommerce-multilingual' ),
3388
- # 'sync_cat' => __( 'Sync products categories (display type, thumbnail):', 'woocommerce-multilingual' ),
3389
 
3390
- msgid "Sync products \"gallery images\":"
3391
  msgstr ""
3392
 
3393
- # 'sync_gallery' => __( 'Sync products "gallery images":', 'woocommerce-multilingual' ),
3394
- # 'sync_cat' => __( 'Sync products categories (display type, thumbnail):', 'woocommerce-multilingual' ),
3395
- # 'dup_terms' => __( 'Duplicate terms ( please select attribute ):', 'woocommerce-multilingual' ),
3396
-
3397
- msgid "Sync products categories (display type, thumbnail):"
3398
  msgstr ""
3399
 
3400
- # 'sync_cat' => __( 'Sync products categories (display type, thumbnail):', 'woocommerce-multilingual' ),
3401
- # 'dup_terms' => __( 'Duplicate terms ( please select attribute ):', 'woocommerce-multilingual' ),
3402
- # 'none' => __( 'none', 'woocommerce-multilingual' ),
3403
 
3404
- msgid "Duplicate terms ( please select attribute ):"
3405
  msgstr ""
3406
 
3407
- # 'dup_terms' => __( 'Duplicate terms ( please select attribute ):', 'woocommerce-multilingual' ),
3408
- # 'none' => __( 'none', 'woocommerce-multilingual' ),
3409
- # 'start' => __( 'Start', 'woocommerce-multilingual' ),
3410
 
3411
- msgid "none"
3412
  msgstr ""
3413
 
3414
- # 'none' => __( 'none', 'woocommerce-multilingual' ),
3415
- # 'start' => __( 'Start', 'woocommerce-multilingual' ),
3416
- # 'delete_terms' => __( 'Fix product_type taxonomy terms', 'woocommerce-multilingual' ),
3417
 
3418
- msgid "Start"
3419
  msgstr ""
3420
 
3421
- # 'start' => __( 'Start', 'woocommerce-multilingual' ),
3422
- # 'delete_terms' => __( 'Fix product_type taxonomy terms', 'woocommerce-multilingual' ),
3423
- # 'product_type_fix_done' => __( 'Done!', 'woocommerce-multilingual' )
3424
 
3425
- msgid "Fix product_type taxonomy terms"
3426
  msgstr ""
3427
 
3428
- # 'delete_terms' => __( 'Fix product_type taxonomy terms', 'woocommerce-multilingual' ),
3429
- # 'product_type_fix_done' => __( 'Done!', 'woocommerce-multilingual' )
3430
  # ),
3431
 
3432
- msgid "Done!"
3433
  msgstr ""
3434
 
3435
- # 'title' => __('WooCommerce Multilingual', 'woocommerce-multilingual'),
3436
- # 'required'=> __('Required plugins', 'woocommerce-multilingual'),
3437
- # 'plugins'=> __('Plugins Status', 'woocommerce-multilingual'),
3438
 
3439
- msgid "Required plugins"
3440
  msgstr ""
3441
 
3442
- # 'depends'=> __('WooCommerce Multilingual depends on several plugins to work. If any required plugin is missing, you should install and activate it.', 'woocommerce-multilingual'),
3443
- # 'old_wpml_link'=> sprintf( __( 'WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href="%s">WPML</a> versions prior 2.0.5.', 'woocommerce-multilingual' ), WCML_Links::generate_tracking_link( 'https://wpml.org/' ) ),
3444
- # 'update_wpml'=> __( 'Update WPML', 'woocommerce-multilingual' ),
3445
 
3446
- msgid "WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href=\"%s\">WPML</a> versions prior 2.0.5."
3447
  msgstr ""
3448
 
3449
- # 'old_wpml_link'=> sprintf( __( 'WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href="%s">WPML</a> versions prior 2.0.5.', 'woocommerce-multilingual' ), WCML_Links::generate_tracking_link( 'https://wpml.org/' ) ),
3450
- # 'update_wpml'=> __( 'Update WPML', 'woocommerce-multilingual' ),
3451
- # 'upgrade_wpml'=> __( 'Upgrade WPML', 'woocommerce-multilingual' ),
3452
 
3453
- msgid "Update WPML"
3454
  msgstr ""
3455
 
3456
- # 'update_wpml'=> __( 'Update WPML', 'woocommerce-multilingual' ),
3457
- # 'upgrade_wpml'=> __( 'Upgrade WPML', 'woocommerce-multilingual' ),
3458
- # 'get_wpml'=> __( 'Get WPML', 'woocommerce-multilingual' ),
3459
 
3460
- msgid "Upgrade WPML"
3461
  msgstr ""
3462
 
3463
- # 'upgrade_wpml'=> __( 'Upgrade WPML', 'woocommerce-multilingual' ),
3464
- # 'get_wpml'=> __( 'Get WPML', 'woocommerce-multilingual' ),
3465
- # 'get_wpml_media'=> __( 'Get WPML Media', 'woocommerce-multilingual' ),
3466
 
3467
- msgid "Get WPML"
3468
  msgstr ""
3469
 
3470
- # 'get_wpml'=> __( 'Get WPML', 'woocommerce-multilingual' ),
3471
- # 'get_wpml_media'=> __( 'Get WPML Media', 'woocommerce-multilingual' ),
3472
- # 'get_wpml_tm'=> __( 'Get WPML Translation Management', 'woocommerce-multilingual' ),
3473
 
3474
- msgid "Get WPML Media"
3475
  msgstr ""
3476
 
3477
- # 'get_wpml_media'=> __( 'Get WPML Media', 'woocommerce-multilingual' ),
3478
- # 'get_wpml_tm'=> __( 'Get WPML Translation Management', 'woocommerce-multilingual' ),
3479
- # 'get_wpml_st'=> __( 'Get WPML String Translation', 'woocommerce-multilingual' ),
3480
 
3481
- msgid "Get WPML Translation Management"
3482
  msgstr ""
3483
 
3484
- # 'get_wpml_tm'=> __( 'Get WPML Translation Management', 'woocommerce-multilingual' ),
3485
- # 'get_wpml_st'=> __( 'Get WPML String Translation', 'woocommerce-multilingual' ),
3486
- # 'new_design_wpml_link'=> sprintf( __( 'You are using WooCommerce Multilingual %s. This version includes an important UI redesign for the configuration screens and it requires <a href="%s">WPML %s</a> or higher. Everything still works on the front end now but, in order to configure options for WooCommerce Multilingual, you need to upgrade WPML.', 'woocommerce-multilingual' ), WCML_VERSION, WCML_Links::generate_tracking_link( 'https://wpml.org/' ), '3.4' ),
3487
 
3488
- msgid "Get WPML String Translation"
3489
  msgstr ""
3490
 
3491
- # 'get_wpml_st'=> __( 'Get WPML String Translation', 'woocommerce-multilingual' ),
3492
- # 'new_design_wpml_link'=> sprintf( __( 'You are using WooCommerce Multilingual %s. This version includes an important UI redesign for the configuration screens and it requires <a href="%s">WPML %s</a> or higher. Everything still works on the front end now but, in order to configure options for WooCommerce Multilingual, you need to upgrade WPML.', 'woocommerce-multilingual' ), WCML_VERSION, WCML_Links::generate_tracking_link( 'https://wpml.org/' ), '3.4' ),
3493
- # 'wpml' => '<strong>WPML</strong>',
3494
 
3495
- msgid "You are using WooCommerce Multilingual %s. This version includes an important UI redesign for the configuration screens and it requires <a href=\"%s\">WPML %s</a> or higher. Everything still works on the front end now but, in order to configure options for WooCommerce Multilingual, you need to upgrade WPML."
3496
  msgstr ""
3497
 
3498
- # 'not_setup' => __( '%s is not set up.', 'woocommerce-multilingual' ),
3499
- # 'not_inst' => __( '%s is either not installed or not active.', 'woocommerce-multilingual' ),
3500
- # 'wpml_not_inst' => sprintf( __( '%s is either not installed or not active.', 'woocommerce-multilingual' ),'<strong><a title="' . esc_attr__('The WordPress Multilingual Plugin', 'woocommerce-multilingual') .'" href="' . WCML_Links::generate_tracking_link( 'https://wpml.org/' ) . '">WPML</a></strong>' ),
3501
 
3502
- msgid "%s is either not installed or not active."
3503
  msgstr ""
3504
 
3505
- # 'wpml_not_inst' => sprintf( __( '%s is either not installed or not active.', 'woocommerce-multilingual' ),'<strong><a title="' . esc_attr__('The WordPress Multilingual Plugin', 'woocommerce-multilingual') .'" href="' . WCML_Links::generate_tracking_link( 'https://wpml.org/' ) . '">WPML</a></strong>' ),
3506
- # 'old_wc' => sprintf( __( '%1$s is installed, but with incorrect version. You need %1$s %2$s or higher. ', 'woocommerce-multilingual' ), '<strong>WooCommerce</strong>', '2.0' ),
3507
- # 'download_wc' => __( 'Download WooCommerce', 'woocommerce-multilingual' ),
3508
 
3509
- msgid "%1$s is installed, but with incorrect version. You need %1$s %2$s or higher. "
3510
  msgstr ""
3511
 
3512
- # 'old_wc' => sprintf( __( '%1$s is installed, but with incorrect version. You need %1$s %2$s or higher. ', 'woocommerce-multilingual' ), '<strong>WooCommerce</strong>', '2.0' ),
3513
- # 'download_wc' => __( 'Download WooCommerce', 'woocommerce-multilingual' ),
3514
- # )
3515
 
3516
- msgid "Download WooCommerce"
3517
  msgstr ""
3518
 
3519
- # 'not_inst' => __( '%s is either not installed or not active.', 'woocommerce-multilingual' ),
3520
- # 'wpml_not_inst' => sprintf( __( '%s is either not installed or not active.', 'woocommerce-multilingual' ),'<strong><a title="' . esc_attr__('The WordPress Multilingual Plugin', 'woocommerce-multilingual') .'" href="' . WCML_Links::generate_tracking_link( 'https://wpml.org/' ) . '">WPML</a></strong>' ),
3521
- # 'old_wc' => sprintf( __( '%1$s is installed, but with incorrect version. You need %1$s %2$s or higher. ', 'woocommerce-multilingual' ), '<strong>WooCommerce</strong>', '2.0' ),
3522
 
3523
- msgid "The WordPress Multilingual Plugin"
3524
  msgstr ""
3525
 
3526
- # 'strings' => array(
3527
- # 'heading' => __('Setup Complete', 'woocommerce-multilingual'),
3528
- # 'description1' => __("Your multilingual shop is almost ready. Next, you should go to the different tabs in %sWooCommerce &raquo; WooCommerce Multilingual%s admin and do the final setup.", 'woocommerce-multilingual'),
3529
 
3530
- msgid "Setup Complete"
3531
  msgstr ""
3532
 
3533
- # 'heading' => __('Setup Complete', 'woocommerce-multilingual'),
3534
- # 'description1' => __("Your multilingual shop is almost ready. Next, you should go to the different tabs in %sWooCommerce &raquo; WooCommerce Multilingual%s admin and do the final setup.", 'woocommerce-multilingual'),
3535
- # 'description2' => __("For your convenience, we've marked items that require your attention with a notice icon. You can see a list of everything that you should complete in the %sStatus%s tab.", 'woocommerce-multilingual'),
3536
 
3537
- msgid "Your multilingual shop is almost ready. Next, you should go to the different tabs in %sWooCommerce &raquo; WooCommerce Multilingual%s admin and do the final setup."
3538
  msgstr ""
3539
 
3540
- # 'description1' => __("Your multilingual shop is almost ready. Next, you should go to the different tabs in %sWooCommerce &raquo; WooCommerce Multilingual%s admin and do the final setup.", 'woocommerce-multilingual'),
3541
- # 'description2' => __("For your convenience, we've marked items that require your attention with a notice icon. You can see a list of everything that you should complete in the %sStatus%s tab.", 'woocommerce-multilingual'),
3542
- # 'continue' => __('Close setup', 'woocommerce-multilingual'),
3543
 
3544
- msgid "For your convenience, we've marked items that require your attention with a notice icon. You can see a list of everything that you should complete in the %sStatus%s tab."
3545
  msgstr ""
3546
 
3547
- # 'description2' => __("For your convenience, we've marked items that require your attention with a notice icon. You can see a list of everything that you should complete in the %sStatus%s tab.", 'woocommerce-multilingual'),
3548
- # 'continue' => __('Close setup', 'woocommerce-multilingual'),
3549
- # ),
3550
 
3551
- msgid "Close setup"
3552
  msgstr ""
3553
 
3554
- #
3555
- # $store_pages_view = '<p><i class="otgs-ico-warning"></i> ' . __('One or more WooCommerce pages have not been created') . '<p>';
3556
- #
3557
 
3558
- msgid "One or more WooCommerce pages have not been created"
3559
  msgstr ""
3560
 
3561
- # '<label><input type="checkbox" name="install_missing_pages" value="1" checked="checked">&nbsp;' .
3562
- # __('Install missing WooCommerce pages and create translations.', 'woocommerce-multilingual') .
3563
- # '</label>';
3564
 
3565
- msgid "Install missing WooCommerce pages and create translations."
3566
  msgstr ""
3567
 
3568
- # 'strings' => array(
3569
- # 'heading' => __('Translate Store Pages', 'woocommerce-multilingual'),
3570
- # 'description' => __("All store pages must be translated in the languages configured on the site.", 'woocommerce-multilingual'),
3571
 
3572
- msgid "Translate Store Pages"
3573
  msgstr ""
3574
 
3575
- # 'heading' => __('Translate Store Pages', 'woocommerce-multilingual'),
3576
- # 'description' => __("All store pages must be translated in the languages configured on the site.", 'woocommerce-multilingual'),
3577
- # 'continue' => __('Continue', 'woocommerce-multilingual'),
3578
 
3579
- msgid "All store pages must be translated in the languages configured on the site."
3580
  msgstr ""
3581
 
3582
- # 'description' => __("All store pages must be translated in the languages configured on the site.", 'woocommerce-multilingual'),
3583
- # 'continue' => __('Continue', 'woocommerce-multilingual'),
3584
- # ),
3585
 
3586
- msgid "Continue"
3587
  msgstr ""
3588
 
3589
- # 'strings' => array(
3590
- # 'heading' => __("Let's turn your WooCommerce shop multilingual", 'woocommerce-multilingual'),
3591
- # 'description1' => __('Thank you for choosing WooCommerce Multilingual. We need to do a few upgrades to your site, so that it has everything needed to run multilingual.', 'woocommerce-multilingual'),
3592
 
3593
- msgid "Let's turn your WooCommerce shop multilingual"
3594
  msgstr ""
3595
 
3596
- # 'heading' => __("Let's turn your WooCommerce shop multilingual", 'woocommerce-multilingual'),
3597
- # 'description1' => __('Thank you for choosing WooCommerce Multilingual. We need to do a few upgrades to your site, so that it has everything needed to run multilingual.', 'woocommerce-multilingual'),
3598
- # 'description2' => array(
3599
 
3600
- msgid "Thank you for choosing WooCommerce Multilingual. We need to do a few upgrades to your site, so that it has everything needed to run multilingual."
3601
  msgstr ""
3602
 
3603
- #
3604
- # 'title' => __("We'll help you:", 'woocommerce-multilingual'),
3605
- # 'step1' => __("Translate the 'store' pages", 'woocommerce-multilingual'),
3606
 
3607
- msgid "We'll help you:"
3608
  msgstr ""
3609
 
3610
- # 'title' => __("We'll help you:", 'woocommerce-multilingual'),
3611
- # 'step1' => __("Translate the 'store' pages", 'woocommerce-multilingual'),
3612
- # 'step2' => __("Choose which attributes to make translatable", 'woocommerce-multilingual'),
3613
 
3614
- msgid "Translate the 'store' pages"
3615
  msgstr ""
3616
 
3617
- # 'step1' => __("Translate the 'store' pages", 'woocommerce-multilingual'),
3618
- # 'step2' => __("Choose which attributes to make translatable", 'woocommerce-multilingual'),
3619
- # 'step3' => __("Choose if you need multiple currencies", 'woocommerce-multilingual'),
3620
 
3621
- msgid "Choose which attributes to make translatable"
3622
  msgstr ""
3623
 
3624
- # 'step2' => __("Choose which attributes to make translatable", 'woocommerce-multilingual'),
3625
- # 'step3' => __("Choose if you need multiple currencies", 'woocommerce-multilingual'),
3626
- #
3627
 
3628
- msgid "Choose if you need multiple currencies"
3629
  msgstr ""
3630
 
3631
- # ),
3632
- # 'description3' => sprintf( __("You can make these updates now, or later from the %sWooCommerce &raquo; WooCommerce Multilingual%s menu.", 'woocommerce-multilingual'), '<strong>', '</strong>' ),
3633
- # 'continue' => __("Let's continue", 'woocommerce-multilingual'),
3634
 
3635
- msgid "You can make these updates now, or later from the %sWooCommerce &raquo; WooCommerce Multilingual%s menu."
3636
  msgstr ""
3637
 
3638
- # 'description3' => sprintf( __("You can make these updates now, or later from the %sWooCommerce &raquo; WooCommerce Multilingual%s menu.", 'woocommerce-multilingual'), '<strong>', '</strong>' ),
3639
- # 'continue' => __("Let's continue", 'woocommerce-multilingual'),
3640
- # 'later' => __("I'll do the setup later", 'woocommerce-multilingual')
3641
 
3642
- msgid "Let's continue"
3643
  msgstr ""
3644
 
3645
- # 'continue' => __("Let's continue", 'woocommerce-multilingual'),
3646
- # 'later' => __("I'll do the setup later", 'woocommerce-multilingual')
3647
- # ),
3648
 
3649
- msgid "I'll do the setup later"
3650
  msgstr ""
3651
 
3652
- # 'strings' => array(
3653
- # 'heading' => __('Select Translatable Attributes', 'woocommerce-multilingual'),
3654
- # 'no_attributes' => __('There are no attributes defined', 'woocommerce-multilingual'),
3655
 
3656
- msgid "Select Translatable Attributes"
3657
  msgstr ""
3658
 
3659
- # 'heading' => __('Select Translatable Attributes', 'woocommerce-multilingual'),
3660
- # 'no_attributes' => __('There are no attributes defined', 'woocommerce-multilingual'),
3661
- # 'continue' => __('Continue', 'woocommerce-multilingual'),
3662
 
3663
- msgid "There are no attributes defined"
3664
  msgstr ""
3665
 
3666
- # 'continue' => __('Continue', 'woocommerce-multilingual'),
3667
- # 'later' => __('Later', 'woocommerce-multilingual')
3668
- # ),
3669
 
3670
- msgid "Later"
3671
  msgstr ""
3672
 
3673
- # 'strings' => array(
3674
- # 'heading' => __( 'Enable Multiple Currencies', 'woocommerce-multilingual' ),
3675
- # 'description' => __( "This will allow you to set prices for products in different currencies. The prices can be determined based on a given exchange rate or set explicitly for specific products.", 'woocommerce-multilingual' ),
3676
 
3677
- msgid "Enable Multiple Currencies"
3678
  msgstr ""
3679
 
3680
- # 'heading' => __( 'Enable Multiple Currencies', 'woocommerce-multilingual' ),
3681
- # 'description' => __( "This will allow you to set prices for products in different currencies. The prices can be determined based on a given exchange rate or set explicitly for specific products.", 'woocommerce-multilingual' ),
3682
- # 'label_mco' => __( 'Enable the multi-currency mode', 'woocommerce-multilingual' ),
3683
 
3684
- msgid "This will allow you to set prices for products in different currencies. The prices can be determined based on a given exchange rate or set explicitly for specific products."
3685
  msgstr ""
3686
 
3687
- # 'strings' => array(
3688
- # 'notice' => __( 'This page allows you to translate all strings that are being used by WooCommerce in building different type of urls. Translating them enables you to have fully localized urls that match the language of the pages.', 'woocommerce-multilingual' ),
3689
- # 'notice_defaults' => sprintf( __( 'You can enter or edit your default values on the %sPermalinks settings%s page or, for the endpoints, on the WooCommerce %sAccount settings%s page.',
3690
 
3691
- msgid "This page allows you to translate all strings that are being used by WooCommerce in building different type of urls. Translating them enables you to have fully localized urls that match the language of the pages."
3692
  msgstr ""
3693
 
3694
- # 'notice' => __( 'This page allows you to translate all strings that are being used by WooCommerce in building different type of urls. Translating them enables you to have fully localized urls that match the language of the pages.', 'woocommerce-multilingual' ),
3695
- # 'notice_defaults' => sprintf( __( 'You can enter or edit your default values on the %sPermalinks settings%s page or, for the endpoints, on the WooCommerce %sAccount settings%s page.',
3696
- # 'woocommerce-multilingual' ),
3697
 
3698
- msgid "You can enter or edit your default values on the %sPermalinks settings%s page or, for the endpoints, on the WooCommerce %sAccount settings%s page."
3699
  msgstr ""
3700
 
 
 
3701
  # ),
3702
- # 'perm_settings' => '<a href="'.admin_url('options-permalink.php').'" >' .__( 'permalinks settings', 'woocommerce-multilingual' ).'</a>',
3703
- # 'account_settings' => '<a href="admin.php?page=wc-settings&tab=account" >'.__( 'Account settings', 'woocommerce-multilingual' ).'</a>',
3704
 
3705
- msgid "permalinks settings"
3706
  msgstr ""
3707
 
3708
- # 'perm_settings' => '<a href="'.admin_url('options-permalink.php').'" >' .__( 'permalinks settings', 'woocommerce-multilingual' ).'</a>',
3709
- # 'account_settings' => '<a href="admin.php?page=wc-settings&tab=account" >'.__( 'Account settings', 'woocommerce-multilingual' ).'</a>',
3710
- # 'slug_type' => __( 'Slug type', 'woocommerce-multilingual' ),
3711
 
3712
- msgid "Account settings"
3713
  msgstr ""
3714
 
3715
- # 'account_settings' => '<a href="admin.php?page=wc-settings&tab=account" >'.__( 'Account settings', 'woocommerce-multilingual' ).'</a>',
3716
- # 'slug_type' => __( 'Slug type', 'woocommerce-multilingual' ),
3717
- # 'orig_slug' => __( 'Original Slug', 'woocommerce-multilingual' ),
3718
 
3719
- msgid "Slug type"
3720
  msgstr ""
3721
 
3722
- # 'slug_type' => __( 'Slug type', 'woocommerce-multilingual' ),
3723
- # 'orig_slug' => __( 'Original Slug', 'woocommerce-multilingual' ),
3724
- # 'shop' => __( 'Shop page', 'woocommerce-multilingual' ),
3725
 
3726
- msgid "Original Slug"
3727
  msgstr ""
3728
 
3729
- # 'orig_slug' => __( 'Original Slug', 'woocommerce-multilingual' ),
3730
- # 'shop' => __( 'Shop page', 'woocommerce-multilingual' ),
3731
- # 'product' => __( 'Product base', 'woocommerce-multilingual' ),
3732
 
3733
- msgid "Shop page"
3734
  msgstr ""
3735
 
3736
- # 'shop' => __( 'Shop page', 'woocommerce-multilingual' ),
3737
- # 'product' => __( 'Product base', 'woocommerce-multilingual' ),
3738
- # 'category' => __( 'Product category base', 'woocommerce-multilingual' ),
3739
 
3740
- msgid "Product base"
3741
  msgstr ""
3742
 
3743
- # 'product' => __( 'Product base', 'woocommerce-multilingual' ),
3744
- # 'category' => __( 'Product category base', 'woocommerce-multilingual' ),
3745
- # 'tag' => __( 'Product tag base', 'woocommerce-multilingual' ),
3746
 
3747
- msgid "Product category base"
3748
  msgstr ""
3749
 
3750
- # 'category' => __( 'Product category base', 'woocommerce-multilingual' ),
3751
- # 'tag' => __( 'Product tag base', 'woocommerce-multilingual' ),
3752
- # 'attr' => __( 'Product attribute base', 'woocommerce-multilingual' ),
3753
 
3754
- msgid "Product tag base"
3755
  msgstr ""
3756
 
3757
- # 'tag' => __( 'Product tag base', 'woocommerce-multilingual' ),
3758
- # 'attr' => __( 'Product attribute base', 'woocommerce-multilingual' ),
3759
- # 'endpoint' => __( 'Endpoint: %s', 'woocommerce-multilingual' ),
3760
 
3761
- msgid "Product attribute base"
3762
  msgstr ""
3763
 
3764
- # 'endpoint' => __( 'Endpoint: %s', 'woocommerce-multilingual' ),
3765
- # 'attribute_slug' => __( 'Attribute slug: %s', 'woocommerce-multilingual' ),
3766
- # ),
3767
 
3768
- msgid "Attribute slug: %s"
3769
  msgstr ""
3770
 
3771
- # 'strings' => array(
3772
- # 'orig' => __( 'Original', 'woocommerce-multilingual' ),
3773
- # 'trnsl_to' => __( 'Translation to', 'woocommerce-multilingual' ),
3774
 
3775
- msgid "Original"
3776
  msgstr ""
3777
 
3778
- # 'orig' => __( 'Original', 'woocommerce-multilingual' ),
3779
- # 'trnsl_to' => __( 'Translation to', 'woocommerce-multilingual' ),
3780
- # 'cancel' => __( 'Cancel', 'woocommerce-multilingual' ),
3781
 
3782
- msgid "Translation to"
3783
  msgstr ""
3784
 
3785
- # $args['original_base_value'] = urldecode(get_post($original_shop_id)->post_name);
3786
- # $args['label_name'] = __('Product Shop Base', 'woocommerce-multilingual');
3787
- # }else{
3788
 
3789
- msgid "Product Shop Base"
3790
  msgstr ""
3791
 
3792
  # 'strings' => array(
@@ -3824,366 +4139,284 @@ msgstr ""
3824
  msgid "This action lets you automatically apply the %s taxonomy to your content in different languages. It will scan the original content and apply the same taxonomy to translated content."
3825
  msgstr ""
3826
 
3827
- # $empty_value->name = '';
3828
- # $empty_value->label = __( '--Taxonomy--', 'woocommerce-multilingual' );
3829
- # array_unshift( $this->custom_taxonomies, $empty_value );
3830
-
3831
- msgid "--Taxonomy--"
3832
- msgstr ""
3833
-
3834
- # 'strings' => array(
3835
- # 'no_taxonomies' => __( 'There are no translatable product custom taxonomies defined', 'woocommerce-multilingual' ),
3836
- # 'select_label' => __('Select the taxonomy to translate: ', 'woocommerce-multilingual'),
3837
-
3838
- msgid "There are no translatable product custom taxonomies defined"
3839
- msgstr ""
3840
-
3841
- # 'no_taxonomies' => __( 'There are no translatable product custom taxonomies defined', 'woocommerce-multilingual' ),
3842
- # 'select_label' => __('Select the taxonomy to translate: ', 'woocommerce-multilingual'),
3843
- # 'loading' => __( 'Loading ...', 'woocommerce-multilingual' )
3844
-
3845
- msgid "Select the taxonomy to translate: "
3846
- msgstr ""
3847
-
3848
- # $empty_value->attribute_name = '';
3849
- # $empty_value->attribute_label = __( '--Attribute--', 'woocommerce-multilingual' );
3850
- # array_unshift( $product_attributes, $empty_value );
3851
-
3852
- msgid "--Attribute--"
3853
- msgstr ""
3854
-
3855
- # 'strings' => array(
3856
- # 'no_attributes' => __( 'There are no translatable product attributes defined', 'woocommerce-multilingual' ),
3857
- # 'select_label' => __('Select the attribute to translate: ', 'woocommerce-multilingual'),
3858
-
3859
- msgid "There are no translatable product attributes defined"
3860
- msgstr ""
3861
-
3862
- # 'no_attributes' => __( 'There are no translatable product attributes defined', 'woocommerce-multilingual' ),
3863
- # 'select_label' => __('Select the attribute to translate: ', 'woocommerce-multilingual'),
3864
- # 'loading' => __( 'Loading ...', 'woocommerce-multilingual' )
3865
-
3866
- msgid "Select the attribute to translate: "
3867
- msgstr ""
3868
-
3869
- # $link = admin_url('admin.php?page=wpml-wcml');
3870
- # $name = __('Translate WooCommerce products', 'woocommerce-multilingual');
3871
- # wp_enqueue_style( 'wcml-pointers');
3872
-
3873
- msgid "Translate WooCommerce products"
3874
- msgstr ""
3875
-
3876
- # $link = admin_url('admin.php?page=wpml-wcml&tab=product_shipping_class');
3877
- # $name = __('Translate shipping classes', 'woocommerce-multilingual');
3878
- # wp_enqueue_style( 'wcml-pointers');
3879
-
3880
- msgid "Translate shipping classes"
3881
- msgstr ""
3882
-
3883
- # $link = admin_url('admin.php?page=wpml-wcml&tab=multi-currency');
3884
- # $name = __('Configure multi-currency for multilingual sites', 'woocommerce-multilingual');
3885
- # wp_enqueue_style( 'wcml-pointers');
3886
-
3887
- msgid "Configure multi-currency for multilingual sites"
3888
- msgstr ""
3889
-
3890
- # $link = admin_url('admin.php?page=wpml-wcml&tab=slugs');
3891
- # $name = __('Translate endpoints', 'woocommerce-multilingual');
3892
- # wp_enqueue_style( 'wcml-pointers');
3893
-
3894
- msgid "Translate endpoints"
3895
- msgstr ""
3896
-
3897
- # $wp_api->add_submenu_page(null,
3898
- # __('Translations', 'wpml-translation-management'), __('Translations', 'wpml-translation-management'),
3899
- # 'wpml_operate_woocommerce_multilingual', WPML_TM_FOLDER . '/menu/translations-queue.php', array($WPML_Translation_Management, 'translation_queue_page'));
3900
-
3901
- msgid "Translations"
3902
- msgstr ""
3903
-
3904
- # $quick_edit_notice = '<div id="quick_edit_notice" style="display:none;"><p>' .
3905
- # sprintf( __( "Quick edit is disabled for product translations. It\'s recommended to use the %s for editing products translations. %s",
3906
- # 'woocommerce-multilingual' ), '<a href="' . admin_url( 'admin.php?page=wpml-wcml&tab=products' ) . '" >' .
3907
-
3908
- msgid "Quick edit is disabled for product translations. It's recommended to use the %s for editing products translations. %s"
3909
- msgstr ""
3910
-
3911
- # 'woocommerce-multilingual' ), '<a href="' . admin_url( 'admin.php?page=wpml-wcml&tab=products' ) . '" >' .
3912
- # __( 'WooCommerce Multilingual products editor', 'woocommerce-multilingual' ) . '</a>',
3913
- # '<a href="" class="quick_product_trnsl_link" >' . __( 'Edit this product translation', 'woocommerce-multilingual' ) . '</a>'
3914
 
3915
- msgid "WooCommerce Multilingual products editor"
3916
- msgstr ""
3917
-
3918
- # __( 'WooCommerce Multilingual products editor', 'woocommerce-multilingual' ) . '</a>',
3919
- # '<a href="" class="quick_product_trnsl_link" >' . __( 'Edit this product translation', 'woocommerce-multilingual' ) . '</a>'
3920
- # ) . '</p></div>';
3921
-
3922
- msgid "Edit this product translation"
3923
  msgstr ""
3924
 
3925
- # $prot_link = '<span class="button" style="padding:4px;margin-top:0px; float: left;"><img align="baseline" src="' . ICL_PLUGIN_URL . '/res/img/icon16.png" width="16" height="16" style="margin-bottom:-4px" /> <a href="' . WCML_Links::generate_tracking_link( 'https://wpml.org/documentation/related-projects/woocommerce-multilingual/', 'woocommerce-multilingual', 'documentation', '#3' ) . '" target="_blank" style="text-decoration: none;">' .
3926
- # __( 'How to translate attributes', 'sitepress' ) . '<\/a>' . '<\/span><br \/><br \/>';
3927
- # ?>
3928
 
3929
- msgid "How to translate attributes"
3930
  msgstr ""
3931
 
3932
- # $prot_link = '<span class="button" style="padding:4px;margin-top:0px; float: left;"><img align="baseline" src="' . ICL_PLUGIN_URL . '/res/img/icon16.png" width="16" height="16" style="margin-bottom:-4px" /> <a href="' . WCML_Links::generate_tracking_link( 'https://wpml.org/documentation/related-projects/woocommerce-multilingual/', 'woocommerce-multilingual', 'documentation', '#3' ) . '" target="_blank" style="text-decoration: none;">' .
3933
- # __( 'How to translate product categories', 'sitepress' ) . '<\/a>' . '<\/span><br \/><br \/>';
3934
- # ?>
3935
 
3936
- msgid "How to translate product categories"
 
3937
  msgstr ""
3938
 
3939
- # $message .= sprintf(
3940
- # __('The recommended way to translate WooCommerce products is using the
3941
- # %sWooCommerce Multilingual products translation%s page.
3942
 
3943
- msgid "The recommended way to translate WooCommerce products is using the\n %sWooCommerce Multilingual products translation%s page.\n Please use this page only for translating elements that are not available in the WooCommerce Multilingual products translation table."
 
3944
  msgstr ""
3945
 
3946
- # foreach( $menu as $key => $menu_item ) {
3947
- # if ( $menu_item[ 0 ] == __( 'WooCommerce', 'woocommerce' ) ) {
3948
- # $menu[ $key ][ 0 ] .= '<span class="wcml-menu-warn"><i class="otgs-ico-warning"></i></span>';
3949
 
3950
- msgid "WooCommerce"
3951
  msgstr ""
3952
 
3953
- # 'introduction' => array(
3954
- # 'name' => __( 'Introduction', 'woocommerce-multilingual' ),
3955
- # 'view' => array( $this, 'setup_introduction' ),
3956
 
3957
- msgid "Introduction"
3958
  msgstr ""
3959
 
3960
- # 'store-pages' => array(
3961
- # 'name' => __( 'Store Pages', 'woocommerce-multilingual' ),
3962
- # 'view' => array( $this, 'setup_store_pages' ),
3963
 
3964
- msgid "Store Pages"
3965
  msgstr ""
3966
 
3967
- # 'attributes' => array(
3968
- # 'name' => __( 'Global Attributes', 'woocommerce-multilingual' ),
3969
- # 'view' => array( $this, 'setup_attributes' ),
3970
 
3971
- msgid "Global Attributes"
3972
  msgstr ""
3973
 
3974
- # 'multi-currency' => array(
3975
- # 'name' => __( 'Multiple Currencies', 'woocommerce-multilingual' ),
3976
- # 'view' => array( $this, 'setup_multi_currency' ),
3977
 
3978
- msgid "Multiple Currencies"
3979
  msgstr ""
3980
 
3981
- # 'ready' => array(
3982
- # 'name' => __( 'Ready!', 'woocommerce-multilingual' ),
3983
- # 'view' => array( $this, 'setup_ready' ),
3984
 
3985
- msgid "Ready!"
3986
  msgstr ""
3987
 
3988
- # if ( ! wp_verify_nonce( $_GET['_wcml_setup_nonce'], 'wcml_setup_skip_nonce' ) ) {
3989
- # wp_die( __( 'Action failed. Please refresh the page and retry.', 'woocommerce-multilingual' ) );
3990
- # }
3991
 
3992
- msgid "Action failed. Please refresh the page and retry."
3993
  msgstr ""
3994
 
3995
- # if ( ! current_user_can( 'manage_options' ) ) {
3996
- # wp_die( __( 'Cheatin&#8217; huh?', 'woocommerce' ) );
3997
- # }
3998
 
3999
- msgid "Cheatin&#8217; huh?"
4000
  msgstr ""
4001
 
4002
- # <p>
4003
- # <strong><?php _e('Prepare your WooCommerce store to run multilingual!', 'woocommerce-multilingual'); ?></strong><br />
4004
- # <?php _e('We need to help you with a few steps to turn your WooCommerce store multilingual. These steps include:', 'woocommerce-multilingual'); ?>
4005
 
4006
- msgid "Prepare your WooCommerce store to run multilingual!"
4007
  msgstr ""
4008
 
4009
- # <strong><?php _e('Prepare your WooCommerce store to run multilingual!', 'woocommerce-multilingual'); ?></strong><br />
4010
- # <?php _e('We need to help you with a few steps to turn your WooCommerce store multilingual. These steps include:', 'woocommerce-multilingual'); ?>
4011
- # <ul class="wcml-notice-list">
4012
 
4013
- msgid "We need to help you with a few steps to turn your WooCommerce store multilingual. These steps include:"
4014
  msgstr ""
4015
 
4016
- # <ul class="wcml-notice-list">
4017
- # <li><?php _e("Translating the 'store' pages", 'woocommerce-multilingual'); ?></li>
4018
- # <li><?php _e("Choosing which attributes to make translatable", 'woocommerce-multilingual'); ?></li>
4019
 
4020
- msgid "Translating the 'store' pages"
4021
  msgstr ""
4022
 
4023
- # <li><?php _e("Translating the 'store' pages", 'woocommerce-multilingual'); ?></li>
4024
- # <li><?php _e("Choosing which attributes to make translatable", 'woocommerce-multilingual'); ?></li>
4025
- # <li><?php _e("Choosing if you need multiple currencies", 'woocommerce-multilingual'); ?></li>
4026
 
4027
- msgid "Choosing which attributes to make translatable"
4028
  msgstr ""
4029
 
4030
- # <li><?php _e("Choosing which attributes to make translatable", 'woocommerce-multilingual'); ?></li>
4031
- # <li><?php _e("Choosing if you need multiple currencies", 'woocommerce-multilingual'); ?></li>
4032
- # </ul>
4033
 
4034
- msgid "Choosing if you need multiple currencies"
4035
  msgstr ""
4036
 
4037
- # <p class="submit">
4038
- # <a href="<?php echo esc_url( admin_url('admin.php?page=wcml-setup') ); ?>" class="button-primary"><?php _e('Start the Setup Wizard', 'woocommerce-multilingual') ?></a>
4039
- # <a href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'wcml-setup-skip', 1 ), 'wcml_setup_skip_nonce', '_wcml_setup_nonce' ) ); ?>" class="button-secondary skip"><?php _e('Skip', 'woocommerce-multilingual') ?></a>
4040
 
4041
- msgid "Start the Setup Wizard"
4042
  msgstr ""
4043
 
4044
- # <a href="<?php echo esc_url( admin_url('admin.php?page=wcml-setup') ); ?>" class="button-primary"><?php _e('Start the Setup Wizard', 'woocommerce-multilingual') ?></a>
4045
- # <a href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'wcml-setup-skip', 1 ), 'wcml_setup_skip_nonce', '_wcml_setup_nonce' ) ); ?>" class="button-secondary skip"><?php _e('Skip', 'woocommerce-multilingual') ?></a>
4046
- # </p>
4047
 
4048
- msgid "Skip"
4049
  msgstr ""
4050
 
4051
- # <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4052
- # <title><?php _e( 'WooCommerce Multilingual &rsaquo; Setup Wizard', 'woocommerce-multilingual' ); ?></title>
4053
- # <?php wp_print_scripts( 'wcml-setup' ); ?>
4054
 
4055
- msgid "WooCommerce Multilingual &rsaquo; Setup Wizard"
4056
  msgstr ""
4057
 
4058
- # if ( !isset($active_languages[$lang]) && $lang != 'all' ) {
4059
- # throw new WC_API_Exception( '404', sprintf( __( 'Invalid language parameter: %s' ), $lang ), '404' );
4060
- # }
4061
 
4062
- msgid "Invalid language parameter: %s"
4063
  msgstr ""
4064
 
4065
- # if( empty($trid) ){
4066
- # throw new WC_API_Exception( '404', sprintf( __( 'Source product id not found: %s' ), $data['translation_of'] ), '404' );
4067
- # }
4068
 
4069
- msgid "Source product id not found: %s"
4070
  msgstr ""
4071
 
4072
- # $this->add_field( new WPML_Editor_UI_Single_Line_Field( 'title', __( 'Title', 'woocommerce-multilingual' ), $this->data, true ) );
4073
- # $this->add_field( new WPML_Editor_UI_Single_Line_Field( 'slug', __( 'Slug', 'woocommerce-multilingual' ), $this->data, true ) );
4074
- # $this->add_field( new WPML_Editor_UI_WYSIWYG_Field( 'product_content', __( 'Content / Description', 'woocommerce-multilingual' ), $this->data, true ) );
4075
 
4076
- msgid "Slug"
4077
  msgstr ""
4078
 
4079
- # $this->add_field( new WPML_Editor_UI_Single_Line_Field( 'slug', __( 'Slug', 'woocommerce-multilingual' ), $this->data, true ) );
4080
- # $this->add_field( new WPML_Editor_UI_WYSIWYG_Field( 'product_content', __( 'Content / Description', 'woocommerce-multilingual' ), $this->data, true ) );
4081
- #
4082
 
4083
- msgid "Content / Description"
4084
  msgstr ""
4085
 
4086
- #
4087
- # $excerpt_section = new WPML_Editor_UI_Field_Section( __( 'Excerpt', 'woocommerce-multilingual' ) );
4088
- # $excerpt_section->add_field( new WPML_Editor_UI_WYSIWYG_Field( 'product_excerpt', null, $this->data, true ) );
4089
 
4090
- msgid "Excerpt"
4091
  msgstr ""
4092
 
4093
- #
4094
- # $purchase_note_section = new WPML_Editor_UI_Field_Section( __( 'Purchase note', 'woocommerce-multilingual' ) );
4095
- # $purchase_note_section->add_field( new WPML_Editor_UI_TextArea_Field( '_purchase_note', null, $this->data, true ) );
4096
 
4097
- msgid "Purchase note"
4098
  msgstr ""
4099
 
4100
- #
4101
- # $images_section = new WPML_Editor_UI_Field_Section( __( 'Images', 'woocommerce-multilingual' ) );
4102
- # foreach( $product_images as $image_id ) {
4103
 
4104
- msgid "Images"
4105
  msgstr ""
4106
 
4107
- # if ( $attributes ){
4108
- # $attributes_section = new WPML_Editor_UI_Field_Section( __( 'Custom Product attributes', 'woocommerce-multilingual' ) );
4109
- # foreach( $attributes as $attr_key => $attribute ) {
4110
 
4111
- msgid "Custom Product attributes"
4112
  msgstr ""
4113
 
4114
- # $group->add_field( $attribute_field );
4115
- # $attribute_field = new WPML_Editor_UI_Single_Line_Field( $attr_key , __( 'Value(s)', 'woocommerce-multilingual' ), $this->data, false );
4116
- # $group->add_field( $attribute_field );
4117
 
4118
- msgid "Value(s)"
4119
  msgstr ""
4120
 
4121
- # if( $custom_fields ) {
4122
- # $custom_fields_section = new WPML_Editor_UI_Field_Section( __( 'Custom Fields', 'woocommerce-multilingual' ) );
4123
- #
4124
 
4125
- msgid "Custom Fields"
4126
  msgstr ""
4127
 
4128
- # if( !empty( $variations ) ){
4129
- # $variations_data_section = new WPML_Editor_UI_Field_Section( __( 'Variations data', 'woocommerce-multilingual' ) );
4130
- # foreach( $variations as $variation ){
4131
 
4132
- msgid "Variations data"
4133
  msgstr ""
4134
 
4135
- # if( $is_variable ){
4136
- # $files_section = new WPML_Editor_UI_Field_Section( sprintf( __( 'Download Files for Variation #%s', 'woocommerce-multilingual' ), $post_id ) );
4137
- # }else{
4138
 
4139
- msgid "Download Files for Variation #%s"
4140
  msgstr ""
4141
 
4142
- # }else{
4143
- # $files_section = new WPML_Editor_UI_Field_Section( __( 'Download Files', 'woocommerce-multilingual' ) );
4144
  # }
4145
 
4146
- msgid "Download Files"
4147
  msgstr ""
4148
 
4149
- # $sub_group->add_field( $field_input );
4150
- # $field_input = new WPML_Editor_UI_Single_Line_Field( 'file-url'.$key.$post_id, __( 'File URL', 'woocommerce-multilingual' ), $this->data, false );
4151
- # $sub_group->add_field( $field_input );
4152
 
4153
- msgid "File URL"
4154
  msgstr ""
4155
 
4156
- # if( $this->product_type === 'external' ){
4157
- # $external_product_section = new WPML_Editor_UI_Field_Section( __( 'External Product', 'woocommerce-multilingual' ) );
4158
- # $external_product_section->add_field( new WPML_Editor_UI_Single_Line_Field( '_product_url', __( 'Product url', 'woocommerce-multilingual' ), $this->data, true ) );
4159
 
4160
- msgid "External Product"
4161
  msgstr ""
4162
 
4163
- # $external_product_section = new WPML_Editor_UI_Field_Section( __( 'External Product', 'woocommerce-multilingual' ) );
4164
- # $external_product_section->add_field( new WPML_Editor_UI_Single_Line_Field( '_product_url', __( 'Product url', 'woocommerce-multilingual' ), $this->data, true ) );
4165
- # $external_product_section->add_field( new WPML_Editor_UI_Single_Line_Field( '_button_text', __( 'Button text', 'woocommerce-multilingual' ), $this->data, true ) );
4166
 
4167
- msgid "Product url"
4168
  msgstr ""
4169
 
4170
- # $external_product_section->add_field( new WPML_Editor_UI_Single_Line_Field( '_product_url', __( 'Product url', 'woocommerce-multilingual' ), $this->data, true ) );
4171
- # $external_product_section->add_field( new WPML_Editor_UI_Single_Line_Field( '_button_text', __( 'Button text', 'woocommerce-multilingual' ), $this->data, true ) );
4172
- # $this->add_field( $external_product_section );
4173
 
4174
- msgid "Button text"
4175
  msgstr ""
4176
 
4177
- # if ( !$args[ 'post_title' ] && !$args[ 'post_content' ] && !$args[ 'post_excerpt' ] ){
4178
- # return new WP_Error( 'empty_content', __( 'Content, title, and excerpt are empty.' ) );
4179
  # }
4180
 
4181
- msgid "Content, title, and excerpt are empty."
4182
  msgstr ""
4183
 
4184
- # <p class="icl-admin-message" style="margin-top: 0">
4185
- # <?php printf( __('To configure how the %sWooCommerce products%s are translated, visit the WooCommerce Multiligual %ssettings%s page.',
4186
- # 'woocommerce-multilingual'), '<strong>', '</strong>', '<a href="' . admin_url('admin.php?page=wpml-wcml&tab=settings') . '">', '</a>' ); ?>
4187
 
4188
- msgid "To configure how the %sWooCommerce products%s are translated, visit the WooCommerce Multiligual %ssettings%s page."
 
 
 
 
 
 
 
4189
  msgstr ""
13
  "Language:en\n"
14
  "MIME-Version: 1.0\n"
15
 
16
+ # $translation_array = array(
17
+ # 'installing' => __( 'Installing %s', 'installer' ),
18
+ # 'updating' => __( 'Updating %s', 'installer' ),
 
 
 
 
 
 
 
19
 
20
+ msgid "Installing %s"
21
  msgstr ""
22
 
23
+ # 'installing' => __( 'Installing %s', 'installer' ),
24
+ # 'updating' => __( 'Updating %s', 'installer' ),
25
+ # 'activating' => __( 'Activating %s', 'installer' )
26
 
27
+ msgid "Updating %s"
28
  msgstr ""
29
 
30
+ # 'updating' => __( 'Updating %s', 'installer' ),
31
+ # 'activating' => __( 'Activating %s', 'installer' )
32
+ # );
33
 
34
+ msgid "Activating %s"
35
  msgstr ""
36
 
37
+ # $this->menu_multisite_redirect();
38
+ # add_options_page( __( 'Installer', 'installer' ), __( 'Installer', 'installer' ), 'manage_options', 'installer', array(
39
+ # $this,
40
 
41
+ msgid "Installer"
42
  msgstr ""
43
 
44
+ # public function plugins_action_links_registered( $links ) {
45
+ # $links[] = '<a href="' . $this->menu_url() . '">' . __( 'Registered', 'installer' ) . '</a>';
46
+ #
47
 
48
+ msgid "Registered"
49
  msgstr ""
50
 
51
+ # public function plugins_action_links_not_registered( $links ) {
52
+ # $links[] = '<a href="' . $this->menu_url() . '">' . __( 'Register', 'installer' ) . '</a>';
53
+ #
54
 
55
+ msgid "Register"
56
  msgstr ""
57
 
58
+ # 'type' => 'error',
59
+ # 'text' => sprintf( __( 'You are using an invalid site key defined as the constant %s (most likely in wp-config.php).
60
+ # Please remove it or use the correct value in order to be able to register correctly.', 'installer' ), 'OTGS_INSTALLER_SITE_KEY_' . strtoupper( $repository_id ) )
61
 
62
+ msgid "You are using an invalid site key defined as the constant %s (most likely in wp-config.php). \n Please remove it or use the correct value in order to be able to register correctly."
63
  msgstr ""
64
 
65
+ # echo '<div class="updated error otgs-is-dismissible"><p>';
66
+ # printf( __( "To get automatic updates, you need to register %s for this site. %sRegister %s%s", 'sitepress' ),
67
+ # $nag['product_name'], '<a class="button-primary" href="' . $this->menu_url() . '">', $nag['product_name'], '</a>' );
68
 
69
+ msgid "To get automatic updates, you need to register %s for this site. %sRegister %s%s"
70
  msgstr ""
71
 
72
+ # echo '</p>';
73
+ # echo '<span class="installer-dismiss-nag notice-dismiss" data-repository="' . $nag['repository_id'] . '"><span class="screen-reader-text">' . __( 'Dismiss', 'sitepress' ) . '</span></span>';
74
+ # echo '</div>';
75
 
76
+ msgid "Dismiss"
77
  msgstr ""
78
 
79
+ #
80
+ # $tabs['commercial'] = __( 'Commercial', 'installer' );
81
+ #
82
 
83
+ msgid "Commercial"
84
  msgstr ""
85
 
86
+ #
87
+ # $error = sprintf( __( "Installer cannot display the products information because the automatic updating for %s was explicitly disabled with the configuration below (usually in wp-config.php):", 'installer' ), strtoupper( join( ', ', $repository_names ) ) );
88
+ # $error .= '<br /><br /><code>define("OTGS_DISABLE_AUTO_UPDATES", true);</code><br /><br />';
89
 
90
+ msgid "Installer cannot display the products information because the automatic updating for %s was explicitly disabled with the configuration below (usually in wp-config.php):"
91
  msgstr ""
92
 
93
+ # $error .= '<br /><br /><code>define("OTGS_DISABLE_AUTO_UPDATES", true);</code><br /><br />';
94
+ # $error .= sprintf( __( "In order to see the products information, please run the %smanual updates check%s to initialize the products list or (temporarily) remove the above code.", 'installer' ), '<a href="' . admin_url( 'update-core.php' ) . '">', '</a>' );
95
+ #
96
 
97
+ msgid "In order to see the products information, please run the %smanual updates check%s to initialize the products list or (temporarily) remove the above code."
98
  msgstr ""
99
 
100
+ #
101
+ # $error = sprintf( __( "Installer cannot contact our updates server to get information about the available products and check for new versions. If you are seeing this message for the first time, you can ignore it, as it may be a temporary communication problem. If the problem persists and your WordPress admin is slowing down, you can disable automated version checks. Add the following line to your wp-config.php file:", 'installer' ), strtoupper( $id ) );
102
+ # $error .= '<br /><br /><code>define("OTGS_DISABLE_AUTO_UPDATES", true);</code>';
103
 
104
+ msgid "Installer cannot contact our updates server to get information about the available products and check for new versions. If you are seeing this message for the first time, you can ignore it, as it may be a temporary communication problem. If the problem persists and your WordPress admin is slowing down, you can disable automated version checks. Add the following line to your wp-config.php file:"
105
  msgstr ""
106
 
107
+ #
108
+ # echo '<center>' . __( 'No repositories defined.', 'installer' ) . '</center>';
109
+ #
110
 
111
+ msgid "No repositories defined."
112
  msgstr ""
113
 
114
+ # } else {
115
+ # $error = __( 'Invalid site key for the current site.', 'installer' )
116
+ # . '<br /><div class="installer-footnote">' . __( 'Please note that the site key is case sensitive.', 'installer' ) . '</div>';
117
 
118
+ msgid "Invalid site key for the current site."
119
  msgstr ""
120
 
121
+ # $error = __( 'Invalid site key for the current site.', 'installer' )
122
+ # . '<br /><div class="installer-footnote">' . __( 'Please note that the site key is case sensitive.', 'installer' ) . '</div>';
123
+ # }
124
 
125
+ msgid "Please note that the site key is case sensitive."
126
  msgstr ""
127
 
128
+ # if ( preg_match( '#Could not resolve host: (.*)#', $error, $matches ) || preg_match( '#Couldn\'t resolve host \'(.*)\'#', $error, $matches ) ) {
129
+ # $error = sprintf( __( "%s cannot access %s to register. Try again to see if it's a temporary problem. If the problem continues, make sure that this site has access to the Internet. You can still use the plugin without registration, but you will not receive automated updates.", 'installer' ),
130
+ # '<strong><i>' . $this->get_generic_product_name( $repository_id ) . '</i></strong>',
131
 
132
+ msgid "%s cannot access %s to register. Try again to see if it's a temporary problem. If the problem continues, make sure that this site has access to the Internet. You can still use the plugin without registration, but you will not receive automated updates."
133
  msgstr ""
134
 
135
+ # unset( $this->settings['repositories'][ $repository_id ]['subscription'] );
136
+ # $error = __( 'Invalid site key for the current site. If the error persists, try to unregister first and then register again with the same site key.', 'installer' );
137
+ # }
138
 
139
+ msgid "Invalid site key for the current site. If the error persists, try to unregister first and then register again with the same site key."
140
  msgstr ""
141
 
142
+ # $days = 30;
143
+ # $message = __( 'You will have to renew your subscription in order to continue getting the updates and support.', 'installer' );
144
+ #
145
 
146
+ msgid "You will have to renew your subscription in order to continue getting the updates and support."
147
  msgstr ""
148
 
149
+ # echo $this->_plugins_renew_warnings[ $plugin_file ] . ' ';
150
+ # printf( __( '%sRenew here%s.', 'installer' ),
151
+ # '<a href="' . $this->menu_url() . '">', '</a>' );
152
 
153
+ msgid "%sRenew here%s."
154
  msgstr ""
155
 
156
+ # $ret = false;
157
+ # $message = __( 'Your subscription appears to no longer be valid. Please try to register again using a valid site key.', 'installer' );
158
+ # }
159
 
160
+ msgid "Your subscription appears to no longer be valid. Please try to register again using a valid site key."
161
  msgstr ""
162
 
163
+ # <p class="installer-q-icon">
164
+ # <?php printf( __( 'You must have a valid subscription in order to get upgrades or support for this plugin. %sPurchase a subscription or enter an existing site key%s.', 'installer' ),
165
+ # '<a href="' . $this->menu_url() . '">', '</a>' ); ?>
166
 
167
+ msgid "You must have a valid subscription in order to get upgrades or support for this plugin. %sPurchase a subscription or enter an existing site key%s."
168
  msgstr ""
169
 
170
+ #
171
+ # $error_message = sprintf( __( "%s cannot update because your site's registration is not valid. Please %sregister %s%s again for this site first.", 'installer' ),
172
+ # '<strong>' . $plugin_name . '</strong>', '<a target="_top" href="' . $this->menu_url() . '&validate_repository=' . $plugin_repository .
173
 
174
+ msgid "%s cannot update because your site's registration is not valid. Please %sregister %s%s again for this site first."
175
  msgstr ""
176
 
177
+ # echo '<div class="wrap">';
178
+ # echo '<h2>' . __( 'Update Plugin', 'installer' ) . '</h2>';
179
+ # echo '<a href="' . admin_url( 'plugins.php' ) . '">' . __( 'Return to the plugins page', 'installer' ) . '</a>';
180
 
181
+ msgid "Update Plugin"
182
  msgstr ""
183
 
184
+ # echo '<h2>' . __( 'Update Plugin', 'installer' ) . '</h2>';
185
+ # echo '<a href="' . admin_url( 'plugins.php' ) . '">' . __( 'Return to the plugins page', 'installer' ) . '</a>';
186
+ # echo '</div>';
187
 
188
+ msgid "Return to the plugins page"
189
  msgstr ""
190
 
191
+ # echo '<div><p class="installer-warn-box">' .
192
+ # sprintf( _n( 'Your subscription expires in %d day.', 'Your subscription expires in %d days.', $days_to_expiration, 'installer' ), $days_to_expiration ) .
193
+ # '<br />' . $message .
194
 
195
+ msgid "Your subscription expires in %d day."
196
  msgstr ""
197
 
198
+ # echo '<div><p class="installer-warn-box">' .
199
+ # sprintf( _n( 'Your subscription expires in %d day.', 'Your subscription expires in %d days.', $days_to_expiration, 'installer' ), $days_to_expiration ) .
200
+ # '<br />' . $message .
201
 
202
+ msgid "Your subscription expires in %d days."
203
  msgstr ""
204
 
205
+ # $theme_repo_name = $this->installer_theme_get_repo_product_name( $frontend_tab_selected );;
206
+ # $response['unregistered_messages'] = sprintf( __( 'To install and update %s, please %sregister%s %s for this site.', 'installer' ),
207
+ # $theme_repo_name, '<a href="' . $registration_url . '">', '</a>', $theme_repo_name );
208
 
209
+ msgid "To install and update %s, please %sregister%s %s for this site."
210
  msgstr ""
211
 
212
+ # if ( self::CHANNEL_DEVELOPMENT === $id || self::channel_id( self::CHANNEL_DEVELOPMENT ) === $id ) {
213
+ # $channel = __( 'Development', 'installer' );
214
+ # } elseif ( self::CHANNEL_BETA === $id || self::channel_id( self::CHANNEL_BETA ) === $id ) {
215
 
216
+ msgid "Development"
217
  msgstr ""
218
 
219
+ # } elseif ( self::CHANNEL_BETA === $id || self::channel_id( self::CHANNEL_BETA ) === $id ) {
220
+ # $channel = __( 'Beta', 'installer' );
221
+ # } else {
222
 
223
+ msgid "Beta"
224
  msgstr ""
225
 
226
+ # } else {
227
+ # $channel = __( 'Production', 'installer' );
228
+ # }
229
 
230
+ msgid "Production"
231
  msgstr ""
232
 
233
+ # public function win_paths_exception_message() {
234
+ # return __( 'Downloading is not possible. WordPress cannot create required folders because of the
235
+ # 256 characters limitation of the current Windows environment.', 'installer' );
236
 
237
+ msgid "Downloading is not possible. WordPress cannot create required folders because of the\n 256 characters limitation of the current Windows environment."
238
  msgstr ""
239
 
240
+ # echo '<div class="wrap">';
241
+ # echo '<h2>' . __( 'Update Plugin' ) . '</h2>';
242
+ # echo '<a href="' . admin_url( 'update-core.php' ) . '">' . __( 'Return to the updates page', 'installer' ) . '</a>';
243
 
244
+ msgid "Update Plugin"
245
  msgstr ""
246
 
247
+ # echo '<h2>' . __( 'Update Plugin' ) . '</h2>';
248
+ # echo '<a href="' . admin_url( 'update-core.php' ) . '">' . __( 'Return to the updates page', 'installer' ) . '</a>';
249
+ # echo '</div>';
250
 
251
+ msgid "Return to the updates page"
252
  msgstr ""
253
 
254
+ # echo esc_attr( sprintf(
255
+ # __( "Something went wrong and we could not install all updates from the %s channel. Click here to %stry again%s. If the errors persist, please switch back to the Production channel and contact the %s%s support%s.", 'installer' ),
256
+ # '%CHANNEL%',
257
 
258
+ msgid "Something went wrong and we could not install all updates from the %s channel. Click here to %stry again%s. If the errors persist, please switch back to the Production channel and contact the %s%s support%s."
259
  msgstr ""
260
 
261
+ # <?php printf(
262
+ # __("You are using a potentially less stable channel for %s. If you didn't enable this on purpose, you should switch to the 'Production' channel.", 'installer'),
263
+ # WP_Installer()->get_generic_product_name( $repository_id )
264
 
265
+ msgid "You are using a potentially less stable channel for %s. If you didn't enable this on purpose, you should switch to the 'Production' channel."
266
  msgstr ""
267
 
268
+ # echo esc_attr( sprintf(
269
+ # esc_attr__( "There was a problem switching to the %s channel. You can %sretry%s. If the problem continues, please %sdownload %s%s and install again manually", 'installer' ),
270
+ # '%CHANNEL%',
271
 
272
+ msgid "There was a problem switching to the %s channel. You can %sretry%s. If the problem continues, please %sdownload %s%s and install again manually"
273
  msgstr ""
274
 
275
+ # <span class="installer-status-note" <?php if( $can_switch ): ?>style="display:none" <?php endif; ?>>
276
+ # <?php _e("To select different update channels (beta, development) you must update your existing products to their most recent stable versions.", 'installer') ?>
277
+ # </span>
278
 
279
+ msgid "To select different update channels (beta, development) you must update your existing products to their most recent stable versions."
280
  msgstr ""
281
 
282
+ # <span class="spinner spinner-with-text">
283
+ # <?php _e( "Updating the plugins on your site. Please don't close this page or navigate away.", 'installer' ); ?>
284
+ # </span>
285
 
286
+ msgid "Updating the plugins on your site. Please don't close this page or navigate away."
287
  msgstr ""
288
 
289
+ # <p class="alignright">
290
+ # <button class="button-secondary js-cancel"><?php _e("Cancel", 'installer') ?></button>
291
+ # <button class="button-primary js-proceed"><?php _e("Switch", 'installer') ?></button>
292
 
293
+ msgid "Cancel"
294
  msgstr ""
295
 
296
+ # <button class="button-secondary js-cancel"><?php _e("Cancel", 'installer') ?></button>
297
+ # <button class="button-primary js-proceed"><?php _e("Switch", 'installer') ?></button>
298
+ # </p>
299
 
300
+ msgid "Switch"
301
  msgstr ""
302
 
303
+ # <p>
304
+ # <?php _e("Plugins will be updated to their most advanced version in the channel that you selected.", 'installer') ?>
305
+ # </p>
306
 
307
+ msgid "Plugins will be updated to their most advanced version in the channel that you selected."
308
  msgstr ""
309
 
310
+ # <input type="checkbox" value="1" class="js-remember"/>
311
+ # &nbsp;<?php _e("Remember my preference.", 'installer') ?><br />
312
+ # </label>
313
 
314
+ msgid "Remember my preference."
315
  msgstr ""
316
 
317
+ # <label>
318
+ # <?php esc_html_e('Updates channel:', 'installer'); ?>
319
+ # <select class="installer-channel-selector" data-repository-id="<?php echo $repository_id ?>"<?php if( !$can_switch ): ?> disabled<?php endif ?>>
320
 
321
+ msgid "Updates channel:"
322
  msgstr ""
323
 
324
+ # if(empty($args['repository']) || empty($args['package']) || empty($args['product'])){
325
+ # echo __('Incorrect setup', 'installer');
326
+ # return;
327
 
328
+ msgid "Incorrect setup"
329
  msgstr ""
330
 
331
+ # if(!$product){
332
+ # echo __('Invalid product', 'installer');
333
+ # return;
334
 
335
+ msgid "Invalid product"
336
  msgstr ""
337
 
338
+ # }else{
339
+ # echo __('Unknown repository', 'installer');
340
+ # return;
341
 
342
+ msgid "Unknown repository"
343
  msgstr ""
344
 
345
+ # if($subscription_type != $product['subscription_type'] && !$this->have_superior_subscription($subscription_type, $product) && $site_key){
346
+ # $subscription_no_match = sprintf(__(' Your current site key (%s) does not match the selected product (%s).', 'installer'), $site_key, $product['name']);
347
  # }
348
 
349
+ msgid " Your current site key (%s) does not match the selected product (%s)."
350
  msgstr ""
351
 
352
+ #
353
+ # <a class="button-primary" href="<?php echo $this->append_parameters_to_buy_url($product['url'], $repository_id, $args) ?>"><?php printf(__('Buy %s', 'installer'), $args['product_name']) ?></a>
354
+ #
355
 
356
+ msgid "Buy %s"
357
  msgstr ""
358
 
359
+ # <br />
360
+ # <?php printf(__('Already bought %s?', 'installer'), $args['product_name']) ?>
361
+ # <a class="enter_site_key_js<?php if( WP_Installer::get_repository_hardcoded_site_key( $repository_id ) ): ?> disabled<?php endif ?>" href="#"
362
 
363
+ msgid "Already bought %s?"
364
  msgstr ""
365
 
366
+ # <li>
367
+ # <a href="<?php echo $this->append_parameters_to_buy_url($renewal['url'], $repository_id, $args) ?>"><?php printf(__('Renew %s', 'installer'), $args['product_name']) ?></a>
368
+ # </li>
369
 
370
+ msgid "Renew %s"
371
  msgstr ""
372
 
373
+ # >
374
+ # <?php printf(__("Remove current site key (%s)", 'installer'), $site_key) ?>
375
+ # </a>
376
 
377
+ msgid "Remove current site key (%s)"
378
  msgstr ""
379
 
380
+ # <?php if($support_link): ?>
381
+ # <p><a href="<?php echo $support_link ?>" target="_blank"><?php printf(__('%s support on wpml.org', 'installer'), $args['name'] ) ?></a></p>
382
+ #
383
 
384
+ msgid "%s support on wpml.org"
385
  msgstr ""
386
 
387
+ # disabled="disabled"
388
+ # title="<?php printf( esc_attr__("Site-key was set by %s, most likely in wp-config.php. Please remove the constant before attempting to register.", 'installer'), 'OTGS_INSTALLER_SITE_KEY_' . strtoupper($repository_id) ) ?>"
389
+ # <?php endif; ?>
390
 
391
+ msgid "Site-key was set by %s, most likely in wp-config.php. Please remove the constant before attempting to register."
392
  msgstr ""
393
 
394
+ # disabled="disabled"
395
+ # title="<?php printf( esc_attr__("Site-key was set by %s, most likely in wp-config.php. Please remove the constant before attempting to unregister.", 'installer'), 'OTGS_INSTALLER_SITE_KEY_' . strtoupper($repository_id) ) ?>"
396
+ # <?php endif; ?>
397
 
398
+ msgid "Site-key was set by %s, most likely in wp-config.php. Please remove the constant before attempting to unregister."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
399
  msgstr ""
400
 
401
  # >
405
  msgid "Enter site key"
406
  msgstr ""
407
 
408
+ #
409
  # <div><p class="installer-warn-box"><?php _e('Subscription is expired.', 'installer') ?></p></div>
410
+ #
411
 
412
  msgid "Subscription is expired."
413
  msgstr ""
433
  msgid "Downloading is not possible because WordPress cannot write into the plugins folder. %sHow to fix%s."
434
  msgstr ""
435
 
 
 
 
 
 
 
 
436
  # <th>&nbsp;</th>
437
  # <th><?php _e('Plugin', 'installer') ?></th>
438
+ # <th><?php _e('Installed', 'installer') ?></th>
439
 
440
  msgid "Plugin"
441
  msgstr ""
442
 
443
  # <th><?php _e('Plugin', 'installer') ?></th>
444
+ # <th><?php _e('Installed', 'installer') ?></th>
445
+ # <th><?php _e('Current', 'installer') ?></th>
446
 
447
+ msgid "Installed"
448
  msgstr ""
449
 
450
+ # <th><?php _e('Installed', 'installer') ?></th>
451
+ # <th><?php _e('Current', 'installer') ?></th>
452
  # <th><?php _e('Released', 'installer') ?></th>
 
453
 
454
+ msgid "Current"
455
  msgstr ""
456
 
457
+ # <th><?php _e('Current', 'installer') ?></th>
458
  # <th><?php _e('Released', 'installer') ?></th>
 
459
  # <th>&nbsp;</th>
460
 
461
+ msgid "Released"
462
  msgstr ""
463
 
464
  # <span class="<?php echo $class ?>"><?php echo $v; ?></span>
465
+ # <?php if ( $this->plugin_is_embedded_version( $download['name'], $download['slug'] ) ): ?>&nbsp;<?php _e( '(embedded)', 'installer' ); ?><?php endif; ?>
466
+ # <?php if(
467
 
468
  msgid "(embedded)"
469
  msgstr ""
519
 
520
  # &nbsp;
521
  # <label><input name="activate" type="checkbox" value="1" disabled="disabled" />&nbsp;<?php _e('Activate after download', 'installer') ?></label>
522
+ #
523
 
524
  msgid "Activate after download"
525
  msgstr ""
526
 
527
+ #
528
  # <div class="installer-status-success"><?php _e('Operation complete!', 'installer') ?></div>
529
+ #
530
 
531
  msgid "Operation complete!"
532
  msgstr ""
533
 
534
+ #
535
  # <span class="installer-revalidate-message hidden"><?php _e("Download failed!\n\nPlease refresh the page and try again.", 'installer') ?></span>
536
  # </form>
537
 
538
  msgid "Download failed!\n\nPlease refresh the page and try again."
539
  msgstr ""
540
 
541
+ #
542
  # <input type="submit" class="button-secondary" value="<?php esc_attr_e('Download', 'installer') ?>" disabled="disabled" />
543
  # &nbsp;
544
 
545
  msgid "Download"
546
  msgstr ""
547
 
548
+ # <td class="twelve">
549
+ # <div class="installer-status-downloading"><?php _e('downloading...', 'installer') ?></div>
550
+ # <div class="installer-status-downloaded" data-fail="<?php _e('failed!', 'installer') ?>"><?php _e('downloaded', 'installer') ?></div>
551
 
552
+ msgid "downloading..."
553
  msgstr ""
554
 
555
+ # <div class="installer-status-downloading"><?php _e('downloading...', 'installer') ?></div>
556
+ # <div class="installer-status-downloaded" data-fail="<?php _e('failed!', 'installer') ?>"><?php _e('downloaded', 'installer') ?></div>
557
+ # </td>
558
 
559
+ msgid "downloaded"
560
  msgstr ""
561
 
562
+ #
563
+ # <span class="installer-revalidate-message hidden"><?php _e("Download failed!\n\nClick OK to revalidate your subscription or CANCEL to try again.", 'installer') ?></span>
564
+ # </form>
565
 
566
+ msgid "Download failed!\n\nClick OK to revalidate your subscription or CANCEL to try again."
567
+ msgstr ""
568
+
569
+ # <th><?php _e('Plugin', 'installer') ?></th>
570
+ # <th><img src="<?php echo $this->plugin_url() ?>/res/img/globe.png" alt="<?php esc_attr_e('Available', 'installer') ?>" width="16" height="16"></th>
571
+ # <th><img src="<?php echo $this->plugin_url() ?>/res/img/computer.png" alt="<?php esc_attr_e('Installed', 'installer') ?>" width="16" height="16"></th>
572
+
573
+ msgid "Available"
574
+ msgstr ""
575
+
576
+ # <th><img src="<?php echo $this->plugin_url() ?>/res/img/computer.png" alt="<?php esc_attr_e('Installed', 'installer') ?>" width="16" height="16"></th>
577
+ # <th><img src="<?php echo $this->plugin_url() ?>/res/img/dn2.gif" alt="<?php esc_attr_e('Downloading', 'installer') ?>" width="16" height="16"></th>
578
+ # <th><img src="<?php echo $this->plugin_url() ?>/res/img/on.png" alt="<?php esc_attr_e('Activate', 'installer') ?>" width="16" height="16"></th>
579
+
580
+ msgid "Downloading"
581
+ msgstr ""
582
+
583
+ # <th><img src="<?php echo $this->plugin_url() ?>/res/img/dn2.gif" alt="<?php esc_attr_e('Downloading', 'installer') ?>" width="16" height="16"></th>
584
+ # <th><img src="<?php echo $this->plugin_url() ?>/res/img/on.png" alt="<?php esc_attr_e('Activate', 'installer') ?>" width="16" height="16"></th>
585
+ # </tr>
586
+
587
+ msgid "Activate"
588
+ msgstr ""
589
+
590
+ # >
591
+ # <?php printf(__('Register %s', 'installer'), $generic_product_name); ?>
592
+ # </a>&nbsp;&nbsp;
593
+
594
+ msgid "Register %s"
595
+ msgstr ""
596
+
597
+ #
598
+ # <div class="alignleft" style="margin-top:6px;"><?php printf(__('1. Go to your %s%s account%s and add this site URL: %s', 'installer'),
599
+ # '<a href="' . $this->settings['repositories'][$repository_id]['data']['site_keys_management_url'] . '?add='.urlencode($this->get_installer_site_url( $repository_id )).'">',
600
+
601
+ msgid "1. Go to your %s%s account%s and add this site URL: %s"
602
+ msgstr ""
603
+
604
+ # >
605
+ # <?php printf(__("Unregister %s from this site", 'installer'), $generic_product_name) ?></a>&nbsp;
606
+ # <a class="update_site_key_js button-secondary" href="#" data-repository=<?php echo $repository_id ?>
607
+
608
+ msgid "Unregister %s from this site"
609
  msgstr ""
610
 
611
  # <?php if($expires = $this->settings['repositories'][$repository_id]['subscription']['data']->expires): ?>
622
  msgid "%s is registered on this site. Your Lifetime account gives you updates for life."
623
  msgstr ""
624
 
625
+ #
626
  # <p><i><?php printf(__('This page lets you install plugins and update existing plugins. To remove any of these plugins, go to the %splugins%s page and if you have the permission to remove plugins you should be able to do this.', 'installer'), '<a href="' . admin_url('plugins.php') . '">' , '</a>'); ?></i></p>
627
+ #
628
 
629
  msgid "This page lets you install plugins and update existing plugins. To remove any of these plugins, go to the %splugins%s page and if you have the permission to remove plugins you should be able to do this."
630
  msgstr ""
685
  msgid "OK"
686
  msgstr ""
687
 
 
 
 
 
 
 
 
688
  # <a class="remove_site_key_js button-secondary" href="#" data-repository=<?php echo $repository_id ?>
689
  # data-confirmation="<?php esc_attr_e('Are you sure you want to unregister?', 'installer') ?>"
690
  # data-nonce="<?php echo wp_create_nonce('remove_site_key_' . $repository_id) ?>"
699
  msgid "Click to see individual components options."
700
  msgstr ""
701
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
702
  # $taxonomy_obj = get_taxonomy($taxonomy);
703
  # $message = sprintf(__('To translate %s please use the %s translation%s page, inside the %sWooCommerce Multilingual admin%s.', 'woocommerce-multilingual'),
704
  # $taxonomy_obj->labels->name,
706
  msgid "To translate %s please use the %s translation%s page, inside the %sWooCommerce Multilingual admin%s."
707
  msgstr ""
708
 
709
+ #
710
  # $response['progress'] = $response['go'] ? sprintf(__('%d products left', 'woocommerce-multilingual'), count($post_ids) - $posts_processed) : __('Synchronization complete!', 'woocommerce-multilingual');
711
+ #
712
 
713
  msgid "%d products left"
714
  msgstr ""
715
 
716
+ #
717
  # $response['progress'] = $response['go'] ? sprintf(__('%d products left', 'woocommerce-multilingual'), count($post_ids) - $posts_processed) : __('Synchronization complete!', 'woocommerce-multilingual');
718
+ #
719
 
720
  msgid "Synchronization complete!"
721
  msgstr ""
748
  msgid "All %s have the same %s assignments."
749
  msgstr ""
750
 
751
+ #
752
  # $out .= sprintf(__('Successfully updated %s for all translated %s.', 'woocommerce-multilingual'), $wp_taxonomies[$taxonomy]->labels->name, $wp_post_types[$object_type]->labels->name);
753
+ #
754
 
755
  msgid "Successfully updated %s for all translated %s."
756
  msgstr ""
757
 
758
+ # 'show' => 1,
759
+ # 'text' => __('Looks like you are upgrading from a previous version of WooCommerce Multilingual. Would you like to automatically create translated variations and images?', 'wcml').
760
+ # '<br /><strong>' .
761
 
762
+ msgid "Looks like you are upgrading from a previous version of WooCommerce Multilingual. Would you like to automatically create translated variations and images?"
763
  msgstr ""
764
 
765
+ # '<br /><strong>' .
766
+ # ' <a href="' . admin_url('admin.php?page=wpml-wcml&tab=troubleshooting') . '">' . __('Yes, go to the troubleshooting page', 'wcml') . '</a> |' .
767
+ # ' <a href="#" onclick="jQuery.ajax({type:\'POST\',url: ajaxurl,data:\'action=wcml_hide_notice&notice='.$n.'\',success:function(){jQuery(\'#' . $n . '\').fadeOut()}});return false;">' . __('No - dismiss', 'wcml') . '</a>' .
768
 
769
+ msgid "Yes, go to the troubleshooting page"
770
  msgstr ""
771
 
772
+ # ' <a href="' . admin_url('admin.php?page=wpml-wcml&tab=troubleshooting') . '">' . __('Yes, go to the troubleshooting page', 'wcml') . '</a> |' .
773
+ # ' <a href="#" onclick="jQuery.ajax({type:\'POST\',url: ajaxurl,data:\'action=wcml_hide_notice&notice='.$n.'\',success:function(){jQuery(\'#' . $n . '\').fadeOut()}});return false;">' . __('No - dismiss', 'wcml') . '</a>' .
774
+ # '</strong>'
775
 
776
+ msgid "No - dismiss"
777
  msgstr ""
778
 
779
+ # $active_languages = apply_filters( 'wpml_active_languages', null, null );
780
+ # $dialog_title = __( 'Switching language?', 'woocommerce-multilingual' );
781
+ #
782
 
783
+ msgid "Switching language?"
784
  msgstr ""
785
 
786
+ # $confirmation_message = sprintf(
787
+ # __( "You've switched the language and there are items in the cart. If you keep the %s language, the cart will be emptied and you will have to add the items again to the cart.",
788
+ # 'woocommerce-multilingual' ),
789
 
790
+ msgid "You've switched the language and there are items in the cart. If you keep the %s language, the cart will be emptied and you will have to add the items again to the cart."
791
  msgstr ""
792
 
 
 
793
  # );
794
+ # $stay_in = sprintf( __( 'Keep %s', 'woocommerce-multilingual' ), $active_languages[ $this->lang_to ]['translated_name'] );
795
+ # $switch_to = sprintf( __( 'Switch back to %s', 'woocommerce-multilingual' ), $active_languages[ $this->lang_from ]['translated_name'] );
796
 
797
+ msgid "Keep %s"
798
  msgstr ""
799
 
800
+ # $stay_in = sprintf( __( 'Keep %s', 'woocommerce-multilingual' ), $active_languages[ $this->lang_to ]['translated_name'] );
801
+ # $switch_to = sprintf( __( 'Switch back to %s', 'woocommerce-multilingual' ), $active_languages[ $this->lang_from ]['translated_name'] );
802
+ #
803
 
804
+ msgid "Switch back to %s"
805
  msgstr ""
806
 
807
+ # array(
808
+ # 'warn' => esc_html__( "Downloading translations... Please don't close this page.", 'woocommerce-multilingual' )
809
+ # )
810
 
811
+ msgid "Downloading translations... Please don't close this page."
812
  msgstr ""
813
 
814
+ # jQuery('#dropdown_shop_order_language').on('change', function(){
815
+ # if(confirm('" . esc_js(__("All the products will be removed from the current order in order to change the language", 'woocommerce-multilingual')). "')){
816
+ # var lang = jQuery(this).val();
817
 
818
+ msgid "All the products will be removed from the current order in order to change the language"
819
  msgstr ""
820
 
821
+ # if(!$nonce || !wp_verify_nonce($nonce, 'set_dashboard_order_language')){
822
+ # echo json_encode(array('error' => __('Invalid nonce', 'woocommerce-multilingual')));
823
+ # die();
824
 
825
+ msgid "Invalid nonce"
826
  msgstr ""
827
 
828
+ # <li class="wide">
829
+ # <label><?php _e('Order language:'); ?></label>
830
+ # <select id="dropdown_shop_order_language" name="wcml_shop_order_language">
831
 
832
+ msgid "Order language:"
833
  msgstr ""
834
 
835
+ # //dummy array for names
836
+ # $names = array( __('Cart', 'woocommerce-multilingual'),
837
+ # __('Checkout', 'woocommerce-multilingual'),
838
 
839
+ msgid "Cart"
840
  msgstr ""
841
 
842
+ # $names = array( __('Cart', 'woocommerce-multilingual'),
843
+ # __('Checkout', 'woocommerce-multilingual'),
844
+ # __('Checkout &rarr; Pay', 'woocommerce-multilingual'),
845
 
846
+ msgid "Checkout"
847
  msgstr ""
848
 
849
+ # __('Checkout', 'woocommerce-multilingual'),
850
+ # __('Checkout &rarr; Pay', 'woocommerce-multilingual'),
851
+ # __('Order Received', 'woocommerce-multilingual'),
852
 
853
+ msgid "Checkout &rarr; Pay"
854
  msgstr ""
855
 
856
+ # __('Checkout &rarr; Pay', 'woocommerce-multilingual'),
857
+ # __('Order Received', 'woocommerce-multilingual'),
858
+ # __('My Account', 'woocommerce-multilingual'),
859
 
860
+ msgid "Order Received"
861
  msgstr ""
862
 
863
+ # __('Order Received', 'woocommerce-multilingual'),
864
+ # __('My Account', 'woocommerce-multilingual'),
865
+ # __('Change Password', 'woocommerce-multilingual'),
866
 
867
+ msgid "My Account"
868
  msgstr ""
869
 
870
+ # __('My Account', 'woocommerce-multilingual'),
871
+ # __('Change Password', 'woocommerce-multilingual'),
872
+ # __('Edit My Address', 'woocommerce-multilingual'),
873
 
874
+ msgid "Change Password"
875
  msgstr ""
876
 
877
+ # __('Change Password', 'woocommerce-multilingual'),
878
+ # __('Edit My Address', 'woocommerce-multilingual'),
879
+ # __('Logout', 'woocommerce-multilingual'),
880
 
881
+ msgid "Edit My Address"
882
  msgstr ""
883
 
884
+ # __('Edit My Address', 'woocommerce-multilingual'),
885
+ # __('Logout', 'woocommerce-multilingual'),
886
+ # __('Lost Password', 'woocommerce-multilingual'),
887
 
888
+ msgid "Logout"
889
  msgstr ""
890
 
891
+ # __('Logout', 'woocommerce-multilingual'),
892
+ # __('Lost Password', 'woocommerce-multilingual'),
893
+ # __('View Order', 'woocommerce-multilingual'),
894
 
895
+ msgid "Lost Password"
896
  msgstr ""
897
 
898
+ # __('Lost Password', 'woocommerce-multilingual'),
899
+ # __('View Order', 'woocommerce-multilingual'),
900
+ # __('Shop', 'woocommerce-multilingual'));
901
 
902
+ msgid "View Order"
903
  msgstr ""
904
 
905
+ # __('View Order', 'woocommerce-multilingual'),
906
+ # __('Shop', 'woocommerce-multilingual'));
907
+ #
908
 
909
+ msgid "Shop"
910
  msgstr ""
911
 
912
+ # if( !$is_translated ){
913
+ # $text = sprintf( __( 'To quickly translate this and other WooCommerce store pages, please run the %ssetup wizard%s.', 'woocommerce-multilingual' ),
914
+ # '<a href="' . admin_url( 'admin.php?page=wcml-setup' ) . '">', '</a>' );
915
 
916
+ msgid "To quickly translate this and other WooCommerce store pages, please run the %ssetup wizard%s."
917
  msgstr ""
918
 
919
+ # $slug = $this->get_woocommerce_product_base();
920
+ # $return['name'] = __( 'Product Base', 'woocommerce-multilingual' );
921
+ # break;
922
 
923
+ msgid "Product Base"
924
  msgstr ""
925
 
926
+ # $slug = ! empty( $this->wc_permalinks['tag_base'] ) ? trim( $this->wc_permalinks['tag_base'], '/' ) : 'product-tag';
927
+ # $return['name'] = __( 'Product Tag Base', 'woocommerce-multilingual' );
928
+ # break;
929
 
930
+ msgid "Product Tag Base"
931
  msgstr ""
932
 
933
+ # $slug = ! empty( $this->wc_permalinks['category_base'] ) ? trim( $this->wc_permalinks['category_base'], '/' ) : 'product-category';
934
+ # $return['name'] = __( 'Product Category Base', 'woocommerce-multilingual' );
935
+ # break;
936
 
937
+ msgid "Product Category Base"
938
  msgstr ""
939
 
940
+ # $slug = trim( $this->wc_permalinks['attribute_base'], '/' );
941
+ # $return['name'] = __( 'Product Attribute Base', 'woocommerce-multilingual' );
942
+ # break;
943
 
944
+ msgid "Product Attribute Base"
 
 
 
 
 
 
 
945
  msgstr ""
946
 
947
+ # case 'attribute_slug':
948
+ # $return['name'] = __( 'Attribute Slug', 'woocommerce-multilingual' );
949
+ # $string_id = icl_get_string_id( $slug, $this->url_strings_context(), $this->url_string_name( $base, $slug ) );
950
 
951
+ msgid "Attribute Slug"
952
  msgstr ""
953
 
954
+ # $slug = isset( $endpoints[ $base ] ) ? $endpoints[ $base ] : false;
955
+ # $return['name'] = sprintf( __( 'Endpoint: %s', 'woocommerce-multilingual' ), $base );
956
+ # $string_id = icl_get_string_id( $slug, 'WooCommerce Endpoints', $base );
957
 
958
+ msgid "Endpoint: %s"
959
  msgstr ""
960
 
961
+ # $this->default_product_tag_base = 'product-tag';
962
+ # $this->default_product_category_gettext_base = _x( 'product-category', 'slug', 'woocommerce' );
963
+ # $this->default_product_tag_gettext_base = _x( 'product-tag', 'slug', 'woocommerce' );
964
 
965
+ msgctxt "slug"
966
+ msgid "product-category"
967
  msgstr ""
968
 
969
+ # $this->default_product_category_gettext_base = _x( 'product-category', 'slug', 'woocommerce' );
970
+ # $this->default_product_tag_gettext_base = _x( 'product-tag', 'slug', 'woocommerce' );
971
  # }
972
 
973
+ msgctxt "slug"
974
+ msgid "product-tag"
 
 
 
 
 
 
 
 
 
 
 
 
 
975
  msgstr ""
976
 
977
+ # $widget_opt = array(
978
+ # 'description' => __( 'Shows a list of the products that existed in the cart before the cart is reset on the front end after switching the language or the currency. It will be hidden when there are no products to show.', 'woocommerce-multilingual' ),
979
+ # );
980
 
981
+ msgid "Shows a list of the products that existed in the cart before the cart is reset on the front end after switching the language or the currency. It will be hidden when there are no products to show."
982
  msgstr ""
983
 
984
+ # 'wcml_cart_deleted_items',
985
+ # __( 'Products before cart reset', 'woocommerce-multilingual' ),
986
+ # $widget_opt
987
 
988
+ msgid "Products before cart reset"
989
  msgstr ""
990
 
991
+ # }elseif( isset( $product_translations[ $language[ 'code' ] ] ) && $product_translations[ $language[ 'code' ] ]->original ) { ?>
992
+ # <span title="<?php echo $language['english_name'] . ': ' . __('Original language', 'woocommerce-multilingual'); ?>">
993
+ # <i class="otgs-ico-original"></i>
994
 
995
+ msgid "Original language"
996
  msgstr ""
997
 
998
+ # ?>
999
+ # <a href="<?php echo $edit_url ?>" title="<?php echo $language[ 'english_name' ] . ': ' . __( 'Take this and edit', 'woocommerce-multilingual' ); ?>">
1000
+ # <i class="otgs-ico-add"></i>
1001
 
1002
+ msgid "Take this and edit"
1003
  msgstr ""
1004
 
1005
+ # if (!$tr_status ) { ?>
1006
+ # title="<?php echo $language[ 'english_name' ] . ': ' . __( 'Add translation', 'woocommerce-multilingual' ); ?>">
1007
+ # <i class="otgs-ico-add"></i>
1008
 
1009
+ msgid "Add translation"
1010
  msgstr ""
1011
 
1012
+ # <?php }elseif( $tr_status->needs_update ){ ?>
1013
+ # title="<?php echo $language[ 'english_name' ] . ': ' . __( 'Update translation', 'woocommerce-multilingual' ); ?>">
1014
+ # <i class="otgs-ico-refresh"></i>
1015
 
1016
+ msgid "Update translation"
1017
  msgstr ""
1018
 
1019
+ # <?php }elseif( $tr_status->status != ICL_TM_COMPLETE && $tr_status->status != ICL_TM_DUPLICATE ){ ?>
1020
+ # title="<?php echo $language[ 'english_name' ] . ': ' . __( 'Finish translating', 'woocommerce-multilingual' ); ?>">
1021
+ # <i class="otgs-ico-refresh"></i>
1022
 
1023
+ msgid "Finish translating"
1024
  msgstr ""
1025
 
1026
+ # <?php }elseif( $tr_status->status == ICL_TM_COMPLETE ){ ?>
1027
+ # title="<?php echo $language[ 'english_name' ] . ': ' . __( 'Edit translation', 'woocommerce-multilingual' ); ?>">
1028
+ # <i class="otgs-ico-edit"></i>
1029
 
1030
+ msgid "Edit translation"
1031
  msgstr ""
1032
 
1033
+ # $new_actions[ 'quick_hide' ] = '<a href="#TB_inline?width=200&height=150&inlineId=quick_edit_notice" class="thickbox" title="' .
1034
+ # __('Edit this item inline', 'woocommerce-multilingual') . '">' .
1035
+ # __('Quick Edit', 'woocommerce-multilingual') . '</a>';
1036
 
1037
+ msgid "Edit this item inline"
1038
  msgstr ""
1039
 
1040
+ # __('Edit this item inline', 'woocommerce-multilingual') . '">' .
1041
+ # __('Quick Edit', 'woocommerce-multilingual') . '</a>';
1042
+ # } else {
1043
 
1044
+ msgid "Quick Edit"
1045
  msgstr ""
1046
 
1047
+ # if( $tr_status->status == ICL_TM_IN_PROGRESS ) { ?>
1048
+ # <a title="<?php _e( 'Translation in progress', 'woocommerce-multilingual' ); ?>"><i
1049
+ # class="otgs-ico-in-progress"></i></a>
1050
 
1051
+ msgid "Translation in progress"
1052
  msgstr ""
1053
 
1054
  # ?>
1055
  # <div class="message error"><p><?php printf(__('WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href="%s">WPML</a> versions prior %s.',
1056
+ # 'woocommerce-multilingual'), $this->tracking_link->generate('https://wpml.org/'), '3.4'); ?></p></div>
1057
 
1058
  msgid "WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href=\"%s\">WPML</a> versions prior %s."
1059
  msgstr ""
1067
 
1068
  # ?>
1069
  # <div class="message error"><p><?php printf(__('WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href="%s">WPML Translation Management</a> versions prior %s.',
1070
+ # 'woocommerce-multilingual'), $this->tracking_link->generate('https://wpml.org/'), '1.9'); ?></p></div>
1071
 
1072
  msgid "WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href=\"%s\">WPML Translation Management</a> versions prior %s."
1073
  msgstr ""
1074
 
1075
  # ?>
1076
  # <div class="message error"><p><?php printf(__('WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href="%s">WPML String Translation</a> versions prior %s.',
1077
+ # 'woocommerce-multilingual'), $this->tracking_link->generate('https://wpml.org/'), '2.0'); ?></p></div>
1078
 
1079
  msgid "WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href=\"%s\">WPML String Translation</a> versions prior %s."
1080
  msgstr ""
1081
 
1082
  # ?>
1083
  # <div class="message error"><p><?php printf(__('WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href="%s">WPML Media</a> versions prior %s.',
1084
+ # 'woocommerce-multilingual'), $this->tracking_link->generate('https://wpml.org/'), '2.1'); ?></p></div>
1085
 
1086
  msgid "WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href=\"%s\">WPML Media</a> versions prior %s."
1087
  msgstr ""
1093
  msgid "and"
1094
  msgstr ""
1095
 
1096
+ #
1097
  # <div class="message error"><p><?php printf(__('WooCommerce Multilingual is enabled but not effective. It requires %s in order to work.', 'woocommerce-multilingual'), $missing); ?></p></div>
1098
  # <?php
1099
 
1109
 
1110
  # $message .= ' | ';
1111
  # $message .= '<a href="' . admin_url('admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=mcsetup#icl_custom_posts_sync_options') . '">' . __('Configure products slug translation', 'woocommerce-multilingual') . '</a>';
1112
+ #
1113
 
1114
  msgid "Configure products slug translation"
1115
  msgstr ""
1121
  msgid "If you want different slugs for shop pages (%s/%s), you need to disable the shop prefix for products in <a href=\"%s\">WooCommerce Settings</a>"
1122
  msgstr ""
1123
 
1124
+ #
1125
  # $ret['success_1'] = '&nbsp;' . sprintf(__('Finished! You can visit the %sstrings translation%s screen to translate the strings now.', 'woocommerce-multilingual'), '<a href="' . admin_url('admin.php?page=' . WPML_ST_FOLDER . '/menu/string-translation.php') . '">', '</a>');
1126
+ #
1127
 
1128
  msgid "Finished! You can visit the %sstrings translation%s screen to translate the strings now."
1129
  msgstr ""
1156
  msgid "Custom taxonomy %s configuration from wpml-config.xml file was altered!"
1157
  msgstr ""
1158
 
1159
+ # $job_details[ 'job_id' ],
1160
+ # 'wc_product', __( 'Product', 'woocommerce-multilingual' ),
1161
+ # $this->original_post->post_title,
1162
 
1163
+ msgid "Product"
1164
  msgstr ""
1165
 
1166
+ #
1167
+ # $this->add_field( new WPML_Editor_UI_Single_Line_Field( 'title', __( 'Title', 'woocommerce-multilingual' ), $this->data, true ) );
1168
+ # $this->add_field( new WPML_Editor_UI_Single_Line_Field( 'slug', __( 'Slug', 'woocommerce-multilingual' ), $this->data, true ) );
1169
 
1170
+ msgid "Title"
1171
  msgstr ""
1172
 
1173
+ # $this->add_field( new WPML_Editor_UI_Single_Line_Field( 'title', __( 'Title', 'woocommerce-multilingual' ), $this->data, true ) );
1174
+ # $this->add_field( new WPML_Editor_UI_Single_Line_Field( 'slug', __( 'Slug', 'woocommerce-multilingual' ), $this->data, true ) );
1175
+ #
1176
 
1177
+ msgid "Slug"
1178
  msgstr ""
1179
 
1180
+ # }else{
1181
+ # $this->add_field( new WCML_Editor_UI_WYSIWYG_Field( 'product_content', __( 'Content / Description', 'woocommerce-multilingual' ), $this->data, true ) );
1182
+ # }
1183
 
1184
+ msgid "Content / Description"
1185
  msgstr ""
1186
 
1187
+ #
1188
+ # $excerpt_section = new WPML_Editor_UI_Field_Section( __( 'Excerpt', 'woocommerce-multilingual' ) );
1189
+ # $excerpt_section->add_field( new WCML_Editor_UI_WYSIWYG_Field( 'product_excerpt', null, $this->data, true ) );
1190
 
1191
+ msgid "Excerpt"
1192
  msgstr ""
1193
 
1194
+ #
1195
+ # $purchase_note_section = new WPML_Editor_UI_Field_Section( __( 'Purchase note', 'woocommerce-multilingual' ) );
1196
+ # $purchase_note_section->add_field( new WPML_Editor_UI_TextArea_Field( '_purchase_note', null, $this->data, true ) );
1197
 
1198
+ msgid "Purchase note"
1199
  msgstr ""
1200
 
1201
+ #
1202
+ # $images_section = new WPML_Editor_UI_Field_Section( __( 'Images', 'woocommerce-multilingual' ) );
1203
+ # foreach( $product_images as $image_id ) {
1204
 
1205
+ msgid "Images"
1206
  msgstr ""
1207
 
1208
+ # if ( $attributes ){
1209
+ # $attributes_section = new WPML_Editor_UI_Field_Section( __( 'Custom Product attributes', 'woocommerce-multilingual' ) );
1210
+ # foreach( $attributes as $attr_key => $attribute ) {
1211
 
1212
+ msgid "Custom Product attributes"
1213
  msgstr ""
1214
 
1215
+ # $group = new WPML_Editor_UI_Field_Group( '', true );
1216
+ # $attribute_field = new WPML_Editor_UI_Single_Line_Field( $attr_key . '_name', __( 'Name', 'woocommerce-multilingual' ), $this->data, false );
1217
+ # $group->add_field( $attribute_field );
1218
 
1219
+ msgid "Name"
1220
  msgstr ""
1221
 
1222
+ # $group->add_field( $attribute_field );
1223
+ # $attribute_field = new WPML_Editor_UI_Single_Line_Field( $attr_key , __( 'Value(s)', 'woocommerce-multilingual' ), $this->data, false );
1224
+ # $group->add_field( $attribute_field );
1225
 
1226
+ msgid "Value(s)"
1227
  msgstr ""
1228
 
1229
+ #
1230
+ # $custom_fields_section = new WPML_Editor_UI_Field_Section( __( 'Custom Fields', 'woocommerce-multilingual' ) );
1231
+ #
1232
 
1233
+ msgid "Custom Fields"
1234
  msgstr ""
1235
 
1236
+ # if( !empty( $variations ) ){
1237
+ # $variations_data_section = new WPML_Editor_UI_Field_Section( __( 'Variations data', 'woocommerce-multilingual' ) );
1238
+ # foreach( $variations as $variation ){
1239
 
1240
+ msgid "Variations data"
1241
  msgstr ""
1242
 
1243
+ # if( $is_variable ){
1244
+ # $files_section = new WPML_Editor_UI_Field_Section( sprintf( __( 'Download Files for Variation #%s', 'woocommerce-multilingual' ), $post_id ) );
1245
+ # }else{
1246
 
1247
+ msgid "Download Files for Variation #%s"
1248
  msgstr ""
1249
 
1250
+ # }else{
1251
+ # $files_section = new WPML_Editor_UI_Field_Section( __( 'Download Files', 'woocommerce-multilingual' ) );
1252
+ # }
1253
 
1254
+ msgid "Download Files"
1255
  msgstr ""
1256
 
1257
+ # $sub_group->add_field( $field_input );
1258
+ # $field_input = new WPML_Editor_UI_Single_Line_Field( 'file-url'.$key.$post_id, __( 'File URL', 'woocommerce-multilingual' ), $this->data, false );
1259
+ # $sub_group->add_field( $field_input );
1260
 
1261
+ msgid "File URL"
1262
  msgstr ""
1263
 
1264
+ # if( $this->product_type === 'external' ){
1265
+ # $external_product_section = new WPML_Editor_UI_Field_Section( __( 'External Product', 'woocommerce-multilingual' ) );
1266
+ # $external_product_section->add_field( new WPML_Editor_UI_Single_Line_Field( '_product_url', __( 'Product url', 'woocommerce-multilingual' ), $this->data, true ) );
1267
 
1268
+ msgid "External Product"
1269
  msgstr ""
1270
 
1271
+ # $external_product_section = new WPML_Editor_UI_Field_Section( __( 'External Product', 'woocommerce-multilingual' ) );
1272
+ # $external_product_section->add_field( new WPML_Editor_UI_Single_Line_Field( '_product_url', __( 'Product url', 'woocommerce-multilingual' ), $this->data, true ) );
1273
+ # $external_product_section->add_field( new WPML_Editor_UI_Single_Line_Field( '_button_text', __( 'Button text', 'woocommerce-multilingual' ), $this->data, true ) );
1274
 
1275
+ msgid "Product url"
1276
  msgstr ""
1277
 
1278
+ # $external_product_section->add_field( new WPML_Editor_UI_Single_Line_Field( '_product_url', __( 'Product url', 'woocommerce-multilingual' ), $this->data, true ) );
1279
+ # $external_product_section->add_field( new WPML_Editor_UI_Single_Line_Field( '_button_text', __( 'Button text', 'woocommerce-multilingual' ), $this->data, true ) );
1280
+ # $this->add_field( $external_product_section );
1281
 
1282
+ msgid "Button text"
1283
  msgstr ""
1284
 
1285
+ # if( $product_terms ){
1286
+ # $tax_section = new WPML_Editor_UI_Field_Section( $taxonomy_obj->label, __( 'Changes in these translations will affect terms in general! ( Not only for this product )', 'woocommerce-multilingual' ));
1287
+ # foreach( $product_terms as $term ){
1288
 
1289
+ msgid "Changes in these translations will affect terms in general! ( Not only for this product )"
1290
  msgstr ""
1291
 
1292
+ # if ( !$args[ 'post_title' ] && !$args[ 'post_content' ] && !$args[ 'post_excerpt' ] ){
1293
+ # return new WP_Error( 'empty_content', __( 'Content, title, and excerpt are empty.' ) );
1294
+ # }
1295
 
1296
+ msgid "Content, title, and excerpt are empty."
1297
  msgstr ""
1298
 
1299
+ # <p class="icl-admin-message" style="margin-top: 0">
1300
+ # <?php printf( __('To configure how the %sWooCommerce products%s are translated, visit the WooCommerce Multiligual %ssettings%s page.',
1301
+ # 'woocommerce-multilingual'), '<strong>', '</strong>', '<a href="' . admin_url('admin.php?page=wpml-wcml&tab=settings') . '">', '</a>' ); ?>
1302
 
1303
+ msgid "To configure how the %sWooCommerce products%s are translated, visit the WooCommerce Multiligual %ssettings%s page."
1304
  msgstr ""
1305
 
1306
+ # input.parent().append('<div class="translation_controls"></div>');
1307
+ # input.parent().find('.translation_controls').append('<a href="<?php echo $st_page ?>" style="margin-left: 10px"><?php _e('translations', 'woocommerce-multilingual') ?></a>');
1308
+ # jQuery('#<?php echo $gateway_option.'_'.$text_key.'_language_selector' ?>').prependTo( input.parent().find('.translation_controls') );
1309
 
1310
+ msgid "translations"
 
1311
  msgstr ""
1312
 
1313
+ # 'interval' => $interval,
1314
+ # 'display' => sprintf( __( 'Monthly on the %s', 'woocommerce-multilingual' ), $month_day ),
1315
+ # );
1316
+
1317
+ msgid "Monthly on the %s"
 
1318
  msgstr ""
1319
 
1320
+ # 'interval' => 604800,
1321
+ # 'display' => sprintf( __( 'Weekly on %s', 'woocommerce-multilingual' ), $week_day ),
1322
+ # );
1323
 
1324
+ msgid "Weekly on %s"
1325
  msgstr ""
1326
 
1327
+ # <?php if ( empty( $order_currencies ) ): ?>
1328
+ # <option value=""><?php _e( 'Currency - no orders found', 'woocommerce-multilingual' ) ?></option>
1329
+ # <?php else: ?>
1330
 
1331
+ msgid "Currency - no orders found"
1332
  msgstr ""
1333
 
1334
+ #
1335
+ # if(confirm('" . esc_js( __( "All the products will be removed from the current order in order to change the currency", 'woocommerce-multilingual' ) ) . "')){
1336
+ # jQuery.ajax({
1337
 
1338
+ msgid "All the products will be removed from the current order in order to change the currency"
1339
  msgstr ""
1340
 
1341
+ # <select id="dropdown_shop_order_currency" name="_order_currency">
1342
+ # <option value=""><?php _e( 'Show all currencies', 'woocommerce-multilingual' ) ?></option>
1343
+ # <?php foreach ( $order_currencies as $currency => $count ): ?>
1344
 
1345
+ msgid "Show all currencies"
1346
  msgstr ""
1347
 
1348
+ # <li class="wide">
1349
+ # <label><?php _e( 'Order currency:', 'woocommerce-multilingual' ); ?></label>
1350
+ # <select id="dropdown_shop_order_currency" name="wcml_shop_order_currency">
1351
 
1352
+ msgid "Order currency:"
1353
  msgstr ""
1354
 
1355
+ # if( strpos( $json->error->info, 'You have not supplied an API Access Key' ) !== false ){
1356
+ # $error = __('You have entered an incorrect API Access Key', 'woocommerce-multilingual');
1357
+ # }else{
1358
 
1359
+ msgid "You have entered an incorrect API Access Key"
1360
  msgstr ""
1361
 
1362
+ # } else{
1363
+ # $error = __( 'Cannot get exchange rates. Connection failed.', 'woocommerce-multilingual' );
1364
+ # }
1365
 
1366
+ msgid "Cannot get exchange rates. Connection failed."
1367
  msgstr ""
1368
 
1369
+ # if( !is_numeric( $rate ) ){
1370
+ # $error = sprintf( __("Error reading the exchange rate for %s. Please try again. If the error persist, try selecting a different exchange rate service.", 'woocommerce-multilingual' ), $to );
1371
+ # parent::save_last_error( $error );
1372
 
1373
+ msgid "Error reading the exchange rate for %s. Please try again. If the error persist, try selecting a different exchange rate service."
1374
  msgstr ""
1375
 
1376
+ # 'id' => 'wcml-settings-saved',
1377
+ # 'text' => __('Your settings have been saved.', 'woocommerce-multilingual' ),
1378
+ # 'group' => 'wcml-multi-currency',
1379
 
1380
+ msgid "Your settings have been saved."
1381
  msgstr ""
1382
 
1383
+ #
1384
+ # $args['title'] = empty($_POST['currency']) ? __('Add new currency', 'woocommerce-multilingual') : __('Update currency', 'woocommerce-multilingual');
1385
+ #
1386
 
1387
+ msgid "Add new currency"
1388
  msgstr ""
1389
 
1390
+ #
1391
+ # $args['title'] = empty($_POST['currency']) ? __('Add new currency', 'woocommerce-multilingual') : __('Update currency', 'woocommerce-multilingual');
1392
+ #
1393
 
1394
+ msgid "Update currency"
1395
  msgstr ""
1396
 
1397
+ #
1398
+ # $args['title'] = sprintf( __( 'Update settings for %s', 'woocommerce-multilingual' ),
1399
+ # '<strong>' . $args['currency_name'] . ' (' . $args['currency_symbol'] . ')</strong>' );
1400
 
1401
+ msgid "Update settings for %s"
 
1402
  msgstr ""
1403
 
1404
+ # 'id' => $message_id,
1405
+ # 'text' => sprintf(__('The default currency was changed. In order to show accurate prices in all currencies, you need to update the exchange rates under the %sMulti-currency%s configuration.',
1406
+ # 'woocommerce-multilingual'), '<a href="' . admin_url('admin.php?page=wpml-wcml&tab=multi-currency') . '">', '</a>'),
1407
 
1408
+ msgid "The default currency was changed. In order to show accurate prices in all currencies, you need to update the exchange rates under the %sMulti-currency%s configuration."
1409
  msgstr ""
1410
 
1411
+ # $this->woocommerce_wpml->update_settings( $this->woocommerce_wpml->settings );
1412
+ # wp_send_json_success( array( 'message' => esc_html__( 'Currencies order updated', 'woocommerce-multilingual' ) ) );
1413
+ # }
1414
 
1415
+ msgid "Currencies order updated"
1416
  msgstr ""
1417
 
1418
+ # } elseif ( strpos( $path, $this->wpml_file->fix_dir_separator( $this->get_uploads_path() ) ) === 0 ) {
1419
+ # $name = __( 'Uploads', 'woocommerce-multilingual' ) . ' - ' . $name;
1420
+ # } elseif (
1421
 
1422
+ msgid "Uploads"
1423
  msgstr ""
1424
 
1425
+ # function __construct() {
1426
+ # parent::__construct( 'currency_sel_widget', __('Currency switcher', 'woocommerce-multilingual'), array(), array() );
1427
+ # }
1428
 
1429
+ msgid "Currency switcher"
1430
  msgstr ""
1431
 
1432
+ # $url_to_currency_switcher = esc_url( admin_url( 'admin.php?page=wpml-wcml&tab=multi-currency#currency-switcher/' . (int) $instance[ 'id' ] ) );
1433
+ # $button_text = esc_html__( 'Customize the currency switcher', 'woocommerce-multilingual' );
1434
+ # printf('<p><a class="button button-secondary wcml-cs-widgets-edit-link" href="%s"><span class="otgs-ico-edit"></span> %s</a></p>', $url_to_currency_switcher, $button_text );
1435
 
1436
+ msgid "Customize the currency switcher"
1437
  msgstr ""
1438
 
1439
+ # if( is_admin() ){
1440
+ # $preview = '<i>' . esc_html__("You haven't added any secondary currencies.", 'woocommerce-multilingual') . '</i>';
1441
+ # }else{
1442
 
1443
+ msgid "You haven't added any secondary currencies."
1444
  msgstr ""
1445
 
1446
+ # 'strings' => array(
1447
+ # 'choose' => __( 'Choose a file', 'woocommerce-multilingual' ),
1448
+ # 'save_tooltip' => __( 'At least one of these fields is required: title, content or excerpt', 'woocommerce-multilingual' ),
1449
 
1450
+ msgid "Choose a file"
1451
  msgstr ""
1452
 
1453
+ # 'choose' => __( 'Choose a file', 'woocommerce-multilingual' ),
1454
+ # 'save_tooltip' => __( 'At least one of these fields is required: title, content or excerpt', 'woocommerce-multilingual' ),
1455
+ # 'resign_tooltip'=> __( 'This translation job will no longer be assigned to you. Other translators will be able take it and continue the translation.', 'woocommerce-multilingual')
1456
 
1457
+ msgid "At least one of these fields is required: title, content or excerpt"
1458
  msgstr ""
1459
 
1460
+ # 'save_tooltip' => __( 'At least one of these fields is required: title, content or excerpt', 'woocommerce-multilingual' ),
1461
+ # 'resign_tooltip'=> __( 'This translation job will no longer be assigned to you. Other translators will be able take it and continue the translation.', 'woocommerce-multilingual')
1462
+ # ),
1463
 
1464
+ msgid "This translation job will no longer be assigned to you. Other translators will be able take it and continue the translation."
1465
  msgstr ""
1466
 
1467
+ # echo '<img src="' . WCML_PLUGIN_URL . '/res/images/locked.png" class="wcml_lock_img wcml_lock_icon" alt="' .
1468
+ # __( 'This field is locked for editing because WPML will copy its value from the original language.', 'woocommerce-multilingual' ) .
1469
+ # '" title="' . __( 'This field is locked for editing because WPML will copy its value from the original language.', 'woocommerce-multilingual' ) .
1470
 
1471
+ msgid "This field is locked for editing because WPML will copy its value from the original language."
1472
  msgstr ""
1473
 
1474
+ # echo '<h3 class="wcml_prod_hidden_notice">' .
1475
+ # sprintf( __( "This is a translation of %s. Some of the fields are not editable. It's recommended to use the %s for translating products.",
1476
+ # 'woocommerce-multilingual' ),
1477
 
1478
+ msgid "This is a translation of %s. Some of the fields are not editable. It's recommended to use the %s for translating products."
1479
  msgstr ""
1480
 
1481
+ # '<a data-action="product-translation-dialog" class="js-wcml-dialog-trigger" data-id="' . $original_id . '" data-job_id="" data-language="' . $language . '">' .
1482
+ # __( 'WooCommerce Multilingual products translator', 'woocommerce-multilingual' ) . '</a>' ) . '</h3>';
1483
+ # }
1484
 
1485
+ msgid "WooCommerce Multilingual products translator"
1486
  msgstr ""
1487
 
1488
+ # $link = admin_url('admin.php?page=wpml-wcml');
1489
+ # $name = __('Translate WooCommerce products', 'woocommerce-multilingual');
1490
+ # wp_enqueue_style( 'wcml-pointers');
1491
 
1492
+ msgid "Translate WooCommerce products"
1493
  msgstr ""
1494
 
1495
+ # $link = admin_url('admin.php?page=wpml-wcml&tab=product_shipping_class');
1496
+ # $name = __('Translate shipping classes', 'woocommerce-multilingual');
1497
+ # wp_enqueue_style( 'wcml-pointers');
1498
 
1499
+ msgid "Translate shipping classes"
1500
  msgstr ""
1501
 
1502
+ # $link = admin_url('admin.php?page=wpml-wcml&tab=multi-currency');
1503
+ # $name = __('Configure multi-currency for multilingual sites', 'woocommerce-multilingual');
1504
+ # wp_enqueue_style( 'wcml-pointers');
1505
 
1506
+ msgid "Configure multi-currency for multilingual sites"
1507
  msgstr ""
1508
 
1509
+ # $link = admin_url('admin.php?page=wpml-wcml&tab=slugs');
1510
+ # $name = __('Translate endpoints', 'woocommerce-multilingual');
1511
+ # wp_enqueue_style( 'wcml-pointers');
1512
 
1513
+ msgid "Translate endpoints"
1514
  msgstr ""
1515
 
1516
+ # $this->get_screen_url( $taxonomy->name ),
1517
+ # sprintf ( __( '%s translation', 'woocommerce-multilingual' ), $taxonomy->labels->singular_name )
1518
+ # );
1519
 
1520
+ msgid "%s translation"
1521
  msgstr ""
1522
 
1523
+ # $text = sprintf(
1524
+ # esc_html__( 'Translating %s? Use the %s table for easier translation.', 'woocommerce-multilingual' ),
1525
+ # $taxonomy->labels->name,
1526
 
1527
+ msgid "Translating %s? Use the %s table for easier translation."
1528
  msgstr ""
1529
 
1530
+ # 'woocommerce',
1531
+ # __( 'WooCommerce Multilingual', 'woocommerce-multilingual' ),
1532
+ # __( 'WooCommerce Multilingual', 'woocommerce-multilingual' ),
1533
 
1534
+ msgid "WooCommerce Multilingual"
1535
  msgstr ""
1536
 
1537
+ # $wp_api->add_submenu_page(null,
1538
+ # __('Translations', 'wpml-translation-management'), __('Translations', 'wpml-translation-management'),
1539
+ # 'wpml_operate_woocommerce_multilingual', WPML_TM_FOLDER . '/menu/translations-queue.php', array($WPML_Translation_Management, 'translation_queue_page'));
1540
 
1541
+ msgid "Translations"
1542
  msgstr ""
1543
 
1544
+ # $quick_edit_notice = '<div id="quick_edit_notice" style="display:none;"><p>' .
1545
+ # sprintf( __( "Quick edit is disabled for product translations. It\'s recommended to use the %s for editing products translations. %s",
1546
+ # 'woocommerce-multilingual' ), '<a href="' . admin_url( 'admin.php?page=wpml-wcml&tab=products' ) . '" >' .
1547
 
1548
+ msgid "Quick edit is disabled for product translations. It's recommended to use the %s for editing products translations. %s"
1549
  msgstr ""
1550
 
1551
+ # 'woocommerce-multilingual' ), '<a href="' . admin_url( 'admin.php?page=wpml-wcml&tab=products' ) . '" >' .
1552
+ # __( 'WooCommerce Multilingual products editor', 'woocommerce-multilingual' ) . '</a>',
1553
+ # '<a href="" class="quick_product_trnsl_link" >' . __( 'Edit this product translation', 'woocommerce-multilingual' ) . '</a>'
1554
 
1555
+ msgid "WooCommerce Multilingual products editor"
1556
  msgstr ""
1557
 
1558
+ # __( 'WooCommerce Multilingual products editor', 'woocommerce-multilingual' ) . '</a>',
1559
+ # '<a href="" class="quick_product_trnsl_link" >' . __( 'Edit this product translation', 'woocommerce-multilingual' ) . '</a>'
1560
+ # ) . '</p></div>';
1561
 
1562
+ msgid "Edit this product translation"
1563
  msgstr ""
1564
 
1565
+ # );
1566
+ # $prot_link = sprintf( $template, $href, __( 'How to translate attributes', 'sitepress' ) );
1567
+ # ?>
1568
 
1569
+ msgid "How to translate attributes"
1570
  msgstr ""
1571
 
1572
+ # );
1573
+ # $prot_link = sprintf( $template, $href, __( 'How to translate product categories', 'sitepress' ) );
1574
+ # ?>
1575
 
1576
+ msgid "How to translate product categories"
1577
  msgstr ""
1578
 
1579
+ # $message .= sprintf(
1580
+ # __('The recommended way to translate WooCommerce products is using the
1581
+ # %sWooCommerce Multilingual products translation%s page.
1582
 
1583
+ msgid "The recommended way to translate WooCommerce products is using the\n %sWooCommerce Multilingual products translation%s page.\n Please use this page only for translating elements that are not available in the WooCommerce Multilingual products translation table."
1584
  msgstr ""
1585
 
1586
+ # '<strong><a href="' . admin_url('admin.php?page=wpml-wcml&tab=products') . '">', '</a></strong>');
1587
+ # $message .= '</p><a class="notice-dismiss" href="' . $url . '&wcml_action=dismiss_tm_warning"><span class="screen-reader-text">' . __('Dismiss', 'woocommerce-multilingual') . '</a>';
1588
+ # $message .= '</div>';
1589
 
1590
+ msgid "Dismiss"
1591
  msgstr ""
1592
 
1593
+ # foreach( $menu as $key => $menu_item ) {
1594
+ # if ( $menu_item[ 0 ] == __( 'WooCommerce', 'woocommerce' ) ) {
1595
+ # $menu[ $key ][ 0 ] .= '<span class="wcml-menu-warn"><i class="otgs-ico-warning"></i></span>';
1596
 
1597
+ msgid "WooCommerce"
1598
  msgstr ""
1599
 
1600
+ # 'introduction' => array(
1601
+ # 'name' => __( 'Introduction', 'woocommerce-multilingual' ),
1602
+ # 'view' => array( $this, 'setup_introduction' ),
1603
 
1604
+ msgid "Introduction"
1605
  msgstr ""
1606
 
1607
+ # 'store-pages' => array(
1608
+ # 'name' => __( 'Store Pages', 'woocommerce-multilingual' ),
1609
+ # 'view' => array( $this, 'setup_store_pages' ),
1610
 
1611
+ msgid "Store Pages"
1612
  msgstr ""
1613
 
1614
+ # 'attributes' => array(
1615
+ # 'name' => __( 'Global Attributes', 'woocommerce-multilingual' ),
1616
+ # 'view' => array( $this, 'setup_attributes' ),
1617
 
1618
+ msgid "Global Attributes"
1619
  msgstr ""
1620
 
1621
+ # 'multi-currency' => array(
1622
+ # 'name' => __( 'Multiple Currencies', 'woocommerce-multilingual' ),
1623
+ # 'view' => array( $this, 'setup_multi_currency' ),
1624
 
1625
+ msgid "Multiple Currencies"
1626
  msgstr ""
1627
 
1628
+ # 'ready' => array(
1629
+ # 'name' => __( 'Ready!', 'woocommerce-multilingual' ),
1630
+ # 'view' => array( $this, 'setup_ready' ),
1631
 
1632
+ msgid "Ready!"
1633
  msgstr ""
1634
 
1635
+ # if ( ! wp_verify_nonce( $_GET['_wcml_setup_nonce'], 'wcml_setup_skip_nonce' ) ) {
1636
+ # wp_die( __( 'Action failed. Please refresh the page and retry.', 'woocommerce-multilingual' ) );
1637
+ # }
1638
 
1639
+ msgid "Action failed. Please refresh the page and retry."
1640
  msgstr ""
1641
 
1642
+ # if ( ! current_user_can( 'manage_options' ) ) {
1643
+ # wp_die( esc_html__( "Cheatin' huh?", 'woocommerce' ) );
1644
+ # }
1645
 
1646
+ msgid "Cheatin' huh?"
1647
  msgstr ""
1648
 
1649
+ # <p>
1650
+ # <strong><?php _e('Prepare your WooCommerce store to run multilingual!', 'woocommerce-multilingual'); ?></strong><br />
1651
+ # <?php _e('We need to help you with a few steps to turn your WooCommerce store multilingual. These steps include:', 'woocommerce-multilingual'); ?>
1652
 
1653
+ msgid "Prepare your WooCommerce store to run multilingual!"
1654
  msgstr ""
1655
 
1656
+ # <strong><?php _e('Prepare your WooCommerce store to run multilingual!', 'woocommerce-multilingual'); ?></strong><br />
1657
+ # <?php _e('We need to help you with a few steps to turn your WooCommerce store multilingual. These steps include:', 'woocommerce-multilingual'); ?>
1658
+ # <ul class="wcml-notice-list">
1659
 
1660
+ msgid "We need to help you with a few steps to turn your WooCommerce store multilingual. These steps include:"
1661
  msgstr ""
1662
 
1663
+ # <ul class="wcml-notice-list">
1664
+ # <li><?php _e("Translating the 'store' pages", 'woocommerce-multilingual'); ?></li>
1665
+ # <li><?php _e("Choosing which attributes to make translatable", 'woocommerce-multilingual'); ?></li>
1666
 
1667
+ msgid "Translating the 'store' pages"
1668
  msgstr ""
1669
 
1670
+ # <li><?php _e("Translating the 'store' pages", 'woocommerce-multilingual'); ?></li>
1671
+ # <li><?php _e("Choosing which attributes to make translatable", 'woocommerce-multilingual'); ?></li>
1672
+ # <li><?php _e("Choosing if you need multiple currencies", 'woocommerce-multilingual'); ?></li>
1673
 
1674
+ msgid "Choosing which attributes to make translatable"
1675
  msgstr ""
1676
 
1677
+ # <li><?php _e("Choosing which attributes to make translatable", 'woocommerce-multilingual'); ?></li>
1678
+ # <li><?php _e("Choosing if you need multiple currencies", 'woocommerce-multilingual'); ?></li>
1679
+ # </ul>
1680
 
1681
+ msgid "Choosing if you need multiple currencies"
1682
  msgstr ""
1683
 
1684
+ # <p class="submit">
1685
+ # <a href="<?php echo esc_url( admin_url('admin.php?page=wcml-setup') ); ?>" class="button-primary"><?php _e('Start the Setup Wizard', 'woocommerce-multilingual') ?></a>
1686
+ # <a href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'wcml-setup-skip', 1 ), 'wcml_setup_skip_nonce', '_wcml_setup_nonce' ) ); ?>" class="button-secondary skip"><?php _e('Skip', 'woocommerce-multilingual') ?></a>
1687
 
1688
+ msgid "Start the Setup Wizard"
1689
  msgstr ""
1690
 
1691
+ # <a href="<?php echo esc_url( admin_url('admin.php?page=wcml-setup') ); ?>" class="button-primary"><?php _e('Start the Setup Wizard', 'woocommerce-multilingual') ?></a>
1692
+ # <a href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'wcml-setup-skip', 1 ), 'wcml_setup_skip_nonce', '_wcml_setup_nonce' ) ); ?>" class="button-secondary skip"><?php _e('Skip', 'woocommerce-multilingual') ?></a>
1693
+ # </p>
1694
 
1695
+ msgid "Skip"
1696
  msgstr ""
1697
 
1698
+ # <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
1699
+ # <title><?php _e( 'WooCommerce Multilingual &rsaquo; Setup Wizard', 'woocommerce-multilingual' ); ?></title>
1700
+ # <?php wp_print_scripts( 'wcml-setup' ); ?>
1701
 
1702
+ msgid "WooCommerce Multilingual &rsaquo; Setup Wizard"
1703
  msgstr ""
1704
 
1705
+ # <p>
1706
+ # <?php printf(__("We detected a problem in your WPML configuration: the %sproduct_type%s taxonomy is set as translatable and this would cause problems with translated products. You can fix this in the %sMultilingual Content Setup page%s.", 'woocommerce-multilingual'), '<i>', '</i>','<a href="' . admin_url( 'admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=mcsetup#ml-content-setup-sec-8' ) . '">','</a>'); ?>
1707
+ # </p>
1708
 
1709
+ msgid "We detected a problem in your WPML configuration: the %sproduct_type%s taxonomy is set as translatable and this would cause problems with translated products. You can fix this in the %sMultilingual Content Setup page%s."
1710
  msgstr ""
1711
 
1712
+ # <p>
1713
+ # <?php printf(__("We detected that the %sproduct_type%s field was set incorrectly for some product translations. This happened because the product_type taxonomy was translated. You can fix this in the WooCommerce Multilingual %stroubleshooting page%s.", 'woocommerce-multilingual'), '<i>', '</i>','<a href="' . admin_url( 'admin.php?page=wpml-wcml&tab=troubleshooting' ) . '">','</a>'); ?>
1714
+ # </p>
1715
 
1716
+ msgid "We detected that the %sproduct_type%s field was set incorrectly for some product translations. This happened because the product_type taxonomy was translated. You can fix this in the WooCommerce Multilingual %stroubleshooting page%s."
1717
  msgstr ""
1718
 
1719
+ # <p>
1720
+ # <?php printf( esc_html__( "You've successfully installed %sWooCommerce Multilingual%s. Would you like to see a quick overview?", 'woocommerce-multilingual' ),
1721
+ # '<strong>', '</strong>' ); ?>
1722
 
1723
+ msgid "You've successfully installed %sWooCommerce Multilingual%s. Would you like to see a quick overview?"
1724
  msgstr ""
1725
 
1726
+ # 'https://wpml.org/documentation/related-projects/woocommerce-multilingual/','woocommerce-multilingual','documentation') ); ?>" target="_blank">
1727
+ # <?php _e('Learn how to turn your e-commerce site multilingual', 'woocommerce-multilingual') ?>
1728
+ # </a>
1729
 
1730
+ msgid "Learn how to turn your e-commerce site multilingual"
1731
  msgstr ""
1732
 
1733
+ # if ( !isset($active_languages[$lang]) && $lang != 'all' ) {
1734
+ # throw new WC_API_Exception( '404', sprintf( __( 'Invalid language parameter: %s' ), $lang ), '404' );
1735
+ # }
1736
 
1737
+ msgid "Invalid language parameter: %s"
1738
  msgstr ""
1739
 
1740
+ # if( empty($trid) ){
1741
+ # throw new WC_API_Exception( '404', sprintf( __( 'Source product id not found: %s' ), $data['translation_of'] ), '404' );
1742
+ # }
1743
 
1744
+ msgid "Source product id not found: %s"
1745
  msgstr ""
1746
 
1747
+ #
1748
+ # printf( '<p>'.__('In order to edit custom attributes you need to use the <a href="%s">custom product translation editor</a>', 'woocommerce-multilingual').'</p>', admin_url('admin.php?page=wpml-wcml&tab=products&prid='.$original_product_id ) );
1749
+ # }
1750
 
1751
+ msgid "In order to edit custom attributes you need to use the <a href=\"%s\">custom product translation editor</a>"
1752
  msgstr ""
1753
 
1754
+ # jQuery('input[name="woocommerce_product_category_slug"]').parent().append('<br><i class="icon-warning-sign"><?php
1755
+ # _e('You are using the same value as for the regular category base. This is known to create conflicts resulting in urls not working properly.', 'woocommerce-multilingual') ?></i>');
1756
+ # }
1757
 
1758
+ msgid "You are using the same value as for the regular category base. This is known to create conflicts resulting in urls not working properly."
1759
  msgstr ""
1760
 
1761
+ # if( empty( $permalink_options['product_base'] ) ){
1762
+ # $value = _x( 'product', 'default-slug', 'woocommerce' );
1763
+ # }else{
1764
 
1765
+ msgctxt "default-slug"
1766
+ msgid "product"
1767
  msgstr ""
1768
 
1769
+ # '404',
1770
+ # sprintf( __( 'Invalid language parameter: %s', 'woocommerce-multilingual' ),
1771
+ # $data['lang'] ),
1772
 
1773
+ msgid "Invalid language parameter: %s"
1774
  msgstr ""
1775
 
1776
+ # if( empty($trid) ){
1777
+ # throw new WC_REST_Exception( '404', sprintf( __( 'Source product id not found: %s', 'woocommerce-multilingual' ), $data['translation_of'] ), '404' );
1778
+ # }
1779
 
1780
+ msgid "Source product id not found: %s"
1781
  msgstr ""
1782
 
1783
+ # if( isset( $data['translation_of'] ) ){
1784
+ # throw new WC_REST_Exception( '404', __( 'Using "translation_of" requires providing a "lang" parameter too', 'woocommerce-multilingual' ), '404' );
1785
+ # }
1786
 
1787
+ msgid "Using \"translation_of\" requires providing a \"lang\" parameter too"
1788
  msgstr ""
1789
 
1790
+ #
1791
+ # $dialog_title = __( 'Switching currency?', 'woocommerce-multilingual');
1792
+ # $confirmation_message = __( 'Your cart is not empty! After you switched the currency, all items from the cart will be removed and you have to add them again.', 'woocommerce-multilingual');
1793
 
1794
+ msgid "Switching currency?"
1795
  msgstr ""
1796
 
1797
+ # $dialog_title = __( 'Switching currency?', 'woocommerce-multilingual');
1798
+ # $confirmation_message = __( 'Your cart is not empty! After you switched the currency, all items from the cart will be removed and you have to add them again.', 'woocommerce-multilingual');
1799
+ # $stay_in = sprintf( __( 'Keep using %s', 'woocommerce-multilingual'), $current_currency );
1800
 
1801
+ msgid "Your cart is not empty! After you switched the currency, all items from the cart will be removed and you have to add them again."
1802
  msgstr ""
1803
 
1804
+ # $confirmation_message = __( 'Your cart is not empty! After you switched the currency, all items from the cart will be removed and you have to add them again.', 'woocommerce-multilingual');
1805
+ # $stay_in = sprintf( __( 'Keep using %s', 'woocommerce-multilingual'), $current_currency );
1806
+ # $switch_to = __( 'Proceed', 'woocommerce-multilingual');
1807
 
1808
+ msgid "Keep using %s"
1809
  msgstr ""
1810
 
1811
+ # $stay_in = sprintf( __( 'Keep using %s', 'woocommerce-multilingual'), $current_currency );
1812
+ # $switch_to = __( 'Proceed', 'woocommerce-multilingual');
1813
+ #
1814
 
1815
+ msgid "Proceed"
1816
  msgstr ""
1817
 
1818
+ # $wc_cart_url = esc_url( wc_get_cart_url() );
1819
+ # $message_title = sprintf( esc_html__( 'You cannot add another &quot;%s&quot; to your cart.', 'woocommerce' ), get_the_title( $post_id ) );
1820
+ #
1821
 
1822
+ msgid "You cannot add another &quot;%s&quot; to your cart."
1823
  msgstr ""
1824
 
1825
+ #
1826
+ # $message = '<a href="' . $wc_cart_url . '" class="button wc-forward">' . esc_html__( 'View Cart', 'woocommerce' ) . '</a>';
1827
+ # $message .= ' ' . $message_title;
1828
 
1829
+ msgid "View Cart"
1830
  msgstr ""
1831
 
1832
+ # 'strings' => array(
1833
+ # 'store_pages' => __( 'WooCommerce Store Pages', 'woocommerce-multilingual' ),
1834
+ # 'pages_trnsl' => __( "To run a multilingual e-commerce site, you need to have the WooCommerce shop pages translated to all the site's languages. Once all the pages are installed you can add the translations for them from this menu.", 'woocommerce-multilingual' ),
1835
 
1836
+ msgid "WooCommerce Store Pages"
1837
  msgstr ""
1838
 
1839
+ # 'store_pages' => __( 'WooCommerce Store Pages', 'woocommerce-multilingual' ),
1840
+ # 'pages_trnsl' => __( "To run a multilingual e-commerce site, you need to have the WooCommerce shop pages translated to all the site's languages. Once all the pages are installed you can add the translations for them from this menu.", 'woocommerce-multilingual' ),
1841
+ # 'store_pages' => __( 'WooCommerce Store Pages', 'woocommerce-multilingual' ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1842
 
1843
+ msgid "To run a multilingual e-commerce site, you need to have the WooCommerce shop pages translated to all the site's languages. Once all the pages are installed you can add the translations for them from this menu."
1844
  msgstr ""
1845
 
1846
+ # 'store_pages' => __( 'WooCommerce Store Pages', 'woocommerce-multilingual' ),
1847
+ # 'not_created' => __( 'One or more WooCommerce pages have not been created.', 'woocommerce-multilingual' ),
1848
+ # 'install' => __( 'Install WooCommerce Pages', 'woocommerce-multilingual' ),
1849
 
1850
+ msgid "One or more WooCommerce pages have not been created."
1851
  msgstr ""
1852
 
1853
+ # 'not_created' => __( 'One or more WooCommerce pages have not been created.', 'woocommerce-multilingual' ),
1854
+ # 'install' => __( 'Install WooCommerce Pages', 'woocommerce-multilingual' ),
1855
+ # 'not_exist' => __( 'WooCommerce store pages do not exist for these languages:', 'woocommerce-multilingual' ),
1856
 
1857
+ msgid "Install WooCommerce Pages"
1858
  msgstr ""
1859
 
1860
+ # 'install' => __( 'Install WooCommerce Pages', 'woocommerce-multilingual' ),
1861
+ # 'not_exist' => __( 'WooCommerce store pages do not exist for these languages:', 'woocommerce-multilingual' ),
1862
+ # 'create_transl' => __( 'Create missing translations', 'woocommerce-multilingual' ),
1863
 
1864
+ msgid "WooCommerce store pages do not exist for these languages:"
1865
  msgstr ""
1866
 
1867
+ # 'not_exist' => __( 'WooCommerce store pages do not exist for these languages:', 'woocommerce-multilingual' ),
1868
+ # 'create_transl' => __( 'Create missing translations', 'woocommerce-multilingual' ),
1869
+ # 'translated_wpml' => __( 'These pages are currently being translated by translators via WPML: ', 'woocommerce-multilingual' ),
1870
 
1871
+ msgid "Create missing translations"
1872
  msgstr ""
1873
 
1874
+ # 'create_transl' => __( 'Create missing translations', 'woocommerce-multilingual' ),
1875
+ # 'translated_wpml' => __( 'These pages are currently being translated by translators via WPML: ', 'woocommerce-multilingual' ),
1876
+ # 'translated' => __( "WooCommerce store pages are translated to all the site's languages.", 'woocommerce-multilingual' )
1877
 
1878
+ msgid "These pages are currently being translated by translators via WPML: "
1879
  msgstr ""
1880
 
1881
+ # 'translated_wpml' => __( 'These pages are currently being translated by translators via WPML: ', 'woocommerce-multilingual' ),
1882
+ # 'translated' => __( "WooCommerce store pages are translated to all the site's languages.", 'woocommerce-multilingual' )
1883
  # ),
1884
 
1885
+ msgid "WooCommerce store pages are translated to all the site's languages."
1886
  msgstr ""
1887
 
1888
  # 'strings' => array(
1978
 
1979
  # 'base_not_trnsl' => __( 'Your product permalink base is not translated to:', 'woocommerce-multilingual' ),
1980
  # 'trsl_urls' => __( 'Translate URLs', 'woocommerce-multilingual' ),
1981
+ # 'run_not_en' => __( 'Running WooCommerce multilingual with default language other than English.', 'woocommerce-multilingual' ),
1982
 
1983
  msgid "Translate URLs"
1984
  msgstr ""
1985
 
1986
  # 'trsl_urls' => __( 'Translate URLs', 'woocommerce-multilingual' ),
 
 
 
 
 
 
 
1987
  # 'run_not_en' => __( 'Running WooCommerce multilingual with default language other than English.', 'woocommerce-multilingual' ),
1988
  # 'url_problems' => __( 'This may cause problems with URLs in different languages.', 'woocommerce-multilingual' ),
1989
 
1999
 
2000
  # 'url_problems' => __( 'This may cause problems with URLs in different languages.', 'woocommerce-multilingual' ),
2001
  # 'change_def_lang' => __( 'Change default language', 'woocommerce-multilingual' ),
2002
+ # 'attent_sett' => __( 'There are some settings that require careful attention.', 'woocommerce-multilingual' ),
2003
 
2004
  msgid "Change default language"
2005
  msgstr ""
2006
 
2007
  # 'change_def_lang' => __( 'Change default language', 'woocommerce-multilingual' ),
 
 
 
 
 
 
 
2008
  # 'attent_sett' => __( 'There are some settings that require careful attention.', 'woocommerce-multilingual' ),
2009
  # 'over_sett' => __( 'Some settings from the WooCommerce Multilingual wpml-config.xml file have been overwritten.', 'woocommerce-multilingual' ),
2010
 
2032
  msgid "Multilingual Content Setup"
2033
  msgstr ""
2034
 
2035
+ # 'strings' => array(
2036
+ # 'mc_missing' => __( 'Multi-currency', 'woocommerce-multilingual' ),
2037
+ # 'no_secondary' => __( "You haven't added any secondary currencies.", 'woocommerce-multilingual' ),
2038
+
2039
+ msgid "Multi-currency"
2040
+ msgstr ""
2041
+
2042
+ # 'no_secondary' => __( "You haven't added any secondary currencies.", 'woocommerce-multilingual' ),
2043
+ # 'sec_currencies' => __( 'Secondary currencies: %s', 'woocommerce-multilingual' ),
2044
+ # 'not_enabled' => __( 'Multi-currency is not enabled.', 'woocommerce-multilingual' ),
2045
+
2046
+ msgid "Secondary currencies: %s"
2047
+ msgstr ""
2048
+
2049
+ # 'sec_currencies' => __( 'Secondary currencies: %s', 'woocommerce-multilingual' ),
2050
+ # 'not_enabled' => __( 'Multi-currency is not enabled.', 'woocommerce-multilingual' ),
2051
+ # 'add_cur' => __( 'Add Currencies', 'woocommerce-multilingual' )
2052
+
2053
+ msgid "Multi-currency is not enabled."
2054
+ msgstr ""
2055
+
2056
+ # 'not_enabled' => __( 'Multi-currency is not enabled.', 'woocommerce-multilingual' ),
2057
+ # 'add_cur' => __( 'Add Currencies', 'woocommerce-multilingual' )
2058
+ # )
2059
+
2060
+ msgid "Add Currencies"
2061
+ msgstr ""
2062
+
2063
  # 'strings' => array(
2064
  # 'products_missing' => __( 'Products Missing Translations', 'woocommerce-multilingual' ),
2065
  # 'miss_trnsl_one' => __( '%d %s translation missing.', 'woocommerce-multilingual' ),
2095
  msgid "Right now, there are no products needing translation."
2096
  msgstr ""
2097
 
2098
+ # 'strings' => array(
2099
+ # 'troubl' => __( 'Troubleshooting page', 'woocommerce-multilingual' )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2100
  # )
2101
 
2102
+ msgid "Troubleshooting page"
2103
  msgstr ""
2104
 
2105
  # 'strings' => array(
2137
  msgid "WooCommerce Multilingual depends on several plugins to work. If any required plugin is missing, you should install and activate it."
2138
  msgstr ""
2139
 
2140
+ # 'title' => __('WooCommerce Multilingual', 'woocommerce-multilingual'),
2141
+ # 'required'=> __('Required plugins', 'woocommerce-multilingual'),
2142
+ # 'plugins'=> __('Plugins Status', 'woocommerce-multilingual'),
2143
 
2144
+ msgid "Required plugins"
2145
  msgstr ""
2146
 
2147
+ # 'depends'=> __('WooCommerce Multilingual depends on several plugins to work. If any required plugin is missing, you should install and activate it.', 'woocommerce-multilingual'),
2148
+ # 'old_wpml_link'=> sprintf( __( 'WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href="%s">WPML</a> versions prior 2.0.5.', 'woocommerce-multilingual' ), $this->tracking_link->generate( 'https://wpml.org/' ) ),
2149
+ # 'update_wpml'=> __( 'Update WPML', 'woocommerce-multilingual' ),
2150
 
2151
+ msgid "WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href=\"%s\">WPML</a> versions prior 2.0.5."
2152
  msgstr ""
2153
 
2154
+ # 'old_wpml_link'=> sprintf( __( 'WooCommerce Multilingual is enabled but not effective. It is not compatible with <a href="%s">WPML</a> versions prior 2.0.5.', 'woocommerce-multilingual' ), $this->tracking_link->generate( 'https://wpml.org/' ) ),
2155
+ # 'update_wpml'=> __( 'Update WPML', 'woocommerce-multilingual' ),
2156
+ # 'upgrade_wpml'=> __( 'Upgrade WPML', 'woocommerce-multilingual' ),
2157
 
2158
+ msgid "Update WPML"
2159
  msgstr ""
2160
 
2161
+ # 'update_wpml'=> __( 'Update WPML', 'woocommerce-multilingual' ),
2162
+ # 'upgrade_wpml'=> __( 'Upgrade WPML', 'woocommerce-multilingual' ),
2163
+ # 'get_wpml'=> __( 'Get WPML', 'woocommerce-multilingual' ),
2164
 
2165
+ msgid "Upgrade WPML"
2166
  msgstr ""
2167
 
2168
+ # 'upgrade_wpml'=> __( 'Upgrade WPML', 'woocommerce-multilingual' ),
2169
+ # 'get_wpml'=> __( 'Get WPML', 'woocommerce-multilingual' ),
2170
+ # 'get_wpml_media'=> __( 'Get WPML Media', 'woocommerce-multilingual' ),
2171
 
2172
+ msgid "Get WPML"
2173
  msgstr ""
2174
 
2175
+ # 'get_wpml'=> __( 'Get WPML', 'woocommerce-multilingual' ),
2176
+ # 'get_wpml_media'=> __( 'Get WPML Media', 'woocommerce-multilingual' ),
2177
+ # 'get_wpml_tm'=> __( 'Get WPML Translation Management', 'woocommerce-multilingual' ),
2178
 
2179
+ msgid "Get WPML Media"
2180
  msgstr ""
2181
 
2182
+ # 'get_wpml_media'=> __( 'Get WPML Media', 'woocommerce-multilingual' ),
2183
+ # 'get_wpml_tm'=> __( 'Get WPML Translation Management', 'woocommerce-multilingual' ),
2184
+ # 'get_wpml_st'=> __( 'Get WPML String Translation', 'woocommerce-multilingual' ),
2185
 
2186
+ msgid "Get WPML Translation Management"
2187
  msgstr ""
2188
 
2189
+ # 'get_wpml_tm'=> __( 'Get WPML Translation Management', 'woocommerce-multilingual' ),
2190
+ # 'get_wpml_st'=> __( 'Get WPML String Translation', 'woocommerce-multilingual' ),
2191
+ # 'new_design_wpml_link'=> sprintf( __( 'You are using WooCommerce Multilingual %s. This version includes an important UI redesign for the configuration screens and it requires <a href="%s">WPML %s</a> or higher. Everything still works on the front end now but, in order to configure options for WooCommerce Multilingual, you need to upgrade WPML.', 'woocommerce-multilingual' ), WCML_VERSION, $this->tracking_link->generate( 'https://wpml.org/' ), '3.4' ),
2192
 
2193
+ msgid "Get WPML String Translation"
2194
  msgstr ""
2195
 
2196
+ # 'get_wpml_st'=> __( 'Get WPML String Translation', 'woocommerce-multilingual' ),
2197
+ # 'new_design_wpml_link'=> sprintf( __( 'You are using WooCommerce Multilingual %s. This version includes an important UI redesign for the configuration screens and it requires <a href="%s">WPML %s</a> or higher. Everything still works on the front end now but, in order to configure options for WooCommerce Multilingual, you need to upgrade WPML.', 'woocommerce-multilingual' ), WCML_VERSION, $this->tracking_link->generate( 'https://wpml.org/' ), '3.4' ),
2198
+ # 'wpml' => '<strong>WPML</strong>',
2199
 
2200
+ msgid "You are using WooCommerce Multilingual %s. This version includes an important UI redesign for the configuration screens and it requires <a href=\"%s\">WPML %s</a> or higher. Everything still works on the front end now but, in order to configure options for WooCommerce Multilingual, you need to upgrade WPML."
2201
  msgstr ""
2202
 
2203
+ # 'not_setup' => __( '%s is not set up.', 'woocommerce-multilingual' ),
2204
+ # 'not_inst' => __( '%s is either not installed or not active.', 'woocommerce-multilingual' ),
2205
+ # 'wpml_not_inst' => sprintf( __( '%s is either not installed or not active.', 'woocommerce-multilingual' ),'<strong><a title="' . esc_attr__('The WordPress Multilingual Plugin', 'woocommerce-multilingual') .'" href="' . $this->tracking_link->generate( 'https://wpml.org/' ) . '">WPML</a></strong>' ),
2206
 
2207
+ msgid "%s is either not installed or not active."
2208
  msgstr ""
2209
 
2210
+ # 'wpml_not_inst' => sprintf( __( '%s is either not installed or not active.', 'woocommerce-multilingual' ),'<strong><a title="' . esc_attr__('The WordPress Multilingual Plugin', 'woocommerce-multilingual') .'" href="' . $this->tracking_link->generate( 'https://wpml.org/' ) . '">WPML</a></strong>' ),
2211
+ # 'old_wc' => sprintf( __( '%1$s is installed, but with incorrect version. You need %1$s %2$s or higher. ', 'woocommerce-multilingual' ), '<strong>WooCommerce</strong>', '2.0' ),
2212
+ # 'download_wc' => __( 'Download WooCommerce', 'woocommerce-multilingual' ),
2213
 
2214
+ msgid "%1$s is installed, but with incorrect version. You need %1$s %2$s or higher. "
2215
  msgstr ""
2216
 
2217
+ # 'old_wc' => sprintf( __( '%1$s is installed, but with incorrect version. You need %1$s %2$s or higher. ', 'woocommerce-multilingual' ), '<strong>WooCommerce</strong>', '2.0' ),
2218
+ # 'download_wc' => __( 'Download WooCommerce', 'woocommerce-multilingual' ),
2219
+ # )
2220
 
2221
+ msgid "Download WooCommerce"
2222
  msgstr ""
2223
 
2224
+ # 'not_inst' => __( '%s is either not installed or not active.', 'woocommerce-multilingual' ),
2225
+ # 'wpml_not_inst' => sprintf( __( '%s is either not installed or not active.', 'woocommerce-multilingual' ),'<strong><a title="' . esc_attr__('The WordPress Multilingual Plugin', 'woocommerce-multilingual') .'" href="' . $this->tracking_link->generate( 'https://wpml.org/' ) . '">WPML</a></strong>' ),
2226
+ # 'old_wc' => sprintf( __( '%1$s is installed, but with incorrect version. You need %1$s %2$s or higher. ', 'woocommerce-multilingual' ), '<strong>WooCommerce</strong>', '2.0' ),
2227
 
2228
+ msgid "The WordPress Multilingual Plugin"
2229
  msgstr ""
2230
 
2231
+ # 'content' => $this->content,
2232
+ # 'trnsl_title' => __( 'How to translate this?', 'woocommerce-multilingual' ),
2233
+ # 'doc_link' => $this->doc_link,
2234
 
2235
+ msgid "How to translate this?"
2236
+ msgstr ""
2237
+
2238
+ # 'doc_link' => $this->doc_link,
2239
+ # 'doc_link_text' => __( 'Learn more', 'woocommerce-multilingual' ),
2240
+ # ),
2241
+
2242
+ msgid "Learn more"
2243
+ msgstr ""
2244
+
2245
+ # 'strings' => array(
2246
+ # 'troubl' => __( 'Troubleshooting', 'woocommerce-multilingual' ),
2247
+ # 'backup' => __( 'Please make a backup of your database before you start the synchronization', 'woocommerce-multilingual' ),
2248
+
2249
+ msgid "Troubleshooting"
2250
+ msgstr ""
2251
+
2252
+ # 'troubl' => __( 'Troubleshooting', 'woocommerce-multilingual' ),
2253
+ # 'backup' => __( 'Please make a backup of your database before you start the synchronization', 'woocommerce-multilingual' ),
2254
+ # 'sync' => __( 'Sync variables products', 'woocommerce-multilingual' ),
2255
+
2256
+ msgid "Please make a backup of your database before you start the synchronization"
2257
+ msgstr ""
2258
+
2259
+ # 'backup' => __( 'Please make a backup of your database before you start the synchronization', 'woocommerce-multilingual' ),
2260
+ # 'sync' => __( 'Sync variables products', 'woocommerce-multilingual' ),
2261
+ # 'upd_prod_count' => __( 'Update products count:', 'woocommerce-multilingual' ),
2262
+
2263
+ msgid "Sync variables products"
2264
+ msgstr ""
2265
+
2266
+ # 'sync' => __( 'Sync variables products', 'woocommerce-multilingual' ),
2267
+ # 'upd_prod_count' => __( 'Update products count:', 'woocommerce-multilingual' ),
2268
+ # 'prod_var' => __( 'products with variations', 'woocommerce-multilingual' ),
2269
+
2270
+ msgid "Update products count:"
2271
+ msgstr ""
2272
+
2273
+ # 'upd_prod_count' => __( 'Update products count:', 'woocommerce-multilingual' ),
2274
+ # 'prod_var' => __( 'products with variations', 'woocommerce-multilingual' ),
2275
+ # 'sync_var' => __( 'Sync products variations:', 'woocommerce-multilingual' ),
2276
+
2277
+ msgid "products with variations"
2278
+ msgstr ""
2279
+
2280
+ # 'prod_var' => __( 'products with variations', 'woocommerce-multilingual' ),
2281
+ # 'sync_var' => __( 'Sync products variations:', 'woocommerce-multilingual' ),
2282
+ # 'left' => __( 'left', 'woocommerce-multilingual' ),
2283
+
2284
+ msgid "Sync products variations:"
2285
+ msgstr ""
2286
+
2287
+ # 'sync_var' => __( 'Sync products variations:', 'woocommerce-multilingual' ),
2288
+ # 'left' => __( 'left', 'woocommerce-multilingual' ),
2289
+ # 'sync_gallery' => __( 'Sync products "gallery images":', 'woocommerce-multilingual' ),
2290
+
2291
+ msgid "left"
2292
+ msgstr ""
2293
+
2294
+ # 'left' => __( 'left', 'woocommerce-multilingual' ),
2295
+ # 'sync_gallery' => __( 'Sync products "gallery images":', 'woocommerce-multilingual' ),
2296
+ # 'sync_cat' => __( 'Sync products categories (display type, thumbnail):', 'woocommerce-multilingual' ),
2297
+
2298
+ msgid "Sync products \"gallery images\":"
2299
+ msgstr ""
2300
+
2301
+ # 'sync_gallery' => __( 'Sync products "gallery images":', 'woocommerce-multilingual' ),
2302
+ # 'sync_cat' => __( 'Sync products categories (display type, thumbnail):', 'woocommerce-multilingual' ),
2303
+ # 'dup_terms' => __( 'Duplicate terms ( please select attribute ):', 'woocommerce-multilingual' ),
2304
+
2305
+ msgid "Sync products categories (display type, thumbnail):"
2306
+ msgstr ""
2307
+
2308
+ # 'sync_cat' => __( 'Sync products categories (display type, thumbnail):', 'woocommerce-multilingual' ),
2309
+ # 'dup_terms' => __( 'Duplicate terms ( please select attribute ):', 'woocommerce-multilingual' ),
2310
+ # 'none' => __( 'none', 'woocommerce-multilingual' ),
2311
+
2312
+ msgid "Duplicate terms ( please select attribute ):"
2313
+ msgstr ""
2314
+
2315
+ # 'dup_terms' => __( 'Duplicate terms ( please select attribute ):', 'woocommerce-multilingual' ),
2316
+ # 'none' => __( 'none', 'woocommerce-multilingual' ),
2317
+ # 'start' => __( 'Start', 'woocommerce-multilingual' ),
2318
+
2319
+ msgid "none"
2320
+ msgstr ""
2321
+
2322
+ # 'none' => __( 'none', 'woocommerce-multilingual' ),
2323
+ # 'start' => __( 'Start', 'woocommerce-multilingual' ),
2324
+ # 'delete_terms' => __( 'Fix product_type taxonomy terms', 'woocommerce-multilingual' ),
2325
+
2326
+ msgid "Start"
2327
+ msgstr ""
2328
+
2329
+ # 'start' => __( 'Start', 'woocommerce-multilingual' ),
2330
+ # 'delete_terms' => __( 'Fix product_type taxonomy terms', 'woocommerce-multilingual' ),
2331
+ # 'sync_stock' => __( 'Sync product stock quantity and status ( synchronizing min stock between translations )', 'woocommerce-multilingual' ),
2332
+
2333
+ msgid "Fix product_type taxonomy terms"
2334
+ msgstr ""
2335
+
2336
+ # 'delete_terms' => __( 'Fix product_type taxonomy terms', 'woocommerce-multilingual' ),
2337
+ # 'sync_stock' => __( 'Sync product stock quantity and status ( synchronizing min stock between translations )', 'woocommerce-multilingual' ),
2338
+ # 'product_type_fix_done' => __( 'Done!', 'woocommerce-multilingual' )
2339
+
2340
+ msgid "Sync product stock quantity and status ( synchronizing min stock between translations )"
2341
+ msgstr ""
2342
+
2343
+ # 'sync_stock' => __( 'Sync product stock quantity and status ( synchronizing min stock between translations )', 'woocommerce-multilingual' ),
2344
+ # 'product_type_fix_done' => __( 'Done!', 'woocommerce-multilingual' )
2345
+ # ),
2346
+
2347
+ msgid "Done!"
2348
+ msgstr ""
2349
+
2350
+ # 'strings' => array(
2351
+ # 'notice' => __( 'This page allows you to translate all strings that are being used by WooCommerce in building different type of urls. Translating them enables you to have fully localized urls that match the language of the pages.', 'woocommerce-multilingual' ),
2352
+ # 'notice_defaults' => sprintf( __( 'You can enter or edit your default values on the %sPermalinks settings%s page or, for the endpoints, on the WooCommerce %sAccount settings%s page.',
2353
+
2354
+ msgid "This page allows you to translate all strings that are being used by WooCommerce in building different type of urls. Translating them enables you to have fully localized urls that match the language of the pages."
2355
+ msgstr ""
2356
+
2357
+ # 'notice' => __( 'This page allows you to translate all strings that are being used by WooCommerce in building different type of urls. Translating them enables you to have fully localized urls that match the language of the pages.', 'woocommerce-multilingual' ),
2358
+ # 'notice_defaults' => sprintf( __( 'You can enter or edit your default values on the %sPermalinks settings%s page or, for the endpoints, on the WooCommerce %sAccount settings%s page.',
2359
+ # 'woocommerce-multilingual' ),
2360
+
2361
+ msgid "You can enter or edit your default values on the %sPermalinks settings%s page or, for the endpoints, on the WooCommerce %sAccount settings%s page."
2362
+ msgstr ""
2363
+
2364
+ # ),
2365
+ # 'perm_settings' => '<a href="'.admin_url('options-permalink.php').'" >' .__( 'permalinks settings', 'woocommerce-multilingual' ).'</a>',
2366
+ # 'account_settings' => '<a href="admin.php?page=wc-settings&tab=account" >'.__( 'Account settings', 'woocommerce-multilingual' ).'</a>',
2367
+
2368
+ msgid "permalinks settings"
2369
+ msgstr ""
2370
+
2371
+ # 'perm_settings' => '<a href="'.admin_url('options-permalink.php').'" >' .__( 'permalinks settings', 'woocommerce-multilingual' ).'</a>',
2372
+ # 'account_settings' => '<a href="admin.php?page=wc-settings&tab=account" >'.__( 'Account settings', 'woocommerce-multilingual' ).'</a>',
2373
+ # 'slug_type' => __( 'Slug type', 'woocommerce-multilingual' ),
2374
+
2375
+ msgid "Account settings"
2376
+ msgstr ""
2377
+
2378
+ # 'account_settings' => '<a href="admin.php?page=wc-settings&tab=account" >'.__( 'Account settings', 'woocommerce-multilingual' ).'</a>',
2379
+ # 'slug_type' => __( 'Slug type', 'woocommerce-multilingual' ),
2380
+ # 'orig_slug' => __( 'Original Slug', 'woocommerce-multilingual' ),
2381
+
2382
+ msgid "Slug type"
2383
+ msgstr ""
2384
+
2385
+ # 'slug_type' => __( 'Slug type', 'woocommerce-multilingual' ),
2386
+ # 'orig_slug' => __( 'Original Slug', 'woocommerce-multilingual' ),
2387
+ # 'shop' => __( 'Shop page', 'woocommerce-multilingual' ),
2388
+
2389
+ msgid "Original Slug"
2390
+ msgstr ""
2391
+
2392
+ # 'orig_slug' => __( 'Original Slug', 'woocommerce-multilingual' ),
2393
+ # 'shop' => __( 'Shop page', 'woocommerce-multilingual' ),
2394
+ # 'product' => __( 'Product base', 'woocommerce-multilingual' ),
2395
+
2396
+ msgid "Shop page"
2397
+ msgstr ""
2398
+
2399
+ # 'shop' => __( 'Shop page', 'woocommerce-multilingual' ),
2400
+ # 'product' => __( 'Product base', 'woocommerce-multilingual' ),
2401
+ # 'category' => __( 'Product category base', 'woocommerce-multilingual' ),
2402
+
2403
+ msgid "Product base"
2404
+ msgstr ""
2405
+
2406
+ # 'product' => __( 'Product base', 'woocommerce-multilingual' ),
2407
+ # 'category' => __( 'Product category base', 'woocommerce-multilingual' ),
2408
+ # 'tag' => __( 'Product tag base', 'woocommerce-multilingual' ),
2409
+
2410
+ msgid "Product category base"
2411
+ msgstr ""
2412
+
2413
+ # 'category' => __( 'Product category base', 'woocommerce-multilingual' ),
2414
+ # 'tag' => __( 'Product tag base', 'woocommerce-multilingual' ),
2415
+ # 'attr' => __( 'Product attribute base', 'woocommerce-multilingual' ),
2416
+
2417
+ msgid "Product tag base"
2418
+ msgstr ""
2419
+
2420
+ # 'tag' => __( 'Product tag base', 'woocommerce-multilingual' ),
2421
+ # 'attr' => __( 'Product attribute base', 'woocommerce-multilingual' ),
2422
+ # 'endpoint' => __( 'Endpoint: %s', 'woocommerce-multilingual' ),
2423
+
2424
+ msgid "Product attribute base"
2425
+ msgstr ""
2426
+
2427
+ # 'endpoint' => __( 'Endpoint: %s', 'woocommerce-multilingual' ),
2428
+ # 'attribute_slug' => __( 'Attribute slug: %s', 'woocommerce-multilingual' ),
2429
+ # ),
2430
+
2431
+ msgid "Attribute slug: %s"
2432
+ msgstr ""
2433
+
2434
+ # 'strings' => array(
2435
+ # 'orig' => __( 'Original', 'woocommerce-multilingual' ),
2436
+ # 'trnsl_to' => __( 'Translation to', 'woocommerce-multilingual' ),
2437
+
2438
+ msgid "Original"
2439
+ msgstr ""
2440
+
2441
+ # 'orig' => __( 'Original', 'woocommerce-multilingual' ),
2442
+ # 'trnsl_to' => __( 'Translation to', 'woocommerce-multilingual' ),
2443
+ # 'cancel' => __( 'Cancel', 'woocommerce-multilingual' ),
2444
+
2445
+ msgid "Translation to"
2446
+ msgstr ""
2447
+
2448
+ # 'trnsl_to' => __( 'Translation to', 'woocommerce-multilingual' ),
2449
+ # 'cancel' => __( 'Cancel', 'woocommerce-multilingual' ),
2450
+ # 'save' => __( 'Save', 'woocommerce-multilingual' )
2451
+
2452
+ msgid "Cancel"
2453
+ msgstr ""
2454
+
2455
+ # 'cancel' => __( 'Cancel', 'woocommerce-multilingual' ),
2456
+ # 'save' => __( 'Save', 'woocommerce-multilingual' )
2457
+ # )
2458
+
2459
+ msgid "Save"
2460
+ msgstr ""
2461
+
2462
+ # $args['original_base_value'] = urldecode(get_post($original_shop_id)->post_name);
2463
+ # $args['label_name'] = __('Product Shop Base', 'woocommerce-multilingual');
2464
+ # }else{
2465
+
2466
+ msgid "Product Shop Base"
2467
+ msgstr ""
2468
+
2469
+ # $empty_value->attribute_name = '';
2470
+ # $empty_value->attribute_label = __( '--Attribute--', 'woocommerce-multilingual' );
2471
+ # array_unshift( $product_attributes, $empty_value );
2472
+
2473
+ msgid "--Attribute--"
2474
+ msgstr ""
2475
+
2476
+ # 'strings' => array(
2477
+ # 'no_attributes' => __( 'There are no translatable product attributes defined', 'woocommerce-multilingual' ),
2478
+ # 'select_label' => __('Select the attribute to translate: ', 'woocommerce-multilingual'),
2479
+
2480
+ msgid "There are no translatable product attributes defined"
2481
+ msgstr ""
2482
+
2483
+ # 'no_attributes' => __( 'There are no translatable product attributes defined', 'woocommerce-multilingual' ),
2484
+ # 'select_label' => __('Select the attribute to translate: ', 'woocommerce-multilingual'),
2485
+ # 'loading' => __( 'Loading ...', 'woocommerce-multilingual' )
2486
+
2487
+ msgid "Select the attribute to translate: "
2488
+ msgstr ""
2489
+
2490
+ # 'select_label' => __('Select the attribute to translate: ', 'woocommerce-multilingual'),
2491
+ # 'loading' => __( 'Loading ...', 'woocommerce-multilingual' )
2492
+ # ),
2493
+
2494
+ msgid "Loading ..."
2495
+ msgstr ""
2496
+
2497
+ # 'strings' => array(
2498
+ # 'label' => __( 'Translatable?', 'woocommerce-multilingual' ),
2499
+ # 'description' => __( 'Enable this if you want to translate attribute values with Woocommerce Multilingual', 'woocommerce-multilingual' ),
2500
+
2501
+ msgid "Translatable?"
2502
+ msgstr ""
2503
+
2504
+ # 'label' => __( 'Translatable?', 'woocommerce-multilingual' ),
2505
+ # 'description' => __( 'Enable this if you want to translate attribute values with Woocommerce Multilingual', 'woocommerce-multilingual' ),
2506
+ # 'notice' => __( 'Existing translations and variations associated will be deleted.', 'woocommerce-multilingual' )
2507
+
2508
+ msgid "Enable this if you want to translate attribute values with Woocommerce Multilingual"
2509
+ msgstr ""
2510
+
2511
+ # 'description' => __( 'Enable this if you want to translate attribute values with Woocommerce Multilingual', 'woocommerce-multilingual' ),
2512
+ # 'notice' => __( 'Existing translations and variations associated will be deleted.', 'woocommerce-multilingual' )
2513
+ # )
2514
+
2515
+ msgid "Existing translations and variations associated will be deleted."
2516
+ msgstr ""
2517
+
2518
+ # 'products' => $this->get_removed_products(),
2519
+ # 'title' => sprintf( __( 'Products removed after switching to %s:', 'woocommerce-multilingual'), $switched_to ),
2520
+ # 'clear' => __( 'Clear list', 'woocommerce-multilingual'),
2521
+
2522
+ msgid "Products removed after switching to %s:"
2523
+ msgstr ""
2524
+
2525
+ # 'title' => sprintf( __( 'Products removed after switching to %s:', 'woocommerce-multilingual'), $switched_to ),
2526
+ # 'clear' => __( 'Clear list', 'woocommerce-multilingual'),
2527
+ # 'nonce' => wp_create_nonce( 'wcml_clear_removed_items' ),
2528
+
2529
+ msgid "Clear list"
2530
+ msgstr ""
2531
+
2532
+ # $empty_value->name = '';
2533
+ # $empty_value->label = __( '--Taxonomy--', 'woocommerce-multilingual' );
2534
+ # array_unshift( $this->custom_taxonomies, $empty_value );
2535
+
2536
+ msgid "--Taxonomy--"
2537
+ msgstr ""
2538
+
2539
+ # 'strings' => array(
2540
+ # 'no_taxonomies' => __( 'There are no translatable product custom taxonomies defined', 'woocommerce-multilingual' ),
2541
+ # 'select_label' => __('Select the taxonomy to translate: ', 'woocommerce-multilingual'),
2542
+
2543
+ msgid "There are no translatable product custom taxonomies defined"
2544
+ msgstr ""
2545
+
2546
+ # 'no_taxonomies' => __( 'There are no translatable product custom taxonomies defined', 'woocommerce-multilingual' ),
2547
+ # 'select_label' => __('Select the taxonomy to translate: ', 'woocommerce-multilingual'),
2548
+ # 'loading' => __( 'Loading ...', 'woocommerce-multilingual' )
2549
+
2550
+ msgid "Select the taxonomy to translate: "
2551
+ msgstr ""
2552
+
2553
+ # 'title' => __('WooCommerce Multilingual', 'woocommerce-multilingual'),
2554
+ # 'untranslated_terms'=> __('You have untranslated terms!', 'woocommerce-multilingual')
2555
+ # ),
2556
+
2557
+ msgid "You have untranslated terms!"
2558
+ msgstr ""
2559
+
2560
+ # 'products' => array(
2561
+ # 'title' => __('Products', 'woocommerce-multilingual'),
2562
+ # 'url' => admin_url('admin.php?page=wpml-wcml'),
2563
+
2564
+ msgid "Products"
2565
+ msgstr ""
2566
+
2567
+ # 'product_cat' => array(
2568
+ # 'name' => __('Categories', 'woocommerce-multilingual'),
2569
+ # 'title' => !$this->woocommerce_wpml->terms->is_fully_translated( 'product_cat' ) ? __('You have untranslated terms!', 'woocommerce-multilingual') : '',
2570
+
2571
+ msgid "Categories"
2572
+ msgstr ""
2573
+
2574
+ # 'product_tag' => array(
2575
+ # 'name' => __('Tags', 'woocommerce-multilingual'),
2576
+ # 'title' => !$this->woocommerce_wpml->terms->is_fully_translated( 'product_tag' ) ? __('You have untranslated terms!', 'woocommerce-multilingual') : '',
2577
+
2578
+ msgid "Tags"
2579
+ msgstr ""
2580
+
2581
+ # 'custom_taxonomies' => array(
2582
+ # 'name' => __('Custom Taxonomies', 'woocommerce-multilingual'),
2583
+ # 'active' => $current_tab == 'custom-taxonomies' ? 'nav-tab-active':'',
2584
+
2585
+ msgid "Custom Taxonomies"
2586
+ msgstr ""
2587
+
2588
+ # 'attributes' => array(
2589
+ # 'name' => __('Attributes', 'woocommerce-multilingual'),
2590
+ # 'active' => $current_tab == 'product-attributes' ? 'nav-tab-active':'',
2591
+
2592
+ msgid "Attributes"
2593
+ msgstr ""
2594
+
2595
+ # 'shipping_classes' => array(
2596
+ # 'name' => __('Shipping Classes', 'woocommerce-multilingual'),
2597
+ # 'title' => !$this->woocommerce_wpml->terms->is_fully_translated( 'product_shipping_class' ) ? __('You have untranslated terms!', 'woocommerce-multilingual') : '',
2598
+
2599
+ msgid "Shipping Classes"
2600
+ msgstr ""
2601
+
2602
+ # 'settings' => array(
2603
+ # 'name' => __( 'Settings', 'woocommerce-multilingual' ),
2604
+ # 'active' => $current_tab == 'settings' ? 'nav-tab-active':'',
2605
+
2606
+ msgid "Settings"
2607
+ msgstr ""
2608
+
2609
+ # 'slugs' => array(
2610
+ # 'name' => __( 'Store URLs', 'woocommerce-multilingual' ),
2611
+ # 'active' => $current_tab == 'slugs' ? 'nav-tab-active':'',
2612
+
2613
+ msgid "Store URLs"
2614
+ msgstr ""
2615
+
2616
+ # 'status' => array(
2617
+ # 'name' => __( 'Status', 'woocommerce-multilingual' ),
2618
+ # 'active' => $current_tab == 'status' ? 'nav-tab-active':'',
2619
+
2620
+ msgid "Status"
2621
+ msgstr ""
2622
+
2623
+ # 'on' => !isset( $this->woocommerce_wpml->settings['rate-block'] ),
2624
+ # 'message' => sprintf(__('Thank you for using %sWooCommerce Multilingual%s! You can express your love and
2625
+ # support by %s rating our plugin and saying that %sit works%s for you.', 'woocommerce-wpml'),
2626
+
2627
+ msgid "Thank you for using %sWooCommerce Multilingual%s! You can express your love and\n support by %s rating our plugin and saying that %sit works%s for you."
2628
+ msgstr ""
2629
+
2630
+ # ),
2631
+ # 'hide_text' => __('Hide','woocommerce-multilingual'),
2632
+ # 'nonce' => wp_nonce_field('wcml_settings', 'wcml_settings_nonce', true, false)
2633
+
2634
+ msgid "Hide"
2635
+ msgstr ""
2636
+
2637
+ # 'strings' => array(
2638
+ # 'use_custom' => __( 'Use custom settings for translations download files', 'woocommerce-multilingual' ),
2639
+ # 'use_same' => __( 'Use the same files for translations', 'woocommerce-multilingual' ),
2640
+
2641
+ msgid "Use custom settings for translations download files"
2642
+ msgstr ""
2643
+
2644
+ # 'use_custom' => __( 'Use custom settings for translations download files', 'woocommerce-multilingual' ),
2645
+ # 'use_same' => __( 'Use the same files for translations', 'woocommerce-multilingual' ),
2646
+ # 'separate' => __( 'Add separate download files for translations when you translate this product', 'woocommerce-multilingual' )
2647
+
2648
+ msgid "Use the same files for translations"
2649
+ msgstr ""
2650
+
2651
+ # 'use_same' => __( 'Use the same files for translations', 'woocommerce-multilingual' ),
2652
+ # 'separate' => __( 'Add separate download files for translations when you translate this product', 'woocommerce-multilingual' )
2653
+ # )
2654
+
2655
+ msgid "Add separate download files for translations when you translate this product"
2656
+ msgstr ""
2657
+
2658
+ # $this->custom_prices_fields = apply_filters( 'wcml_custom_prices_fields', array( '_regular_price', '_sale_price' ), $product_id );
2659
+ # $this->custom_prices_fields_labels = apply_filters( 'wcml_custom_prices_fields_labels', array( '_regular_price' => __( 'Regular Price', 'woocommerce-multilingual' ), '_sale_price' => __( 'Sale Price', 'woocommerce-multilingual' ) ), $product_id );
2660
+ # }
2661
+
2662
+ msgid "Regular Price"
2663
+ msgstr ""
2664
+
2665
+ # $this->custom_prices_fields = apply_filters( 'wcml_custom_prices_fields', array( '_regular_price', '_sale_price' ), $product_id );
2666
+ # $this->custom_prices_fields_labels = apply_filters( 'wcml_custom_prices_fields_labels', array( '_regular_price' => __( 'Regular Price', 'woocommerce-multilingual' ), '_sale_price' => __( 'Sale Price', 'woocommerce-multilingual' ) ), $product_id );
2667
+ # }
2668
+
2669
+ msgid "Sale Price"
2670
+ msgstr ""
2671
+
2672
+ # 'strings' => apply_filters( 'wcml_custom_prices_strings', array(
2673
+ # 'not_set' => sprintf( __( 'Multi-currency is enabled but no secondary currencies have been set. %sAdd secondary currencies%s.',
2674
+ # 'woocommerce-multilingual' ), '<a href="' . admin_url('admin.php?page=wpml-wcml&tab=multi-currency') . '">', '</a>' ),
2675
+
2676
+ msgid "Multi-currency is enabled but no secondary currencies have been set. %sAdd secondary currencies%s."
2677
+ msgstr ""
2678
+
2679
+ # 'woocommerce-multilingual' ), '<a href="' . admin_url('admin.php?page=wpml-wcml&tab=multi-currency') . '">', '</a>' ),
2680
+ # 'calc_auto' => __( 'Calculate prices in other currencies automatically', 'woocommerce-multilingual' ),
2681
+ # 'see_prices' => __( 'Click to see the prices in the other currencies as they are currently shown on the front end.', 'woocommerce-multilingual' ),
2682
+
2683
+ msgid "Calculate prices in other currencies automatically"
2684
+ msgstr ""
2685
+
2686
+ # 'calc_auto' => __( 'Calculate prices in other currencies automatically', 'woocommerce-multilingual' ),
2687
+ # 'see_prices' => __( 'Click to see the prices in the other currencies as they are currently shown on the front end.', 'woocommerce-multilingual' ),
2688
+ # 'show' => __( 'Show', 'woocommerce-multilingual' ),
2689
+
2690
+ msgid "Click to see the prices in the other currencies as they are currently shown on the front end."
2691
+ msgstr ""
2692
+
2693
+ # 'see_prices' => __( 'Click to see the prices in the other currencies as they are currently shown on the front end.', 'woocommerce-multilingual' ),
2694
+ # 'show' => __( 'Show', 'woocommerce-multilingual' ),
2695
+ # 'hide' => __( 'Hide', 'woocommerce-multilingual' ),
2696
+
2697
+ msgid "Show"
2698
+ msgstr ""
2699
+
2700
+ # 'hide' => __( 'Hide', 'woocommerce-multilingual' ),
2701
+ # 'set_manually' => __( 'Set prices in other currencies manually', 'woocommerce-multilingual' ),
2702
+ # 'enter_prices' => __( 'Enter prices in other currencies', 'woocommerce-multilingual' ),
2703
+
2704
+ msgid "Set prices in other currencies manually"
2705
+ msgstr ""
2706
+
2707
+ # 'set_manually' => __( 'Set prices in other currencies manually', 'woocommerce-multilingual' ),
2708
+ # 'enter_prices' => __( 'Enter prices in other currencies', 'woocommerce-multilingual' ),
2709
+ # 'hide_prices' => __( 'Hide prices in other currencies', 'woocommerce-multilingual' ),
2710
+
2711
+ msgid "Enter prices in other currencies"
2712
+ msgstr ""
2713
+
2714
+ # 'enter_prices' => __( 'Enter prices in other currencies', 'woocommerce-multilingual' ),
2715
+ # 'hide_prices' => __( 'Hide prices in other currencies', 'woocommerce-multilingual' ),
2716
+ # 'det_auto' => __( 'Determined automatically based on exchange rate', 'woocommerce-multilingual' ),
2717
+
2718
+ msgid "Hide prices in other currencies"
2719
+ msgstr ""
2720
+
2721
+ # 'hide_prices' => __( 'Hide prices in other currencies', 'woocommerce-multilingual' ),
2722
+ # 'det_auto' => __( 'Determined automatically based on exchange rate', 'woocommerce-multilingual' ),
2723
+ # '_regular_price' => __( 'Regular Price', 'woocommerce-multilingual' ),
2724
+
2725
+ msgid "Determined automatically based on exchange rate"
2726
+ msgstr ""
2727
+
2728
+ # '_sale_price' => __( 'Sale Price', 'woocommerce-multilingual' ),
2729
+ # 'schedule' => __( 'Schedule', 'woocommerce-multilingual' ),
2730
+ # 'same_as_def' => __( 'Same as default currency', 'woocommerce-multilingual' ),
2731
+
2732
+ msgid "Schedule"
2733
+ msgstr ""
2734
+
2735
+ # 'schedule' => __( 'Schedule', 'woocommerce-multilingual' ),
2736
+ # 'same_as_def' => __( 'Same as default currency', 'woocommerce-multilingual' ),
2737
+ # 'set_dates' => __( 'Set dates', 'woocommerce-multilingual' ),
2738
+
2739
+ msgid "Same as default currency"
2740
+ msgstr ""
2741
+
2742
+ # 'same_as_def' => __( 'Same as default currency', 'woocommerce-multilingual' ),
2743
+ # 'set_dates' => __( 'Set dates', 'woocommerce-multilingual' ),
2744
+ # 'collapse' => __( 'Collapse', 'woocommerce-multilingual' ),
2745
+
2746
+ msgid "Set dates"
2747
+ msgstr ""
2748
+
2749
+ # 'set_dates' => __( 'Set dates', 'woocommerce-multilingual' ),
2750
+ # 'collapse' => __( 'Collapse', 'woocommerce-multilingual' ),
2751
+ # 'from' => __( 'From&hellip;', 'woocommerce-multilingual' ),
2752
+
2753
+ msgid "Collapse"
2754
+ msgstr ""
2755
+
2756
+ # 'collapse' => __( 'Collapse', 'woocommerce-multilingual' ),
2757
+ # 'from' => __( 'From&hellip;', 'woocommerce-multilingual' ),
2758
+ # 'to' => __( 'To&hellip;', 'woocommerce-multilingual' ),
2759
+
2760
+ msgid "From&hellip;"
2761
+ msgstr ""
2762
+
2763
+ # 'from' => __( 'From&hellip;', 'woocommerce-multilingual' ),
2764
+ # 'to' => __( 'To&hellip;', 'woocommerce-multilingual' ),
2765
+ # 'enter_price' => __( 'Please enter in a value less than the regular price', 'woocommerce-multilingual' ) ),
2766
+
2767
+ msgid "To&hellip;"
2768
+ msgstr ""
2769
+
2770
+ # 'to' => __( 'To&hellip;', 'woocommerce-multilingual' ),
2771
+ # 'enter_price' => __( 'Please enter in a value less than the regular price', 'woocommerce-multilingual' ) ),
2772
+ # $this->product_id
2773
+
2774
+ msgid "Please enter in a value less than the regular price"
2775
+ msgstr ""
2776
+
2777
+ # 'headers' => array(
2778
+ # 'enable_disable' => __( 'Enable/disable', 'woocommerce-multilingual' ),
2779
+ # 'currencies' => __( 'Currencies', 'woocommerce-multilingual' ),
2780
+
2781
+ msgid "Enable/disable"
2782
+ msgstr ""
2783
+
2784
+ # 'enable_disable' => __( 'Enable/disable', 'woocommerce-multilingual' ),
2785
+ # 'currencies' => __( 'Currencies', 'woocommerce-multilingual' ),
2786
+ # ),
2787
+
2788
+ msgid "Currencies"
2789
+ msgstr ""
2790
+
2791
+ # ),
2792
+ # 'add_currency_button' => __( 'Add currency', 'woocommerce-multilingual' ),
2793
+ # 'currencies_table' => array(
2794
+
2795
+ msgid "Add currency"
2796
+ msgstr ""
2797
+
2798
+ # 'currencies_table' => array(
2799
+ # 'head_currency' => __('Currency', 'woocommerce-multilingual'),
2800
+ # 'head_rate' => __('Rate', 'woocommerce-multilingual'),
2801
+
2802
+ msgid "Currency"
2803
+ msgstr ""
2804
+
2805
+ # 'head_currency' => __('Currency', 'woocommerce-multilingual'),
2806
+ # 'head_rate' => __('Rate', 'woocommerce-multilingual'),
2807
+ # 'default' => __( 'default', 'woocommerce-multilingual' ),
2808
+
2809
+ msgid "Rate"
2810
+ msgstr ""
2811
+
2812
+ # 'head_rate' => __('Rate', 'woocommerce-multilingual'),
2813
+ # 'default' => __( 'default', 'woocommerce-multilingual' ),
2814
+ # 'edit' => __( 'Edit', 'woocommerce-multilingual' ),
2815
+
2816
+ msgid "default"
2817
+ msgstr ""
2818
+
2819
+ # 'default' => __( 'default', 'woocommerce-multilingual' ),
2820
+ # 'edit' => __( 'Edit', 'woocommerce-multilingual' ),
2821
+ # 'default_currency' => __( 'Default currency', 'woocommerce-multilingual' ),
2822
+
2823
+ msgid "Edit"
2824
+ msgstr ""
2825
+
2826
+ # 'edit' => __( 'Edit', 'woocommerce-multilingual' ),
2827
+ # 'default_currency' => __( 'Default currency', 'woocommerce-multilingual' ),
2828
+ # 'default_cur_tip' => __( 'Switch to this currency when switching language in the front-end', 'woocommerce-multilingual' ),
2829
+
2830
+ msgid "Default currency"
2831
+ msgstr ""
2832
+
2833
+ # 'default_currency' => __( 'Default currency', 'woocommerce-multilingual' ),
2834
+ # 'default_cur_tip' => __( 'Switch to this currency when switching language in the front-end', 'woocommerce-multilingual' ),
2835
+ # 'keep_currency' => __( 'Keep', 'woocommerce-multilingual' ),
2836
+
2837
+ msgid "Switch to this currency when switching language in the front-end"
2838
+ msgstr ""
2839
+
2840
+ # 'default_cur_tip' => __( 'Switch to this currency when switching language in the front-end', 'woocommerce-multilingual' ),
2841
+ # 'keep_currency' => __( 'Keep', 'woocommerce-multilingual' ),
2842
+ # 'delete' => __( 'Delete', 'woocommerce-multilingual' ),
2843
+
2844
+ msgid "Keep"
2845
+ msgstr ""
2846
+
2847
+ # 'keep_currency' => __( 'Keep', 'woocommerce-multilingual' ),
2848
+ # 'delete' => __( 'Delete', 'woocommerce-multilingual' ),
2849
+ # 'help_title' => __( 'Currencies to display for each language', 'woocommerce-multilingual' ),
2850
+
2851
+ msgid "Delete"
2852
+ msgstr ""
2853
+
2854
+ # 'delete' => __( 'Delete', 'woocommerce-multilingual' ),
2855
+ # 'help_title' => __( 'Currencies to display for each language', 'woocommerce-multilingual' ),
2856
+ # 'enable_for' => __('Enable %s for %s', 'woocommerce-multilingual'),
2857
+
2858
+ msgid "Currencies to display for each language"
2859
+ msgstr ""
2860
+
2861
+ # 'help_title' => __( 'Currencies to display for each language', 'woocommerce-multilingual' ),
2862
+ # 'enable_for' => __('Enable %s for %s', 'woocommerce-multilingual'),
2863
+ # 'disable_for' => __('Disable %s for %s', 'woocommerce-multilingual')
2864
+
2865
+ msgid "Enable %s for %s"
2866
+ msgstr ""
2867
+
2868
+ # 'enable_for' => __('Enable %s for %s', 'woocommerce-multilingual'),
2869
+ # 'disable_for' => __('Disable %s for %s', 'woocommerce-multilingual')
2870
+ # )
2871
+
2872
+ msgid "Disable %s for %s"
2873
+ msgstr ""
2874
+
2875
+ # 'wc_currencies' => $this->wc_currencies,
2876
+ # 'positioned_price' => sprintf( __( ' (%s)', 'woocommerce-multilingual' ), $this->get_positioned_price( $this->wc_currency ) ) ,
2877
+ #
2878
+
2879
+ msgid " (%s)"
2880
  msgstr ""
2881
 
2882
+ #
2883
+ # 'wc_currency_empty_warn' => sprintf(__('The multi-currency mode cannot be enabled as a specific currency was not set. Go to the %sWooCommerce settings%s page and select the default currency for your store.',
2884
+ # 'woocommerce-multilingual'), '<a href="' . admin_url('admin.php?page=wc-settings') . '">', '</a>'),
2885
 
2886
+ msgid "The multi-currency mode cannot be enabled as a specific currency was not set. Go to the %sWooCommerce settings%s page and select the default currency for your store."
2887
  msgstr ""
2888
 
2889
+ # 'mco_disabled' => empty($wc_currency),
2890
+ # 'label_mco' => __( "Enable the multi-currency mode", 'woocommerce-multilingual' ),
2891
+ # 'label_mco_learn_url' => $this->tracking_link->generate( 'https://wpml.org/documentation/related-projects/woocommerce-multilingual/multi-currency-support-woocommerce/', 'multi-currency-support-woocommerce', 'documentation' ),
2892
 
2893
+ msgid "Enable the multi-currency mode"
2894
  msgstr ""
2895
 
2896
+ # 'checked' => $this->woocommerce_wpml->settings['display_custom_prices'] == 1,
2897
+ # 'label' => __( 'Show only products with custom prices in secondary currencies', 'woocommerce-multilingual' ),
2898
+ # 'tip' => __( 'When this option is on, when you switch to a secondary currency on the front end, only the products with custom prices in that currency are being displayed. Products with prices determined based on the exchange rate are hidden.', 'woocommerce-multilingual' )
2899
 
2900
+ msgid "Show only products with custom prices in secondary currencies"
2901
  msgstr ""
2902
 
2903
+ # 'label' => __( 'Show only products with custom prices in secondary currencies', 'woocommerce-multilingual' ),
2904
+ # 'tip' => __( 'When this option is on, when you switch to a secondary currency on the front end, only the products with custom prices in that currency are being displayed. Products with prices determined based on the exchange rate are hidden.', 'woocommerce-multilingual' )
2905
+ # ),
2906
 
2907
+ msgid "When this option is on, when you switch to a secondary currency on the front end, only the products with custom prices in that currency are being displayed. Products with prices determined based on the exchange rate are hidden."
2908
  msgstr ""
2909
 
2910
+ # ),
2911
+ # 'submit' => __( 'Save changes', 'woocommerce-multilingual' ),
2912
+ # 'navigate_warn' => __( 'The changes you made will be lost if you navigate away from this page.', 'woocommerce-multilingual' ),
2913
 
2914
+ msgid "Save changes"
2915
  msgstr ""
2916
 
2917
+ # 'submit' => __( 'Save changes', 'woocommerce-multilingual' ),
2918
+ # 'navigate_warn' => __( 'The changes you made will be lost if you navigate away from this page.', 'woocommerce-multilingual' ),
2919
+ # 'cur_lang_warn' => __( 'At least one currency must be enabled for this language!', 'woocommerce-multilingual' )
2920
 
2921
+ msgid "The changes you made will be lost if you navigate away from this page."
2922
  msgstr ""
2923
 
2924
+ # 'navigate_warn' => __( 'The changes you made will be lost if you navigate away from this page.', 'woocommerce-multilingual' ),
2925
+ # 'cur_lang_warn' => __( 'At least one currency must be enabled for this language!', 'woocommerce-multilingual' )
2926
+ #
2927
 
2928
+ msgid "At least one currency must be enabled for this language!"
2929
  msgstr ""
2930
 
2931
+ # 'headers' => array(
2932
+ # 'main' => __('Currency switcher options', 'woocommerce-multilingual'),
2933
+ # 'main_desc' => __('All currency switchers in your site are affected by the settings in this section.', 'woocommerce-multilingual'),
2934
 
2935
+ msgid "Currency switcher options"
2936
  msgstr ""
2937
 
2938
+ # 'main' => __('Currency switcher options', 'woocommerce-multilingual'),
2939
+ # 'main_desc' => __('All currency switchers in your site are affected by the settings in this section.', 'woocommerce-multilingual'),
2940
+ # 'order' => __( 'Order of currencies', 'woocommerce-multilingual' ),
2941
 
2942
+ msgid "All currency switchers in your site are affected by the settings in this section."
2943
  msgstr ""
2944
 
2945
+ # 'main_desc' => __('All currency switchers in your site are affected by the settings in this section.', 'woocommerce-multilingual'),
2946
+ # 'order' => __( 'Order of currencies', 'woocommerce-multilingual' ),
2947
+ # 'additional_css' => __('Additional CSS', 'woocommerce-multilingual'),
2948
 
2949
+ msgid "Order of currencies"
2950
  msgstr ""
2951
 
2952
+ # 'order' => __( 'Order of currencies', 'woocommerce-multilingual' ),
2953
+ # 'additional_css' => __('Additional CSS', 'woocommerce-multilingual'),
2954
+ # 'widget' => __('Widget Currency Switcher', 'woocommerce-multilingual'),
2955
 
2956
+ msgid "Additional CSS"
2957
  msgstr ""
2958
 
2959
+ # 'additional_css' => __('Additional CSS', 'woocommerce-multilingual'),
2960
+ # 'widget' => __('Widget Currency Switcher', 'woocommerce-multilingual'),
2961
+ # 'product_page' => __('Product page Currency Switcher', 'woocommerce-multilingual'),
2962
 
2963
+ msgid "Widget Currency Switcher"
2964
  msgstr ""
2965
 
2966
+ # 'widget' => __('Widget Currency Switcher', 'woocommerce-multilingual'),
2967
+ # 'product_page' => __('Product page Currency Switcher', 'woocommerce-multilingual'),
2968
+ # 'preview' => __('Preview', 'woocommerce-multilingual'),
2969
 
2970
+ msgid "Product page Currency Switcher"
2971
  msgstr ""
2972
 
2973
+ # 'product_page' => __('Product page Currency Switcher', 'woocommerce-multilingual'),
2974
+ # 'preview' => __('Preview', 'woocommerce-multilingual'),
2975
+ # 'position' => __('Position', 'woocommerce-multilingual'),
2976
 
2977
+ msgid "Preview"
2978
+ msgstr ""
2979
+
2980
+ # 'preview' => __('Preview', 'woocommerce-multilingual'),
2981
+ # 'position' => __('Position', 'woocommerce-multilingual'),
2982
+ # 'actions' => __('Actions', 'woocommerce-multilingual'),
2983
+
2984
+ msgid "Position"
2985
+ msgstr ""
2986
+
2987
+ # 'position' => __('Position', 'woocommerce-multilingual'),
2988
+ # 'actions' => __('Actions', 'woocommerce-multilingual'),
2989
+ # 'action' => __('Action', 'woocommerce-multilingual'),
2990
+
2991
+ msgid "Actions"
2992
+ msgstr ""
2993
+
2994
+ # 'actions' => __('Actions', 'woocommerce-multilingual'),
2995
+ # 'action' => __('Action', 'woocommerce-multilingual'),
2996
+ # 'delete' => __('Delete', 'woocommerce-multilingual'),
2997
+
2998
+ msgid "Action"
2999
+ msgstr ""
3000
+
3001
+ # 'delete' => __('Delete', 'woocommerce-multilingual'),
3002
+ # 'edit' => __('Edit currency switcher', 'woocommerce-multilingual'),
3003
+ # 'add_widget' => __('Add a new currency switcher to a widget area', 'woocommerce-multilingual'),
3004
+
3005
+ msgid "Edit currency switcher"
3006
  msgstr ""
3007
 
3008
+ # 'edit' => __('Edit currency switcher', 'woocommerce-multilingual'),
3009
+ # 'add_widget' => __('Add a new currency switcher to a widget area', 'woocommerce-multilingual'),
3010
  # ),
 
 
3011
 
3012
+ msgid "Add a new currency switcher to a widget area"
3013
  msgstr ""
3014
 
3015
+ # 'available_sidebars' => $this->woocommerce_wpml->multi_currency->currency_switcher->get_available_sidebars(),
3016
+ # 'preview_text' => __( 'Currency switcher preview', 'woocommerce-multilingual' ),
3017
+ # 'order' => !isset( $this->woocommerce_wpml->settings['currencies_order'] ) ?
3018
 
3019
+ msgid "Currency switcher preview"
3020
+ msgstr ""
3021
+
3022
+ # 'delete_nonce' => wp_create_nonce( 'delete_currency_switcher' ),
3023
+ # 'order_tip' => __( 'Drag and drop the currencies to change their order', 'woocommerce-multilingual' ),
3024
+ # 'visibility_label' => __('Show a currency selector on the product page template', 'woocommerce-multilingual'),
3025
+
3026
+ msgid "Drag and drop the currencies to change their order"
3027
+ msgstr ""
3028
+
3029
+ # 'order_tip' => __( 'Drag and drop the currencies to change their order', 'woocommerce-multilingual' ),
3030
+ # 'visibility_label' => __('Show a currency selector on the product page template', 'woocommerce-multilingual'),
3031
+ # 'visibility_on' => isset($this->woocommerce_wpml->settings['currency_switcher_product_visibility']) ?
3032
+
3033
+ msgid "Show a currency selector on the product page template"
3034
+ msgstr ""
3035
+
3036
+ # if( $switcher_id == 'product'){
3037
+ # $dialog_title = __('Edit Product Currency Switcher', 'woocommerce-multilingual');
3038
+ # }elseif( $switcher_id == 'new_widget' ){
3039
+
3040
+ msgid "Edit Product Currency Switcher"
3041
+ msgstr ""
3042
+
3043
+ # }elseif( $switcher_id == 'new_widget' ){
3044
+ # $dialog_title = __('New Widget Area Currency Switcher', 'woocommerce-multilingual');
3045
+ # }else{
3046
+
3047
+ msgid "New Widget Area Currency Switcher"
3048
+ msgstr ""
3049
+
3050
+ # }else{
3051
+ # $dialog_title = sprintf( __('Edit %s Currency Switcher', 'woocommerce-multilingual'), $widget_currency_switchers[ $switcher_id ]['name'] );
3052
+ # }
3053
+
3054
+ msgid "Edit %s Currency Switcher"
3055
  msgstr ""
3056
 
3057
  # 'form' => array(
3070
 
3071
  # 'label' => __( 'Exchange Rate', 'woocommerce-multilingual' ),
3072
  # 'only_numeric' => __( 'Only numeric', 'woocommerce-multilingual' ),
3073
+ # 'min' => '0.01',
3074
 
3075
  msgid "Only numeric"
3076
  msgstr ""
3189
 
3190
  # 'nearest' => __( 'Nearest', 'woocommerce-multilingual' ),
3191
  # 'increment' => __( 'Increment for nearest integer', 'woocommerce-multilingual' ),
3192
+ #
3193
 
3194
  msgid "Increment for nearest integer"
3195
  msgstr ""
3196
 
3197
+ #
3198
  # 'rounding_tooltip' => sprintf( __("Round the converted price to the closest integer. %se.g. 15.78 becomes 16.00", 'woocommerce-multilingual'), '<br />' ),
3199
  # 'increment_tooltip' => sprintf( __('The resulting price will be an increment of this value after initial rounding.%se.g.:', 'woocommerce-multilingual'), '<br>' ) . '<br />' .
3200
 
3250
  msgid "Autosubtract amount"
3251
  msgstr ""
3252
 
3253
+ #
3254
+ # 'number_error' => __( 'Please enter a valid number', 'woocommerce-multilingual' ),
 
 
 
 
 
3255
  # 'cancel' => __( 'Cancel', 'woocommerce-multilingual' ),
 
 
3256
 
3257
+ msgid "Please enter a valid number"
3258
  msgstr ""
3259
 
3260
  # 'automatic_rates' => $exchange_rates_automatic,
3264
  msgid "Exchange rate updated automatically from %s"
3265
  msgstr ""
3266
 
3267
+ # $last_updated = empty( $this->settings['last_updated'] ) ?
3268
+ # '<i>' . __( 'never', 'woocommerce-multilingual' ) . '</i>' :
3269
+ # date_i18n( 'F j, Y g:i a', $this->settings['last_updated'] );
3270
 
3271
+ msgid "never"
3272
  msgstr ""
3273
 
3274
+ #
3275
+ # 'header' => __( 'Automatic Exchange Rates', 'woocommerce-multilingual' ),
3276
+ # 'no_currencies' => __( "You haven't added any secondary currencies.", 'woocommerce-multilingual' ),
3277
 
3278
+ msgid "Automatic Exchange Rates"
3279
  msgstr ""
3280
 
3281
+ # 'no_currencies' => __( "You haven't added any secondary currencies.", 'woocommerce-multilingual' ),
3282
+ # 'enable_automatic' => __( 'Enable automatic exchange rates', 'woocommerce-multilingual' ),
3283
+ # 'services_label' => __( 'Exchange rates source', 'woocommerce-multilingual' ),
3284
 
3285
+ msgid "Enable automatic exchange rates"
3286
  msgstr ""
3287
 
3288
+ # 'enable_automatic' => __( 'Enable automatic exchange rates', 'woocommerce-multilingual' ),
3289
+ # 'services_label' => __( 'Exchange rates source', 'woocommerce-multilingual' ),
3290
+ # 'lifting_label' => __( 'Lifting charge', 'woocommerce-multilingual' ),
3291
 
3292
+ msgid "Exchange rates source"
3293
  msgstr ""
3294
 
3295
+ # 'services_label' => __( 'Exchange rates source', 'woocommerce-multilingual' ),
3296
+ # 'lifting_label' => __( 'Lifting charge', 'woocommerce-multilingual' ),
3297
+ # 'lifting_details1' => __( 'The lifting charge adjusts the exchange rate provided by the selected service before it is saved. The exchange rates displayed in the table above include the lifting charge.', 'woocommerce-multilingual' ),
3298
 
3299
+ msgid "Lifting charge"
3300
  msgstr ""
3301
 
3302
+ # 'lifting_label' => __( 'Lifting charge', 'woocommerce-multilingual' ),
3303
+ # 'lifting_details1' => __( 'The lifting charge adjusts the exchange rate provided by the selected service before it is saved. The exchange rates displayed in the table above include the lifting charge.', 'woocommerce-multilingual' ),
3304
+ # 'lifting_details2' => __( 'Exchange rate = %s exchange rate x (1 + lifting charge / 100)', 'woocommerce-multilingual' ),
3305
 
3306
+ msgid "The lifting charge adjusts the exchange rate provided by the selected service before it is saved. The exchange rates displayed in the table above include the lifting charge."
3307
  msgstr ""
3308
 
3309
+ # 'lifting_details1' => __( 'The lifting charge adjusts the exchange rate provided by the selected service before it is saved. The exchange rates displayed in the table above include the lifting charge.', 'woocommerce-multilingual' ),
3310
+ # 'lifting_details2' => __( 'Exchange rate = %s exchange rate x (1 + lifting charge / 100)', 'woocommerce-multilingual' ),
3311
+ # 'services_api' => __( 'API key (required)', 'woocommerce-multilingual' ),
3312
 
3313
+ msgid "Exchange rate = %s exchange rate x (1 + lifting charge / 100)"
3314
  msgstr ""
3315
 
3316
+ # 'lifting_details2' => __( 'Exchange rate = %s exchange rate x (1 + lifting charge / 100)', 'woocommerce-multilingual' ),
3317
+ # 'services_api' => __( 'API key (required)', 'woocommerce-multilingual' ),
3318
+ # 'frequency' => __( 'Update frequency', 'woocommerce-multilingual' ),
3319
 
3320
+ msgid "API key (required)"
3321
  msgstr ""
3322
 
3323
+ # 'services_api' => __( 'API key (required)', 'woocommerce-multilingual' ),
3324
+ # 'frequency' => __( 'Update frequency', 'woocommerce-multilingual' ),
3325
+ # 'update' => __( 'Update manually now', 'woocommerce-multilingual' ),
3326
 
3327
+ msgid "Update frequency"
3328
  msgstr ""
3329
 
3330
+ # 'frequency' => __( 'Update frequency', 'woocommerce-multilingual' ),
3331
+ # 'update' => __( 'Update manually now', 'woocommerce-multilingual' ),
3332
+ # 'update_tip' => __( 'You have to save all settings before updating exchange rates', 'woocommerce-multilingual' ),
3333
 
3334
+ msgid "Update manually now"
3335
  msgstr ""
3336
 
3337
+ # 'update' => __( 'Update manually now', 'woocommerce-multilingual' ),
3338
+ # 'update_tip' => __( 'You have to save all settings before updating exchange rates', 'woocommerce-multilingual' ),
3339
+ # 'manually' => __( 'Manually', 'woocommerce-multilingual'),
3340
 
3341
+ msgid "You have to save all settings before updating exchange rates"
3342
  msgstr ""
3343
 
3344
+ # 'update_tip' => __( 'You have to save all settings before updating exchange rates', 'woocommerce-multilingual' ),
3345
+ # 'manually' => __( 'Manually', 'woocommerce-multilingual'),
3346
+ # 'daily' => __( 'Daily', 'woocommerce-multilingual' ),
3347
 
3348
+ msgid "Manually"
3349
  msgstr ""
3350
 
3351
+ # 'manually' => __( 'Manually', 'woocommerce-multilingual'),
3352
+ # 'daily' => __( 'Daily', 'woocommerce-multilingual' ),
3353
+ # 'weekly' => __( 'Weekly on', 'woocommerce-multilingual' ),
3354
 
3355
+ msgid "Daily"
3356
  msgstr ""
3357
 
3358
+ # 'daily' => __( 'Daily', 'woocommerce-multilingual' ),
3359
+ # 'weekly' => __( 'Weekly on', 'woocommerce-multilingual' ),
3360
+ # 'monthly' => __( 'Monthly on the', 'woocommerce-multilingual' ),
3361
+
3362
+ msgid "Weekly on"
3363
+ msgstr ""
3364
+
3365
+ # 'weekly' => __( 'Weekly on', 'woocommerce-multilingual' ),
3366
+ # 'monthly' => __( 'Monthly on the', 'woocommerce-multilingual' ),
3367
+ # 'key_placeholder' => __( 'Enter API key', 'woocommerce-multilingual' ),
3368
+
3369
+ msgid "Monthly on the"
3370
+ msgstr ""
3371
+
3372
+ # 'monthly' => __( 'Monthly on the', 'woocommerce-multilingual' ),
3373
+ # 'key_placeholder' => __( 'Enter API key', 'woocommerce-multilingual' ),
3374
+ # 'key_required' => __( 'API key (required)', 'woocommerce-multilingual' ),
3375
 
3376
+ msgid "Enter API key"
3377
  msgstr ""
3378
 
3379
+ # 'updated_time' => sprintf(
3380
+ # __('Last updated: %s', 'woocommerce-multilingual' ),
3381
+ # '<span class="time">' . $last_updated . '</span>'
3382
 
3383
+ msgid "Last updated: %s"
3384
  msgstr ""
3385
 
3386
+ # ),
3387
+ # 'updated_success' => __( 'Exchange rates updated successfully', 'woocommerce-multilingual' ),
3388
+ # 'visit_website' => __( 'Visit website', 'woocommerce-multilingual' )
3389
 
3390
+ msgid "Exchange rates updated successfully"
3391
  msgstr ""
3392
 
3393
+ # 'updated_success' => __( 'Exchange rates updated successfully', 'woocommerce-multilingual' ),
3394
+ # 'visit_website' => __( 'Visit website', 'woocommerce-multilingual' )
3395
+ #
3396
 
3397
+ msgid "Visit website"
3398
  msgstr ""
3399
 
3400
+ #
3401
+ # $store_pages_view = '<p><i class="otgs-ico-warning"></i> ' . __('One or more WooCommerce pages have not been created') . '<p>';
3402
+ #
3403
 
3404
+ msgid "One or more WooCommerce pages have not been created"
3405
  msgstr ""
3406
 
3407
+ # '<label><input type="checkbox" name="install_missing_pages" value="1" checked="checked">&nbsp;' .
3408
+ # __('Install missing WooCommerce pages and create translations.', 'woocommerce-multilingual') .
3409
+ # '</label>';
3410
 
3411
+ msgid "Install missing WooCommerce pages and create translations."
3412
  msgstr ""
3413
 
3414
+ # 'strings' => array(
3415
+ # 'heading' => __('Translate Store Pages', 'woocommerce-multilingual'),
3416
+ # 'description' => __("All store pages must be translated in the languages configured on the site.", 'woocommerce-multilingual'),
3417
 
3418
+ msgid "Translate Store Pages"
3419
  msgstr ""
3420
 
3421
+ # 'heading' => __('Translate Store Pages', 'woocommerce-multilingual'),
3422
+ # 'description' => __("All store pages must be translated in the languages configured on the site.", 'woocommerce-multilingual'),
3423
+ # 'continue' => __('Continue', 'woocommerce-multilingual'),
3424
 
3425
+ msgid "All store pages must be translated in the languages configured on the site."
3426
  msgstr ""
3427
 
3428
+ # 'description' => __("All store pages must be translated in the languages configured on the site.", 'woocommerce-multilingual'),
3429
+ # 'continue' => __('Continue', 'woocommerce-multilingual'),
3430
+ # ),
3431
 
3432
+ msgid "Continue"
3433
  msgstr ""
3434
 
3435
+ # 'strings' => array(
3436
+ # 'heading' => __('Select Translatable Attributes', 'woocommerce-multilingual'),
3437
+ # 'no_attributes' => __('There are no attributes defined', 'woocommerce-multilingual'),
3438
 
3439
+ msgid "Select Translatable Attributes"
3440
  msgstr ""
3441
 
3442
+ # 'heading' => __('Select Translatable Attributes', 'woocommerce-multilingual'),
3443
+ # 'no_attributes' => __('There are no attributes defined', 'woocommerce-multilingual'),
3444
+ # 'continue' => __('Continue', 'woocommerce-multilingual'),
3445
 
3446
+ msgid "There are no attributes defined"
3447
  msgstr ""
3448
 
3449
+ # 'continue' => __('Continue', 'woocommerce-multilingual'),
3450
+ # 'later' => __('Later', 'woocommerce-multilingual')
3451
+ # ),
3452
 
3453
+ msgid "Later"
3454
  msgstr ""
3455
 
3456
+ # 'strings' => array(
3457
+ # 'heading' => __("Let's turn your WooCommerce shop multilingual", 'woocommerce-multilingual'),
3458
+ # 'description1' => __('Thank you for choosing WooCommerce Multilingual. We need to do a few upgrades to your site, so that it has everything needed to run multilingual.', 'woocommerce-multilingual'),
3459
 
3460
+ msgid "Let's turn your WooCommerce shop multilingual"
3461
  msgstr ""
3462
 
3463
+ # 'heading' => __("Let's turn your WooCommerce shop multilingual", 'woocommerce-multilingual'),
3464
+ # 'description1' => __('Thank you for choosing WooCommerce Multilingual. We need to do a few upgrades to your site, so that it has everything needed to run multilingual.', 'woocommerce-multilingual'),
3465
+ # 'description2' => array(
3466
 
3467
+ msgid "Thank you for choosing WooCommerce Multilingual. We need to do a few upgrades to your site, so that it has everything needed to run multilingual."
3468
  msgstr ""
3469
 
3470
+ #
3471
+ # 'title' => __("We'll help you:", 'woocommerce-multilingual'),
3472
+ # 'step1' => __("Translate the 'store' pages", 'woocommerce-multilingual'),
3473
 
3474
+ msgid "We'll help you:"
3475
  msgstr ""
3476
 
3477
+ # 'title' => __("We'll help you:", 'woocommerce-multilingual'),
3478
+ # 'step1' => __("Translate the 'store' pages", 'woocommerce-multilingual'),
3479
+ # 'step2' => __("Choose which attributes to make translatable", 'woocommerce-multilingual'),
3480
 
3481
+ msgid "Translate the 'store' pages"
3482
  msgstr ""
3483
 
3484
+ # 'step1' => __("Translate the 'store' pages", 'woocommerce-multilingual'),
3485
+ # 'step2' => __("Choose which attributes to make translatable", 'woocommerce-multilingual'),
3486
+ # 'step3' => __("Choose if you need multiple currencies", 'woocommerce-multilingual'),
3487
 
3488
+ msgid "Choose which attributes to make translatable"
3489
  msgstr ""
3490
 
3491
+ # 'step2' => __("Choose which attributes to make translatable", 'woocommerce-multilingual'),
3492
+ # 'step3' => __("Choose if you need multiple currencies", 'woocommerce-multilingual'),
3493
+ #
3494
 
3495
+ msgid "Choose if you need multiple currencies"
3496
  msgstr ""
3497
 
3498
+ # ),
3499
+ # 'description3' => sprintf( __("You can make these updates now, or later from the %sWooCommerce &raquo; WooCommerce Multilingual%s menu.", 'woocommerce-multilingual'), '<strong>', '</strong>' ),
3500
+ # 'continue' => __("Let's continue", 'woocommerce-multilingual'),
3501
 
3502
+ msgid "You can make these updates now, or later from the %sWooCommerce &raquo; WooCommerce Multilingual%s menu."
3503
  msgstr ""
3504
 
3505
+ # 'description3' => sprintf( __("You can make these updates now, or later from the %sWooCommerce &raquo; WooCommerce Multilingual%s menu.", 'woocommerce-multilingual'), '<strong>', '</strong>' ),
3506
+ # 'continue' => __("Let's continue", 'woocommerce-multilingual'),
3507
+ # 'later' => __("I'll do the setup later", 'woocommerce-multilingual')
3508
 
3509
+ msgid "Let's continue"
3510
  msgstr ""
3511
 
3512
+ # 'continue' => __("Let's continue", 'woocommerce-multilingual'),
3513
+ # 'later' => __("I'll do the setup later", 'woocommerce-multilingual')
3514
+ # ),
3515
 
3516
+ msgid "I'll do the setup later"
3517
  msgstr ""
3518
 
3519
+ # 'strings' => array(
3520
+ # 'heading' => __( 'Enable Multiple Currencies', 'woocommerce-multilingual' ),
3521
+ # 'description' => __( "This will allow you to set prices for products in different currencies. The prices can be determined based on a given exchange rate or set explicitly for specific products.", 'woocommerce-multilingual' ),
3522
 
3523
+ msgid "Enable Multiple Currencies"
3524
  msgstr ""
3525
 
3526
+ # 'heading' => __( 'Enable Multiple Currencies', 'woocommerce-multilingual' ),
3527
+ # 'description' => __( "This will allow you to set prices for products in different currencies. The prices can be determined based on a given exchange rate or set explicitly for specific products.", 'woocommerce-multilingual' ),
3528
+ # 'label_mco' => __( 'Enable the multi-currency mode', 'woocommerce-multilingual' ),
3529
 
3530
+ msgid "This will allow you to set prices for products in different currencies. The prices can be determined based on a given exchange rate or set explicitly for specific products."
3531
  msgstr ""
3532
 
3533
+ # 'strings' => array(
3534
+ # 'heading' => __('Setup Complete', 'woocommerce-multilingual'),
3535
+ # 'description1' => __('Your multilingual shop is almost ready. Next, you should go to the different tabs in %sWooCommerce &raquo; WooCommerce Multilingual%s admin and do the final setup.', 'woocommerce-multilingual'),
3536
 
3537
+ msgid "Setup Complete"
3538
  msgstr ""
3539
 
3540
+ # 'heading' => __('Setup Complete', 'woocommerce-multilingual'),
3541
+ # 'description1' => __('Your multilingual shop is almost ready. Next, you should go to the different tabs in %sWooCommerce &raquo; WooCommerce Multilingual%s admin and do the final setup.', 'woocommerce-multilingual'),
3542
+ # 'description2' => __("For your convenience, we've marked items that require your attention with a notice icon. You can see a list of everything that you should complete in the %sStatus%s tab.", 'woocommerce-multilingual'),
3543
 
3544
+ msgid "Your multilingual shop is almost ready. Next, you should go to the different tabs in %sWooCommerce &raquo; WooCommerce Multilingual%s admin and do the final setup."
3545
  msgstr ""
3546
 
3547
+ # 'description1' => __('Your multilingual shop is almost ready. Next, you should go to the different tabs in %sWooCommerce &raquo; WooCommerce Multilingual%s admin and do the final setup.', 'woocommerce-multilingual'),
3548
+ # 'description2' => __("For your convenience, we've marked items that require your attention with a notice icon. You can see a list of everything that you should complete in the %sStatus%s tab.", 'woocommerce-multilingual'),
3549
+ # 'continue' => __('Close setup', 'woocommerce-multilingual'),
3550
 
3551
+ msgid "For your convenience, we've marked items that require your attention with a notice icon. You can see a list of everything that you should complete in the %sStatus%s tab."
3552
  msgstr ""
3553
 
3554
+ # 'description2' => __("For your convenience, we've marked items that require your attention with a notice icon. You can see a list of everything that you should complete in the %sStatus%s tab.", 'woocommerce-multilingual'),
3555
+ # 'continue' => __('Close setup', 'woocommerce-multilingual'),
3556
+ # ),
3557
 
3558
+ msgid "Close setup"
3559
  msgstr ""
3560
 
3561
+ # 'clear_all' => array(
3562
+ # 'label' => __( 'Clear all colors', 'woocommerce-multilingual' ),
3563
+ # ),
3564
 
3565
+ msgid "Clear all colors"
3566
  msgstr ""
3567
 
3568
+ # 'gray' => array(
3569
+ # 'label' => __( 'Gray', 'woocommerce-multilingual' ),
3570
+ # ),
3571
 
3572
+ msgid "Gray"
3573
  msgstr ""
3574
 
3575
+ # 'white' => array(
3576
+ # 'label' => __( 'White', 'woocommerce-multilingual' ),
3577
  # ),
3578
 
3579
+ msgid "White"
3580
  msgstr ""
3581
 
3582
+ # 'blue' => array(
3583
+ # 'label' => __( 'Blue', 'woocommerce-multilingual' )
3584
+ # )
3585
 
3586
+ msgid "Blue"
3587
  msgstr ""
3588
 
3589
  # 'options' => array(
3590
+ # 'border' => __( 'Border', 'woocommerce-multilingual' ),
3591
+ # 'font_current' => __( 'Current currency font color', 'woocommerce-multilingual' ),
3592
 
3593
+ msgid "Border"
3594
  msgstr ""
3595
 
3596
+ # 'border' => __( 'Border', 'woocommerce-multilingual' ),
3597
+ # 'font_current' => __( 'Current currency font color', 'woocommerce-multilingual' ),
3598
+ # 'font_other' => __( 'Other currency font color', 'woocommerce-multilingual' ),
3599
 
3600
+ msgid "Current currency font color"
3601
  msgstr ""
3602
 
3603
+ # 'font_current' => __( 'Current currency font color', 'woocommerce-multilingual' ),
3604
+ # 'font_other' => __( 'Other currency font color', 'woocommerce-multilingual' ),
3605
+ # 'background_current' => __( 'Current currency background color', 'woocommerce-multilingual' ),
3606
 
3607
+ msgid "Other currency font color"
3608
  msgstr ""
3609
 
3610
+ # 'font_other' => __( 'Other currency font color', 'woocommerce-multilingual' ),
3611
+ # 'background_current' => __( 'Current currency background color', 'woocommerce-multilingual' ),
3612
+ # 'background_other' => __( 'Other currency background color', 'woocommerce-multilingual' )
3613
 
3614
+ msgid "Current currency background color"
3615
  msgstr ""
3616
 
3617
+ # 'background_current' => __( 'Current currency background color', 'woocommerce-multilingual' ),
3618
+ # 'background_other' => __( 'Other currency background color', 'woocommerce-multilingual' )
3619
  # ),
3620
 
3621
+ msgid "Other currency background color"
 
 
 
 
 
 
 
3622
  msgstr ""
3623
 
3624
+ # 'switcher_style' => array(
3625
+ # 'label' =>__( 'Currency switcher style', 'woocommerce-multilingual' ),
3626
+ # 'core' =>__( 'Core', 'woocommerce-multilingual' ),
3627
 
3628
+ msgid "Currency switcher style"
3629
  msgstr ""
3630
 
3631
+ # 'label' =>__( 'Currency switcher style', 'woocommerce-multilingual' ),
3632
+ # 'core' =>__( 'Core', 'woocommerce-multilingual' ),
3633
+ # 'custom' =>__( 'Custom', 'woocommerce-multilingual' ),
3634
 
3635
+ msgid "Core"
3636
  msgstr ""
3637
 
3638
+ # 'core' =>__( 'Core', 'woocommerce-multilingual' ),
3639
+ # 'custom' =>__( 'Custom', 'woocommerce-multilingual' ),
3640
+ # 'allowed_tags' => __( 'Allowed HTML tags: <img> <span> <u> <strong> <em>', 'woocommerce-multilingual')
3641
 
3642
+ msgid "Custom"
3643
  msgstr ""
3644
 
3645
+ # 'custom' =>__( 'Custom', 'woocommerce-multilingual' ),
3646
+ # 'allowed_tags' => __( 'Allowed HTML tags: <img> <span> <u> <strong> <em>', 'woocommerce-multilingual')
3647
+ # ),
3648
 
3649
+ msgid "Allowed HTML tags: <img> <span> <u> <strong> <em>"
3650
  msgstr ""
3651
 
3652
+ # 'template' => array(
3653
+ # 'label' => __( 'Template for currency switcher', 'woocommerce-multilingual' ),
3654
+ # 'parameters' => __( 'Available parameters', 'woocommerce-multilingual' ),
3655
 
3656
+ msgid "Template for currency switcher"
3657
  msgstr ""
3658
 
3659
+ # 'label' => __( 'Template for currency switcher', 'woocommerce-multilingual' ),
3660
+ # 'parameters' => __( 'Available parameters', 'woocommerce-multilingual' ),
3661
+ # 'template_tip' => __( 'Default: %name% (%symbol%) - %code%', 'woocommerce-multilingual' ),
3662
 
3663
+ msgid "Available parameters"
3664
  msgstr ""
3665
 
3666
+ # 'parameters' => __( 'Available parameters', 'woocommerce-multilingual' ),
3667
+ # 'template_tip' => __( 'Default: %name% (%symbol%) - %code%', 'woocommerce-multilingual' ),
3668
+ # 'parameters_list' => '%code%, %symbol%, %name%, %subtotal%'
3669
 
3670
+ msgid "Default: %name% (%symbol%) - %code%"
3671
  msgstr ""
3672
 
3673
+ # 'colors' => array(
3674
+ # 'label' => __( 'Currency switcher colors', 'woocommerce-multilingual' ),
3675
+ # 'theme' => __( 'Color theme', 'woocommerce-multilingual' ),
3676
 
3677
+ msgid "Currency switcher colors"
3678
  msgstr ""
3679
 
3680
+ # 'label' => __( 'Currency switcher colors', 'woocommerce-multilingual' ),
3681
+ # 'theme' => __( 'Color theme', 'woocommerce-multilingual' ),
3682
+ # 'normal' => __( 'Normal', 'woocommerce-multilingual' ),
3683
 
3684
+ msgid "Color theme"
3685
  msgstr ""
3686
 
3687
+ # 'theme' => __( 'Color theme', 'woocommerce-multilingual' ),
3688
+ # 'normal' => __( 'Normal', 'woocommerce-multilingual' ),
3689
+ # 'hover' => __( 'Hover', 'woocommerce-multilingual' ),
3690
 
3691
+ msgid "Normal"
3692
  msgstr ""
3693
 
3694
+ # 'normal' => __( 'Normal', 'woocommerce-multilingual' ),
3695
+ # 'hover' => __( 'Hover', 'woocommerce-multilingual' ),
3696
+ # 'select_option_choose' => __( 'Select a preset', 'woocommerce-multilingual' )
3697
 
3698
+ msgid "Hover"
3699
  msgstr ""
3700
 
3701
+ # 'hover' => __( 'Hover', 'woocommerce-multilingual' ),
3702
+ # 'select_option_choose' => __( 'Select a preset', 'woocommerce-multilingual' )
3703
+ # ),
3704
 
3705
+ msgid "Select a preset"
3706
  msgstr ""
3707
 
3708
+ # 'widgets' => array(
3709
+ # 'widget_area' => __( 'Widget area', 'woocommerce-multilingual' ),
3710
+ # 'widget_title' => __( 'Widget title', 'woocommerce-multilingual' ),
3711
+
3712
+ msgid "Widget area"
3713
  msgstr ""
3714
 
3715
+ # 'widget_area' => __( 'Widget area', 'woocommerce-multilingual' ),
3716
+ # 'widget_title' => __( 'Widget title', 'woocommerce-multilingual' ),
3717
+ # 'choose_label' => __( '-- Choose a widget area --', 'woocommerce-multilingual' ),
3718
 
3719
+ msgid "Widget title"
3720
  msgstr ""
3721
 
3722
+ # 'widget_title' => __( 'Widget title', 'woocommerce-multilingual' ),
3723
+ # 'choose_label' => __( '-- Choose a widget area --', 'woocommerce-multilingual' ),
3724
+ # 'available_sidebars' => $this->woocommerce_wpml->multi_currency->currency_switcher->get_available_sidebars()
3725
 
3726
+ msgid "-- Choose a widget area --"
3727
  msgstr ""
3728
 
3729
+ # 'strings' => array(
3730
+ # 'update_trnsl' => __('Update Translation', 'woocommerce-multilingual'),
3731
+ # 'hide' => __('Hide This Message', 'woocommerce-multilingual'),
3732
 
3733
+ msgid "Update Translation"
3734
  msgstr ""
3735
 
3736
+ # 'update_trnsl' => __('Update Translation', 'woocommerce-multilingual'),
3737
+ # 'hide' => __('Hide This Message', 'woocommerce-multilingual'),
3738
+ # 'trnsl_available' => sprintf( __( '<strong>WooCommerce Translation Available</strong> &#8211; Install or update your <code>%s</code> translations to version <code>%s</code>.', 'woocommerce-multilingual' ), implode(', ', $this->notices ), WC_VERSION )
3739
 
3740
+ msgid "Hide This Message"
3741
  msgstr ""
3742
 
3743
+ # 'hide' => __('Hide This Message', 'woocommerce-multilingual'),
3744
+ # 'trnsl_available' => sprintf( __( '<strong>WooCommerce Translation Available</strong> &#8211; Install or update your <code>%s</code> translations to version <code>%s</code>.', 'woocommerce-multilingual' ), implode(', ', $this->notices ), WC_VERSION )
3745
  # ),
3746
 
3747
+ msgid "<strong>WooCommerce Translation Available</strong> &#8211; Install or update your <code>%s</code> translations to version <code>%s</code>."
3748
  msgstr ""
3749
 
3750
+ # 'strings' => array(
3751
+ # 'image' => __( 'Image', 'woocommerce-multilingual' ),
3752
+ # 'product' => __( 'Product', 'woocommerce-multilingual' ),
3753
 
3754
+ msgid "Image"
3755
  msgstr ""
3756
 
3757
+ # 'product' => __( 'Product', 'woocommerce-multilingual' ),
3758
+ # 'type' => __( 'Type', 'woocommerce-multilingual' ),
3759
+ # 'date' => __( 'Date', 'woocommerce-multilingual' ),
3760
 
3761
+ msgid "Type"
3762
  msgstr ""
3763
 
3764
+ # 'type' => __( 'Type', 'woocommerce-multilingual' ),
3765
+ # 'date' => __( 'Date', 'woocommerce-multilingual' ),
3766
+ # 'categories' => __( 'Categories', 'woocommerce-multilingual' ),
3767
 
3768
+ msgid "Date"
3769
  msgstr ""
3770
 
3771
+ # 'categories' => __( 'Categories', 'woocommerce-multilingual' ),
3772
+ # 'no_products' => __( 'No products found', 'woocommerce-multilingual' ),
3773
+ # 'draft' => __( 'Draft', 'woocommerce-multilingual' ),
3774
 
3775
+ msgid "No products found"
3776
  msgstr ""
3777
 
3778
+ # 'no_products' => __( 'No products found', 'woocommerce-multilingual' ),
3779
+ # 'draft' => __( 'Draft', 'woocommerce-multilingual' ),
3780
+ # 'private' => __( 'Private', 'woocommerce-multilingual' ),
3781
 
3782
+ msgid "Draft"
3783
  msgstr ""
3784
 
3785
+ # 'draft' => __( 'Draft', 'woocommerce-multilingual' ),
3786
+ # 'private' => __( 'Private', 'woocommerce-multilingual' ),
3787
+ # 'pending' => __( 'Pending', 'woocommerce-multilingual' ),
3788
 
3789
+ msgid "Private"
3790
  msgstr ""
3791
 
3792
+ # 'private' => __( 'Private', 'woocommerce-multilingual' ),
3793
+ # 'pending' => __( 'Pending', 'woocommerce-multilingual' ),
3794
+ # 'future' => __( 'Scheduled', 'woocommerce-multilingual' ),
3795
 
3796
+ msgid "Pending"
3797
  msgstr ""
3798
 
3799
+ # 'pending' => __( 'Pending', 'woocommerce-multilingual' ),
3800
+ # 'future' => __( 'Scheduled', 'woocommerce-multilingual' ),
3801
+ # 'parent' => __( 'Parent product: %s', 'woocommerce-multilingual' ),
3802
 
3803
+ msgid "Scheduled"
3804
  msgstr ""
3805
 
3806
+ # 'future' => __( 'Scheduled', 'woocommerce-multilingual' ),
3807
+ # 'parent' => __( 'Parent product: %s', 'woocommerce-multilingual' ),
3808
+ # 'edit_item' => __( 'Edit this item', 'woocommerce-multilingual' ),
3809
 
3810
+ msgid "Parent product: %s"
3811
  msgstr ""
3812
 
3813
+ # 'parent' => __( 'Parent product: %s', 'woocommerce-multilingual' ),
3814
+ # 'edit_item' => __( 'Edit this item', 'woocommerce-multilingual' ),
3815
+ # 'edit' => __( 'Edit', 'woocommerce-multilingual' ),
3816
 
3817
+ msgid "Edit this item"
3818
  msgstr ""
3819
 
3820
+ # 'edit' => __( 'Edit', 'woocommerce-multilingual' ),
3821
+ # 'view_link' => __( 'View "%s"', 'woocommerce-multilingual' ),
3822
+ # 'view' => __( 'View', 'woocommerce-multilingual' ),
3823
 
3824
+ msgid "View \"%s\""
3825
  msgstr ""
3826
 
3827
+ # 'view_link' => __( 'View "%s"', 'woocommerce-multilingual' ),
3828
+ # 'view' => __( 'View', 'woocommerce-multilingual' ),
3829
+ # 'published' => __( 'Published', 'woocommerce-multilingual' ),
3830
 
3831
+ msgid "View"
3832
  msgstr ""
3833
 
3834
+ # 'view' => __( 'View', 'woocommerce-multilingual' ),
3835
+ # 'published' => __( 'Published', 'woocommerce-multilingual' ),
3836
+ # 'modified' => __( 'Last Modified', 'woocommerce-multilingual' ),
3837
 
3838
+ msgid "Published"
3839
  msgstr ""
3840
 
3841
+ # 'published' => __( 'Published', 'woocommerce-multilingual' ),
3842
+ # 'modified' => __( 'Last Modified', 'woocommerce-multilingual' ),
3843
+ # ),
3844
 
3845
+ msgid "Last Modified"
3846
  msgstr ""
3847
 
3848
+ # 'strings' => array(
3849
+ # 'all_lang' => __( 'All languages', 'woocommerce-multilingual' ),
3850
+ # 'all_cats' => __( 'All categories', 'woocommerce-multilingual' ),
3851
 
3852
+ msgid "All languages"
3853
  msgstr ""
3854
 
3855
+ # 'all_lang' => __( 'All languages', 'woocommerce-multilingual' ),
3856
+ # 'all_cats' => __( 'All categories', 'woocommerce-multilingual' ),
3857
+ # 'all_trnsl_stats' => __( 'All translation statuses', 'woocommerce-multilingual' ),
3858
 
3859
+ msgid "All categories"
3860
  msgstr ""
3861
 
3862
+ # 'all_cats' => __( 'All categories', 'woocommerce-multilingual' ),
3863
+ # 'all_trnsl_stats' => __( 'All translation statuses', 'woocommerce-multilingual' ),
3864
+ # 'not_trnsl' => __( 'Not translated or needs updating', 'woocommerce-multilingual' ),
3865
 
3866
+ msgid "All translation statuses"
3867
  msgstr ""
3868
 
3869
+ # 'all_trnsl_stats' => __( 'All translation statuses', 'woocommerce-multilingual' ),
3870
+ # 'not_trnsl' => __( 'Not translated or needs updating', 'woocommerce-multilingual' ),
3871
+ # 'need_upd' => __( 'Needs updating', 'woocommerce-multilingual' ),
3872
 
3873
+ msgid "Not translated or needs updating"
3874
  msgstr ""
3875
 
3876
+ # 'not_trnsl' => __( 'Not translated or needs updating', 'woocommerce-multilingual' ),
3877
+ # 'need_upd' => __( 'Needs updating', 'woocommerce-multilingual' ),
3878
+ # 'in_progress' => __( 'Translation in progress', 'woocommerce-multilingual' ),
3879
 
3880
+ msgid "Needs updating"
3881
  msgstr ""
3882
 
3883
+ # 'in_progress' => __( 'Translation in progress', 'woocommerce-multilingual' ),
3884
+ # 'complete' => __( 'Translation complete', 'woocommerce-multilingual' ),
3885
+ # 'all_stats' => __( 'All statuses', 'woocommerce-multilingual' ),
3886
 
3887
+ msgid "Translation complete"
3888
  msgstr ""
3889
 
3890
+ # 'complete' => __( 'Translation complete', 'woocommerce-multilingual' ),
3891
+ # 'all_stats' => __( 'All statuses', 'woocommerce-multilingual' ),
3892
+ # 'filter' => __( 'Filter', 'woocommerce-multilingual' ),
3893
 
3894
+ msgid "All statuses"
3895
  msgstr ""
3896
 
3897
+ # 'all_stats' => __( 'All statuses', 'woocommerce-multilingual' ),
3898
+ # 'filter' => __( 'Filter', 'woocommerce-multilingual' ),
3899
+ # 'reset' => __( 'Reset', 'woocommerce-multilingual' ),
3900
 
3901
+ msgid "Filter"
3902
  msgstr ""
3903
 
3904
+ # 'filter' => __( 'Filter', 'woocommerce-multilingual' ),
3905
+ # 'reset' => __( 'Reset', 'woocommerce-multilingual' ),
3906
+ # 'search' => __( 'Search', 'woocommerce-multilingual' ),
3907
 
3908
+ msgid "Reset"
3909
  msgstr ""
3910
 
3911
+ # 'reset' => __( 'Reset', 'woocommerce-multilingual' ),
3912
+ # 'search' => __( 'Search', 'woocommerce-multilingual' ),
3913
+ # ),
3914
 
3915
+ msgid "Search"
3916
  msgstr ""
3917
 
3918
+ # 'strings' => array(
3919
+ # 'items' => __( '%d items', 'woocommerce-multilingual' ),
3920
+ # 'first' => __( 'Go to the first page', 'woocommerce-multilingual' ),
3921
 
3922
+ msgid "%d items"
3923
  msgstr ""
3924
 
3925
+ # 'items' => __( '%d items', 'woocommerce-multilingual' ),
3926
+ # 'first' => __( 'Go to the first page', 'woocommerce-multilingual' ),
3927
+ # 'previous' => __( 'Go to the previous page', 'woocommerce-multilingual' ),
3928
 
3929
+ msgid "Go to the first page"
3930
  msgstr ""
3931
 
3932
+ # 'first' => __( 'Go to the first page', 'woocommerce-multilingual' ),
3933
+ # 'previous' => __( 'Go to the previous page', 'woocommerce-multilingual' ),
3934
+ # 'select' => __( 'Select Page', 'woocommerce-multilingual' ),
3935
 
3936
+ msgid "Go to the previous page"
3937
  msgstr ""
3938
 
3939
+ # 'previous' => __( 'Go to the previous page', 'woocommerce-multilingual' ),
3940
+ # 'select' => __( 'Select Page', 'woocommerce-multilingual' ),
3941
+ # 'current' => __( 'Current page', 'woocommerce-multilingual' ),
3942
 
3943
+ msgid "Select Page"
3944
  msgstr ""
3945
 
3946
+ # 'select' => __( 'Select Page', 'woocommerce-multilingual' ),
3947
+ # 'current' => __( 'Current page', 'woocommerce-multilingual' ),
3948
+ # 'of' => __( 'of', 'woocommerce-multilingual' ),
3949
 
3950
+ msgid "Current page"
3951
  msgstr ""
3952
 
3953
+ # 'current' => __( 'Current page', 'woocommerce-multilingual' ),
3954
+ # 'of' => __( 'of', 'woocommerce-multilingual' ),
3955
+ # 'next' => __( 'Go to the next page', 'woocommerce-multilingual' ),
3956
 
3957
+ msgid "of"
3958
  msgstr ""
3959
 
3960
+ # 'of' => __( 'of', 'woocommerce-multilingual' ),
3961
+ # 'next' => __( 'Go to the next page', 'woocommerce-multilingual' ),
3962
+ # 'last' => __( 'Go to the last page', 'woocommerce-multilingual' ),
3963
 
3964
+ msgid "Go to the next page"
3965
  msgstr ""
3966
 
3967
+ # 'next' => __( 'Go to the next page', 'woocommerce-multilingual' ),
3968
+ # 'last' => __( 'Go to the last page', 'woocommerce-multilingual' ),
3969
+ # )
3970
 
3971
+ msgid "Go to the last page"
3972
  msgstr ""
3973
 
3974
+ # 'translation_interface' => array(
3975
+ # 'heading' => __('Product Translation Interface','woocommerce-multilingual'),
3976
+ # 'tip' => __( 'The recommended way is using the WPML Translation Editor. It is streamlined for making the translation process much easier while also providing a much better integration with various WooCommerce extensions.',
3977
 
3978
+ msgid "Product Translation Interface"
3979
  msgstr ""
3980
 
3981
+ # 'heading' => __('Product Translation Interface','woocommerce-multilingual'),
3982
+ # 'tip' => __( 'The recommended way is using the WPML Translation Editor. It is streamlined for making the translation process much easier while also providing a much better integration with various WooCommerce extensions.',
3983
+ # 'woocommerce-multilingual' ),
3984
 
3985
+ msgid "The recommended way is using the WPML Translation Editor. It is streamlined for making the translation process much easier while also providing a much better integration with various WooCommerce extensions."
3986
  msgstr ""
3987
 
3988
+ # 'wcml' => array(
3989
+ # 'label' => __('WPML Translation Editor', 'woocommerce-multilingual'),
3990
+ #
3991
 
3992
+ msgid "WPML Translation Editor"
3993
  msgstr ""
3994
 
3995
+ # 'native' => array(
3996
+ # 'label' => __('Native WooCommerce product editing screen' , 'woocommerce-multilingual'),
3997
+ #
3998
 
3999
+ msgid "Native WooCommerce product editing screen"
4000
  msgstr ""
4001
 
4002
+ # 'synchronization' => array(
4003
+ # 'heading' => __('Products Synchronization', 'woocommerce-multilingual'),
4004
+ # 'tip' => __( 'Configure specific product properties that should be synced to translations.', 'woocommerce-multilingual' ),
4005
 
4006
+ msgid "Products Synchronization"
4007
  msgstr ""
4008
 
4009
+ # 'heading' => __('Products Synchronization', 'woocommerce-multilingual'),
4010
+ # 'tip' => __( 'Configure specific product properties that should be synced to translations.', 'woocommerce-multilingual' ),
4011
+ # 'sync_date' => array(
4012
 
4013
+ msgid "Configure specific product properties that should be synced to translations."
4014
  msgstr ""
4015
 
4016
+ # 'value' => $this->woocommerce_wpml->settings['products_sync_date'],
4017
+ # 'label' => __('Sync publishing date for translated products.', 'woocommerce-multilingual')
4018
  # ),
 
 
4019
 
4020
+ msgid "Sync publishing date for translated products."
4021
  msgstr ""
4022
 
4023
+ # 'value' => $this->woocommerce_wpml->settings['products_sync_order'],
4024
+ # 'label' => __('Sync products and product taxonomies order.', 'woocommerce-multilingual')
4025
+ # ),
4026
 
4027
+ msgid "Sync products and product taxonomies order."
4028
  msgstr ""
4029
 
4030
+ # 'file_sync' => array(
4031
+ # 'heading' => __('Products Download Files', 'woocommerce-multilingual'),
4032
+ # 'tip' => __( 'If you are using downloadable products, you can choose to have their paths
4033
 
4034
+ msgid "Products Download Files"
4035
  msgstr ""
4036
 
4037
+ # 'heading' => __('Products Download Files', 'woocommerce-multilingual'),
4038
+ # 'tip' => __( 'If you are using downloadable products, you can choose to have their paths
4039
+ # synchronized, or seperate for each language.', 'woocommerce-multilingual' ),
4040
 
4041
+ msgid "If you are using downloadable products, you can choose to have their paths\n synchronized, or seperate for each language."
4042
  msgstr ""
4043
 
4044
+ # 'label_same' => __('Use the same files for translations', 'woocommerce-multilingual'),
4045
+ # 'label_diff' => __('Add separate download files for translations when translating products', 'woocommerce-multilingual'),
4046
+ # ),
4047
 
4048
+ msgid "Add separate download files for translations when translating products"
4049
  msgstr ""
4050
 
4051
+ # 'cart_sync' => array(
4052
+ # 'tip' => __('You can choose to clear the cart contents when you change language or currency in case you have problems in cart or checkout page', 'woocommerce-multilingual'),
4053
+ # 'heading' => __('Cart', 'woocommerce-multilingual'),
4054
 
4055
+ msgid "You can choose to clear the cart contents when you change language or currency in case you have problems in cart or checkout page"
4056
  msgstr ""
4057
 
4058
+ # 'lang_switch' => array(
4059
+ # 'heading' => __('Switching languages when there are items in the cart', 'woocommerce-multilingual'),
4060
+ # 'sync_label' => __('Synchronize cart content when switching languages', 'woocommerce-multilingual'),
4061
 
4062
+ msgid "Switching languages when there are items in the cart"
4063
  msgstr ""
4064
 
4065
+ # 'heading' => __('Switching languages when there are items in the cart', 'woocommerce-multilingual'),
4066
+ # 'sync_label' => __('Synchronize cart content when switching languages', 'woocommerce-multilingual'),
4067
+ # 'clear_label' => __('Prompt for a confirmation and reset the cart', 'woocommerce-multilingual'),
4068
 
4069
+ msgid "Synchronize cart content when switching languages"
4070
  msgstr ""
4071
 
4072
+ # 'sync_label' => __('Synchronize cart content when switching languages', 'woocommerce-multilingual'),
4073
+ # 'clear_label' => __('Prompt for a confirmation and reset the cart', 'woocommerce-multilingual'),
4074
+ # 'value' => $this->woocommerce_wpml->settings['cart_sync']['lang_switch']
4075
 
4076
+ msgid "Prompt for a confirmation and reset the cart"
4077
  msgstr ""
4078
 
4079
+ # 'currency_switch' => array(
4080
+ # 'heading' => __('Switching currencies when there are items in the cart', 'woocommerce-multilingual'),
4081
+ # 'sync_label' => __('Synchronize cart content when switching currencies', 'woocommerce-multilingual'),
4082
 
4083
+ msgid "Switching currencies when there are items in the cart"
4084
  msgstr ""
4085
 
4086
+ # 'heading' => __('Switching currencies when there are items in the cart', 'woocommerce-multilingual'),
4087
+ # 'sync_label' => __('Synchronize cart content when switching currencies', 'woocommerce-multilingual'),
4088
+ # 'clear_label' => __('Prompt for a confirmation and reset the cart', 'woocommerce-multilingual'),
4089
 
4090
+ msgid "Synchronize cart content when switching currencies"
4091
  msgstr ""
4092
 
4093
+ # 'wpml_cookie_enabled' => $this->sitepress->get_setting( WPML_Cookie_Setting::COOKIE_SETTING_FIELD ),
4094
+ # 'cookie_not_enabled_message' => sprintf( __( 'This feature was disabled. Please enable %sWPML cookies%s to continue.',
4095
+ # 'woocommerce-multilingual' ),
4096
 
4097
+ msgid "This feature was disabled. Please enable %sWPML cookies%s to continue."
4098
  msgstr ""
4099
 
4100
+ # ),
4101
+ # 'doc_link' => sprintf( __( 'Not sure which option to choose? Read about %spotential issues when switching languages and currencies while the cart has items%s.',
4102
+ # 'woocommerce-multilingual' ),
4103
 
4104
+ msgid "Not sure which option to choose? Read about %spotential issues when switching languages and currencies while the cart has items%s."
4105
  msgstr ""
4106
 
4107
  # 'strings' => array(
4139
  msgid "This action lets you automatically apply the %s taxonomy to your content in different languages. It will scan the original content and apply the same taxonomy to translated content."
4140
  msgstr ""
4141
 
4142
+ #
4143
+ # $reset_cart_configure_link = '<strong><a href="' . $admin_settings_url . '">' . esc_html__( 'configure WooCommerce Multilingual', 'woocommerce-multilingual' ) . '</a></strong>';
4144
+ #
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4145
 
4146
+ msgid "configure WooCommerce Multilingual"
 
 
 
 
 
 
 
4147
  msgstr ""
4148
 
4149
+ # $reset_cart_message .= $reset_cart_strings[1];
4150
+ # $reset_cart_message .= '<strong><a href="' . $documentation_link . '" target="_blank">' . esc_html__( 'More details', 'woocommerce-multilingual' ) . '</a></strong>';
4151
+ #
4152
 
4153
+ msgid "More details"
4154
  msgstr ""
4155
 
4156
+ #
4157
+ # $reset_cart_strings[] = esc_html_x( 'Because of some elements in your site configuration, when the users switch the currency or the language on the front end, the cart content might not be synchronized correctly.', 'Reset cart option warning 1', 'woocommerce-multilingual' );
4158
+ # $reset_cart_strings[] = esc_html_x( 'It is recommended that you %s with the option to reset the cart in a situation like this.', 'Reset cart option warning 2', 'woocommerce-multilingual' );
4159
 
4160
+ msgctxt "Reset cart option warning 1"
4161
+ msgid "Because of some elements in your site configuration, when the users switch the currency or the language on the front end, the cart content might not be synchronized correctly."
4162
  msgstr ""
4163
 
4164
+ # $reset_cart_strings[] = esc_html_x( 'Because of some elements in your site configuration, when the users switch the currency or the language on the front end, the cart content might not be synchronized correctly.', 'Reset cart option warning 1', 'woocommerce-multilingual' );
4165
+ # $reset_cart_strings[] = esc_html_x( 'It is recommended that you %s with the option to reset the cart in a situation like this.', 'Reset cart option warning 2', 'woocommerce-multilingual' );
4166
+ #
4167
 
4168
+ msgctxt "Reset cart option warning 2"
4169
+ msgid "It is recommended that you %s with the option to reset the cart in a situation like this."
4170
  msgstr ""
4171
 
4172
+ #
4173
+ # $composite_section = new WPML_Editor_UI_Field_Section( __( 'Composite Products ( Components )', 'woocommerce-multilingual' ) );
4174
+ # end( $composite_data );
4175
 
4176
+ msgid "Composite Products ( Components )"
4177
  msgstr ""
4178
 
4179
+ # $group->add_field( $composite_field );
4180
+ # $composite_field = new WPML_Editor_UI_Single_Line_Field( 'composite_'.$component_id.'_description' , __( 'Description', 'woocommerce-multilingual' ), $data, false );
4181
+ # $group->add_field( $composite_field );
4182
 
4183
+ msgid "Description"
4184
  msgstr ""
4185
 
4186
+ #
4187
+ # $composite_scenarios = new WPML_Editor_UI_Field_Section( __( 'Composite Products ( Scenarios )', 'woocommerce-multilingual' ) );
4188
+ # end( $composite_scenarios_meta );
4189
 
4190
+ msgid "Composite Products ( Scenarios )"
4191
  msgstr ""
4192
 
4193
+ #
4194
+ # $bundles_section = new WPML_Editor_UI_Field_Section( __( 'Product Bundles', 'woocommerce-multilingual' ) );
4195
+ # end( $product_bundles );
4196
 
4197
+ msgid "Product Bundles"
4198
  msgstr ""
4199
 
4200
+ # 'name' => 'language',
4201
+ # 'label' => __( 'Language', 'woo_ce' ),
4202
+ # 'default' => 1
4203
 
4204
+ msgid "Language"
4205
  msgstr ""
4206
 
4207
+ # 'name' => 'translation_of',
4208
+ # 'label' => __( 'Translation of', 'woo_ce' ),
4209
+ # 'default' => 1
4210
 
4211
+ msgid "Translation of"
4212
  msgstr ""
4213
 
4214
+ #
4215
+ # $tour_section = new WPML_Editor_UI_Field_Section( __('Tour Data', 'woocommerce-multilingual'));
4216
+ #
4217
 
4218
+ msgid "Tour Data"
4219
  msgstr ""
4220
 
4221
+ # $group->add_field($composite_field);
4222
+ # $composite_field = new WPML_Editor_UI_Single_Line_Field('adventure_tour_' . $tour_tab_id . '_content', __('Content', 'woocommerce-multilingual'), $data, false);
4223
+ # $group->add_field($composite_field);
4224
 
4225
+ msgid "Content"
4226
  msgstr ""
4227
 
4228
+ # $pointer_ui = new WCML_Pointer_UI(
4229
+ # sprintf( __( 'You can translate this method title on the %sWPML String Translation page%s. Use the search on the top of that page to find the method title string.', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page='.WPML_ST_FOLDER.'/menu/string-translation.php').'">', '</a>' ),
4230
+ # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-table-rate-shipping-woocommerce-multilingual/',
4231
 
4232
+ msgid "You can translate this method title on the %sWPML String Translation page%s. Use the search on the top of that page to find the method title string."
4233
  msgstr ""
4234
 
4235
+ # $pointer_ui = new WCML_Pointer_UI(
4236
+ # sprintf( __( 'You can translate the labels of your table rates on the %sWPML String Translation page%s. Use the search on the top of that page to find the labels strings.', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page='.WPML_ST_FOLDER.'/menu/string-translation.php').'">', '</a>' ),
4237
+ # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-table-rate-shipping-woocommerce-multilingual/',
4238
 
4239
+ msgid "You can translate the labels of your table rates on the %sWPML String Translation page%s. Use the search on the top of that page to find the labels strings."
4240
  msgstr ""
4241
 
4242
+ # echo '<input type="radio" name="_wcml_custom_costs" id="wcml_custom_costs_auto" value="0" class="wcml_custom_costs_input" '. $checked .' />';
4243
+ # echo '<label for="wcml_custom_costs_auto">'. __('Calculate costs in other currencies automatically', 'woocommerce-multilingual') .'</label>';
4244
+ #
4245
 
4246
+ msgid "Calculate costs in other currencies automatically"
4247
  msgstr ""
4248
 
4249
+ # echo '<input type="radio" name="_wcml_custom_costs" value="1" id="wcml_custom_costs_manually" class="wcml_custom_costs_input" '. $checked .' />';
4250
+ # echo '<label for="wcml_custom_costs_manually">'. __('Set costs in other currencies manually', 'woocommerce-multilingual') .'</label>';
4251
+ #
4252
 
4253
+ msgid "Set costs in other currencies manually"
4254
  msgstr ""
4255
 
4256
+ # case 'wcml_wc_booking_base_cost':
4257
+ # woocommerce_wp_text_input( array( 'id' => 'wcml_wc_booking_base_cost', 'class'=>'wcml_bookings_custom_price', 'name' => 'wcml_wc_accommodation_booking_base_cost['.$currency_code.']', 'label' => get_woocommerce_currency_symbol($currency_code), 'description' => __( 'This is the cost per block booked. All other costs (for resources and persons) are added to this.', 'woocommerce-bookings' ), 'value' => get_post_meta( $post_id, '_wc_booking_base_cost_'.$currency_code, true ), 'type' => 'number', 'desc_tip' => true, 'custom_attributes' => array(
4258
+ # 'min' => '',
4259
 
4260
+ msgid "This is the cost per block booked. All other costs (for resources and persons) are added to this."
4261
  msgstr ""
4262
 
4263
+ # $pointer_ui = new WCML_Pointer_UI(
4264
+ # sprintf( __( 'You can translate strings related to global add-ons on the %sWPML String Translation page%s. Use the search on the top of that page to find the strings.', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page='.WPML_ST_FOLDER.'/menu/string-translation.php&context=wc_product_addons_strings').'">', '</a>' ),
4265
+ # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-product-add-ons-woocommerce-multilingual/',
4266
 
4267
+ msgid "You can translate strings related to global add-ons on the %sWPML String Translation page%s. Use the search on the top of that page to find the strings."
4268
  msgstr ""
4269
 
4270
+ #
4271
+ # $addons_section = new WPML_Editor_UI_Field_Section( sprintf( __( 'Product Add-ons Group "%s"', 'woocommerce-multilingual' ), $product_addon['name'] ) );
4272
+ #
4273
 
4274
+ msgid "Product Add-ons Group \"%s\""
4275
  msgstr ""
4276
 
4277
+ #
4278
+ # $labels_group = new WPML_Editor_UI_Field_Group( __( 'Options', 'woocommerce-multilingual' ) , true );
4279
+ #
4280
 
4281
+ msgid "Options"
4282
  msgstr ""
4283
 
4284
+ # foreach ( $product_addon['options'] as $option_id => $option ) {
4285
+ # $option_label_field = new WPML_Editor_UI_Single_Line_Field( 'addon_'.$addon_id.'_option_'.$option_id.'_label', __( 'Label', 'woocommerce-multilingual' ), $data, false );
4286
+ # $labels_group->add_field( $option_label_field );
4287
 
4288
+ msgid "Label"
4289
  msgstr ""
4290
 
4291
+ # $pointer_ui = new WCML_Pointer_UI(
4292
+ # sprintf( __( 'You can translate the Group Name, Group Description and every Option Label of your product add-on on the %sWooCommerce product translation page%s', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page=wpml-wcml').'">', '</a>' ),
4293
+ # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-product-add-ons-woocommerce-multilingual/',
4294
 
4295
+ msgid "You can translate the Group Name, Group Description and every Option Label of your product add-on on the %sWooCommerce product translation page%s"
4296
  msgstr ""
4297
 
4298
+ #
4299
+ # $tabs_section = new WPML_Editor_UI_Field_Section( __( 'Product tabs', 'woocommerce-multilingual' ) );
4300
+ #
4301
 
4302
+ msgid "Product tabs"
4303
  msgstr ""
4304
 
4305
+ # $group->add_field( $tab_field );
4306
+ # $tab_field = new WPML_Editor_UI_Single_Line_Field( 'coretab_' . $prod_tab['id'].'_heading' , __( 'Heading', 'woocommerce-multilingual' ), $data, false );
4307
+ # $group->add_field( $tab_field );
4308
 
4309
+ msgid "Heading"
4310
  msgstr ""
4311
 
4312
+ # $pointer_ui = new WCML_Pointer_UI(
4313
+ # sprintf( __( 'You can translate your custom product tabs on the %sWooCommerce product translation page%s', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page=wpml-wcml').'">', '</a>' ),
4314
+ # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-tab-manager-woocommerce-multilingual/',
4315
 
4316
+ msgid "You can translate your custom product tabs on the %sWooCommerce product translation page%s"
4317
  msgstr ""
4318
 
4319
+ # 'label' => get_woocommerce_currency_symbol( $currency_code ),
4320
+ # 'description' => __( 'One-off cost for the booking as a whole.', 'woocommerce-bookings' ),
4321
+ # 'value' => get_post_meta( $post_id, '_wc_booking_cost_' . $currency_code, true ),
4322
 
4323
+ msgid "One-off cost for the booking as a whole."
4324
  msgstr ""
4325
 
4326
+ # 'label' => get_woocommerce_currency_symbol( $currency_code ),
4327
+ # 'description' => __( 'The cost is displayed to the user on the frontend. Leave blank to have it calculated for you. If a booking has varying costs, this will be prefixed with the word "from:".', 'woocommerce-bookings' ),
4328
+ # 'value' => get_post_meta( $post_id, '_wc_display_cost_' . $currency_code, true ),
4329
 
4330
+ msgid "The cost is displayed to the user on the frontend. Leave blank to have it calculated for you. If a booking has varying costs, this will be prefixed with the word \"from:\"."
4331
  msgstr ""
4332
 
4333
+ #
4334
+ # $bookings_section = new WPML_Editor_UI_Field_Section( __( 'Bookings', 'woocommerce-multilingual' ) );
4335
+ #
4336
 
4337
+ msgid "Bookings"
4338
  msgstr ""
4339
 
4340
+ # $group = new WPML_Editor_UI_Field_Group( '', true );
4341
+ # $booking_field = new WPML_Editor_UI_Single_Line_Field( '_wc_booking_resouce_label', __( 'Resources Label', 'woocommerce-multilingual' ), $data, true );
4342
+ # $group->add_field( $booking_field );
4343
 
4344
+ msgid "Resources Label"
4345
  msgstr ""
4346
 
4347
+ # if ( $orig_resources ) {
4348
+ # $group = new WPML_Editor_UI_Field_Group( __( 'Resources', 'woocommerce-multilingual' ) );
4349
+ # $group_title = __( 'Resources', 'woocommerce-multilingual' );
4350
 
4351
+ msgid "Resources"
4352
  msgstr ""
4353
 
4354
+ # $divider = true;
4355
+ # $group_title = __( 'Person Types', 'woocommerce-multilingual' );
4356
+ # foreach ( $original_persons as $person_id ) {
4357
 
4358
+ msgid "Person Types"
4359
  msgstr ""
4360
 
4361
+ #
4362
+ # $person_field = new WPML_Editor_UI_Single_Line_Field( 'bookings-person_' . $person_id . '_title', __( 'Person Type Name', 'woocommerce-multilingual' ), $data, false );
4363
+ # $group->add_field( $person_field );
4364
 
4365
+ msgid "Person Type Name"
4366
  msgstr ""
4367
 
4368
+ # if ( $meta_key == '_wc_booking_resouce_label' ) {
4369
+ # return __( 'Resources label', 'woocommerce-multilingual' );
4370
  # }
4371
 
4372
+ msgid "Resources label"
4373
  msgstr ""
4374
 
4375
+ # $pointer_ui = new WCML_Pointer_UI(
4376
+ # sprintf( __( 'You can translate the titles of your custom Resources on the %sWooCommerce product translation page%s', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page=wpml-wcml').'">', '</a>' ),
4377
+ # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-bookings-woocommerce-multilingual/',
4378
 
4379
+ msgid "You can translate the titles of your custom Resources on the %sWooCommerce product translation page%s"
4380
  msgstr ""
4381
 
4382
+ # $pointer_ui = new WCML_Pointer_UI(
4383
+ # sprintf( __( 'You can translate the Person Type Name and Description on the %sWooCommerce product translation page%s', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page=wpml-wcml').'">', '</a>' ),
4384
+ # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-bookings-woocommerce-multilingual/',
4385
 
4386
+ msgid "You can translate the Person Type Name and Description on the %sWooCommerce product translation page%s"
4387
  msgstr ""
4388
 
4389
+ # <tr valign="top">
4390
+ # <th scope="row"><?php _e( 'Booking currency', 'woocommerce-multilingual' ); ?></th>
4391
+ # <td>
4392
 
4393
+ msgid "Booking currency"
4394
  msgstr ""
4395
 
4396
+ # if( $this->is_subscriptions_product( $product_id ) || $this->new_subscription ){
4397
+ # $labels[ '_regular_price' ] = __( 'Subscription Price', 'woocommerce-multilingual' );
4398
+ # $labels[ '_subscription_sign_up_fee' ] = __( 'Sign-up Fee', 'woocommerce-multilingual' );
4399
 
4400
+ msgid "Subscription Price"
4401
  msgstr ""
4402
 
4403
+ # $labels[ '_regular_price' ] = __( 'Subscription Price', 'woocommerce-multilingual' );
4404
+ # $labels[ '_subscription_sign_up_fee' ] = __( 'Sign-up Fee', 'woocommerce-multilingual' );
4405
  # }
4406
 
4407
+ msgid "Sign-up Fee"
4408
  msgstr ""
4409
 
4410
+ # $pointer_ui = new WCML_Pointer_UI(
4411
+ # sprintf( __( 'You can translate strings related to subscription products on the %sWPML String Translation page%s. Use the search on the top of that page to find the strings.', 'woocommerce-multilingual' ), '<a href="'.admin_url('admin.php?page='.WPML_ST_FOLDER.'/menu/string-translation.php&context=woocommerce_subscriptions').'">', '</a>' ),
4412
+ # 'https://wpml.org/documentation/woocommerce-extensions-compatibility/translating-woocommerce-subscriptions-woocommerce-multilingual/',
4413
 
4414
+ msgid "You can translate strings related to subscription products on the %sWPML String Translation page%s. Use the search on the top of that page to find the strings."
4415
+ msgstr ""
4416
+
4417
+ # $message = '<div><p class="icl_cyan_box">';
4418
+ # $message .= sprintf(__('To translate Extra Options strings please save %s and go to the <b><a href="%s">String Translation interface</a></b>', 'woocommerce-multilingual'), $text, admin_url('admin.php?page='.WPML_ST_FOLDER.'/menu/string-translation.php&context=wc_extra_product_options'));
4419
+ # $message .= '</p></div>';
4420
+
4421
+ msgid "To translate Extra Options strings please save %s and go to the <b><a href=\"%s\">String Translation interface</a></b>"
4422
  msgstr ""
locale/woocommerce-multilingual-ar.mo CHANGED
Binary file
locale/woocommerce-multilingual-de_DE.mo CHANGED
Binary file
locale/woocommerce-multilingual-el.mo CHANGED
Binary file
locale/woocommerce-multilingual-es_ES.mo CHANGED
Binary file
locale/woocommerce-multilingual-fr_FR.mo CHANGED
Binary file
locale/woocommerce-multilingual-he_IL.mo CHANGED
Binary file
locale/woocommerce-multilingual-it_IT.mo CHANGED
Binary file
locale/woocommerce-multilingual-ja.mo CHANGED
Binary file
locale/woocommerce-multilingual-ko_KR.mo CHANGED
Binary file
locale/woocommerce-multilingual-nl_NL.mo CHANGED
Binary file
locale/woocommerce-multilingual-pl_PL.mo CHANGED
Binary file
locale/woocommerce-multilingual-pt_BR.mo CHANGED
Binary file
locale/woocommerce-multilingual-pt_PT.mo CHANGED
Binary file
locale/woocommerce-multilingual-ru_RU.mo CHANGED
Binary file
locale/woocommerce-multilingual-sv_SE.mo CHANGED
Binary file
locale/woocommerce-multilingual-uk_UA.mo CHANGED
Binary file
locale/woocommerce-multilingual-vi.mo CHANGED
Binary file
locale/woocommerce-multilingual-zh_CN.mo CHANGED
Binary file
locale/woocommerce-multilingual-zh_TW.mo CHANGED
Binary file
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: CMS, woocommerce, commerce, ecommerce, e-commerce, products, WPML, multili
5
  License: GPLv2
6
  Requires at least: 3.9
7
  Tested up to: 4.8.1
8
- Stable tag: 4.2.1.1
9
 
10
  Allows running fully multilingual e-commerce sites using WooCommerce and WPML.
11
 
@@ -142,6 +142,23 @@ WooCommerce Multilingual is compatible with all major WooCommerce extensions. We
142
 
143
  == Changelog ==
144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
145
  = 4.2.1.1 =
146
  * WC Subscriptions compatibility error
147
 
5
  License: GPLv2
6
  Requires at least: 3.9
7
  Tested up to: 4.8.1
8
+ Stable tag: 4.2.2
9
 
10
  Allows running fully multilingual e-commerce sites using WooCommerce and WPML.
11
 
142
 
143
  == Changelog ==
144
 
145
+ = 4.2.2 =
146
+ * Added a filter to include links to the String Translation table for custom options/settings in Woocommerce Gateway settings panel
147
+ * Added logic to display a warning in the back-end when built in taxonomies translation status (set to 'translate') is overridden
148
+ * Added the ability to translate the currency switcher format in String Translation
149
+ * My account Bookings list page displays bookings in all languages
150
+ * Updating variable product does not refresh product visibility terms
151
+ * Currency switcher doesn't reload the product page if # is present in the URL
152
+ * Fixed a PHP fatal error that was occurring when using WooCommerce Multilingual together with Sensei
153
+ * The 'featured' product field was not synchronized across product translations
154
+ * When updating a translation, the product translation slug was overwritten if product contains page builders fields
155
+ * The 'reset password' form in a secondary language pointed to a 404 error
156
+ * "product/%product_cat%" product permalink doesn't work for products without category assigned in second language if "Uncategorized" string not translated in String Translation module
157
+ * It was not possible to set the custom price value in secondary currencies as '0'
158
+ * It was not possible to translate attribute slugs if the attributes base was not translated
159
+ * Currency switcher styles were not loaded when using only a shortcode currency switcher
160
+ * The customer order email was sent in default language when the 'Processing' button was clicked on the back-end
161
+
162
  = 4.2.1.1 =
163
  * WC Subscriptions compatibility error
164
 
res/js/lock_fields.js CHANGED
@@ -123,7 +123,7 @@ jQuery(document).ready(function($){
123
  });
124
 
125
 
126
- $('#product_attributes input[type="checkbox"]').each(function(){
127
  $(this).attr('disabled','disabled');
128
  $(this).after($('.wcml_lock_img').clone().removeClass('wcml_lock_img').show());
129
  });
123
  });
124
 
125
 
126
+ $('#product_attributes input[type="checkbox"],#_featured').each(function(){
127
  $(this).attr('disabled','disabled');
128
  $(this).after($('.wcml_lock_img').clone().removeClass('wcml_lock_img').show());
129
  });
res/js/lock_fields.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(a){var b,c=["_virtual","_downloadable","product-type","_backorders","_manage_stock","_stock","_stock_status","_sold_individually","comment_status","_tax_status","_tax_class","parent_id","crosssell_ids","upsell_ids","grouped_products","product_shipping_class"];for(1==unlock_fields.file_paths&&c.push("_download_type"),c=c.concat(non_standard_fields.ids),a(".wcml_prod_hidden_notice").prependTo("#woocommerce-product-data"),b=0;b<c.length;b++)a("#"+c[b]).attr("disabled","disabled"),a("#"+c[b]).after(a(".wcml_lock_img").clone().removeClass("wcml_lock_img").show());var d=["add_variation","link_all_variations","attribute_taxonomy","save_attributes","add_new_attribute","product_attributes .remove_row","add_attribute","select_all_attributes","select_no_attributes","edit-visibility"];for(d=d.concat(non_standard_fields.classes),1==unlock_fields.file_paths&&(d.push("upload_file_button"),d.push("insert"),d.push("delete"),a(".upload_file_button,.insert,.delete").bind({click:function(a){return!1}})),b=0;b<d.length;b++)a("."+d[b]).attr("disabled","disabled"),a("."+d[b]).after(a(".wcml_lock_img").clone().removeClass("wcml_lock_img").show());a("#visibility .edit-visibility span").bind({click:function(a){return!1}}),a(".remove_variation").each(function(){a(this).attr("disabled","disabled"),a(this).after(a(".wcml_lock_img").clone().removeClass("wcml_lock_img").show().css("float","right"))});var e=["_width","_height","_sku","_length","_weight","product_length","_regular_price","_sale_price","_sale_price_dates_from","_sale_price_dates_to"];for(1==unlock_fields.file_paths&&(e.push("_download_limit"),e.push("_download_expiry"),e.push("_wc_file_names[]"),e.push("_wc_file_urls[]")),e=e.concat(non_standard_fields.input_names),1==unlock_fields.menu_order&&e.push("menu_order"),b=0;b<e.length;b++)a('input[name="'+e[b]+'"]').attr("readonly","readonly"),a(".dimensions_field span.wrap").css("float","left"),("_width"==e[b]||"_height"==e[b]||"_length"==e[b])&&(a('input[name="'+e[b]+'"]').css("margin-right",0),a('input[name="'+e[b]+'"]').css("float","none"),a('input[name="'+e[b]+'"]').css("width","29%")),"_sale_price_dates_to"==e[b]?a('input[name="'+e[b]+'"]').after(a(".wcml_lock_img").clone().removeClass("wcml_lock_img").css("float","left").show()):a('input[name="'+e[b]+'"]').after(a(".wcml_lock_img").clone().removeClass("wcml_lock_img").show());a('#product_attributes td textarea,#product_attributes input[type="text"]').each(function(){a(this).attr("readonly","readonly"),a(this).after(a(".wcml_lock_img").clone().removeClass("wcml_lock_img").show())}),a('#product_attributes input[type="checkbox"]').each(function(){a(this).attr("disabled","disabled"),a(this).after(a(".wcml_lock_img").clone().removeClass("wcml_lock_img").show())}),a('form#post input[type="submit"]').click(function(){for(b=0;b<c.length;b++)a("#"+c[b]).removeAttr("disabled");a('.woocommerce_variation select,#variable_product_options .toolbar select,.woocommerce_variation input[type="checkbox"],#product_attributes input[type="checkbox"]').each(function(){a(this).removeAttr("disabled")})})});var wcml_lock_variation_fields=function(a){var b=jQuery(".woocommerce_variation>h3 select").attr("disabled");if("undefined"==typeof b||b===!1){jQuery(".woocommerce_variation>h3 select, #variable_product_options .toolbar select, .show_if_variation_manage_stock select").each(function(){jQuery(this).attr("disabled","disabled"),jQuery(this).parent().append('<input type="hidden" name="'+jQuery(this).attr("name")+'" value="'+jQuery(this).val()+'" />'),jQuery(this).after(jQuery(".wcml_lock_img").clone().removeClass("wcml_lock_img").show())});var c=0,d=["_width","_height","_sku","_length","_weight","product_length","_regular_price","_sale_price","_sale_price_dates_from","_sale_price_dates_to","_stock","_download_limit","_download_expiry"];for(c=0;c<d.length;c++)jQuery('input[name^="variable'+d[c]+'"]').each(function(){jQuery(this).attr("readonly","readonly"),jQuery(this).after(jQuery(".wcml_lock_img").clone().removeClass("wcml_lock_img").show())});var e=["_enabled","_is_downloadable","_is_virtual","_manage_stock"];for(c=0;c<e.length;c++)jQuery('input[name^="variable'+e[c]+'"]').each(function(){jQuery(this).attr("disabled","disabled"),jQuery(this).parent().append('<input type="hidden" name="'+jQuery(this).attr("name")+'" value="'+jQuery(this).val()+'" />'),jQuery(this).after(jQuery(".wcml_lock_img").clone().removeClass("wcml_lock_img").show())});var f=["_stock_status","_shipping_class","_tax_class"];for(c=0;c<f.length;c++)jQuery('select[name^="variable'+f[c]+'"]').each(function(){jQuery(this).attr("disabled","disabled"),jQuery(this).parent().append('<input type="hidden" name="'+jQuery(this).attr("name")+'" value="'+jQuery(this).val()+'" />'),jQuery(this).after(jQuery(".wcml_lock_img").clone().removeClass("wcml_lock_img").show())});if(a)for(var g in a)1==a[g]&&(jQuery('input[name^="_wc_variation_file_names['+g+']"]').each(function(){jQuery(this).attr("readonly","readonly")}),jQuery('input[name^="_wc_variation_file_urls['+g+']"]').each(function(){jQuery(this).attr("readonly","readonly"),jQuery(this).closest("tr").find(".upload_file_button").attr("disabled","disabled"),jQuery(this).closest("tr").find(".delete").attr("disabled","disabled"),jQuery(this).closest("tr").find(".delete").after(jQuery(".wcml_lock_img").clone().removeClass("wcml_lock_img").show().css("float","right"))}),jQuery('input[name^="_wc_variation_file_urls['+g+']"]').closest("table").find(".insert").attr("disabled","disabled"),jQuery('input[name^="_wc_variation_file_urls['+g+']"]').closest("table").find(".insert").after(jQuery(".wcml_lock_img").clone().removeClass("wcml_lock_img").show().css("float","left")))}};
1
+ jQuery(document).ready(function($){var i;var ids=["_virtual","_downloadable","product-type","_backorders","_manage_stock","_stock","_stock_status","_sold_individually","comment_status","_tax_status","_tax_class","parent_id","crosssell_ids","upsell_ids","grouped_products","product_shipping_class"];if(unlock_fields.file_paths==1){ids.push("_download_type")}ids=ids.concat(non_standard_fields.ids);$(".wcml_prod_hidden_notice").prependTo("#woocommerce-product-data");for(i=0;i<ids.length;i++){$("#"+ids[i]).attr("disabled","disabled");$("#"+ids[i]).after($(".wcml_lock_img").clone().removeClass("wcml_lock_img").show())}var buttons=["add_variation","link_all_variations","attribute_taxonomy","save_attributes","add_new_attribute","product_attributes .remove_row","add_attribute","select_all_attributes","select_no_attributes","edit-visibility"];buttons=buttons.concat(non_standard_fields.classes);if(unlock_fields.file_paths==1){buttons.push("upload_file_button");buttons.push("insert");buttons.push("delete");$(".upload_file_button,.insert,.delete").bind({click:function(e){return false}})}for(i=0;i<buttons.length;i++){$("."+buttons[i]).attr("disabled","disabled");$("."+buttons[i]).after($(".wcml_lock_img").clone().removeClass("wcml_lock_img").show())}$("#visibility .edit-visibility span").bind({click:function(e){return false}});$(".remove_variation").each(function(){$(this).attr("disabled","disabled");$(this).after($(".wcml_lock_img").clone().removeClass("wcml_lock_img").show().css("float","right"))});var inpt_names=["_width","_height","_sku","_length","_weight","product_length","_regular_price","_sale_price","_sale_price_dates_from","_sale_price_dates_to"];if(unlock_fields.file_paths==1){inpt_names.push("_download_limit");inpt_names.push("_download_expiry");inpt_names.push("_wc_file_names[]");inpt_names.push("_wc_file_urls[]")}inpt_names=inpt_names.concat(non_standard_fields.input_names);if(unlock_fields.menu_order==1){inpt_names.push("menu_order")}for(i=0;i<inpt_names.length;i++){$('input[name="'+inpt_names[i]+'"]').attr("readonly","readonly");$(".dimensions_field span.wrap").css("float","left");if(inpt_names[i]=="_width"||inpt_names[i]=="_height"||inpt_names[i]=="_length"){$('input[name="'+inpt_names[i]+'"]').css("margin-right",0);$('input[name="'+inpt_names[i]+'"]').css("float","none");$('input[name="'+inpt_names[i]+'"]').css("width","29%")}if(inpt_names[i]=="_sale_price_dates_to"){$('input[name="'+inpt_names[i]+'"]').after($(".wcml_lock_img").clone().removeClass("wcml_lock_img").css("float","left").show())}else{$('input[name="'+inpt_names[i]+'"]').after($(".wcml_lock_img").clone().removeClass("wcml_lock_img").show())}}$('#product_attributes td textarea,#product_attributes input[type="text"]').each(function(){$(this).attr("readonly","readonly");$(this).after($(".wcml_lock_img").clone().removeClass("wcml_lock_img").show())});$('#product_attributes input[type="checkbox"],#_featured').each(function(){$(this).attr("disabled","disabled");$(this).after($(".wcml_lock_img").clone().removeClass("wcml_lock_img").show())});$('form#post input[type="submit"]').click(function(){for(i=0;i<ids.length;i++){$("#"+ids[i]).removeAttr("disabled")}$('.woocommerce_variation select,#variable_product_options .toolbar select,.woocommerce_variation input[type="checkbox"],#product_attributes input[type="checkbox"]').each(function(){$(this).removeAttr("disabled")})})});var wcml_lock_variation_fields=function(file_path_sync){var check_attr=jQuery(".woocommerce_variation>h3 select").attr("disabled");if(typeof check_attr!==typeof undefined&&check_attr!==false){return}jQuery(".woocommerce_variation>h3 select, #variable_product_options .toolbar select, .show_if_variation_manage_stock select").each(function(){jQuery(this).attr("disabled","disabled");jQuery(this).parent().append('<input type="hidden" name="'+jQuery(this).attr("name")+'" value="'+jQuery(this).val()+'" />');jQuery(this).after(jQuery(".wcml_lock_img").clone().removeClass("wcml_lock_img").show())});var i=0;var inpt_names=["_width","_height","_sku","_length","_weight","product_length","_regular_price","_sale_price","_sale_price_dates_from","_sale_price_dates_to","_stock","_download_limit","_download_expiry"];for(i=0;i<inpt_names.length;i++){jQuery('input[name^="variable'+inpt_names[i]+'"]').each(function(){jQuery(this).attr("readonly","readonly");jQuery(this).after(jQuery(".wcml_lock_img").clone().removeClass("wcml_lock_img").show())})}var var_checkboxes=["_enabled","_is_downloadable","_is_virtual","_manage_stock"];for(i=0;i<var_checkboxes.length;i++){jQuery('input[name^="variable'+var_checkboxes[i]+'"]').each(function(){jQuery(this).attr("disabled","disabled");if(jQuery(this).prop("checked")){jQuery(this).parent().append('<input type="hidden" name="'+jQuery(this).attr("name")+'" value="'+jQuery(this).val()+'" />')}jQuery(this).after(jQuery(".wcml_lock_img").clone().removeClass("wcml_lock_img").show())})}var var_selectboxes=["_stock_status","_shipping_class","_tax_class"];for(i=0;i<var_selectboxes.length;i++){jQuery('select[name^="variable'+var_selectboxes[i]+'"]').each(function(){jQuery(this).attr("disabled","disabled");jQuery(this).parent().append('<input type="hidden" name="'+jQuery(this).attr("name")+'" value="'+jQuery(this).val()+'" />');jQuery(this).after(jQuery(".wcml_lock_img").clone().removeClass("wcml_lock_img").show())})}if(file_path_sync){for(var key in file_path_sync){if(file_path_sync[key]==1){jQuery('input[name^="_wc_variation_file_names['+key+']"]').each(function(){jQuery(this).attr("readonly","readonly")});jQuery('input[name^="_wc_variation_file_urls['+key+']"]').each(function(){jQuery(this).attr("readonly","readonly");jQuery(this).closest("tr").find(".upload_file_button").attr("disabled","disabled");jQuery(this).closest("tr").find(".delete").attr("disabled","disabled");jQuery(this).closest("tr").find(".delete").after(jQuery(".wcml_lock_img").clone().removeClass("wcml_lock_img").show().css("float","right"))});jQuery('input[name^="_wc_variation_file_urls['+key+']"]').closest("table").find(".insert").attr("disabled","disabled");jQuery('input[name^="_wc_variation_file_urls['+key+']"]').closest("table").find(".insert").after(jQuery(".wcml_lock_img").clone().removeClass("wcml_lock_img").show().css("float","left"))}}}};
res/js/wcml-multi-currency.js CHANGED
@@ -38,19 +38,23 @@ function wcml_load_currency( currency, force_switch ){
38
  }else if( typeof response.prevent_switching !== 'undefined' ){
39
  jQuery('body').append( response.prevent_switching );
40
  }else{
41
- if(typeof wcml_mc_settings.w3tc !== 'undefined'){
42
- var original_url = window.location.href;
43
- original_url = original_url.replace(/&wcmlc(\=[^&]*)?(?=&|$)|wcmlc(\=[^&]*)?(&|$)/, '');
44
- original_url = original_url.replace(/\?$/, '');
45
 
46
- var url_glue = original_url.indexOf('?') != -1 ? '&' : '?';
47
- var target_location = original_url + url_glue + 'wcmlc=' + currency;
48
 
49
- }else{
50
- var target_location = window.location.href;
51
- }
 
 
 
 
 
 
52
 
 
53
  window.location = target_location;
 
54
  }
55
  }
56
  });
38
  }else if( typeof response.prevent_switching !== 'undefined' ){
39
  jQuery('body').append( response.prevent_switching );
40
  }else{
 
 
 
 
41
 
42
+ var target_location = window.location.href;
43
+ if(-1 !== target_location.indexOf('#') || wcml_mc_settings.w3tc ){
44
 
45
+ var url_dehash = target_location.split('#');
46
+ var hash = url_dehash.length > 1 ? '#' + url_dehash[1] : '';
47
+
48
+ target_location = url_dehash[0]
49
+ .replace(/&wcmlc(\=[^&]*)?(?=&|$)|wcmlc(\=[^&]*)?(&|$)/, '')
50
+ .replace(/\?$/, '');
51
+
52
+ var url_glue = target_location.indexOf('?') != -1 ? '&' : '?';
53
+ target_location += url_glue + 'wcmlc=' + currency + hash;
54
 
55
+ }
56
  window.location = target_location;
57
+
58
  }
59
  }
60
  });
res/js/wcml-multi-currency.min.js CHANGED
@@ -1 +1 @@
1
- function wcml_load_currency(a,b){var c=jQuery('<img style="margin-left:10px;" width="16" heigth="16" src="'+wcml_mc_settings.wcml_spinner+'" />');jQuery(".wcml_currency_switcher").after(),c.insertAfter(jQuery(".wcml_currency_switcher")),"undefined"==typeof b&&(b=0),jQuery.ajax({type:"post",url:woocommerce_params.ajax_url,dataType:"json",data:{action:"wcml_switch_currency",currency:a,force_switch:b},success:function(b){if("undefined"!=typeof b.error)alert(b.error);else if("undefined"!=typeof b.prevent_switching)jQuery("body").append(b.prevent_switching);else{if("undefined"!=typeof wcml_mc_settings.w3tc){var c=window.location.href;c=c.replace(/&wcmlc(\=[^&]*)?(?=&|$)|wcmlc(\=[^&]*)?(&|$)/,""),c=c.replace(/\?$/,"");var d=-1!=c.indexOf("?")?"&":"?",e=c+d+"wcmlc="+a}else var e=window.location.href;window.location=e}}})}jQuery(document).ready(function(){jQuery(document).on("click",".wcml_currency_switcher a",function(a){return a.preventDefault(),jQuery(this).is(":disabled")||jQuery(this).parent().hasClass("wcml-cs-active-currency")||jQuery(this).hasClass("wcml-cs-active-currency")?!1:(jQuery(this).off(a),void wcml_load_currency(jQuery(this).attr("rel")))}),"undefined"!=typeof woocommerce_price_slider_params&&(woocommerce_price_slider_params.currency_symbol=wcml_mc_settings.current_currency.symbol)});
1
+ jQuery(document).ready(function(){jQuery(document).on("click",".wcml_currency_switcher a",function(a){a.preventDefault();if(jQuery(this).is(":disabled")||jQuery(this).parent().hasClass("wcml-cs-active-currency")||jQuery(this).hasClass("wcml-cs-active-currency")){return false}else{jQuery(this).off(a)}wcml_load_currency(jQuery(this).attr("rel"))});if(typeof woocommerce_price_slider_params!=="undefined"){woocommerce_price_slider_params.currency_symbol=wcml_mc_settings.current_currency.symbol}});function wcml_load_currency(a,b){var c=jQuery('<img style="margin-left:10px;" width="16" heigth="16" src="'+wcml_mc_settings.wcml_spinner+'" />');jQuery(".wcml_currency_switcher").after();c.insertAfter(jQuery(".wcml_currency_switcher"));if(typeof b==="undefined"){b=0}jQuery.ajax({type:"post",url:woocommerce_params.ajax_url,dataType:"json",data:{action:"wcml_switch_currency",currency:a,force_switch:b},success:function(f){if(typeof f.error!=="undefined"){alert(f.error)}else{if(typeof f.prevent_switching!=="undefined"){jQuery("body").append(f.prevent_switching)}else{var h=window.location.href;if(-1!==h.indexOf("#")||wcml_mc_settings.w3tc){var e=h.split("#");var g=e.length>1?"#"+e[1]:"";h=e[0].replace(/&wcmlc(\=[^&]*)?(?=&|$)|wcmlc(\=[^&]*)?(&|$)/,"").replace(/\?$/,"");var d=h.indexOf("?")!=-1?"&":"?";h+=d+"wcmlc="+a+g}window.location=h}}}})};
templates/menus-wrap.twig CHANGED
@@ -4,10 +4,12 @@
4
  <a class="nav-tab {{ menu.products.active }}" href="{{ menu.products.url }}">{{ menu.products.title }}</a>
5
  {% if can_operate_options %}
6
  {% for key, taxonomy in menu.taxonomies %}
7
- <a class="js-tax-tab-{{ key }} nav-tab {{ taxonomy.active }}" href="{{ taxonomy.url }}" title="{{ taxonomy.title }}">
8
- {{ taxonomy.name }}
9
- {% if taxonomy.translated == false %}<i class="otgs-ico-warning"></i>{% endif %}
10
- </a>
 
 
11
  {% endfor %}
12
  {% if menu.custom_taxonomies.show %}
13
  <a class="nav-tab tax-custom-taxonomies {{ menu.custom_taxonomies.active }}" href="{{ menu.custom_taxonomies.url }}">
@@ -19,11 +21,12 @@
19
  {{ menu.attributes.name }}
20
  {% if menu.attributes.translated == false %}<i class="otgs-ico-warning"></i>{% endif %}
21
  </a>
22
-
23
- <a class="js-tax-tab-product_shipping_class nav-tab {{ menu.shipping_classes.active }}" href="{{ menu.shipping_classes.url }}"
24
- title="{{ menu.shipping_classes.title }}">{{ menu.shipping_classes.name }}
25
- {% if menu.shipping_classes.translated == false %}<i class="otgs-ico-warning"></i>{% endif %}
26
- </a>
 
27
  {% endif %}
28
 
29
  {% if can_manage_options %}
4
  <a class="nav-tab {{ menu.products.active }}" href="{{ menu.products.url }}">{{ menu.products.title }}</a>
5
  {% if can_operate_options %}
6
  {% for key, taxonomy in menu.taxonomies %}
7
+ {% if taxonomy.is_translatable %}
8
+ <a class="js-tax-tab-{{ key }} nav-tab {{ taxonomy.active }}" href="{{ taxonomy.url }}" title="{{ taxonomy.title }}">
9
+ {{ taxonomy.name }}
10
+ {% if taxonomy.translated == false %}<i class="otgs-ico-warning"></i>{% endif %}
11
+ </a>
12
+ {% endif %}
13
  {% endfor %}
14
  {% if menu.custom_taxonomies.show %}
15
  <a class="nav-tab tax-custom-taxonomies {{ menu.custom_taxonomies.active }}" href="{{ menu.custom_taxonomies.url }}">
21
  {{ menu.attributes.name }}
22
  {% if menu.attributes.translated == false %}<i class="otgs-ico-warning"></i>{% endif %}
23
  </a>
24
+ {% if menu.shipping_classes.is_translatable %}
25
+ <a class="js-tax-tab-product_shipping_class nav-tab {{ menu.shipping_classes.active }}" href="{{ menu.shipping_classes.url }}"
26
+ title="{{ menu.shipping_classes.title }}">{{ menu.shipping_classes.name }}
27
+ {% if menu.shipping_classes.translated == false %}<i class="otgs-ico-warning"></i>{% endif %}
28
+ </a>
29
+ {% endif %}
30
  {% endif %}
31
 
32
  {% if can_manage_options %}
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit7428252d40ecd68dca24189fb1e0bbda::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit26b78b895c369b76ca5b5c1e11d29c8f::getLoader();
vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInite917294c6a0811f3e39ea77404f0eb46::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit08ea26d83f29a065ad634d98bd3ceb1f::getLoader();
vendor/composer/autoload_classmap.php CHANGED
@@ -429,6 +429,7 @@ return array(
429
  'WCML_WC_Name_Your_Price' => $baseDir . '/compatibility/class-wcml-wc-name-your-price.php',
430
  'WCML_WC_Product_Bundles_Items' => $baseDir . '/compatibility/includes/class-wcml-wc-product-bundles-items.php',
431
  'WCML_WC_Shipping' => $baseDir . '/inc/class-wcml-wc-shipping.php',
 
432
  'WCML_WC_Strings' => $baseDir . '/inc/class-wcml-wc-strings.php',
433
  'WCML_WC_Subscriptions' => $baseDir . '/compatibility/class-wcml-wc-subscriptions.php',
434
  'WCML_WPSEO' => $baseDir . '/compatibility/class-wcml-wpseo.php',
429
  'WCML_WC_Name_Your_Price' => $baseDir . '/compatibility/class-wcml-wc-name-your-price.php',
430
  'WCML_WC_Product_Bundles_Items' => $baseDir . '/compatibility/includes/class-wcml-wc-product-bundles-items.php',
431
  'WCML_WC_Shipping' => $baseDir . '/inc/class-wcml-wc-shipping.php',
432
+ 'WCML_WC_Shortcode_Product_Category' => $baseDir . '/classes/shortcodes/class-wcml-wc-shortcode-product-category.php',
433
  'WCML_WC_Strings' => $baseDir . '/inc/class-wcml-wc-strings.php',
434
  'WCML_WC_Subscriptions' => $baseDir . '/compatibility/class-wcml-wc-subscriptions.php',
435
  'WCML_WPSEO' => $baseDir . '/compatibility/class-wcml-wpseo.php',
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit7428252d40ecd68dca24189fb1e0bbda
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit7428252d40ecd68dca24189fb1e0bbda
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit7428252d40ecd68dca24189fb1e0bbda', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit7428252d40ecd68dca24189fb1e0bbda', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInit7428252d40ecd68dca24189fb1e0bbda::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit26b78b895c369b76ca5b5c1e11d29c8f
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit26b78b895c369b76ca5b5c1e11d29c8f', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit26b78b895c369b76ca5b5c1e11d29c8f', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInit26b78b895c369b76ca5b5c1e11d29c8f::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInite917294c6a0811f3e39ea77404f0eb46 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInite917294c6a0811f3e39ea77404f0eb46 {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInite917294c6a0811f3e39ea77404f0eb46', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInite917294c6a0811f3e39ea77404f0eb46', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInit08ea26d83f29a065ad634d98bd3ceb1f {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit08ea26d83f29a065ad634d98bd3ceb1f', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit08ea26d83f29a065ad634d98bd3ceb1f', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit7428252d40ecd68dca24189fb1e0bbda
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'C' =>
@@ -461,6 +461,7 @@ class ComposerStaticInit7428252d40ecd68dca24189fb1e0bbda
461
  'WCML_WC_Name_Your_Price' => __DIR__ . '/../..' . '/compatibility/class-wcml-wc-name-your-price.php',
462
  'WCML_WC_Product_Bundles_Items' => __DIR__ . '/../..' . '/compatibility/includes/class-wcml-wc-product-bundles-items.php',
463
  'WCML_WC_Shipping' => __DIR__ . '/../..' . '/inc/class-wcml-wc-shipping.php',
 
464
  'WCML_WC_Strings' => __DIR__ . '/../..' . '/inc/class-wcml-wc-strings.php',
465
  'WCML_WC_Subscriptions' => __DIR__ . '/../..' . '/compatibility/class-wcml-wc-subscriptions.php',
466
  'WCML_WPSEO' => __DIR__ . '/../..' . '/compatibility/class-wcml-wpseo.php',
@@ -479,10 +480,10 @@ class ComposerStaticInit7428252d40ecd68dca24189fb1e0bbda
479
  public static function getInitializer(ClassLoader $loader)
480
  {
481
  return \Closure::bind(function () use ($loader) {
482
- $loader->prefixLengthsPsr4 = ComposerStaticInit7428252d40ecd68dca24189fb1e0bbda::$prefixLengthsPsr4;
483
- $loader->prefixDirsPsr4 = ComposerStaticInit7428252d40ecd68dca24189fb1e0bbda::$prefixDirsPsr4;
484
- $loader->prefixesPsr0 = ComposerStaticInit7428252d40ecd68dca24189fb1e0bbda::$prefixesPsr0;
485
- $loader->classMap = ComposerStaticInit7428252d40ecd68dca24189fb1e0bbda::$classMap;
486
 
487
  }, null, ClassLoader::class);
488
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit26b78b895c369b76ca5b5c1e11d29c8f
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'C' =>
461
  'WCML_WC_Name_Your_Price' => __DIR__ . '/../..' . '/compatibility/class-wcml-wc-name-your-price.php',
462
  'WCML_WC_Product_Bundles_Items' => __DIR__ . '/../..' . '/compatibility/includes/class-wcml-wc-product-bundles-items.php',
463
  'WCML_WC_Shipping' => __DIR__ . '/../..' . '/inc/class-wcml-wc-shipping.php',
464
+ 'WCML_WC_Shortcode_Product_Category' => __DIR__ . '/../..' . '/classes/shortcodes/class-wcml-wc-shortcode-product-category.php',
465
  'WCML_WC_Strings' => __DIR__ . '/../..' . '/inc/class-wcml-wc-strings.php',
466
  'WCML_WC_Subscriptions' => __DIR__ . '/../..' . '/compatibility/class-wcml-wc-subscriptions.php',
467
  'WCML_WPSEO' => __DIR__ . '/../..' . '/compatibility/class-wcml-wpseo.php',
480
  public static function getInitializer(ClassLoader $loader)
481
  {
482
  return \Closure::bind(function () use ($loader) {
483
+ $loader->prefixLengthsPsr4 = ComposerStaticInit26b78b895c369b76ca5b5c1e11d29c8f::$prefixLengthsPsr4;
484
+ $loader->prefixDirsPsr4 = ComposerStaticInit26b78b895c369b76ca5b5c1e11d29c8f::$prefixDirsPsr4;
485
+ $loader->prefixesPsr0 = ComposerStaticInit26b78b895c369b76ca5b5c1e11d29c8f::$prefixesPsr0;
486
+ $loader->classMap = ComposerStaticInit26b78b895c369b76ca5b5c1e11d29c8f::$classMap;
487
 
488
  }, null, ClassLoader::class);
489
  }
wpml-config.xml CHANGED
@@ -75,6 +75,7 @@
75
  <taxonomy translate="1">product_tag</taxonomy>
76
  <taxonomy translate="0">product_type</taxonomy>
77
  <taxonomy translate="0">shop_order_status</taxonomy>
 
78
  <taxonomy translate="1">product_shipping_class</taxonomy>
79
  </taxonomies>
80
  <admin-texts>
75
  <taxonomy translate="1">product_tag</taxonomy>
76
  <taxonomy translate="0">product_type</taxonomy>
77
  <taxonomy translate="0">shop_order_status</taxonomy>
78
+ <taxonomy translate="0">product_visibility</taxonomy>
79
  <taxonomy translate="1">product_shipping_class</taxonomy>
80
  </taxonomies>
81
  <admin-texts>
wpml-woocommerce.php CHANGED
@@ -8,14 +8,14 @@
8
  Text Domain: woocommerce-multilingual
9
  Requires at least: 3.9
10
  Tested up to: 4.8.1
11
- Version: 4.2.1.1
12
  */
13
 
14
  if ( defined( 'WCML_VERSION' ) ) {
15
  return;
16
  }
17
 
18
- define( 'WCML_VERSION', '4.2.1.1' );
19
  define( 'WCML_PLUGIN_PATH', dirname( __FILE__ ) );
20
  define( 'WCML_PLUGIN_FOLDER', basename( WCML_PLUGIN_PATH ) );
21
  define( 'WCML_LOCALE_PATH', WCML_PLUGIN_PATH . '/locale' );
8
  Text Domain: woocommerce-multilingual
9
  Requires at least: 3.9
10
  Tested up to: 4.8.1
11
+ Version: 4.2.2
12
  */
13
 
14
  if ( defined( 'WCML_VERSION' ) ) {
15
  return;
16
  }
17
 
18
+ define( 'WCML_VERSION', '4.2.2' );
19
  define( 'WCML_PLUGIN_PATH', dirname( __FILE__ ) );
20
  define( 'WCML_PLUGIN_FOLDER', basename( WCML_PLUGIN_PATH ) );
21
  define( 'WCML_LOCALE_PATH', WCML_PLUGIN_PATH . '/locale' );