WPML

问题概述

在 Visual Composer 中,Single Image、Image Gallery、Image Masonry Gallery、Simple Image Slider 和 Feature Description 元素中图像的说明和替代文本不会发送进行翻译。翻译后的页面将以默认语言显示这些内容。

临时解决方法

请使用以下选项之一:

  • 不要使用 Single Image 元素,而是将图像及其标题和替代文本添加到 Text Block 元素中。Text Block 的内容会被发送进行翻译,包含标题和替代文本。
  • 或者将此代码添加到主题的 functions.php 文件中,然后再次将页面发送进行翻译。它会将 Visual Composer 元素中图像的标题和替代文本发送进行翻译。我们使用 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 );

所有已知问题

需要有关此问题的帮助?

提出支持问题,我们将与您一起调查。