protected function translate($str) { static $map = array('DeliveryZone.ID' => '_delivery_zone_ID', 'ShippingService.isFinal' => '_disable_other_services'); static $rangeMap = array('ShippingService.deliveryTimeMinDays' => array('_expected_delivery_time', 0), 'ShippingService.deliveryTimeMaxDays' => array('_expected_delivery_time', 1), 'ShippingRate.weightRangeStart' => array('_weight_range', 0), 'ShippingRate.weightRangeEnd' => array('_weight_range', 1), 'ShippingRate.subtotalRangeStart' => array('_subtotal_range', 0), 'ShippingRate.subtotalRangeEnd' => array('_subtotal_range', 1)); $translated = parent::translate($str); if ($translated == $str) { if (isset($map[$str])) { $translated = parent::translate($map[$str]); } elseif (isset($rangeMap[$str])) { $t = $rangeMap[$str]; $translated = parent::translate($t[0]) . ' (' . strtolower(parent::translate($t[1] ? '_to' : '_from')) . ')'; } else { $orig = $str; $str = array_pop(explode('.', $str)); $str = '_' . strtolower(preg_replace('/[A-Z]/', '_\\0', $str)); $translated = parent::translate($str); if ($translated == $str) { $translated = $orig; } } } return $translated; }