[Koha-patches] [PATCH] Bug 10041 - Provide a koha-translate script to aid package users on installing translations

Tomas Cohen Arazi tomascohen at gmail.com
Sun Apr 14 02:22:45 CEST 2013


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
---
 debian/docs/koha-translate.xml |   73 ++++++++++++++
 debian/koha-common.install     |    1 +
 debian/scripts/koha-translate  |  205 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 279 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 0000000..e14ab72
--- /dev/null
+++ b/debian/docs/koha-translate.xml
@@ -0,0 +1,73 @@
+<article xmlns='http://docbook.org/ns/docbook'>
+<title>koha-translate</title>
+<info>
+<productname>Koha</productname> is the first free software library automation package.
+<author>
+  <orgname>The Koha Community</orgname>
+  <uri>http://koha-community.org/</uri>
+</author>
+</info>
+
+<refentry xml:id="koha-translate">
+
+  <refmeta>
+    <refentrytitle>koha-translate</refentrytitle>
+    <manvolnum>8</manvolnum>
+  </refmeta>
+
+  <refnamediv>
+    <refname>koha-translate</refname>
+    <refpurpose>Manage Koha templates translations</refpurpose>
+    <refclass>UNIX/Linux</refclass>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>koha-translate</command> <arg><option>-i</option>|<option>--install</option></arg> <arg><option>-u</option>|<option>--update</option></arg> <arg><option>-r</option>|<option>--remove</option></arg> <arg choice="req"  rep="norepeat"><replaceable>lang_code</replaceable></arg>
+      <command>koha-translate</command> <arg><option>-l</option>|<option>--list</option></arg> <arg><option>-a</option>|<option>--available</option></arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+  
+  <refsect1><title>Options</title>
+  <variablelist> 
+    <varlistentry>
+      <term><option>-a, --available</option></term>
+      <listitem>
+        <para>(For use with --list) List the available language translations.</para>
+      </listitem>
+    </varlistentry>
+    <varlistentry>
+      <term><option>-i, --install</option></term>
+      <listitem>
+        <para>Install the specified lang_code language translation.</para>
+      </listitem>
+    </varlistentry>
+    <varlistentry>
+      <term><option>-l, --list</option></term>
+      <listitem>
+        <para>List the installed or available (combined with -a) language translations.</para>
+      </listitem>
+    </varlistentry>
+    <varlistentry>
+      <term><option>-r, --remove</option></term>
+      <listitem>
+        <para>Remove the specified lang_code language translation.</para>
+      </listitem>
+    </varlistentry>
+    <varlistentry>
+      <term><option>-u, --update</option></term>
+      <listitem>
+        <para>Update the specified lang_code language translation.</para>
+      </listitem>
+    </varlistentry>
+
+ </variablelist>
+  </refsect1>
+
+  <refsect1><title>Description</title>
+  <para>Manage Koha templates translations.</para>
+  </refsect1>
+  
+</refentry>
+
+</article>
diff --git a/debian/koha-common.install b/debian/koha-common.install
index 8288c39..0e542bb 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 0000000..9d81e1a
--- /dev/null
+++ b/debian/scripts/koha-translate
@@ -0,0 +1,205 @@
+#!/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 scripts lets you manage your Koha templates translations.
+
+Usage:
+$scriptname --list|-l [--all|-a]
+$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
+    -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()
+{
+    for i in $(ls $PO_DIR | grep opac)
+    do
+        echo `basename $i -i-opac-t-prog-v-3006000.po`
+    done
+}
+
+print_installed()
+{
+    for i in $(ls $KOHA_INSTALL_DIR/opac/htdocs/opac-tmpl/prog/ | grep -v -e images -e itemtypeimg)
+    do
+        echo $i
+    done
+}
+
+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
+                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
+            env PERL5LIB="$KOHA_LIB_DIR:$TRANSLATE_DIR" KOHA_CONF="$KOHA_CONF_FILE"\
+                $PERL_CMD $TRANSLATE_DIR/translate update $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
+}
+
+# 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=""
+
+# Read parameters
+while true ; do
+    case "$1" in
+        -h|--help)
+            op="help"
+            break ;;
+        -i|--install)
+            op="install"
+            language="$2"
+            shift 2 ;;
+        -u|--update)
+            op="update"
+            language="$2"
+            shift 2 ;;
+        -r|--remove)
+            op="remove"
+            language="$2"
+            shift 2 ;;
+        -l|--list)
+            op="list"
+            shift ;;
+        -a|--available)
+            list_all=1
+            shift ;;
+        *)
+            break ;;
+    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 ;;
+    *)
+        usage
+        die "Error: wrong parameters..." ;;
+esac
+
+exit 0
+
-- 
1.7.10.4



More information about the Koha-patches mailing list