web-dev-qa-db-fra.com

Comment ajouter une nouvelle chaîne à un fichier .po ou .pot?

J'ai un fichier .pot fourni avec mon thème Wordpress. Maintenant, je veux ajouter des chaînes, qui ne figuraient pas dans le thème initial. Comment je fais ça? Dois-je mettre à jour le fichier .pot? mais 1) Comment puis-je faire cela, et 2) Comment puis-je m'assurer que les chaînes traduites ne seront pas effacées? (J'utilise actuellement Poedit et je ne vois pas de fonctionnalité permettant d'ajouter une chaîne.)

5
Lea Cohen

J'utilise http://wordpress.org/extend/plugins/codestyling-localization/ Je lui donne une chance de suggérer :)

6
Ünsal Korkmaz

Voici un script Shell pour générer automatiquement des fichiers pot. Modifiez le copyright, etc. pour répondre à vos besoins:

#!/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"

Utilisation, en supposant une boîte * nix (Mac ou Linux):

  • placez ce qui précède dans ~/bin/gen_pot.sh et rendez-le exécutable
  • assurez-vous que ~/bin est dans votre $ PATH
  • dans wp-content/themes, exécutez gen_pot.sh yourtheme
  • ou de l'intérieur du répertoire de votre thème, lancez gen_pot.sh
  • ça va sortir le fichier pot automatiquement ...
3

Voici une bonne idée. Avec iCanLocalize , vous pouvez créer un fichier .po automatiquement.

Ce générateur analyse les fichiers PHP et crée des fichiers .po utilisés pour la localisation. Il extraira toutes les chaînes enveloppées dans les appels __("txt", "domain") et _e("txt", "domain").

Les chaînes peuvent être placées entre guillemets doubles (") ou simples (') et avec tout codage de caractères.

2
Tran Cuong