PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / trunk
WPML Multilingual & Multicurrency for WooCommerce vtrunk
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 month 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