只需三步,轻松搞定:
点击"选择文件夹",找到你的文件宝藏。
点击"开始翻译",坐等魔法发生。
叮咚!所有文件夹和文件内容都焕然一新,翻译完成!
这款小工具不仅能让你的文件名变得国际化,还能让文件夹里的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的事件循环,等待用户操作。
结果如下:

