Lotte

Lightweight Online Translation Editor

Ένα ελαφρύ και ευέλικτο εργαλείο για online επεξεργασία μεταφραστικών αρχείων

Αναφορά παραδοτέου (αρχικό παραδοτέο σε μορφή PDF)

1ο Greek Spring of Code

Μάρτιος-Μάιος 2009

Δημήτρης Γλέζος glezos@indifex.com

Εισαγωγή

Το Lotte είναι ένα ελαφρύ και ευέλικτο online εργαλείο μεταφράσεων. Πρόκειται για ένα έργο που αναπτύχθηκε στη λογική ενός reusuable application το οποίο μπορεί να ενσωματωθεί σε έργα ανεπτυγμένα πάνω από το Django, τη δημοφιλή πλατφόρμα ανάπτυξης web εφαρμογών (web app framework).

Στα ισχυρά του σημεία συγκαταλέγονται η ευκολία χρήσης, η επεξεργασία αρχείων που βρίσκονται σε απομακρυσμένους εξυπηρετητές, και η εξειδίκευση στη διατήρηση της μεταφραστικής πληρότητας σε ψηλά σημεία, κάτι που υπάρχει ιδιαίτερη ανάγκη στον open source κόσμο.

Η αρχική σχεδίαση και υλοποίηση του Lotte έγινε στα πλαίσια του Greek Spring of Code 2009 της Εταιρείας Ελεύθερου Λογισμικού και Λογισμικού Ανοιχτού Κώδικα (www.eellak.gr).

Από την αρχική αίτηση: “Στόχος του παρόντος είναι η δημιουργία ενός Webbased Localization application σε Django. Η προσφορά του εν λόγω application στην οικογένεια των μεταφραστικών εργαλείων θα είναι ότι θα μπορεί να λειτουργήσει τόσο ως standalone application, ιδανικό για χρήση από μικρές ομάδες μεταφραστών και για γρήγορες μεταφράσεις, όσο και ως addon για οποιοδήποτε Django-based application. Με τη σύγκλιση όλων των state-of-the-art εργαλεία της κοινότητας σε Django (GNOME Damned Lies, Transifex, Pootle), η δημιουργία ενός τέτοιου component θα είναι μεγάλης σημασίας.”

Ένα screencast που παρουσιάζει το έργο και τα σημαντικότερα του σημεία, στα Ελληνικά, έχει αναρτηθεί στο http://blip.tv/file/2214225. Το βίντεο είναι επίσης διαθέσιμο για λήψη ως αρχείο ogg.

Σχεδιασμός

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

  • Tο Lotte υλοποιήθηκε σε Python, σαν ένα reusable Django encapsulated app, ώστε να μπορεί να ενσωματωθεί σε Django projects που χρειάζονται έναν

online translation editor.

  • Έγινε μια proof-of-concept υλοποίηση για αρχεία PO, χτίζοντας όμως την αρχιτεκτονική με τρόπο που επιτρέπει περισσότερες μορφές αρχείων.
  • Για τη διαχείριση των μεταφράσεων έγινε χτίσιμο πάνω από το Transifex, χρησιμοποιώντας το πολύ καλό file abstraction layer που προσφέρει, λαμβάνοντας αρχεία από απομακρυσμένα repositories και tarballs hosted οπουδήποτε στο internet και στέλνοντας αρχεία σε versioning systems πάνω από SSH και μέσω email.
  • Ο σχεδιασμός του workflow (ποιες σελίδες, πότε, πώς) έγινε με γνώμονα την λειτουργικότητα και απλότητα του user experience. Χρησιμοποιώντας σελιδοποίηση και φιλτραρίσματα σε Javascript επιτρέπουμε την επεξεργασία του αρχείου με ελάχιστα κλικ.
  • Ένα υποσύνολο των αρχικών προτεινόμενων χαρακτηριστικών δε θα υλοποιηθεί δίνοντας περισσότερη σημασία σε άλλους περισσότερο σημαντικούς τομείς όπως η λειτουργικότητα του εργαλείου και η αποδοτικότητα της διεπαφής. Αυτά είναι τα side-by-side editing πολλαπλών PO αρχείων, η υλοποίηση του DICT πρωτοκόλλου το οποίο μετά από έρευνα κρίθηκε ότι δεν είναι δημοφιλές και προτιμούνται RESTful APIs από τις υπηρεσίες που θα μπορούσαν να χρησιμοποιηθούν στην περίπτωση μας.

