2010-07-26 5 views
10

Je cherche ici à un code source C et je l'ai trouvé ceci:fonction Souligné

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

Je l'ai déjà vu le trait de soulignement quand j'ai regardé wxWidget, et je l'ai lu est utilisé pour l'internationalisation. Je l'ai trouvé vraiment horrible (le nom le moins intendant jamais), mais je pensais que c'était juste une autre convention wxWidget bizarre.

Maintenant, je le trouve à nouveau dans une source Alsa. Est-ce que quelqu'un sait d'où ça vient?

+1

Le nom n'est pas intuitif en effet, je pense qu'ils allaient surtout pour moins de caractères à taper. –

+0

Penser à cela, après ... 2 ans? Bon sang, je me sens si vieux ... Je pense que le nom a bien été choisi ainsi afin de minimiser l'effort de traduction des programmes existants. – Dacav

Répondre

11

Il vient de GNU gettext, un paquet conçu pour faciliter le processus d'internationalisation. La fonction _() est simplement un wrapper de chaîne. Cette fonction remplace fondamentalement la chaîne donnée lors de l'exécution par une traduction dans la langue du système, si elle est disponible (c'est-à-dire si elle a envoyé un fichier .mo pour cette langue avec le programme).

7

Il vient de gettext. A l'origine pensé, l'internationalisation était trop longue à taper chaque fois que vous aviez besoin d'une chaîne internationalisée. Donc, les programmeurs ont créé le raccourci i18n (car il y a 18 lettres entre le 'i' et le 'n' dans l'internationalisation) et vous pouvez voir le code source là-bas en utilisant cela. Apparemment, même si i18n était encore trop long, alors maintenant c'est juste un trait de soulignement.

+4

+1 pour sarcasme et gettext moqueur. –

+1

Le nom de la fonction n'est pas 'i18n', mais' gettext' si ... – Hasturkun

Questions connexes