Skip to Content

Μεταφραζόμενα Πεδία στο Odoo: Οδηγός Πλήρους Κατανόησης

Μάθετε πώς το Odoo αποθηκεύει πολλαγλωσσικά πεδία μέσα στο ORM και πώς να τα αξιοποιήσετε πρακτικά στην επιχείρησή σας
6 Μαρτίου 2026 από
Μεταφραζόμενα Πεδία στο Odoo: Οδηγός Πλήρους Κατανόησης
Dasolo
| No comments yet

Σε πολλές εγκαταστάσεις Odoo η ομάδα πωλήσεων, η αποθήκη και οι πελάτες μπορεί να μιλούν διαφορετικές γλώσσες. Για να εμφανίζεται το σωστό κείμενο σε κάθε χρήστη χωρίς να πολλαπλασιάζονται τα αρχεία, το Odoo προσφέρει μηχανισμό αποθήκευσης της ίδιας πληροφορίας σε πολλές γλώσσες — αυτά είναι τα μεταφραζόμενα πεδία.


Κάθε μεταφραζόμενο πεδίο κρατάει μία τιμή ανά ενεργή γλώσσα. Ουσιαστικά το ίδιο προϊόν παραμένει μία εγγραφή στη βάση, αλλά η εμφάνιση του ονόματος, της περιγραφής ή άλλων κειμένων αλλάζει ανάλογα με τη γλώσσα του χρήστη.

Αυτό το άρθρο περιγράφει τη λογική πίσω από τα μεταφραζόμενα πεδία στο ORM του Odoo, πώς να τα ορίσετε και να τα διαχειριστείτε, και σε ποιες περιπτώσεις εξοικονομούν χρόνο και κόπο στην καθημερινή λειτουργία.

Τι είναι ένα πεδίο με μετάφραση στο Odoo


Με απλά λόγια, ένα μεταφραζόμενο πεδίο είναι οποιοδήποτε πεδίο κειμένου στο μοντέλο δεδομένων που μπορεί να αποθηκεύσει ξεχωριστές τιμές για κάθε ενεργή γλώσσα. Η μετάφραση είναι διαφανής στον τελικό χρήστη: βλέπει αυτόματα το κείμενο στη δική του γλώσσα χωρίς επιπλέον ενέργειες.


Σε ποιους τύπους πεδίων εφαρμόζεται μετάφραση

  • Char: σύντομο, μονογραμμικό κείμενο — για ονόματα προϊόντων, ετικέτες κατηγοριών, τίτλους θέσεων
  • Text: πολυγραμμικό κείμενο — για περιγραφές, σημειώσεις
  • Html: εμπλουτισμένο κείμενο με HTML — για περιεχόμενο ιστοσελίδας ή σώματα προτύπων email

Αριθμητικά, ημερομηνίες, Many2one ή boolean πεδία δεν μεταφράζονται — η μετάφραση αφορά μόνο ανθρώπινα αναγνώσιμα κείμενα.


Πώς εμφανίζεται στο περιβάλλον εργασίας

Στη φόρμα επεξεργασίας, ένα μικρό εικονίδιο σημαίας εμφανίζεται δίπλα στο πεδίο. Πατώντας το ανοίγει διάλογος όπου βλέπετε και επεξεργάζεστε την τιμή για κάθε εγκατεστημένη γλώσσα — όλα συγκεντρωμένα σε ένα σημείο.


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

Πώς λειτουργεί ένα μεταφραζόμενο πεδίο


Κατανοώντας την εσωτερική λειτουργία των μεταφραζόμενων πεδίων μπορείτε να αποφασίζετε πότε αξίζει να τα χρησιμοποιείτε και πώς να τα διαχειρίζεστε έξυπνα σε μεγάλη κλίμακα.


Η παράμετρος translate=True

Στον ORM του Odoo ενεργοποιείτε τη μετάφραση προσθέτοντας translate=True στον ορισμό του πεδίου. Αυτό λέει στο σύστημα ότι το πεδίο πρέπει να κρατά πολλαπλές γλωσσικές τιμές.

Παράδειγμα σε έναν προσαρμοσμένο Char field:

Αυτό το απλό flag αρκεί για να γνωρίζει το Odoo ότι θα πρέπει να αποθηκεύει και να ανακτά διαφορετικές τιμές ανάλογα με τη γλωσσική κατάσταση — μία πολύ πρακτική και κομψή δυνατότητα του πλαισίου.


Πού αποθηκεύονται οι μεταφράσεις

