pip install googletrans==4.0.0-rc1
import os import time from googletrans import Translator def translate_srt(input_file, output_file, retry_count=3): with open(input_file, 'r', encoding='utf-8') as file: content = file.read() for attempt in range(retry_count): try: translator = Translator() source_language = translator.detect(content).lang if content else 'en' # Set the source language to 'en' (English) if the content is empty if source_language != 'zh-CN': # If the detected language is not Chinese, specify it explicitly translator = Translator(src=source_language, dest='en') translated_content = translator.translate(content, dest='en').text break # Break out of the loop if translation is successful except Exception as e: print(f"Translation error for file {input_file} (Attempt {attempt + 1}): {str(e)}") time.sleep(5) # Add a delay before retrying else: # If all attempts fail, keep the original content translated_content = content print(f"Translation failed for file {input_file} after {retry_count} attempts.") with open(output_file, 'w', encoding='utf-8') as file: file.write(translated_content) def translate_and_create_ensrt_directory(directory_path): ensrt_directory = os.path.join(directory_path, 'ensrt') if not os.path.exists(ensrt_directory): os.makedirs(ensrt_directory) for filename in os.listdir(directory_path): if filename.endswith('.srt'): input_file_path = os.path.join(directory_path, filename) output_file_path = os.path.join(ensrt_directory, f'en_{filename}') translate_srt(input_file_path, output_file_path) if __name__ == "__main__": target_directory = r"D:\Work_Tools\民间故事" translate_and_create_ensrt_directory(target_directory) print("翻译并创建ensrt目录完成!")
final
import os import time from googletrans import Translator def translate_srt(input_file, output_file, retry_count=3): with open(input_file, 'r', encoding='utf-8') as file: content = file.read() for attempt in range(retry_count): try: translator = Translator() source_language = translator.detect(content).lang if content else 'en' # Set the source language to 'en' (English) if the content is empty if source_language != 'zh-CN': # If the detected language is not Chinese, specify it explicitly translator = Translator(src=source_language, dest='en') translated_content = translator.translate(content, dest='en').text break # Break out of the loop if translation is successful except Exception as e: print(f"Translation error for file {input_file} (Attempt {attempt + 1}): {str(e)}") time.sleep(5) # Add a delay before retrying else: # If all attempts fail, return None print(f"Translation failed for file {input_file} after {retry_count} attempts.") return None with open(output_file, 'w', encoding='utf-8') as file: file.write(translated_content) return output_file def translate_and_create_ensrt_directory(directory_path): ensrt_directory = os.path.join(directory_path, 'ensrt') if not os.path.exists(ensrt_directory): os.makedirs(ensrt_directory) for filename in os.listdir(directory_path): if filename.endswith('.srt'): input_file_path = os.path.join(directory_path, filename) output_file_path = os.path.join(ensrt_directory, f'en_{filename}') translated_file = translate_srt(input_file_path, output_file_path) if translated_file: print(f"Translation successful for file {input_file_path}.") else: print(f"Translation failed for file {input_file_path}. File not added to 'ensrt' directory.") if __name__ == "__main__": target_directory = r"D:\Work_Tools\民间故事" translate_and_create_ensrt_directory(target_directory) print("翻译并创建ensrt目录完成!")