2010-07-26 15 views
10

sto qui a guardare ad un certo codice sorgente in C e ho trovato questo:Underscore funzione

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

ho già visto la sottolineatura quando ho avuto uno sguardo al wxWidget, e ho letto che è utilizzato per l'internazionalizzazione. L'ho trovato davvero orribile (il nome meno intuitivo di sempre), ma ho pensato che fosse solo un'altra strana convenzione wxWidget.

Ora lo trovo di nuovo in qualche fonte Alsa. Qualcuno sa da dove viene?

+1

Il nome non è intuitivo, credo che per la maggior parte dei personaggi andassero a digitare meno caratteri. –

+0

Pensando a questo, dopo ... 2 anni? Diavolo, mi sento così vecchio ... Penso che il nome sia stato scelto in questo modo per minimizzare lo sforzo di tradurre programmi esistenti. – Dacav

risposta

11

Viene fornito da GNU gettext, un pacchetto progettato per facilitare il processo di internazionalizzazione. La funzione _() è semplicemente un wrapper di stringhe. Questa funzione sostituisce fondamentalmente la stringa data in runtime con una traduzione nella lingua del sistema, se disponibile (ad esempio se spediva un file .mo per questa lingua con il programma).

7

Viene da gettext. Inizialmente pensata, l'internazionalizzazione era troppo lunga per digitare ogni volta che si desiderava una stringa internazionalizzata. Quindi i programmatori hanno creato la scorciatoia i18n (perché ci sono 18 lettere tra "i" e "n" nell'internazionalizzazione) e potresti vedere il codice sorgente là fuori usando quello. Apparentemente, sebbene i18n fosse ancora troppo lungo, ora è solo un trattino di sottolineatura.

+4

+1 per sarcasmo e beffardo gettext. –

+1

Il nome della funzione non è 'i18n', ma' gettext' anche se ... – Hasturkun

Problemi correlati