MarkDown文本(md)汉化翻译脚本

MarkDown文本(md)汉化翻译脚本

#UTF-8
import os
import concurrent.futures
from deep_translator import GoogleTranslator, exceptions

def translate_md_file(input_file, output_file, target_lang):
    translator = GoogleTranslator(source='auto', target=target_lang)

    with open(input_file, 'r', encoding='utf-8') as file:
        content = file.read()

    translated_content = ""
    in_code_block = False

    for line in content.split('\n'):
        if line.startswith('#') or line.startswith('$$'):
            translated_content += line + '\n'
        else:
            if line.strip().startswith('```'):
                in_code_block = not in_code_block
            if in_code_block or not line.strip():
                translated_content += line + '\n'
            else:
                try:
                    translated_line = translator.translate(line)
                    if translated_line is None:
                        translated_line = line  # 如果翻译失败,则保留原文本
                except exceptions.TranslationNotFound:
                    translated_line = line  # 如果翻译失败,则保留原文本
                translated_content += translated_line + '\n'

    with open(output_file, 'w', encoding='utf-8') as file:
        file.write(translated_content)

    print(f"Translation complete. Translated content saved to {output_file}")

def translate_md_files_in_directory(input_directory, output_directory, target_lang):
    if not os.path.exists(output_directory):
        os.makedirs(output_directory)

    with concurrent.futures.ThreadPoolExecutor() as executor:
        futures = []
        for root, _, files in os.walk(input_directory):
            for file in files:
                if file.endswith('.md'):
                    input_file = os.path.join(root, file)
                    relative_path = os.path.relpath(root, input_directory)
                    output_file_directory = os.path.join(output_directory, relative_path)

                    if not os.path.exists(output_file_directory):
                        os.makedirs(output_file_directory)

                    output_file = os.path.join(output_file_directory, file)
                    future = executor.submit(translate_md_file, input_file, output_file, target_lang)
                    futures.append(future)

        for future in concurrent.futures.as_completed(futures):
            try:
                future.result()
            except Exception as e:
                print(f"Translation failed: {e}")

# Example usage
# 文本输入目录
input_directory = './en-US'
# 文本输出目录
output_directory = './zh-CN'
#翻译语言
target_lang = 'zh-CN'  # Chinese Simplified

translate_md_files_in_directory(input_directory, output_directory, target_lang)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值