Функция подчеркивания

Я смотрю на некоторый исходный код C, и я нашел это:

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

Я уже видел подчеркивание, когда смотрел wxWidget, и я читал его для интернационализации. Я нашел это действительно ужасным (наименее интуитивное имя когда-либо), но я уговорил его просто еще одно странное соглашение wxWidget.

Теперь я нахожу его снова в каком-то источнике Alsa. Кто-нибудь знает, откуда он?

Ответ 1

Он поставляется с GNU gettext, пакетом, предназначенным для облегчения процесса интернационализации. Функция _() - это просто оболочка строки. Эта функция в основном заменяет данную строку во время исполнения на перевод на системном языке, если она доступна (т.е. Если они отправили файл .mo для этого языка в программу).

Ответ 2

Это будет от gettext

Ответ 3

Он исходит из gettext. Первоначально задуманная, интернационализация была слишком длинной, чтобы печатать каждый раз, когда вам нужна была интернационализированная строка. Таким образом, программисты создали ярлык i18n (потому что между интервалами "i" и "n" в интернационализации имеется 18 букв), и вы можете увидеть исходный код там, используя это. Очевидно, хотя i18n был слишком длинным, поэтому теперь его просто подчеркивание.