Несколько «msgid» для «msgstr» в gettext - PullRequest
3 голосов
/ 05 мая 2011

Возможно ли сделать два или более msgids , соответствующих одному msgstr ?

Например, оба ('list.empty') и ('list.null') return "There is no any objects yet."

Если я напишу таким образом в po-файле:

msgid "list.empty"
msgid "list.null"
msgstr "There is no any objects yet."

Это просто ошибки с "отсутствующим" msgstr ":

Однако

msgid "list.empty"
msgstr "There is no any objects yet."

msgid "list.null"
msgstr "There is no any objects yet."

Выглядит и работает нормально, но глупо, потому что, как только я изменяюодин msgstr без другого, они возвращают другой результат.

У кого-нибудь есть лучшие хаки?

1 Ответ

7 голосов
/ 01 июня 2011

Вы приближаетесь к gettext неправильно, вот как это работает:

  • msgid требуется для каждой записи
  • msgctxt является необязательным и используется для различения двух msgid записей с одинаковым содержанием, которые могут иметь разные переводы.
  • (msgid, msgctxt) - уникальный ключ для словаря, если отсутствует msgctxt, вы можете считать его null.

Вы должны прочитать документацию gettext перед реализацией, так как это не всегда просто.

В вашем случае, вот как вы должны это реализовать:

msgctxt "list.empty"
msgid "There is no any objects yet."

msgctxt "list.null"
msgid "There is no any objects yet."
...