[Koha-patches] [PATCH] Bug 10041 - Provide a koha-translate script to aid package users on installing translations
Tomas Cohen Arazi
tomascohen at gmail.com
Mon Apr 15 17:01:02 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 | 79 ++++++++++++
debian/koha-common.install | 1 +
debian/scripts/koha-translate | 257 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 337 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..b2bae3b
--- /dev/null
+++ b/debian/docs/koha-translate.xml
@@ -0,0 +1,79 @@
+<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><option>-c</option>|<option>--check</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>-c, --check</option></term>
+ <listitem>
+ <para>Check if all the .PO files are present for the specified language.</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..805b9c3
--- /dev/null
+++ b/debian/scripts/koha-translate
@@ -0,0 +1,257 @@
+#!/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-i-opac-t-ccsr-v-3006000.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")
+
+#set -- $(getopt -o hli:u:r: -l help,list,install:,update:,remove: \
+# -n "$0" -- "$@")
+
+
+# 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
+
--
1.7.10.4
More information about the Koha-patches
mailing list