web-dev-qa-db-ja.com

.poまたは.potファイルに新しい文字列を追加する方法

私のWordpressテーマに付属の.potファイルがあります。今私はそれに文字列を追加したいのですが、それはオリジナルのテーマにはありませんでした。それ、どうやったら出来るの? .potファイルを更新する必要がありますか?しかし、1)どうすればいいですか、2)翻訳された文字列が消去されないようにするにはどうすればよいですか? (私は現在 Poedit を使用していますが、文字列を追加する機能がありません。)

5
Lea Cohen
6
Ünsal Korkmaz

これはpotファイルを自動的に生成するためのシェルスクリプトです。あなたのニーズに合うように著作権などを修正してください。

#!/bin/sh
#
# Author: Denis de Bernardy <http://www.mesoconcepts.com>
# Version: 0.1
# GPL licensed
#
# Created by Ryan Boren
# Later code and patches from
# Kimmo Suominen (more) and Nikolay Bachiyski (less)
# 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

# sub only the YEAR in the copyright message (the 2nd line)
sed -i '' -e '2s/YEAR/'`date +%Y`'/' "$pot_file"

# and the cherry of the pie - extract version using magic - 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/" "$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ファイルを自動的に出力するでしょう...
3

これは良い考えです。 iCanLocalize を使用すると、.poファイルを自動的に作成できます。

このジェネレータはPHPファイルをスキャンし、ローカライズに使用される.poファイルを作成します。 __("txt", "domain")_e("txt", "domain")の呼び出しに囲まれたすべての文字列を抽出します。

文字列は、二重引用符( ")または一重引用符( ')で、任意の文字エンコーディングで囲むことができます。

2
Tran Cuong