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>
(cherry picked from commit 2cd5afa974)

Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
(cherry picked from commit cb321e5b10)

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
This commit is contained in:
Tomas Cohen Arazi 2013-04-13 21:10:33 -03:00 committed by Chris Cormack
parent c4c8642a69
commit db418b2011
3 changed files with 336 additions and 0 deletions

79
debian/docs/koha-translate.xml vendored Normal file
View File

@ -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>

View File

@ -27,6 +27,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

256
debian/scripts/koha-translate vendored Executable file
View File

@ -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 <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