בירור | תרגום שמות תיקיות
-
-
@נעזר1000 כתב בבירור | תרגום שמות תיקיות:
@מנשה-2 כתב בבירור | תרגום שמות תיקיות:
יש לי מלא תיקיות ותתי תיקיות עם שמות בשפת האנגלית.
אשמח לדעת האם שייך באיזשהו צורה לעשות תרגום לכולם בלחיצת כפתור ???אפשר בקלות ליצור סקריפט שיצור קובץ שבו יכתבו שמות התיקיות,
ואת זה תוכל לתרגם.יעזור לך?
אם כבר תעשה סקריפט שמתרגם עם גוגל.
בכל אופן אולי קודם @מנשה-2 יספר לנו מהם התיקיות הסודיות שלו כדי שנוכל לרות אם יש דרך פשוטה יותר -
@נעזר1000 @pcinfogmach
צהריים טובים, מחילה על האיחור.מדובר תיקיות של תמונות שחור לבן - כאלו שמתאימים לילדים דפי קשר וכו',
לכל תמונה יש שם, וזה מסודר לפי חגים לפי פרשיות לפי דמויות לפי חפצים וכו' וכו', מדובר על אלפי תמונות, עם מאות תיקיות.
הבעיה שכל התיקיות וכל התמונות כתובים באנגלית.
ברצוני לתרגם את כל התיקיות לעברית.
( - כל תיקייה ותמונה עם שם אחר)מספיק?. מובן.?
-
@מנשה-2 כתבתי לך סקריפט שמוריד מודל שיודע לתרגם (300 מ"ב) ומתרגם הכל.
ראשית יש להתקין פייתון.
אז עליך להפעיל שורת פקודה ולכתוב (נדרש חיבור אינטרנט):
pip install torch transformers sentencepiece sacremoses
אחר כך תוריד את הקובץ הבא, תכניס אותו לתיקייה הראשית של התמונות ותפעיל אותו באמצעות הקשה כפולה (נדרש חיבור אינטרנט בפעם הראשונה, יכול לקחת כמה דקות):translate all.py
נ.ב. לגיקים של הפורום, הסקריפט בתוכו נראה כך:
# Use a pipeline as a high-level helper from transformers import pipeline import os pipe = pipeline("translation", model="Helsinki-NLP/opus-mt-en-he") def translate_all_files(root): for root, dirs, files in os.walk(root): for file in files: translated_file_name = pipe(file.split('.')[0])[0]['translation_text'] extention = file.split('.')[-1] old_path = os.path.join(root, file) new_path = os.path.join(root, translated_file_name+'.'+extention) os.rename(old_path, new_path) for dir in dirs: translate_all_files(os.path.join(root, dir)) translated_dir_name = pipe(dir)[0]['translation_text'] old_path = os.path.join(root, dir) new_path = os.path.join(root, translated_dir_name) os.rename(old_path, new_path) if __name__ == "__main__": translate_all_files("./")
-
יש לי סקריפט שעושה את זה בשני שלבים, א':
import os from googletrans import Translator import re def is_hebrew(text): # Use a regular expression to check if the text contains Hebrew characters return bool(re.search(r'[\u0590-\u05FF]+', text)) def translate_folder_names(main_folder_path, output_file): translator = Translator() translations = {} with open(output_file, 'w', encoding='utf-8') as output: for root, dirs, files in os.walk(main_folder_path): for folder_name in dirs: if not is_hebrew(folder_name) and folder_name not in translations: try: translated_name = translator.translate(folder_name, src='en', dest='he').text translations[folder_name] = translated_name output.write(f"{folder_name} = {translated_name}\n") except Exception as e: print(f"Error translating folder '{folder_name}': {str(e)}") return translations if __name__ == "__main__": main_folder_path = "/home/zevi/מילונים" output_file = "translations.txt" translations = translate_folder_names(main_folder_path, output_file) print("Folder names translated and saved to translations.txt.")
הסקריפט הזה מדפיס את כל שמות הקבצים לקובץ טקסט עם התרגום שלהם מתרגום גוגל, ב':
אחרי שעברת על הקובץ ותיקנת את הטעון תיקון להריץ את הסקריפט הזה:import os def rename_folders_according_to_translation(main_folder_path, translation_file, log_file): translations = {} log = [] # Load translations from the translation file with open(translation_file, 'r', encoding='utf-8') as file: for line in file: parts = line.strip().split(' = ') if len(parts) == 2: translations[parts[0]] = parts[1] # Rename folders and log changes for root, dirs, files in os.walk(main_folder_path, topdown=False): for folder_name in dirs: if folder_name in translations: old_folder_path = os.path.join(root, folder_name) new_folder_name = translations[folder_name] new_folder_path = os.path.join(root, new_folder_name) os.rename(old_folder_path, new_folder_path) log.append(f"Renamed: {old_folder_path} -> {new_folder_path}") # Write log to a file with open(log_file, 'w', encoding='utf-8') as file: file.write('\n'.join(log)) if __name__ == "__main__": main_folder_path = "/media/zevi/My Passport/ספריא סופי/ספריא/ערוך/נוסח אחד/תורת אמת/עברית" translation_file = "translations.txt" log_file = "rename_log.txt" rename_folders_according_to_translation(main_folder_path, translation_file, log_file) print("Folders renamed according to translations. Log saved in rename_log.txt.")
שים לב להתקין חבילות ולשנות לנתיב הקבצים הרצוי
[זה עובד גם על תתי תיקיות] -