Εισαγωγή στην μετάφραση του λογισμικού

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

Οι μεταφράσεις του λογισμικού είναι έξω απο τον κώδικα μιας και άλλοι γράφουν τον κώδικά και άλλοι με άλλες δεξιότητες κάνουν τις μεταφράσεις στις διάφορε γλώσσες. Ας δούμε ένα απλό Hello Word σε C.

#include<stdio.h>

int main() {
    printf("Hello World\n");
    return 0;
}

Και θέλουμε να λέει καλημέρα κόσμε σε ένα έλληνα χρήστη και 안녕하세요 말씀 σε ένα κορεάτη. Ο κώδικας θα αλλάξει και θα γίνει

#include<libintl.h>
#include<locale.h>
#include<stdio.h>


int main() {
    setlocale(LC_ALL,"");
    bindtextdomain("helloworld","/usr/share/locale");
    textdomain("helloworld");
    printf(_("Hello World\n"));
    return 0;
}

Αφήνω τις λεπτομέρειες, ο παραπάνω κώδικας θέλει υποστήριξη απο το build system για να γίνει compile καθώς και για να γίνουν αυτοματοποιημένα τα παρακάτω που θα αναφερθούν. Δεν είναι ένας πλήρης οδηγός. Το σημαντικό είναι πως ο προγραμματιστής έχει σημειώσει τι θέλει μετάφραση με τον παρακάτω τρόπο (και λίγο πολυπλοκότερο όταν μπαίνουν έννοιες όπως ένοικος/πληθυντικός/δυικός αριθμός ή νόμισμα και που να δεις τι συμβαίνει στα πολωνέζικα [1]).

_("Hello World\n")

Στη συνέχεια θα πρέπει να εξαχθεί το αρχείο pot ελληνικά po template που περιέχει τι πρέπει να μεταφραστεί. Σαν ένα τέτοιο παράδειγμα δείτε εδώ. Στο αρχείο αυτό θα προστίθενται και θα αφαιρούνται συνεχώς φράσεις για μετάφραση όσο εξελίσσετε το πρόγραμμα.

Στη συνέχεια για κάθε γλώσσα φτιάχνετε ένα αρχείο po, για παράδειγμα το αντίστοιχο αρχείο για τα ελληνικά είναι αυτό.

#: ../src/lightdm-gtk-greeter.c:2139
msgid "Failed to start session"
msgstr "Αποτυχία εκκίνησης της συνεδρίας"

Ο κάθε μεταφραστής ασχολείται με τη δημιουργία του αντίστοιχου αρχείου για τη γλώσσα του. Θα χρησιμοποιήσει ειδικά εργαλεία όπως το poedit που δείχνουν τι έχει μεταφραστεί και τι όχι και παρέχουν πρόσβαση σε μεταφραστικές μνήμες (ώστε πχ να χρησιμοποιείς τις ίδιες μεταφράσεις σε όλο το gnome για συνέπεια).

Κατά το στήσιμο του λογισμικού θα μεταγλωττιστούν και τα αρχεία po σε δυαδικά αρχεία mo τα οποία θα τα μεταφέρουμε στον κατάλογο /usr/share/locale. To συγκεκριμένο αρχείο θα πρέπει να εγκατασταθεί στη θέση /usr/share/locale/el/LC_MESSAGES/helloword.mo.

Για καλύτερο συντονισμό μεταξύ πολλών μεταφραστών συχνά η διόρθωση των μεταφράσεων γίνετε με μια online υπηρεσία. Μια πολύ γνωστή είναι η ελληνική transiflex.

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

[1] Τα οποία έχουν 4 κλήσεις. Η σχετική γραμμή που επιλέγει την κλίση, ανάλογα με το πόσο μεγάλος και τι διαιρέτες έχει ο αριθμός.

"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"

Στις συνήθεις γλώσσες θέλουμε απλά τον πληθυντικό αριθμό απλά αν αυτός δεν είναι 1

"Plural-Forms: nplurals=2; plural=n != 1;\n"

Για περισσότερα:

Και κάποιες σημειώσεις μου

3 «Μου αρέσει»