If this is a pure Gettext project, i.e. not relying on custom extraction provided by poedit then:
- Yes you do need to do this every time for each language. But you could choose to use xgettext and create a POT file. Give the POT file to translators who can then do the updates themselves. I think poedit can update from a template within the UI.
- You could do this yourself on the command line using xgettext to update your POT file. Then msgmerge to update each individual language file. But then you need to communicate with your translators as they might have been translating the file that you have just updated for them.
From a translators perspective you should try to limit your string churn and create a concept of a string freeze. To have to retranslate things is quite time consuming for translators and as you've discovered for yourself.