in admin/class-amazonpolly-admin.php [2152:2245]
public function amazon_polly_ajax_translate() {
check_ajax_referer( 'pollyajaxnonce', 'nonce' );
$post_id = $_POST['post_id'];
$phase = $_POST['phase'];
$langs = $_POST['langs'];
$step = '';
$percentage = 0;
$message = '';
$all_langs = [];
$index = 0;
$src_lang = get_post_meta( $post_id, 'amazon_polly_transcript_source_lan', true );
if ( empty( $src_lang ) ) {
$message = 'Amazon Translate functionality needs to be enabled before publishing the post';
$step = 'done';
$percentage = 100;
} else {
foreach ( $this->translate_langs as $supported_lan ) {
if ( $this->check_if_translate( $supported_lan ) and ( $supported_lan != $src_lang ) ) {
$all_langs[ $index ] = $supported_lan;
$index++;
}
}
if ( 'start' == $phase ) {
$langs = $all_langs;
} else {
if ( ( $key = array_search( 'en', $langs ) ) !== false ) {
$language_code = 'en';
unset( $langs[ $key ] );
} else {
$language_code = array_shift( $langs );
}
if ( 'en' == $language_code ) {
$clean_text = $this->clean_text( $post_id );
} else {
$clean_text = get_post_meta( $post_id, 'amazon_polly_transcript_en', true );
$src_lang = 'en';
}
$wp_filesystem = $this->prepare_wp_filesystem();
if ( $this->check_if_translate( $language_code ) and ( $language_code != $src_lang ) ) {
$translated_text = $this->translator->translate( $this->translate_client, $clean_text, $src_lang, $language_code);
update_post_meta( $post_id, 'amazon_polly_transcript_' . $language_code, $translated_text );
$sentences = $this->break_text( $translated_text );
$this->convert_to_audio( $post_id, '', '', $sentences, $wp_filesystem, $language_code );
}
$percentage = 100 - ( count( $langs ) / $index ) * 100;
}//end if
if ( empty( $langs ) ) {
$step = 'done';
$message = 'Translation completed!';
}
}//end if
$next_langs = $langs;
if ( ( 'en' != $src_lang ) && ( $key = array_search( 'en', $next_langs ) ) !== false ) {
$next_lang = 'en';
} else {
$next_lang = array_shift( $next_langs );
}
if ( ! empty( $next_lang ) ) {
$message = 'Translating from ' . $this->amazon_polly_map( $src_lang ) . ' to ' . $this->amazon_polly_map( $next_lang );
} else {
$message = 'Translation completed!';
}
if ( empty( $src_lang ) ) {
$message = 'Amazon Translate functionality needs to be enabled before publishing the post';
}
echo wp_json_encode(
array(
'step' => $step,
'langs' => $langs,
'percentage' => $percentage,
'message' => $message,
)
);
wp_die();
}