1. Διαχωρισμός κώδικα και κειμένων
Η βασική προϋπόθεση για κάθε τοπικοποίηση είναι ο αυστηρός διαχωρισμός του προγραμματιστικού κώδικα από τα κειμενικά περιεχόμενα. Όλα τα κείμενα που εμφανίζονται πρέπει να αποθηκεύονται σε εξωτερικά αρχεία πόρων (π.χ. Properties, JSON, YAML) και όχι να είναι ενσωματωμένα στον πηγαίο κώδικα. Έτσι, οι μεταφραστές μπορούν να εργάζονται χωρίς να τροποποιούν τον κώδικα. Χρησιμοποιήστε μοναδικά κλειδιά συμβολοσειρών ως αναφορά στον κώδικα, τα οποία παραπέμπουν στις αντίστοιχες μεταφράσεις. Αυτός ο διαχωρισμός διευκολύνει επίσης τη συντήρηση και επιτρέπει την προσθήκη νέων γλωσσών αργότερα χωρίς αλλαγές στον κώδικα. Βεβαιωθείτε ότι οι ετικέτες διεπαφής, τα μηνύματα σφάλματος και οι συμβουλές εργαλείων περιλαμβάνονται επίσης σε αυτά τα αρχεία.
2. Placeholder και μεταβλητές
Τα κείμενα συχνά περιέχουν δυναμικό περιεχόμενο, όπως αριθμούς, ονόματα ή ημερομηνίες. Αυτά πρέπει να εισάγονται μέσω placeholders, π.χ. με μορφοποίηση printf (%s, %d) ή με νεότερες προσεγγίσεις όπως αγκύλες {0}. Είναι σημαντικό οι μεταφραστές να γνωρίζουν τη σειρά και τη σημασία των placeholders. Χρησιμοποιήστε ονομασμένους placeholders (π.χ. „{username}“) για να παρέχετε πλαίσιο. Σε γλώσσες με διαφορετική σειρά λέξεων, η σειρά των placeholders μπορεί να διαφέρει. Επομένως, προσφέρετε τη δυνατότητα προσαρμογής της σειράς στη μετάφραση. Δοκιμάστε όλες τις παραλλαγές για να αποφύγετε εσφαλμένες ή ελλιπείς εξόδους.
3. Κανόνες πληθυντικού και σχηματισμός πληθυντικού
Στα γερμανικά υπάρχουν μόνο ενικός και πληθυντικός, αλλά πολλές γλώσσες έχουν πιο σύνθετους κανόνες πληθυντικού (π.χ. αραβικά με έξι κατηγορίες). Χρησιμοποιήστε βιβλιοθήκες όπως το ICU MessageFormat, οι οποίες χειρίζονται τους κανόνες πληθυντικού ανά γλώσσα. Ορίστε ξεχωριστά κλειδιά για τις διάφορες μορφές πληθυντικού (one, other) στους πόρους σας. Ο κώδικας θα επιλέξει αυτόματα τη σωστή μορφή με βάση τον αριθμό. Παράδειγμα: „{count} {count, plural, one {Apfel} other {Äpfel}}“. Δοκιμάστε κάθε γλώσσα με πολλές αριθμητικές τιμές για να βεβαιωθείτε ότι εμφανίζεται η σωστή μορφή πληθυντικού. Αποφύγετε σταθερές if-συνθήκες – είναι επιρρεπείς σε σφάλματα.
4. Μήκος κειμένου και περιθώριο διάταξης
Οι μεταφράσεις είναι συχνά μεγαλύτερες ή μικρότερες από το αρχικό κείμενο. Ειδικά σε κουμπιά, μενού και ετικέτες, αυτό μπορεί να διαταράξει τη διάταξη. Σχεδιάστε λοιπόν επαρκή χώρο για επεκτάσεις κειμένου – μια καλή οδηγία είναι 30% επιπλέον χώρος για δυτικές γλώσσες, περισσότερο για ασιατικές. Χρησιμοποιήστε δυναμικές διατάξεις που προσαρμόζονται στο μήκος κειμένου (π.χ. Auto Layout στο iOS ή Flexbox στον Ιστό). Αποφύγετε σταθερά πλάτη. Αφήστε τα στοιχεία UI να χειρίζονται την αναδίπλωση κειμένου όπου χρειάζεται. Δοκιμάστε τη διεπαφή με τις μεγαλύτερες αναμενόμενες μεταφράσεις για να αποφύγετε επικαλύψεις ή αποκοπές.
5. Κλειδιά συμβολοσειρών, πλαίσιο για μεταφραστές και RTL
Τα μοναδικά κλειδιά συμβολοσειρών είναι η ραχοκοκαλιά της τοπικοποίησης. Χρησιμοποιήστε περιγραφικά ονόματα (π.χ. „login.button.title“) και τεκμηριώστε τον σκοπό χρήσης. Δώστε πλαίσιο στους μεταφραστές: στιγμιότυπα οθόνης, μέγιστο μήκος χαρακτήρων, περιορισμούς (π.χ. „όχι περισσότεροι από 20 χαρακτήρες“). Για γλώσσες RTL όπως τα αραβικά ή τα εβραϊκά, το UI πρέπει να καθρεφτιστεί. Χρησιμοποιήστε χαρακτηριστικά διάταξης που υποστηρίζουν αυτόματα το RTL (π.χ. start/end αντί left/right). Δοκιμάστε όλη την πλοήγηση υπό συνθήκες RTL. Σκεφτείτε επίσης τα εικονίδια και τα γραφικά – μπορεί να ερμηνευθούν διαφορετικά ανάλογα με τον πολιτισμό.