Koha/debian/scripts/koha-translate
Tomas Cohen Arazi 2cd5afa974 Bug 10041 - Provide a koha-translate script to aid package users on installing translations
Until we have solved the packaging of koha template translations, provide a command that manages the installed translations in a proper way.

To test, build a Debian package of current master+the patches from this bug :-D and try the many options running koha-translate --help provide.

The command itself can be grabbed from a git checkout with this patch applied to test the script's funcionality. If it (and its docs) fits the package building stuff, I'll test on monday when I can be back on my workstation.

Sponsored-by: Universidad Nacional de Córdoba

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>

Comment: Good adition. Work as described. No errors.
Copied to /usr/local/bin. No errors on install, update, remove, list and check.
Passed-QA-by: Mason James <mtj@kohaaloha.com>
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
2013-05-01 22:02:16 -04:00

256 lines
6.1 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/>.
set -e
usage()
{
local scriptname=$(basename $0)
cat <<EOF
$scriptname
This script lets you manage your Koha templates translations.
Usage:
$scriptname --list|-l [--all|-a]
$scriptname --check|-c language_code
$scriptname --install|-i language_code
$scriptname --update|-u language_code
$scriptname --remove|-r language_code
$scriptname -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
-h | --help Display this help message
EOF
}
die()
{
echo "$@" 1>&2
exit 1
}
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-t-prog ); do
echo `basename $i -i-opac-t-prog-v-3006000.po`
done
}
print_installed()
{
ls $KOHA_INSTALL_DIR/opac/htdocs/opac-tmpl/prog/ | \
grep -v -e images -e itemtypeimg
}
install_lang()
{
lang=$1
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="$KOHA_LIB_DIR:$TRANSLATE_DIR" KOHA_CONF="$KOHA_CONF_FILE"\
$PERL_CMD $TRANSLATE_DIR/translate install $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_INSTALL_DIR/opac/htdocs/opac-tmpl/prog/$lang
rm -rf $KOHA_INSTALL_DIR/opac/htdocs/opac-tmpl/ccsr/$lang
rm -rf $KOHA_INSTALL_DIR/intranet/htdocs/intranet-tmpl/prog/$lang
else
die "Error: the selected language is not already installed."
fi
else
die "Error: no language code supplied."
fi
}
check_lang_po_files()
{
lang=$1
po_files="$PO_DIR/$lang-i-opac-t-prog-v-3006000.po
$PO_DIR/$lang-opac-ccsr.po
$PO_DIR/$lang-i-staff-t-prog-v-3006000.po
$PO_DIR/$lang-pref.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
}
# Global PATH variables
KOHA_INSTALL_DIR="/usr/share/koha"
KOHA_LIB_DIR="/usr/share/koha/lib"
KOHA_CONF_FILE="/etc/koha/koha-conf-site.xml.in"
TRANSLATE_DIR="$KOHA_INSTALL_DIR/misc/translator"
PO_DIR="$TRANSLATE_DIR/po"
PERL_CMD=`which perl`
# Control variables
list_all=""
op=""
language=""
# We accept at most 2 parameters
[ $# -ge 1 ] && [ $# -le 3 ] || ( 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 ;;
-*)
usage
die "Error: unknown parameter $1." ;;
*)
language=$1
shift ;;
esac
done
# 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