stringMapper = $stringMapper; } public function add_hooks() { /** * @see \WPML\ST\Shortcode\TranslationHandler::appendId */ add_filter( 'wpml_tm_xliff_unit_field_data', $this->appendId() ); $this->defineRetrievingATEJobHooks(); $this->defineRetrievingProxyJobHooks(); $this->defineCTEHooks(); } private function defineRetrievingATEJobHooks() { $lens = LensFactory::createLensForJobData(); /** * @see \WPML\ST\Shortcode\TranslationHandler::restoreOriginalShortcodes */ add_filter( 'wpml_tm_ate_job_data_from_xliff', TranslationHandler::registerStringTranslation( $lens ), 9, 2 ); /** * @see \WPML\ST\Shortcode\TranslationHandler::restoreOriginalShortcodes */ add_filter( 'wpml_tm_ate_job_data_from_xliff', $this->restoreOriginalShortcodes( $lens ), 10, 1 ); } private function defineRetrievingProxyJobHooks() { $lens = LensFactory::createLensForProxyTranslations(); $registerStringTranslation = $this->registerStringTranslation( $lens, invoke( 'get_target_language' ) ); /** * @see \WPML\ST\Shortcode\TranslationHandler::restoreOriginalShortcodes */ add_filter( 'wpml_tm_proxy_translations', $registerStringTranslation, 9, 1 ); /** * @see \WPML\ST\Shortcode\TranslationHandler::restoreOriginalShortcodes */ add_filter( 'wpml_tm_proxy_translations', $this->restoreOriginalShortcodes( $lens ), 10, 1 ); } private function defineCTEHooks() { $appendStringIdToFieldsData = Obj::over( LensFactory::createLensForAssignIdInCTE(), Fns::map( $this->appendId() ) ); add_filter( 'wpml_tm_adjust_translation_fields', $appendStringIdToFieldsData, 10, 1 ); $lens = LensFactory::createLensForJobData(); $registerStringTranslation = $this->registerStringTranslation( $lens, Obj::prop( 'target_lang' ) ); /** * @see \WPML\ST\Shortcode\TranslationHandler::restoreOriginalShortcodes */ add_filter( 'wpml_translation_editor_save_job_data', $registerStringTranslation, 9, 1 ); /** * @see \WPML\ST\Shortcode\TranslationHandler::restoreOriginalShortcodes */ add_filter( 'wpml_translation_editor_save_job_data', $this->restoreOriginalShortcodes( $lens ), 10, 1 ); } /** * @return callable */ private function appendId() { return TranslationHandler::appendId( [ $this->stringMapper, 'getByDomainAndValue' ] ); } private function restoreOriginalShortcodes( callable $lens ) { return TranslationHandler::restoreOriginalShortcodes( [ $this->stringMapper, 'getById' ], $lens ); } private function registerStringTranslation( callable $lens, callable $getTargetLang ) { return TranslationHandler::registerStringTranslation( $lens, Fns::__, $getTargetLang ); } }