ΛειτουργίεςPluginΤιμολόγησηΠόροι
Αλλαγή γλώσσας
ΠόροιΠώς να μεταφράσετε ένα πρόσθετο WordPress (Βήμα προς Βήμα)

Πώς να μεταφράσετε ένα πρόσθετο WordPress (Βήμα προς Βήμα)

SimplePoTranslate Team7 Μαΐου 2026
Πώς να μεταφράσετε ένα πρόσθετο WordPress (Βήμα προς Βήμα)

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

Τα καλά νέα είναι ότι τα περισσότερα καλοσχεδιασμένα πρόσθετα είναι έτοιμα για μετάφραση (translation-ready), πράγμα που σημαίνει ότι ο προγραμματιστής περιέβαλε τις συμβολοσειρές του σε λειτουργίες Gettext ειδικά για να μπορούν να τις μεταφράσουν άνθρωποι σαν εσάς. Η πρόκληση είναι να γνωρίζετε πού βρίσκονται τα αρχεία, τι όνομα να δώσετε στη μετάφρασή σας και πού να την τοποθετήσετε ώστε η επόμενη ενημέρωση του πρόσθετου να μην διαγράψει την εργασία σας.

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

Πώς βρίσκετε τα αρχεία μετάφρασης ενός πρόσθετου;

Πριν μεταφράσετε οτιδήποτε, χρειάζεστε δύο πληροφορίες από το πρόσθετο: το πεδίο κειμένου (text domain) και τον φάκελο γλωσσών (languages folder). Το πεδίο κειμένου είναι η μοναδική συμβολοσειρά που χρησιμοποιεί το πρόσθετο για να αναγνωρίσει τις δικές του μεταφράσεις, και ο φάκελος γλωσσών είναι εκεί όπου βρίσκεται το πρότυπο πηγής.

Εντοπισμός του Φακέλου Γλωσσών και του Πεδίου Κειμένου

Ανοίξτε τον κατάλογο του πρόσθετου στο wp-content/plugins/your-plugin/ και αναζητήστε έναν υποφάκελο /languages. Μέσα σε αυτόν, συνήθως θα βρείτε ένα αρχείο .pot, το κενό πρότυπο που περιέχει κάθε μεταφράσιμη συμβολοσειρά.

Για να επιβεβαιώσετε το πεδίο κειμένου, ανοίξτε το κύριο αρχείο PHP του πρόσθετου και δείτε το μπλοκ κεφαλίδας του:

/**
 * Plugin Name: Awesome Plugin
 * Text Domain: awesome-plugin
 * Domain Path: /languages
 */

Εδώ το πεδίο κειμένου είναι awesome-plugin. Αυτή η τιμή είναι κρίσιμη, επειδή τα αρχεία μετάφρασής σας πρέπει να την περιλαμβάνουν στα ονόματά τους αλλιώς το WordPress δεν θα τα αντιστοιχίσει ποτέ με το πρόσθετο. Θα τη δείτε επίσης σε κάθε κλήση συμβολοσειράς σε όλο τον κώδικα:

echo __( 'Settings saved successfully.', 'awesome-plugin' );

Αυτό το δεύτερο όρισμα, awesome-plugin, είναι ξανά το πεδίο κειμένου. Κάθε συμβολοσειρά που το χρησιμοποιεί μπορεί να μεταφραστεί από τον κατάλογό σας. Εάν μια συμβολοσειρά στη διεπαφή του πρόσθετου λείπει αυτή την περιτύλιξη, για παράδειγμα ένας προγραμματιστής που κωδικοποίησε απευθείας echo 'Save' χωρίς __(), τότε αυτή η συμβολοσειρά δεν είναι καθόλου μεταφράσιμη και κανένα αρχείο .po δεν μπορεί να την προσεγγίσει. Τα περισσότερα αξιόπιστα πρόσθετα περιβάλλουν τα πάντα σωστά, αλλά αν παρατηρήσετε μία ή δύο επίμονες συμβολοσειρές που αρνούνται να μεταφραστούν, μια ελλιπής περιτύλιξη Gettext στην πηγή είναι πιθανός υπαίτιος.

Ένας γρήγορος τρόπος για να αξιολογήσετε αν ένα πρόσθετο είναι πραγματικά έτοιμο για μετάφραση (translation-ready) είναι να ελέγξετε την καταχώρισή του στον κατάλογο του WordPress.org, η οποία δείχνει ένα ποσοστό μετάφρασης και συνδέσεις με ένα πρότυπο /languages. Ένα πρόσθετο με ενεργό μεταφραστικό έργο είναι πολύ πιο πιθανό να έχει καθαρές, πλήρως περιτυλιγμένες συμβολοσειρές από ένα εγκαταλελειμμένο.

