import os
import tkinter as tk
from tkinter import filedialog
import argostranslate.package
import argostranslate.translate

def translate_files():
    # Set language codes
    from_code = "en"
    to_code = "ro"
    
    # Install translation package
    argostranslate.package.update_package_index()
    available_packages = argostranslate.package.get_available_packages()
    package_to_install = next(
        filter(
            lambda x: x.from_code == from_code and x.to_code == to_code, 
            available_packages
        )
    )
    argostranslate.package.install_from_path(package_to_install.download())
    
    # Get input path
    path = filedialog.askdirectory() if folder_var.get() else filedialog.askopenfilenames()
    if not path:
        return
    
    # Create 'ro' folder
    base_dir = os.path.dirname(path[0]) if isinstance(path, tuple) else path
    output_dir = os.path.join(base_dir, 'ro')
    os.makedirs(output_dir, exist_ok=True)
    
    # Process files
    files = [os.path.join(path, f) for f in os.listdir(path) if f.endswith('.txt')] if isinstance(path, str) else path
    
    for file_path in files:
        if file_path.endswith('.txt'):
            with open(file_path, 'r', encoding='utf-8') as f:
                text = f.read()
            
            # Translate
            translated_text = argostranslate.translate.translate(text, from_code, to_code)
            
            # Save to 'ro' folder
            output_path = os.path.join(output_dir, os.path.basename(file_path))
            with open(output_path, 'w', encoding='utf-8') as f:
                f.write(translated_text)
    
    status_label.config(text="Translation complete!")

# GUI setup
root = tk.Tk()
root.title("Bulk Translator EN to RO")
root.geometry("300x150")

folder_var = tk.BooleanVar()
tk.Checkbutton(root, text="Select Folder (unchecked = select files)", variable=folder_var).pack(pady=10)

tk.Button(root, text="Choose Input", command=translate_files).pack(pady=10)
status_label = tk.Label(root, text="")
status_label.pack(pady=10)

root.mainloop()
