#!/usr/bin/perl -w eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if 0; # not running under some shell #----IMPORTANT-------------------------------------------------------- # This script may contain bugs so use with caution. # If you find bugs or have improvement suggestions, please drop me an email :) #----Information------------------------------------------------------- #This script is part of the Root Actions -servicemenu for kde. #Written by kubicle #----Disclaimer------------------------------------------------------- # 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 2, 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, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #----Instructions----------------------------------------------------- #This script should be placed along your $PATH for the servicemenu to work, some possible locations are: # /usr/local/bin and /usr/bin. #Also make sure the script is executable for the users that shall use the servicemenu. #--------------------------------------------------------------------- ########### DIALOG MESSAGES, TRANSLATABLE STRINGS ############# sub copy_dialog_msgs { &get_kde_language; %COPYTITLE = ( "ca" => "Copia", "cs" => "Koprovat", "el" => "", "en_US" => "Copy", "fi" => "Kopioi", "fr" => "Copier", "gl" => "Copiar", "hu" => "Msols", "it" => "Copia", "lt" => "Kopijuoti", "nb" => "Kopier", "nn" => "Kopier", "pl" => "Kopiuj", "pt" => "Copiar", "pt_PT" => "Copiar", "ru" => "", "sr" => "", "sr\@latin" => "Kopiraj", "tr" => "Kopyala", "xx" => "Your string, xx is the country abbreviation" ); %COPYMSG = ( "ca" => "Nom de fitxer:", "cs" => "Nzev souboru:", "el" => " ", "en_US" => "Filename:", "fi" => "Tiedoston nimi", "fr" => "Nom du fichier:", "gl" => "Nome do ficheiro:", "hu" => "Fjl neve:", "it" => "Nome del file:", "lt" => "Failo pavadinimas:", "nb" => "Filnavn:", "nn" => "Filnamn:", "pl" => "Nazwa pliku:", "pt" => "Nome do ficheiro:", "pt_PT" => "Nome do ficheiro:", "ru" => " :", "sr" => " :", "sr\@latin" => "Ime fajla:", "tr" => "Dosya ad:", "xx" => "Your string, xx is the country abbreviation" ); $COPYTITLE = ($COPYTITLE{"$KDELANG"} or $COPYTITLE{"$KDELANGSHT"} or $COPYTITLE{"en_US"}); $COPYMSG = ($COPYMSG{"$KDELANG"} or $COPYMSG{"$KDELANGSHT"} or $COPYMSG{"en_US"}); return 0; } sub rename_dialog_msgs { &get_kde_language; %RENAMETITLE = ( "ca" => "Mou/Reanomena", "cs" => "Pesunout/Pejmenovat", "de" => "Umbenennen", "el" => "/", "en_US" => "Move/Rename", "es" => "Renombrar", "fi" => "Nime uudelleen", "fr" => "Renommer", "gl" => "Cambiar o nome", "hu" => "Mozgats/tnevezs", "it" => "Muovi/Rinomina", "lt" => "Perkelti/pervadinti", "nb" => "Flytt/Omdp", "nl" => "Hernoemen", "nn" => "Flytt/Omdyp", "pl" => "Przenie/Zmie nazw", "pt" => "Mudar o nome", "pt_PT" => "Mudar o nome", "ru" => "/", "sr" => "/", "sr\@latin" => "Premesti/preimenuj", "tr" => "Ta/Yeniden simlendir", "xx" => "Your string, xx is the country abbreviation" ); %RENAMEMSG = ( "ca" => "Nom nou:", "cs" => "Nov jmno:", "de" => "Neuer Name:", "el" => " :", "en_US" => "New name:", "es" => "Nombre nuevo:", "fi" => "Uusi nimi:", "fr" => "Nouveau nom :", "gl" => "Novo nome:", "hu" => "j nv:", "it" => "Nuovo nome:", "lt" => "Naujas pavadinimas:", "nb" => "Nytt navn:", "nl" => "Nieuwe naam:", "nn" => "Nytt namn:", "pl" => "Nowa nazwa:", "pt" => "Novo nome:", "pt_PT" => "Novo nome:", "ru" => " :", "sr" => " :", "sr\@latin" => "Novo ime:", "tr" => "Yeni isim:", "xx" => "Your string, xx is the country abbreviation" ); $RENAMETITLE = ($RENAMETITLE{"$KDELANG"} or $RENAMETITLE{"$KDELANGSHT"} or $RENAMETITLE{"en_US"}); $RENAMEMSG = ($RENAMEMSG{"$KDELANG"} or $RENAMEMSG{"$KDELANGSHT"} or $RENAMEMSG{"en_US"}); return 0; } sub delete_dialog_msgs { &get_kde_language; %DELETETITLE = ( "ca" => "Avs", "cs" => "Varovn", "de" => "Achtung", "el" => "", "en_US" => "Warning", "es" => "Aviso", "fi" => "Varoitus", "fr" => "Attention", "gl" => "Aviso", "hu" => "Figyelem", "it" => "Attenzione", "lt" => "Perspjimas", "nb" => "Advarsel", "nl" => "Waarschuwing", "nn" => "Advarsel", "pl" => "Ostrzeenie", "pt" => "Ateno", "pt_PT" => "Ateno", "ru" => "", "sr" => "", "sr\@latin" => "Upozorenje", "tr" => "Uyar", "xx" => "Your string, xx is the country abbreviation" ); %DELETEMSG = ( "ca" => "Esteu segur que voleu esborrar-lo completament?: ", "cs" => "Jste si jisti, e chcete nenvratn smazat: ", "de" => "Mchten Sie die folgenden Dateien dauerhaft lschen: ", "el" => " : ", "en_US" => "Are you sure you wish to permanently delete: ", "es" => "Estas seguro de querer borrarlo por completo?", "fi" => "Haluatko varmasti kokonaan poistaa: ", "fr" => "tes-vous sr de vouloir supprimer dfinitivement :", "gl" => "Est seguro de que o quere borrar definitivamente?", "hu" => "Biztosan trlni akarod?", "it" => "Sei sicuro di voler eliminare in modo definitivo: ", "lt" => "Ar tikrai norite galutinai itrinti: ", "nb" => "Er du sikker p at du vil slette permanent: ", "nl" => "Bent u zeker dat u permanent wil verwijderen: ", "nn" => "Er du sikker p at du vil slette permanent: ", "pl" => "Czy na pewno chcesz nieodwracalnie usun: ", "pt" => "Tem a certeza que quer apagar definitivamente? ", "pt_PT" => "Tem a certeza que quer apagar definitivamente? ", "ru" => " , :", "sr" => " : ", "sr\@latin" => "elite li zaista da obriete: ", "tr" => "Bu dosyay kalc olarak silmek istediinize emin misiniz: ", "xx" => "Your string, xx is the country abbreviation" ); $DELETETITLE = ($DELETETITLE{"$KDELANG"} or $DELETETITLE{"$KDELANGSHT"} or $DELETETITLE{"en_US"}); $DELETEMSG = ($DELETEMSG{"$KDELANG"} or $DELETEMSG{"$KDELANGSHT"} or $DELETEMSG{"en_US"}); return 0; } sub ownership_dialog_msgs { &get_kde_language; %OWNERTITLE = ( "ca" => "Estableix UID:GID", "cs" => "Nastavit UID:GIG", "de" => "Eigentmer ndern", "el" => " UID:GID", "en_US" => "Set UID:GID", "es" => "Establecer UID:GID", "fi" => "Anna UID:GID", "fr" => "Modifier UID:GID", "gl" => "Establecer UID:GID", "hu" => "UID:GID belltsa", "it" => "Cambia UID:GID", "lt" => "Nustatyti UID:GID", "nb" => "Sett UID:GID", "nl" => "Wijzig UID:GID", "nn" => "Set UID:GID", "pl" => "Ustawienie UID:GID", "pt" => "Atribuir UID:GID", "pt_PT" => "Atribuir UID:GID", "ru" => " UID:GID", "sr" => " :", "sr\@latin" => "Postavi UID:GID", "tr" => "UID:GID'i ayarla", "xx" => "Your string, xx is the country abbreviation" ); %OWNERMSG = ( "ca" => "Canvia propietari a: ", "cs" => "Zmnit vlastnka na: ", "de" => "Neuer Eigentmer: ", "el" => " : ", "en_US" => "Change ownership to: ", "es" => "Cambiar propietario a: ", "fi" => "Vaihda omistajaksi: ", "fr" => "Attribuer : ", "gl" => "Facer dono a: ", "hu" => "Fjl tulajdonosnak megvltoztatsa: ", "it" => "Cambia proprietario: ", "lt" => "Pakeisti nuosavyb : ", "nb" => "Sett eierskap til: ", "nl" => "Wijzig eigenaar in: ", "nn" => "Set eigarskap til: ", "pl" => "Zmie wasno na: ", "pt" => "Alterar dono para: ", "pt_PT" => "Alterar dono para: ", "ru" => " :", "sr" => " : ", "sr\@latin" => "Promeni vlasnika: ", "tr" => "Dosyann sahibini deitir: ", "xx" => "Your string, xx is the country abbreviation" ); $OWNERTITLE = ($OWNERTITLE{"$KDELANG"} or $OWNERTITLE{"$KDELANGSHT"} or $OWNERTITLE{"en_US"}); $OWNERMSG = ($OWNERMSG{"$KDELANG"} or $OWNERMSG{"$KDELANGSHT"} or $OWNERMSG{"en_US"}); return 0; } sub recursion_dialog_msgs { &get_kde_language; %RECURSIONTITLE = ( "ca" => "Aplico els canvis recursivament?", "cs" => "Aplikovat zmny na vechny?", "el" => " ;", "en_US" => "Apply changes recursively?", "fi" => "Toteutetaanko muutokset rekursiivisesti?", "fr" => "Appliquer rcursivement les modifications ?", "gl" => "Aplicar os cambios de forma recursiva?", "hu" => "A vltozsok az alknyvtr(ak)ra is kiterjedjenek?", "it" => "Applico i cambiamenti?", "lt" => "Taikyti pakeitimus rekursyviai?", "nb" => "Endre rekursivt?", "nn" => "Endra rekursivt?", "pl" => "Wprowadzi zmiany rekursywnie?", "pt" => "Aplicar alteraes recursivamente?", "pt_PT" => "Aplicar alteraes recursivamente?", "ru" => " ?", "sr" => " ?", "sr\@latin" => "Da primenim izmene rekurzivno?", "tr" => "Deiiklikler zyinelemeli olarak uygulansn m?", "xx" => "Your string, xx is the country abbreviation" ); %RECURSIONMSG = ( "ca" => "Voleu aplicar els canvis recursivament a totes les subcarpetes i fitxers? \n(Useu-lo amb precauci)", "cs" => "Jste si jisti, e chcete zmny aplikovat na vechny soubory a podsloky? \n(Pouvejte z rozmyslem)", "el" => " - ; \n ( )", "en_US" => "Do you wish to apply the changes recursively to all sub-folders and files? \n(Use with caution)", "fi" => "Haluatko ulottaa muutokset rekursiivisesti alikansioihin ja tiedostoihin? \n(Kyt varoen)", "fr" => "Voulez-vous appliquer les modifications rcursivement tous les rpertoires et fichiers ? \n( utiliser avec prcaution)", "gl" => "Quere aplicar os cambios de forma recursiva a todos os cartafoles e ficheiros contidos?\n(sese con coidado)", "hu" => "Szeretnd, ha a vltoztatsok minden alknyvtrra s az ott lv fjlokra is kiterjedjenek? \n(Lgy vatos)", "it" => "Vuoi applicare i cambiamenti a tutte le sottocartelle e ai files? \n(Da utilizzare con cautela)", "lt" => "Ar norite pritaikyti pakeitums rekursyviai visiems paaplankiams ir failams? \n(Naudoti atsargiai)", "nb" => "Vil du gjre endringene gjeldende rekursivt i alle undermapper og filer? \n(Vr forsiktig)", "nn" => "Vil du gjere endringane gjeldande rekursivt i alle undermapper og filer? \n(Vr forsiktig)", "pl" => "Czy chcesz wprowadzi zmiany rekursywnie dla wszystkich podfolderw i plikw? \n(Uywaj z ostronoci)", "pt" => "Deseja aplicar as alteraes recursivamente a todos os sub-directrios e ficheiros? \n(Usar com cuidado)", "pt_PT" => "Deseja aplicar as alteraes recursivamente a todos os sub-directrios e ficheiros? \n(Usar com cuidado)", "ru" => " ", "sr" => " ? \n( )", "sr\@latin" => "elite li da primenite izmene rekurzivno na sve potfascikle i fajlove? \n(Koristite ovo paljivo)", "tr" => "Deiiklikleri tm altdizinlere ve dosyalara zyinelemeli olarak uygulamak istiyor musunuz? \n(Dikkatli kullann", "xx" => "Your string, xx is the country abbreviation" ); $RECURSIONTITLE = ($RECURSIONTITLE{"$KDELANG"} or $RECURSIONTITLE{"$KDELANGSHT"} or $RECURSIONTITLE{"en_US"}); $RECURSIONMSG = ($RECURSIONMSG{"$KDELANG"} or $RECURSIONMSG{"$KDELANGSHT"} or $RECURSIONMSG{"en_US"}); return 0; } sub root_reminder_msgs { &get_kde_language; %ROOTREMINDER = ( "ca" => "OBERT COM A ROOT", "cs" => "OTEVENO JAKO ROOT", "el" => " ", "en_US" => "OPENED AS ROOT", "fi" => "AVATTU PKYTTJN", "fr" => "OUVERT EN ROOT", "gl" => "ABERTO COMA ROOT", "hu" => "RENDSZERGAZDAKNT MEGNYITVA", "it" => "APERTO COME ROOT", "lt" => "ATVERTA ROOT TEISMIS", "nb" => "PNET SOM ROOT", "nn" => "OPNA SOM ROOT", "pl" => "OTWARTO JAKO ADMINISTRATOR", "pt" => "ABERTO COMO ROOT", "pt_PT" => "ABERTO COMO ROOT", "ru" => " root", "sr" => " ", "sr\@latin" => "OTVORENO KAO KOREN", "tr" => "YETKL KULLANICI OLARAK AILDI", "xx" => "Your string, xx is the country abbreviation" ); $ROOTREMINDER = ($ROOTREMINDER{"$KDELANG"} or $ROOTREMINDER{"$KDELANGSHT"} or $ROOTREMINDER{"en_US"}); return 0; } sub open_dialog_msgs { &get_kde_language; %OPENTITLE = ( "ca" => "Programa", "cs" => "Program", "de" => "Programm", "el" => "", "en_US" => "Program", "es" => "Programa", "fi" => "Ohjelma", "fr" => "Programme", "gl" => "Programa", "hu" => "Program", "it" => "Programma", "lt" => "Programa", "nb" => "Program", "nl" => "Programma", "nn" => "Program", "pl" => "Program", "pt" => "Programa", "pt_PT" => "Programa", "ru" => "", "sr" => "", "sr\@latin" => "Program", "tr" => "Program", "xx" => "Your string, xx is the country abbreviation" ); %OPENMSG = ( "ca" => "Obre amb: ", "cs" => "Otevt s: ", "de" => "ffnen mit: ", "el" => " : ", "en_US" => "Open with: ", "es" => "Abrir con: ", "fi" => "Avaa ohjelmalla: ", "fr" => "Ouvrir avec : ", "gl" => "Abrir con: ", "hu" => "Megnyits ezzel: ", "it" => "Apri con: ", "lt" => "Atverti su: ", "nb" => "pne med: ", "nl" => "Openen met: ", "nn" => "Opna med: ", "pl" => "Otwrz z: ", "pt" => "Abrir com: ", "pt_PT" => "Abrir com: ", "ru" => " : ", "sr" => " : ", "sr\@latin" => "Otvori pomou: ", "tr" => "Birlikte a: ", "xx" => "Your string, xx is the country abbreviation" ); $OPENTITLE = ($OPENTITLE{"$KDELANG"} or $OPENTITLE{"$KDELANGSHT"} or $OPENTITLE{"en_US"}); $OPENMSG = ($OPENMSG{"$KDELANG"} or $OPENMSG{"$KDELANGSHT"} or $OPENMSG{"en_US"}); return 0; } sub permission_dialog_msgs { &get_kde_language; %PERMTITLE = ( "ca" => "Permisos", "cs" => "Oprvnn", "de" => "Berechtigungen", "el" => "", "en_US" => "Permissions", "es" => "Permisos", "fi" => "Kyttoikeudet", "fr" => "Droits d'accs", "gl" => "Permisos", "hu" => "Jogosultsgok", "it" => "Permessi", "lt" => "Leidimai", "nb" => "Rettigheter", "nl" => "Toegengsrechten", "nn" => "Rettigheiter", "pl" => "Uprawnienia", "pt" => "Permisses", "pt_PT" => "Permisses", "ru" => "", "sr" => "", "sr\@latin" => "Dozvole", "tr" => "Yetkiler", "xx" => "Your string, xx is the country abbreviation" ); %PERMMSG = ( "ca" => "Seleccioneu els permisos: ", "cs" => "Zvolit oprvnn", "de" => "Berechtigungen auswhlen: ", "el" => " : ", "en_US" => "Choose permissions: ", "es" => "Elegir permisos: ", "fi" => "Valitse kyttoikeudet: ", "fr" => "Choisissez les droits d'accs : ", "gl" => "Escoller os permisos: ", "hu" => "Add meg a jogosultsgokat: ", "it" => "Permessi di accesso: ", "lt" => "Pasirinkite leidimus: ", "nb" => "Velg rettigheter: ", "nl" => "Toegangsrechten instellen: ", "nn" => "Velg rettigheiter: ", "pl" => "Wybierz uprawnienia: ", "pt" => "Escolher permisses: ", "pt_PT" => "Escolher permisses: ", "ru" => " : ", "sr" => " : ", "sr\@latin" => "Izaberite dozvole: ", "tr" => "Yetkileri belirle: ", "xx" => "Your string, xx is the country abbreviation" ); %OWN = ( "ca" => "Propietari:", "cs" => "Vlastnk:", "de" => "Besitzer:", "el" => ":", "en_US" => "Owner:", "es" => "Propietario:", "fi" => "Omistaja:", "fr" => "Propritaire :", "gl" => "Dono:", "hu" => "Tulajdonos:", "it" => "Proprietario:", "lt" => "Savininkas:", "nb" => "Eier:", "nl" => "Eigenaar:", "nn" => "Eigar:", "pl" => "Waciciel:", "pt" => "Dono:", "pt_PT" => "Dono:", "ru" => ":", "sr" => ":", "sr\@latin" => "Vlasnik:", "tr" => "Sahip:", "xx" => "Your string, xx is the country abbreviation" ); %GRP = ( "ca" => "Grup:", "cs" => "Skupina:", "de" => "Gruppe:", "el" => ":", "en_US" => "Group:", "es" => "Grupo:", "fi" => "Ryhm:", "fr" => "Groupe :", "gl" => "Grupo:", "hu" => "Csoport:", "it" => "Gruppo:", "lt" => "Grup:", "nb" => "Gruppe:", "nl" => "Groep:", "nn" => "Gruppe:", "pl" => "Grupa:", "pt" => "Grupo:", "pt_PT" => "Grupo:", "ru" => ":", "sr" => ":", "sr\@latin" => "Grupa:", "tr" => "Grup", "xx" => "Your string, xx is the country abbreviation" ); %ALL = ( "ca" => "Altres:", "cs" => "Ostatn:", "de" => "Alle Benutzer:", "el" => ":", "en_US" => "Others:", "es" => "Todos:", "fi" => "Kaikki:", "fr" => "Autres :", "gl" => "Outros:", "hu" => "Mindenki:", "it" => "Tutti:", "lt" => "Kiti:", "nb" => "Andre:", "nl" => "Anderen:", "nn" => "Andre:", "pl" => "Wszyscy:", "pt" => "Todos:", "pt_PT" => "Todos:", "ru" => ":", "sr" => ":", "sr\@latin" => "Ostali:", "tr" => "Dierleri:", "xx" => "Your string, xx is the country abbreviation" ); %SPC = ( "ca" => "Especial:", "cs" => "Speciln:", "de" => "Spezial:", "el" => ":", "en_US" => "Special:", "es" => "Especial:", "fi" => "Erityiset:", "fr" => "Spcial :", "gl" => "Especial:", "hu" => "Klnleges:", "it" => "Avanzati:", "lt" => "Specials:", "nb" => "Spesielt:", "nl" => "Speciaal:", "nn" => "Spesielt:", "pl" => "Specjalne:", "pt" => "Especial:", "pt_PT" => "Especial:", "ru" => ":", "sr" => ":", "sr\@latin" => "Posebno:", "tr" => "zel:", "xx" => "Your string, xx is the country abbreviation" ); %READ = ( "ca" => "lectura", "cs" => "ten", "de" => "Lesen", "el" => "", "en_US" => "readable", "es" => "Lectura", "fi" => "lukuoikeus", "fr" => "Lecture", "gl" => "lectura", "hu" => "Olvashat", "it" => "leggibile", "lt" => "skaitomas", "nb" => "lesbar", "nl" => "Leesbaar", "nn" => "lesbar", "pl" => "tylko do odczytu", "pt" => "Permisso de leitura", "pt_PT" => "Permisso de leitura", "ru" => " ", "sr" => "", "sr\@latin" => "itanje", "tr" => "okunabilir", "xx" => "Your string, xx is the country abbreviation" ); %WRITE = ( "ca" => "escriptura", "cs" => "zpis", "de" => "Schreiben", "el" => "", "en_US" => "writable", "es" => "Escritura", "fi" => "kirjoitusoikeus", "fr" => "criture", "gl" => "escritura", "hu" => "rhat", "it" => "scrivibile", "lt" => "raomas", "nb" => "skrivbar", "nl" => "Schrijfbaar", "nn" => "skrivbar", "pl" => "do odczytu i zapisu", "pt" => "Permisso de escrita", "pt_PT" => "Permisso de escrita", "ru" => " ", "sr" => "", "sr\@latin" => "upis", "tr" => "yazlabilir", "xx" => "Your string, xx is the country abbreviation" ); %EXEC = ( "ca" => "executable", "cs" => "sputn", "de" => "Ausfhren", "el" => "", "en_US" => "executable", "es" => "Ejecutable", "fi" => "suoritusoikeus", "fr" => "Excution", "gl" => "executable", "hu" => "Futtathat", "it" => "eseguibile", "lt" => "vykdomas", "nb" => "kjrbar", "nl" => "Uitvoerbaar", "nn" => "kyrbar", "pl" => "wykonywalny", "pt" => "Executvel", "pt_PT" => "Executvel", "ru" => "", "sr" => "", "sr\@latin" => "izvrna", "tr" => "altrlabilir", "xx" => "Your string, xx is the country abbreviation" ); %SUID = ( "ca" => "estableix bit d'ID d'usuari", "cs" => "nastavit uivatelsk ID", "de" => "User-ID-Bit setzen", "el" => " ID bit ", "en_US" => "set user ID bit", "es" => "Establecer el bit-ID de usuario", "fi" => "aseta SUID-bitti", "fr" => "Donner l'UID", "gl" => "establecer o bit de identificacin do usuario", "hu" => "UID belltsa", "it" => "inserisci bit UID", "lt" => "nustatyti vartotojo UID bit", "nb" => "sett bruker-ID", "nl" => "User ID instellen", "nn" => "set brukar-ID", "pl" => "ustaw ID uytkownika", "pt" => "Definir o bit ID de utilizador", "pt_PT" => "Definir o bit ID de utilizador", "ru" => " UID ", "sr" => " ", "sr\@latin" => "stavi UID", "tr" => "kullanc ID bitini ayarla", "xx" => "Your string, xx is the country abbreviation" ); %SGID = ( "ca" => "estableix bit d'ID de grup", "cs" => "nastavit skupinov ID", "de" => "Gruppen-ID-Bit setzen", "el" => " ID bit ", "en_US" => "set group ID bit", "es" => "Establecer el bit-ID de grupo", "fi" => "aseta SGID-bitti", "fr" => "Donner le GID", "gl" => "establecer o bit de identificacin do grupo", "hu" => "GID belltsa", "it" => "inserisci bit GID", "lt" => "nustatyti grups GID bit", "nb" => "sett gruppe-ID", "nl" => "Groep ID instellen", "nn" => "set gruppe-ID", "pl" => "ustaw ID grupy", "pt" => "Definir o bit ID de grupo", "pt_PT" => "Definir o bit ID de grupo", "ru" => " GID ", "sr" => " ", "sr\@latin" => "stavi GID", "tr" => "grup ID bitini ayarla", "xx" => "Your string, xx is the country abbreviation" ); %STICK = ( "ca" => "estableix bit d'adherit", "cs" => "Sticky", "de" => "Sticky-Bit setzen", "el" => " sticky bit", "en_US" => "set sticky bit", "es" => "Establecer el bit-Sticky", "fi" => "aseta sticky-bitti", "fr" => "Allouer le bit collant", "gl" => "establecer o bit de adhesin", "hu" => "Sticky bit belltsa", "it" => "inserisci bit Sticky", "lt" => "nustatyti lipn bit", "nb" => "klebrig", "nl" => "Vastgezet", "nn" => "klebrig", "pl" => "ustaw parametr 'sticky'", "pt" => "Definir o bit 'sticky'", "pt_PT" => "Definir o bit 'sticky'", "ru" => " ", "sr" => " ", "sr\@latin" => "stavi lepljivu", "tr" => "yapkan biti ayarla", "xx" => "Your string, xx is the country abbreviation" ); %SPCTITLE = ( "ca" => "Avs", "cs" => "Varovn", "de" => "Achtung", "el" => "", "en_US" => "Warning", "es" => "Aviso", "fi" => "Varoitus", "fr" => "Attention", "gl" => "Aviso", "hu" => "Figyelem", "it" => "Attenzione", "lt" => "Dmesio", "nb" => "Advarsel", "nl" => "Waarschuwing", "nn" => "Advarsel", "pl" => "Ostrzeenie", "pt" => "Ateno", "pt_PT" => "Ateno", "ru" => "", "sr" => "", "sr\@latin" => "Upozorenje", "tr" => "Dikkat", "xx" => "Your string, xx is the country abbreviation" ); %SPCMSG = ( "ca" => "Heu seleccionat establir permisos especials, esteu segur que voleu continuar?", "cs" => "Zvolili jste speciln prva, jste si jisti e chcete pokraovat?", "de" => "Sie haben eine spezielle Berechtigung ausgewhlt. Mchten Sie wirklich fortfahren?", "el" => " , ;", "en_US" => "You have chosen to set special permissions, are you sure you wish to continue?", "es" => "Has seleccionado establecer permisos especiales, estas seguro de continuar?", "fi" => "Valitsit asetettavaksi erityisi kyttoikeuksia. Oletko varma, ett haluat jatkaa?", "fr" => "Vous avez choisi de modifier les droits tendus, tes-vous sr de vouloir continuer ?", "gl" => "Escolleu establecer permisos especiais, quere continuar?", "hu" => "Biztos, hogy meg akarod vltoztatni ezeket a klnleges felhasznli jogosultsgokat?", "it" => "Hai scelto di utilizzare dei permessi avanzati, sei sicuro di voler continuare?", "lt" => "Js pasirinkote nustatyti ypatingus leidimus, ar tikrai norite tsti?", "nb" => "Du har valgt spesielle bits. Vil du virkelig fortsette?", "nl" => "U heeft ervoor gekozen speciale toegangsrechten in te stellen, bent u zeker dat u verder wilt gaan?", "nn" => "Du har valgt spesielle bits. Vil du verkeleg fortsette?", "pl" => "Wybrae ustawienie specjalnych uprawnie. Czy na pewno kontynuowa?", "pt" => "Escolheu definir as permisses especiais, tem a certeza que quer continuar?", "pt_PT" => "Escolheu definir as permisses especiais, tem a certeza que quer continuar?", "ru" => " , , ?", "sr" => " , ?", "sr\@latin" => "Postavili ste posebne dozvole, elite li zaista da nastavite?", "tr" => "zel yetki ayarlar yapmay setiniz, devam etmek istediinize emin misiniz?", "xx" => "Your string, xx is the country abbreviation" ); ########### DIALOG MESSAGES END ##################################### $PERMTITLE = ($PERMTITLE{"$KDELANG"} or $PERMTITLE{"$KDELANGSHT"} or $PERMTITLE{"en_US"}); $PERMMSG = ($PERMMSG{"$KDELANG"} or $PERMMSG{"$KDELANGSHT"} or $PERMMSG{"en_US"}); $OWN = ($OWN{"$KDELANG"} or $OWN{"$KDELANGSHT"} or $OWN{"en_US"}); $GRP = ($GRP{"$KDELANG"} or $GRP{"$KDELANGSHT"} or $GRP{"en_US"}); $ALL = ($ALL{"$KDELANG"} or $ALL{"$KDELANGSHT"} or $ALL{"en_US"}); $SPC = ($SPC{"$KDELANG"} or $SPC{"$KDELANGSHT"} or $SPC{"en_US"}); $READ = ($READ{"$KDELANG"} or $READ{"$KDELANGSHT"} or $READ{"en_US"}); $WRITE = ($WRITE{"$KDELANG"} or $WRITE{"$KDELANGSHT"} or $WRITE{"en_US"}); $EXEC = ($EXEC{"$KDELANG"} or $EXEC{"$KDELANGSHT"} or $EXEC{"en_US"}); $SUID = ($SUID{"$KDELANG"} or $SUID{"$KDELANGSHT"} or $SUID{"en_US"}); $SGID = ($SGID{"$KDELANG"} or $SGID{"$KDELANGSHT"} or $SGID{"en_US"}); $STICK = ($STICK{"$KDELANG"} or $STICK{"$KDELANGSHT"} or $STICK{"en_US"}); $SPCTITLE = ($SPCTITLE{"$KDELANG"} or $SPCTITLE{"$KDELANGSHT"} or $SPCTITLE{"en_US"}); $SPCMSG = ($SPCMSG{"$KDELANG"} or $SPCMSG{"$KDELANGSHT"} or $SPCMSG{"en_US"}); return 0; } #Find out the language used in kde sub get_kde_language { if ( exists $ENV{KDEHOME}) { $KDEGLOBALFILE = "$ENV{KDEHOME}/share/config/kdeglobals"; } else { $KDEGLOBALFILE = "~/.kde/share/config/kdeglobals"; } # use kreadconfig to get the languages set for kde. Use cut to get only the primary language and discard encoding. chomp($KDELANG = `$CONFIGCOMMAND --group Locale --key Language --file $KDEGLOBALFILE | cut -d ':' -f 1 | cut -d '.' -f 1`); # If $KDEGLOBALFILE contains no language info, kreadconfig will print nothing. Read the LANG environment variable instead. if( $KDELANG eq ""){ $KDELANG = $ENV{LANG}; } chomp($KDELANGSHT = substr("$KDELANG",0,2)); return 0; } sub get_kde_path { if ( exists $ENV{KDEDIR} ) { $KDEBINPATH = "$ENV{KDEDIR}/bin/"; } else { $KDEBINPATH = "/usr/bin/"; } } # Print error message if called without arguments (if the script is run directly) if ( $#ARGV lt 0 ) { die "This script is not meant to be run directly. It will run with the necessary arguments when called from the .desktop files when a root action is selected by right-clicking item(s) in konqueror/dolphin.\n" ; } # Check whether kdesudo is installed, and use it instead of kdesu to get root privileges. &get_kde_path ; if ( `which kdesudo` ) { $SUCOMMAND = "$KDEBINPATH"."kdesudo -d --noignorebutton --"} elsif ( `which kdesu` ) { $SUCOMMAND = "$KDEBINPATH"."kdesu -d --"} else { $SUCOMMAND = "xdg-su -c"} $DIALOGCOMMAND = "$KDEBINPATH"."kdialog" ; $CONFIGCOMMAND = "$KDEBINPATH"."kreadconfig" ; #---Start root actions--- $EXECNAME = $0 ; $ACTION = shift @ARGV ; $TARGET = join("' '", @ARGV) ; &{$ACTION} or die ; #---Root konsole subroutines--- sub root_konsole_here { $APPNAME = shift @ARGV ; $WORKDIR = shift @ARGV ; exec "$SUCOMMAND \"$EXECNAME\" do_root_konsole \"$APPNAME\" \"$WORKDIR\""; exit $?; } sub do_root_konsole { if ( $> eq 0 ) { #get root reminder string &root_reminder_msgs; #Get the terminal and working directory $APPNAME = shift @ARGV ; if ( -x $KDEBINPATH.$APPNAME ) { $TERMINAL = $KDEBINPATH.$APPNAME ; } else { $TERMINAL = $APPNAME ; } $APPNAME =~ tr/a-z/A-Z/ ; $WORKDIR = shift @ARGV ; exec "$TERMINAL --workdir \'$WORKDIR\' --caption \"$APPNAME $ROOTREMINDER\"" ; exit $?; } } #---End root konsole subroutines--- #---Open with subroutines--- sub custom_open_with { #Get program &open_dialog_msgs; $APPNAME = `$DIALOGCOMMAND --title "$OPENTITLE" --inputbox "$OPENMSG" program` ; if ( $? eq 0 ) { chomp $APPNAME ; exec "$SUCOMMAND \"$EXECNAME\" do_open_with \"$APPNAME\" \"$TARGET\""; exit $?; } } sub open_with { $APPNAME = shift @ARGV ; $TARGET = join("' '", @ARGV) ; if ( $APPNAME eq "kate" ) { system "which kate" ; if ( $? ne 0 ) { $APPNAME = "kwrite"; } } exec "$SUCOMMAND \"$EXECNAME\" do_open_with \"$APPNAME\" \"$TARGET\""; exit $?; } sub do_open_with { #If running as root, open the files if ( $> eq 0 ) { #get root reminder string &root_reminder_msgs; #Which program? (first argument) $APPNAME = shift @ARGV ; if ( -x $KDEBINPATH.$APPNAME ) { $CPROGRAM = $KDEBINPATH.$APPNAME ; } else { $CPROGRAM = $APPNAME ;} $APPNAME =~ tr/a-z/A-Z/ ; shift; #Create Target file string $TARGET = join("' '", @ARGV) ; exec "$CPROGRAM --caption \"$APPNAME $ROOTREMINDER\" \"$TARGET\"" ; exit $?; } } #---End open with subroutines--- #---Copy subroutines--- sub root_copy { ©_dialog_msgs; $OLDNAME = $ARGV[0]; $NEWNAME = `$DIALOGCOMMAND --title "$COPYTITLE" --inputbox "$COPYMSG" \"$OLDNAME\"` ; chop $NEWNAME; if ( $? eq 0 && $OLDNAME ne $NEWNAME ) { exec "$SUCOMMAND \"$EXECNAME\" do_copy \"$OLDNAME\" \"$NEWNAME\""; exit $?; } } sub do_copy { #If running as root, rename the file if ( $> eq 0 ) { #get the arguments) $OLDNAME = $ARGV[0] ; $NEWNAME = $ARGV[1] ; `cp -pr \"$OLDNAME\" \"$NEWNAME\"`; } } #---End copy subroutines--- #---Rename subroutines--- sub root_rename { # If more than one file is selected, and a batch rename application is installed, open it $BATCHRENAMER = shift @ARGV ; $TARGET = join("' '", @ARGV) ; chomp($RENAMERPATH = `which $BATCHRENAMER`); if ( $#ARGV > 0 && -x $RENAMERPATH ) { exec "$SUCOMMAND \"$EXECNAME\" do_open_with \"$BATCHRENAMER\" \"$TARGET\""; exit $?; } # else we'll use a simple rename script else { &rename_dialog_msgs; $OLDNAME = $ARGV[0]; $NEWNAME = `$DIALOGCOMMAND --title "$RENAMETITLE" --inputbox "$RENAMEMSG" \"$OLDNAME\"` ; chop $NEWNAME; if ( $? eq 0 && $OLDNAME ne $NEWNAME ) { exec "$SUCOMMAND \"$EXECNAME\" do_rename \"$OLDNAME\" \"$NEWNAME\""; exit $?; } } } sub do_rename { #If running as root, rename the file if ( $> eq 0 ) { #get the arguments) $OLDNAME = $ARGV[0] ; $NEWNAME = $ARGV[1] ; `mv \'$OLDNAME\' \'$NEWNAME\'`; } } #---End rename subroutines--- #---Deletion subroutines--- sub root_delete { #Create a viewer friendly list of files to be deleted for the warning dialog $TARGETLIST = join("\\n", @ARGV); #Show warning dialog &delete_dialog_msgs; system "$DIALOGCOMMAND --title \'$DELETETITLE\' --warningcontinuecancel \'$DELETEMSG\\n$TARGETLIST\'" ; #Is deletion confirmed? if ( $? eq 0 ) { # kdesu will run the command as regular user if 'Ignore' is chosen from kdesu dialog. # To prevent unwanted deletion of files, we'll run 'do_delete' instead of 'rm -r', 'do delete' # will exit if it's run as normal user, therefore the files writable for user are safe when clicking 'Ignore' exec "$SUCOMMAND \"$EXECNAME\" do_delete \"$TARGET\""; } } sub do_delete { #If running as root, remove the files targeted if ( $> eq 0 ) { `rm -r --preserve-root \'$TARGET\'` ; } exit 0; } #---End deletion subroutines--- #---Ownership subroutines--- sub root_ownership { #chown target files to root # If only one directory selected, ask whether to apply the changes recursively $RECURSIVE = "0" ; if ( $#ARGV < 1 && -d $ARGV[0]) { &recursion_dialog_msgs ; system "$DIALOGCOMMAND --title \'$RECURSIONTITLE\' --yesno \'$RECURSIONMSG\'"; if ( $? eq 0 ) { $RECURSIVE = "1" ; } } # Same as with delete, we don't want kdesu to run 'chown' when 'Ignore' is pressed in the kdesu dialog, so we use 'do_ownership' instead exec "$SUCOMMAND \"$EXECNAME\" do_ownership \"$RECURSIVE\" 0:0 \"$TARGET\""; exit $?; } sub user_ownership { # If only one directory selected, ask whether to apply the changes recursively $RECURSIVE = "0" ; if ( $#ARGV < 1 && -d $ARGV[0]) { &recursion_dialog_msgs ; system "$DIALOGCOMMAND --title \'$RECURSIONTITLE\' --yesno \'$RECURSIONMSG\'"; if ( $? eq 0 ) { $RECURSIVE = "1" ; } } #Create a list of user GIDs, so we can pick only the primary group @GROUPS = split ' ', $); exec "$SUCOMMAND \"$EXECNAME\" do_ownership \"$RECURSIVE\" $>:$GROUPS[0] \"$TARGET\""; exit $?; } sub custom_ownership { #Get custom UID:GID $RECURSIVE = "0" ; if ( $#ARGV < 1 && -d $ARGV[0]) { &recursion_dialog_msgs ; system "$DIALOGCOMMAND --title \'$RECURSIONTITLE\' --yesno \'$RECURSIONMSG\'"; if ( $? eq 0 ) { $RECURSIVE = "1" ; } $? = "0" ; } &ownership_dialog_msgs; $UIDGID=`$DIALOGCOMMAND --title "$OWNERTITLE" --inputbox "$OWNERMSG" user:group` ; if ( $? eq 0 ) { chop $UIDGID; exec "$SUCOMMAND \"$EXECNAME\" do_ownership \"$RECURSIVE\" \"$UIDGID\" \"$TARGET\""; exit $?; } } sub do_ownership { #If running as root, make the ownership changes to targeted files if ( $> eq 0 ) { #get recursion choice (first argument) $RECURSIVE = shift @ARGV ; #get the UID:GID numbers (second argument) $UIDGID = shift @ARGV ; shift; #Create Target list $TARGET = join("' '", @ARGV) ; if ( $RECURSIVE eq 1 ) { `chown --preserve-root -R \'$UIDGID\' \'$TARGET\'` ; } else { `chown --preserve-root \'$UIDGID\' \'$TARGET\'` ; } } } #---End ownership subroutines--- #---Permissions subroutines--- sub root_permissions { #chmod target files to root $STOTAL = 0 ; $RECURSIVE = "0" ; # Get current permissions of target files @CURPERM = `ls -ld \'$TARGET\' | cut -d ' ' -f1`; $ORCUR = $OWCUR = $OXCUR = $GRCUR = $GWCUR= $GXCUR = $ARCUR = $AWCUR = $AXCUR = $SSCUR = $SGCUR = $STCUR = "on"; # Analyze permissions, set to off if permission is not set, so only permissions that are present for all chosen files are on by default foreach $CUR (@CURPERM) { if (substr($CUR, 1, 1) eq "-") { $ORCUR = "off"; } if (substr($CUR, 2, 1) eq "-") { $OWCUR = "off"; } if (substr($CUR, 3, 1) eq "-") { $OXCUR = $SSCUR = "off"; } elsif (substr($CUR, 3, 1) eq "x") { $SSCUR = "off"; } elsif (substr($CUR, 3, 1) eq "S") { $OXCUR = "off"; } if (substr($CUR, 4, 1) eq "-") { $GRCUR = "off"; } if (substr($CUR, 5, 1) eq "-") { $GWCUR = "off"; } if (substr($CUR, 6, 1) eq "-") { $GXCUR = $SGCUR = "off"; } elsif (substr($CUR, 6, 1) eq "x") { $SGCUR = "off"; } elsif (substr($CUR, 6, 1) eq "S") { $GXCUR = "off"; } if (substr($CUR, 7, 1) eq "-") { $ARCUR = "off"; } if (substr($CUR, 8, 1) eq "-") { $AWCUR = "off"; } if (substr($CUR, 9, 1) eq "-") { $AXCUR = $STCUR = "off"; } elsif (substr($CUR, 9, 1) eq "x") { $STCUR = "off"; } elsif (substr($CUR, 9, 1) eq "T") { $AXCUR = "off"; } } #Check whether user wishes to change permissions recursively if ( $#ARGV < 1 && -d $ARGV[0]) { &recursion_dialog_msgs ; system "$DIALOGCOMMAND --title \'$RECURSIONTITLE\' --yesno \'$RECURSIONMSG\'"; if ( $? eq 0 ) { $RECURSIVE = "1" ; } } if ( $RECURSIVE eq 1 ) { &permission_dialog_msgs; chomp($PERMLIST=`$DIALOGCOMMAND --title "$PERMTITLE" --checklist "$PERMMSG" u:r "$OWN $READ" $ORCUR u:w "$OWN $WRITE" $OWCUR u:X "$OWN $EXEC" $OXCUR g:r "$GRP $READ" $GRCUR g:w "$GRP $WRITE" $GWCUR g:X "$GRP $EXEC" $GXCUR o:r "$ALL $READ" $ARCUR o:w "$ALL $WRITE" $AWCUR o:X "$ALL $EXEC" $AXCUR u:s "$SPC $SUID" $SSCUR g:s "$SPC $SGID" $SGCUR o:t "$SPC $STICK" $STCUR`); if ( $? eq 0 ) { #Calculate permission set for chmod @PERMLIST = split(" ", $PERMLIST); $USTR = "u="; $GSTR = "g="; $OSTR = "o="; $STOTAL = "0" ; foreach $PERM (@PERMLIST) { $UGO = substr($PERM, 1, 1); $VAL = substr($PERM, 3, 1); if ($VAL eq "s" || $VAL eq "t") { $STOTAL = "1" ; } if ($UGO eq "u") { $USTR = $USTR . $VAL; } elsif ($UGO eq "g") { $GSTR = $GSTR . $VAL; } else { $OSTR = $OSTR . $VAL; } } $CHMOD = "$USTR,$GSTR,$OSTR"; } } else { &permission_dialog_msgs; chomp($PERMLIST=`$DIALOGCOMMAND --title "$PERMTITLE" --checklist "$PERMMSG" u:4 "$OWN $READ" $ORCUR u:2 "$OWN $WRITE" $OWCUR u:1 "$OWN $EXEC" $OXCUR g:4 "$GRP $READ" $GRCUR g:2 "$GRP $WRITE" $GWCUR g:1 "$GRP $EXEC" $GXCUR o:4 "$ALL $READ" $ARCUR o:2 "$ALL $WRITE" $AWCUR o:1 "$ALL $EXEC" $AXCUR s:4 "$SPC $SUID" $SSCUR s:2 "$SPC $SGID" $SGCUR s:1 "$SPC $STICK" $STCUR`); if ( $? eq 0 ) { #Calculate permission set for chmod @PERMLIST = split(" ", $PERMLIST); $UTOTAL = 0; $GTOTAL = 0; $OTOTAL = 0; $STOTAL = 0; foreach $PERM (@PERMLIST) { $UGO = substr($PERM, 1, 1); $VAL = substr($PERM, 3, 1); if ($UGO eq "u") { $UTOTAL = $UTOTAL + $VAL; } elsif ($UGO eq "g") { $GTOTAL = $GTOTAL + $VAL; } elsif ($UGO eq "o") { $OTOTAL = $OTOTAL + $VAL; } else { $STOTAL = $STOTAL + $VAL; } } $CHMOD = "$STOTAL$UTOTAL$GTOTAL$OTOTAL"; } } if ($STOTAL ne 0 ) { system "$DIALOGCOMMAND --title \'$SPCTITLE\' --warningcontinuecancel \'$SPCMSG\'"; } if ( $? eq 0 ) { exec "$SUCOMMAND \"$EXECNAME\" do_permissions \"$RECURSIVE\" \"$CHMOD\" \"$TARGET\""; exit $?; } } sub do_permissions { #If running as root, make the permission changes to targeted files if ( $> eq 0 ) { #get the chmod number (first argument) $RECURSIVE = shift @ARGV ; $CHMOD = shift @ARGV ; shift; #Create Target list $TARGET = join("' '", @ARGV) ; if ( $RECURSIVE eq 1 ) { `chmod --preserve-root -R \'$CHMOD\' \'$TARGET\'` ; } else { `chmod --preserve-root \'$CHMOD\' \'$TARGET\'` ; } } } #---End permissions subroutines---