Какое соглашение об именах для короткого имени ngettext?

gettext.gettext импортируется как _:

from gettext import gettext as _

Это какое-то соглашение об именах, верно? Что эквивалентно gettext.ngettext? __?

1 ответ

Решение

Я видел P_ (Я предполагаю, что буква P обозначает множественное число), которое иногда используется, но кажется, что нет общего соглашения или определенного стандарта для ярлыка для множественных строк для переводов в gettext.

Как правило, эти ярлыки или макросы используются в C и взяты из GLib, поэтому они не являются стандартными ярлыками из Gettext, но они стали стандартом де-факто для программ, использующих GLib. Они обычно определяются в /usr/include/glib-2.0/glib/gi18n.h файл, и подробно объясняется в документах по Интернационализации API для GLib.

Есть определения для _ (Gettext), Q_ (Контекст), C_ (Контекст), N_ (отметка только для перевода) и NC_ (отметка только для перевода, с контекстом), но нет P_

В любом случае, в Python вам нужно определить ярлыки самостоятельно, но было бы неукоснительно придерживаться того же соглашения об именах, для согласованности.

Тем не менее, я помню, что Intltool не распознает P_ ярлык по умолчанию, так что n gettext используется не так часто, как gettext, вы можете просто использовать фактическое имя функции, а не ярлык.

Если вы все еще хотите использовать ярлык, и он не поддерживается intltool, вам нужно указать intltool, чтобы он использовался, IIRC через XGETTEXT переменная или с помощью Makevars файл.

Другие вопросы по тегам