Данный вопрос уже давно обсуждается сообществом, но к единому варианту так никто и не пришел, так что все используют вариант на свой вкус. Лично я использую второй вариант.
Плюсы:
+ переводчику нет необходимости держать открытыми два .po файла, так как текст для перевода является ключом
+ если отсутствует перевод для ключа, то выведется понятное значение, которое в случае чего юзер сможет перевести, а не заглушка вида header_menu_news
Минусы:
- если необходимо поменять оригинальный текст, то придется искать по всему проекту использование этого ключа и менять его, хотя в первом варианте достаточно было бы поменять только в .po файле