Για μεταφραστές¶
Αυτή η σελίδα απευθύνεται στο πρόσωπο που επεξεργάζεται τον κατάλογο, όχι σε εκείνο που γράφει τον κώδικα. Είναι σύντομη επίτηδες, και προορίζεται να συνδεθεί ή να αντιγραφεί μέσα στις δικές του οδηγίες προς μεταφραστές που έχει κάθε έργο.
Τίποτα εδώ δεν απαιτεί να ξέρετε Python. Όλα εδώ αφορούν ένα πράγμα: τα κομμάτια ενός μηνύματος που βρίσκονται μέσα σε άγκιστρα.
Τι είναι ένα σύμβολο κράτησης θέσης¶
Ένα μήνυμα σε έναν κατάλογο μπορεί να περιέχει ονόματα μέσα σε άγκιστρα:
Το {name} είναι ένα σύμβολο κράτησης θέσης. Όταν το πρόγραμμα δείχνει
αυτό το μήνυμα, αντικαθιστά το {name} με μια τιμή που παρέχει το ίδιο — το
όνομα ενός ανθρώπου, το όνομα ενός αρχείου, έναν αριθμό. Το σύμβολο κράτησης
θέσης δεν είναι λέξη προς μετάφραση· είναι μια υποδοχή.
Η μετάφρασή σας πηγαίνει στο msgstr, και πρέπει να διατηρήσει αυτή την
υποδοχή:
Τι μπορείτε να αλλάξετε, και τι όχι¶
Μπορείτε:
- Να μετακινήσετε ένα σύμβολο κράτησης θέσης οπουδήποτε το θέλει η γραμματική της γλώσσας-στόχου, ακόμη και στην αρχή του μηνύματος.
- Να επαναλάβετε ένα σύμβολο κράτησης θέσης αν η γλώσσα χρειάζεται την τιμή δύο φορές.
- Να ξαναγράψετε κάθε άλλη λέξη, μαζί με τη στίξη, τα διαστήματα και τη σειρά των προτάσεων.
Δεν πρέπει:
- Να μεταφράσετε το όνομα μέσα στα άγκιστρα. Το
{name}μένει{name}, ακόμη και σε μια γλώσσα που δεν γράφει τίποτε άλλο με λατινικά γράμματα. - Να αφαιρέσετε τα άγκιστρα, ούτε να γράψετε το όνομα χωρίς αυτά.
- Να αντικαταστήσετε τα άγκιστρα ASCII
{}με τα πλήρους πλάτους{}. Πολλές μέθοδοι εισαγωγής παράγουν τις μορφές πλήρους πλάτους· μοιάζουν σχεδόν πανομοιότυπες και δεν δουλεύουν. - Να προσθέσετε μορφοποίηση, όπως
{name!r}ή{amount:.2f}. Το πώς εμφανίζεται μια τιμή αποφασίζεται στο πρόγραμμα, όχι στον κατάλογο. - Να επινοήσετε ένα σύμβολο κράτησης θέσης που δεν υπάρχει στο
msgid.
Αν ένα μήνυμα χρειάζεται μια τιμή που δεν προσφέρει το πρωτότυπο, τότε πρόκειται για μήνυμα που πρέπει να αλλάξει ο προγραμματιστής. Πείτε το, αντί να το παρακάμψετε.
Μορφές πληθυντικού¶
Ένα μήνυμα με μέτρηση φτάνει με μία υποδοχή msgstr ανά μορφή πληθυντικού
της γλώσσας σας, και η γλώσσα σας αποφασίζει πόσες είναι αυτές — μία για τα
ιαπωνικά, δύο για τα γερμανικά, τρεις για τα ρωσικά, έξι για τα αραβικά.
Συμπληρώστε κάθε υποδοχή που σας δίνει ο κατάλογος.
Δύο κανόνες που πιάνουν πολλούς στον ύπνο:
- Οι υποδοχές δεν είναι «ενικός, πληθυντικός, ακόμη πιο πληθυντικός». Κάθε δείκτης σημαίνει ό,τι λέει ο κανόνας πληθυντικού της γλώσσας σας ότι σημαίνει. Η τρίτη μορφή των λετονικών είναι μόνο για το μηδέν· η δεύτερη των σλοβενικών είναι για ακριβώς δύο· τα ουαλικά βάζουν τη γενική περίπτωση στον δείκτη 0 και τον ενικό στον δείκτη 1.
- Δύο υποδοχές μπορεί βάσιμα να έχουν το ίδιο κείμενο. Στα τουρκικά, τα ουγγρικά, τα περσικά και τα βεγγαλικά ένα ουσιαστικό μένει στον ενικό μετά από αριθμητικό, οπότε και οι δύο μορφές ενός μηνύματος με μέτρηση είναι η ίδια συμβολοσειρά. Αυτό είναι σωστό, όχι λάθος από αντιγραφή-επικόλληση.
Οι παραπάνω κανόνες για τα σύμβολα κράτησης θέσης ισχύουν για κάθε μορφή ξεχωριστά.
Καταχωρίσεις fuzzy¶
Μια καταχώριση σημειωμένη ως fuzzy είναι η εικασία μιας μηχανής: ο
προγραμματιστής άλλαξε το αρχικό μήνυμα, και τα εργαλεία ζευγάρωσαν το νέο
κείμενο με την παλιά σας μετάφραση ώστε να έχετε από κάπου να ξεκινήσετε.
Μια καταχώριση fuzzy δεν χρησιμοποιείται από το πρόγραμμα — εμφανίζει
αντ' αυτής το αμετάφραστο πρωτότυπο — μέχρι κάποιος να αναθεωρήσει το κείμενο
και να αφαιρέσει τον δείκτη fuzzy. Οι περισσότεροι επεξεργαστές PO έχουν ένα
κουμπί ακριβώς για αυτό.
Πώς να διαβάσετε ένα μήνυμα αποτυχίας¶
Τα εργαλεία ελέγχουν τα σύμβολα κράτησης θέσης όταν μεταγλωττίζεται ο
κατάλογος, και το μήνυμα είναι γραμμένο για εσάς και όχι για προγραμματιστή.
Το να αναφέρεται μόνο ότι λείπει το {name} είναι αδιέξοδο όταν βλέπετε
αυτούς τους χαρακτήρες μπροστά σας, οπότε εκεί όπου ένα σύμβολο κράτησης θέσης
δείχνει να υπάρχει αλλά δεν υπάρχει, το μήνυμα λέει και το γιατί. Απέναντι στο
πρωτότυπο Hello {name}, καθένα από τα παρακάτω αναφέρεται κάτω από το
translation does not match the source placeholders:
| Η μετάφρασή σας λέει | Ο λόγος που δίνει |
|---|---|
こんにちは {name} |
λείπει το {name} (τα άγκιστρα γύρω του δεν είναι τα ASCII { και }) |
こんにちは {{name}} |
λείπει το {name} (είναι γραμμένο {{name}}, που είναι ο τρόπος να γίνει escape ένα κυριολεκτικό άγκιστρο) |
こんにちは name |
λείπει το {name} (το όνομα εμφανίζεται, αλλά όχι μέσα σε άγκιστρα) |
こんにちは {名前} |
λείπει το {name}· το {名前} δεν υπάρχει στο πηγαίο μήνυμα |
Οι χαρακτήρες που δεν φαίνονται έχουν τη δική τους αντιμετώπιση. Ένα αδιάσπαστο διάστημα μέσα στα άγκιστρα είναι κάτι που παράγει μια μέθοδος εισαγωγής και δεν το δείχνει κανένας επεξεργαστής, οπότε το μήνυμα το τυπώνει με το σημείο κώδικά του αντί να κατονομάζει έναν χαρακτήρα που δεν θα μπορούσατε ποτέ να βρείτε:
Ένα όνομα του οποίου τα γράμματα ανακατεύουν συστήματα γραφής — η περίπτωση
των ομοιογλύφων, όπου ένα κυριλλικό а δεν ξεχωρίζει από ένα λατινικό —
εμφανίζεται δύο φορές, μία σε αναγνώσιμη μορφή και μία με escape, που είναι η
μόνη μορφή που τα ξεχωρίζει:
translation does not match the source placeholders: {name} is missing;
{nаme} (n\u0430me) is not in the source message
Η ίδια αποσαφήνιση εφαρμόζεται όταν ένα ελληνικό ή κυριλλικό όνομα γραμμένο
εξ ολοκλήρου σε ένα σύστημα γραφής συγκρούεται με ένα πηγαίο όνομα ASCII,
συμπεριλαμβανομένης της περίπτωσης του μονογράμματου λατινικού a έναντι του
κυριλλικού а.
Αν συναντήσετε κάποια από αυτές τις περιπτώσεις και η διόρθωση δεν είναι
προφανής, η ασφαλής κίνηση είναι να σβήσετε το σύμβολο κράτησης θέσης που
πληκτρολογήσατε και να αντιγράψετε εκείνο από το msgid.
Τι δεν μπορούν να κάνουν οι έλεγχοι¶
Τα εργαλεία επαληθεύουν ότι τα σύμβολα κράτησης θέσης σας είναι ανέπαφα. Δεν μπορούν να πουν αν η μετάφραση είναι ακριβής, φυσική ή σωστή για τα συμφραζόμενα — αυτό μένει εξ ολοκλήρου σε εσάς.
Δύο πράγματα βοηθούν περισσότερο από κάθε έλεγχο:
- Διαβάστε το σχόλιο προς τον μεταφραστή. Μια γραμμή που ξεκινά με
#.πάνω από το μήνυμα είναι ο προγραμματιστής που σας λέει πού εμφανίζεται και τι σημαίνει. - Ρωτήστε για το
msgctxt. Όταν η ίδια λέξη εμφανίζεται δύο φορές με διαφορετικά συμφραζόμενα, είναι επειδή οι δύο περιπτώσεις χρειάζεται να μεταφραστούν διαφορετικά — το «Άνοιγμα» ως κουμπί και το «Ανοιχτό» ως κατάσταση, για παράδειγμα.