2010-07-26 13 views
10

estoy aquí mirando algo de código fuente en C y he encontrado esto:subrayado función

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

ya vi el guión cuando tuve un vistazo a wxWidget, y leo se utiliza para la internacionalización. Lo encontré realmente horrible (el nombre menos intutivo de todos los tiempos), pero pensé que era simplemente otra convención de wxWidget extraña.

Ahora lo encuentro de nuevo en alguna fuente de Alsa. ¿Alguien sabe de dónde viene?

+1

El nombre no es intuitivo, creo que en su mayoría iban por menos caracteres para escribir. –

+0

Pensando en esto, después ... ¿2 años? Demonios, me siento tan viejo ... Creo que el nombre fue elegido así para minimizar el esfuerzo de traducir programas existentes. – Dacav

Respuesta

11

Viene de GNU gettext, un paquete diseñado para facilitar el proceso de internacionalización. La función _() es simplemente un envoltorio de cadena. Esta función básicamente reemplaza la cadena dada en tiempo de ejecución con una traducción en el idioma del sistema, si está disponible (es decir, si enviaron un archivo .mo para este idioma con el programa).

7

Viene de gettext. Originalmente pensado, la internacionalización era demasiado larga para escribir cada vez que necesitara una cadena internacionalizada. Entonces los programadores crearon el atajo i18n (porque hay 18 letras entre la 'i' y la 'n' en la internacionalización) y es posible que veas el código fuente allí usando eso. Aparentemente, aunque todavía era demasiado largo, ahora solo es un guión bajo.

+4

+1 para sarcasmo y burla gettext. –

+1

El nombre de la función no es 'i18n', sino' gettext' aunque ... – Hasturkun

Cuestiones relacionadas