Η μέθοδος αποθήκευσης έχει αλλάξει ανάλογα με την έκδοση του Odoo:

  • Odoo 15 και παλαιότερα: Οι μεταφράσεις φυλάσσονταν σε ξεχωριστό πίνακα ir.translation, με κάθε μεταφρασμένη τιμή ως ξεχωριστή γραμμή συνδεδεμένη με το μοντέλο, το όνομα πεδίου, το ID εγγραφής και τον κωδικό γλώσσας.
  • Odoo 16 και μετά: Οι μεταφράσεις αποθηκεύονται απευθείας στον πίνακα του ίδιου του μοντέλου σε ένα πεδίο JSONB. Για παράδειγμα, το πεδίο name μπορεί να έχει τιμή σαν JSON: {"el_GR": "Βάση στήριξης λάπτοπ", "en_US": "Laptop Stand", "fr_FR": "Support pour ordinateur portable"}.

Η μετάβαση σε JSONB βελτίωσε πολύ τις επιδόσεις: εκμηδενίστηκαν ακριβές join με τον πίνακα μεταφράσεων και οι αναζητήσεις έγιναν πιο γρήγορες, ειδικά σε μεγάλα μοντέλα.


Πώς λειτουργεί το γλωσσικό context

Κατά την ανάγνωση ενός μεταφραζόμενου πεδίου, το Odoo κοιτάει τη ενεργή γλώσσα στο context. Αν είστε συνδεδεμένοι ως χρήστης με ελληνική γλώσσα, το ORM φέρνει την ελληνική τιμή. Σε API κλήσεις εσείς καθορίζετε τη γλώσσα μέσα στο context.

Παράδειγμα κλήσης API που ζητάει την ελληνική έκδοση ενός προϊόντος:

Αυτό είναι κρίσιμο όταν φτιάχνετε ενσωματώσεις ή εξαγωγές: περάστε πάντα τη σωστή γλώσσα στο context για να πάρετε την επιθυμητή μετάφραση.


Η παράμετρος translate ως callable

Η παράμετρος translate δέχεται επίσης callable για εξειδικευμένες περιπτώσεις. Συνηθισμένη χρήση είναι το translate=_ για να σηματοδοτηθούν στατικές ετικέτες (π.χ. επιλογές selection) ώστε να μεταφραστούν μέσω του μηχανισμού εξαγωγής μεταφράσεων. Αυτό αφορά κυρίως μεταφράσεις σε επίπεδο module και όχι εγγραφής.


Πολιτική fallback

Αν δεν έχει οριστεί μετάφραση για την ενεργή γλώσσα, το Odoo δεν επιστρέφει κενό — πέφτει στην γλώσσα βάσης της βάσης δεδομένων (συνήθως αγγλικά). Έτσι οι χρήστες βλέπουν πάντα μια κατανοητή τιμή, ακόμη και αν το περιεχόμενο δεν έχει πλήρως μεταφραστεί.

Πρακτικές επιχειρησιακές χρήσεις


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


1. Ηλεκτρονικό εμπόριο: πολλαπλές γλώσσες σε προϊόντα και περιγραφές

Αν πουλάτε μέσω της ιστοσελίδας Odoo, οι πελάτες περιμένουν περιεχόμενο στη γλώσσα τους. Τα πεδία name και description στα product.template είναι μεταφράσιμα από προεπιλογή, επιτρέποντας ένα ενιαίο κατάλογο προϊόντων με τοπικοποιημένο κείμενο χωρίς διπλότυπες εγγραφές.

Ένας πελάτης στη σελίδα σας στα ελληνικά βλέπει ελληνικά ονόματα και περιγραφές· η αποθήκη, το απόθεμα και οι τιμές παραμένουν οι ίδιες — αλλάζει μόνο το εμφανιζόμενο κείμενο.


2. Πρότυπα email σε πολυεθνικές εταιρείες

Τα πρότυπα email στο Odoo χρησιμοποιούν μεταφραζόμενα Html πεδία για το σώμα τους. Όταν στέλνετε επιβεβαίωση παραγγελίας σε Γερμανό πελάτη, το Odoo χρησιμοποιεί αυτόματα την γερμανική έκδοση του προτύπου αν υπάρχει.


Έτσι μία μόνο εγγραφή προτύπου εξυπηρετεί πολλούς αγορές χωρίς να γράφετε συνθήκες ή να πολλαπλασιάζετε πρότυπα ανά γλώσσα.


3. Σελίδες ιστοσελίδας και περιεχόμενο blog

Οι σελίδες του Odoo Website χρησιμοποιούν μεταφραζόμενα Html πεδία ώστε κάθε σελίδα να έχει ξεχωριστό περιεχόμενο ανά γλώσσα. Αυτό δίνει τη δυνατότητα να διατηρείτε τοπικές εκδόσεις της ίδιας σελίδας χωρίς πρόσθετα plugins.


Από πλευράς SEO, κάθε γλωσσική έκδοση μπορεί να έχει δικό της meta title και meta description, βελτιώνοντας την κατάταξη στις τοπικές αναζητήσεις.


