Как добавить новую строку в файл .po или .pot?
У меня есть файл .pot, который поставлялся с моей темой WordPress. Теперь я хочу добавить в него строки, которых не было в оригинальной теме. Как мне это сделать? Нужно ли обновлять файл .pot? И если да, то 1) Как это сделать и 2) Как убедиться, что уже переведённые строки не будут удалены? (В данный момент я использую Poedit и не вижу функции для добавления строк.)

Я использую http://wordpress.org/extend/plugins/codestyling-localization/ Рекомендую попробовать :)

Вот shell-скрипт для автоматической генерации POT-файлов. Измените данные о копирайте и т.д. под свои нужды:
#!/bin/sh
#
# Автор: Denis de Bernardy <http://www.mesoconcepts.com>
# Версия: 0.1
# Лицензия GPL
#
# Первоначальный код от Ryan Boren
# Дальнейшие изменения и патчи от
# Kimmo Suominen (большая часть) и Nikolay Bachiyski (меньшая часть)
# Denis de Bernardy
cwd=`pwd`
if [ -n "$1" ];
then
cd "$1" || exit 1
slug=`basename $1`
dir=$cwd/$slug
else
dir=$cwd
slug=`basename $cwd`
fi
pot_file=$slug.pot
cp /dev/null "$dir/$pot_file"
find . -name '*.php' -print \
| sed -e 's,^\./,,' \
| sort \
| xargs xgettext \
--keyword=__ \
--keyword=_e \
--keyword=_c \
--keyword=__ngettext:1,2 \
--keyword=_n:1,2 \
--default-domain=$slug \
--language=php \
--output="$dir/$pot_file" \
--join-existing \
--from-code utf-8 \
--copyright-holder='Mesoconcepts <http://www.mesoconcepts.com>' \
--msgid-bugs-address=https://tickets.semiologic.com
# заменяем только YEAR в сообщении о копирайте (вторая строка)
sed -i '' -e '2s/YEAR/'`date +%Y`'/' "$pot_file"
# и вишенка на торте - извлекаем версию с помощью магии - versoextracanus!~
if [ -f $dir/style.css ];
then
name=`fgrep -i 'Theme Name:' $dir/style.css`
version=`fgrep -i 'Version:' $dir/style.css`
elif [ -f $dir/$slug.php ];
then
#statements
name=`fgrep -i 'Plugin Name:' $dir/$slug.php`
version=`fgrep -i 'Version:' $dir/$slug.php`
else
name=$slug
version=
fi
name=${name##*:}
name=${name##[[:space:]]}
version=${version##*:}
version=${version##[[:space:]]}
version=${version%%[[:space:]]*}
if [ "$name" != '' ];
then
sed -i '' -e "1s/^# SOME DESCRIPTIVE TITLE/# Файл перевода $name/" "$pot_file"
sed -i '' -e "s/\(^#.*\)PACKAGE\(.*\)/\1$name\2/g" "$pot_file"
fi
if [ "$version" != '' ];
then
sed -i '' -e "s/\(Project-Id-Version: \)PACKAGE VERSION/\1$version/" "$pot_file"
fi
cd "$cwd"
Использование (для *nix систем - Mac или Linux):
- поместите код выше в файл ~/bin/gen_pot.sh и сделайте его исполняемым
- убедитесь, что ~/bin добавлен в ваш $PATH
- в папке wp-content/themes запустите gen_pot.sh yourtheme
- или находясь в папке вашей темы, просто запустите gen_pot.sh
- скрипт автоматически создаст POT-файл...

Вот хорошая идея. С помощью iCanLocalize вы можете автоматически создать файл .po
.
Этот генератор просканирует PHP-файл(ы) и создаст .po файлы, которые используются для локализации. Он извлечёт все строки, обёрнутые в вызовы
__("txt", "domain")
и_e("txt", "domain")
.Строки могут быть заключены в двойные кавычки (") или одинарные ('), с любой кодировкой символов.

Если у вас установлен WP-CLI (интерфейс командной строки для WordPress), это можно сделать с помощью следующей команды:
wp i18n make-pot --merge source_dir target.pot

Добро пожаловать на WPSE и спасибо, что нашли время ответить. Однако я не уверен, что это отвечает на вопросы. Не могли бы вы добавить немного больше контекста или объяснить, как этот ответ может быть подходящим ответом?
