2010-07-26 3 views
10

Я здесь, глядя на какой-то источник C код, и я нашел это:Подчеркивание функция

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

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

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

+1

Название действительно неинтересно, я думаю, что они в основном собирались набрать меньше символов. –

+0

Думая об этом, после ... 2 года? Черт, я чувствую себя таким старым ... Я думаю, что это название действительно было выбрано таким образом, чтобы свести к минимуму усилия по переводу существующих программ. – Dacav

ответ

11

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

7

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

+4

+1 за сарказм и насмешливый gettext. –

+1

Имя функции не 'i18n', а' gettext', хотя ... – Hasturkun

Смежные вопросы