Package: menu Version: 2.1.24 Severity: wishlist Since some of my frech clients had ask me to make an i18l version of su-to-root, I send you the resultat.
I have attached the 5 files (su-to-root, su-to-root.pot, su-to-root_de.po and su-to-root_fr.po su-to-root.1) which are tested and they are working. Additionaly I have attached the su-to-root_de.mo and su-to-root_fr.mo. If you want to test it, do following: 1) copy "su-to-root" into ~/bin and make sure it is in your Path 2) mkdir -p ${HOME}/locale/{de,fr}/LC_MESSAGES 3) mv su-to-root_de.po ${HOME}/locale/de/LC_MESSAGES/su-to-root.mo mv su-to-root_fr.po ${HOME}/locale/fr/LC_MESSAGES/su-to-root.mo 4) I asum you have an english environement 5) now open a terminal and try: su-to-root if you have am environement other then "de" or "fr" you will get english output. Same if you try su-to-root -c bash 6) Now try the two above command with the environement variables [EMAIL PROTECTED] LANGUAGE=de su-to-root and [EMAIL PROTECTED] LANGUAGE=fr su-to-root And last not least I hope it will go into Debian... :-) Oh yes, at the beginning of the su-to-root script I have definde two variables currently GRP_LANG1 and GRP_LANG2. here are setup the languages which have the same reponse (letters) to "yes/no" and then the function falsepasswd() must be adapted. Note: IF you want to use the modified version in the menu package, please change in the "su-to-root" script the line TEXTDOMAINDIR=${HOME}/locale to TEXTDOMAINDIR=/usr/share/locale Greetings Michelle Konzack Systemadministrator Tamay Dogan Network Debian GNU/Linux Consultant -- System Information Debian Release: 3.1 Kernel Version: Linux michelle1.private 2.4.27-2-386 #1 Wed Aug 17 09:33:35 UTC 2005 i686 GNU/Linux Versions of the packages menu depends on: ii dpkg 1.10.28 Package maintenance system for Debian ii libc6 2.3.2.ds1-22 GNU C Library: Shared libraries and Timezone ii libgcc1 3.4.3-13 GCC support library ii libstdc++5 3.3.5-13 The GNU Standard C++ Library v3 -- Linux-User #280138 with the Linux Counter, http://counter.li.org/ ##################### Debian GNU/Linux Consultant ##################### Michelle Konzack Apt. 917 ICQ #328449886 50, rue de Soultz MSM LinuxMichi 0033/6/61925193 67100 Strasbourg/France IRC #Debian (irc.icq.com)
#!/bin/bash # # # Copyright 1998, Joost Witteveen <[EMAIL PROTECTED]> # # Modified 2006, Michelle Konzack <[EMAIL PROTECTED]> # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided # # with the distribution. # # # # 3. Neither the name of Michelle Konzack nor the names of its # # contributors may be used to endorse or promote products derived # # from this software without specific prior written permission. # # # # THIS SOFTWARE IS PROVIDED BY MICHELLE KONZACK AND CONTRIBUTORS # # ``AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT # # NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND # # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT # # SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, # # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # . gettext.sh export TEXTDOMAIN=su-to-root export TEXTDOMAINDIR=${HOME}/locale if test -r ~/.su-to-rootrc; then . ~/.su-to-rootrc fi PRIV=root COMMAND= NEEDS=text GRP_LANG1="de " GRP_LANG2="fr " eshell() { getent passwd $1 | cut -f7 -d: } usage() { GT1=$(gettext 'usage') GT2=$(gettext 'user') GT3=$(gettext 'command') GT4=$(gettext 'command is a X11 program') echo "${GT1}: $0 '[-X] [-p <${GT2}>] -c <${GT3}>" >&2 echo "-X: ${GT4}" >&2 exit 1 } falsepasswd() { ULANG=$(echo ${LC_MESSAGES} |sed 's/_.*//') if [ -n "$(echo "${GRP_LANG1}" |grep -w "${ULANG}")" ] ; then FLAG=1 ANS="j/n" elif [ -n "$(echo "${GRP_LANG2}" |grep -w "${ULANG}")" ] ; then FLAG=2 ANS="o/n" else FLAG=0 ANS="y/n" fi GT5=$(gettext 'Incorrect password or command failed. Try again?') echo -n "${GT5} (${ANS})" read ans if [ ${FLAG} -eq 0 ] ; then if test "${ans}" != "y" -a "${ans}" != "Y"; then exit 1 ; fi elif [ ${FLAG} -eq 1 ] ; then if test "${ans}" != "j" -a "${ans}" != "J"; then exit 1 ; fi elif [ ${FLAG} -eq 2 ] ; then if test "${ans}" != "o" -a "${ans}" != "N"; then exit 1 ; fi fi } for i in "$@"; do case "${prev}" in -p) PRIV="${i}";; -c) COMMAND="${i}";; -X) NEEDS="X11";; esac prev="${i}" done if [ -z "${COMMAND}" ] ; then usage; fi euid=$(id -u) privid=$(id -u ${PRIV}) if test "${euid}" = "${privid}"; then ${COMMAND} else case ${NEEDS} in text) if test "${euid}" != 0; then GT6=$(eval_gettext 'About to execute ${COMMAND}.') GT7=$(eval_gettext 'This command needs ${PRIV} privileges to be executed.') echo "${GT6}" echo "${GT7}" fi PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin SHELL=$(eshell ${PRIV}) GT8=$(gettext 'Using sux...') GT9=$(eval_gettext 'enter ${PRIV} passwd:') if test "X${SU_TO_ROOT_SU}" = "Xsux"; then echo "${GT8}" echo "${GT9}" while ! sux -p "${PRIV}" "${COMMAND}"; do falsepasswd done else echo "${GT9}" while ! su - "${PRIV}" -c "${COMMAND}" ; do falsepasswd done fi;; X11) if test -z "${SU_TO_ROOT_X}"; then if which gksu >/dev/null 2>&1 ; then SU_TO_ROOT_X=gksu elif which kdesu >/dev/null 2>&1 ; then SU_TO_ROOT_X=kdesu elif which sux >/dev/null 2>&1 ; then SU_TO_ROOT_X=sux else SU_TO_ROOT_X=su-to-root fi fi if test "X${SU_TO_ROOT_X}" = "Xgksu" ; then gksu -u "${PRIV}" "${COMMAND}" elif test "X${SU_TO_ROOT_X}" = "Xkdesu" ; then kdesu -u "${PRIV}" "${COMMAND}" elif test "X${SU_TO_ROOT_X}" = "Xsux" ; then env SU_TO_ROOT_SU=sux \ x-terminal-emulator -e su-to-root -p "${PRIV}" -c "${COMMAND}" # As a last resort, open a new x-terminal-emulator and prompt for the password # Do not use -X here! else x-terminal-emulator -e su-to-root -p "${PRIV}" -c "${COMMAND}" fi;; esac fi
# This file is put in the public domain. # Michelle Konzack <[EMAIL PROTECTED]>, 2006. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: menu \n" "Report-Msgid-Bugs-To: <[EMAIL PROTECTED]>\n" "POT-Creation-Date: 2006-08-15 18:28+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <[EMAIL PROTECTED]>\n" "Language-Team: LANGUAGE <[EMAIL PROTECTED]>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: su-to-root:22 msgid "usage" msgstr "" #: su-to-root:23 msgid "user" msgstr "" #: su-to-root:24 msgid "command" msgstr "" #: su-to-root:25 msgid "command is a X11 program" msgstr "" #: su-to-root:44 msgid "Incorrect password or command failed. Try again?" msgstr "" #: su-to-root:80 #, sh-format msgid "About to execute ${COMMAND}." msgstr "" #: su-to-root:81 #, sh-format msgid "This command needs ${PRIV} privileges to be executed." msgstr "" #: su-to-root:87 msgid "Using sux..." msgstr "" #: su-to-root:88 #, sh-format msgid "enter ${PRIV} passwd:" msgstr ""
# This file is put in the public domain. # Michelle Konzack <[EMAIL PROTECTED]>, 2006. # msgid "" msgstr "" "Project-Id-Version: menu \n" "Report-Msgid-Bugs-To: <[EMAIL PROTECTED]>\n" "POT-Creation-Date: 2006-08-15 18:28+0200\n" "PO-Revision-Date: 2006-08-15 18:34+0200\n" "Last-Translator: Michelle Konzack <[EMAIL PROTECTED]>\n" "Language-Team: german <[EMAIL PROTECTED]>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: su-to-root:22 msgid "usage" msgstr "anwendung" #: su-to-root:23 msgid "user" msgstr "benutzer" #: su-to-root:24 msgid "command" msgstr "befehl" #: su-to-root:25 msgid "command is a X11 program" msgstr "befehl ist ein X11 programm" #: su-to-root:44 msgid "Incorrect password or command failed. Try again?" msgstr "Unrichtiges Password oder Befehl versagte. Nocheinmal versuchen?" #: su-to-root:80 #, sh-format msgid "About to execute ${COMMAND}." msgstr "Im Begriff, ${COMMAND} auszuführen." #: su-to-root:81 #, sh-format msgid "This command needs ${PRIV} privileges to be executed." msgstr "Dieser Befehl benötigt ${PRIV} rechte um ausgeführt zu werden." #: su-to-root:87 msgid "Using sux..." msgstr "Verwende sux..." #: su-to-root:88 #, sh-format msgid "enter ${PRIV} passwd:" msgstr "${PRIV} Password eingeben:"
# This file is put in the public domain. # Michelle Konzack <[EMAIL PROTECTED]>, 2006. # msgid "" msgstr "" "Project-Id-Version: menu \n" "Report-Msgid-Bugs-To: <[EMAIL PROTECTED]>\n" "POT-Creation-Date: 2006-08-15 18:28+0200\n" "PO-Revision-Date: 2006-08-15 18:42+0200\n" "Last-Translator: Michelle Konzack <[EMAIL PROTECTED]>\n" "Language-Team: french <[EMAIL PROTECTED]>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: su-to-root:22 msgid "usage" msgstr "utilisation" #: su-to-root:23 msgid "user" msgstr "utilisateur" #: su-to-root:24 msgid "command" msgstr "command" #: su-to-root:25 msgid "command is a X11 program" msgstr "command est in logiciel X11" #: su-to-root:44 msgid "Incorrect password or command failed. Try again?" msgstr "Incorrect mot de passe ou command refuser. Esseyer encore un fois?" #: su-to-root:80 #, sh-format msgid "About to execute ${COMMAND}." msgstr "En train de executer ${COMMAND}." #: su-to-root:81 #, sh-format msgid "This command needs ${PRIV} privileges to be executed." msgstr "Cet command besoin des privilegues ${PRIV} pour l'execution." #: su-to-root:87 msgid "Using sux..." msgstr "Utilise sux..." #: su-to-root:88 #, sh-format msgid "enter ${PRIV} passwd:" msgstr "mettrer le mot de passe pour ${PRIV}:"
su-to-root_de.mo
Description: Binary data
su-to-root_fr.mo
Description: Binary data
.\" Process this file with .\" groff -man -Tascii foo.1 .\" .\" "verbatim" environment (from strace.1) .de CW .sp .nf .ft CW .. .de CE .ft .fi .sp .. .TH su-to-root 1 "20 October 1998" "Debian Project" "Debian GNU/Linux manual" .SH NAME su-to-root \- A simple script to give an `interactive' front-end to su. It can be used in menu entry commands to ask for the root password .SH SYNOPSIS .B su-to-root [-X] [\-p <user>] \-c <command> .SH DESCRIPTION Most menu entries simply start an editor or a game or whatever. But some menu entries would like to give the user the ability to change important settings in the system, that require root privileges. .B su-to-root can be used to ask for the root password. .SH OPTIONS .IP "-c <command>" The command to execute as a string. This option is mandatory. .IP "-p <user>" The name of the user to su to, instead of root. .IP -X The command is a X11 program that do not require a terminal. This is to be used with menu entries that declare needs="X11". .SH ENVIRONMENT .IP SU_TO_ROOT_X Select the su-like program called by \fBsu-to-root -X\fR. Supported values are \fIgksu\fR, \fIkdesu\fR and \fIsux\fR. .IP SU_TO_ROOT_SU If set to \fIsux\fR force .B su-to-root to use \fIsux\fR in text mode. .SH FILES .IP ~/.su-to-rootrc (\fBexperimental\fR) \fBsu-to-root\fR will source this file at startup. This lets you define and modify the environment variables above without restarting your X session. .SH COPYING .B su-to-root is distributed under the GNU General Public License. (GPL 2.0 or greater). .SH AUTHORS Joost Witteveen .RI <[EMAIL PROTECTED]> .P X11 support by Morten Brix Pedersen and Bill Allombert .RI <[EMAIL PROTECTED]> .P Localized (german, french) 2006 by Michelle Konzack .RI <[EMAIL PROTECTED]> .SH "SEE ALSO" .BR update-menus (1), .BR menufile (5), .BR /usr/share/doc/menu/html