批量翻译文件夹中子文件夹的文本,并批量回写翻译成英文。不用担心语言障碍,一键搞定,效率翻倍!

只需三步,轻松搞定:
在这里插入图片描述
点击"选择文件夹",找到你的文件宝藏。
点击"开始翻译",坐等魔法发生。
叮咚!所有文件夹和文件内容都焕然一新,翻译完成!
这款小工具不仅能让你的文件名变得国际化,还能让文件夹里的content.txt文件内容也变得通顺易懂。再也不用担心语言障碍,一键搞定,效率翻倍!

原文如下:
文件夹有N多子文件夹,且每个子文件夹的标题是中文。
在这里插入图片描述
子文件夹中有文本,和图片,文本里面是描述内容。
在这里插入图片描述
且文本内容是中文的描述。
在这里插入图片描述
如何批量实现将这些文本,和子文件夹的标题翻译成英语or 俄语 韩语 日语等更多的语言呢。

import os
import tkinter as tk
from tkinter import filedialog, messagebox
from googletrans import Translator
import re


def translate_text(text, target_language='en'):
    translator = Translator()
    try:
        translated = translator.translate(text, dest=target_language)
        return translated.text
    except Exception as e:
        print(f"Error translating text: {e}")
        return None


def sanitize_filename(filename):
    # 去除无效字符
    return re.sub(r'[\\/*?:"<>|]', "", filename)


def translate_file_content_and_rename_folders(source_folder):
    for subfolder in os.listdir(source_folder):
        subfolder_path = os.path.join(source_folder, subfolder)
        if os.path.isdir(subfolder_path):
            # 翻译文件夹名称
            translated_folder_name = translate_text(subfolder)
            if translated_folder_name:
                sanitized_folder_name = sanitize_filename(translated_folder_name)
                new_subfolder_path = os.path.join(source_folder, sanitized_folder_name)

                if subfolder_path != new_subfolder_path:  # 确保不对同名文件夹进行重命名
                    os.rename(subfolder_path, new_subfolder_path)
                    subfolder_path = new_subfolder_path  # 更新路径以反应重命名

                print(f"Translated folder name: {subfolder} to {sanitized_folder_name}")

            # 翻译 content.txt 内容
            content_file_path = os.path.join(subfolder_path, 'content.txt')
            if os.path.exists(content_file_path):
                with open(content_file_path, 'r', encoding='utf-8') as file:
                    content = file.read()

                translated_content = translate_text(content)
                if translated_content:
                    with open(content_file_path, 'w', encoding='utf-8') as file:
                        file.write(translated_content)
                    print(f"Translated content in {content_file_path}")
                else:
                    print(f"Failed to translate content in {content_file_path}")


def start_translation():
    source_folder = filedialog.askdirectory(title="选择源文件夹")
    if source_folder:
        translate_file_content_and_rename_folders(source_folder)
        messagebox.showinfo("操作完成", "所有文件内容已翻译完成,文件夹名称也已翻译!")


# 创建主窗口
root = tk.Tk()
root.title("文件内容翻译工具")

# 创建按钮
btn_translate = tk.Button(root, text="选择文件夹并开始翻译", command=start_translation)
btn_translate.pack(pady=20)

# 运行主循环
root.mainloop()


导入模块:代码开始部分导入了必要的模块,包括操作系统接口os、Tkinter用于GUI、filedialog用于文件选择对话框、messagebox用于消息提示框、googletrans用于文本翻译,以及正则表达式模块re用于文件名的清理。

文本翻译函数:translate_text函数使用googletrans库的Translator类来翻译文本。它接受文本和目标语言作为参数,默认目标语言为英语(en)。如果翻译过程中出现异常,会打印错误信息并返回None。

文件名清理函数:sanitize_filename函数使用正则表达式去除文件名中的无效字符,以确保文件名在操作系统中的有效性。

翻译文件夹名称和文件内容的函数:translate_file_content_and_rename_folders函数遍历指定源文件夹中的所有子文件夹,对每个子文件夹的名称进行翻译,并清理后重命名文件夹。同时,它还会查找每个子文件夹中的content.txt文件,读取其内容,翻译后写回文件。

启动翻译的函数:start_translation函数通过filedialog.askdirectory弹出选择文件夹的对话框,用户选择文件夹后,调用translate_file_content_and_rename_folders函数执行翻译和重命名操作。操作完成后,通过messagebox.showinfo显示操作完成的消息框。

创建GUI主窗口:设置Tkinter主窗口,标题为"文件内容翻译工具"。

创建按钮:在GUI中创建一个按钮,文本为"选择文件夹并开始翻译",点击时调用start_translation函数。

运行主循环:最后,通过调用root.mainloop()启动Tkinter的事件循环,等待用户操作。


结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/fcf31479c071452d983cb7b9801ae914.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/7270b4e8dbb24ea2bd6af8a308e067be.png)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值