TranslateLinks.php 864 Bytes
<?php

namespace WPML\PB;

class TranslateLinks {

	/**
	 * @param \WPML_ST_String_Factory $stringFactory
	 * @param array $activeLanguages
	 *
	 * @return \Closure
	 */
	public static function getTranslatorForString( \WPML_ST_String_Factory $stringFactory, $activeLanguages ) {
		return function ( $string_id ) use ( $stringFactory, $activeLanguages ) {
			$string = $stringFactory->find_by_id( $string_id );

			$sameStringLanguage = function ( $language ) use ( $string ) {
				return $language === $string->get_language();
			};

			$setTranslation = function ( $language ) use ( $string ) {
				$string->set_translation( $language, $string->get_value() );
			};

			\wpml_collect( $activeLanguages )->pluck( 'code' )
			                                 ->reject( $sameStringLanguage )
			                                 ->each( $setTranslation );
		};
	}

}