From 2cd5afa9741ef432a9f3ecac939c98e20d5ebfc5 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Sat, 13 Apr 2013 21:10:33 -0300 Subject: [PATCH] Bug 10041 - Provide a koha-translate script to aid package users on installing translations MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 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 Signed-off-by: Jared Camins-Esakov --- debian/docs/koha-translate.xml | 79 ++++++++++ debian/koha-common.install | 1 + debian/scripts/koha-translate | 256 +++++++++++++++++++++++++++++++++ 3 files changed, 336 insertions(+) create mode 100644 debian/docs/koha-translate.xml create mode 100755 debian/scripts/koha-translate diff --git a/debian/docs/koha-translate.xml b/debian/docs/koha-translate.xml new file mode 100644 index 0000000000..e06dede21f --- /dev/null +++ b/debian/docs/koha-translate.xml @@ -0,0 +1,79 @@ +
+koha-translate + +Koha is the first free software library automation package. + + The Koha Community + http://koha-community.org/ + + + + + + + koha-translate + 8 + + + + koha-translate + Manage Koha templates translations + UNIX/Linux + + + + + koha-translate | | | | lang_code + koha-translate | | + + + + Options + + + + + (For use with --list) List the available language translations. + + + + + + Check if all the .PO files are present for the specified language. + + + + + + Install the specified lang_code language translation. + + + + + + List the installed or available (combined with -a) language translations. + + + + + + Remove the specified lang_code language translation. + + + + + + Update the specified lang_code language translation. + + + + + + + Description + Manage Koha templates translations. + + + + +
diff --git a/debian/koha-common.install b/debian/koha-common.install index 8288c39d2a..0e542bb85b 100644 --- a/debian/koha-common.install +++ b/debian/koha-common.install @@ -28,6 +28,7 @@ debian/scripts/koha-run-backups usr/sbin debian/scripts/koha-shell usr/sbin debian/scripts/koha-start-zebra usr/sbin debian/scripts/koha-stop-zebra usr/sbin +debian/scripts/koha-translate usr/sbin debian/scripts/koha-upgrade-schema usr/sbin debian/scripts/koha-upgrade-to-3.4 usr/sbin debian/tmp_docbook/*.8 usr/share/man/man8 diff --git a/debian/scripts/koha-translate b/debian/scripts/koha-translate new file mode 100755 index 0000000000..0c731cf3e4 --- /dev/null +++ b/debian/scripts/koha-translate @@ -0,0 +1,256 @@ +#!/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 . + + +set -e + +usage() +{ + local scriptname=$(basename $0) + + cat <&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 -- 2.39.5