¿Cómo añado una nueva cadena a un archivo .po o .pot?

2 nov 2010, 14:51:39
Vistas: 15.2K
Votos: 5

Tengo un archivo .pot que vino con mi tema de WordPress. Ahora quiero añadir cadenas a él, que no estaban en el tema original. ¿Cómo lo hago? ¿Tengo que actualizar el archivo .pot? pero 1) ¿Cómo lo hago?, y 2) ¿Cómo me aseguro de que las cadenas que ya estaban traducidas no se borren? (Actualmente estoy usando Poedit y no veo una función para añadir una cadena).

2
Comentarios

Creo que esta pregunta no es lo suficientemente específica de WordPress como para quedarse en este sitio, así que tal vez deberías volver a publicarla en Stack Overflow, o quizás en Super User (ya que también mencionas un programa).

Jan Fabry Jan Fabry
2 nov 2010 15:42:42

@Jan Edité la pregunta para que esté más orientada a WordPress y no sea específica de un programa

Lea Cohen Lea Cohen
3 nov 2010 11:49:00
Todas las respuestas a la pregunta 4
1

Estoy usando http://wordpress.org/extend/plugins/codestyling-localization/ Te sugiero que le des una oportunidad :)

3 nov 2010 00:19:14
Comentarios

Este enlace del plugin está muerto. ¿Alguien tiene alguna alternativa?

User User
21 jul 2016 00:36:52
0

Aquí tienes un script de shell para generar archivos .pot automáticamente. Modifica los derechos de autor, etc. según tus necesidades:

#!/bin/sh
#
# Autor: Denis de Bernardy <http://www.mesoconcepts.com>
# Versión: 0.1
# Licencia GPL
#
# Creado por Ryan Boren
# Código posterior y parches de
# Kimmo Suominen (más) y Nikolay Bachiyski (menos)
# 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

# sustituye solo el AÑO en el mensaje de copyright (la 2ª línea)
sed -i '' -e '2s/YEAR/'`date +%Y`'/' "$pot_file"

# y la cereza del pastel - extrae la versión usando magia - 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"

Uso, asumiendo un sistema *nix (Mac o Linux):

  • coloca lo anterior en ~/bin/gen_pot.sh y hazlo ejecutable
  • asegúrate de que ~/bin esté en tu $PATH
  • en wp-content/themes, ejecuta gen_pot.sh tutema
  • o desde el directorio de tu tema, ejecuta gen_pot.sh
  • generará el archivo .pot automáticamente...
2 nov 2010 15:44:31
0

Aquí hay una buena idea. Con iCanLocalize, puedes crear un archivo .po automáticamente.

Este generador escaneará archivos PHP y creará archivos .po, que se utilizan para localización. Extraerá todas las cadenas envueltas en llamadas __("txt", "dominio") y _e("txt", "dominio").

Las cadenas pueden estar entre comillas dobles (") o simples (') y con cualquier codificación de caracteres.

4 feb 2013 13:24:59
1

Si tienes WP-CLI instalado (interfaz de línea de comandos para WordPress), esto se puede lograr con el siguiente comando:

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

31 ene 2021 08:35:57
Comentarios

Bienvenido a WPSE y gracias por tomarte el tiempo de responder. Dicho esto, no estoy seguro de que esto responda a las preguntas. ¿Podrías por favor añadir un poco más de contexto o explicar cómo esta respuesta sería una respuesta apropiada?

Celso Bessa Celso Bessa
31 ene 2021 16:52:57