Как добавить новую строку в файл .po или .pot?

2 нояб. 2010 г., 14:51:39
Просмотры: 15.2K
Голосов: 5

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

2
Комментарии

Я считаю, что этот вопрос недостаточно специфичен для WordPress, чтобы оставаться на этом сайте, поэтому, возможно, вам стоит переопубликовать его на Stack Overflow или, может быть, Super User (поскольку вы также упоминаете программу).

Jan Fabry Jan Fabry
2 нояб. 2010 г. 15:42:42

@Jan Я отредактировал вопрос, чтобы он больше касался WordPress и не был ориентирован на конкретную программу.

Lea Cohen Lea Cohen
3 нояб. 2010 г. 11:49:00
Все ответы на вопрос 4
1

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

3 нояб. 2010 г. 00:19:14
Комментарии

Эта ссылка на плагин не работает. У кого-нибудь есть альтернативы?

User User
21 июл. 2016 г. 00:36:52
0

Вот 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-файл...
2 нояб. 2010 г. 15:44:31
0

Вот хорошая идея. С помощью iCanLocalize вы можете автоматически создать файл .po.

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

Строки могут быть заключены в двойные кавычки (") или одинарные ('), с любой кодировкой символов.

4 февр. 2013 г. 13:24:59
1

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

wp i18n make-pot --merge source_dir target.pot

31 янв. 2021 г. 08:35:57
Комментарии

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

Celso Bessa Celso Bessa
31 янв. 2021 г. 16:52:57