Django-rosetta

Το Django ήδη διαθέτει έναν online PO editor, to django-rosetta. Δεν έγινε χρήση του συγκεκριμένου για αρκετούς λόγους. Μερικοί από τους σημαντικότερους είναι ότι το συγκεκριμένο λογισμικό είναι εξειδικευμένο στην επεξεργασία αρχείων για συγκεκριμένα Django sites (locale/ <lang>/ LC_MESSAGES/ django.po), χρησιμοποιεί στατικές Django forms οι οποίες δεν είναι ευέλικτες για προσαρμογή σε προχωρημένες απαιτήσεις, δεν υποστηρίζει permissions για μεταφραστές κλπ.

Αναλυτικά χαρακτηριστικά

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

Online

Θέλουμε ένα ελαφρύ εργαλείο το οποίο θα επιτρέπει στους μεταφραστές να διατηρούν το ποσοστό πληρότητας μεταφράσεων στο 100%. Υπάρχει μια πληθώρα μεταφραστικών εργαλείων επιφάνειας εργασίας, όπως τα gtranslator, poedit, lokalize (πρώην kbabel), virtaal, καθώς και αρκετές εμπορικές και ιδιόκτητες επιλογές. Αυτά τα εργαλεία που είναι αποδοτικά στη μετάφραση μεγάλων όγκων δεδομένων, το Lotte αριστεύει στην μετάφραση πολλών και μικρών έργων. Ειδικότερα στο συνδυασμό του με υποδομές όπως το Transifex και το GNOME Damned Lies, μπορεί να είναι πολύ αποδοτικό στη διατήρηση των έργων σε ψηλά επίπεδα μετάφρασης, κάτι το οποίο τα υπόλοιπα εργαλεία υστερούν. To UI προσφέρει την αρχική συμβολοσειρά αριστερά και ένα κουτί εισαγωγής κειμένου για τη μετάφραση, το οποίο μεγαλώνει ανάλογα με το μέγεθος της αρχικής συμβολοσειράς, ενώ τα μεταφρασμένα, fuzzy και αμετάφραστες συμβολοσειρές ξεχωρίζουν με χαρακτηριστικά χρώματα.

Ελαφρύ

Στόχος μας είναι να έχουμε ένα πολύ ελαφρύ interface που να “παίζει” με διάφορες πλατφόρμες και περιβάλλοντα χρηστών. Χρησιμοποιώντας το jQuery Javascript Library πετύχαμε ομοιομορφία μεταξύ πλοηγητών. Tμήματα του UI μπορούν να κρυφτούν δυναμικά για να επιτρέψουν στο χρήστη να δουλέψει πιο αποδοτικά με το χώρο στη οθόνη του. Αυτό είναι ιδιαίτερα χρήσιμο για μεταφραστές που βρίσκονται σε χώρες που δεν έχουν τη δυνατόητα να χρησιμοποιούν μεγάλες οθόνες.

Ενσωμάτωση στο Transifex

Στη λίστα των αρχείων υπάρχει άμεσος χαρακρηριστικός σύνδεσμος στη διεπαφή του Lotte. Ο σύνδεσμος για in-browser editing είναι ο 4ος στη σειρά, αμέσως πριν το “Submit file from your own system”. Σε αυτό το σημείο αξίζει να σημειωθεί ότι το Lotte δυνητικά μπορεί να κάνει edit και περισσότερα από 1 αρχεία ταυτόχρονα, ακριβώς επειδή λαμβάνει από το Transifex τη λίστα των strings και τα μετατρέπει με αρκετά generic τρόπο σε μία Django form.

Φιλτράρισμα μεταφρασμένων

