
# Μεταφράσεις

Το Blockstudio παρέχει τις μεταφράσεις του στον φάκελο `languages`. Το WordPress τις χρησιμοποιεί όταν η γλώσσα του ιστότοπου ή η γλώσσα στο προφίλ χρήστη ταιριάζει με κάποια από αυτές. Αυτό λειτουργεί με τον ίδιο τρόπο είτε το Blockstudio εκτελείται ως πρόσθετο, ως υποχρεωτικό πρόσθετο είτε ως πακέτο Composer.

## Διαθέσιμες γλώσσες

Το Blockstudio περιλαμβάνει μεταφράσεις για τις WordPress τοπικές ρυθμίσεις που καταγράφονται στο ενσωματωμένο `languages/locales.json` του, συμπεριλαμβανομένων περιφερειακών παραλλαγών και παραλλαγών ευγενικού ή οικείου ύφους. Τα Αγγλικά (`en_US`) είναι η γλώσσα πηγής και δεν χρειάζονται αρχείο μετάφρασης. Η λίστα συνδυάζει τις τοπικές ρυθμίσεις που υποστηρίζονται από το WordPress στο GlotPress με τις παραλλαγές που διατίθενται από το βασικό WordPress API.

Οι υπάρχουσες μεταφράσεις στα Γερμανικά (`de_DE`) και στα επίσημα Γερμανικά (`de_DE_formal`) διατηρούνται. Οι πρόσθετες μεταφράσεις δημιουργούνται με AI χρησιμοποιώντας το GPT-6 Luna και επισημαίνονται ως δημιουργημένες από μηχανή στις κεφαλίδες `.po` τους. Περνούν αυτοματοποιημένους ελέγχους πληρότητας και μορφοποίησης, αλλά δεν έχουν ελεγχθεί όλες από φυσικούς ομιλητές. Οι διορθώσεις είναι ευπρόσδεκτες.

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

Επιλέξτε τη γλώσσα στην ενότητα **Ρυθμίσεις > Γενικά > Γλώσσα ιστότοπου** ή ορίστε προσωπική γλώσσα στο προφίλ σας στο WordPress. Το Blockstudio χρησιμοποιεί αυτόματα αυτήν την τοπική ρύθμιση. Δεν προσθέτει γλώσσες στον επιλογέα γλώσσας του WordPress: μια τοπική ρύθμιση πρέπει να είναι επίσης διαθέσιμη στην εγκατάσταση WordPress σας. Δεν απαιτούνται αίτημα AI, συνδρομή μετάφρασης ή πρόσθετη ρύθμιση χρόνου εκτέλεσης στον ιστότοπό σας.

## Παράκαμψη μετάφρασης

Τα αρχεία μετάφρασης στο `wp-content/languages/plugins` έχουν προτεραιότητα έναντι των ενσωματωμένων αρχείων, τόσο για τις συμβολοσειρές PHP (`blockstudio-de_DE.mo` ή `blockstudio-de_DE.l10n.php`) όσο και για τα scripts (ένα αρχείο ανά λαβή script, για παράδειγμα `blockstudio-de_DE-blockstudio-blocks.json`).

## Συνεισφορά σε μετάφραση

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

1. Για να προσθέσετε μια γλώσσα, αντιγράψτε το `languages/blockstudio.pot` στο `languages/blockstudio-<locale>.po`, για παράδειγμα `blockstudio-fr_FR.po`, και ορίστε τις κεφαλίδες `Language` και `Plural-Forms`. Για να βελτιώσετε μια γλώσσα, επεξεργαστείτε το υπάρχον αρχείο `.po` της.
2. Μεταφράστε τις συμβολοσειρές. Διατηρήστε στην μετάφραση τα σύμβολα κράτησης θέσης, όπως το `%1$s`.
3. Εκτελέστε το `npm run i18n`. Δημιουργεί τα αρχεία `.mo`, `.l10n.php` και `.json` που φορτώνει το WordPress.
4. Υποβάλετε το αρχείο `.po` μαζί με τα αρχεία που δημιουργήθηκαν και ανοίξτε ένα αίτημα ενσωμάτωσης.

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

## Δημιουργία μεταφράσεων που λείπουν

Οι συντηρητές μπορούν να δημιουργήσουν καταχωρίσεις που λείπουν με ένα Codex CLI με έλεγχο ταυτότητας. Πρόκειται για προαιρετική εντολή ανάπτυξης, όχι για κάτι που εκτελεί το WordPress:

```bash
npm run i18n:translate -- --dry-run
npm run i18n:translate
```

Το προεπιλεγμένο μοντέλο είναι το `gpt-6-luna`. Για να εργαστείτε σε μία τοπική ρύθμιση, χρησιμοποιήστε το `npm run i18n:translate -- --locale fr_FR`. Η εντολή εξάγει τις πιο πρόσφατες συμβολοσειρές πηγής, συμπληρώνει τις μεταφράσεις που λείπουν και στη συνέχεια μεταγλωττίζει τα αρχεία `.mo`, `.l10n.php` και `.json` ανά script. Στο Codex αποστέλλονται μόνο δημόσιες συμβολοσειρές διεπαφής, το περιεχόμενό τους και οι υπάρχουσες μορφές τους, όχι το περιεχόμενο του ιστότοπου ή δεδομένα χρηστών.

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

Το `npm run i18n:locales` ανανεώνει ρητά τη λίστα τοπικών ρυθμίσεων και τους κανόνες πληθυντικού από το WordPress/GlotPress. Το `npm run i18n:coverage` ελέγχει ότι κάθε τοπική ρύθμιση στην καταχωρισμένη λίστα είναι πλήρης. Ούτε οι έλεγχοι κάλυψης ούτε η κανονική CI καλούν AI ή ανακτούν δεδομένα τοπικών ρυθμίσεων. Δείτε το αποθετήριο README για επιλογές ομαδοποίησης, ταυτόχρονης εκτέλεσης και ανάκτησης.

## Μεταφράσιμες συμβολοσειρές στον κώδικα

- PHP: χρησιμοποιήστε τις συναρτήσεις WordPress με τον τομέα κειμένου `blockstudio`, για παράδειγμα `__( 'Invalid block.', 'blockstudio' )`.
- JavaScript: εισαγάγετε το `__` από το `@/utils/__` και περάστε ένα κυριολεκτικό αλφαριθμητικό, για παράδειγμα `__( 'Add row' )`. Ένα αλφαριθμητικό που δημιουργείται κατά την εκτέλεση δεν μπορεί να μεταφραστεί, επομένως χρησιμοποιήστε ένα κυριολεκτικό αλφαριθμητικό για κάθε παραλλαγή.
- Ένα νέο πακέτο script με μεταφράσιμες συμβολοσειρές χρειάζεται καταχώριση στο `scripts/i18n.ts` και κλήση του `wp_set_script_translations()` με το ίδιο handle και το `Translations::script_path()`.

Αφού αλλάξετε τις συμβολοσειρές, εκτελέστε το `npm run i18n`. Ενημερώνει το `languages/blockstudio.pot` και κάθε αρχείο `.po`. Οι νέες συμβολοσειρές παραμένουν στα Αγγλικά μέχρι να τις συμπληρώσει ένας μεταφραστής ή το `npm run i18n:translate`. Το CI εκτελεί τα `npm run i18n:check` και `npm run i18n:coverage`, τα οποία απορρίπτουν παρωχημένα μεταγλωττισμένα αρχεία, προβλήματα εξαγωγής ή ελλιπή κάλυψη τοπικών ρυθμίσεων. Η δημιουργία παραμένει ρητή ενέργεια του συντηρητή.