Τι συμβαίνει αν το πρόσθετο δεν έχει αρχείο POT;

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

Το τυπικό εργαλείο για αυτό είναι το WP-CLI, το οποίο εξάγει κάθε κλήση Gettext σε ένα νέο αρχείο .pot.

wp i18n make-pot wp-content/plugins/awesome-plugin \
  wp-content/plugins/awesome-plugin/languages/awesome-plugin.pot

Αυτή η εντολή περιηγείται στα αρχεία PHP και JavaScript του πρόσθετου, βρίσκει κάθε κλήση __(), _e(), _n() και τις σχετικές κλήσεις, και γράφει ένα πλήρες πρότυπο. Αν προτιμάτε μια γραφική διαδρομή, το Poedit Pro μπορεί να σαρώσει τον πηγαίο κώδικα με τον ίδιο τρόπο. Σε κάθε περίπτωση, το αποτέλεσμα είναι ένα αρχείο .pot που περιέχει όλες τις αρχικές συμβολοσειρές με κενές μεταφράσεις, έτοιμο να μετατραπεί σε ένα πραγματικό αρχείο γλώσσας.

Η δημιουργία του δικού σας προτύπου έχει ένα κρυφό όφελος: καταγράφει συμβολοσειρές που ο αρχικός προγραμματιστής μπορεί να ξέχασε να συμπεριλάβει σε ένα διανεμημένο .pot. Τα πρόσθετα εξελίσσονται γρήγορα, και ένα πρότυπο που συνοδευόταν με την έκδοση 2.1 μπορεί να λείπουν συμβολοσειρές που προστέθηκαν στην 2.4. Η αναδημιουργία από την τρέχουσα πηγή εγγυάται ότι ο κατάλογός σας αντικατοπτρίζει αυτό που το πρόσθετο εμφανίζει στην πραγματικότητα σήμερα, όχι αυτό που εμφάνιζε δύο εκδόσεις πριν. Εάν διατηρείτε μεταφράσεις για ένα πρόσθετο με την πάροδο του χρόνου, η επανεκτέλεση του make-pot μετά από κάθε μεγάλη ενημέρωση είναι μια αξιόπιστη συνήθεια.

Δημιουργία των αρχείων PO και MO με το σωστό όνομα

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

Ο Τύπος του Ονόματος Αρχείου

Για τις μεταφράσεις πρόσθετων, το μοτίβο είναι text-domain-locale. Έτσι, για το πεδίο κειμένου awesome-plugin μεταφρασμένο στα Γερμανικά, τα αρχεία πρέπει να ονομαστούν:

awesome-plugin-de_DE.po
awesome-plugin-de_DE.mo

Ο κωδικός τοπικών ρυθμίσεων είναι ο κωδικός γλώσσας ιστοσελίδας του WordPress: de_DE για τα Γερμανικά, fr_FR για τα Γαλλικά, es_ES για τα Ισπανικά, pt_BR για τα Βραζιλιάνικα Πορτογαλικά. Αν κάνετε λάθος στις τοπικές ρυθμίσεις, το WordPress παραλείπει αθόρυβα το αρχείο σας. Τα δημιουργείτε αυτά από το πρότυπο .pot σε ένα πρόγραμμα επεξεργασίας όπως το Poedit, το οποίο μεταγλωττίζει αυτόματα το δυαδικό αρχείο .mo όταν αποθηκεύετε. Αν είστε νέοι σε αυτό το πρόγραμμα επεξεργασίας, ο πλήρης οδηγός Poedit εξηγεί τη δημιουργία μιας μετάφρασης από ένα πρότυπο βήμα προς βήμα.

Πού να τοποθετήσετε τα αρχεία ώστε οι ενημερώσεις να μην τα διαγράφουν

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

# RISKY: inside the plugin — wiped on every plugin update
wp-content/plugins/awesome-plugin/languages/awesome-plugin-de_DE.mo

# SAFE: the global languages override folder — survives updates
wp-content/languages/plugins/awesome-plugin-de_DE.mo

Χρησιμοποιείτε πάντα το wp-content/languages/plugins/. Το WordPress ελέγχει πρώτα αυτόν τον φάκελο παράκαμψης, και επειδή βρίσκεται έξω από τον φάκελο του πρόσθετου, η ενημέρωση του πρόσθετου δεν αγγίζει ποτέ τις μεταφράσεις σας. Τα αρχεία που τοποθετούνται μέσα στον ίδιο τον φάκελο του πρόσθετου αντικαθίστανται τη στιγμή που εγκαθίσταται μια νέα έκδοση.

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

Πώς το WordPress φορτώνει τη μετάφρασή σας

Ένα έτοιμο για μετάφραση πρόσθετο λέει στο WordPress να φορτώσει τον κατάλογό του καλώντας τη συνάρτηση load_plugin_textdomain() κατά την αρχικοποίηση:

