2010-07-26 5 views
10

ich hier irgend C-Quellcode suchen und ich habe dies gefunden:Unders Funktion

fprintf(stderr, _("Try `%s --help' for more information.\n"), command); 

ich schon den Unterstrich sah, als ich einen Blick auf wxWidget hatte, und ich lese es für die Internationalisierung verwendet wird. Ich fand es wirklich schrecklich (der am wenigsten intuitive Name aller Zeiten), aber ich dachte, es ist nur eine weitere seltsame wxWidget-Konvention.

Jetzt finde ich es wieder in einigen Alsa-Quellen. Weiß jemand woher es kommt?

+1

Der Name ist in der Tat nicht intuitiv, ich denke, dass sie meist für weniger Zeichen zu tippen waren. –

+0

Nachdenken darüber, nach ... 2 Jahren? Hölle, ich fühle mich so alt ... Ich denke, der Name wurde tatsächlich so gewählt, um den Aufwand der Übersetzung bestehender Programme zu minimieren. – Dacav

Antwort

11

Es kommt von GNU , ein Paket, das den Internationalisierungsprozess erleichtern soll. Die _() Funktion ist einfach ein String-Wrapper. Diese Funktion ersetzt im Grunde die angegebene Zeichenfolge zur Laufzeit mit einer Übersetzung in der Systemsprache, falls verfügbar (d. H. Wenn sie eine .mo Datei für diese Sprache mit dem Programm versandt haben).

7

Aus gettext kommt. Ursprünglich gedacht, war die Internationalisierung zu lang, um jedes Mal, wenn Sie einen String internationalisiert haben, zu tippen. Also haben Programmierer die Abkürzung i18n erstellt (weil es zwischen der 'i' und dem 'n' in der Internationalisierung 18 Buchstaben gibt) und Sie können Quellcode dort draußen sehen. Offenbar war i18n immer noch zu lang, also ist es nur ein Unterstrich.

+4

+1 für Sarkasmus und spottenden gettext. –

+1

Der Name der Funktion ist nicht "i18n", aber "gettext" obwohl ... – Hasturkun

Verwandte Themen