سلام خدمت شما استاد اردوخانی
استاد میخواستم ببینم راهکاری وجود داره تا خودمون یکی یکی ترجمه برای لغات ننویسیم از پکیج های مثل گوگل ترنسلیت استفاده کنیم تا انجام بده
سلام خدمت شما دوست عزیز
میتونین از api های سرویسهایی مثل گوگل استفاده کنین
این پکیج بهتون کمک میکنه
خیلی ممنون از راهنمایی استاد ولی استاد استفاده از این پکیج نیاز به API گوگل ترنسلیت داره که گوگل ایرانو تحریم کرده به مشکلاتی برخورد میکنیم من با اجازه شما اسکریپتی قرار میدم برا ترجمه که فقط کافیه اونو در ریشه اصلی پروژه قرار بدیم و بعد اجراش کنیم یه چند تا سوال میپرسه و ترجمه انجام میشه
import os
import polib
import shutil
from datetime import datetime
from googletrans import Translator
BASE_LOCALE_PATH = 'locale'
AVAILABLE_LANGUAGES = {
'en': 'English',
'ar': 'Arabic'
}
print("Select the target language:")
for code, name in AVAILABLE_LANGUAGES.items():
print(f"- {code}: {name}")
target_lang = input("Enter the language code: ").strip().lower()
if target_lang not in AVAILABLE_LANGUAGES:
print("❌ Invalid language code. Exiting.")
exit(1)
po_file_path = os.path.join(BASE_LOCALE_PATH, target_lang, 'LC_MESSAGES', 'django.po')
if not os.path.exists(po_file_path):
print(f"❌ PO file not found at: {po_file_path}")
exit(1)
backup_dir = 'locale_backups'
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
os.makedirs(backup_dir, exist_ok=True)
backup_path = os.path.join(backup_dir, f'django_{target_lang}_{timestamp}.po')
shutil.copyfile(po_file_path, backup_path)
print("Enter file types to include in translation (e.g., html, py, txt)")
selected_types_input = input("Separate by comma (leave empty for all): ").strip()
selected_types = [s.strip() for s in selected_types_input.split(',') if s.strip()]
translate_all_types = not selected_types
po = polib.pofile(po_file_path)
translator = Translator()
translated_count = 0
skipped_count = 0
error_count = 0
def is_entry_from_selected_file_type(entry):
if translate_all_types:
return True
for comment in entry.occurrences:
for file_type in selected_types:
if comment[0].endswith(f".{file_type}"):
return True
return False
for entry in po:
if entry.msgstr.strip() == "" and is_entry_from_selected_file_type(entry):
try:
translated = translator.translate(entry.msgid, src='fa', dest=target_lang).text
entry.msgstr = translated
translated_count += 1
except Exception as e:
error_count += 1
entry.comment = f"Translation error: {e}"
else:
skipped_count += 1
po.save()
print("\nTranslation finished:")
print(f"- Language: {AVAILABLE_LANGUAGES[target_lang]} ({target_lang})")
print(f"- Translated entries: {translated_count}")
print(f"- Skipped entries: {skipped_count}")
print(f"- Errors: {error_count}")
print(f"- Backup created at: {backup_path}")
compile_decision = input("\nRun `compilemessages`? (y/n): ").strip().lower()
if compile_decision == 'y':
os.system('python manage.py compilemessages')
print("`compilemessages` executed.")
else:
print("`compilemessages` was not executed.")
سلام مجدد خدمت شما
با استفاده از proxy میشه از این قابلیت استفاده کرد دوست من
معمولا روی سرورها از تنظیمات proxy آی پی برای استفاده از این امکانات استفاده میشه. دقیقا مثل کاری که برای پیاده سازی ربات تلگرام انجام میدیم
در کل خوشحالم تونستین روشی رو که عمومی تر هستش پیاده سازی کنین
موفق باشین :)
خیلی ممنون از توضیحات شما استاد
استاد این خیلی برام بهم بود که از خدمات گوگل استفاده کنیم مثلا خود سایت تاپ لرن از reCAPCHA استفاده میکنه درحالی که در تحریم هستیم ولی چجوری بدون استفاده از پروکسی برای ما قابل نمایشه
ببینین تمامی امکانات گوگل که تحریم نیستن. صرفا یک سری امکانات خاص هستن که نمیتونیم ازشون استفاده کنیم
بحث captcha هم جزو مواردی هستش که نیاز به proxy یا vpn نداره و میتونین به راحتی استفاده کنین