4. Ετικέτες επιλογών (selection) για διεθνείς ομάδες

Οι επιλογές ενός Selection field μπορούν να σηματοδοτηθούν για μετάφραση με τη συνάρτηση _. Έτσι επιλογές όπως «Σε εξέλιξη», «Σε αναμονή», «Ολοκληρώθηκε» εμφανίζονται στη σωστή γλώσσα για κάθε χρήστη.


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


5. Προσαρμοσμένα πεδία σε αναφορές πολυγλωσσικών οργανισμών

Αν έχετε custom πεδία που χρησιμοποιούνται για κατηγοριοποίηση (π.χ. είδος υπηρεσίας, επίπεδο κινδύνου), το να είναι μεταφραζόμενα εξασφαλίζει ότι οι αναφορές και τα dashboard εμφανίζονται σωστά σε όλους τους χρήστες.


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

Πώς να δημιουργήσετε ή να ενεργοποιήσετε μεταφραζόμενα πεδία


Τρόποι δημιουργίας ή ενεργοποίησης μετάφρασης σε πεδίο


Υπάρχουν διάφοροι τρόποι, ανάλογα με το αν δουλεύετε με κώδικα ή σε περιβάλλον no-code.

Με Python (συνιστάται για προγραμματιστές)


Ο πιο καθαρός τρόπος είναι ο ορισμός του πεδίου σε Python με translate=True, όπως δείχνει το τυπικό παράδειγμα σε ένα κληρονομημένο μοντέλο προϊόντος.

Αυτό αρκεί: το Odoo αναλαμβάνει την εμφάνιση σημαίας στη UI, την αποθήκευση μεταφράσεων και τη λογική fallback.


Με Odoo Studio

Στο Odoo Studio η επιλογή translate δεν είναι διαθέσιμη στο πάνελ ρύθμισης πεδίου. Τα Char/Text πεδία που φτιάχνετε στο Studio δεν είναι μεταφράσιμα από προεπιλογή.


Μπορείτε όμως να ενεργοποιήσετε τη μετάφραση μετά τη δημιουργία μέσω του XML-RPC API: βρείτε την εγγραφή στο ir.model.fields και αλλάξτε το πεδίο translate.


Παράδειγμα: πρώτα εντοπίζετε το πεδίο (search_read) και μετά κάνετε write ώστε {'translate': True}.

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


Διαχείριση μεταφράσεων: εξαγωγή και εισαγωγή

Η ροή εργασίας για μεγάλους όγκους μεταφράσεων είναι απλή και οργανωμένη:


  1. Πηγαίνετε Settings > Translations > Export Translation και κατεβάζετε ένα .po ή .csv με τις αμετάφραστες συμβολοσειρές για την επιλεγμένη γλώσσα.
  2. Γεμίζετε ή στέλνετε το αρχείο στους μεταφραστές.
  3. Επιστρέφετε στο Settings > Translations > Import Translation και ανεβάζετε το συμπληρωμένο αρχείο πίσω στο Odoo.

Για μεταφράσεις σε επίπεδο εγγραφής (π.χ. ονόματα προϊόντων) μπορείτε επίσης να τις κάνετε απευθείας στη φόρμα μέσω του εικονιδίου σημαίας — πρακτικό για μικρούς όγκους.


Μετάφραση μέσω API

Κατά την εγγραφή ή την ενημέρωση μεταφραζόμενου πεδίου μέσω XML-RPC, πρέπει να περάσετε τη γλώσσα στο context.


Παράδειγμα: γράφετε την ελληνική μετάφραση ενός ονόματος προϊόντος περνώντας {'context': {'lang': 'el_GR'}}.

Η εγγραφή σε συγκεκριμένη γλώσσα ενημερώνει μόνο την αντίστοιχη γλωσσική τιμή — οι υπόλοιπες παραμένουν ανέπαφες. Είναι ο σωστός τρόπος να σπρώξετε μεταφρασμένο περιεχόμενο από εξωτερικά συστήματα.

Καλές πρακτικές


Λίγα απλά συνήθειες κάνουν τη χρήση μεταφραζόμενων πεδίων πολύ πιο αξιόπιστη.


Πάντα ορίστε πρώτα την τιμή στη γλώσσα βάσης

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


Μεταφράζετε μόνο ό,τι έχει νόημα

Δεν χρειάζεται κάθε πεδίο κειμένου να είναι μεταφράσιμο. Κωδικοί, τεχνικοί δείκτες ή πεδία που χρησιμοποιεί μόνο το back-office σε μονογλωσσικό περιβάλλον δεν έχουν όφελος. Η υπερβολική ενεργοποίηση της μετάφρασης αυξάνει το έργο διαχείρισης.


Χρησιμοποιήστε export/import για μεγάλες δουλειές μετάφρασης

