Tổng quan về sự cố
Trong Visual Composer, chú thích và văn bản thay thế của hình ảnh trong các phần tử Single Image, Image Gallery, Image Masonry Gallery, Simple Image Slider và Feature Description không được gửi đi dịch. Trang đã dịch hiển thị chúng bằng ngôn ngữ mặc định.
Giải pháp tạm thời
Sử dụng một trong các tùy chọn sau:
- Thay vì sử dụng phần tử Single Image, hãy thêm hình ảnh vào phần tử Khối văn bản cùng với chú thích và văn bản thay thế của nó. Nội dung của Khối văn bản sẽ được gửi đi dịch, bao gồm cả chú thích và văn bản thay thế.
- Hoặc thêm mã này vào tệp functions.php của giao diện, sau đó gửi lại trang đi dịch. Mã này sẽ gửi chú thích và văn bản thay thế của các hình ảnh trong các phần tử Visual Composer vào bản dịch. Chúng tôi đã thử nghiệm nó với phần tử Single Image:
add_filter( 'wpml_tm_translation_job_data', function ( $package ) {
if ( empty( $package['contents']['field-vcv-pageContent-0']['data'] ) ) {
return $package;
}
$page = json_decode( rawurldecode( base64_decode( $package['contents']['field-vcv-pageContent-0']['data'] ) ), true );
foreach ( (array) ( $page['elements'] ?? [] ) as $element_id => $element ) {
foreach ( (array) $element as $attribute => $items ) {
if ( ! is_array( $items ) ) {
continue;
}
foreach ( $items as $index => $item ) {
foreach ( [ 'caption', 'alt' ] as $key ) {
if ( ! is_array( $item ) || empty( $item[ $key ] ) || ! is_string( $item[ $key ] ) ) {
continue;
}
$field = 'vcv-pageContentField--' . $element_id . '.' . $attribute . '.' . $index . '.' . $key;
$package['contents'][ 'field-' . $field . '-0' ] = [ 'translate' => 1, 'data' => base64_encode( $item[ $key ] ), 'format' => 'base64' ];
$package['contents'][ 'field-' . $field . '-0-name' ] = [ 'translate' => 0, 'data' => $field ];
$package['contents'][ 'field-' . $field . '-0-type' ] = [ 'translate' => 0, 'data' => 'custom_field' ];
}
}
}
}
return $package;
}, 10 );