- 상태
- 해결됨
- 보고된 제품
- 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; };