Koha/debian/scripts/koha-translate
Jonathan Druart 4de2185614
Bug 20116: Flush the caches
When languages are added or removed when need to flush the caches to
keep the interface consistent

Signed-off-by: Liz Rea <wizzyrea@gmail.com>
Signed-off-by: Bouzid Fergani <bouzid.fergani@inlibro.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
2020-04-17 09:23:21 +01:00

326 lines
7.9 KiB
Bash
Executable file

#!/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 <http://www.gnu.org/licenses/>.
# 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 <<EOF
$scriptname
This script lets you manage your Koha templates translations.
Usage:
$scriptname --list|-l [--available|-a] [-d|--dev instance]
$scriptname --check|-c language_code] [-d|--dev instance]
$scriptname --install|-i language_code] [-d|--dev instance]
$scriptname --update|-u language_code] [-d|--dev instance]
$scriptname --remove|-r language_code] [-d|--dev instance]
$scriptname --help|-h
-l | --list List the installed or available (combined with -a)
language translations
-a | --available Used in conjunction with -l to show all languages
-c | --check Check that the language .PO files are present
-i | --install Install the specified language translations
-u | --update Update the specified language translations
-r | --remove Remove the specified language translations
-v | --verbose Be more verbose on the translation process
-h | --help Display this help message
-d | --dev Limit actions to a specific dev instance
EOF
}
list()
{
all=$1
if [ "$all" != "" ]; then
print_available
else
print_installed
fi
}
print_available()
{
# Loop over only one opac theme
for i in $( ls $PO_DIR | grep opac-bootstrap ); do
echo `basename $i -opac-bootstrap.po` | \
grep -v -x -e en
done
}
print_installed()
{
( ls -1 $KOHA_HOME/$OPAC_TMPL/bootstrap/ ; \
ls -1 $KOHA_HOME/$OPAC_TMPL/prog/ 2> /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