Οι μεταφραστές έχει νόημα να βλέπουν μόνο τα αμετάφραστα και fuzzy strings που υπάρχουν, και να γίνεται απόκρυψη των ήδη μεταφρασμένων. Το Lotte υποστηρίζει αυτή τη λειτουργία. Η ανανέωση της σελίδας γίνεται δυναμικά, χωρίς εκ νέου φόρτωση της, χρησιμοποιώντας client-side Javascript.

Αυτόματη μετάφραση

Μέσω ενός απλού εικονιδίου το Lotte υποστηρίζει την μετάφραση του πηγαίου κειμένου στη γλώσσα προορισμού χρησιμοποιώντας το Google Translate API.

Την παρούσα στιγμή υποστηρίζονται οι παρακάτω γλώσσες:

  • Albanian
  • Arabic
  • Bulgarian
  • Chinese Simplified
  • Chinese Traditional
  • Catalan
  • Croatian
  • Czech
  • Danish
  • Dutch
  • English
  • Estonian
  • Filipino
  • Finnish
  • French
  • Galician
  • German
  • Greek
  • Hebrew
  • Hindi
  • Hungarian
  • Indonesian
  • Italian
  • Japanese
  • Korean
  • Latvian
  • Lithuanian
  • Maltese
  • Norwegian
  • Polish
  • Portuguese
  • Romanian
  • Russian
  • Spanish
  • Serbian
  • Slovak
  • Slovenian
  • Swedish
  • Thai
  • Turkish
  • Ukrainian
  • Vietnamese

Η λειτουργία αυτή μπορεί να ελεγχθεί μέσω ενός configuration option στα αρχεία ρυθμίσεων:

# Enable translation suggestions using Google API WEBTRANS_SUGGESTIONS = True

Ανάπτυξη

Ακολουθούν μερικές πληροφορίες για την ανάπτυξη του έργου, η οποία έγινε μέσα στους μήνες Μάρτιο με Μάιο 2009.

Χαρακτηριστικά
  • Ο κώδικας ακολουθεί τα Python PEP-8 coding guidelines για μεγιστοποίηση του readability και reusability.
  • Το λογισμικό γράφτηκε στη γλώσσα Python πάνω από το Django web framework.
  • Ο κώδικας έχει γίνει commit σε αποθετήριο Mercurial. Αρκετά από τα commits έχουν γίνει q-folded σε πιο λίγα και έχουν γίνει transplanted στο τρέχον tip του Transifex branch. Το αποθετήριο έχει δημοσιευτεί στον κεντρικό κόμβο του Tx: http://code.transifex.org/lotte
  • H εγκατάσταση του Lotte “plugin” δε χρειάζεται δική της Βάση Δεδομένων, έτσι μπορεί να χρησιμοποιηθεί ως plug-n-play σε live Djago websites in production.

Δοκιμές

Για τη δοκιμή του UI έχουν φορτωθεί έργα που χρησιμοποιούν αρχεία PO και άλλα που παράγουν τα αρχεία τους δυναμικά με το intltool. Τέτοια έργα είναι το usermode αλλά και τα υπόλοιπα sample projects που διαθέτει η τυπική Transifex εγκατάσταση.

Μελλοντικά σχέδια

Η υλοποίηση έχει εκπληρώσει τους στόχους της αρχικής αίτησης σε μεγάλο βαθμό και έχει δοθεί ιδιαίτερη έμφαση στη χρηστικότητα του Lotte ώστε να βγει όσο πιο γρήγορα γίνεται στον αέρα (Release early, release often). Μελλοντικά features είναι το auto-saving του αρχείου σε προσωρινή μνήμη στον server (session-based), σύστημα σχολιασμού (backend ready, απαιτεί input από μεταφραστές για τη σωστή παρουσίαση του). Επίσης, στα άμεσα features είναι το packaging της εφαρμογής ως ξεχωριστό django application.

 
ellak/lotte_report.txt (826 views) · Τελευταία τροποποίηση: 2014/04/03 17:26
 
Recent changes RSS feed Creative Commons License Donate Valid XHTML 1.0 Valid CSS Driven by DokuWiki