Die meisten Unix-Systeme basierten bisher auf dem ASCII-Zeichensatz und auf dem amerikanischen Englisch als Sprache, in der der Benutzer mit dem Rechner kommunizieren konnte. Im kommerziellen Bereich mussten aber auch bisher schon interaktive Programme in der Sprache des jeweiligen Benutzers angeboten werden (mit Sprache sind in diesem Sinn auch regional übliche Konventionen wie z.B. Währungsformat gemeint). So wurden sogenannte Ländervarianten von Programmen für die einzelnen nationale Märkte produziert.
Die zunehmende internationale Verbreitung von Unix-Systemen erforderte jedoch eine Erweiterung, die den unterschiedlichen Schriften, Sprachen und den länderspezifischen Konventionen der unterschiedlichen Benutzer auf flexiblere Weise gerecht wird.
Mit dem NLS (Native Language System) hat X/Open eine Schnittstelle definiert, die es ermöglicht,
Anwendungsprogramme zu entwickeln, die in verschiedenen Landessprachen mit dem Benutzer kommunizieren und den dazugehörigen länderspezifischen Konventionen entsprechen. Solche Programme machen keine Annahmen über die Sprache des Benutzers und halten die Datenspezifikationen getrennt von der Programmlogik. Sie werden als internationalisierte Programme bezeichnet.
die Ablaufumgebung eines internationalisierten Anwendungsprogramms zur Laufzeit mit der richtigen Landessprache und den entsprechenden länderspezifischen Konventionen zu versorgen. Dieses Verfahren nennt man Lokalisierung. Daher wird die Menge der länder- bzw. sprachspezifischen Konventionen als Locale bezeichnet.
Das NLS umfasst dafür insbesondere:
Einen Bindungsmechanismus, der es dem Benutzer erlaubt, die Landessprache, die Verarbeitung nach regionalen Konventionen und den zugrundeliegenden Zeichensatz zur Laufzeit eines Anwendungsprogramms nach individuellem Bedarf einzustellen. Dies erfolgt mit Hilfe von Umgebungsvariablen.
Meldungskataloge, die es erlauben, Meldungen eines Anwendungsprogramms getrennt von der Programmlogik zu halten, in verschiedene Landessprachen zu übersetzen und zur Laufzeit an die Anwendung zu binden.
Internationalisierte C-Bibliotheksfunktionen, die keine Annahmen über Landessprache, Land und Zeichensatz machen und deshalb geeignet sind, universelle Zeichenklassifizierung, Umwandlung von Groß-/Kleinbuchstaben und Zahlenformaten durchzuführen sowie Zeichenketten zu sortieren.
Einen Satz von C-Bibliotheksfunktionen, die es erlauben, zur Laufzeit eines Anwendungsprogramms die persönliche Sprachumgebung einzustellen, zu verändern und wieder abzustellen.
Alle POSIX-Kommandos, die in diesem Handbuch beschrieben sind, sind 8-bit-transparent. Dies schließt alle auf der Kommandozeile angegebenen Argumente und alle Daten und Zeichen, die von diesen Kommandos verarbeitet werden, ein.
Es bestehen jedoch weiterhin Einschränkungen in der Portabilität von 8-bit-Daten zwischen POSIX und anderen Systemen:
Der Austausch von Daten zwischen Systemen über elektronische Mail-Verbindungen kann durch die eingesetzten Mail- oder Netzprotokolle auf 7-bit-Daten begrenzt sein.
8-bit-Daten und 8-bit-Dateinamen sind möglicherweise nur auf Systeme portierbar, die den Anforderungen der X/Open-Systemschnittstelle genügen.