Σε μεγάλα καταλόγους προϊόντων η χειροκίνητη επεξεργασία εγγραφής-εγγραφής είναι ανεδαφική. Εξάγετε σε αρχείο, μεταφράστε μαζικά και ξαναεισάγετε — είναι πολύ πιο γρήγορο και με λιγότερα λάθη.


Περάστε πάντα τη γλώσσα στο context σε API κλήσεις

Όταν διαβάζετε ή γράφετε μέσω API, περάστε ρητά 'lang': 'xx_XX'. Αλλιώς το Odoo χρησιμοποιεί τη γλώσσα του χρήστη και μπορεί να αποθηκευτεί λανθασμένα τιμή στη λάθος γλώσσα.


Διατηρήστε μεταφράσεις όταν αλλάζει η πηγή

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

Συνηθισμένα λάθη


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


Ξεχασμένος γλωσσικός context σε API εγγραφές

Το συχνότερο λάθος σε ενσωματώσεις: γράφετε χωρίς να ορίσετε τη γλώσσα και έτσι η τιμή καταχωρείται στη γλώσσα του χρήστη που εκτελεί την κλήση. Αν ήθελες να γράψεις τη γαλλική μετάφραση και το user ήταν ρυθμισμένο στα αγγλικά, έχασες τη γαλλική και έγραψες στα αγγλικά.


Δημιουργία προσδοκιών για αναζητήσεις σε μεταφραζόμενα πεδία

Η αναζήτηση σε μεταφραζόμενο πεδίο γίνεται στη γλώσσα του ενεργού χρήστη. Ένα προϊόν με αγγλικό όνομα δεν θα εμφανιστεί σε χρήστη που βλέπει το σύστημα στα ελληνικά αν δεν υπάρχει ελληνική μετάφραση. Βεβαιωθείτε ότι οι σημαντικές εγγραφές έχουν μεταφραστεί πριν βασιστείτε σε αναζητήσεις跨γλωσσικά.


Αναφορές με μικτό μεταφρασμένο και μη μεταφρασμένο περιεχόμενο

Αν μια αναφορά περιέχει τόσο μεταφραζόμενα όσο και μη μεταφραζόμενα πεδία, το τελικό αρχείο μπορεί να είναι ανομοιογενές — κάποιες ετικέτες στην τοπική γλώσσα, άλλες πάντα στη γλώσσα βάσης. Σχεδιάστε εκ των προτέρων ποια πεδία πρέπει να μεταφράζονται.


Υπολογιζόμενα πεδία και κόστος μετάφρασης

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


Αφαίρεση γλώσσας χωρίς καθαρισμό μεταφράσεων

Όταν απενεργοποιείτε ή διαγράφετε μια γλώσσα, οι τιμές για εκείνη μπορεί να παραμείνουν στη βάση, ανάλογα με την έκδοση. Συνήθως δεν προκαλεί πρόβλημα, αλλά δημιουργεί «θόρυβο». Ελέγξτε τα δεδομένα μεταφράσεων μετά από τέτοιες ενέργειες σε παραγωγικό περιβάλλον.

Συμπεράσματα


Συμπερασματικά, τα μεταφραζόμενα πεδία είναι από τα πιο χρήσιμα χαρακτηριστικά του Odoo για επιχειρήσεις με πολλαπλές γλώσσες. Με ένα απλό translate=True μπορείτε να διατηρείτε τοπικό περιεχόμενο σε προϊόντα, πρότυπα email, σελίδες και custom πεδία χωρίς να πολλαπλασιάζετε εγγραφές.


Το κλειδί είναι να είστε επιλεκτικοί: ενεργοποιήστε μετάφραση μόνο όπου προσθέτει αξία, χρησιμοποιήστε export/import για όγκους και να είστε αυστηροί στο να περάσετε τη σωστή γλώσσα στο context όταν δουλεύετε μέσω API.


Είτε στήνετε ένα πολυγλωσσικό e-shop, είτε προετοιμάζετε το Odoo για διεθνείς ομάδες, είτε αναπτύσσετε custom module, η γνώση των μεταφραζόμενων πεδίων θα σας βοηθήσει να φτιάξετε πιο καθαρά και φιλικά προς το χρήστη συστήματα.

Δουλεύετε σε ένα πολυγλωσσικό Odoo και χρειάζεστε βοήθεια με τη διαμόρφωση πεδίων ή τη ροή εργασίας μεταφράσεων; Επικοινωνήστε με την ομάδα της Dasolo και θα χαρούμε να σας βοηθήσουμε να το υλοποιήσετε σωστά.

Μεταφραζόμενα Πεδία στο Odoo: Οδηγός Πλήρους Κατανόησης
Dasolo 6 Μαρτίου 2026
Share this post
Σύνδεση to leave a comment