#!/usr/bin/perl 
# This script adapts all config files to spanish-speaking users
# ------------------------------------------------------------
# Este programa adapta todos los ficheros de configuracin para
# usuarios hispanoparlantes.
# Copyright 1999 Javier Fernndez-Sanguino Pea <jfs@computer.org>
# Distribuido bajo la licencia GNU.

use Getopt::Long;
Getopt::Long::config("auto_abbrev");

GetOptions("debug","help","version");
$only_checkfile=shift(@ARGV);

if ($opt_help) {
	print "Modo de empleo: castellanizar [OPCIN] [fichero]\n";
	print "Ajusta los ficheros de configuracin del sistema para adecuarlo\n";
	print "a su uso por hispanoparlantes.\n";
	print "opciones -dvh.\n";
	print "\tfichero\tslo adaptar el fichero indicado (si sabe cmo hacerlo)\n";
	print "\t-d,--debug\tmuestra por pantalla informacin de su progreso.\n";
	print "\t-h,--help\tmuestra esta informacin.\n";
	print "\t-v,--version\tinforma de la versin y finaliza.\n";
	print "\nComunicar 'bugs' al sistema de seguimiento de Bugs de Debian\n(por favor lea /usr/doc/debian/bug-reporting.txt\n";
	exit 0;
}

if ($opt_version) {
	print "castellanizar versin 0.1\n";
	exit 0;
}
	


# Variables globales
$prefix=".user-es.bak";
$config_dir="/etc/";

# Ficheros de configuracin y expresiones regulares
%ficheros_conf=(
	'lynx.cfg' => 's/^#?\s*PREFERRED_LANGUAGE\s*:\s*(es,)*(.*)$/PREFERRED_LANGUAGE:es,$2/;s/^#?\s*CHARACTER_SET\s*:.*$/CHARACTER_SET:iso-8859-1/;s/^#?\s*PREFERRED_CHARSET\s*:.*$/PREFERRED_CHARSET:/',
	'pgp.conf' => 's/^#?\s*Language\s*=\s*.*$/Language = es/;s/^#?\s*CharSet\s*=\s*.*$/CharSet = latin1/',
	'pgp-i.conf' => 's/^#?\s*Language\s*=\s*.*$/Language = es/;s/^#?\s*CharSet\s*=\s*.*$/CharSet = latin1/',
	'environment' => 's/^#?\s*LANG\s*=.*$/LANG = spanish/',
	'profile' => 'if (/^# Aadido por \/usr\/bin\/castellanizar/) {$anyade=0}; print SALIDA "\n# Aadido por /usr/bin/castellanizar\nif [ -f /etc/language-es ]; then source /etc/language-es; fi\nif [ -f /etc/bash_aliases-es ] ; then\n\tsource /etc/bash_aliases-es\nfi\n" if (eof && $anyade)',
	'latex2html.config' => 's/^\$TITLES_LANGUAGE\s*=(.*)$/\$TITLES_LANGUAGE = "spanish"\;/; s/^\$default_language\s*=(.*)$/\$default_language = "spanish"\;/',
	'lyxrc'  => 's/^#?\\\\sgml_extra_options\s+(.*)$/\\\\sgml_extra_options -c latin -l es/;s/^#?\\\\use_alt_language\s+(.*)$/\\\\use_at_language true/;s/^#?\\\\alternate_language(.*)$/\\\\alternate_language spanish/',
	'pine.conf' => 's/#?character-set\s*=(.*)/character-set=ISO-8859-1/',
	'netscape4/defaults/preferences.js' => 's/^user_pref("intl.accept_languages", "(es)(.*)")\;/user_pref("intl.accept_languages", "es $2")\;s/user_pref("intl.font_charset", ".*")\;/user_pref("intl.font_charset", "iso-8859-1")\;/'

);
# Aadir
# 1.- mirar donde se pone la configuracion generica de netscape
# netscape/preferences.js:
# user_pref("intl.font_charset", "iso-8859-1");
# user_pref("intl.accept_languages", "Spanish/Spain [es-ES],Spanish [es],en");


foreach $file (keys(%ficheros_conf)) {
	patch($config_dir.$file,$ficheros_conf{$file}) if (!$only_checkfile  || $file eq $only_checkfile) ;
}


exit 0;

sub patch 
{
	local $file=shift (@_);
	local $regexp=shift (@_);
	local $anyade=1;
	# Abre un fichero, lo parchea con la expresin regular dada
	# y lo cierra
	if (!-e $file) {
		print "No existe el fichero $file, no se adaptar.\n" if $opt_debug;
	}
	else {
		print "Abriendo el fichero $file para adaptar al espaol.\n" if $opt_debug;
		rename ($file,$file.$prefix) || die ("No puedo mover $file a $file$prefix: $!");
		open (ENTRADA,"<$file$prefix") || die ("No puedo abrir $file$prefix: $!\n");
		open (SALIDA,">$file") || die ("No puedo abrir $file :$!\n");
		while (<ENTRADA>) 
		{
			eval $regexp;
			print SALIDA;
		}
		close ENTRADA; close SALIDA;
	}
	return 0;
}

