WPML
상태
해결됨
보고된 제품
WPML Media Translation 2.7.3
해결된 버전
WPML 4.7.2
주제 태그
Bug

문제 개요

WPML 미디어 번역에서는 하나의 이미지를 번역할 때 유사한 파일 이름 패턴을 공유하는 모든 이미지에 의도치 않게 번역이 적용되는 현상이 발생합니다. 예를 들어, 이름이 img_file1.jpg인 이미지를 번역하면 img_file10.jpg 또는 img_file11.jpg와 같은 다른 이미지에도 영향을 미칩니다… 서로 다른 이미지임에도 불구하고 말입니다.

이 문제는 미디어 번역이 파일 이름 패턴을 기반으로 이미지를 처리하고 대체하는 방식에서 발생하며, 파일 이름 구조의 상당 부분을 공유할 때 의도치 않은 대체로 이어집니다.

임시 해결 방법

진행하기 전에 사이트의 전체 백업을 완료했는지 확인하세요.


  • …/wp-content/plugins/wpml-media-translation/classes/media-translation/class-wpml-media-translated-images-update.php 파일을 여세요.

  • 76번째 줄을 찾으세요.

  • 다음 코드를:
    		$media_src_contains_pre_update = function ( $media_src ) use ( $pre_update_translated_media_guid ) {
    			$thumb_file_name                   = basename( $pre_update_translated_media_guid );
    			$pre_update_translated_media_parts = explode( '.', $thumb_file_name );
    
    			$media_src_extension                   = pathinfo( $media_src, PATHINFO_EXTENSION );
    			$pre_update_translated_media_extension = is_array( $pre_update_translated_media_parts ) ? end( $pre_update_translated_media_parts ) : null;
    
    			return $pre_update_translated_media_parts[0] && false !== strpos( $media_src, $pre_update_translated_media_parts[0] ) && $media_src_extension === $pre_update_translated_media_extension;
    		};

  • 다음으로 교체하세요:
    		$media_src_contains_pre_update = function ( $media_src ) use ( $pre_update_translated_media_guid ) {
    			$thumb_file_name                   = basename( $pre_update_translated_media_guid );
    			$pre_update_translated_media_parts = explode( '.', $thumb_file_name );
    
    			$media_src_extension                   = pathinfo( $media_src, PATHINFO_EXTENSION );
    			$pre_update_translated_media_extension = is_array( $pre_update_translated_media_parts ) ? end( $pre_update_translated_media_parts ) : null;
    			$pattern = "/-d+xd+.".$pre_update_translated_media_parts[1]."$/";
    			$try = preg_replace($pattern, '.'. $pre_update_translated_media_parts[1], $media_src);
    			return $pre_update_translated_media_parts[0] && false !== str_contains( implode('.', $pre_update_translated_media_parts), $try ) && $media_src_extension === $pre_update_translated_media_extension;
    		};

알려진 모든 문제 →