/**
  * @param string             $string_value
  * @param string             $string_name
  * @param array|WPML_Package $package
  * @param string             $string_title
  * @param string             $string_type
  *
  * @return string
  */
 final function register_string_for_translation($string_value, $string_name, $package, $string_title, $string_type)
 {
     $package = new WPML_Package($package);
     $package_id = $package->ID;
     if (!$package_id) {
         // need to create a new record.
         if ($package->has_kind_and_name()) {
             $package_id = $this->create_new_package($package);
             $package = new WPML_Package($package_id);
         }
     }
     if ($package_id) {
         $this->maybe_update_package($package);
         $tm = new WPML_Package_TM($package);
         $tm->validate_translations();
         $this->init_package_registered_strings($package_id);
         $string_name = $package->sanitize_string_name($string_name);
         $this->set_package_registered_strings($package_id, $string_type, $string_title, $string_name, $string_value);
         $this->register_string_with_wpml($package, $string_name, $string_title, $string_type, $string_value);
     }
     return $string_value;
 }