import os
import time
import polib
from dotenv import load_dotenv
from google import genai

# 1. Muatkan pembolehubah persekitaran (Environment Variables)
load_dotenv()

# 2. Pengesahan Kunci API Gemini
api_key = os.getenv("GEMINI_API_KEY")
if not api_key:
    print("RALAT: GEMINI_API_KEY tidak dijumpai dalam fail .env")
    exit()

client = genai.Client(api_key=api_key)

# 3. Laluan ke fail kamus anda
po_file_path = 'locale/en/LC_MESSAGES/django.po'

print(f"Membaca fail kamus: {po_file_path}...")
try:
    po = polib.pofile(po_file_path)
except Exception as e:
    print(f"RALAT MEMBACA FAIL .po (Sila pastikan tiada msgid duplicate dalam fail): {e}")
    exit()

# 4. Cari ayat yang belum diterjemah (msgstr kosong)
untranslated = po.untranslated_entries()
print(f"Sistem mengesan {len(untranslated)} ayat yang belum diterjemahkan.\n")

if len(untranslated) == 0:
    print("Semua ayat telah pun diterjemah! Tiada tindakan diperlukan.")
    exit()

# 5. Mula menterjemah menggunakan AI
for entry in untranslated:
    teks_asal = entry.msgid
    
    # Abaikan jika kosong
    if not teks_asal:
        continue
        
    print(f"Teks Asal : {teks_asal}")
    
    prompt = f"""
    Translate the following Malay text to professional English. 
    Context: Malaysian Ministry of Health (KKM) Digital Health system.
    Keep technical terms appropriate. Maintain capitalization logic.
    Return ONLY the translated English text. Do not use quotes around the text. Do not use markdown.
    
    Text to translate:
    {teks_asal}
    """
    
    try:
        # Menyeru Gemini (model flash yang pantas)
        response = client.models.generate_content(
            model="gemini-2.5-flash",
            contents=prompt
        )
        terjemahan = response.text.strip()
        
        # Buang quote marks jika AI masih degil meletakkannya
        if terjemahan.startswith('"') and terjemahan.endswith('"'):
            terjemahan = terjemahan[1:-1]
            
        entry.msgstr = terjemahan
        print(f"AI Gemini : {terjemahan}\n")
        
        # Rehat 1.5 saat untuk mengelakkan had (Rate Limit) percuma Google API
        time.sleep(1.5)
        
    except Exception as e:
        print(f"Ralat AI semasa menterjemah: {e}\n")

# 6. Simpan hasil terjemahan ke fail asal
po.save()
print("🎉 SIAP! Fail django.po telah berjaya dikemaskini dengan terjemahan AI.")