User:ManuelGR/traducir mw con wp
Appearance
#!/bin/bash
# Licencia: GPL 2 o posterior.
# Autor: [[Meta:User:ManuelGR]]
# Este script obtiene una lista de mensajes que faltan de traducir en el
# archivo LanguageXX.php y luego obtiene el mensaje de Wikipedia (se supone
# que en Wikipedia muchos de estos mensajes están ya traducidos). El resultado
# es un fichero traducidos_w.txt con los mensajes tal cual se han de insertar
# en el array $wgAllMessagesXX de LanguageXX.php
# Nota: añadir el contenido de traducidos_w.txt en el array $wgAllMessagesXX,
# Usa un editor UTF8 y sigue las instrucciones de:
# http://meta.wikimedia.org/wiki/MediaWiki_localisation
# El idioma se configura con estas variables:
CODIGO=es
CODIGO_PHP=Es
function saca_de_language ()
{
# Este grep presupone un formato homogeneo para los elementos de
# $wgAllMessagesEn. Esto se cumple a dia de hoy, pero podria cambiar
# y este grep dejaria de funcionar.
#
grep "^'.*'[ ]*=>" $1 |nawk '{print $1}' | nawk -v FS=\' '{print $2}'> $1.msg.tmp
grep "^\".*\"[ ]*=>" $1 |nawk '{print $1}' | nawk -v FS=\" '{print $2}' >> $1.msg.tmp
sort -u $1.msg.tmp > $1.msg
rm $1.msg.tmp
}
TRADUCIBLE=Messages${CODIGO_PHP}.php
ORIGINAL=MessagesEn.php
saca_de_language $TRADUCIBLE
saca_de_language $ORIGINAL
# Con esto obtenemos en no_traducidos.txt la lista de mensajes que no existen
# en el fichero de traduccion.
join -v 1 ${ORIGINAL}.msg ${TRADUCIBLE}.msg > no_traducidos.txt
echo > traducidos_w.txt
for i in `cat no_traducidos.txt`
do
# Obtener el mensaje de Wikipedia y hacer unos reemplazos simples para
# sustituir referencias a Wikipedia por sus correspondientes genéricos.
TRADUCCION=$(wget "http://${CODIGO}.wikipedia.org/w/index.php?title=MediaWiki:$i&action=raw" --output-document=- | sed "s/[wW]ikipedia:/{{ns:project}}:/g; s/Wikipedia/{{SITENAME}}/g; s/'/\\\'/g")
if [ ! -z "$TRADUCCION" ]; then
# Generar el fichero con los mensajes tal cual se incluiran en MessagesXX.php
echo "'$i' => '$TRADUCCION'," >> traducidos_w.txt
fi
# No saturemos al servidor
sleep 1
done