Несколько msgid для msgstr в gettext

Можно ли сделать два или более msgid совпадающими с одним msgstr?

Например, как ('list.empty'), так и ('list.null') возвращают "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 без другой, они возвращают другой результат.

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


person Yanting    schedule 05.05.2011    source источник


Ответы (1)


Вы приближаетесь к 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."
person sorin    schedule 01.06.2011
comment
Это пишет msgctxt, а не msgctx. - person brablc; 25.03.2014