如何向.po或.pot文件添加新字符串?

时间:2010-11-02 作者:Lea Cohen

我有一本书。我的Wordpress主题附带的pot文件。现在我想给它添加字符串,这在原始主题中是不存在的。我该怎么做?我是否必须更新。pot文件?但是1)我如何做到这一点,以及2)我如何确保翻译的字符串不会被删除?(我目前正在使用Poedit 我看不到添加字符串的功能。)

4 个回复
最合适的回答,由SO网友:Ünsal Korkmaz 整理而成

我正在使用http://wordpress.org/extend/plugins/codestyling-localization/给它一个机会,我建议:)

SO网友:Denis de Bernardy

下面是一个自动生成pot文件的shell脚本。修改版权等以满足您的需要:

#!/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\\u锅中。sh并使其可执行。确保~/bin位于您的$路径中。在wp内容/主题中,运行gen\\u pot。sh yourtheme

  • 或从主题目录的内部运行gen\\u pot。它将自动输出pot文件
  • SO网友:Tran Cuong

    这里有个好主意。具有iCanLocalize, 您可以创建.po 自动归档。

    此生成器将扫描PHP文件并创建。po文件,用于本地化。它将提取包裹在__("txt", "domain")_e("txt", "domain") 呼叫。

    字符串可以用双引号(";)括起来或单引号(\'),并使用任何字符编码。

    SO网友:Norton

    如果你有WP-CLI installed (WordPress的命令行界面),这可以通过以下命令实现:

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

    结束

    相关推荐

    Adding goodies to themes

    如何在主题更新时向Arjuna-X等主题添加内容而不丢失?儿童主题是一种很好的方式,还是有其他选择?如果新版本的主题对我添加的功能具有本机支持,该怎么办?