#!/bin/bash
# Author : BCE - 1905 - 1906
#
# correction into i18n po files.
#	restablish fake wrapping done by lokalize...
#	checking non existing save
#	preventively creating a save before eventual modifications
#	and removing it if no alteration
#
# Histo
#	V0.1
#		base
#		non treatment for po commented lines
#		...
#	V1.0
#		checking save don't exist => checking non existing save
#		+ trace only for modified files
#	issue : sometimes to launch twice...


#
lg=fr 		# language digramme xx.po

# forcing a save name (v 0.2)
# sav=sav0 # permit indental saves use sav, sav1, sav2, ... (v 0.2)
# for fic in $(find . -name $lg.po |sort) ; do
# 	[[ -e $fic.$sav ]] &&
# 		echo -e "=== $fic.$sav preexist\n\t\t ABANDON"  >&2 &&
# 		exit -1
# done

# autofinding a non used savename	(v 1.0)
echo "Seeking for a non used save name..." >&2
i=0
while : ; do
	j=$i
	sav=sav$i # permit indental saves use sav1, sav2, ...
	nb=$(find . -name $lg.po.$sav -print -quit 2> /dev/null | wc -l)
	[[ $nb -eq 0 ]] && break
	(( ++i ))
done

echo "OK, no save $sav preexist ! => processing saving $lg.po into $lg.po.$sav" >&2
sleep 1

	# -exec echo " == restablishing {} =="  >&2 \; 	\
find . -name $lg.po -type f \
	-exec sed -i.$sav \
		-e '/^[^#]/ s/\\n\([^"]\)/\\n"\n"\1/g'	 \
		-e '/^msgid "[^"]/  N;s/^msgid \("[^\n]\+"\)\n"/msgid ""\n\1\n"/' \
		-e '/^msgstr "[^"]/ N;s/^msgstr \(".\+"\)\n"/msgstr ""\n\1\n"/' \
		-e '/^[^#]/ s/\\n\([^"]\)/\\n"\n"\1/g'	 \
			{} \; \
	-exec bash -c '[[ $(diff {} {}.'$sav' 2>/dev/null | wc -l ) == 0 ]] && rm {}.'$sav' || echo "   cleaning {} !!" >&2' \;

	# note : doubling s/\\n\([^"]\)/../g to cover the case : ".*\\n\\n.*"

echo "!! END $0 !" >&2