Ανατομία ενός γράμματος
Με ενδιαφέρον είδα μια συζήτηση (τίτλος upgrade σε ubuntu 5.10 = προβλήματα με τα ελληνικά) στη λίστα συνδρομητών Linux-greek-users για το θέμα της υποστήριξης γραφής ελληνικών σε ελεύθερο λογισμικό.
Ωστόσο, μετά από λίγα γράμματα, στάλθηκε
Διαθέσιμη η ελληνική μετάφραση του Ubuntu Guide (Linux)
Ο Γιώργος Λογιοτατίδης έκανε την μετάφραση του Ubuntu Guide στα Ελληνικά!
Λύση
Λύση της σπαζοκεφαλιάς αποκρυπτογράφησης.
[Τα πρόβλημα αυτό προέκυψε από ανάλυση του Κωνσταντίνου Τόγια στη λίστα συνδρομητών Ubuntu-users στο ubuntu-gr τελεία org. Ο δικτυακός τόπος του ελληνικού Ubuntu είναι ενεργός από προσπάθειες του Γιώργου Λογιοτατίδη, και υπάρχει και ελληνική σελίδα της ομάδας στο κεντρικό Wiki του Ubuntu Linux.]
Χρησιμοποιώντας το πρόγραμμα "unzip" από Linux δείχνει ότι το πρωταρχικό όνομα του αρχείου .doc είναι σε κωδικοποίηση άλλη από UTF-8. Άλλες εφαρμογές όπως file-roller (ποιο είναι το αντίστοιχο του KDE;) δείχνουν κενό όνομα. Ο Γιάννης Μ. αναφέρει ότι το WinZip μπορεί να εμφανίσει σωστά το όνομα.
Ποιό είναι το πραγματικό όνομα του αρχείου .doc;
Το πρότυπο ZIP δεν περιγράφει την κωδικοποίηση στην οποία είναι αποθηκευμένο το όνομα ενός αρχείου, με αποτέλεσμα να χρειάζεται να μαντέψει κάποιος δοκιμάζοντας τυπικές κωδικοποιήσεις για το ποιο είναι το τελικό όνομα. Υπάρχει βιβλιοθήκη ΕΛΛΑΚ που να δοκιμάζει τυπικές κωδικοποιήσεις σε ένα αλφαριθμητικό για να βρει την κωδικοποίησή του;
planet@iceberg /home/projects/planet
> unzip -l apoxairetisthrio-logos-mathith.zip
Archive: apoxairetisthrio-logos-mathith.zip
Length Date Time Name
-------- ---- ---- ----
24576 05-08-04 09:49 Ǻ▒▒▒ΰ▒ᮽҿ᪬ ▒ܪ▒ ▒▒▒▒.doc
-------- -------
24576 1 fileplanet@iceberg /home/projects/planet
> _
Αν πάρουμε την παραπάνω έξοδο του unzip και δοκιμάσουμε να την μετατρέψουμε σε utf-8, θα δούμε ότι κανένα από τα γνωστά iso-8859-7, 737, 928 δεν ταιριάζει.
planet@iceberg /home/projects/planet
> unzip apoxairetisthrio-logos-mathith.zip | iconv -f iso-8859-7 -t utf-8
Archive: apoxairetisthrio-logos-mathith.zip
inflating: ΗΊiconv: μη έγκυρη ακολουθία εισόδου στη θέση 60planet@iceberg /home/projects/planet
> _
Τι συμβαίνει άραγε; Αν δούμε το περιεχόμενο του πρωταρχικού αρχείου με ένα hex editor (ghex2, από το GNOME) και συγκρίνουμε με την έξοδο του unzip, θα παρατηρήσουμε ότι είναι διαφορετικό. Αν και το unzip δεν γνωρίζει από κωδικοποιήσεις, χαλάει την κωδικοποίηση του ελληνικού ονόματος.
Πως προχωράμε; Με το ghex2 εντοπίζουμε και αποθηκεύουμε το όνομα του αρχείου .doc σε ξεχωριστό αρχείο και εκτελούμε:
planet@iceberg /home/projects/planet
> cat nameoffile.txt | iconv -f CP737 -t utf-8
Αποχαιρετιστήριος λόγος μαθητή.docplanet@iceberg /home/projects/planet
> _
(Υποτίθεται ότι δοκιμάσαμε iso-8859-7, CP737, κτλ).
Τι κάνουμε τώρα;
Υπάρχει το ενδεχόμενο να έχει λυθεί το πρόβλημα στην έκδοση 2.10.3 του file-roller. Δυστυχώς μέχρι στιγμής δεν καταφέραμε να το μεταγλωττίσουμε (το Ubuntu 5.04 έχει 2.10.1), οπότε το ζήτημα εκκρεμεί...
Θα ήταν καλό να λυθεί το πρόβλημα στο νέο GNOME, οπότε οι χρήστες να μην αντιμετωπίσουν πρόβλημα με παλιές κωδικοποιήσεις ονομάτων αρχείων. It just works (tm).
Χρήση μεταφραστικής μνήμης με παραδείγματα – GNOME
Ενημέρωση (6 Αυγ 2007) : Η εγγραφή αυτή έχει ενημερωθεί με πιο πρόσφατα στοιχεία. Σε κάθε περίπτωση δείτε τις γενικές οδηγίες για τη μετάφραση του GNOME 2.20, και γραφτείτε στη λίστα team @ gnome.gr.
Έστω ότι θέλουμε να μεταφράσουμε την εφαρμογή GNOME Sudoku, η οποία κατά τη σχετική σελίδα στατιστικών του GNOME αποτελείται από 126 μηνύματα. Παρατηρούμε ότι το πρόγραμμα είναι αμετάφραστο.
Από τη σελίδα των στατιστικών παίρνουμε το αρχείο με τα μηνύματα προς μετάφραση, το αποθηκεύουμε στο σκληρό μας δίσκο και το φορτώνουμε από το πρόγραμμα KBabel. (οδηγίες για την εγκατάσταση του KBabel σε Ubuntu, Fedora)
Η μετάφραση 126 μηνυμάτων από την αρχή είναι κουραστική διαδικασία και θέλουμε να χρησιμοποιήσουμε την υπάρχουσα δουλειά που έχει γίνει στον εξελληνισμό του GNOME.
Στόχος είναι να δημιουργήσουμε μεταφραστική μνήμη από τις υπάρχουσες μεταφράσεις και να βάλουμε το KBabel να κάνει μια αυτοματοποιημένη πρόχειρη μετάφραση του εγχειριδίου του GNOME Sudoku.
Ακολουθούμε τις οδηγίες στο γράμμα Χρήση μεταφραστικής μνήμης στο GNOΜE για τη δημιουργία τοπικού αντιγράφου των μεταφράσεων του GNOME που έχουν γίνει ήδη.
Έπειτα, ξεκινούμε το KBabel (πληροφορίες για τις ρυθμίσεις του KBabel όπως plural type, όνομα ομάδας, κτλ) και φορτώνουμε το αρχείο που αποθηκεύσαμε προηγουμένα στο δίσκο. Σε αυτό το σημείο το αποθηκεύουμε ξανά με νέο όνομα όπως gnome-sudoku-el.po, το οποίο είναι και το όνομα εργασίας του αρχείου.
Μετά, επιλέγουμε Tools/Rough Translation... και εμφανίζεται ο διάλογος για την Πρόχειρη Μετάφραση:

