#!/bin/sh
#
# koha-translate -- Manage Koha translations.
# Copyright 2013 Tomás Cohen Arazi
# Universidad Nacional de Córdoba
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
# Read configuration variable file if it is present
[ -r /etc/default/koha-common ] && . /etc/default/koha-common
set -e
# include helper functions
if [ -f "/usr/share/koha/bin/koha-functions.sh" ]; then
. "/usr/share/koha/bin/koha-functions.sh"
else
echo "Error: /usr/share/koha/bin/koha-functions.sh not present." 1>&2
exit 1
fi
usage()
{
local scriptname=$(basename $0)
cat < /dev/null ) | \
sort | uniq | \
grep -v -e images -e itemtypeimg -x -e en -e css -e js -e less -e lib
}
install_lang()
{
local lang=$1
local translate_opts=""
if [ "$verbose" = "yes" ]; then
translate_opts="--verbose"
fi
if [ "$lang" != "" ]; then
if [ "$lang" = "en" ]; then
die "Error: the default language (en) is already installed."
fi
if print_available | grep -q $lang; then
if print_installed | grep -q $lang; then
die "Error: the selected language is already installed. Try --update if you want to re-install it."
else
# Check po files are present
check_lang_po_files $lang
env PERL5LIB="$PERL5LIB:$TRANSLATE_DIR" \
KOHA_CONF="$KOHA_CONF" \
$PERL_CMD $TRANSLATE_DIR/translate install $translate_opts $lang
fi
else
die "Error: the selected language is not currently available."
fi
else
die "Error: no language code supplied."
fi
}
update_lang()
{
lang=$1
if [ "$lang" != "" ]; then
if [ "$lang" = "en" ]; then
die "Error: the default language (en) cannot be updated."
fi
if print_installed | grep -q $lang; then
# Check po files are present
check_lang_po_files $lang
remove_lang $lang
install_lang $lang
else
die "Error: the selected language is not currently installed. Try --install."
fi
else
die "Error: no language code supplied."
fi
}
remove_lang()
{
lang=$1
if [ "$lang" != "" ]; then
if [ "$lang" = "en" ]; then
die "Error: the default language (en) cannot be removed."
fi
if print_installed | grep -q $lang; then
rm -rf $KOHA_HOME/$OPAC_TMPL/bootstrap/$lang
rm -rf $KOHA_HOME/$INTRANET_TMPL/prog/$lang
else
die "Error: the selected language is not installed."
fi
else
die "Error: no language code supplied."
fi
}
check_lang_po_files()
{
lang=$1
po_files="$PO_DIR/$lang-marc-MARC21.po
$PO_DIR/$lang-marc-NORMARC.po
$PO_DIR/$lang-marc-UNIMARC.po
$PO_DIR/$lang-opac-bootstrap.po
$PO_DIR/$lang-pref.po
$PO_DIR/$lang-staff-prog.po"
if [ "$lang" != "" ]; then
for po_file in $po_files; do
if [ ! -f $po_file ]; then
die "Error: $po_file not found."
fi
done
else
die "Error: no language code supplied."
fi
}
set_action()
{
if [ "$op" = "" ]; then
op=$1
else
die "Error: only one action can be specified."
fi
}
set_dev()
{
if is_instance $1; then
dev=$1
else
die "Error: Invalid instance name $1"
fi
}
check_koha_conf()
{
if [ "$dev" != "" ]; then
KOHA_CONF=/etc/koha/sites/$dev/koha-conf.xml
elif [ -z $KOHA_CONF ]; then
KOHA_CONF=/etc/koha/koha-conf-site.xml.in
fi
}
init_template_paths()
{
# Template paths
if [ "$dev" = "" ]; then
OPAC_TMPL=opac/htdocs/opac-tmpl
INTRANET_TMPL=intranet/htdocs/intranet-tmpl
else
OPAC_TMPL=koha-tmpl/opac-tmpl
INTRANET_TMPL=koha-tmpl/intranet-tmpl
fi
TRANSLATE_DIR="$KOHA_HOME/misc/translator"
PO_DIR="$TRANSLATE_DIR/po"
}
flush_cache()
{
if [ "$dev" = "" ]; then
koha-foreach --enabled "$KOHA_HOME/misc/bin/clear_cache.pl"
else
koha-shell $dev -c "$KOHA_HOME/misc/bin/clear_cache.pl"
fi
}
# Control variables
list_all=""
op=""
language=""
verbose="no"
dev=""
# We accept at most 4 parameters
[ $# -ge 1 ] && [ $# -le 4 ] || ( usage ; die "Error: wrong parameters" )
# Read parameters
while [ $# -gt 0 ]; do
case "$1" in
-h|--help)
op="help"
break ;;
-c|--check)
set_action "check"
shift ;;
-i|--install)
set_action "install"
shift ;;
-u|--update)
set_action "update"
shift ;;
-r|--remove)
set_action "remove"
shift ;;
-l|--list)
set_action "list"
shift ;;
-a|--available)
list_all=1
shift ;;
-v|--verbose)
verbose="yes"
shift ;;
-d|--dev)
if [ $# -lt 2 ]; then
die "Error: dev parameter without instance"
fi
shift
set_dev $1
shift ;;
-*)
usage
die "Error: unknown parameter $1." ;;
*)
language=$1
shift ;;
esac
done
if [ "$dev" != "" ]; then adjust_paths_dev_install $dev; fi
check_koha_conf
init_template_paths
PERL_CMD=`which perl`
# Process the requested actions
case $op in
"help")
usage ;;
"list")
list $list_all ;;
"install")
install_lang $language
flush_cache
;;
"update")
update_lang $language ;;
"remove")
remove_lang $language
flush_cache
;;
"check")
check_lang_po_files $language ;;
*)
usage
die "Error: wrong parameters..." ;;
esac
exit 0