add_action( 'init', function() {
    load_plugin_textdomain(
        'awesome-plugin',
        false,
        dirname( plugin_basename( __FILE__ ) ) . '/languages'
    );
} );

Για τα περισσότερα σύγχρονα πρόσθετα στο WordPress 4.6 και νεότερα, δεν χρειάζεται να το αγγίξετε αυτό. Το WordPress φορτώνει αυτόματα μεταφράσεις από το wp-content/languages/plugins/ εφόσον το όνομα αρχείου και οι τοπικές ρυθμίσεις του ιστοτόπου σας ταιριάζουν. Αν η ολοκληρωμένη μετάφρασή σας εξακολουθεί να μην εμφανίζεται, η αιτία είναι σχεδόν πάντα μια αναντιστοιχία ονόματος αρχείου, ένα ξεπερασμένο αρχείο .mo, ή μια γλώσσα ιστοτόπου ρυθμισμένη σε λάθος τοπικές ρυθμίσεις. Ο οδηγός αντιμετώπισης προβλημάτων για μεταφράσεις που δεν εμφανίζονται αναλύει κάθε ένα από αυτά τα σημεία αποτυχίας.

Πρόσθετα που αποθηκεύουν συμβολοσειρές στη βάση δεδομένων

Εδώ βρίσκεται ο σημαντικός περιορισμός. Η προσέγγιση Gettext μεταφράζει μόνο συμβολοσειρές που βρίσκονται στον κώδικα του πρόσθετου. Ορισμένα πρόσθετα, ειδικά αυτά για τη δημιουργία φορμών, τη δημιουργία σελίδων και τις επεκτάσεις ηλεκτρονικού εμπορίου, σας επιτρέπουν να δημιουργείτε περιεχόμενο (ετικέτες φορμών, χαρακτηριστικά προϊόντων, προσαρμοσμένα μηνύματα) που αποθηκεύεται στη βάση δεδομένων του WordPress. Αυτές οι συμβολοσειρές είναι δεδομένα που παράγονται από τον χρήστη, δεν αποτελούν μέρος του αρχείου .pot, οπότε ένα αρχείο .po δεν μπορεί να τις προσεγγίσει. Για περιεχόμενο βάσης δεδομένων χρειάζεστε ένα πολύγλωσσο πρόσθετο όπως το WPML ή το Polylang, ή τη δική του λειτουργία μετάφρασης συμβολοσειρών του πρόσθετου. Πάντα να ελέγχετε αν μια δεδομένη συμβολοσειρά βρίσκεται στον κώδικα ή στη βάση δεδομένων πριν υποθέσετε ότι ένα αρχείο .po μπορεί να τη διορθώσει.

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

Μετάφραση σε κλίμακα χωρίς τη χειρωνακτική δουλειά

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

Εδώ είναι που μια ροή εργασίας στο cloud αλλάζει τα δεδομένα. Ανεβάστε το αρχείο .po ή .pot του πρόσθετου στο SimplePoTranslate, επιλέξτε τις γλώσσες-στόχους σας, και η AI με επίγνωση του πλαισίου (context-aware AI) μεταφράζει ολόκληρο τον κατάλογο ενώ η Κλείδωμα Σύνταξης (Syntax Locking) παγώνει κάθε κράτημα θέσης, ετικέτα HTML και token κώδικα ώστε τίποτα να μην μπορεί να χαλάσει. Η Έξυπνη Ομαδοποίηση (Smart Batching) χειρίζεται μεγάλους καταλόγους με μία μόνο διέλευση, και κατεβάζετε ένα ZIP που περιέχει .po, .mo, .json, .php, και .xliff μαζί, σωστά μορφοποιημένα και έτοιμα να τα τοποθετήσετε στο wp-content/languages/plugins/. Λειτουργεί εξ ολοκλήρου στο cloud, οπότε δεν υπάρχει εγκατάσταση επιφάνειας εργασίας και καμία επιβάρυνση στον ιστότοπό σας.

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

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

Είστε έτοιμοι να μεταφράσετε το πρόσθετο WordPress σας σε κάθε γλώσσα που μιλάει το κοινό σας χωρίς να χαλάσετε ούτε μία μεταβλητή; Δοκιμάστε το SimplePoTranslate δωρεάν — δεν απαιτείται πιστωτική κάρτα. Η δωρεάν βαθμίδα σας επιτρέπει να μεταφράσετε το πρώτο σας αρχείο .po πρόσθετου μέσα σε λίγα λεπτά, με το Κλείδωμα Σύνταξης (Syntax Locking) σε κάθε συμβολοσειρά).

Μοιραστείτε αυτό το άρθρο