Εκεί που αναφέρει λεξικά (Dictionaries), κάντε το να φαίνεται όπως στην παραπάνω εικόνα, δηλαδή να υπάρχει μόνο το "Translation Database" κάτω από τη στήλη Use.
Έπειτα κάντε κλικ στο "Configure...":

Εδώ κάντε στο "Scan folder & Subfolders..." και επιλέξτε τον κατάλογο που περιέχει τα αρχεία .po του GNOME που δημιουργήσαμε παραπάνω. Πατήστε OK.

Η διαδικασία θα πάρει μερικά λεπτά και θα δημιουργηθεί η βάση με τα μεταφρασμένα μηνύματα.
Πατήστε ΟΚ και μετά ξανά ΟΚ για να εφαρμοστεί η μεταφραστική μνήμη στα μηνύματα του gnome-sudoku.
Όταν ολοκληρωθεί η διαδικασία μηχανικής μετάφρασης του gnome-sudoku, θα δείτε ένα αποτέλεσμα που μοιάζει με το παρακάτω (τα νούμερα είναι από άλλο πακέτο):

Πατήστε OK και αποθηκεύστε ξανά το αρχείο μετάφρασης. Μπορείτε εύκολα να δείτε ότι έχουμε γλυτώσει το 18% της δουλειάς ενώ το 60% αποτελείται από μερικές μεταφράσεις (δηλαδή σχεδόν ταιριάζουν, πρέπει όμως ο μεταφραστής να δει κάθε περίπτωση).
Σε αυτό το σημείο χρησιμοποιήστε το KBabel για να ολοκληρώσετε τη μετάφραση.
Τέλος, επικοινωνήστε με την ομάδα μετάφρασης του GNOME για να εισαχθεί το έργο σας στο ίδιο το πακέτο gnome-sudoku!
Υ.Γ.
Αν θέλετε να γλυτώσετε το βήμα της δημιουργίας της μεταφραστικής μνήμης του GNOME, έχω ετοιμάσει τα σχετικά αρχεία για τη μορφή "Translation Database" του KBabel και είναι διαθέσιμα εδώ. Αποσυμπιέστε το αρχείο στον αρχικό σας κατάλογο και η μεταφραστική μνήμη θα τοποθετηθεί στο σημείο που το χρειάζεται το πρόγραμμα KBabel.