PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / 5.5.7
WPML Multilingual & Multicurrency for WooCommerce v5.5.7
5.5.7 5.3.8 5.3.9 5.4.3 5.4.4 5.4.5 5.5.1 5.5.1.1 5.5.2.2 5.5.2.3 5.5.3 5.5.3.1 5.5.4 5.5.5 5.5.6 trunk 0.9 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.2 2.3 2.3.1 2.3.2 3.0 3.0.1 3.1 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6 3.6.1 3.6.10 3.6.11 3.6.2 3.6.3 3.6.4 3.6.5 3.6.5.1 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.1 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.15 3.7.16 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.9.0 3.9.1 3.9.1.1 3.9.2 3.9.3 3.9.4 3.9.5 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.10.4 4.11.2 4.11.3.2 4.11.5 4.11.6 4.12.1 4.12.4 4.12.5 4.12.6 4.2.0 4.2.0.1 4.2.1 4.2.1.1 4.2.10 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.7.1 4.2.8 4.2.8.1 4.2.9 4.3.0 4.3.1 4.3.2 4.3.2.1 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.4.0 4.4.1 4.4.2 4.4.2.1 4.5.0 4.6.0 4.6.1 4.6.2 4.6.2.1 4.6.3 4.6.5 4.6.6 4.6.7 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.9.0 4.9.1 5.0.1 5.0.2 5.1.1 5.1.2 5.1.3 5.2.0 5.2.1 5.3.2 5.3.3.1 5.3.4 5.3.5 5.3.6 5.3.7
woocommerce-multilingual / classes / Tax / Strings / Hooks.php
woocommerce-multilingual / classes / Tax / Strings Last commit date
Hooks.php 1 week ago
Hooks.php
86 lines
1 <?php
2
3 namespace WCML\Tax\Strings;
4
5 use IWPML_Backend_Action;
6 use IWPML_Frontend_Action;
7 use WCML_Orders;
8 use WPML\Collect\Support\Collection;
9
10 class Hooks implements IWPML_Backend_Action, IWPML_Frontend_Action {
11
12 const STRINGS_CONTEXT = 'admin_texts_woocommerce_tax';
13
14 public function add_hooks() {
15 add_action( 'woocommerce_tax_rate_added', [ $this, 'registerLabelString' ], 10, 2 );
16 add_action( 'woocommerce_tax_rate_updated', [ $this, 'registerLabelString' ], 10, 2 );
17 add_filter( 'woocommerce_rate_label', [ $this, 'translateLabelString' ], 10, 2 );
18 }
19
20 public function translateLabelString( $label, $taxId ) {
21
22 $stringId = icl_get_string_id( $label, self::STRINGS_CONTEXT, $this->getStringName( $taxId ) );
23
24 if ( ! $stringId ) {
25 $this->migrateStringToTaxIdName( $taxId, $label );
26 }
27
28 return icl_translate(
29 self::STRINGS_CONTEXT,
30 $this->getStringName( $taxId ),
31 $label,
32 false,
33 $label,
34 $this->getTargetLanguage()
35 );
36 }
37
38 public function registerLabelString( $taxId, $taxRate ) {
39 if ( ! empty( $taxRate['tax_rate_name'] ) ) {
40 $this->registerString( $taxId, $taxRate['tax_rate_name'] );
41 }
42 }
43
44 private function registerString( $taxId, $label ) {
45 return icl_register_string( self::STRINGS_CONTEXT, $this->getStringName( $taxId ), $label );
46 }
47
48 private function migrateStringToTaxIdName( $taxId, $label ) {
49 $newStringId = $this->registerString( $taxId, $label );
50
51 $oldStringId = icl_get_string_id( $label, 'woocommerce taxes', $label );
52
53 $oldStringTranslations = icl_get_string_translations_by_id( $oldStringId );
54
55 foreach ( $oldStringTranslations as $languageCode => $translation ) {
56 icl_add_string_translation(
57 $newStringId,
58 $languageCode,
59 $translation['value'],
60 ICL_STRING_TRANSLATION_COMPLETE
61 );
62 }
63 }
64
65 private function getStringName( $taxId ) {
66 return 'tax_label_' . $taxId;
67 }
68
69 private function isSendingOrderDetails( $postData ) {
70 return $postData->get( 'post_ID' )
71 && 'shop_order' === $postData->get( 'post_type' )
72 && 'send_order_details' === $postData->get( 'wc_order_action' );
73 }
74
75 private function getTargetLanguage() {
76 $postData = wpml_collect( $_POST );
77
78 if ( $this->isSendingOrderDetails( $postData ) ) {
79 return WCML_Orders::getLanguage( (int) $postData->get( 'post_ID' ) );
80 }
81
82 return null;
83 }
84
85 }
86