Διεθνοποίηση και επιχώρια προσαρμογή

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

Ονομασία

Οι όροι συχνά συμπτύσσονται με τις λέξεις i18n (όπου το 18 αντιπροσωπεύει τον αριθμό των γραμμάτων μεταξύ του πρώτου i και του τελευταίου n στη λέξη internationalization, μια χρήση που επινοήθηκε από την Αμερικανική εταιρία DEC κατά τη δεκαετία του 1970 ή του '80) και L10n για localization, λόγω του μήκους των λέξεων.
Ορισμένες εταιρείες, όπως η IBM και η Sun Microsystems, χρησιμοποιούν τον όρο "παγκοσμιοποίηση", g11n, για το συνδυασμό της διεθνοποίησης και της επιχώριας προσαρμογής. Επίσης γνωστή και ως "glocalization" (σύνθεση των αγγλικών λέξεων globalization και localization).
Η Microsoft ορίζει τη Διεθνοποίηση ως συνδυασμό Παγκόσμιας Προσαρμοστικότητας (World-Readiness) και επιχώριας προσαρμογής. Η Παγκόσμια Προσαρμοστικότητα είναι η διαδικασία μέσω της οποίας ο προγραμματιστής κάνει το προϊόν συμβατό με διάφορα σενάρια (scripts) και διάφορους πολιτισμούς (παγκοσμιοποίηση) και διαχωρίζει τους πόρους διεπαφής χρήστη σε επιχώρια προσαρμόσιμη μορφή (δυνατότητα επιχώριας προσαρμογής ή localizability, που συμπτύσσεται ως L12y).
Η Hewlett-Packard και η HP-UX δημιούργησαν το σύστημα NLS (National Language Support ή Εγγενή Υποστήριξη Γλώσσαα) για την παραγωγή επιχώρια προσαρμόσιμου λογισμικού.

Επιχειρηματική διαδικασία για την διεθνοποίηση λογισμικού

Προκειμένου να διεθνοποιηθεί ένα προϊόν, είναι σημαντικό να εξεταστούν ένα πλήθος των αγορών όπου το προϊόν προβλέπεται να εισέλθει.
Λεπτομέρειες όπως το μήκος του πεδίου για τις διευθύνσεις οδών, μοναδική μορφή για τη διεύθυνση, την ικανότητα να κάνει τον ταχυδρομικό κώδικα προαιρετικό πεδίο για να απευθυνθεί σε χώρες που δεν έχουν ταχυδρομικούς κώδικες ή το πεδίο της πολιτείας για τις χώρες που δεν έχουν πολιτείες, καθώς και την εισαγωγή νέων φορμών εγγραφής που συμμορφώνονται με τους τοπικούς νόμους, είναι μόνο μερικά από τα παραδείγματα που κάνουν τη διεθνοποίηση ένα σύνθετο έργο.
Μια ευρύτερη προσέγγιση λαμβάνει υπόψη πολιτιστικούς παράγοντες που αφορούν για παράδειγμα την προσαρμογή της λογική των επιχειρηματικών διαδικασιών ή την ενσωμάτωση επιμέρους πολιτιστικών (συμπεριφορικών) πτυχών.
Ήδη κατά τη δεκαετία του 1990, εταιρείες όπως η Bull χρησιμοποιούσαν μηχανική μετάφραση (Systran) σε μεγάλη κλίμακα, για όλη τους τη μεταφραστική δραστηριότητα: άνθρωποι-μεταφραστές αναλάμβαναν την προ-επεξεργασία (κάνοντας την καταχώρηση αναγνώσιμη από τη μηχανή) και την επιμέλεια μετά τη μετάφραση.

Μηχανική

Τόσο στον ανασχεδιασμό υπάρχοντος λογισμικού όσο και στο σχεδιασμό ενός νέου διεθνοποιημένου λογισμικού, το πρώτο βήμα για τη διεθνοποίηση είναι να διαχωριστεί κάθε μέρος που θα μπορούσε να εξαρτάται από τις τοπικές ρυθμίσεις (κώδικα, κείμενο ή δεδομένα) σε μια ξεχωριστή ενότητα. Στη συνέχεια κάθε ενότητα μπορεί είτε να βασίζεται σε μια τυπική βιβλιοθήκη/εξάρτηση ή να αντικατασταθεί ανεξάρτητα σύμφωνα με τις απαιτήσεις των εκάστοτε τοπικών ρυθμίσεων.
Η τρέχουσα επικρατούσα πρακτική είναι οι εφαρμογές να τοποθετούν κείμενο σε συμβολοσειρές πόρων που φορτώνονται κατά την εκτέλεση του προγράμματος, όπως απαιτείται. Αυτές οι συμβολοσειρές, αποθηκευμένες σε αρχεία πόρων, είναι σχετικά εύκολο να μεταφραστούν. Τα προγράμματα συχνά χτίζονται με αναφορά τις βιβλιοθήκες πόρων ανάλογα με τα επιλεγμένα δεδομένα τοπικών ρυθμίσεων .
Η αποθήκευση για μεταφράσιμες και μεταφρασμένες συμβολοσειρές μερικές φορές ονομάζεται κατάλογος μηνυμάτων καθώς οι συμβολοσειρές ονομάζονται μηνύματα. Ο κατάλογος γενικά αποτελείται από ένα σύνολο αρχείων σε μια συγκεκριμένη μορφή τοπικής προσαρμογής και ένα πρότυπο βιβλιοθήκης για τη διαχείριση της συγκεκριμένης μορφής. Μια βιβλιοθήκη λογισμικού και μορφής που βοηθά σε αυτό είναι το gettext.
Έτσι για να φτιάξει κανείς μια εφαρμογή που υποστηρίζει πολλαπλές γλώσσες θα σχεδίαζε την εφαρμογή να επιλέγει το σχετικό αρχείο γλωσσικών πόρων κατά το χρόνο εκτέλεσης. Ο κώδικας που απαιτείται για την επαλήθευση καταχώρησης δεδομένων και πολλούς άλλους τύπους δεδομένων που επηρεάζονται από τις τοπικές ρυθμίσεις, επίσης θα πρέπει να υποστηρίζει διαφορετικές προϋποθέσεις τοπικών ρυθμίσεων. Σύγχρονα συστήματα ανάπτυξης και λειτουργικά συστήματα περιλαμβάνουν εξελιγμένες βιβλιοθήκες για διεθνή υποστήριξη τέτοιου είδους, δείτε επίσης το Πρότυπο δεδομένων τοπικών ρυθμίσεων ανωτέρω.
Πολλά θέματα επιχώριας προσαρμογής (π. χ. η κατεύθυνση της γραφής, η ταξινόμηση του κειμένου) απαιτούν  αλλαγές στο λογισμικό πιο βαθιές από τη μετάφραση κειμένου. Για παράδειγμα, το OpenOffice.org το επιτυγχάνει αυτό με αλλαγές κατάρτισης.

Διαδικασία

Μια μέθοδος παγκοσμιοποίησης περιλαμβάνει, μετά το σχεδιασμό, τρία στάδια υλοποίησης: διεθνοποίηση, επιχώρια προσαρμογή και διασφάλιση ποιότητας.
Σε κάποιο βαθμό (π. χ. για τη διασφάλιση ποιότητας), η ομάδα ανάπτυξης πρέπει να συμπεριλαμβάνει κάποιον που θα χειρίζεται τα βασικά/κεντρικά στάδια της διαδικασίας τα οποία, στη συνέχεια, ενεργοποιούν όλα τα άλλα. Τα πρόσωπα αυτά θα πρέπει συνήθως να κατανοούν τις ξένες γλώσσες και πολιτισμούς και να έχουν κάποιο τεχνικό υπόβαθρο. Εξειδικευμένοι τεχνικοί συγγραφείς είναι απαραίτητοι για την κατασκευή μια πολιτισμικά κατάλληλη σύνταξη για δυνητικά περίπλοκες έννοιες, σε συνδυασμό με μηχανικούς πόρους για την ανάπτυξη και τον έλεγχο των στοιχείων επιχώριας προσαρμογής.
Διεθνοποιημένο σωστά μια φορά, το λογισμικό μπορεί να βασίζεται σε πιο αποκεντρωμένα μοντέλα για επιχώρια προσαρμογή: τα λογισμικά ελεύθερου και ανοικτού κώδικα συνήθως βασίζονται σε επιχώρια προσαρμογή από τελικούς χρήστες και εθελοντές, οργανωμένων μερικές φορές σε ομάδες. Το έργο KDE3 , για παράδειγμα, έχει μεταφραστεί σε πάνω από 100 γλώσσες, ενώ  το MediaWiki σε 270 γλώσσες, από τις οποίες οι 100 έχουν ως επί το πλείστον ολοκληρωθεί από το 2016.
Ενώ η μετάφραση υπάρχοντος κειμένου σε άλλες γλώσσες μπορεί να φαίνεται εύκολο, είναι πιο δύσκολο να διατηρηθούν οι παράλληλες εκδοχές κειμένων καθ ' όλη τη διάρκεια ζωής του προϊόντος. Για παράδειγμα, εάν ένα μήνυμα που εμφανίζεται στον χρήστη είναι τροποποιημένο, όλες οι μεταφρασμένες εκδοχές πρέπει να αλλάξουν.

Εμπορικά κριτήρια

Σε ένα εμπορικό περιβάλλον, το όφελος της επιχώριας προσαρμογής είναι η πρόσβαση σε περισσότερες αγορές. Στις αρχές της δεκαετίας του 1980, το Lotus 1-2-3 έκανε 2 χρόνια να ξεχωρίσει τον κώδικα από το κείμενο του προγράμματος και έχασε την πρωτιά στην αγορά της Ευρώπης από το Microsoft Multiplan.
Ωστόσο, εμπλέκονται σημαντικές δαπάνες, οι οποίες υπερβαίνουν την απλή μηχανική. Επιπλέον, οι επιχειρηματικές δραστηριότητες πρέπει να προσαρμοστούν για να διαχειρίζονται την παραγωγή, την αποθήκευση και τη διανομή πολλαπλών διακριτών επιτόπια προσαρμοσμένων προϊόντων, τα οποία συχνά πωλούνται σε εντελώς διαφορετικά νομίσματα, κανονιστικά περιβάλλοντα και φορολογικά καθεστώτα.
Τέλος, οι πωλήσεις, το μάρκετινγκ και η τεχνική υποστήριξη πρέπει επίσης να διευκολύνουν τις δικές τους διαδικασίες στις νέες γλώσσες, προκειμένου να υποστηρίξουν τους πελάτες για τα επιχώρια προσαρμοσμένα προϊόντα. Συνεπώς, ιδιαίτερα για σχετικά μικρούς γλωσσικούς πληθυσμούς, μπορεί να μην είναι ποτέ οικονομικά βιώσιμη η προσφορά ενός επιχώρια προσαρμοσμένου προϊόντος. Ακόμη και εκεί όπου μεγάλοι γλωσσικοί πληθυσμοί θα μπορούσαν να δικαιολογήσουν την επιχώρια προσαρμογή για ένα συγκεκριμένο προϊόν και η εσωτερική δομή του προϊόντος επιτρέπει ήδη την επιχώρια προσαρμογή, κάποιος σχεδιαστής/εκδότης λογισμικού μπορεί να μην έχει το μέγεθος και την γνώση για να διαχειριστεί τις βοηθητικές λειτουργίες που σχετίζονται με τη λειτουργία σε πολλαπλές γλώσσες. Για παράδειγμα, το Microsoft Windows 7 είχε διαθέσιμα 96 πακέτα γλωσσών .