const STRINGS_CONTEXT = 'admin_texts_woocommerce_shipping';
private $current_language;
public function __construct( SitePress $sitepress, WCML_WC_Strings $wcmlStrings ) {
$this->sitepress = $sitepress;
$this->wcmlStrings = $wcmlStrings;
$this->current_language = $this->sitepress->get_current_language();
if ( $this->current_language == 'all' ) {
$this->current_language = $this->sitepress->get_default_language();
public function add_hooks() {
add_action( 'wp_ajax_woocommerce_shipping_zone_methods_save_settings', [ $this, 'save_shipping_zone_method_from_ajax' ], 9 );
add_action( 'icl_save_term_translation', [ $this, 'sync_class_costs_for_new_shipping_classes' ], 100, 2 );
add_action( 'wp_ajax_woocommerce_shipping_zone_methods_save_settings', [ $this, 'update_woocommerce_shipping_settings_for_class_costs_from_ajax' ], 9 );
add_filter( 'woocommerce_package_rates', [ $this, 'translate_shipping_methods_in_package' ] );
add_filter( 'pre_update_option_woocommerce_flat_rate_settings', [ $this, 'update_woocommerce_shipping_settings_for_class_costs' ] );
add_filter( 'pre_update_option_woocommerce_international_delivery_settings', [ $this, 'update_woocommerce_shipping_settings_for_class_costs' ] );
add_filter( 'woocommerce_shipping_flat_rate_instance_option', [ $this, 'get_original_shipping_class_rate' ], 10, 3 );
$this->shipping_methods_filters();
public function shipping_methods_filters() {
$shipping_methods = WC()->shipping->get_shipping_methods();
foreach ( $shipping_methods as $shipping_method ) {
if ( isset( $shipping_method->id ) ) {
$shipping_method_id = $shipping_method->id;
'woocommerce_shipping_' . $shipping_method_id . '_instance_settings_values',
'register_zone_shipping_strings',