#!/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" } # 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 ;; "update") update_lang $language ;; "remove") remove_lang $language ;; "check") check_lang_po_files $language ;; *) usage die "Error: wrong parameters..." ;; esac exit 0