WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a .pot file that came with my Wordpress theme. Now I want to add strings to it, that weren't there in the original theme. How do I do that? Do I have to update the .pot file? but 1) How do I do that, and 2) How do I make sure that the strings that were translated won't get erased? (I'm currently using Poedit and I can't see a feature to add a string.)

share|improve this question
I think this question is not WordPress-specific enough to stay on this site, so maybe you should re-post it on Stack Overflow, or maybe Super User (since you also mention a program). – Jan Fabry Nov 2 '10 at 13:42
@Jan I edited the question so that it's more Wordpress oriented and not program specific – Lea Cohen Nov 3 '10 at 9:49
up vote 6 down vote accepted

I am using http://wordpress.org/extend/plugins/codestyling-localization/ Give it a chance i suggest :)

share|improve this answer
This plugin link is dead. Anybody got any alternatives? – tubes Jul 20 at 21:36

Here's a shell script to generate pot files automatically. Modify the copyright, etc to fit your needs:

# 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


if [ -n "$1" ];
    cd "$1" || exit 1
    slug=`basename $1`
    slug=`basename $cwd`


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>' \

# 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 ];
    name=`fgrep -i 'Theme Name:' $dir/style.css`
    version=`fgrep -i 'Version:' $dir/style.css`
elif [ -f $dir/$slug.php ];
    name=`fgrep -i 'Plugin Name:' $dir/$slug.php`
    version=`fgrep -i 'Version:' $dir/$slug.php`


if [ "$name" != '' ];
    sed -i '' -e "1s/^# SOME DESCRIPTIVE TITLE/# $name pot file/" "$pot_file"
    sed -i '' -e "s/\(^#.*\)PACKAGE\(.*\)/\1$name\2/g" "$pot_file"

if [ "$version" != '' ];
    sed -i '' -e "s/\(Project-Id-Version: \)PACKAGE VERSION/\1$version/" "$pot_file"

cd "$cwd"

Usage, assuming a *nix box (Mac or Linux):

  • place the above in ~/bin/gen_pot.sh and make it executable
  • make sure that ~/bin is in your $PATH
  • in wp-content/themes, run gen_pot.sh yourtheme
  • or from within in your theme's dir, run gen_pot.sh
  • it'll output the pot file automatically...
share|improve this answer

Here's a good idea. With iCanLocalize, you can create a .po file automatically.

This generator will scan PHP file(s) and create .po files, that are used for localization. It will extract all strings wrapped in __("txt", "domain") and _e("txt", "domain") calls.

Strings can be enclosed in either double quotes (") or single quotes(') and with any character encoding.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.