PyQt5 πρόβλημα με τη χρήση του translator

Δεν έχω ιδιαίτερες γνώσεις προγραμματισμού αλλά ασχολούμαι κάπου κάπου, ως χόμπι. Με την python και την pyqt έχω πολύ μικρή εμπειριά, αν και έχω φτιάξει, με τη βοήθεια της αναζήτησης στο διαδίκτυο, 2-3 εφαρμογές για προσωπική χρήση.
Μία από αυτές είναι και αυτή στην οποία πρόσθεσα τη δυνατότητα μετάφρασης.
Αυτό το είχα κάνει πριν 1-2 μήνες και είχα καταφέρει να είναι μεταφρασμένα όλα τα κείμενα που περιλαμβάνονταν στη μετάφραση.
Πρόσφατα έκανα κάποιες μικρές προσθήκες και προσπάθησα να ενσωματώσω κάποια νέα κείμενα(4-5 αναφορές μόνο) στη μετάφραση.
Είχα δημιουργήσει ένα αρχείο trans.pro το οποίο χρησιμοποίησα για τη δημιουργία του αρχείου el_GR.ts το οποίο στη συνέχεια μετέτρεψα με το qt linguist σε αρχείο qm.
Το πρόβλημα προέκυψε όταν επανέλαβα τη διαδικασία για να ενημερώσω το αρχείο με τα νέα κείμενα.
Αυτά λοιπόν, παρόλο που είναι μεταφρασμένα στο αρχείο qm(το τέσταρα μετατρέποντας το ξανά σε .ts με το lconvert), εμφανίζονται με αγγλικά στην εφαρμογή.
Έτσι έχω προσθέσει τη δυνατότητα μετάφρασης:

   def run():
        app = QtWidgets.QApplication(sys.argv)
        app.setStyle("adwaita")
        app.setQuitOnLastWindowClosed(False)

        defaultLocale = QLocale.system().name()
        print(defaultLocale)

        translator = QTranslator(app)

        """LOCAL_DIR = os.path.dirname(os.path.realpath(__file__))
            print(LOCAL_DIR)
            translator.load(LOCAL_DIR +"/resources/translations/el_GR.qm")"""

        if defaultLocale == "el_GR":
            translator.load(":ui/resources/translations/el_GR.qm")
            app.installTranslator(translator)
        app.setApplicationName("Snooze Shutdown")
        app.setApplicationDisplayName("Snooze Shutdown")
        print(app.translate("app", "apple2"))
        ui = MainWindow()
        ui.show()
        return app.exec_()

Όπου χρειάζεται μετάφραση έχει προστεθεί ως εξής:

 if self.actionLbl.text()==self.tr("Countdown Timer"):
    self.timeInfoLbl.setText(self.tr("The countdown timer will finish at ") + self.time2Go())

Τα παράπανω είναι κάποια από τα νέα κείμενα τα οποία δε μεταφράζονται.
Δοκίμασα και με το translate ως εξής:
QCoreApplication.translate(“Countdown Timer”)

Αλλά σε αυτή την περίπτωση η εφαρμογή κρασάρει. Νομίζω ότι αυτό γίνεται επειδή δεν πρόκειται για αντικείμενα όπως κουμπία, πλαίσια κειμένου κλπ, μιας και σε κάποια radiobuttons που τα δοκίμασα λειτουργούσαν κανονικά.
Καμία ιδέα τι μπορεί να φταίει?

1 Like

Καλώς ήρθες @dancaer69 στην παρέα μας. Έχεις κάποιο GitHub ή κάπου αποθηκευμένα τα απαραίτητα αρχεία;

1 Like

Όχι. Την εφαρμογή την έφτιαξα για προσωπική χρήση. Έχω ανεβάσει μια προηγούμενη έκδοση παλαιότερα στο dropbox αλλά δεν περιλαμβάνει τη λειτουργία μετάφρασης.

Απλώς αν δεν έχει κάποιος τη δυνατότητα να τεσταρει τον κώδικα με όλα τα απαραίτητα αρχεία για την εκτέλεση του, δύσκολα θα μπορέσει να σε βοηθήσει.

Τα έβαλα σ’ ένα αρχείο zip και τ’ ανέβασα εδώ:
https://gofile.io/?c=s79BO1

Νομίζω ότι βρήκα τι έφταιγε. Καθ’ όλη τη διάρκεια που επεξεργαζόμουν την εφαρμογή στο pycharm είχα φορτωμένη και την εκδοχή της που χρησιμοποιώ καθημερινά. Κάποια στιγμή λοιπόν χρησιμοποίησα αυτή την εκδοχή(είναι φορτωμένη και εκτελείται ελαχιστοποιημένη στο tray), και μετά από αυτό η μετάφραση λειτούργησε. Οπότε φαίνεται ότι επηρεάζει η μία εκδοχή την άλλη όσον αφορά τη φόρτωση της μετάφρασης.

1 Like