diff options
| author | Michael Vogt <egon@top> | 2005-11-15 14:18:07 +0100 |
|---|---|---|
| committer | Michael Vogt <egon@top> | 2005-11-15 14:18:07 +0100 |
| commit | d632109cd5964f7d4baa408d517e44f801e1be8d (patch) | |
| tree | c1acf5f14bcfa183951c260a52e5560610f3a988 | |
| download | python-apt-d632109cd5964f7d4baa408d517e44f801e1be8d.tar.gz | |
* initial revision (after accidently killing it)
109 files changed, 36864 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 00000000..fcb5dd99 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,16 @@ +Hackers +======= +Michiel Sikkes <michiel@eyesopened.nl> +Michael Vogt <michael.vogt@canonical.com> + +Translators +=========== +Jorge Bernal <koke@amedias.org> +Jean Privat <privat@lirmm.fr> +Martin Willemoes Hansen <mwh@sysrq.dk> +Zygmunt Krynicki <zyga@www.suxx.pl> + +Technical Author: +================= +Sean Wheller <sean@inwords.co.za> + diff --git a/COPYING b/COPYING new file mode 100644 index 00000000..d60c31a9 --- /dev/null +++ b/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + 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 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, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 00000000..4ce7838d --- /dev/null +++ b/ChangeLog @@ -0,0 +1,62 @@ +2005-04-04 Michael Vogt <mvo@debian.org> + + * configure.in: Added "xh" to ALL_LINGUAS. + +2005-04-01 Steve Murphy <murf@e-tools.com> + + * configure.in: Added "rw" to ALL_LINGUAS. + +2005-03-29 Raphael Higino <raphaelh@cvs.gnome.org> + + * configure.in: Added pt_BR to ALL_LINGUAS. + +2005-03-29 Zygmunt Krynicki <zyga@www.suxx.pl> + + * src/dialog_apt_key.py.in: Enabled translation of known keys + +2005-03-24 Michiel Sikkes <michiel@eyesopened.nl> + + * data/update-manager.glade: Added help button. Put package count next + to reload button above updatelist. + * src/update-manager.in: Implemented help button. + * configure.in: Added ja to ALL_LINGUAS. + +2005-03-21 Adam Weinberger <adamw@gnome.org> + + * configure.in: Added en_CA to ALL_LINGUAS. + +2005-03-21 Christian Rose <menthos@menthos.com> + + * configure.in: Added "sv" to ALL_LINGUAS. + Also sorted the language entries in the ALL_LINGUAS line, + so that it will be possible to spot duplicates or omissions. + +2005-03-11 Michiel Sikkes <michiel@eyesopened.nl> + + * configure.in: Added el (Greek) to ALL_LINGUAS. + +2005-03-03 Dan Damian <dand@gnome.ro> + + * configure.in: Added ro (Romanian) to ALL_LINGUAS. + +2005-03-10 Zygmunt Krynicki <zyga@www.suxx.pl> + + * Improved translation support + +2005-02-18 Michiel Sikkes <michiel@eyesopened.nl> + + * Added window title to the synaptic gtk socket window. + +2005-02-18 Michiel Sikkes <michiel@eyesopened.nl> + + * Updated strings to have more consistent messages and it's not a pain + in the ass to translate ;). + * Merge from branches/release-37-2. + +2005-01-27 Martin Willemoes Hansen <mwh@sysrq.dk> + + * da.po: Added Danish translation. + +2004-10-25 Michiel Sikkes <michiel@eyesopened.nl> + + * Initial release. diff --git a/Common/DistInfo.py b/Common/DistInfo.py new file mode 100644 index 00000000..502a491f --- /dev/null +++ b/Common/DistInfo.py @@ -0,0 +1,111 @@ +#!/usr/bin/env python +# DistInfo.py - simple parser for a xml-based metainfo file +# +# Copyright (c) 2005 Gustavo Noronha Silva +# +# Author: Gustavo Noronha Silva <kov@debian.org> +# +# 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 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import os +import gettext +import ConfigParser + +_ = gettext.gettext + +class Suite: + name = None + description = None + base_uri = None + repository_type = None + components = None + +class Component: + name = None + description = None + enabled = None + +class DistInfo: + def __init__(self, dist = None, + base_dir = "/usr/share/update-manager/dists"): + self.metarelease_uri = '' + self.suites = [] + + if not dist: + pipe = os.popen("lsb_release -i | cut -d : -f 2-") + dist = pipe.read().strip() + pipe.close() + del pipe + + dist_fname = "%s/%s.info" % (base_dir, dist) + dist_file = open (dist_fname) + if not dist_file: + return + suite = None + component = None + for line in dist_file: + tokens = line.split (':', 1) + if len (tokens) < 2: + continue + field = tokens[0].strip () + value = tokens[1].strip () + if field == 'ChangelogURI': + self.changelogs_uri = _(value) + elif field == 'MetaReleaseURI': + self.metarelease_uri = value + elif field == 'Suite': + if suite: + if component: + suite.components.append (component) + component = None + self.suites.append (suite) + suite = Suite () + suite.name = value + suite.components = [] + elif field == 'RepositoryType': + suite.repository_type = value + elif field == 'BaseURI': + suite.base_uri = value + elif field == 'Description': + suite.description = _(value) + elif field == 'Component': + if component: + suite.components.append (component) + component = Component () + component.name = value + elif field == 'Enabled': + component.enabled = bool(int(value)) + elif field == 'CompDescription': + component.description = _(value) + if suite: + if component: + suite.components.append (component) + component = None + self.suites.append (suite) + suite = None + + +if __name__ == "__main__": + d = DistInfo ("Debian", "../distribution-data") + print d.changelogs_uri + for suite in d.suites: + print suite.name + print suite.description + print suite.base_uri + for component in suite.components: + print component.name + print component.description + print component.enabled diff --git a/Common/Makefile b/Common/Makefile new file mode 100644 index 00000000..9409e7e8 --- /dev/null +++ b/Common/Makefile @@ -0,0 +1,350 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# Common/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +srcdir = . +top_srcdir = .. + +pkgdatadir = $(datadir)/update-manager +pkglibdir = $(libdir)/update-manager +pkgincludedir = $(includedir)/update-manager +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /usr/bin/install -c +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = Common +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(modulesdir)" +modulesDATA_INSTALL = $(INSTALL_DATA) +DATA = $(modules_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /tmp/3/update-manager-0.37.1+svn20050404.15/missing --run aclocal-1.9 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /tmp/3/update-manager-0.37.1+svn20050404.15/missing --run tar +AUTOCONF = ${SHELL} /tmp/3/update-manager-0.37.1+svn20050404.15/missing --run autoconf +AUTOHEADER = ${SHELL} /tmp/3/update-manager-0.37.1+svn20050404.15/missing --run autoheader +AUTOMAKE = ${SHELL} /tmp/3/update-manager-0.37.1+svn20050404.15/missing --run automake-1.9 +AWK = gawk +CATALOGS = da.gmo de.gmo el.gmo en_CA.gmo es.gmo fi.gmo fr.gmo hu.gmo ja.gmo pl.gmo pt_BR.gmo ro.gmo rw.gmo sv.gmo zh_CN.gmo xh.gmo +CATOBJEXT = .gmo +CC = gcc +CCDEPMODE = depmode=none +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATADIRNAME = share +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = grep -E +EXEEXT = +GETTEXT_PACKAGE = update-manager +GMOFILES = da.gmo de.gmo el.gmo en_CA.gmo es.gmo fi.gmo fr.gmo hu.gmo ja.gmo pl.gmo pt_BR.gmo ro.gmo rw.gmo sv.gmo zh_CN.gmo xh.gmo +GMSGFMT = /usr/bin/msgfmt +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +INSTOBJEXT = .mo +INTLLIBS = +INTLTOOL_CAVES_RULE = %.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_DESKTOP_RULE = %.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_DIRECTORY_RULE = %.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_EXTRACT = $(top_builddir)/intltool-extract +INTLTOOL_ICONV = /usr/bin/iconv +INTLTOOL_KBD_RULE = %.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_KEYS_RULE = %.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_MERGE = $(top_builddir)/intltool-merge +INTLTOOL_MSGFMT = /usr/bin/msgfmt +INTLTOOL_MSGMERGE = /usr/bin/msgmerge +INTLTOOL_OAF_RULE = %.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@ +INTLTOOL_PERL = /usr/bin/perl +INTLTOOL_PONG_RULE = %.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_PROP_RULE = %.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_SCHEMAS_RULE = %.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_SERVER_RULE = %.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_SHEET_RULE = %.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_SOUNDLIST_RULE = %.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_THEME_RULE = %.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_UI_RULE = %.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_UPDATE = $(top_builddir)/intltool-update +INTLTOOL_XAM_RULE = %.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_XGETTEXT = /usr/bin/xgettext +INTLTOOL_XML_NOMERGE_RULE = %.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@ +INTLTOOL_XML_RULE = %.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +LDFLAGS = +LIBOBJS = +LIBS = +LTLIBOBJS = +MAINT = # +MAINTAINER_MODE_FALSE = +MAINTAINER_MODE_TRUE = # +MAKEINFO = ${SHELL} /tmp/3/update-manager-0.37.1+svn20050404.15/missing --run makeinfo +MKINSTALLDIRS = ./mkinstalldirs +MSGFMT = /usr/bin/msgfmt +OBJEXT = o +PACKAGE = update-manager +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +POFILES = da.po de.po el.po en_CA.po es.po fi.po fr.po hu.po ja.po pl.po pt_BR.po ro.po rw.po sv.po zh_CN.po xh.po +POSUB = po +PO_IN_DATADIR_FALSE = +PO_IN_DATADIR_TRUE = +SCROLLKEEPER_BUILD_REQUIRED = 0.3.5 +SCROLLKEEPER_CONFIG = /usr/bin/scrollkeeper-config +SET_MAKE = +SHELL = /bin/sh +STRIP = +USE_NLS = yes +VERSION = 0.37.2 +XGETTEXT = /usr/bin/xgettext +ac_ct_CC = gcc +ac_ct_STRIP = +am__fastdepCC_FALSE = +am__fastdepCC_TRUE = # +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build_alias = +datadir = ${prefix}/share +exec_prefix = ${prefix} +host_alias = +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /tmp/3/update-manager-0.37.1+svn20050404.15/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +mkdir_p = mkdir -p -- +oldincludedir = /usr/include +prefix = /tmp/lala +program_transform_name = s,x,x, +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target_alias = +modules_DATA = SimpleGladeApp.py DistInfo.py +modulesdir = $(datadir)/update-manager/python +EXTRA_DIST = $(modules_DATA) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Common/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Common/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +uninstall-info-am: +install-modulesDATA: $(modules_DATA) + @$(NORMAL_INSTALL) + test -z "$(modulesdir)" || $(mkdir_p) "$(DESTDIR)$(modulesdir)" + @list='$(modules_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(modulesDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(modulesdir)/$$f'"; \ + $(modulesDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(modulesdir)/$$f"; \ + done + +uninstall-modulesDATA: + @$(NORMAL_UNINSTALL) + @list='$(modules_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(modulesdir)/$$f'"; \ + rm -f "$(DESTDIR)$(modulesdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(modulesdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-modulesDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-modulesDATA + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-modulesDATA install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ + uninstall-am uninstall-info-am uninstall-modulesDATA + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Common/Makefile.am b/Common/Makefile.am new file mode 100644 index 00000000..e32500bd --- /dev/null +++ b/Common/Makefile.am @@ -0,0 +1,5 @@ +modules_DATA = SimpleGladeApp.py DistInfo.py +modulesdir = $(datadir)/update-manager/python + + +EXTRA_DIST = $(modules_DATA) diff --git a/Common/SimpleGladeApp.py b/Common/SimpleGladeApp.py new file mode 100644 index 00000000..90c598cc --- /dev/null +++ b/Common/SimpleGladeApp.py @@ -0,0 +1,341 @@ +""" + SimpleGladeApp.py + Module that provides an object oriented abstraction to pygtk and libglade. + Copyright (C) 2004 Sandino Flores Moreno +""" + +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import os +import sys +import re + +import tokenize +import gtk +import gtk.glade +import weakref +import inspect + +__version__ = "1.0" +__author__ = 'Sandino "tigrux" Flores-Moreno' + +def bindtextdomain(app_name, locale_dir=None): + """ + Bind the domain represented by app_name to the locale directory locale_dir. + It has the effect of loading translations, enabling applications for different + languages. + + app_name: + a domain to look for translations, tipically the name of an application. + + locale_dir: + a directory with locales like locale_dir/lang_isocode/LC_MESSAGES/app_name.mo + If omitted or None, then the current binding for app_name is used. + """ + try: + import locale + import gettext + locale.setlocale(locale.LC_ALL, "") + gtk.glade.bindtextdomain(app_name, locale_dir) + gettext.install(app_name, locale_dir, unicode=1) + except (IOError,locale.Error), e: + print "Warning", app_name, e + __builtins__.__dict__["_"] = lambda x : x + + +class SimpleGladeApp: + + def __init__(self, path, root=None, domain=None, **kwargs): + """ + Load a glade file specified by glade_filename, using root as + root widget and domain as the domain for translations. + + If it receives extra named arguments (argname=value), then they are used + as attributes of the instance. + + path: + path to a glade filename. + If glade_filename cannot be found, then it will be searched in the + same directory of the program (sys.argv[0]) + + root: + the name of the widget that is the root of the user interface, + usually a window or dialog (a top level widget). + If None or ommited, the full user interface is loaded. + + domain: + A domain to use for loading translations. + If None or ommited, no translation is loaded. + + **kwargs: + a dictionary representing the named extra arguments. + It is useful to set attributes of new instances, for example: + glade_app = SimpleGladeApp("ui.glade", foo="some value", bar="another value") + sets two attributes (foo and bar) to glade_app. + """ + if os.path.isfile(path): + self.glade_path = path + else: + glade_dir = os.path.dirname( sys.argv[0] ) + self.glade_path = os.path.join(glade_dir, path) + for key, value in kwargs.items(): + try: + setattr(self, key, weakref.proxy(value) ) + except TypeError: + setattr(self, key, value) + self.glade = None + self.install_custom_handler(self.custom_handler) + self.glade = self.create_glade(self.glade_path, root, domain) + if root: + self.main_widget = self.get_widget(root) + else: + self.main_widget = None + self.normalize_names() + self.add_callbacks(self) + self.new() + + def __repr__(self): + class_name = self.__class__.__name__ + if self.main_widget: + root = gtk.Widget.get_name(self.main_widget) + repr = '%s(path="%s", root="%s")' % (class_name, self.glade_path, root) + else: + repr = '%s(path="%s")' % (class_name, self.glade_path) + return repr + + def new(self): + """ + Method called when the user interface is loaded and ready to be used. + At this moment, the widgets are loaded and can be refered as self.widget_name + """ + pass + + def add_callbacks(self, callbacks_proxy): + """ + It uses the methods of callbacks_proxy as callbacks. + The callbacks are specified by using: + Properties window -> Signals tab + in glade-2 (or any other gui designer like gazpacho). + + Methods of classes inheriting from SimpleGladeApp are used as + callbacks automatically. + + callbacks_proxy: + an instance with methods as code of callbacks. + It means it has methods like on_button1_clicked, on_entry1_activate, etc. + """ + self.glade.signal_autoconnect(callbacks_proxy) + + def normalize_names(self): + """ + It is internally used to normalize the name of the widgets. + It means a widget named foo:vbox-dialog in glade + is refered self.vbox_dialog in the code. + + It also sets a data "prefixes" with the list of + prefixes a widget has for each widget. + """ + for widget in self.get_widgets(): + widget_name = gtk.Widget.get_name(widget) + prefixes_name_l = widget_name.split(":") + prefixes = prefixes_name_l[ : -1] + widget_api_name = prefixes_name_l[-1] + widget_api_name = "_".join( re.findall(tokenize.Name, widget_api_name) ) + gtk.Widget.set_name(widget, widget_api_name) + if hasattr(self, widget_api_name): + raise AttributeError("instance %s already has an attribute %s" % (self,widget_api_name)) + else: + setattr(self, widget_api_name, widget) + if prefixes: + gtk.Widget.set_data(widget, "prefixes", prefixes) + + def add_prefix_actions(self, prefix_actions_proxy): + """ + By using a gui designer (glade-2, gazpacho, etc) + widgets can have a prefix in theirs names + like foo:entry1 or foo:label3 + It means entry1 and label3 has a prefix action named foo. + + Then, prefix_actions_proxy must have a method named prefix_foo which + is called everytime a widget with prefix foo is found, using the found widget + as argument. + + prefix_actions_proxy: + An instance with methods as prefix actions. + It means it has methods like prefix_foo, prefix_bar, etc. + """ + prefix_s = "prefix_" + prefix_pos = len(prefix_s) + + is_method = lambda t : callable( t[1] ) + is_prefix_action = lambda t : t[0].startswith(prefix_s) + drop_prefix = lambda (k,w): (k[prefix_pos:],w) + + members_t = inspect.getmembers(prefix_actions_proxy) + methods_t = filter(is_method, members_t) + prefix_actions_t = filter(is_prefix_action, methods_t) + prefix_actions_d = dict( map(drop_prefix, prefix_actions_t) ) + + for widget in self.get_widgets(): + prefixes = gtk.Widget.get_data(widget, "prefixes") + if prefixes: + for prefix in prefixes: + if prefix in prefix_actions_d: + prefix_action = prefix_actions_d[prefix] + prefix_action(widget) + + def custom_handler(self, + glade, function_name, widget_name, + str1, str2, int1, int2): + """ + Generic handler for creating custom widgets, internally used to + enable custom widgets (custom widgets of glade). + + The custom widgets have a creation function specified in design time. + Those creation functions are always called with str1,str2,int1,int2 as + arguments, that are values specified in design time. + + Methods of classes inheriting from SimpleGladeApp are used as + creation functions automatically. + + If a custom widget has create_foo as creation function, then the + method named create_foo is called with str1,str2,int1,int2 as arguments. + """ + try: + handler = getattr(self, function_name) + return handler(str1, str2, int1, int2) + except AttributeError: + return None + + def gtk_widget_show(self, widget, *args): + """ + Predefined callback. + The widget is showed. + Equivalent to widget.show() + """ + widget.show() + + def gtk_widget_hide(self, widget, *args): + """ + Predefined callback. + The widget is hidden. + Equivalent to widget.hide() + """ + widget.hide() + + def gtk_widget_grab_focus(self, widget, *args): + """ + Predefined callback. + The widget grabs the focus. + Equivalent to widget.grab_focus() + """ + widget.grab_focus() + + def gtk_widget_destroy(self, widget, *args): + """ + Predefined callback. + The widget is destroyed. + Equivalent to widget.destroy() + """ + widget.destroy() + + def gtk_window_activate_default(self, window, *args): + """ + Predefined callback. + The default widget of the window is activated. + Equivalent to window.activate_default() + """ + widget.activate_default() + + def gtk_true(self, *args): + """ + Predefined callback. + Equivalent to return True in a callback. + Useful for stopping propagation of signals. + """ + return True + + def gtk_false(self, *args): + """ + Predefined callback. + Equivalent to return False in a callback. + """ + return False + + def gtk_main_quit(self, *args): + """ + Predefined callback. + Equivalent to self.quit() + """ + self.quit() + + def main(self): + """ + Starts the main loop of processing events. + The default implementation calls gtk.main() + + Useful for applications that needs a non gtk main loop. + For example, applications based on gstreamer needs to override + this method with gst.main() + + Do not directly call this method in your programs. + Use the method run() instead. + """ + gtk.main() + + def quit(self): + """ + Quit processing events. + The default implementation calls gtk.main_quit() + + Useful for applications that needs a non gtk main loop. + For example, applications based on gstreamer needs to override + this method with gst.main_quit() + """ + gtk.main_quit() + + def run(self): + """ + Starts the main loop of processing events checking for Control-C. + + The default implementation checks wheter a Control-C is pressed, + then calls on_keyboard_interrupt(). + + Use this method for starting programs. + """ + try: + self.main() + except KeyboardInterrupt: + self.on_keyboard_interrupt() + + def on_keyboard_interrupt(self): + """ + This method is called by the default implementation of run() + after a program is finished by pressing Control-C. + """ + pass + + def install_custom_handler(self, custom_handler): + gtk.glade.set_custom_handler(custom_handler) + + def create_glade(self, glade_path, root, domain): + return gtk.glade.XML(self.glade_path, root, domain) + + def get_widget(self, widget_name): + return self.glade.get_widget(widget_name) + + def get_widgets(self): + return self.glade.get_widget_prefix("") diff --git a/INSTALL b/INSTALL new file mode 100644 index 00000000..54caf7c1 --- /dev/null +++ b/INSTALL @@ -0,0 +1,229 @@ +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software +Foundation, Inc. + + This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 00000000..f749ea63 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,17 @@ +SUBDIRS = Common SoftwareProperties src po data help + +DIST_SUBDIRS = po src data help + +exedir = $(prefix)/bin +exe_SCRIPTS = gnome-software-properties # \ + # update-manager + +EXTRA_DIST = intltool-extract.in intltool-update.in intltool-merge.in \ + debian \ + po/update-manager.pot \ + gnome-software-properties.in # \ + update-manager.in + + + +#CLEANFILES=intltool-extract.in intltool-update.in intltool-merge.in @@ -0,0 +1,7 @@ +Update Manager for apt +---------------------- + +This is an application which lets you manage updates available for your +computer via apt and python-apt. + +Michiel Sikkes diff --git a/SoftwareProperties/Makefile b/SoftwareProperties/Makefile new file mode 100644 index 00000000..1ecefbd9 --- /dev/null +++ b/SoftwareProperties/Makefile @@ -0,0 +1,359 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# SoftwareProperties/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +srcdir = . +top_srcdir = .. + +pkgdatadir = $(datadir)/update-manager +pkglibdir = $(libdir)/update-manager +pkgincludedir = $(includedir)/update-manager +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /usr/bin/install -c +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = SoftwareProperties +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/SoftwareProperties.py.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = SoftwareProperties.py +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(modulesdir)" +modulesDATA_INSTALL = $(INSTALL_DATA) +DATA = $(modules_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /tmp/3/update-manager-0.37.1+svn20050404.15/missing --run aclocal-1.9 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /tmp/3/update-manager-0.37.1+svn20050404.15/missing --run tar +AUTOCONF = ${SHELL} /tmp/3/update-manager-0.37.1+svn20050404.15/missing --run autoconf +AUTOHEADER = ${SHELL} /tmp/3/update-manager-0.37.1+svn20050404.15/missing --run autoheader +AUTOMAKE = ${SHELL} /tmp/3/update-manager-0.37.1+svn20050404.15/missing --run automake-1.9 +AWK = gawk +CATALOGS = da.gmo de.gmo el.gmo en_CA.gmo es.gmo fi.gmo fr.gmo hu.gmo ja.gmo pl.gmo pt_BR.gmo ro.gmo rw.gmo sv.gmo zh_CN.gmo xh.gmo +CATOBJEXT = .gmo +CC = gcc +CCDEPMODE = depmode=none +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATADIRNAME = share +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = grep -E +EXEEXT = +GETTEXT_PACKAGE = update-manager +GMOFILES = da.gmo de.gmo el.gmo en_CA.gmo es.gmo fi.gmo fr.gmo hu.gmo ja.gmo pl.gmo pt_BR.gmo ro.gmo rw.gmo sv.gmo zh_CN.gmo xh.gmo +GMSGFMT = /usr/bin/msgfmt +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +INSTOBJEXT = .mo +INTLLIBS = +INTLTOOL_CAVES_RULE = %.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_DESKTOP_RULE = %.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_DIRECTORY_RULE = %.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_EXTRACT = $(top_builddir)/intltool-extract +INTLTOOL_ICONV = /usr/bin/iconv +INTLTOOL_KBD_RULE = %.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_KEYS_RULE = %.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_MERGE = $(top_builddir)/intltool-merge +INTLTOOL_MSGFMT = /usr/bin/msgfmt +INTLTOOL_MSGMERGE = /usr/bin/msgmerge +INTLTOOL_OAF_RULE = %.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@ +INTLTOOL_PERL = /usr/bin/perl +INTLTOOL_PONG_RULE = %.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_PROP_RULE = %.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_SCHEMAS_RULE = %.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_SERVER_RULE = %.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_SHEET_RULE = %.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_SOUNDLIST_RULE = %.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_THEME_RULE = %.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_UI_RULE = %.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_UPDATE = $(top_builddir)/intltool-update +INTLTOOL_XAM_RULE = %.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +INTLTOOL_XGETTEXT = /usr/bin/xgettext +INTLTOOL_XML_NOMERGE_RULE = %.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@ +INTLTOOL_XML_RULE = %.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ +LDFLAGS = +LIBOBJS = +LIBS = +LTLIBOBJS = +MAINT = # +MAINTAINER_MODE_FALSE = +MAINTAINER_MODE_TRUE = # +MAKEINFO = ${SHELL} /tmp/3/update-manager-0.37.1+svn20050404.15/missing --run makeinfo +MKINSTALLDIRS = ./mkinstalldirs +MSGFMT = /usr/bin/msgfmt +OBJEXT = o +PACKAGE = update-manager +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +POFILES = da.po de.po el.po en_CA.po es.po fi.po fr.po hu.po ja.po pl.po pt_BR.po ro.po rw.po sv.po zh_CN.po xh.po +POSUB = po +PO_IN_DATADIR_FALSE = +PO_IN_DATADIR_TRUE = +SCROLLKEEPER_BUILD_REQUIRED = 0.3.5 +SCROLLKEEPER_CONFIG = /usr/bin/scrollkeeper-config +SET_MAKE = +SHELL = /bin/sh +STRIP = +USE_NLS = yes +VERSION = 0.37.2 +XGETTEXT = /usr/bin/xgettext +ac_ct_CC = gcc +ac_ct_STRIP = +am__fastdepCC_FALSE = +am__fastdepCC_TRUE = # +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build_alias = +datadir = ${prefix}/share +exec_prefix = ${prefix} +host_alias = +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /tmp/3/update-manager-0.37.1+svn20050404.15/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +mkdir_p = mkdir -p -- +oldincludedir = /usr/include +prefix = /tmp/lala +program_transform_name = s,x,x, +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target_alias = +modules_DATA = SoftwareProperties.py \ + dialog_edit.py \ + dialog_add.py \ + dialog_apt_key.py \ + utils.py \ + aptsources.py + +modulesdir = $(datadir)/update-manager/python +EXTRA_DIST = $(modules_DATA) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu SoftwareProperties/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu SoftwareProperties/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +SoftwareProperties.py: $(top_builddir)/config.status $(srcdir)/SoftwareProperties.py.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +uninstall-info-am: +install-modulesDATA: $(modules_DATA) + @$(NORMAL_INSTALL) + test -z "$(modulesdir)" || $(mkdir_p) "$(DESTDIR)$(modulesdir)" + @list='$(modules_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(modulesDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(modulesdir)/$$f'"; \ + $(modulesDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(modulesdir)/$$f"; \ + done + +uninstall-modulesDATA: + @$(NORMAL_UNINSTALL) + @list='$(modules_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(modulesdir)/$$f'"; \ + rm -f "$(DESTDIR)$(modulesdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(modulesdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-modulesDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-modulesDATA + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-modulesDATA install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ + uninstall-am uninstall-info-am uninstall-modulesDATA + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/SoftwareProperties/Makefile.am b/SoftwareProperties/Makefile.am new file mode 100644 index 00000000..e160d621 --- /dev/null +++ b/SoftwareProperties/Makefile.am @@ -0,0 +1,9 @@ +modules_DATA = SoftwareProperties.py \ + dialog_edit.py \ + dialog_add.py \ + dialog_apt_key.py \ + utils.py \ + aptsources.py +modulesdir = $(datadir)/update-manager/python + +EXTRA_DIST = $(modules_DATA) diff --git a/SoftwareProperties/SoftwareProperties.py.in b/SoftwareProperties/SoftwareProperties.py.in new file mode 100644 index 00000000..ce8d6b6f --- /dev/null +++ b/SoftwareProperties/SoftwareProperties.py.in @@ -0,0 +1,259 @@ +#!/usr/bin/env python +# gnome-software-properties.in - edit /etc/apt/sources.list +# +# Copyright (c) 2004 Canonical +# 2004-2005 Michiel Sikkes +# +# Author: Michiel Sikkes <michiel@eyesopened.nl> +# Michael Vogt <mvo@debian.org> +# +# 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 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import sys +import gnome +import gconf +import apt_pkg +import gobject +import shutil +import gettext + +sys.path.append("@prefix/share/update-manager/python") + +from SimpleGladeApp import * +import aptsources +import dialog_add +import dialog_edit +from dialog_apt_key import apt_key +from utils import * + +(LIST_MARKUP, LIST_ENABLED, LIST_ENTRY_OBJ) = range(3) + +CONF_MAP = { + "autoupdate" : "APT::Periodic::Update-Package-Lists", + "autodownload" : "APT::Periodic::Download-Upgradeable-Packages", + "autoclean" : "APT::Periodic::AutocleanInterval", + "max_size" : "APT::Archives::MaxSize", + "max_age" : "APT::Archives::MaxAge" +} + +DATADIR = "@prefix@/share/update-manager" + + +class SoftwareProperties(SimpleGladeApp): + + def __init__(self, gladefile, root, domain, options): + SimpleGladeApp.__init__(self, gladefile, None, domain) + apt_pkg.InitConfig() + + self.modified = False + + _ = gettext.gettext + + self.gnome_program = gnome.init("Software Properties", "0.41") + self.gconfclient = gconf.client_get_default() + + # Get some configuration options + self.show_disabled = self.gconfclient.get_bool("/apps/gnome-software-" \ + "properties/show_disabled") + + self.window_main.hide() + + # If externally called, reparent to external application. + if (options.socket != None): + plug = gtk.Plug(long(options.socket)) + self.vbox1.reparent(plug) + plug.show_all() + else: + self.window_main.show() + + self.init_sourceslist() + self.reload_sourceslist() + + update_days = apt_pkg.Config.FindI(CONF_MAP["autoupdate"]) + + self.spinbutton_update_interval.set_value(update_days) + + if update_days >= 1: + self.checkbutton_auto_update.set_active(True) + else: + self.checkbutton_auto_update.set_active(False) + + self.apt_key = apt_key() + + self.init_keyslist() + self.reload_keyslist() + + def init_sourceslist(self): + self.source_store = gtk.ListStore(str, bool, gobject.TYPE_PYOBJECT) + self.treeview1.set_model(self.source_store) + + tr = gtk.CellRendererText() + + source_col = gtk.TreeViewColumn("Description", tr, markup=LIST_MARKUP) + source_col.set_max_width(500) + self.treeview1.append_column(source_col) + + self.sourceslist = aptsources.SourcesList() + self.matcher = aptsources.SourceEntryMatcher() + + def init_keyslist(self): + self.keys_store = gtk.ListStore(str) + self.treeview2.set_model(self.keys_store) + + tr = gtk.CellRendererText() + + keys_col = gtk.TreeViewColumn("Key", tr, text=0) + self.treeview2.append_column(keys_col) + + def reload_sourceslist(self): + self.source_store.clear() + for source in self.sourceslist.list: + if source.invalid or source.disabled: + continue + (a_type, dists, comps) = self.matcher.match(source) + + contents = "" + if source.comment != "": + contents += "<i>%s</i>\n\n" % (source.comment) + contents += "%s <small>(%s)</small>" % (dists, a_type) + + self.source_store.append([contents, not source.disabled, source]) + + def reload_keyslist(self): + self.keys_store.clear() + for key in self.apt_key.list(): + self.keys_store.append([key]) + + def opt_autoupdate_toggled(self, widget): + if self.checkbutton_auto_update.get_active(): + if self.spinbutton_update_interval.get_value() == 0: + self.spinbutton_update_interval.set_value(1) + value = "1" + else: + value = str(self.spinbutton_update_interval.get_value()) + else: + value = "0" + + apt_pkg.Config.Set(CONF_MAP["autoupdate"], str(value)) + + # FIXME: Write config options, apt_pkg should be able to do this. + self.write_config() + + def write_config(self): + periodic = "/etc/apt/apt.conf.d/10periodic" + + content = [] + + if os.path.isfile(periodic): + content = open(periodic, "r").readlines() + + cnf = apt_pkg.Config.SubTree("APT::Periodic") + + f = open(periodic, "w+") + for line in content: + found = False + for key in cnf.List(): + if line.find("APT::Periodic::%s" % (key)) >= 0: + found = True + break + if not found: + f.write(line) + + for i in cnf.List(): + f.write("APT::Periodic::%s \"%s\";\n" % (i, cnf.FindI(i))) + f.close() + + def save_sourceslist(self): + location = "/etc/apt/sources.list" + shutil.copy(location, location + ".save") + self.sourceslist.save(location) + + def on_add_clicked(self, widget): + dialog = dialog_add.dialog_add(self.window_main, self.sourceslist, DATADIR) + if dialog.run() == gtk.RESPONSE_OK: + self.reload_sourceslist() + + self.modified = True + + def on_edit_clicked(self, widget): + sel = self.treeview1.get_selection() + (model, iter) = sel.get_selected() + source_entry = model.get_value(iter, LIST_ENTRY_OBJ) + + dialog = dialog_edit.dialog_edit(self.window_main, self.sourceslist, + source_entry, DATADIR) + + if dialog.run() == gtk.RESPONSE_OK: + self.reload_sourceslist() + + self.modified = True + + def on_remove_clicked(self, widget): + sel = self.treeview1.get_selection() + (model, iter) = sel.get_selected() + + if iter: + source = model.get_value(iter, LIST_ENTRY_OBJ) + self.sourceslist.remove(source) + self.reload_sourceslist() + + self.modified = True + + def add_key_clicked(self, widget): + _ = gettext.gettext + chooser = gtk.FileChooserDialog(title=_("Choose a key-file"), + parent=self.window_main, + buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_REJECT, + gtk.STOCK_OK,gtk.RESPONSE_ACCEPT)) + res = chooser.run() + chooser.hide() + if res == gtk.RESPONSE_ACCEPT: + if not self.apt_key.add(chooser.get_filename()): + error(self.window_main, + _("Error importing selected file"), + _("The selected file may not be a GPG key file " \ + "or it might be corrupt.")) + self.reload_keyslist() + + def remove_key_clicked(self, widget): + selection = self.treeview2.get_selection() + (model,a_iter) = selection.get_selected() + if a_iter == None: + return + key = model.get_value(a_iter,0) + if not self.apt_key.rm(key[:8]): + error(self.main, + _("Error removing the key"), + _("The key you selected could not be removed. " + "Please report this as a bug.")) + self.reload_keyslist() + + def on_restore_clicked(self, widget): + self.apt_key.update() + self.reload_keyslist() + + def on_delete_event(self, widget, args): + self.save_sourceslist() + self.quit() + + def on_close_button(self, widget): + self.save_sourceslist() + self.quit() + + def on_help_button(self, widget): + gnome.help_display_desktop(self.gnome_program, + "update-manager", "update-manager", + "setting-preferences") diff --git a/SoftwareProperties/aptsources.py b/SoftwareProperties/aptsources.py new file mode 100644 index 00000000..f86ade98 --- /dev/null +++ b/SoftwareProperties/aptsources.py @@ -0,0 +1,437 @@ +# aptsource.py.in - parse sources.list +# +# Copyright (c) 2004 Canonical +# 2004 Michiel Sikkes +# +# Author: Michiel Sikkes <michiel@eyesopened.nl> +# Michael Vogt <mvo@debian.org> +# +# 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 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import string +import gettext +import re +import apt_pkg +import glob + +from DistInfo import DistInfo + +# actual source.list entries +class SourceEntry: + + def __init__(self, line,file): + self.invalid = False + self.disabled = False + self.type = "" + self.uri = "" + self.dist = "" + self.comps = [] + self.comment = "" + self.line = line + self.file = file + self.parse(line) + + # works mostely like split but takes [] into account + def mysplit(self, line): + line = string.strip(line) + pieces = [] + tmp = "" + # we are inside a [..] block + p_found = False + space_found = False + for i in range(len(line)): + if line[i] == "[": + p_found=True + tmp += line[i] + elif line[i] == "]": + p_found=False + tmp += line[i] + elif space_found and not line[i].isspace(): # we skip one or more space + space_found = False + pieces.append(tmp) + tmp = line[i] + elif line[i].isspace() and not p_found: # found a whitespace + space_found = True + else: + tmp += line[i] + # append last piece + if len(tmp) > 0: + pieces.append(tmp) + return pieces + + + # parse a given source line and split it into the fields we need + def parse(self,line): + line = string.strip(self.line) + #print line + # check if the source is enabled/disabled + if line == "" or line == "#": # empty line + self.invalid = True + return + if line[0] == "#": + self.disabled = True + pieces = string.split(line[1:]) + # if it looks not like a disabled deb line return + if not (pieces[0] == "deb" or pieces[0] == "deb-src"): + self.invalid = True + return + else: + line = line[1:] + # check for another "#" in the line (this is treated as a comment) + i = line.find("#") + if i > 0: + self.comment = line[i+1:] + line = line[:i] + # source is ok, split it and see what we have + pieces = self.mysplit(line) + # Type, deb or deb-src + self.type = string.strip(pieces[0]) + # URI + self.uri = string.strip(pieces[1]) + # distro and components (optional) + # Directory or distro + self.dist = string.strip(pieces[2]) + if len(pieces) > 3: + # List of components + self.comps = pieces[3:] + else: + self.comps = [] + + #print self.__dict__ + + + # set enabled/disabled + def set_enabled(self, new_value): + self.disabled = not new_value + # enable, remove all "#" from the start of the line + if new_value == True: + i=0 + self.line = string.lstrip(self.line) + while self.line[i] == "#": + i += 1 + self.line = self.line[i:] + else: + # disabled, add a "#" + if string.strip(self.line)[0] != "#": + self.line = "#" + self.line + + def str(self): + return self.line + + +def uniq(s): + """ simple (and not efficient) way to return uniq list """ + u = [] + for x in s: + if x not in u: + u.append(x) + return u + + +# the SourceList file as a class +class SourcesList: + def __init__(self): + self.list = [] # of Type SourceEntries + # read sources.list + dir = apt_pkg.Config.FindDir("Dir::Etc") + file = apt_pkg.Config.Find("Dir::Etc::sourcelist") + self.load(dir+file) + # read sources.list.d + partsdir = apt_pkg.Config.FindDir("Dir::Etc::sourceparts") + for file in glob.glob("%s/*.list" % partsdir): + self.load(file) + + def is_mirror(self, add_uri, orig_uri): + """check if the given add_url is idential or a mirror of orig_uri + e.g. add_uri = archive.ubuntu.com + orig_uri = de.archive.ubuntu.com + -> True + """ + # remove traling spaces and "/" + add_uri = add_uri.rstrip("/ ") + orig_uri = orig_uri.rstrip("/ ") + # uri is identical + if add_uri == orig_uri: + #print "Identical" + return True + # add uri is a master site and orig_uri has the from "XX.mastersite" + # (e.g. de.archive.ubuntu.com) + try: + add_srv = add_uri.split("//")[1] + orig_srv = orig_uri.split("//")[1] + #print "%s == %s " % (add_srv, orig_srv) + except IndexError: # ok, somethings wrong here + #print "IndexError" + return False + if add_srv == orig_srv[3:]: + #print "Mirror" + return True + return False + + def add(self, type, uri, dist, comps, comment="", pos=-1): + # if there is a repo with the same (type, uri, dist) just add the + # components + for i in self.list: + if i.type == type and self.is_mirror(uri,i.uri) and i.dist == dist: + comps = uniq(i.comps + comps) + # set to the old position and preserve comment + comment = i.comment + pos = self.list.index(i) + self.list.remove(i) + line = "%s %s %s" % (type,uri,dist) + for c in comps: + line = line + " " + c; + if comment != "": + line = "%s #%s\n" %(line,comment) + line = line + "\n" + self.list.insert(pos, SourceEntry(line)) + + def remove(self, source_entry): + self.list.remove(source_entry) + + def load(self,file): + f = open(file, "r") + lines = f.readlines() + for line in lines: + source = SourceEntry(line,file) + self.list.append(source) + f.close() + + def save(self,file): + files = {} + for source in self.list: + if not files.has_key(source.file): + files[source.file]=open(source.file,"w") + files[source.file].write(source.str()) + for f in files: + files[f].close() + + +# templates for the add dialog +class SourceEntryTemplate(SourceEntry): + def __init__(self,a_type,uri,dist,description,comps): + self.comps = [] + self.comps_descriptions = [] + self.type = a_type + self.uri = uri + self.dist = dist + self.description = description + self.comps = comps + +class SourceCompTemplate: + def __init__(self, name, description, on_by_default): + self.name = name + self.description = description + self.on_by_default = on_by_default + +class SourceEntryTemplates: + def __init__(self): + _ = gettext.gettext + self.templates = [] + + dinfo = DistInfo () + + for suite in dinfo.suites: + comps = [] + for comp in suite.components: + comps.append(SourceCompTemplate(comp.name, _(comp.description), + comp.enabled)) + self.templates.append (SourceEntryTemplate(suite.repository_type, + suite.base_uri, + suite.name, + suite.description, + comps)) + +# matcher class to make a source entry look nice +# lots of predefined matchers to make it i18n/gettext friendly +class SourceEntryMatcher: + class MatchType: + def __init__(self, a_type,a_descr): + self.type = a_type + self.description = a_descr + + class MatchDist: + def __init__(self,a_uri,a_dist, a_descr,l_comps, l_comps_descr): + self.uri = a_uri + self.dist = a_dist + self.description = a_descr + self.comps = l_comps + self.comps_descriptions = l_comps_descr + + def __init__(self): + _ = gettext.gettext + self.type_list = [] + self.type_list.append(self.MatchType("^deb$",_("Binary"))) + self.type_list.append(self.MatchType("^deb-src$",_("Source"))) + + self.dist_list = [] + + ubuntu_comps = ["^main$","^restricted$","^universe$","^multiverse$"] + ubuntu_comps_descr = [_("Officially supported"), + _("Restricted copyright"), + _("Community maintained (Universe)"), + _("Non-free (Multiverse)")] + # CDs + self.dist_list.append(self.MatchDist("cdrom:\[Ubuntu.*5.10", + ".*", + _("CD disk with Ubuntu 5.10 \"Breezy Badger\""), + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist("cdrom:\[Ubuntu.*5.04", + ".*", + _("CD disk with Ubuntu 5.04 \"Hoary Hedgehog\""), + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist("cdrom:\[Ubuntu.*4.10", + ".*", + _("CD disk with Ubuntu 4.10 \"Warty Warthog\""), + ubuntu_comps, ubuntu_comps_descr)) + # URIs + # Warty + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^warty$", + "Ubuntu 4.10 \"Warty Warthog\"", + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*security.ubuntu.com/ubuntu", + "^warty-security$", + _("Ubuntu 4.10 Security Updates"), + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^warty-security$", + _("Ubuntu 4.10 Security Updates"), + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^warty-updates$", + _("Ubuntu 4.10 Updates"), + ubuntu_comps, ubuntu_comps_descr)) + # Hoary + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^hoary-security$", + _("Ubuntu 5.04 Security Updates"), + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*security.ubuntu.com/ubuntu", + "^hoary-security$", + _("Ubuntu 5.04 Security Updates"), + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^hoary$", + "Ubuntu 5.04 \"Hoary Hedgehog\"", + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^hoary-updates$", + _("Ubuntu 5.04 Updates"), + ubuntu_comps, ubuntu_comps_descr)) + # Breezy + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^breezy-security$", + _("Ubuntu 5.10 Security Updates"), + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*security.ubuntu.com/ubuntu", + "^breezy-security$", + _("Ubuntu 5.10 Security Updates"), + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^breezy$", + "Ubuntu 5.10 \"Breezy Badger\"", + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^breezy-updates$", + _("Ubuntu 5.10 Updates"), + ubuntu_comps, ubuntu_comps_descr)) + + + # DEBIAN + debian_comps = ["^main$","^contrib$","^non-free$","^non-US$"] + debian_comps_descr = [_("Officially supported"), + _("Contributed software"), + _("Non-free software"), + _("US export restricted software") + ] + + # dists by name + self.dist_list.append(self.MatchDist(".*debian.org/debian", + "^sarge$", + _("Debian 3.1 \"Sarge\""), + debian_comps, debian_comps_descr)) + self.dist_list.append(self.MatchDist(".*debian.org/debian", + "^woody$", + _("Debian 3.0 \"Woody\""), + debian_comps, debian_comps_descr)) + # securtiy + self.dist_list.append(self.MatchDist(".*security.debian.org", + "^stable.*$", + _("Debian Stable Security Updates"), + debian_comps, debian_comps_descr)) + # dists by status + self.dist_list.append(self.MatchDist(".*debian.org/debian", + "^stable$", + _("Debian Stable"), + debian_comps, debian_comps_descr)) + self.dist_list.append(self.MatchDist(".*debian.org/debian", + "^testing$", + _("Debian Testing"), + debian_comps, debian_comps_descr)) + self.dist_list.append(self.MatchDist(".*debian.org/debian", + "^unstable$", + _("Debian Unstable \"Sid\""), + debian_comps, debian_comps_descr)) + + # non-us + self.dist_list.append(self.MatchDist(".*debian.org/debian-non-US", + "^stable.*$", + _("Debian Non-US (Stable)"), + debian_comps, debian_comps_descr)) + self.dist_list.append(self.MatchDist(".*debian.org/debian-non-US", + "^testing.*$", + _("Debian Non-US (Testing)"), + debian_comps, debian_comps_descr)) + self.dist_list.append(self.MatchDist(".*debian.org/debian-non-US", + "^unstable.*$", + _("Debian Non-US (Unstable)"), + debian_comps, debian_comps_descr)) + + + + + def match(self,source): + _ = gettext.gettext + # some sane defaults first + type_description = source.type + dist_description = source.uri + " " + source.dist + comp_description = "" + for c in source.comps: + comp_description = comp_description + " " + c + + for t in self.type_list: + if re.match(t.type, source.type): + type_description = _(t.description) + break + + for d in self.dist_list: + #print "'%s'" %source.uri + if re.match(d.uri, source.uri) and re.match(d.dist,source.dist): + dist_description = d.description + comp_description = "" + for c in source.comps: + found = False + for i in range(len(d.comps)): + if re.match(d.comps[i], c): + comp_description = comp_description+"\n"+d.comps_descriptions[i] + found = True + if found == False: + comp_description = comp_description+" "+c + break + + + return (type_description,dist_description,comp_description) diff --git a/SoftwareProperties/dialog_add.py b/SoftwareProperties/dialog_add.py new file mode 100644 index 00000000..70accfaf --- /dev/null +++ b/SoftwareProperties/dialog_add.py @@ -0,0 +1,111 @@ +# dialog_add.py.in - dialog to add a new repository +# +# Copyright (c) 2004 Canonical +# 2005 Michiel Sikkes +# +# Authors: +# Michael Vogt <mvo@debian.org> +# Michiel Sikkes <michiels@gnome.org> +# +# 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 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import os +import gobject +import gtk +import gtk.glade + +import aptsources + +class dialog_add: + def __init__(self, parent, sourceslist, datadir): + print datadir + self.sourceslist = sourceslist + + # templates + self.templatelist = aptsources.SourceEntryTemplates() + + # gtk stuff + if os.path.exists("../data/SoftwarePropertiesDialogs.glade"): + self.gladexml = gtk.glade.XML("../data/SoftwarePropertiesDialogs.glade") + else: + self.gladexml = gtk.glade.XML("%s/SoftwarePropertiesDialogs.glade" % datadir) + + self.main = widget = self.gladexml.get_widget("dialog_add") + self.main.set_transient_for(parent) + + combo = self.gladexml.get_widget("combobox_what") + self.gladexml.signal_connect("on_combobox_what_changed", self.on_combobox_what_changed, None) + # combox box needs + cell = gtk.CellRendererText() + combo.pack_start(cell, True) + combo.add_attribute(cell, 'text', 0) + self.fill_combo(combo) + self.gladexml.signal_connect("on_button_custom_clicked", + self.on_button_custom_clicked, None) + + + def fill_combo(self,combo): + liststore = gtk.ListStore(gobject.TYPE_STRING,gobject.TYPE_PYOBJECT) + for item in self.templatelist.templates: + liststore.append((item.description, item)) + combo.set_model(liststore) + combo.set_active(0) + + def on_combobox_what_changed(self, combobox, user): + #print "on_combobox_what_changed" + vbox = self.gladexml.get_widget("vbox_comps") + vbox.foreach(lambda widget,vbox: vbox.remove(widget), vbox) + liststore = combobox.get_model() + a_iter = liststore.iter_nth_child(None, combobox.get_active()) + (name, template) = liststore.get(a_iter, 0,1) + self.selected = template + comps = template.comps + for c in comps: + checkbox = gtk.CheckButton(c.description) + checkbox.set_active(c.on_by_default) + checkbox.set_data("name",c.name) + vbox.pack_start(checkbox) + checkbox.show() + + def on_button_custom_clicked(self, widget, data): + #print "on_button_custom_clicked()" + # this hide here is ugly :/ + self.main.hide() + dialog = self.gladexml.get_widget("dialog_add_custom") + res = dialog.run() + dialog.hide() + entry = self.gladexml.get_widget("entry_source_line") + line = entry.get_text() + "\n" + self.sourceslist.list.append(aptsources.SourceEntry(line)) + self.main.response(res) + + def get_enabled_comps(self, checkbutton): + if checkbutton.get_active(): + self.selected_comps.append(checkbutton.get_data("name")) + + def run(self): + res = self.main.run() + if res == gtk.RESPONSE_OK: + # add repository + self.selected_comps = [] + vbox = self.gladexml.get_widget("vbox_comps") + vbox.foreach(self.get_enabled_comps) + self.sourceslist.add(self.selected.type, + self.selected.uri, + self.selected.dist, + self.selected_comps) + self.main.hide() + return res diff --git a/SoftwareProperties/dialog_apt_key.py b/SoftwareProperties/dialog_apt_key.py new file mode 100644 index 00000000..67aa60ce --- /dev/null +++ b/SoftwareProperties/dialog_apt_key.py @@ -0,0 +1,163 @@ +# dialog_apt_key.py.in - edit the apt keys +# +# Copyright (c) 2004 Canonical +# +# Author: Michael Vogt <mvo@debian.org> +# +# 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 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import os +import gobject +import gtk +import gtk.glade +import subprocess +import gettext +from utils import * +from subprocess import PIPE + +# gettext convenient +_ = gettext.gettext +def dummy(e): return e +N_ = dummy + +# some known keys +N_("Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>") +N_("Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>") + +class apt_key: + def __init__(self): + self.gpg = ["/usr/bin/gpg"] + self.base_opt = self.gpg + ["--no-options", "--no-default-keyring", + "--secret-keyring", "/etc/apt/secring.gpg", + "--trustdb-name", "/etc/apt/trustdb.gpg", + "--keyring", "/etc/apt/trusted.gpg"] + self.list_opt = self.base_opt + ["--with-colons", "--batch", + "--list-keys"] + self.rm_opt = self.base_opt + ["--quiet", "--batch", + "--delete-key", "--yes"] + self.add_opt = self.base_opt + ["--quiet", "--batch", + "--import"] + + + def list(self): + res = [] + #print self.list_opt + p = subprocess.Popen(self.list_opt,stdout=PIPE).stdout + for line in p.readlines(): + fields = line.split(":") + if fields[0] == "pub": + name = fields[9] + res.append("%s %s\n%s" %((fields[4])[-8:],fields[5], _(name))) + return res + + def add(self, filename): + #print "request to add " + filename + cmd = self.add_opt[:] + cmd.append(filename) + p = subprocess.Popen(cmd) + return (p.wait() == 0) + + def update(self): + cmd = ["/usr/bin/apt-key", "update"] + p = subprocess.Popen(cmd) + return (p.wait() == 0) + + def rm(self, key): + #print "request to remove " + key + cmd = self.rm_opt[:] + cmd.append(key) + p = subprocess.Popen(cmd) + return (p.wait() == 0) + +class dialog_apt_key: + def __init__(self, parent, datadir): + # gtk stuff + if os.path.exists("../data/SoftwarePropertiesDialogs.glade"): + self.gladexml = gtk.glade.XML("../data/SoftwarePropertiesDialogs.glade") + else: + self.gladexml = gtk.glade.XML("%s/SoftwarePropertiesDialogs.glade", datadir) + self.main = self.gladexml.get_widget("dialog_apt_key") + self.main.set_transient_for(parent) + + self.gladexml.signal_connect("on_button_key_add_clicked", + self.on_button_key_add_clicked) + self.gladexml.signal_connect("on_button_key_remove_clicked", + self.on_button_key_remove_clicked) + self.gladexml.signal_connect("on_button_apt_key_update_clicked", + self.on_button_apt_key_update_clicked) + + # create apt-key object (abstraction for the apt-key command) + self.apt_key = apt_key() + + # get some widgets + self.treeview_apt_key = self.gladexml.get_widget("treeview_apt_key") + self.liststore_apt_key = gtk.ListStore(str) + self.treeview_apt_key.set_model(self.liststore_apt_key) + # Create columns and append them. + tr = gtk.CellRendererText() + tr.set_property("xpad", 10) + tr.set_property("ypad", 10) + c0 = gtk.TreeViewColumn("Key", tr, text=0) + self.treeview_apt_key.append_column(c0) + self.update_key_list() + + def on_button_apt_key_update_clicked(self, widget): + self.apt_key.update() + self.update_key_list() + + def on_button_key_add_clicked(self, widget): + chooser = gtk.FileChooserDialog(title=_("Choose a key-file"), + parent=self.main, + buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_REJECT, + gtk.STOCK_OK,gtk.RESPONSE_ACCEPT)) + res = chooser.run() + chooser.hide() + if res == gtk.RESPONSE_ACCEPT: + #print chooser.get_filename() + if not self.apt_key.add(chooser.get_filename()): + dialog_error(self.main, + _("Error importing selected file"), + _("The selected file may not be a GPG key file " + "or it might be corrupt.")) + self.update_key_list() + + def on_button_key_remove_clicked(self, widget): + selection = self.treeview_apt_key.get_selection() + (model,a_iter) = selection.get_selected() + if a_iter == None: + return + key = model.get_value(a_iter,0) + if not self.apt_key.rm(key[:8]): + error(self.main, + _("Error removing the key"), + _("The key you selected could not be removed. " + "Please report this as a bug.")) + self.update_key_list() + + def update_key_list(self): + self.liststore_apt_key.clear() + for key in self.apt_key.list(): + self.liststore_apt_key.append([key]) + + def run(self): + res = self.main.run() + self.main.hide() + + +if __name__ == "__main__": + ui = dialog_apt_key(None) + ui.run() + diff --git a/SoftwareProperties/dialog_edit.py b/SoftwareProperties/dialog_edit.py new file mode 100644 index 00000000..32e6ac0c --- /dev/null +++ b/SoftwareProperties/dialog_edit.py @@ -0,0 +1,106 @@ +# dialog_edit.py.in - edit a existing repository +# +# Copyright (c) 2004 Canonical +# 2005 Michiel Sikkes +# +# Authors: +# Michael Vogt <mvo@debian.org> +# Michiel Sikkes <michiels@gnome.org> +# +# 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 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import os +import gobject +import gtk +import gtk.glade + +import aptsources + +class dialog_edit: + def __init__(self, parent, sourceslist, source_entry, datadir): + self.sourceslist = sourceslist + self.source_entry = source_entry + + # gtk stuff + if os.path.exists("../data/SoftwarePropertiesDialogs.glade"): + self.gladexml = gtk.glade.XML("../data/SoftwarePropertiesDialogs.glade") + else: + self.gladexml = gtk.glade.XML("%s/SoftwarePropertiesDialogs.glade" % datadir) + self.main = self.gladexml.get_widget("dialog_edit") + self.main.set_transient_for(parent) + + # type + combo_type = self.gladexml.get_widget("combobox_type") + if source_entry.type == "deb": + combo_type.set_active(0) + elif source_entry.type == "deb-src": + combo_type.set_active(1) + else: + print "Error, unknown source type: '%s'" % source_enrty.type + + # uri + entry = self.gladexml.get_widget("entry_uri") + entry.set_text(source_entry.uri) + + entry = self.gladexml.get_widget("entry_dist") + entry.set_text(source_entry.dist) + + entry = self.gladexml.get_widget("entry_comps") + comps = "" + for c in source_entry.comps: + if len(comps) > 0: + comps = comps + " " + c + else: + comps = c + entry.set_text(comps) + + entry = self.gladexml.get_widget("entry_comment") + entry.set_text(source_entry.comment) + + def run(self): + res = self.main.run() + if res == gtk.RESPONSE_OK: + # get values + combo_type = self.gladexml.get_widget("combobox_type") + if combo_type.get_active() == 0: + line = "deb" + else: + line = "deb-src" + entry = self.gladexml.get_widget("entry_uri") + line = line + " " + entry.get_text() + + entry = self.gladexml.get_widget("entry_dist") + line = line + " " + entry.get_text() + + entry = self.gladexml.get_widget("entry_comps") + line = line + " " + entry.get_text() + + entry = self.gladexml.get_widget("entry_comment") + if entry.get_text() != "": + line = line + " #" + entry.get_text() + "\n" + else: + line = line + "\n" + + # change repository + index = self.sourceslist.list.index(self.source_entry) + file = self.sourceslist.list[index].file + self.sourceslist.list[index] = aptsources.SourceEntry(line,file) + #self.sourceslist.add(self.selected.type, + # self.selected.uri, + # self.selected.dist, + # self.selected_comps) + self.main.hide() + return res diff --git a/SoftwareProperties/utils.py b/SoftwareProperties/utils.py new file mode 100644 index 00000000..cf9a3343 --- /dev/null +++ b/SoftwareProperties/utils.py @@ -0,0 +1,10 @@ +import gtk + +def dialog_error(parent, primary, secondary): + p = "<span weight=\"bold\" size=\"larger\">%s</span>" % primary + dialog = gtk.MessageDialog(parent,gtk.DIALOG_MODAL, + gtk.MESSAGE_ERROR,gtk.BUTTONS_OK,"") + dialog.set_markup(p); + dialog.format_secondary_text(secondary); + dialog.run() + dialog.hide() @@ -0,0 +1,3 @@ +- add /etc/apt/software-properties.d dir where the user can + install matchers and templates +- handle cases like "deb http://bla/ dist sec1 sec2 # comment"
\ No newline at end of file diff --git a/configure b/configure new file mode 100755 index 00000000..9d9fd2ee --- /dev/null +++ b/configure @@ -0,0 +1,6811 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59. +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="src/update-manager.in" +# Factoring default headers for most tests. +ac_includes_default="\ +#include <stdio.h> +#if HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif +#if HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif +#if STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +#else +# if HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> +#endif +#if HAVE_STRINGS_H +# include <strings.h> +#endif +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# if HAVE_STDINT_H +# include <stdint.h> +# endif +#endif +#if HAVE_UNISTD_H +# include <unistd.h> +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT INTLTOOL_DESKTOP_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_KEYS_RULE INTLTOOL_PROP_RULE INTLTOOL_OAF_RULE INTLTOOL_PONG_RULE INTLTOOL_SERVER_RULE INTLTOOL_SHEET_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_UI_RULE INTLTOOL_XAM_RULE INTLTOOL_KBD_RULE INTLTOOL_XML_RULE INTLTOOL_XML_NOMERGE_RULE INTLTOOL_CAVES_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_THEME_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL INTLTOOL_ICONV INTLTOOL_MSGFMT INTLTOOL_MSGMERGE INTLTOOL_XGETTEXT GETTEXT_PACKAGE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLLIBS PO_IN_DATADIR_TRUE PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS SCROLLKEEPER_BUILD_REQUIRED SCROLLKEEPER_CONFIG LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have + headers in a nonstandard directory <include dir> + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd "$ac_popdir" + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + +am__api_version="1.9" +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=update-manager + VERSION=0.37.2 + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + ac_config_headers="$ac_config_headers config.h" + +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then + enableval="$enable_maintainer_mode" + USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi; + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 + + +if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +GETTEXT_PACKAGE=update-manager + + +if test -n "0.23"; then + echo "$as_me:$LINENO: checking for intltool >= 0.23" >&5 +echo $ECHO_N "checking for intltool >= 0.23... $ECHO_C" >&6 + + INTLTOOL_REQUIRED_VERSION_AS_INT=`echo 0.23 | awk -F. '{ printf "%d", $1 * 100 + $2; }'` + INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { printf $2; }' < ${ac_aux_dir}/intltool-update.in` + + INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($2, VERSION, "."); printf "%d\n", VERSION[1] * 100 + VERSION[2];}' < ${ac_aux_dir}/intltool-update.in` + + + if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT"; then + echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found" >&5 +echo "${ECHO_T}$INTLTOOL_APPLIED_VERSION found" >&6 + else + echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found. Your intltool is too old. You need intltool 0.23 or later." >&5 +echo "${ECHO_T}$INTLTOOL_APPLIED_VERSION found. Your intltool is too old. You need intltool 0.23 or later." >&6 + exit 1 + fi +fi + + INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' +INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@' + INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' +INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@' + INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + + + + + + + + + + + + + + + + + + + +# Use the tools built into the package, not the ones that are installed. + +INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract' +INTLTOOL_MERGE='$(top_builddir)/intltool-merge' +INTLTOOL_UPDATE='$(top_builddir)/intltool-update' + + + + + +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_INTLTOOL_PERL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $INTLTOOL_PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_INTLTOOL_PERL="$INTLTOOL_PERL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_INTLTOOL_PERL="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL + +if test -n "$INTLTOOL_PERL"; then + echo "$as_me:$LINENO: result: $INTLTOOL_PERL" >&5 +echo "${ECHO_T}$INTLTOOL_PERL" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test -z "$INTLTOOL_PERL"; then + { { echo "$as_me:$LINENO: error: perl not found; required for intltool" >&5 +echo "$as_me: error: perl not found; required for intltool" >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then + { { echo "$as_me:$LINENO: error: perl 5.x required for intltool" >&5 +echo "$as_me: error: perl 5.x required for intltool" >&2;} + { (exit 1); exit 1; }; } +fi +if test "x" != "xno-xml"; then + echo "$as_me:$LINENO: checking for XML::Parser" >&5 +echo $ECHO_N "checking for XML::Parser... $ECHO_C" >&6 + if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 + else + { { echo "$as_me:$LINENO: error: XML::Parser perl module is required for intltool" >&5 +echo "$as_me: error: XML::Parser perl module is required for intltool" >&2;} + { (exit 1); exit 1; }; } + fi +fi + +# Extract the first word of "iconv", so it can be a program name with args. +set dummy iconv; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_INTLTOOL_ICONV+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $INTLTOOL_ICONV in + [\\/]* | ?:[\\/]*) + ac_cv_path_INTLTOOL_ICONV="$INTLTOOL_ICONV" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_INTLTOOL_ICONV="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_INTLTOOL_ICONV" && ac_cv_path_INTLTOOL_ICONV="iconv" + ;; +esac +fi +INTLTOOL_ICONV=$ac_cv_path_INTLTOOL_ICONV + +if test -n "$INTLTOOL_ICONV"; then + echo "$as_me:$LINENO: result: $INTLTOOL_ICONV" >&5 +echo "${ECHO_T}$INTLTOOL_ICONV" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_INTLTOOL_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $INTLTOOL_MSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_INTLTOOL_MSGFMT="$INTLTOOL_MSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_INTLTOOL_MSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_INTLTOOL_MSGFMT" && ac_cv_path_INTLTOOL_MSGFMT="msgfmt" + ;; +esac +fi +INTLTOOL_MSGFMT=$ac_cv_path_INTLTOOL_MSGFMT + +if test -n "$INTLTOOL_MSGFMT"; then + echo "$as_me:$LINENO: result: $INTLTOOL_MSGFMT" >&5 +echo "${ECHO_T}$INTLTOOL_MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_INTLTOOL_MSGMERGE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $INTLTOOL_MSGMERGE in + [\\/]* | ?:[\\/]*) + ac_cv_path_INTLTOOL_MSGMERGE="$INTLTOOL_MSGMERGE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_INTLTOOL_MSGMERGE="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_INTLTOOL_MSGMERGE" && ac_cv_path_INTLTOOL_MSGMERGE="msgmerge" + ;; +esac +fi +INTLTOOL_MSGMERGE=$ac_cv_path_INTLTOOL_MSGMERGE + +if test -n "$INTLTOOL_MSGMERGE"; then + echo "$as_me:$LINENO: result: $INTLTOOL_MSGMERGE" >&5 +echo "${ECHO_T}$INTLTOOL_MSGMERGE" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_INTLTOOL_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $INTLTOOL_XGETTEXT in + [\\/]* | ?:[\\/]*) + ac_cv_path_INTLTOOL_XGETTEXT="$INTLTOOL_XGETTEXT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_INTLTOOL_XGETTEXT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_INTLTOOL_XGETTEXT" && ac_cv_path_INTLTOOL_XGETTEXT="xgettext" + ;; +esac +fi +INTLTOOL_XGETTEXT=$ac_cv_path_INTLTOOL_XGETTEXT + +if test -n "$INTLTOOL_XGETTEXT"; then + echo "$as_me:$LINENO: result: $INTLTOOL_XGETTEXT" >&5 +echo "${ECHO_T}$INTLTOOL_XGETTEXT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +# Remove file type tags (using []) from po/POTFILES. + + + + + + + +# Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT. + + ac_config_commands="$ac_config_commands intltool" + + + + + +cat >>confdefs.h <<_ACEOF +#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" +_ACEOF + +ALL_LINGUAS="da de el en_CA es fi fr hu ja pl pt_BR ro rw sv zh_CN xh" +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdarg.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include <stdlib.h> +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ctype.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + +for ac_header in locale.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + if test $ac_cv_header_locale_h = yes; then + echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 +if test "${am_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <locale.h> +int +main () +{ +return LC_MESSAGES + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_val_LC_MESSAGES=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_val_LC_MESSAGES=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 + if test $am_cv_val_LC_MESSAGES = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LC_MESSAGES 1 +_ACEOF + + fi + fi + USE_NLS=yes + + + gt_cv_have_gettext=no + + CATOBJEXT=NONE + XGETTEXT=: + INTLLIBS= + + if test "${ac_cv_header_libintl_h+set}" = set; then + echo "$as_me:$LINENO: checking for libintl.h" >&5 +echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 +if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking libintl.h usability" >&5 +echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <libintl.h> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking libintl.h presence" >&5 +echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <libintl.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: libintl.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: libintl.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: libintl.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: libintl.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: libintl.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: libintl.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for libintl.h" >&5 +echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 +if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_libintl_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 + +fi +if test $ac_cv_header_libintl_h = yes; then + gt_cv_func_dgettext_libintl="no" + libintl_extra_libs="" + + # + # First check in libc + # + echo "$as_me:$LINENO: checking for ngettext in libc" >&5 +echo $ECHO_N "checking for ngettext in libc... $ECHO_C" >&6 +if test "${gt_cv_func_ngettext_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include <libintl.h> + +int +main () +{ +return !ngettext ("","", 1) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_ngettext_libc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_ngettext_libc=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $gt_cv_func_ngettext_libc" >&5 +echo "${ECHO_T}$gt_cv_func_ngettext_libc" >&6 + + if test "$gt_cv_func_ngettext_libc" = "yes" ; then + echo "$as_me:$LINENO: checking for dgettext in libc" >&5 +echo $ECHO_N "checking for dgettext in libc... $ECHO_C" >&6 +if test "${gt_cv_func_dgettext_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include <libintl.h> + +int +main () +{ +return !dgettext ("","") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_dgettext_libc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_dgettext_libc=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $gt_cv_func_dgettext_libc" >&5 +echo "${ECHO_T}$gt_cv_func_dgettext_libc" >&6 + fi + + if test "$gt_cv_func_ngettext_libc" = "yes" ; then + +for ac_func in bind_textdomain_codeset +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + fi + + # + # If we don't have everything we want, check in libintl + # + if test "$gt_cv_func_dgettext_libc" != "yes" \ + || test "$gt_cv_func_ngettext_libc" != "yes" \ + || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then + + echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5 +echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6 +if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char bindtextdomain (); +int +main () +{ +bindtextdomain (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_intl_bindtextdomain=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_intl_bindtextdomain=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5 +echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6 +if test $ac_cv_lib_intl_bindtextdomain = yes; then + echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5 +echo $ECHO_N "checking for ngettext in -lintl... $ECHO_C" >&6 +if test "${ac_cv_lib_intl_ngettext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char ngettext (); +int +main () +{ +ngettext (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_intl_ngettext=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_intl_ngettext=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5 +echo "${ECHO_T}$ac_cv_lib_intl_ngettext" >&6 +if test $ac_cv_lib_intl_ngettext = yes; then + echo "$as_me:$LINENO: checking for dgettext in -lintl" >&5 +echo $ECHO_N "checking for dgettext in -lintl... $ECHO_C" >&6 +if test "${ac_cv_lib_intl_dgettext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dgettext (); +int +main () +{ +dgettext (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_intl_dgettext=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_intl_dgettext=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dgettext" >&5 +echo "${ECHO_T}$ac_cv_lib_intl_dgettext" >&6 +if test $ac_cv_lib_intl_dgettext = yes; then + gt_cv_func_dgettext_libintl=yes +fi + +fi + +fi + + + if test "$gt_cv_func_dgettext_libintl" != "yes" ; then + echo "$as_me:$LINENO: checking if -liconv is needed to use gettext" >&5 +echo $ECHO_N "checking if -liconv is needed to use gettext... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: " >&5 +echo "${ECHO_T}" >&6 + echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5 +echo $ECHO_N "checking for ngettext in -lintl... $ECHO_C" >&6 +if test "${ac_cv_lib_intl_ngettext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl -liconv $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char ngettext (); +int +main () +{ +ngettext (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_intl_ngettext=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_intl_ngettext=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5 +echo "${ECHO_T}$ac_cv_lib_intl_ngettext" >&6 +if test $ac_cv_lib_intl_ngettext = yes; then + echo "$as_me:$LINENO: checking for dcgettext in -lintl" >&5 +echo $ECHO_N "checking for dcgettext in -lintl... $ECHO_C" >&6 +if test "${ac_cv_lib_intl_dcgettext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl -liconv $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dcgettext (); +int +main () +{ +dcgettext (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_intl_dcgettext=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_intl_dcgettext=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dcgettext" >&5 +echo "${ECHO_T}$ac_cv_lib_intl_dcgettext" >&6 +if test $ac_cv_lib_intl_dcgettext = yes; then + gt_cv_func_dgettext_libintl=yes + libintl_extra_libs=-liconv +else + : +fi + +else + : +fi + + fi + + # + # If we found libintl, then check in it for bind_textdomain_codeset(); + # we'll prefer libc if neither have bind_textdomain_codeset(), + # and both have dgettext and ngettext + # + if test "$gt_cv_func_dgettext_libintl" = "yes" ; then + glib_save_LIBS="$LIBS" + LIBS="$LIBS -lintl $libintl_extra_libs" + unset ac_cv_func_bind_textdomain_codeset + +for ac_func in bind_textdomain_codeset +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + LIBS="$glib_save_LIBS" + + if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then + gt_cv_func_dgettext_libc=no + else + if test "$gt_cv_func_dgettext_libc" = "yes" \ + && test "$gt_cv_func_ngettext_libc" = "yes"; then + gt_cv_func_dgettext_libintl=no + fi + fi + fi + fi + + if test "$gt_cv_func_dgettext_libc" = "yes" \ + || test "$gt_cv_func_dgettext_libintl" = "yes"; then + gt_cv_have_gettext=yes + fi + + if test "$gt_cv_func_dgettext_libintl" = "yes"; then + INTLLIBS="-lintl $libintl_extra_libs" + fi + + if test "$gt_cv_have_gettext" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETTEXT 1 +_ACEOF + + # Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGFMT" in + /*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then + ac_cv_path_MSGFMT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != "no"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + if test "$MSGFMT" != "no"; then + glib_save_LIBS="$LIBS" + LIBS="$LIBS $INTLLIBS" + +for ac_func in dcgettext +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT + +if test -n "$GMSGFMT"; then + echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$XGETTEXT" in + /*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +extern int _nl_msg_cat_cntr; + return _nl_msg_cat_cntr + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + CATOBJEXT=.gmo + DATADIRNAME=share +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +case $host in + *-*-solaris*) + echo "$as_me:$LINENO: checking for bind_textdomain_codeset" >&5 +echo $ECHO_N "checking for bind_textdomain_codeset... $ECHO_C" >&6 +if test "${ac_cv_func_bind_textdomain_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define bind_textdomain_codeset to an innocuous variant, in case <limits.h> declares bind_textdomain_codeset. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define bind_textdomain_codeset innocuous_bind_textdomain_codeset + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char bind_textdomain_codeset (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef bind_textdomain_codeset + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char bind_textdomain_codeset (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_bind_textdomain_codeset) || defined (__stub___bind_textdomain_codeset) +choke me +#else +char (*f) () = bind_textdomain_codeset; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != bind_textdomain_codeset; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_bind_textdomain_codeset=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_bind_textdomain_codeset=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_bind_textdomain_codeset" >&5 +echo "${ECHO_T}$ac_cv_func_bind_textdomain_codeset" >&6 +if test $ac_cv_func_bind_textdomain_codeset = yes; then + CATOBJEXT=.gmo + DATADIRNAME=share +else + CATOBJEXT=.mo + DATADIRNAME=lib +fi + + ;; + *) + CATOBJEXT=.mo + DATADIRNAME=lib + ;; + esac +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$glib_save_LIBS" + INSTOBJEXT=.mo + else + gt_cv_have_gettext=no + fi + fi + +fi + + + + if test "$gt_cv_have_gettext" = "yes" ; then + +cat >>confdefs.h <<\_ACEOF +#define ENABLE_NLS 1 +_ACEOF + + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else + echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 +echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 + XGETTEXT=":" + fi + fi + + # We need to process the po/ directory. + POSUB=po + + ac_config_commands="$ac_config_commands default-1" + + + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + + + + + + + + + + + + + if test "$gt_cv_have_gettext" = "yes"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + echo "$as_me:$LINENO: checking for catalogs to be installed" >&5 +echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6 + NEW_LINGUAS= + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + NEW_LINGUAS="$NEW_LINGUAS $presentlang" + fi + done + LINGUAS=$NEW_LINGUAS + echo "$as_me:$LINENO: result: $LINGUAS" >&5 +echo "${ECHO_T}$LINGUAS" >&6 + fi + + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + test -d po || mkdir po + if test "x$srcdir" != "x."; then + if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then + posrcprefix="$srcdir/" + else + posrcprefix="../$srcdir/" + fi + else + posrcprefix="../" + fi + rm -f po/POTFILES + sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ + < $srcdir/po/POTFILES.in > po/POTFILES + + + +SCROLLKEEPER_BUILD_REQUIRED=0.3.5 + + +# Extract the first word of "scrollkeeper-config", so it can be a program name with args. +set dummy scrollkeeper-config; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_SCROLLKEEPER_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $SCROLLKEEPER_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_SCROLLKEEPER_CONFIG="$SCROLLKEEPER_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_SCROLLKEEPER_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_SCROLLKEEPER_CONFIG" && ac_cv_path_SCROLLKEEPER_CONFIG="no" + ;; +esac +fi +SCROLLKEEPER_CONFIG=$ac_cv_path_SCROLLKEEPER_CONFIG + +if test -n "$SCROLLKEEPER_CONFIG"; then + echo "$as_me:$LINENO: result: $SCROLLKEEPER_CONFIG" >&5 +echo "${ECHO_T}$SCROLLKEEPER_CONFIG" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test x$SCROLLKEEPER_CONFIG = xno; then + { { echo "$as_me:$LINENO: error: Couldn't find scrollkeeper-config. Please install the scrollkeeper package: http://scrollkeeper.sourceforge.net" >&5 +echo "$as_me: error: Couldn't find scrollkeeper-config. Please install the scrollkeeper package: http://scrollkeeper.sourceforge.net" >&2;} + { (exit 1); exit 1; }; } +fi + + + ac_config_files="$ac_config_files Makefile help/Makefile help/C/Makefile src/Makefile data/Makefile po/Makefile.in src/update-manager gnome-software-properties SoftwareProperties/Makefile SoftwareProperties/SoftwareProperties.py distribution-data/Makefile Common/Makefile" +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + + mv -f po/POTFILES po/POTFILES.tmp + sed -e '/[[]encoding.*]/d' -e 's/[[].*] *//' < po/POTFILES.tmp > po/POTFILES + rm -f po/POTFILES.tmp + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to <bug-autoconf@gnu.org>." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir=${ac_aux_dir} +INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' ICONV='${INTLTOOL_ICONV}' +MSGFMT='${INTLTOOL_MSGFMT}' MSGMERGE='${INTLTOOL_MSGMERGE}' +XGETTEXT='${INTLTOOL_XGETTEXT}' +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "help/Makefile" ) CONFIG_FILES="$CONFIG_FILES help/Makefile" ;; + "help/C/Makefile" ) CONFIG_FILES="$CONFIG_FILES help/C/Makefile" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "data/Makefile" ) CONFIG_FILES="$CONFIG_FILES data/Makefile" ;; + "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "src/update-manager" ) CONFIG_FILES="$CONFIG_FILES src/update-manager" ;; + "gnome-software-properties" ) CONFIG_FILES="$CONFIG_FILES gnome-software-properties" ;; + "SoftwareProperties/Makefile" ) CONFIG_FILES="$CONFIG_FILES SoftwareProperties/Makefile" ;; + "SoftwareProperties/SoftwareProperties.py" ) CONFIG_FILES="$CONFIG_FILES SoftwareProperties/SoftwareProperties.py" ;; + "distribution-data/Makefile" ) CONFIG_FILES="$CONFIG_FILES distribution-data/Makefile" ;; + "Common/Makefile" ) CONFIG_FILES="$CONFIG_FILES Common/Makefile" ;; + "intltool" ) CONFIG_COMMANDS="$CONFIG_COMMANDS intltool" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@mkdir_p@,$mkdir_p,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@am__leading_dot@,$am__leading_dot,;t t +s,@AMTAR@,$AMTAR,;t t +s,@am__tar@,$am__tar,;t t +s,@am__untar@,$am__untar,;t t +s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +s,@MAINT@,$MAINT,;t t +s,@INTLTOOL_DESKTOP_RULE@,$INTLTOOL_DESKTOP_RULE,;t t +s,@INTLTOOL_DIRECTORY_RULE@,$INTLTOOL_DIRECTORY_RULE,;t t +s,@INTLTOOL_KEYS_RULE@,$INTLTOOL_KEYS_RULE,;t t +s,@INTLTOOL_PROP_RULE@,$INTLTOOL_PROP_RULE,;t t +s,@INTLTOOL_OAF_RULE@,$INTLTOOL_OAF_RULE,;t t +s,@INTLTOOL_PONG_RULE@,$INTLTOOL_PONG_RULE,;t t +s,@INTLTOOL_SERVER_RULE@,$INTLTOOL_SERVER_RULE,;t t +s,@INTLTOOL_SHEET_RULE@,$INTLTOOL_SHEET_RULE,;t t +s,@INTLTOOL_SOUNDLIST_RULE@,$INTLTOOL_SOUNDLIST_RULE,;t t +s,@INTLTOOL_UI_RULE@,$INTLTOOL_UI_RULE,;t t +s,@INTLTOOL_XAM_RULE@,$INTLTOOL_XAM_RULE,;t t +s,@INTLTOOL_KBD_RULE@,$INTLTOOL_KBD_RULE,;t t +s,@INTLTOOL_XML_RULE@,$INTLTOOL_XML_RULE,;t t +s,@INTLTOOL_XML_NOMERGE_RULE@,$INTLTOOL_XML_NOMERGE_RULE,;t t +s,@INTLTOOL_CAVES_RULE@,$INTLTOOL_CAVES_RULE,;t t +s,@INTLTOOL_SCHEMAS_RULE@,$INTLTOOL_SCHEMAS_RULE,;t t +s,@INTLTOOL_THEME_RULE@,$INTLTOOL_THEME_RULE,;t t +s,@INTLTOOL_EXTRACT@,$INTLTOOL_EXTRACT,;t t +s,@INTLTOOL_MERGE@,$INTLTOOL_MERGE,;t t +s,@INTLTOOL_UPDATE@,$INTLTOOL_UPDATE,;t t +s,@INTLTOOL_PERL@,$INTLTOOL_PERL,;t t +s,@INTLTOOL_ICONV@,$INTLTOOL_ICONV,;t t +s,@INTLTOOL_MSGFMT@,$INTLTOOL_MSGFMT,;t t +s,@INTLTOOL_MSGMERGE@,$INTLTOOL_MSGMERGE,;t t +s,@INTLTOOL_XGETTEXT@,$INTLTOOL_XGETTEXT,;t t +s,@GETTEXT_PACKAGE@,$GETTEXT_PACKAGE,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@USE_NLS@,$USE_NLS,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@GMSGFMT@,$GMSGFMT,;t t +s,@XGETTEXT@,$XGETTEXT,;t t +s,@CATALOGS@,$CATALOGS,;t t +s,@CATOBJEXT@,$CATOBJEXT,;t t +s,@DATADIRNAME@,$DATADIRNAME,;t t +s,@GMOFILES@,$GMOFILES,;t t +s,@INSTOBJEXT@,$INSTOBJEXT,;t t +s,@INTLLIBS@,$INTLLIBS,;t t +s,@PO_IN_DATADIR_TRUE@,$PO_IN_DATADIR_TRUE,;t t +s,@PO_IN_DATADIR_FALSE@,$PO_IN_DATADIR_FALSE,;t t +s,@POFILES@,$POFILES,;t t +s,@POSUB@,$POSUB,;t t +s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +s,@SCROLLKEEPER_BUILD_REQUIRED@,$SCROLLKEEPER_BUILD_REQUIRED,;t t +s,@SCROLLKEEPER_CONFIG@,$SCROLLKEEPER_CONFIG,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + intltool ) + +intltool_edit="-e 's#@INTLTOOL_EXTRACT@#`pwd`/intltool-extract#g' \ + -e 's#@INTLTOOL_ICONV@#${INTLTOOL_ICONV}#g' \ + -e 's#@INTLTOOL_MSGFMT@#${INTLTOOL_MSGFMT}#g' \ + -e 's#@INTLTOOL_MSGMERGE@#${INTLTOOL_MSGMERGE}#g' \ + -e 's#@INTLTOOL_XGETTEXT@#${INTLTOOL_XGETTEXT}#g' \ + -e 's#@INTLTOOL_PERL@#${INTLTOOL_PERL}#g'" + +eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-extract.in \ + > intltool-extract.out +if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then + rm -f intltool-extract.out +else + mv -f intltool-extract.out intltool-extract +fi +chmod ugo+x intltool-extract +chmod u+w intltool-extract + +eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-merge.in \ + > intltool-merge.out +if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then + rm -f intltool-merge.out +else + mv -f intltool-merge.out intltool-merge +fi +chmod ugo+x intltool-merge +chmod u+w intltool-merge + +eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-update.in \ + > intltool-update.out +if cmp -s intltool-update intltool-update.out 2>/dev/null; then + rm -f intltool-update.out +else + mv -f intltool-update.out intltool-update +fi +chmod ugo+x intltool-update +chmod u+w intltool-update + + ;; + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + default-1 ) case "$CONFIG_FILES" in *po/Makefile.in*) + sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile + esac ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --git a/data/Makefile.am b/data/Makefile.am new file mode 100644 index 00000000..a4f25a28 --- /dev/null +++ b/data/Makefile.am @@ -0,0 +1,21 @@ +@INTLTOOL_DESKTOP_RULE@ + +datadir=$(prefix)/share/update-manager +data_DATA=update-manager.glade \ + logo.png \ + SoftwareProperties.glade \ + SoftwarePropertiesDialogs.glade \ + update-manager.png + +desktopdir = $(prefix)/share/applications +desktop_in_files = update-manager.desktop.in \ + gnome-software-properties.desktop.in +desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) + +appicondir = $(prefix)/share/pixmaps +appicon_DATA = update-manager.png + + +EXTRA_DIST= $(data_DATA) $(appicon_DATA) $(desktop_in_files) + +CLEANFILES = $(desktop_DATA) diff --git a/data/SoftwareProperties.glade b/data/SoftwareProperties.glade new file mode 100644 index 00000000..b78d150f --- /dev/null +++ b/data/SoftwareProperties.glade @@ -0,0 +1,583 @@ +<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> +<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> + +<glade-interface> + +<widget class="GtkWindow" id="window_main"> + <property name="border_width">6</property> + <property name="width_request">500</property> + <property name="height_request">400</property> + <property name="visible">True</property> + <property name="title" translatable="yes">Software Preferences</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER</property> + <property name="modal">False</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <signal name="delete_event" handler="on_delete_event" last_modification_time="Mon, 04 Jul 2005 21:19:11 GMT"/> + + <child> + <widget class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkNotebook" id="notebook1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="show_tabs">True</property> + <property name="show_border">True</property> + <property name="tab_pos">GTK_POS_TOP</property> + <property name="scrollable">False</property> + <property name="enable_popup">False</property> + + <child> + <widget class="GtkVBox" id="vbox2"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkFrame" id="frame1"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="label_yalign">0.5</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + + <child> + <widget class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">1</property> + <property name="yscale">1</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">12</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox1"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTreeView" id="treeview1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">True</property> + <property name="reorderable">False</property> + <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVButtonBox" id="vbuttonbox1"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_START</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkButton" id="button_add"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-add</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_add_clicked" last_modification_time="Tue, 05 Jul 2005 01:31:37 GMT"/> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button_remove"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-remove</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_remove_clicked" last_modification_time="Tue, 05 Jul 2005 02:21:36 GMT"/> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button_edit"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-edit</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_edit_clicked" last_modification_time="Tue, 05 Jul 2005 02:18:34 GMT"/> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Sources</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkFrame" id="frame2"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="label_yalign">0.5</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + + <child> + <widget class="GtkAlignment" id="alignment2"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">1</property> + <property name="yscale">1</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">12</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkVBox" id="vbox3"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkHBox" id="hbox2"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkCheckButton" id="checkbutton_auto_update"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Check for updates every</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="opt_autoupdate_toggled" last_modification_time="Mon, 04 Jul 2005 23:22:04 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="spinbutton_update_interval"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">True</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">1 0 100 1 10 10</property> + <signal name="changed" handler="opt_autoupdate_toggled" last_modification_time="Sat, 09 Jul 2005 03:53:36 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label5"> + <property name="visible">True</property> + <property name="label" translatable="yes">day(s)</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Internet Updates</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="tab_expand">False</property> + <property name="tab_fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="label" translatable="yes">Installation Media</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="type">tab</property> + </packing> + </child> + + <child> + <widget class="GtkFrame" id="frame3"> + <property name="border_width">5</property> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="label_yalign">0.5</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + + <child> + <widget class="GtkAlignment" id="alignment3"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">1</property> + <property name="yscale">1</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">12</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkVBox" id="vbox4"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTreeView" id="treeview2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">True</property> + <property name="reorderable">False</property> + <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox3"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkButton" id="button_auth_restor"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Restore Defaults</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_restore_clicked" last_modification_time="Tue, 05 Jul 2005 04:24:19 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="button_auth_add"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-add</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="add_key_clicked" last_modification_time="Tue, 05 Jul 2005 04:09:24 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="button_auth_remove"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-remove</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="remove_key_clicked" last_modification_time="Tue, 05 Jul 2005 04:19:25 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Keys</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="tab_expand">False</property> + <property name="tab_fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="label" translatable="yes">Authentication</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="type">tab</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHButtonBox" id="hbuttonbox1"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_EDGE</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkButton" id="button_help"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-help</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_help_button" last_modification_time="Mon, 04 Jul 2005 21:19:04 GMT"/> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button_close"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_close_button" last_modification_time="Mon, 04 Jul 2005 21:18:56 GMT"/> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +</glade-interface> diff --git a/data/SoftwareProperties.gladep b/data/SoftwareProperties.gladep new file mode 100644 index 00000000..183077ba --- /dev/null +++ b/data/SoftwareProperties.gladep @@ -0,0 +1,8 @@ +<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> +<!DOCTYPE glade-project SYSTEM "http://glade.gnome.org/glade-project-2.0.dtd"> + +<glade-project> + <name></name> + <program_name></program_name> + <gnome_support>FALSE</gnome_support> +</glade-project> diff --git a/data/SoftwarePropertiesDialogs.glade b/data/SoftwarePropertiesDialogs.glade new file mode 100644 index 00000000..f47b1ef2 --- /dev/null +++ b/data/SoftwarePropertiesDialogs.glade @@ -0,0 +1,1800 @@ +<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> +<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> + +<glade-interface> + +<widget class="GtkDialog" id="dialog_add"> + <property name="border_width">6</property> + <property name="title" translatable="yes">Add repository...</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">True</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="has_separator">True</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="vbox2"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="hbuttonbox2"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button_custom"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Custom</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + <signal name="clicked" handler="on_button_custom_clicked" last_modification_time="Mon, 29 Nov 2004 11:06:40 GMT"/> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button2"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button3"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="has_focus">True</property> + <property name="label">gtk-ok</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-5</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox3"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label31"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Repository</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkComboBox" id="combobox_what"> + <property name="visible">True</property> + <property name="add_tearoffs">False</property> + <property name="focus_on_click">True</property> + <signal name="changed" handler="on_combobox_what_changed" last_modification_time="Thu, 25 Nov 2004 13:35:11 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label32"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Components</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox_comps"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <placeholder/> + </child> + + <child> + <placeholder/> + </child> + + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <placeholder/> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_add_custom"> + <property name="title" translatable="yes"></property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">True</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="has_separator">True</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="dialog-vbox2"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area2"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button5"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button6"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="has_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-5</property> + + <child> + <widget class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox10"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image2"> + <property name="visible">True</property> + <property name="stock">gtk-add</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label35"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Add Repository</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox7"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkImage" id="image1"> + <property name="visible">True</property> + <property name="stock">gtk-dialog-question</property> + <property name="icon_size">6</property> + <property name="xalign">0.5</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox5"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label33"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"><big><b>Enter the complete APT line of the repository that you want to add</b></big> + +The APT line contains the type, location and content of a repository, for example <i>"deb http://ftp.debian.org sarge main"</i>. You can find a detailed description of the syntax in the documentation.</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox8"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">10</property> + + <child> + <widget class="GtkLabel" id="label34"> + <property name="visible">True</property> + <property name="label" translatable="yes">APT line:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="entry_source_line"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_edit"> + <property name="border_width">6</property> + <property name="title" translatable="yes">Edit Repository...</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">True</property> + <property name="default_width">400</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="has_separator">True</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="vbox6"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="hbuttonbox3"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button7"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button8"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="has_focus">True</property> + <property name="label">gtk-ok</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-5</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkTable" id="table1"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="n_rows">7</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + + <child> + <widget class="GtkLabel" id="label36"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Type:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label38"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>URI:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label39"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Distribution:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label40"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Sections:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="entry_uri"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="entry_dist"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="entry_comps"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkComboBox" id="combobox_type"> + <property name="visible">True</property> + <property name="items" translatable="yes">Binary +Source</property> + <property name="add_tearoffs">False</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label61"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Comment:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="entry_comment"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_apt_key"> + <property name="border_width">6</property> + <property name="title" translatable="yes">Authentication</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">False</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="has_separator">True</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="vbox7"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="hbuttonbox4"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button9"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-7</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox8"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label41"> + <property name="visible">True</property> + <property name="label" translatable="yes"><big><b>Authentication keys</b></big> + +You can add and remove authentication keys in this dialog. A key makes it possible to verify the integrity of the software you download.</property> + <property name="use_underline">True</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox11"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label42"> + <property name="visible">True</property> + <property name="label"></property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTreeView" id="treeview_apt_key"> + <property name="height_request">300</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">True</property> + <property name="reorderable">False</property> + <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> + <signal name="row_activated" handler="on_sourceslist_row_activated" last_modification_time="Mon, 29 Nov 2004 10:55:04 GMT"/> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHButtonBox" id="hbuttonbox5"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkButton" id="button_apt_key_update"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Restore the default keys shipped with the distribution. This will not change user installed keys.</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Restore default keys</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_apt_key_update_clicked" last_modification_time="Mon, 31 Jan 2005 17:40:33 GMT"/> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button10"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Remove the selected key from the trusted keyring.</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-remove</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_key_remove_clicked" last_modification_time="Wed, 05 Jan 2005 13:40:25 GMT"/> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button11"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Add a new key file to the trusted keyring. Make sure that you received the key over a secure channel and that you trust the owner. </property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-add</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_key_add_clicked" last_modification_time="Wed, 05 Jan 2005 13:40:19 GMT"/> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_settings"> + <property name="title" translatable="yes">Settings</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">True</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="has_separator">True</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="dialog-vbox3"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area3"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button_preferences_close"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-7</property> + <signal name="clicked" handler="on_button_preferences_close_clicked" last_modification_time="Wed, 19 Jan 2005 14:54:37 GMT"/> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox9"> + <property name="border_width">12</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">18</property> + + <child> + <widget class="GtkVBox" id="vbox15"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label62"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>User Interface</b></property> + <property name="use_underline">True</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox28"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label63"> + <property name="visible">True</property> + <property name="label"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox16"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkCheckButton" id="checkbutton_show_disabled"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Show disabled software sources</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_checkbutton_show_disabled_toggled" last_modification_time="Thu, 03 Feb 2005 14:09:09 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox32"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label67"> + <property name="visible">True</property> + <property name="label"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox17"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkCheckButton" id="checkbutton_show_version_details"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Show detailed package versions</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_checkbutton_show_disabled_toggled" last_modification_time="Thu, 03 Feb 2005 14:09:09 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox13"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label45"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Internet Updates</b></property> + <property name="use_underline">True</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox26"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label59"> + <property name="visible">True</property> + <property name="label"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox12"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkCheckButton" id="checkbutton_autoupdate"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Automatically check for software _updates.</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox_autoupdate"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkHBox" id="hbox22"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label55"> + <property name="visible">True</property> + <property name="label" translatable="yes">Update interval in days: </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="spinbutton_autoupdate"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">1 1 100 1 10 10</property> + <signal name="changed" handler="on_spinbutton_update_interval_changed" last_modification_time="Wed, 19 Jan 2005 11:45:09 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="checkbutton_autodownload"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Download upgradable packages</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_checkbutton_download_upgradable_toggled" last_modification_time="Wed, 19 Jan 2005 11:33:21 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox14"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label56"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Temporary files</b></property> + <property name="use_underline">True</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox23"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label57"> + <property name="visible">True</property> + <property name="label"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox10"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkCheckButton" id="checkbutton_autoclean"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Automatically clean _temporary packages files</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox_autoclean"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkHBox" id="hbox25"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label58"> + <property name="visible">True</property> + <property name="label" translatable="yes">Clean interval in days: </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="spinbutton_autoclean"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">1 1 365 1 10 10</property> + <signal name="changed" handler="on_spinbutton_autoclean_interval_changed" last_modification_time="Wed, 19 Jan 2005 11:45:16 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="checkbutton_max_size"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Set _maximum size for the package cache</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox_max_size"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkHBox" id="hbox30"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label65"> + <property name="visible">True</property> + <property name="label" translatable="yes">Maximum size in MB:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="spinbutton_max_size"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">True</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">500 1 9999 1 10 10</property> + <signal name="changed" handler="on_spinbutton_max_size_changed" last_modification_time="Mon, 21 Mar 2005 17:33:58 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="checkbutton_max_age"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Delete _old packages in the package cache</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox_max_age"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkHBox" id="hbox31"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label66"> + <property name="visible">True</property> + <property name="label" translatable="yes">Maximum age in days:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="spinbutton_max_age"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">30 2 365 1 10 10</property> + <signal name="changed" handler="on_spinbutton_max_age_changed" last_modification_time="Mon, 21 Mar 2005 17:34:11 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +</glade-interface> diff --git a/data/gnome-software-properties.desktop.in b/data/gnome-software-properties.desktop.in new file mode 100644 index 00000000..93f206cd --- /dev/null +++ b/data/gnome-software-properties.desktop.in @@ -0,0 +1,11 @@ +[Desktop Entry] +_Name=Software Properties +_GenericName=Software Properties +_Comment=Edit software sources and settings +Exec=gksudo /usr/bin/gnome-software-properties +Icon=update-manager.png +Terminal=false +MultipleArgs=false +Type=Application +Encoding=UTF-8 +Categories=Application;System;Settings; diff --git a/data/gnome-software-properties.glade b/data/gnome-software-properties.glade new file mode 100644 index 00000000..66b7aa80 --- /dev/null +++ b/data/gnome-software-properties.glade @@ -0,0 +1,2161 @@ +<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> +<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> + +<glade-interface> + +<widget class="GtkDialog" id="SoftwareConfigurator"> + <property name="border_width">6</property> + <property name="height_request">400</property> + <property name="title" translatable="yes">Software Preferences</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">False</property> + <property name="default_width">400</property> + <property name="default_height">500</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <property name="icon">update-manager.png</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_CENTER</property> + <property name="focus_on_map">True</property> + <property name="has_separator">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="vbox_main"> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area1"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button_cancel"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button_ok"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="has_focus">True</property> + <property name="label">gtk-ok</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-5</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox1"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label24"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Software Sources</b></property> + <property name="use_underline">True</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">sourceslist</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox5"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label25"> + <property name="visible">True</property> + <property name="label"></property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkScrolledWindow" id="sourcesscroll"> + <property name="border_width">2</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTreeView" id="sourceslist"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">True</property> + <property name="reorderable">False</property> + <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> + <signal name="row_activated" handler="on_sourceslist_row_activated" last_modification_time="Mon, 29 Nov 2004 10:55:04 GMT"/> + <signal name="cursor_changed" handler="on_sourceslist_cursor_changed" last_modification_time="Thu, 03 Feb 2005 14:42:21 GMT"/> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVButtonBox" id="vbuttonbox1"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_START</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkButton" id="button_add"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-add</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_add_clicked" last_modification_time="Thu, 03 Feb 2005 10:40:58 GMT"/> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button_add_cdrom"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_add_cdrom_clicked" last_modification_time="Fri, 11 Mar 2005 16:19:38 GMT"/> + + <child> + <widget class="GtkAlignment" id="alignment3"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox29"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image4"> + <property name="visible">True</property> + <property name="stock">gtk-cdrom</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label64"> + <property name="visible">True</property> + <property name="label" translatable="yes">Add _CD</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button_remove"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-remove</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_remove_clicked" last_modification_time="Thu, 03 Feb 2005 10:41:09 GMT"/> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button_edit"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-edit</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_edit_clicked" last_modification_time="Thu, 03 Feb 2005 10:44:36 GMT"/> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox12"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">18</property> + + <child> + <widget class="GtkHButtonBox" id="hbuttonbox6"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_DEFAULT_STYLE</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkButton" id="button_authentication"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_authentication_clicked" last_modification_time="Wed, 05 Jan 2005 21:20:59 GMT"/> + + <child> + <widget class="GtkAlignment" id="alignment2"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox27"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image3"> + <property name="visible">True</property> + <property name="stock">gtk-dialog-authentication</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label60"> + <property name="visible">True</property> + <property name="label" translatable="yes">A_uthentication</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button_settings"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Settings</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_settings_clicked" last_modification_time="Tue, 22 Mar 2005 10:11:17 GMT"/> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_add"> + <property name="border_width">6</property> + <property name="title" translatable="yes">Edit Repository...</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">True</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="has_separator">True</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="vbox2"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="hbuttonbox2"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button_custom"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Custom</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + <signal name="clicked" handler="on_button_custom_clicked" last_modification_time="Mon, 29 Nov 2004 11:06:40 GMT"/> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button2"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button3"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="has_focus">True</property> + <property name="label">gtk-ok</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-5</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox3"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label31"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Repository</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkComboBox" id="combobox_what"> + <property name="visible">True</property> + <property name="add_tearoffs">False</property> + <property name="focus_on_click">True</property> + <signal name="changed" handler="on_combobox_what_changed" last_modification_time="Thu, 25 Nov 2004 13:35:11 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label32"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Components</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox_comps"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <placeholder/> + </child> + + <child> + <placeholder/> + </child> + + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <placeholder/> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_add_custom"> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="title" translatable="yes"></property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">True</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="has_separator">True</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="dialog-vbox2"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area2"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button5"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button6"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="has_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-5</property> + + <child> + <widget class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox10"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image2"> + <property name="visible">True</property> + <property name="stock">gtk-add</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label35"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Add Repository</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox7"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkImage" id="image1"> + <property name="visible">True</property> + <property name="stock">gtk-dialog-question</property> + <property name="icon_size">6</property> + <property name="xalign">0.5</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox5"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label33"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"><big><b>Enter the complete APT line of the repository that you want to add</b></big> + +The APT line contains the type, location and content of a repository, for example <i>"deb http://ftp.debian.org sarge main"</i>. You can find a detailed description of the syntax in the documentation.</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox8"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">10</property> + + <child> + <widget class="GtkLabel" id="label34"> + <property name="visible">True</property> + <property name="label" translatable="yes">APT line:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="entry_source_line"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="has_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_edit"> + <property name="border_width">6</property> + <property name="title" translatable="yes">Edit Repository...</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">True</property> + <property name="default_width">400</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="has_separator">True</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="vbox6"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="hbuttonbox3"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button7"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button8"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="has_focus">True</property> + <property name="label">gtk-ok</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-5</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkTable" id="table1"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="n_rows">7</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + + <child> + <widget class="GtkLabel" id="label36"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Type:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label38"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>URI:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label39"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Distribution:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label40"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Sections:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="entry_uri"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="entry_dist"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="entry_comps"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkComboBox" id="combobox_type"> + <property name="visible">True</property> + <property name="items" translatable="yes">Binary +Source</property> + <property name="add_tearoffs">False</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label61"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Comment:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="entry_comment"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_apt_key"> + <property name="border_width">6</property> + <property name="title" translatable="yes">Authentication</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">False</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="has_separator">True</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="vbox7"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="hbuttonbox4"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button9"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-7</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox8"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label41"> + <property name="visible">True</property> + <property name="label" translatable="yes"><big><b>Authentication keys</b></big> + +You can add and remove authentication keys in this dialog. A key makes it possible to verify the integrity of the software you download.</property> + <property name="use_underline">True</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox11"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label42"> + <property name="visible">True</property> + <property name="label"></property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTreeView" id="treeview_apt_key"> + <property name="height_request">300</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">True</property> + <property name="reorderable">False</property> + <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> + <signal name="row_activated" handler="on_sourceslist_row_activated" last_modification_time="Mon, 29 Nov 2004 10:55:04 GMT"/> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHButtonBox" id="hbuttonbox5"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkButton" id="button_apt_key_update"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Restore the default keys shipped with the distribution. This will not change user installed keys.</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Restore default keys</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_apt_key_update_clicked" last_modification_time="Mon, 31 Jan 2005 17:40:33 GMT"/> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button10"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Remove the selected key from the trusted keyring.</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-remove</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_key_remove_clicked" last_modification_time="Wed, 05 Jan 2005 13:40:25 GMT"/> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button11"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Add a new key file to the trusted keyring. Make sure that you received the key over a secure channel and that you trust the owner. </property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-add</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_key_add_clicked" last_modification_time="Wed, 05 Jan 2005 13:40:19 GMT"/> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_settings"> + <property name="title" translatable="yes">Settings</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">True</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="has_separator">True</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="dialog-vbox3"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area3"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button_preferences_close"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-7</property> + <signal name="clicked" handler="on_button_preferences_close_clicked" last_modification_time="Wed, 19 Jan 2005 14:54:37 GMT"/> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox9"> + <property name="border_width">12</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">18</property> + + <child> + <widget class="GtkVBox" id="vbox15"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label62"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>User Interface</b></property> + <property name="use_underline">True</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox28"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label63"> + <property name="visible">True</property> + <property name="label"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox16"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkCheckButton" id="checkbutton_show_disabled"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Show disabled software sources</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_checkbutton_show_disabled_toggled" last_modification_time="Thu, 03 Feb 2005 14:09:09 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox13"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label45"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Internet Updates</b></property> + <property name="use_underline">True</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox26"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label59"> + <property name="visible">True</property> + <property name="label"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox12"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkCheckButton" id="checkbutton_autoupdate"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Automatically check for software _updates.</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox_autoupdate"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkHBox" id="hbox22"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label55"> + <property name="visible">True</property> + <property name="label" translatable="yes">Update interval in days: </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="spinbutton_autoupdate"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">1 1 100 1 10 10</property> + <signal name="changed" handler="on_spinbutton_update_interval_changed" last_modification_time="Wed, 19 Jan 2005 11:45:09 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="checkbutton_autodownload"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Download upgradable packages</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_checkbutton_download_upgradable_toggled" last_modification_time="Wed, 19 Jan 2005 11:33:21 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox14"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label56"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Temporary files</b></property> + <property name="use_underline">True</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox23"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label57"> + <property name="visible">True</property> + <property name="label"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox10"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkCheckButton" id="checkbutton_autoclean"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Automatically clean _temporary packages files</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox_autoclean"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkHBox" id="hbox25"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label58"> + <property name="visible">True</property> + <property name="label" translatable="yes">Clean interval in days: </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="spinbutton_autoclean"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">1 1 365 1 10 10</property> + <signal name="changed" handler="on_spinbutton_autoclean_interval_changed" last_modification_time="Wed, 19 Jan 2005 11:45:16 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="checkbutton_max_size"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Set _maximum size for the package cache</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox_max_size"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkHBox" id="hbox30"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label65"> + <property name="visible">True</property> + <property name="label" translatable="yes">Maximum size in MB:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="spinbutton_max_size"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">True</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">500 1 9999 1 10 10</property> + <signal name="changed" handler="on_spinbutton_max_size_changed" last_modification_time="Mon, 21 Mar 2005 17:33:58 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="checkbutton_max_age"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Delete _old packages in the package cache</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox_max_age"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkHBox" id="hbox31"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="label66"> + <property name="visible">True</property> + <property name="label" translatable="yes">Maximum age in days:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="spinbutton_max_age"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">30 2 365 1 10 10</property> + <signal name="changed" handler="on_spinbutton_max_age_changed" last_modification_time="Mon, 21 Mar 2005 17:34:11 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +</glade-interface> diff --git a/data/gnome-software-properties.gladep b/data/gnome-software-properties.gladep new file mode 100644 index 00000000..183077ba --- /dev/null +++ b/data/gnome-software-properties.gladep @@ -0,0 +1,8 @@ +<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> +<!DOCTYPE glade-project SYSTEM "http://glade.gnome.org/glade-project-2.0.dtd"> + +<glade-project> + <name></name> + <program_name></program_name> + <gnome_support>FALSE</gnome_support> +</glade-project> diff --git a/data/logo.png b/data/logo.png Binary files differnew file mode 100644 index 00000000..77c2c51c --- /dev/null +++ b/data/logo.png diff --git a/data/update-manager.desktop.in b/data/update-manager.desktop.in new file mode 100644 index 00000000..32707f67 --- /dev/null +++ b/data/update-manager.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +_Name=Update Manager +_GenericName=Update Manager +_Comment=Show available updates and choose which to install +Exec=gksudo /usr/bin/update-manager +Icon=update-manager.png +Terminal=false +Type=Application +Encoding=UTF-8 +Categories=Application;System;Settings; diff --git a/data/update-manager.glade b/data/update-manager.glade new file mode 100644 index 00000000..8e11d58c --- /dev/null +++ b/data/update-manager.glade @@ -0,0 +1,854 @@ +<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> +<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> + +<glade-interface> + +<widget class="GtkWindow" id="MainWindow"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="title" translatable="yes">Software Updates</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER</property> + <property name="modal">False</property> + <property name="default_height">600</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <property name="icon">update-manager.png</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">False</property> + + <child> + <widget class="GtkVBox" id="vbox_main"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkHBox" id="hbox3"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkImage" id="image4"> + <property name="visible">True</property> + <property name="pixbuf">logo.png</property> + <property name="xalign">0.5</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label_header"> + <property name="visible">True</property> + <property name="label" translatable="yes" context="yes"><big><b>Available Updates</b></big> + +The following packages are found to be upgradable. You can upgrade them by using the Install button.</property> + <property name="use_underline">True</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">10</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHButtonBox" id="hbuttonbox4"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="spacing">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox12"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label7"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Packages to install:</b></property> + <property name="use_underline">True</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">1</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="num_updates"> + <property name="visible">True</property> + <property name="label">0</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">1</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="button_reload"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Reload the package information from the server. + +If you have a permanent internet connection this is done automatically. If you are behind an internet connection that needs to be started by hand (e.g. a modem) you should use this button so that update-manager knows about new updates.</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_reload_clicked" last_modification_time="Fri, 18 Feb 2005 16:30:27 GMT"/> + + <child> + <widget class="GtkAlignment" id="alignment3"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox9"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image8"> + <property name="visible">True</property> + <property name="stock">gtk-refresh</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">2</property> + <property name="ypad">2</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label15"> + <property name="visible">True</property> + <property name="label" translatable="yes">Reload</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">2</property> + <property name="ypad">2</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTreeView" id="updatelist"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">True</property> + <property name="reorderable">False</property> + <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkExpander" id="expander_details"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="expanded">False</property> + <property name="spacing">6</property> + <signal name="activate" handler="on_expander_details_activate" last_modification_time="Mon, 31 Jan 2005 17:55:19 GMT"/> + + <child> + <widget class="GtkVBox" id="vbox4"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkNotebook" id="notebook1"> + <property name="height_request">200</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="show_tabs">True</property> + <property name="show_border">False</property> + <property name="tab_pos">GTK_POS_TOP</property> + <property name="scrollable">False</property> + <property name="enable_popup">False</property> + + <child> + <widget class="GtkVBox" id="vbox5"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow4"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTextView" id="textview_changes"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">False</property> + <property name="overwrite">False</property> + <property name="accepts_tab">True</property> + <property name="justification">GTK_JUSTIFY_LEFT</property> + <property name="wrap_mode">GTK_WRAP_WORD</property> + <property name="cursor_visible">False</property> + <property name="pixels_above_lines">6</property> + <property name="pixels_below_lines">0</property> + <property name="pixels_inside_wrap">0</property> + <property name="left_margin">6</property> + <property name="right_margin">6</property> + <property name="indent">0</property> + <property name="text" translatable="yes"></property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHButtonBox" id="hbuttonbox3"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_DEFAULT_STYLE</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkButton" id="button_cancel_dl_changelog"> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + + <child> + <widget class="GtkAlignment" id="alignment2"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox8"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image7"> + <property name="visible">True</property> + <property name="stock">gtk-cancel</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label13"> + <property name="visible">True</property> + <property name="label" translatable="yes">Cancel downloading the changelog</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="tab_expand">False</property> + <property name="tab_fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label8"> + <property name="visible">True</property> + <property name="label" translatable="yes">Changes</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="type">tab</property> + </packing> + </child> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow3"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTextView" id="descview"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">False</property> + <property name="overwrite">False</property> + <property name="accepts_tab">False</property> + <property name="justification">GTK_JUSTIFY_LEFT</property> + <property name="wrap_mode">GTK_WRAP_WORD</property> + <property name="cursor_visible">False</property> + <property name="pixels_above_lines">6</property> + <property name="pixels_below_lines">0</property> + <property name="pixels_inside_wrap">0</property> + <property name="left_margin">6</property> + <property name="right_margin">6</property> + <property name="indent">0</property> + <property name="text" translatable="yes"></property> + </widget> + </child> + </widget> + <packing> + <property name="tab_expand">False</property> + <property name="tab_fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label9"> + <property name="visible">True</property> + <property name="label" translatable="yes">Description</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="type">tab</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> + + <child> + <widget class="GtkLabel" id="label12"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Details</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox_footer"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkHButtonBox" id="hbuttonbox5"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_DEFAULT_STYLE</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkButton" id="button1"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-preferences</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_preferences_clicked" last_modification_time="Thu, 23 Dec 2004 20:04:07 GMT"/> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button_help"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-help</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_help_clicked" last_modification_time="Thu, 24 Mar 2005 17:16:46 GMT"/> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHButtonBox" id="hbuttonbox6"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkButton" id="button_close"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_close_clicked" last_modification_time="Fri, 18 Feb 2005 22:37:27 GMT"/> + <accelerator key="W" modifiers="GDK_CONTROL_MASK" signal="clicked"/> + <accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="clicked"/> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button_install"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_install_clicked" last_modification_time="Fri, 18 Feb 2005 22:38:03 GMT"/> + + <child> + <widget class="GtkAlignment" id="alignment4"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox11"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image9"> + <property name="visible">True</property> + <property name="stock">gtk-apply</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label16"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Install</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_fetching"> + <property name="title" translatable="yes"></property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">False</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">False</property> + <property name="has_separator">True</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="dialog-vbox2"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area2"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button_cancel"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-stop</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_button_cancel_clicked" last_modification_time="Thu, 23 Dec 2004 15:53:57 GMT"/> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox6"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkImage" id="image6"> + <property name="visible">True</property> + <property name="stock">gtk-connect</property> + <property name="icon_size">6</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox3"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label11"> + <property name="visible">True</property> + <property name="label" translatable="yes"><span weight="bold" size="larger">Downloading changes</span> + +Need to get the changes from the central server</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkProgressBar" id="progressbar_fetching"> + <property name="visible">True</property> + <property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property> + <property name="fraction">0</property> + <property name="pulse_step">0.10000000149</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +</glade-interface> diff --git a/data/update-manager.gladep b/data/update-manager.gladep new file mode 100644 index 00000000..183077ba --- /dev/null +++ b/data/update-manager.gladep @@ -0,0 +1,8 @@ +<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> +<!DOCTYPE glade-project SYSTEM "http://glade.gnome.org/glade-project-2.0.dtd"> + +<glade-project> + <name></name> + <program_name></program_name> + <gnome_support>FALSE</gnome_support> +</glade-project> diff --git a/data/update-manager.png b/data/update-manager.png Binary files differnew file mode 100644 index 00000000..739be699 --- /dev/null +++ b/data/update-manager.png diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 00000000..14665ebe --- /dev/null +++ b/debian/changelog @@ -0,0 +1,328 @@ +update-manager (0.37.1+svn20050404.15) breezy; urgency=low + + * added intltool to build-depends (for rosetta) + + -- Michael Vogt <mvo@debian.org> Thu, 6 Oct 2005 17:30:38 +0200 + +update-manager (0.37.1+svn20050404.14) breezy; urgency=low + + * debian/rules: + - run intltool-update -p for rosetta + * src/update-manager.in: + - release the lock before runing gnome-software-properties (ubuntu #17022) + + -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 4 Oct 2005 22:28:43 +0200 + +update-manager (0.37.1+svn20050404.13) breezy; urgency=low + + * src/update-manager.in: + - use the right column for type-ahead searching (ubuntu #16853) + + -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 4 Oct 2005 11:01:58 +0200 + +update-manager (0.37.1+svn20050404.12) breezy; urgency=low + + * added locking support + * use explicit path to python2.4 (thanks anthony!) (Ubuntu #16087) + * CTRL-{w,q} close the update-manager window (Ubuntu #15729) + + -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 28 Sep 2005 17:40:05 +0200 + +update-manager (0.37.1+svn20050404.11) breezy; urgency=low + + * fix a typo in the reload tooltip (thanks to P Jones) (ubuntu #14699) + + -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 12 Sep 2005 14:49:13 +0200 + +update-manager (0.37.1+svn20050404.10) breezy; urgency=low + + * fix for a typo in the source of the last upload (*cough*) + + -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 31 Aug 2005 15:39:53 +0200 + +update-manager (0.37.1+svn20050404.9) breezy; urgency=low + + * do a "save" dist-upgrade (add only, no removes) + + -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 31 Aug 2005 12:09:20 +0200 + +update-manager (0.37.1+svn20050404.8) breezy; urgency=low + + * if repository window is running from inside synaptic, don't show "Add + cdrom" button (it's available in the synaptic menu already) + + -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 30 Aug 2005 14:12:50 +0200 + +update-manager (0.37.1+svn20050404.7) breezy; urgency=low + + * if running from inside another application (e.g. synaptic), make sure + the dialogs get a correct parent (ubuntu #14001) + * if nothing changed, do not run "reload" if runing from inside synaptic + + -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 29 Aug 2005 12:09:12 +0200 + +update-manager (0.37.1+svn20050404.6) breezy; urgency=low + + * remove (parts of) ubuntu branding from the application + * make it run only with python2.4 (ubuntu #10876) + * make sure to always properly escape the strings displayed + in the treeview + + -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 23 Aug 2005 16:49:54 +0200 + +update-manager (0.37.1+svn20050404.5) breezy; urgency=low + + * updates where not shown sometimes, fixed that (ubuntu #13410) + + -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 16 Aug 2005 10:49:46 +0200 + +update-manager (0.37.1+svn20050404.4) breezy; urgency=low + + * re-read the sources.list after a "add-custom" (ubuntu #9855) + * settings window has a title (ubuntu #10756) + * default actions for the buttons (ubuntu #10741) + * various typos fixed (ubuntu #9866) + * make sure that no dialogs are opened without a parent (ubuntu #10284) + + -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 15 Aug 2005 15:15:06 +0200 + +update-manager (0.37.1+svn20050404.3) breezy; urgency=low + + * use breezy as default for newly created sources (ubuntu #13009) + * be more carefull with preserving the mirror + * a better explaination for the "Reload" button (ubuntu #11432) + + -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 10 Aug 2005 12:07:55 +0200 + +update-manager (0.37.1+svn20050404.2) breezy; urgency=low + + * fix a small problem in the parsing code (ubuntu #8754) + + -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 6 May 2005 11:24:17 +0200 + +update-manager (0.37.1+svn20050404.1) hoary; urgency=low + + * pickup the correct proxy settings from apt (#8668) + + -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 6 Apr 2005 16:39:44 +0200 + +update-manager (0.37.1+svn20050404) hoary; urgency=low + + * translation updates: + - xh, fr + + -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 4 Apr 2005 22:21:17 +0200 + +update-manager (0.37.1+svn20050403) hoary; urgency=low + + * translation updates: + - pt_BR, tw + * documentation updates (thanks to Sean Wheller and + Jeff Schering) + * small fixes: + - make sure to not duplicate sources.list entires (even for + mirrors) + - added the hoary-updates to the templates and matchers (#8600) + - some missing i18n strings marked as such (thanks to Zygmunt Krynicki) + - don't fail on missing net connections + - always update the status label + + -- Michael Vogt <michael.vogt@ubuntu.com> Sun, 3 Apr 2005 20:54:42 +0200 + +update-manager (0.37.1+svn20050323) hoary; urgency=low + + * translation updates + * gui can set the new apt cache properties now + * warn about broken packages (#7688) + * only ask to reload the package list if something changed (#7871) + * various focus fixes (#7900) + + -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 23 Mar 2005 01:18:38 +0100 + +update-manager (0.37.1+svn20050314) hoary; urgency=low + + * new svn snapshot, lot's of bugfixes and i18n updates. + - fix for a ui problem (#6837) + - read pined packages correctly (#7058) + - update list correctly after reload (#7182) + - tell user when dist-upgrade is needed (#7271) + - cdrom sources can be added now too (#7315) + - meta-release file bugfix (#7330) + - translation updates (da, fr, es, ro, pl) + + -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 14 Mar 2005 08:49:52 +0100 + +update-manager (0.37.1+svn20050304) hoary; urgency=low + + * new snapshot, use python-apt depcache now + + -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 4 Mar 2005 22:55:46 +0100 + +update-manager (0.37.1+svn20050301) hoary; urgency=low + + * new snapshot, better de.po, better i18n support + + -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 1 Mar 2005 12:06:39 +0100 + +update-manager (0.37.1+svn20050228.1) hoary; urgency=low + + * fixed a FTBFS (because of the "cleanfiles" in Makefile.am) + + -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 28 Feb 2005 19:12:28 +0100 + +update-manager (0.37.1+svn20050228) hoary; urgency=low + + * get the correct candidate version for updatable packages + (ubuntu #6825) + + -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 28 Feb 2005 11:00:38 +0100 + +update-manager (0.37.1+svn20050221) hoary; urgency=low + + * new svn snapshot, fixes: + - #6756: window size too big + - #6767, #6780: gnome-software-properties window broken + + -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 21 Feb 2005 11:30:52 +0100 + +update-manager (0.37.1+svn20050219) hoary; urgency=low + + * new svn snapshot, fixes: + - #6565, #6565 (typo) + - #6634 (remeber last details state) + - #6635 (progress dialog merged in main window) + - #6578 (hide details if no updates are available) + + -- Michael Vogt <michael.vogt@ubuntu.com> Sat, 19 Feb 2005 00:32:50 +0100 + +update-manager (0.37.1) hoary; urgency=low + + * typo (#6542) + * package list is sorted now + * applied "hide details if system is update-to-date" patch + (#6578, thanks to Jorge Bernal) + + -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 15 Feb 2005 10:49:17 +0100 + +update-manager (0.37) hoary; urgency=low + + * test for lock file and show error if the lock is already taken + * use utf8 for the description + * changelogs are fetched from http://changelogs.ubuntu.com/ now + (closes: #6315) + * handle 404 from http and set the error accordingly + * set main_window to not sensitive when downloading changelogs + * if no updates are available, hide the checkbox column (closes: #6443) + + -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 14 Feb 2005 15:08:06 +0100 + +update-manager (0.36.6) hoary; urgency=low + + * various bugfixes and embedding of synaptics progress windows + + -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 8 Feb 2005 22:12:53 +0100 + +update-manager (0.36.5) hoary; urgency=low + + * disabled sources can now be displayed too (optional preference) + * comments can be added + * various bugfixes + + -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 3 Feb 2005 16:21:32 +0100 + +update-manager (0.36.4) hoary; urgency=low + + * regression of the last upload fixed + * gnome-software-properties can be embedded into other windows now + (usefull for e.g. synaptic) + + -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 31 Jan 2005 22:59:35 +0100 + +update-manager (0.36.3) hoary; urgency=low + + * updates to the main window design + + -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 31 Jan 2005 16:59:41 +0100 + +update-manager (0.36.2) hoary; urgency=low + + * new main window layout in update-manager + (Michiel design, looks _so_ nice) + + -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 28 Jan 2005 12:20:57 +0100 + +update-manager (0.36.1) hoary; urgency=low + + * columns are resizable now (closes: #5541) + * lot's of typo/gui-glitches fixes (closes: #5200, #5816, #5801, #5802) + + -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 24 Jan 2005 16:14:45 +0100 + +update-manager (0.36) hoary; urgency=low + + * new upstream release, added support to control APT::Periodic::* + variables in gnome-software-properties + + -- Michael Vogt <mvo@debian.org> Wed, 19 Jan 2005 16:59:19 +0100 + +update-manager (0.35) hoary; urgency=low + + * new upstream release + - typo fix (closes: #5200) + + -- Michael Vogt <mvo@debian.org> Wed, 5 Jan 2005 12:23:55 +0100 + +update-manager (0.34) hoary; urgency=low + + * new upstream release + + -- Michael Vogt <mvo@debian.org> Fri, 24 Dec 2004 12:50:13 +0100 + +update-manager (0.33) hoary; urgency=low + + * new upstream release, featuring the gnome-software-properties + + -- Michael Vogt <mvo@debian.org> Tue, 30 Nov 2004 12:41:06 +0100 + +update-manager (0.32) hoary; urgency=low + + * new upstream release + + -- Michael Vogt <mvo@debian.org> Tue, 23 Nov 2004 15:28:09 +0100 + +update-manager (0.31-1ubuntu1) hoary; urgency=low + + * Update Build-Deps and fix FTBFS. + + -- Fabio M. Di Nitto <fabbione@fabbione.net> Mon, 22 Nov 2004 13:04:09 +0100 + +update-manager (0.31-1) hoary; urgency=low + + * new upstream release, added icon, desktop file and bugfix + + -- Michael Vogt <mvo@debian.org> Sat, 13 Nov 2004 11:30:37 +0100 + +update-manager (0.3-1) hoary; urgency=low + + * New upstream release, inital ubuntu release + + -- Michael Vogt <mvo@debian.org> Wed, 3 Nov 2004 14:48:14 +0100 + +update-manager (0.2-1) unstable; urgency=low + + * New upstream release. + + -- Michiel Sikkes <michiel@eyesopened.nl> Sat, 30 Oct 2004 02:22:12 +0200 + +update-manager (0.1-2) unstable; urgency=low + + * Um Yeah. + + -- Michiel Sikkes <m.sikkes@luon.net> Tue, 26 Oct 2004 13:16:13 +0200 + +update-manager (0.1-1) unstable; urgency=low + + * Initial Release. + + -- Michiel Sikkes <michiel@eyesopened.nl> Mon, 25 Oct 2004 21:49:07 +0200 + diff --git a/debian/compat b/debian/compat new file mode 100644 index 00000000..b8626c4c --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +4 diff --git a/debian/control b/debian/control new file mode 100644 index 00000000..8689ffbc --- /dev/null +++ b/debian/control @@ -0,0 +1,13 @@ +Source: update-manager +Section: gnome +Priority: optional +Maintainer: Michiel Sikkes <michiel@eyesopened.nl> +Build-Depends: debhelper (>= 4.0.0), libxml-parser-perl, scrollkeeper, intltool +Standards-Version: 3.6.1.1 + +Package: update-manager +Architecture: any +Depends: ${python:Depends}, ${misc:Depends}, python, python-gnome2, python-glade2, python-apt, synaptic (>= 0.57.4ubuntu4), lsb-release +Description: GNOME application that manages apt updates + This is the GNOME apt update manager. It checks for updates and lets the user + choose which to install. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 00000000..4850ff60 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,10 @@ +This package was debianized by Michiel Sikkes <michiel@eyesopened.nl> on +Mon, 25 Oct 2004 21:49:07 +0200. + +It was downloaded from http://luon.net/~michiels/ubuntu/ + +Upstream Author: Michiel Sikkes <michiel@eyesopened.nl> + +Copyright: + +GPL, see /usr/share/common-licenses/GPL
\ No newline at end of file diff --git a/debian/dirs b/debian/dirs new file mode 100644 index 00000000..83916ddf --- /dev/null +++ b/debian/dirs @@ -0,0 +1,2 @@ +var/lib/update-manager +usr/bin
\ No newline at end of file diff --git a/debian/docs b/debian/docs new file mode 100644 index 00000000..18c81ea3 --- /dev/null +++ b/debian/docs @@ -0,0 +1,4 @@ +README +TODO +AUTHORS +NEWS diff --git a/debian/rules b/debian/rules new file mode 100755 index 00000000..0bcb0ce1 --- /dev/null +++ b/debian/rules @@ -0,0 +1,111 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# GNU copyright 1997 to 1999 by Joey Hess. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + + +CFLAGS = -Wall -g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + INSTALL_PROGRAM += -s +endif + +config.status: configure + dh_testdir + # Add here commands to configure the package. + CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --sysconfdir=/etc + + +build: build-stamp + +build-stamp: config.status + dh_testdir + + # Add here commands to compile the package. + $(MAKE) + #/usr/bin/docbook-to-man debian/update-manager.sgml > update-manager.1 + + # intltool for rosetta + (cd po; /usr/bin/intltool-update -p --verbose || true) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp + + # Add here commands to clean up after the build process. + -$(MAKE) distclean +ifneq "$(wildcard /usr/share/misc/config.sub)" "" + cp -f /usr/share/misc/config.sub config.sub +endif +ifneq "$(wildcard /usr/share/misc/config.guess)" "" + cp -f /usr/share/misc/config.guess config.guess +endif + + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/update-manager. + $(MAKE) install DESTDIR=$(CURDIR)/debian/update-manager + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs ChangeLog + dh_installdocs + dh_scrollkeeper + dh_installexamples +# dh_install +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_python +# dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install diff --git a/distribution-data/Debian.info.in b/distribution-data/Debian.info.in new file mode 100644 index 00000000..7b19c7d4 --- /dev/null +++ b/distribution-data/Debian.info.in @@ -0,0 +1,57 @@ +_ChangelogURI: http://packages.debian.org/changelogs/pool/%s/%s/%s/%s_%s/changelog + +Suite: sarge +RepositoryType: deb +_BaseURI: http://http.us.debian.org/debian/ +_Description: Debian 3.1 "Sarge" +Component: main +Enabled: 1 +_CompDescription: Oficially supported +Component: contrib +Enabled: 0 +_CompDescription: DFSG-compatible Software with Non-Free Dependencies +Component: non-free +Enabled: 0 +_CompDescription: Non-DFSG-compatible Software + +Suite: sarge/updates +RepositoryType: deb +_BaseURI: http://security.debian.org/ +_Description: Debian 3.1 "Sarge" Security Updates +Component: main +Enabled: 1 +_CompDescription: Oficially supported +Component: contrib +Enabled: 0 +_CompDescription: DFSG-compatible Software with Non-Free Dependencies +Component: non-free +Enabled: 0 +_CompDescription: Non-DFSG-compatible Software + +Suite: etch +RepositoryType: deb +_BaseURI: http://http.us.debian.org/debian/ +_Description: Debian "Etch" (testing) +Component: main +Enabled: 1 +_CompDescription: Oficially supported +Component: contrib +Enabled: 0 +_CompDescription: DFSG-compatible Software with Non-Free Dependencies +Component: non-free +Enabled: 0 +_CompDescription: Non-DFSG-compatible Software + +Suite: sid +RepositoryType: deb +_BaseURI: http://http.us.debian.org/debian/ +_Description: Debian "Sid" (unstable) +Component: main +Enabled: 1 +_CompDescription: Oficially supported +Component: contrib +Enabled: 0 +_CompDescription: DFSG-compatible Software with Non-Free Dependencies +Component: non-free +Enabled: 0 +_CompDescription: Non-DFSG-compatible Software diff --git a/distribution-data/Makefile.am b/distribution-data/Makefile.am new file mode 100644 index 00000000..c9d63742 --- /dev/null +++ b/distribution-data/Makefile.am @@ -0,0 +1,11 @@ +%.info: %.info.in + sed 's/^_//g' < $< > $@ + $(INTLTOOL_EXTRACT) --type=gettext/rfc822deb $< + +datadir=$(prefix)/share/update-manager +dinfodir = $(datadir)/dists +dinfo_DATA = Debian.info Ubuntu.info + +EXTRA_DIST= $(dinfo_DATA) + +CLEANFILES = $(dinfo_DATA) $(dinfo_DATA:.info=.info.in.h) diff --git a/distribution-data/Ubuntu.info.in b/distribution-data/Ubuntu.info.in new file mode 100644 index 00000000..79d0ca2e --- /dev/null +++ b/distribution-data/Ubuntu.info.in @@ -0,0 +1,86 @@ +_ChangelogURI: http://changelogs.ubuntu.com/changelogs/pool/%s/%s/%s/%s_%s/changelog + +Suite: hoary +RepositoryType: deb +_BaseURI: http://archive.ubuntu.com/ubuntu/ +_Description: Ubuntu 5.04 "Hoary Hedgehog" +Component: main +Enabled: 1 +_CompDescription: Oficially supported +Component: restricted +Enabled: 1 +_CompDescription: Restricted copyright +Component: universe +Enabled: 0 +_CompDescription: Community maintained (Universe) +Component: multiverse +Enabled: 0 +_CompDescription: Non-free (Multiverse) + +Suite: hoary-security +RepositoryType: deb +_BaseURI: http://security.ubuntu.com/ubuntu/ +_Description: Ubuntu 5.04 Security Updates +Component: main +Enabled: 1 +_CompDescription: Oficially supported +Component: restricted +Enabled: 1 +_CompDescription: Restricted copyright +Component: universe +Enabled: 0 +_CompDescription: Community maintained (Universe) +Component: multiverse +Enabled: 0 +_CompDescription: Non-free (Multiverse) + +Suite: breezy +RepositoryType: deb +_BaseURI: http://archive.ubuntu.com/ubuntu/ +_Description: Breezy 5.10 "Breezy Badger" +Component: main +Enabled: 1 +_CompDescription: Oficially supported +Component: restricted +Enabled: 1 +_CompDescription: Restricted copyright +Component: universe +Enabled: 0 +_CompDescription: Community maintained (Universe) +Component: multiverse +Enabled: 0 +_CompDescription: Non-free (Multiverse) + +Suite: breezy-security +RepositoryType: deb +_BaseURI: http://security.ubuntu.com/ubuntu/ +_Description: Ubuntu 5.10 Security Updates +Component: main +Enabled: 1 +_CompDescription: Oficially supported +Component: restricted +Enabled: 1 +_CompDescription: Restricted copyright +Component: universe +Enabled: 0 +_CompDescription: Community maintained (Universe) +Component: multiverse +Enabled: 0 +_CompDescription: Non-free (Multiverse) + +Suite: breezy-updates +RepositoryType: deb +_BaseURI: http://archive.ubuntu.com/ubuntu/ +_Description: Ubuntu 5.10 Updates +Component: main +Enabled: 1 +_CompDescription: Oficially supported +Component: restricted +Enabled: 1 +_CompDescription: Restricted copyright +Component: universe +Enabled: 0 +_CompDescription: Community maintained (Universe) +Component: multiverse +Enabled: 0 +_CompDescription: Non-free (Multiverse) diff --git a/help/C/Makefile.am b/help/C/Makefile.am new file mode 100644 index 00000000..f1c36ffb --- /dev/null +++ b/help/C/Makefile.am @@ -0,0 +1,7 @@ +figdir = figures +docname = update-manager +lang = C +omffile = update-manager-C.omf +entities = fdl-appendix.xml legal.xml +include $(top_srcdir)/xmldocs.make +dist-hook: app-dist-hook diff --git a/help/C/fdl-appendix.xml b/help/C/fdl-appendix.xml new file mode 100644 index 00000000..23badd79 --- /dev/null +++ b/help/C/fdl-appendix.xml @@ -0,0 +1,655 @@ +<!-- + The GNU Free Documentation License 1.1 in DocBook + Markup by Eric Baudais <baudais@okstate.edu> + Maintained by the GNOME Documentation Project + http://developer.gnome.org/projects/gdp + Version: 1.0.1 + Last Modified: Nov 16, 2000 +--> + +<appendix id="fdl"> + <appendixinfo> + <releaseinfo> + Version 1.1, March 2000 + </releaseinfo> + <copyright> + <year>2000</year><holder>Free Software Foundation, Inc.</holder> + </copyright> + <legalnotice id="fdl-legalnotice"> + <para> + <address>Free Software Foundation, Inc. <street>59 Temple Place, + Suite 330</street>, <city>Boston</city>, <state>MA</state> + <postcode>02111-1307</postcode> <country>USA</country></address> + Everyone is permitted to copy and distribute verbatim copies of this + license document, but changing it is not allowed. + </para> + </legalnotice> + </appendixinfo> + <title>GNU Free Documentation License</title> + + <sect1 id="fdl-preamble"> + <title>0. PREAMBLE</title> + <para> + The purpose of this License is to make a manual, textbook, or + other written document <quote>free</quote> in the sense of + freedom: to assure everyone the effective freedom to copy and + redistribute it, with or without modifying it, either + commercially or noncommercially. Secondarily, this License + preserves for the author and publisher a way to get credit for + their work, while not being considered responsible for + modifications made by others. + </para> + + <para> + This License is a kind of <quote>copyleft</quote>, which means + that derivative works of the document must themselves be free in + the same sense. It complements the GNU General Public License, + which is a copyleft license designed for free software. + </para> + + <para> + We have designed this License in order to use it for manuals for + free software, because free software needs free documentation: a + free program should come with manuals providing the same + freedoms that the software does. But this License is not limited + to software manuals; it can be used for any textual work, + regardless of subject matter or whether it is published as a + printed book. We recommend this License principally for works + whose purpose is instruction or reference. + </para> + </sect1> + <sect1 id="fdl-section1"> + <title>1. APPLICABILITY AND DEFINITIONS</title> + <para id="fdl-document"> + This License applies to any manual or other work that contains a + notice placed by the copyright holder saying it can be + distributed under the terms of this License. The + <quote>Document</quote>, below, refers to any such manual or + work. Any member of the public is a licensee, and is addressed + as <quote>you</quote>. + </para> + + <para id="fdl-modified"> + A <quote>Modified Version</quote> of the Document means any work + containing the Document or a portion of it, either copied + verbatim, or with modifications and/or translated into another + language. + </para> + + <para id="fdl-secondary"> + A <quote>Secondary Section</quote> is a named appendix or a + front-matter section of the <link + linkend="fdl-document">Document</link> that deals exclusively + with the relationship of the publishers or authors of the + Document to the Document's overall subject (or to related + matters) and contains nothing that could fall directly within + that overall subject. (For example, if the Document is in part a + textbook of mathematics, a Secondary Section may not explain any + mathematics.) The relationship could be a matter of historical + connection with the subject or with related matters, or of + legal, commercial, philosophical, ethical or political position + regarding them. + </para> + + <para id="fdl-invariant"> + The <quote>Invariant Sections</quote> are certain <link + linkend="fdl-secondary"> Secondary Sections</link> whose titles + are designated, as being those of Invariant Sections, in the + notice that says that the <link + linkend="fdl-document">Document</link> is released under this + License. + </para> + + <para id="fdl-cover-texts"> + The <quote>Cover Texts</quote> are certain short passages of + text that are listed, as Front-Cover Texts or Back-Cover Texts, + in the notice that says that the <link + linkend="fdl-document">Document</link> is released under this + License. + </para> + + <para id="fdl-transparent"> + A <quote>Transparent</quote> copy of the <link + linkend="fdl-document"> Document</link> means a machine-readable + copy, represented in a format whose specification is available + to the general public, whose contents can be viewed and edited + directly and straightforwardly with generic text editors or (for + images composed of pixels) generic paint programs or (for + drawings) some widely available drawing editor, and that is + suitable for input to text formatters or for automatic + translation to a variety of formats suitable for input to text + formatters. A copy made in an otherwise Transparent file format + whose markup has been designed to thwart or discourage + subsequent modification by readers is not Transparent. A copy + that is not <quote>Transparent</quote> is called + <quote>Opaque</quote>. + </para> + + <para> + Examples of suitable formats for Transparent copies include + plain ASCII without markup, Texinfo input format, LaTeX input + format, SGML or XML using a publicly available DTD, and + standard-conforming simple HTML designed for human + modification. Opaque formats include PostScript, PDF, + proprietary formats that can be read and edited only by + proprietary word processors, SGML or XML for which the DTD + and/or processing tools are not generally available, and the + machine-generated HTML produced by some word processors for + output purposes only. + </para> + + <para id="fdl-title-page"> + The <quote>Title Page</quote> means, for a printed book, the + title page itself, plus such following pages as are needed to + hold, legibly, the material this License requires to appear in + the title page. For works in formats which do not have any title + page as such, <quote>Title Page</quote> means the text near the + most prominent appearance of the work's title, preceding the + beginning of the body of the text. + </para> + </sect1> + + <sect1 id="fdl-section2"> + <title>2. VERBATIM COPYING</title> + <para> + You may copy and distribute the <link + linkend="fdl-document">Document</link> in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License + applies to the Document are reproduced in all copies, and that + you add no other conditions whatsoever to those of this + License. You may not use technical measures to obstruct or + control the reading or further copying of the copies you make or + distribute. However, you may accept compensation in exchange for + copies. If you distribute a large enough number of copies you + must also follow the conditions in <link + linkend="fdl-section3">section 3</link>. + </para> + + <para> + You may also lend copies, under the same conditions stated + above, and you may publicly display copies. + </para> + </sect1> + + <sect1 id="fdl-section3"> + <title>3. COPYING IN QUANTITY</title> + <para> + If you publish printed copies of the <link + linkend="fdl-document">Document</link> numbering more than 100, + and the Document's license notice requires <link + linkend="fdl-cover-texts">Cover Texts</link>, you must enclose + the copies in covers that carry, clearly and legibly, all these + Cover Texts: Front-Cover Texts on the front cover, and + Back-Cover Texts on the back cover. Both covers must also + clearly and legibly identify you as the publisher of these + copies. The front cover must present the full title with all + words of the title equally prominent and visible. You may add + other material on the covers in addition. Copying with changes + limited to the covers, as long as they preserve the title of the + <link linkend="fdl-document">Document</link> and satisfy these + conditions, can be treated as verbatim copying in other + respects. + </para> + + <para> + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto + adjacent pages. + </para> + + <para> + If you publish or distribute <link + linkend="fdl-transparent">Opaque</link> copies of the <link + linkend="fdl-document">Document</link> numbering more than 100, + you must either include a machine-readable <link + linkend="fdl-transparent">Transparent</link> copy along with + each Opaque copy, or state in or with each Opaque copy a + publicly-accessible computer-network location containing a + complete Transparent copy of the Document, free of added + material, which the general network-using public has access to + download anonymously at no charge using public-standard network + protocols. If you use the latter option, you must take + reasonably prudent steps, when you begin distribution of Opaque + copies in quantity, to ensure that this Transparent copy will + remain thus accessible at the stated location until at least one + year after the last time you distribute an Opaque copy (directly + or through your agents or retailers) of that edition to the + public. + </para> + + <para> + It is requested, but not required, that you contact the authors + of the <link linkend="fdl-document">Document</link> well before + redistributing any large number of copies, to give them a chance + to provide you with an updated version of the Document. + </para> + </sect1> + + <sect1 id="fdl-section4"> + <title>4. MODIFICATIONS</title> + <para> + You may copy and distribute a <link + linkend="fdl-modified">Modified Version</link> of the <link + linkend="fdl-document">Document</link> under the conditions of + sections <link linkend="fdl-section2">2</link> and <link + linkend="fdl-section3">3</link> above, provided that you release + the Modified Version under precisely this License, with the + Modified Version filling the role of the Document, thus + licensing distribution and modification of the Modified Version + to whoever possesses a copy of it. In addition, you must do + these things in the Modified Version: + </para> + + <orderedlist numeration="upperalpha"> + <listitem> + + + <para> + Use in the <link linkend="fdl-title-page">Title + Page</link> (and on the covers, if any) a title distinct + from that of the <link + linkend="fdl-document">Document</link>, and from those of + previous versions (which should, if there were any, be + listed in the History section of the Document). You may + use the same title as a previous version if the original + publisher of that version gives permission. + </para> + + </listitem> + + <listitem> + + + <para> + List on the <link linkend="fdl-title-page">Title + Page</link>, as authors, one or more persons or entities + responsible for authorship of the modifications in the + <link linkend="fdl-modified">Modified Version</link>, + together with at least five of the principal authors of + the <link linkend="fdl-document">Document</link> (all of + its principal authors, if it has less than five). + </para> + + </listitem> + + <listitem> + + <para> + State on the <link linkend="fdl-title-page">Title + Page</link> the name of the publisher of the <link + linkend="fdl-modified">Modified Version</link>, as the + publisher. + </para> + + </listitem> + + <listitem> + + <para> + Preserve all the copyright notices of the <link + linkend="fdl-document">Document</link>. + </para> + + </listitem> + + <listitem> + + <para> + Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + </para> + + </listitem> + + <listitem> + + <para> + Include, immediately after the copyright notices, a + license notice giving the public permission to use the + <link linkend="fdl-modified">Modified Version</link> under + the terms of this License, in the form shown in the + Addendum below. + </para> + + </listitem> + + <listitem> + + <para> + Preserve in that license notice the full lists of <link + linkend="fdl-invariant"> Invariant Sections</link> and + required <link linkend="fdl-cover-texts">Cover + Texts</link> given in the <link + linkend="fdl-document">Document's</link> license notice. + </para> + + </listitem> + + <listitem> + + <para> + Include an unaltered copy of this License. + </para> + + </listitem> + + <listitem> + + <para> + Preserve the section entitled <quote>History</quote>, and + its title, and add to it an item stating at least the + title, year, new authors, and publisher of the <link + linkend="fdl-modified">Modified Version </link>as given on + the <link linkend="fdl-title-page">Title Page</link>. If + there is no section entitled <quote>History</quote> in the + <link linkend="fdl-document">Document</link>, create one + stating the title, year, authors, and publisher of the + Document as given on its Title Page, then add an item + describing the Modified Version as stated in the previous + sentence. + </para> + + </listitem> + + <listitem> + + <para> + Preserve the network location, if any, given in the <link + linkend="fdl-document">Document</link> for public access + to a <link linkend="fdl-transparent">Transparent</link> + copy of the Document, and likewise the network locations + given in the Document for previous versions it was based + on. These may be placed in the <quote>History</quote> + section. You may omit a network location for a work that + was published at least four years before the Document + itself, or if the original publisher of the version it + refers to gives permission. + </para> + + </listitem> + + <listitem> + + <para> + In any section entitled <quote>Acknowledgements</quote> or + <quote>Dedications</quote>, preserve the section's title, + and preserve in the section all the substance and tone of + each of the contributor acknowledgements and/or + dedications given therein. + </para> + + </listitem> + + <listitem> + + <para> + Preserve all the <link linkend="fdl-invariant">Invariant + Sections</link> of the <link + linkend="fdl-document">Document</link>, unaltered in their + text and in their titles. Section numbers or the + equivalent are not considered part of the section titles. + </para> + + </listitem> + + <listitem> + + <para> + Delete any section entitled + <quote>Endorsements</quote>. Such a section may not be + included in the <link linkend="fdl-modified">Modified + Version</link>. + </para> + + </listitem> + + <listitem> + + <para> + Do not retitle any existing section as + <quote>Endorsements</quote> or to conflict in title with + any <link linkend="fdl-invariant">Invariant + Section</link>. + </para> + + </listitem> + </orderedlist> + + <para> + If the <link linkend="fdl-modified">Modified Version</link> + includes new front-matter sections or appendices that qualify as + <link linkend="fdl-secondary">Secondary Sections</link> and + contain no material copied from the Document, you may at your + option designate some or all of these sections as invariant. To + do this, add their titles to the list of <link + linkend="fdl-invariant">Invariant Sections</link> in the + Modified Version's license notice. These titles must be + distinct from any other section titles. + </para> + + <para> + You may add a section entitled <quote>Endorsements</quote>, + provided it contains nothing but endorsements of your <link + linkend="fdl-modified">Modified Version</link> by various + parties--for example, statements of peer review or that the text + has been approved by an organization as the authoritative + definition of a standard. + </para> + + <para> + You may add a passage of up to five words as a <link + linkend="fdl-cover-texts">Front-Cover Text</link>, and a passage + of up to 25 words as a <link + linkend="fdl-cover-texts">Back-Cover Text</link>, to the end of + the list of <link linkend="fdl-cover-texts">Cover Texts</link> + in the <link linkend="fdl-modified">Modified Version</link>. + Only one passage of Front-Cover Text and one of Back-Cover Text + may be added by (or through arrangements made by) any one + entity. If the <link linkend="fdl-document">Document</link> + already includes a cover text for the same cover, previously + added by you or by arrangement made by the same entity you are + acting on behalf of, you may not add another; but you may + replace the old one, on explicit permission from the previous + publisher that added the old one. + </para> + + <para> + The author(s) and publisher(s) of the <link + linkend="fdl-document">Document</link> do not by this License + give permission to use their names for publicity for or to + assert or imply endorsement of any <link + linkend="fdl-modified">Modified Version </link>. + </para> + </sect1> + + <sect1 id="fdl-section5"> + <title>5. COMBINING DOCUMENTS</title> + <para> + You may combine the <link linkend="fdl-document">Document</link> + with other documents released under this License, under the + terms defined in <link linkend="fdl-section4">section 4</link> + above for modified versions, provided that you include in the + combination all of the <link linkend="fdl-invariant">Invariant + Sections</link> of all of the original documents, unmodified, + and list them all as Invariant Sections of your combined work in + its license notice. + </para> + + <para> + The combined work need only contain one copy of this License, + and multiple identical <link linkend="fdl-invariant">Invariant + Sections</link> may be replaced with a single copy. If there are + multiple Invariant Sections with the same name but different + contents, make the title of each such section unique by adding + at the end of it, in parentheses, the name of the original + author or publisher of that section if known, or else a unique + number. Make the same adjustment to the section titles in the + list of Invariant Sections in the license notice of the combined + work. + </para> + + <para> + In the combination, you must combine any sections entitled + <quote>History</quote> in the various original documents, + forming one section entitled <quote>History</quote>; likewise + combine any sections entitled <quote>Acknowledgements</quote>, + and any sections entitled <quote>Dedications</quote>. You must + delete all sections entitled <quote>Endorsements.</quote> + </para> + </sect1> + + <sect1 id="fdl-section6"> + <title>6. COLLECTIONS OF DOCUMENTS</title> + <para> + You may make a collection consisting of the <link + linkend="fdl-document">Document</link> and other documents + released under this License, and replace the individual copies + of this License in the various documents with a single copy that + is included in the collection, provided that you follow the + rules of this License for verbatim copying of each of the + documents in all other respects. + </para> + + <para> + You may extract a single document from such a collection, and + dispbibute it individually under this License, provided you + insert a copy of this License into the extracted document, and + follow this License in all other respects regarding verbatim + copying of that document. + </para> + </sect1> + + <sect1 id="fdl-section7"> + <title>7. AGGREGATION WITH INDEPENDENT WORKS</title> + <para> + A compilation of the <link + linkend="fdl-document">Document</link> or its derivatives with + other separate and independent documents or works, in or on a + volume of a storage or distribution medium, does not as a whole + count as a <link linkend="fdl-modified">Modified Version</link> + of the Document, provided no compilation copyright is claimed + for the compilation. Such a compilation is called an + <quote>aggregate</quote>, and this License does not apply to the + other self-contained works thus compiled with the Document , on + account of their being thus compiled, if they are not themselves + derivative works of the Document. If the <link + linkend="fdl-cover-texts">Cover Text</link> requirement of <link + linkend="fdl-section3">section 3</link> is applicable to these + copies of the Document, then if the Document is less than one + quarter of the entire aggregate, the Document's Cover Texts may + be placed on covers that surround only the Document within the + aggregate. Otherwise they must appear on covers around the whole + aggregate. + </para> + </sect1> + + <sect1 id="fdl-section8"> + <title>8. TRANSLATION</title> + <para> + Translation is considered a kind of modification, so you may + distribute translations of the <link + linkend="fdl-document">Document</link> under the terms of <link + linkend="fdl-section4">section 4</link>. Replacing <link + linkend="fdl-invariant"> Invariant Sections</link> with + translations requires special permission from their copyright + holders, but you may include translations of some or all + Invariant Sections in addition to the original versions of these + Invariant Sections. You may include a translation of this + License provided that you also include the original English + version of this License. In case of a disagreement between the + translation and the original English version of this License, + the original English version will prevail. + </para> + </sect1> + + <sect1 id="fdl-section9"> + <title>9. TERMINATION</title> + <para> + You may not copy, modify, sublicense, or distribute the <link + linkend="fdl-document">Document</link> except as expressly + provided for under this License. Any other attempt to copy, + modify, sublicense or distribute the Document is void, and will + automatically terminate your rights under this License. However, + parties who have received copies, or rights, from you under this + License will not have their licenses terminated so long as such + parties remain in full compliance. + </para> + </sect1> + + <sect1 id="fdl-section10"> + <title>10. FUTURE REVISIONS OF THIS LICENSE</title> + <para> + The <ulink type="http" + url="http://www.gnu.org/fsf/fsf.html">Free Software + Foundation</ulink> may publish new, revised versions of the GNU + Free Documentation License from time to time. Such new versions + will be similar in spirit to the present version, but may differ + in detail to address new problems or concerns. See <ulink + type="http" + url="http://www.gnu.org/copyleft">http://www.gnu.org/copyleft/</ulink>. + </para> + + <para> + Each version of the License is given a distinguishing version + number. If the <link linkend="fdl-document">Document</link> + specifies that a particular numbered version of this License + <quote>or any later version</quote> applies to it, you have the + option of following the terms and conditions either of that + specified version or of any later version that has been + published (not as a draft) by the Free Software Foundation. If + the Document does not specify a version number of this License, + you may choose any version ever published (not as a draft) by + the Free Software Foundation. + </para> + </sect1> + + <sect1 id="fdl-using"> + <title>Addendum</title> + <para> + To use this License in a document you have written, include a copy of + the License in the document and put the following copyright and + license notices just after the title page: + </para> + + <blockquote> + <para> + Copyright YEAR YOUR NAME. + </para> + <para> + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation + License, Version 1.1 or any later version published by the + Free Software Foundation; with the <link + linkend="fdl-invariant">Invariant Sections</link> being LIST + THEIR TITLES, with the <link + linkend="fdl-cover-texts">Front-Cover Texts</link> being LIST, + and with the <link linkend="fdl-cover-texts">Back-Cover + Texts</link> being LIST. A copy of the license is included in + the section entitled <quote>GNU Free Documentation + License</quote>. + </para> + </blockquote> + + <para> + If you have no <link linkend="fdl-invariant">Invariant + Sections</link>, write <quote>with no Invariant Sections</quote> + instead of saying which ones are invariant. If you have no + <link linkend="fdl-cover-texts">Front-Cover Texts</link>, write + <quote>no Front-Cover Texts</quote> instead of + <quote>Front-Cover Texts being LIST</quote>; likewise for <link + linkend="fdl-cover-texts">Back-Cover Texts</link>. + </para> + + <para> + If your document contains nontrivial examples of program code, + we recommend releasing these examples in parallel under your + choice of free software license, such as the <ulink type="http" + url="http://www.gnu.org/copyleft/gpl.html"> GNU General Public + License</ulink>, to permit their use in free software. + </para> + </sect1> +</appendix> + + diff --git a/help/C/figures/authentication-add.png b/help/C/figures/authentication-add.png Binary files differnew file mode 100644 index 00000000..004b3fa1 --- /dev/null +++ b/help/C/figures/authentication-add.png diff --git a/help/C/figures/authentication.png b/help/C/figures/authentication.png Binary files differnew file mode 100644 index 00000000..07227a2e --- /dev/null +++ b/help/C/figures/authentication.png diff --git a/help/C/figures/download-progressbar.png b/help/C/figures/download-progressbar.png Binary files differnew file mode 100644 index 00000000..9f096460 --- /dev/null +++ b/help/C/figures/download-progressbar.png diff --git a/help/C/figures/failed-repos.png b/help/C/figures/failed-repos.png Binary files differnew file mode 100644 index 00000000..01b0d0e9 --- /dev/null +++ b/help/C/figures/failed-repos.png diff --git a/help/C/figures/install-progress-terminal.png b/help/C/figures/install-progress-terminal.png Binary files differnew file mode 100644 index 00000000..06111c61 --- /dev/null +++ b/help/C/figures/install-progress-terminal.png diff --git a/help/C/figures/install-progress.png b/help/C/figures/install-progress.png Binary files differnew file mode 100644 index 00000000..699f6219 --- /dev/null +++ b/help/C/figures/install-progress.png diff --git a/help/C/figures/main-system-updates-available.png b/help/C/figures/main-system-updates-available.png Binary files differnew file mode 100644 index 00000000..24dc5481 --- /dev/null +++ b/help/C/figures/main-system-updates-available.png diff --git a/help/C/figures/main-system-updates-summary-details.png b/help/C/figures/main-system-updates-summary-details.png Binary files differnew file mode 100644 index 00000000..08860ec1 --- /dev/null +++ b/help/C/figures/main-system-updates-summary-details.png diff --git a/help/C/figures/main-system-updates-summary.png b/help/C/figures/main-system-updates-summary.png Binary files differnew file mode 100644 index 00000000..fefea5dd --- /dev/null +++ b/help/C/figures/main-system-updates-summary.png diff --git a/help/C/figures/main-system-uptodate.png b/help/C/figures/main-system-uptodate.png Binary files differnew file mode 100644 index 00000000..d8c10d5f --- /dev/null +++ b/help/C/figures/main-system-uptodate.png diff --git a/help/C/figures/main-view-monitor-update.png b/help/C/figures/main-view-monitor-update.png Binary files differnew file mode 100644 index 00000000..b8b2a80b --- /dev/null +++ b/help/C/figures/main-view-monitor-update.png diff --git a/help/C/figures/main-view-update-detail.png b/help/C/figures/main-view-update-detail.png Binary files differnew file mode 100644 index 00000000..d3f8f12c --- /dev/null +++ b/help/C/figures/main-view-update-detail.png diff --git a/help/C/figures/preferences-add-custom.png b/help/C/figures/preferences-add-custom.png Binary files differnew file mode 100644 index 00000000..97e709f6 --- /dev/null +++ b/help/C/figures/preferences-add-custom.png diff --git a/help/C/figures/preferences-add.png b/help/C/figures/preferences-add.png Binary files differnew file mode 100644 index 00000000..e77f7523 --- /dev/null +++ b/help/C/figures/preferences-add.png diff --git a/help/C/figures/preferences-edit.png b/help/C/figures/preferences-edit.png Binary files differnew file mode 100644 index 00000000..5d713264 --- /dev/null +++ b/help/C/figures/preferences-edit.png diff --git a/help/C/figures/preferences-repos-changeinfo.png b/help/C/figures/preferences-repos-changeinfo.png Binary files differnew file mode 100644 index 00000000..e1fbbd9e --- /dev/null +++ b/help/C/figures/preferences-repos-changeinfo.png diff --git a/help/C/figures/preferences.png b/help/C/figures/preferences.png Binary files differnew file mode 100644 index 00000000..e59f2c29 --- /dev/null +++ b/help/C/figures/preferences.png diff --git a/help/C/figures/reload-package-info.png b/help/C/figures/reload-package-info.png Binary files differnew file mode 100644 index 00000000..76156b2e --- /dev/null +++ b/help/C/figures/reload-package-info.png diff --git a/help/C/figures/settings.png b/help/C/figures/settings.png Binary files differnew file mode 100644 index 00000000..2084c2ef --- /dev/null +++ b/help/C/figures/settings.png diff --git a/help/C/figures/synaptic-toggle-install-view.png b/help/C/figures/synaptic-toggle-install-view.png Binary files differnew file mode 100644 index 00000000..be04d24e --- /dev/null +++ b/help/C/figures/synaptic-toggle-install-view.png diff --git a/help/C/legal.xml b/help/C/legal.xml new file mode 100644 index 00000000..ac97e1de --- /dev/null +++ b/help/C/legal.xml @@ -0,0 +1,76 @@ + <legalnotice id="legalnotice"> + <para> + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation + License (GFDL), Version 1.1 or any later version published + by the Free Software Foundation with no Invariant Sections, + no Front-Cover Texts, and no Back-Cover Texts. You can find + a copy of the GFDL at this <ulink type="help" + url="ghelp:fdl">link</ulink> or in the file COPYING-DOCS + distributed with this manual. + </para> + <para> This manual is part of a collection of GNOME manuals + distributed under the GFDL. If you want to distribute this + manual separately from the collection, you can do so by + adding a copy of the license to the manual, as described in + section 6 of the license. + </para> + + <para> + Many of the names used by companies to distinguish their + products and services are claimed as trademarks. Where those + names appear in any GNOME documentation, and the members of + the GNOME Documentation Project are made aware of those + trademarks, then the names are in capital letters or initial + capital letters. + </para> + + <para> + DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED + UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE + WITH THE FURTHER UNDERSTANDING THAT: + + <orderedlist> + <listitem> + <para>DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR + IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES + THAT THE DOCUMENT OR MODIFIED VERSION OF THE + DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR + A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE + RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE + OF THE DOCUMENT OR MODIFIED VERSION OF THE + DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR + MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY + CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY + SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS + LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED + VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER + EXCEPT UNDER THIS DISCLAIMER; AND + </para> + </listitem> + <listitem> + <para>UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL + THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), + CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, + INITIAL WRITER, ANY CONTRIBUTOR, OR ANY + DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION + OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH + PARTIES, BE LIABLE TO ANY PERSON FOR ANY + DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR + CONSEQUENTIAL DAMAGES OF ANY CHARACTER + INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS + OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR + MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR + LOSSES ARISING OUT OF OR RELATING TO USE OF THE + DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, + EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF + THE POSSIBILITY OF SUCH DAMAGES. + </para> + </listitem> + </orderedlist> + </para> + </legalnotice> + diff --git a/help/C/update-manager-C.omf b/help/C/update-manager-C.omf new file mode 100644 index 00000000..a4e6aabc --- /dev/null +++ b/help/C/update-manager-C.omf @@ -0,0 +1,18 @@ +<?xml version="1.0" standalone="no"?> +<omf> + <resource> + <creator>sean@inwords.co.za (Sean Wheller) </creator> + <title>Update Manager Manual </title> + <date>2005-03-04 </date> + <version identifier="0.0.1" date="2005-03-04" description="First Release"/> + <subject category="System|Administration"/> + <description> This document explains how to use the Update Manager. </description> + <type>manual </type> + <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/> + <identifier url=""/> + <language code="C"/> + <relation seriesid="e7ae3bcc-8ce0-11d9-8fa9-d1fb3a9076bb"/> + <rights type="GNU FDL" license.version="1.1" license="http://www.gnu.org/licenses/fdl.html" + holder="In Words"/> + </resource> +</omf> diff --git a/help/C/update-manager-C.omf.out b/help/C/update-manager-C.omf.out new file mode 100644 index 00000000..af5d465e --- /dev/null +++ b/help/C/update-manager-C.omf.out @@ -0,0 +1,17 @@ +<?xml version="1.0" standalone="no"?> +<omf> + <resource> + <creator>sean@inwords.co.za (Sean Wheller) </creator> + <title>Update Manager Manual </title> + <date>2005-03-04 </date> + <version identifier="0.0.1" date="2005-03-04" description="First Release"/> + <subject category="System|Administration"/> + <description> This document explains how to use the Update Manager. </description> + <type>manual </type> + <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/> + <identifier url="file:/tmp/lala/share/gnome/help/update-manager/C/update-manager.xml"/> + <language code="C"/> + <relation seriesid="e7ae3bcc-8ce0-11d9-8fa9-d1fb3a9076bb"/> + <rights type="GNU FDL" license.version="1.1" license="http://www.gnu.org/licenses/fdl.html" holder="In Words"/> + </resource> +</omf> diff --git a/help/C/update-manager.xml b/help/C/update-manager.xml new file mode 100644 index 00000000..5d0875f3 --- /dev/null +++ b/help/C/update-manager.xml @@ -0,0 +1,1070 @@ +<?xml version="1.0"?> +<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [ + <!ENTITY legal SYSTEM "legal.xml"> + <!ENTITY GFDL SYSTEM "fdl-appendix.xml"> +]> +<?yelp:chunk-depth 4?> +<!-- + (Do not remove this comment block.) + Version: 0.0.3 + Last modified: March 26, 2005 + Maintainers: + Sean Wheller <sean@inwords.co.za> + Jeff Schering <jeffschering@gmail.com> + + Translators: + (translators put your name and email here) +--> +<!-- =============Document Header ============================= --> +<article id="index" lang="en"> + <!-- please do not change the id; for translations, change lang to --> + <!-- appropriate code --> + <articleinfo> + <title>Update Manager Manual</title> + <copyright> + <year>2005</year> + <holder>In Words</holder> + </copyright> + <!-- translators: uncomment this: + + <copyright> + <year>2000</year> + <holder>ME-THE-TRANSLATOR (Latin translation)</holder> + </copyright> + + --> + <!-- An address can be added to the publisher information. If a role is + not specified, the publisher/author is the same for all versions of the + document. --> + <publisher> + <!--<publishername> GNOME Documentation Project </publishername>--> + <publishername> + <ulink url="http://www.inwords.co.za">In Words Techdoc Solutions</ulink> + </publishername> + </publisher> &legal; + <!-- This file contains link to license for the documentation (GNU FDL), and + other legal stuff such as "NO WARRANTY" statement. Please do not change + any of this. --> + <authorgroup> + <author> + <firstname>Sean</firstname> + <surname>Wheller</surname> + <affiliation> + <orgname>In Words</orgname> + <address> + <email>sean@inwords.co.za</email> + </address> + </affiliation> + </author> + <othercredit role="editor"> + <firstname>Jeff</firstname> + <surname>Schering</surname> + <contrib>Editor</contrib> + </othercredit> + <!-- This is appropriate place for other contributors: translators, + maintainers, etc. Commented out by default. + <othercredit role="translator"> + <firstname>Latin</firstname> + <surname>Translator 1</surname> + <affiliation> + <orgname>Latin Translation Team</orgname> + <address> <email>translator@gnome.org</email> </address> + </affiliation> + <contrib>Latin translation</contrib> + </othercredit> +--> + </authorgroup> + <!-- According to GNU FDL, revision history is mandatory if you are --> + <!-- modifying/reusing someone else's document. If not, you can omit it. --> + <!-- Remember to remove the &manrevision; entity from the revision entries other +--> + <!-- than the current revision. --> + <!-- The revision numbering system for GNOME manuals is as follows: --> + <!-- * the revision number consists of two components --> + <!-- * the first component of the revision number reflects the release version of the GNOME desktop. --> + <!-- * the second component of the revision number is a decimal unit that is incremented with each revision of the manual. --> + <!-- For example, if the GNOME desktop release is V2.x, the first version of the manual that --> + <!-- is written in that desktop timeframe is V2.0, the second version of the manual is V2.1, etc. --> + <!-- When the desktop release version changes to V3.x, the revision number of the manual changes --> + <!-- to V3.0, and so on. --> + <revhistory> + <revision> + <revnumber>V0.0.1</revnumber> + <date>06/03/2005</date> + <revdescription> + <para role="author">First version of the manual created in accordance + with Update Manager V0.37.1+svn20050301. Documentation Writer + <email>sean@inwords.co.za</email> + </para> + <para role="publisher"> + <ulink url="http://www.inwords.co.za">InWords Techdoc + Solutions</ulink> + </para> + </revdescription> + </revision> + <revision> + <revnumber>V0.0.2</revnumber> + <date>26/03/2005</date> + <revdescription> + <para role="author">Edit of V0.0.1 to make some nodes shorter. + Editor <email>jeffschering@gmail.com</email> + </para> + <para role="publisher"> + <ulink url="http://www.inwords.co.za">InWords Techdoc + Solutions</ulink> + </para> + </revdescription> + </revision> + <revision> + <revnumber>V0.0.3</revnumber> + <date>26/03/2005</date> + <revdescription> + <para role="author">Added Help, Add CD, Settings options. + <email>sean@inwords.co.za</email> + </para> + <para role="publisher"> + <ulink url="http://www.inwords.co.za">InWords Techdoc + Solutions</ulink> + </para> + </revdescription> + </revision> + </revhistory> + <releaseinfo>This manual explains how to use Update Manager an apt update + management application for the GNOME desktop created by the Ubuntu Linux + project.</releaseinfo> + <legalnotice> + <title>Feedback</title> + <!--<para>To report a bug or make a suggestion regarding this package or this + manual, follow the directions in the <ulink url="ghelp:gnome-feedback" + type="help">GNOME Feedback Page</ulink>. </para>--> + <para>To report a bug or make a suggestion regarding this package or this + manual, send mail to <email>ubuntu-users@lists.ubuntu.com</email>.</para> + <!-- Translators may also add here feedback address for translations --> + </legalnotice> + </articleinfo> + <!-- ============= Document Body ============================= --> + <!-- ============= Introduction ============================== --> + <sect1 id="intro"> + <title>Introduction</title> + <para> + <application>Update Manager</application> is a graphical interface to the + software update features of <application>Advanced Packaging + Tool</application> (<acronym>APT</acronym>). <acronym>APT</acronym> is a + command line tool for installing, updating, and removing software.</para> + <para> + <application>Update Manager</application> makes the task of checking for + and installing software updates as effortless as possible. + <application>Update Manager</application> keeps your system up-to-date + by checking Ubuntu's software repositories for new versions of installed + software. The new versions usually contain bug fixes and new features, but + may also contain security updates. Use Update Manager on a regular basis + to ensure that your system is as up-to-date and secure as possible.</para> + <para> + <application>Update Manager</application> decides which software needs to + be updated by comparing the version numbers of individual software files + on your computer with the software in one or more software repositories. + The software repositories are usually on remote network servers, but may + also be on a CD-ROM. Whenever <application>Update Manager</application> + notifies you that an update is available, you may choose to install the + update immediately, or to ignore the update.</para> + <para> + <application>Update Manager</application> has settings and preferences + which allow you to: set how often it checks for updates, add and remove + software repositories, and manage repository authentication keys. </para> + </sect1> + <sect1 id="getting-started"> + <title>Getting Started</title> + <sect2 id="installation"> + <title>Installation</title> + <para> + <application>Update Manager</application> is installed as part of the + Ubuntu standard installation, and should already be on your system. The + application is known as <application>Ubuntu Update + Manager</application>. If you need to install <application>Update + Manager</application>, you can use <application>Synaptic Package + Manager</application>. Choose <menuchoice> + <guimenu>System</guimenu> + <guisubmenu>Administration</guisubmenu> + <guimenuitem>Synaptic Package Manager</guimenuitem> + </menuchoice> to start <application>Synaptic</application>. The package + you need to install is <command>update-manager</command>.</para> + <para>You may also install Update Manager from the command line using + <command>apt-get</command>. To install <application>Update + Manager</application> from the command line:</para> +<programlisting> +sudo apt-get update-manager +</programlisting> + <para> + <application>Update Manager</application> is dependent on the following + packages: 'python,' 'python-gnome2,' + 'python-apt,' 'synaptic,' and + 'lsb-release.'</para> + </sect2> + <sect2 id="starting-update-manager"> + <title>Starting Update Manager</title> + <para>Choose <menuchoice> + <guimenu>System</guimenu> + <guisubmenu>Administration</guisubmenu> + <guimenuitem>Ubuntu Update Manager</guimenuitem> + </menuchoice> to start the application. Enter your password when + prompted.</para> + <para>You may also start <application>Update Manager</application> from + the command line:</para> +<programlisting> +sudo update-manager +</programlisting> + </sect2> + <sect2 id="main-window"> + <title>Main Window</title> + <para>The <application>Update Manager</application> main window is used for + managing the update process and setting preferences.</para> + <para>When you open <application>Update Manager</application>, the main + window displays the list of packages that need to be installed to update + your computer. If your computer is up-to-date, the main window contains + only the message "Your system is up-to-date!" </para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/main-system-updates-available.png" + format="PNG"/> + </imageobject> + <caption> + <para>Available Updates</para> + </caption> + </mediaobject> + </screenshot> + </sect2> + </sect1> + <sect1 id="performing-updates"> + <title>Performing Updates</title> + <sect2 id="updating"> + <title>Updating Your Computer</title> + <para>When you open <application>Update Manager</application>, the main + window displays the list of packages that need to be installed to update + your computer. If your computer is up-to-date, the main window contains + only the message "Your system is up-to-date!" </para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/main-system-updates-available.png" + format="PNG"/> + </imageobject> + <caption> + <para>Available Updates</para> + </caption> + </mediaobject> + </screenshot> + <para>By default, all packages are marked for installation. In most + cases you will install all of the packages right away. However, if there + are a large number of updates you may want to do only a few at a time.</para> + <para>To deselect a package, <action>uncheck</action> the + <guibutton>check box</guibutton> located on the left of each item + description. </para> + <para>To see additional information about a package, <action>click</action> on the + <guibutton>Details</guibutton> option + (see <xref linkend="expanding-update-info"/>)</para> + <para>When you are ready to install the selected packages, + <action>click</action> the <guibutton>Install</guibutton> button.</para> + <para>If <application>Update Manager</application> detects + packages that do not contain a verification signature, the + <interface>Summary</interface> dialog will be displayed.</para> + <para>The <interface>Summary</interface> dialog lists three groups of update + categories:</para> + <variablelist> + <varlistentry> + <term> + <emphasis role="bold">NOT AUTHENTICATED</emphasis> + </term> + <listitem> + <para>If a digital signature is not found for an update package, it is + labeled 'NOT AUTHENTICATED.'</para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <emphasis role="bold">To be upgraded</emphasis> + </term> + <listitem> + <para>Packages that will be upgraded.</para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <emphasis role="bold">Unchanged</emphasis> + </term> + <listitem> + <para>Packages that will not be upgraded due to dependency issues. + The packages will be upgraded in a future <application>Update + Manager</application> session, once the developers have + resolved the dependencies.</para> + </listitem> + </varlistentry> + </variablelist> + <para>This is the final point to check the upgrade before the installation + starts. If you are not happy with the upgrade, + <action>click</action> + <guibutton>Cancel</guibutton> to return to the list and modify the + upgrade. If you are happy with the upgrade, <action>click</action> + <guibutton>Apply</guibutton>.</para> + <note> + <para>If a deselected package is required as a dependency for a selected + package, <application>Update Manager</application> may install the + deselected package to satisfy the dependency.</para> + </note> + <para> + <application>Update Manager</application> will download all of the + selected packages before installing them. The entire process may take a + long time depending on the amount of data that needs to be downloaded, the + speed of your network connection, and the number of packages that need to + be installed. </para> + <para>Installation of the update packages will + only start once all packages have been downloaded. The + download progress can be monitored (see <xref + linkend="monitoring-download"/>).</para> + </sect2> + <sect2 id="expanding-update-info"> + <title>Expanded Update Information</title> + <para>When an item is selected, additional information about an update + package and the enhancements it provides can be obtained by expanding + the <guibutton>Details</guibutton> option, located at the bottom of the + list.</para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/main-view-update-detail.png"/> + </imageobject> + <caption> + <para>Update Item Details</para> + </caption> + </mediaobject> + </screenshot> + <para>For each update package the following information is available:</para> + <variablelist> + <varlistentry> + <term> + <emphasis role="bold">Changes</emphasis> + </term> + <listitem> + <para>The <guibutton>Changes</guibutton> tab displays the contents + of the packages <filename>ChangeLog</filename> file. This enables + the user to read about the changes contained in the update + package.</para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <emphasis role="bold">Description</emphasis> + </term> + <listitem> + <para>A single update package may contain multiple programs. These + programs are related in some way and are therefore bundled into a + single package. The <guibutton>Description</guibutton> tab + displays a short description for each program contained by the + package.</para> + </listitem> + </varlistentry> + </variablelist> + </sect2> + <sect2 id="monitoring-download"> + <title>Monitoring Download Progress</title> + <para>When there are many packages in the update list, download can take a + considerable amount of time. In this case it can be useful to be able to + monitor the download progress.</para> + <para>A progress bar is automatically displayed when updates need to be + downloaded. <action>Click</action> the <guibutton>Show progress of + single files</guibutton> option to display an expanded view of + individual file download progress.</para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/download-progressbar.png" format="PNG"/> + </imageobject> + <caption> + <para>Monitoring Download Progress Bar</para> + </caption> + </mediaobject> + </screenshot> + <para>Downloaded files are cached locally prior to installation. All files + must be downloaded in order for the installation stage to commence. The + cached files are automatically removed following successful installation + when the <guibutton>Automatically clean temporary packages + files</guibutton> option is checked (see <xref + linkend="managing-settings"/>).</para> + <note> + <para>If for any reason the network connection fails or times out, the + installation will not proceed. <application>Update + Manager</application> will automatically resume the download, from the + last successfully downloaded file, on the next attempt.</para> + </note> + </sect2> + <sect2 id="monitoring-installation"> + <title>Monitoring Installation Progress</title> + <para>It is common for software packages to use components belonging to + other pieces of software. This creates a dependency in the software that + uses external components. For this reason, installation of update + packages will only commence once all packages have been successfully + downloaded from the software repository (see <xref + linkend="monitoring-download"/>). The <application>Update + Manager</application> will take care to install packages in the required + sequence in order to satisfy any dependencies.</para> + <para>Once all update packages are downloaded installation will + automatically begin. During installation a progress bar, similar to that + of the download progress bar, is displayed.</para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/install-progress.png" format="PNG"/> + </imageobject> + <caption> + <para>Monitoring Installation Progress Bar</para> + </caption> + </mediaobject> + </screenshot> + <para>During installation it is possible to view a verbose transcript of + installation operations by <action>clicking</action> the + <guibutton>Terminal</guibutton> option. This expands the dialog to + show terminal view. It is also possible to configure installation + progress to use Terminal Mode only, see <xref + linkend="configure-terminal-only-view"/>.</para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/install-progress-terminal.png" + format="PNG"/> + </imageobject> + <caption> + <para>Monitoring Installation Progress Bar and Terminal View</para> + </caption> + </mediaobject> + </screenshot> + <caution> + <para>Do not terminate the installation process. This may lead to + corruption of installed programs and general system + instability.</para> + </caution> + </sect2> + </sect1> + <sect1 id="setting-preferences"> + <title>Setting Preferences</title> + <para>The <application>Update Manager</application> + <guibutton>Preferences</guibutton> button displays the <interface>Software + Preferences</interface> dialog. From this dialog users can perform the + following tasks:</para> + <itemizedlist> + <listitem> + <para>Manage software sources (see <xref linkend="managing-sources" + />).</para> + </listitem> + <listitem> + <para>Manage authentication keys (see <xref + linkend="managing-authentication"/>).</para> + </listitem> + <listitem> + <para>Manage settings (see <xref linkend="managing-settings"/>).</para> + </listitem> + </itemizedlist> + <sect2 id="managing-sources"> + <title>Managing Software Sources</title> + <para>During installation of a distro, software repositories are + automatically added to the list of 'software sources.' + Typical sources added by the distro installation include the + installation source, update, and security repositories. Sources can be + added to and removed from the list and existing sources can be edited.</para> + <note> + <para>The operations described here modify <filename class="devicefile" + >/etc/apt/sources.list</filename> using the <application>Update + Manager</application> graphical user interface. Software sources can + also be managed by making direct modifications in <filename + class="devicefile">/etc/apt/sources.list</filename>. This is only + advised for advanced users.</para> + </note> + <sect3 id="adding-sources"> + <title>Adding Software Sources</title> + <para>Software may be installed using various access methods:</para> + <itemizedlist> + <listitem> + <para> + <emphasis>CD-ROM</emphasis> - Compact Disk Read Only Memory, + normally directly connected to the computer system and mounted + locally by the operating system.</para> + </listitem> + <!-- Currently unsupported see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=60910 --> + <!-- mvo: is handled with cdrom URIs --> + <!--<listitem> + <para> + <emphasis>DVD</emphasis> - Digital Video Disk, normally directly + connected to the computer system and mounted locally by the + operating system.</para> + </listitem>--> + <listitem> + <para> + <emphasis>FTP</emphasis> - File Transfer Protocol, a secure and + reliable protocol designed specifically for the purpose of + transferring large files across the Internet.</para> + </listitem> + <listitem> + <para> + <emphasis>HTTP</emphasis> - HyperText Transfer Protocol, commonly + used to request and receive Web pages, but can also be used for + file transfer.</para> + </listitem> + <listitem> + <para> + <emphasis>SMB</emphasis> - Server Management Block is used to + access shared resources on computers running Microsoft + <trademark>Windows</trademark> or <application>Samba + Server</application>.</para> + </listitem> + <listitem> + <para> + <emphasis>NFS</emphasis> - Network File System is used to access + shared resources on Linux/UNIX computers.</para> + </listitem> + </itemizedlist> + <note> + <para>Before software sources residing on SMB or NFS shares can be + defined, the share must be mounted by the local system. Access can + then be made via the local filesystem. For more information see + <xref linkend="editing-sources"/>.</para> + </note> + <para>A new software source can be defined by <action>clicking</action> + the <guibutton>Add</guibutton> button located on the + <interface>Software Preferences</interface> dialog. This will + display the <interface>Edit Repository</interface> dialog.</para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/preferences-add.png" format="PNG"/> + </imageobject> + <caption> + <para>Adding Software Sources</para> + </caption> + </mediaobject> + </screenshot> + <para>Complete the <interface>Edit Repository</interface> dialog to add + a new Software source.</para> + <variablelist> + <varlistentry> + <term> + <emphasis role="bold">Repository</emphasis> + </term> + <listitem> + <para>A drop-list containing known software sources.</para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <emphasis role="bold">Components</emphasis> + </term> + <listitem> + <para>The Ubuntu software repository contains thousands of + software packages organized into four + 'components,' on the basis of the level of + support we can offer them, and whether or not they comply with + Free Software Philosophy. The components are called + 'main,' 'restricted,' + 'universe,' and + 'multiverse.'</para> + <para>Check the components you wish to include in the update list.</para> + <itemizedlist> + <listitem> + <para> + <emphasis role="bold">Officially supported (main)</emphasis> + - The main distribution component contains applications that + are free software, can freely be redistributed and are fully + supported by the Ubuntu team. This includes the most popular + and most reliable open source applications available, much + of which is installed by default when you install Ubuntu. + Software in main includes a hand-selected list of + applications that the Ubuntu developers, community, and + users feel are important and that the Ubuntu security and + distribution team are willing to support. When you install + software from the main component you are assured that the + software will come with security updates and technical + support. We believe that the software in main includes + everything most people will need for a fully functional + desktop or Internet server running only open source + software. The licenses for software applications in main + must be free, but main may also may contain binary firmware + and selected fonts that cannot be modified without + permission from their authors. In all cases redistribution + is unencumbered.</para> + </listitem> + <listitem> + <para> + <emphasis role="bold">Restricted Copyright</emphasis> - The + restricted component is reserved for software that is very + commonly used, and which is supported by the Ubuntu team + even though it is not available under a completely free + license. Please note that it may not be possible to provide + complete support for this software since we are unable to + fix the software ourselves, but can only forward problem + reports to the actual authors. Some software from restricted + will be installed on Ubuntu CDs but is clearly separated to + ensure that it is easy to remove. We include this software + because it is essential in order for Ubuntu to run on + certain machines - typical examples are the binary drivers + that some video card vendors publish, which are the only way + for Ubuntu to run on those machines. By default, we will + only use open source software unless there is simply no + other way to install Ubuntu. The Ubuntu team works with such + vendors to accelerate the open-sourcing of their software to + ensure that as much software as possible is available under + a Free license.</para> + </listitem> + <listitem> + <para> + <emphasis role="bold">Community maintained + (Universe)</emphasis> - The universe component is a snapshot + of the free, open source, and Linux world. In universe you + can find almost every piece of open source software, and + software available under a variety of less open licenses, + all built automatically from a variety of public sources. + All of this software is compiled against the libraries and + using the tools that form part of main, so it should install + and work well with the software in main, but it comes with + no guarantee of security fixes and support. The universe + component includes thousands of pieces of software. Through + universe, users are able to have the diversity and + flexibility offered by the vast open source world on top of + a stable Ubuntu core.</para> + </listitem> + <listitem> + <para> + <emphasis role="bold">Non Free (Multiverse)</emphasis> - The + 'multiverse' component contains software + that is <emphasis>not free</emphasis>, which means the + licensing requirements of this software do not meet the + Ubuntu 'main' Component license Policy. + The onus is on you to verify your rights to use this + software and comply with the licensing terms of the + copyright holder. This software is not supported and usually + cannot be fixed or updated. Use it at your own risk.</para> + </listitem> + </itemizedlist> + </listitem> + </varlistentry> + </variablelist> + </sect3> + <sect3 id="create-custom-sources"> + <title>Creating Custom Software Sources</title> + <para>It is also possible to define custom software sources.</para> + <para>To define a custom software source <action>click</action> the + <guibutton>Custom</guibutton> button located on the <interface>Edit + Repository</interface> dialog. This will display a dialog in which + the custom repository can be defined using + <application>apt</application> command syntax. + <application>Apt</application> is an Advanced Packaging Tool and + front-end to <application>dpkg</application> the Debian Package + Management System. Once the <guilabel>apt line</guilabel> is entered + <action>click</action> the <guibutton>Add repository</guibutton> + button.</para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/preferences-add-custom.png" + format="PNG"/> + </imageobject> + <caption> + <para>Creating Custom Software Sources</para> + </caption> + </mediaobject> + </screenshot> + <para>The <application>apt</application> command syntax defines the + 'type,' 'location,' and + 'content' of the repository. Example of the command + syntax could look like this.</para> + <programlisting> +<command>deb ftp://archive.ubuntu.com/ubuntu/ hoary main restricted universe multiverse</command> + </programlisting> + <para>This example would define the software sources as a Debian source + at ubuntu.com containing the hoary release and using all components. + For definition of the components, see <xref linkend="managing-sources" + />.</para> + </sect3> + <sect3 id="remove-sources"> + <title>Removing Software Sources</title> + <para>Software sources can be removed from the sources list by selecting + the software source then <action>clicking</action> the + <guibutton>Remove</guibutton> button located on the + <interface>Software Preferences</interface> dialog.</para> + <para>Removal of a software source requires that the + <application>apt</application> file (<filename class="devicefile" + >/etc/apt/sources.list</filename>) that contains the a list of + software sources is updated. Before modifying this file + <application>Update Manager</application> prompts to confirm the + operation. If the operation is confirmed a backup copy is create in + <filename class="devicefile" + >/etc/apt/sources.list.save</filename>.</para> + </sect3> + <sect3 id="editing-sources"> + <title>Editing Software Sources</title> + <para>To change the values defining a software source, select the source + record then <action>click</action> the edit button. This will display + the <interface>Edit Repository</interface> dialog.</para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/preferences-edit.png" format="PNG"/> + </imageobject> + <caption> + <para>Editing Software Sources</para> + </caption> + </mediaobject> + </screenshot> + <variablelist> + <varlistentry> + <term> + <emphasis role="bold">Type</emphasis> + </term> + <listitem> + <para>Software sources may contain software in + 'Binary' or 'Source Code' + format. Select the option correlating to the repository + format.</para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <emphasis role="bold">URI</emphasis> + </term> + <listitem> + <para>Enter a valid Uniform Resource Indicator + (<acronym>URI</acronym>). Following is a list of examples for + each of the possible access methods:</para> + <itemizedlist> + <listitem> + <para> + <!-- mvo: we don't want users to add the cd manually + new CDs with ubuntu will be detected + automatically when inserted and it will prompt + for action (start package manager, + upgrade from it) + *mvo* either the sources edit window needs a "add-cdrom" butotn or the user needs to run synaptic + *froud* I would say add a "Add CDROM" + *mvo* yeah + *mvo* I'll file a wishlist bug to myself + *mvo* update-manger should have "add-cdrom" is bug #7315 + --> + <emphasis>CD-ROM</emphasis> - + <command>cdrom:[description_of_cd]/</command> + </para> + </listitem> + <!-- Currently unsupported see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=60910 --> + <!-- mvo: is handled with cdrom URIs --> + <!--<listitem> + <para> + <emphasis>DVD</emphasis> - + <command>dvd:[description_of_dvd]/</command> + </para> + </listitem>--> + <listitem> + <para> + <emphasis>FTP</emphasis> - + <command>ftp://ftp.domain.ext/path/to/repository</command> + </para> + </listitem> + <listitem> + <para> + <emphasis>HTTP</emphasis> - + <command>http://www.domain.ext/path/to/repository</command> + </para> + </listitem> + <listitem> + <para> + <emphasis>SMB</emphasis> - Works only when the computer is + already connected to an SMB share. To connect to SMB share + use the following command syntax from the shell + <command>smbclient //hostname/sharename -U + username</command>. </para> + <para>The SMB share is accessed from the local file system + once the local system is connected. + <command>file://path/to/sharefile</command> + </para> + </listitem> + <listitem> + <para> + <emphasis>NFS</emphasis> - Works only when the computer is + already connected to a NFS share. To connect the NFS share + must be mounted. NFS shares are mounted on the client side + using the mount command. The format of the command is as + follows: <command>mount -o [options] [host]:[/remote/export] + [/local/directory]</command> + </para> + <para>Once mounted <application>Update Manager</application> + can access the share using the following command + <command>file://path/to/local/directory</command> + </para> + </listitem> + </itemizedlist> + <note> + <para>If accessing a SMB or NFS shares by manually issuing the + <command>mount</command> commands, the file system must be + remounted manually after the system is rebooted. Failing to + remount will result in <application>Update + Manager</application> not being able to access the + resource.</para> + </note> + </listitem> + </varlistentry> + <varlistentry> + <term> + <emphasis role="bold">Distribution</emphasis> + </term> + <listitem> + <para>The name of the distribution or name of the distribution + version.</para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <emphasis role="bold">Sections</emphasis> + </term> + <listitem> + <para>The section of the distribution repository to access.</para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <emphasis role="bold">Comment</emphasis> + </term> + <listitem> + <para>Add a comment to describe the repository.</para> + </listitem> + </varlistentry> + </variablelist> + <note> + <para>Repositories defined using <application>Synaptic</application>, + another package management tool, are automatically displayed in the + <application>Update Manager</application> Software Sources + list.</para> + </note> + </sect3> + </sect2> + <sect2 id="managing-authentication"> + <title>Managing Authentication Keys</title> + <para>Authentication keys make it possible to verify the integrity of + update software. From the <interface>Authentication Keys</interface> + dialog it is possible to view and manage the list authentication keys. + Each key corresponds to a Software Source defined in the + <interface>Software Preference</interface> dialog (see <xref + linkend="managing-sources"/>). Keys can be added and removed. In the + event of an error it is also possible to restore the default + authentication keys provided by the defined update repositories.</para> + <!-- I am not sure how the keys are obtained --> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/authentication.png" format="PNG"/> + </imageobject> + <caption> + <para>Managing Authentication Keys</para> + </caption> + </mediaobject> + </screenshot> + <sect3 id="adding-auth-keys"> + <title>Adding Authentication Keys</title> + <para>Authentication keys are usually obtained from the software vendor + running the repository. Often the vendor will place a copy of the + authentication key on a key server, for example <ulink + url="http://www.keyserver.net">www.keyserver.net</ulink>. The key + can then be retrieved using the command <command>gpg + -recv-key</command>. When the key resides on a key server the option + <option>--keyserver</option> must be used to give the name of this + key server.</para> + <programlisting> +gpg -recv-key --keyserver www.keyserver.net + </programlisting> + <note> + <para>If the key is fetched over a untrusted medium, like the + Internet, additional steps should be taken to verify the key. For + example, getting the fingerprint with a secure method such as by + phone, letter, or business card. Alternately you can check if the + key is signed with a known-good key.</para> + </note> + <para>Once the key is downloaded, select it using the <interface>Choose + a key-file</interface> dialog that is displayed when the + <guibutton>Add</guibutton> button.</para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/authentication-add.png" format="PNG"/> + </imageobject> + <caption> + <para>Adding Authentication Keys</para> + </caption> + </mediaobject> + </screenshot> + </sect3> + <sect3 id="remove-auth-keys"> + <title>Removing Authentication Keys</title> + <para>Authentication keys can be removed by selecting a record item then + <action>clicking</action> the <guibutton>Remove</guibutton> + button.</para> + </sect3> + <sect3 id="restore-auth-keys"> + <title>Restoring Default Keys</title> + <para>During installation the default Ubuntu Authentication keys are + added to the <application>Ubuntu GPG Keyring</application> package. In + the even of a key being accidentally deleted it can be restored by + clicking the <guibutton>Restore default keys</guibutton> + button.</para> + </sect3> + </sect2> + <sect2 id="managing-settings"> + <title>Managing Settings</title> + <para>The <guibutton>Settings</guibutton> button, located on the + <interface>Software Preferences</interface> dialog, displays the + <interface>Settings</interface> dialog. From this interface users can + manage the behavior of the application and pre-update process.</para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/settings.png" format="PNG"/> + </imageobject> + <caption> + <para>Managing Settings</para> + </caption> + </mediaobject> + </screenshot> + <para>The following options are available:</para> + <itemizedlist> + <title>User Interface</title> + <listitem> + <para> + <emphasis>Show disabled software sources:</emphasis> - When checked + software sources that are not checked in the <interface>Software + Preferences</interface> dialog are displayed. When unchecked, + these items are not displayed in the list.</para> + </listitem> + </itemizedlist> + <itemizedlist> + <title>Internet Updates</title> + <listitem> + <para> + <itemizedlist> + <listitem> + <para> + <emphasis>Automatically check for software updates:</emphasis> + - When checked the <guilabel>Update interval in + days</guilabel> option is enabled. <application>Update + Manager</application> will poll all enabled software sources + for updates according to the value specified in the + scroll-box.</para> + </listitem> + <listitem> + <para> + <emphasis>Download upgradable packages:</emphasis> - When + checked <application>Update Manager</application> will + automatically download any available software update packages. + It will not install them until the user has defined the + installation list (see <xref linkend="performing-updates" + />).</para> + </listitem> + </itemizedlist> + </para> + </listitem> + </itemizedlist> + <itemizedlist> + <title>Temporary files</title> + <listitem> + <para> + <emphasis>Automatically clean temporary packages files:</emphasis> - + When checked the <guilabel>Clean interval in days</guilabel> option + is enabled. <application>Update Manager</application> automatically + removes any temporary files created by the upgrade process according + to the value specified in the scroll-box.</para> + </listitem> + <listitem> + <para><emphasis>Set maximum size of the package cache:</emphasis> When checked the size of + the package cache is limited to the value specified in the <guibutton>Maximum size in + MB</guibutton> spin-box.</para> + </listitem> + <listitem> + <para><emphasis>Delete old packages in the package cache:</emphasis> When checked cached + packaged with a date older than the value specified in the <guibutton>Maximum age in + days</guibutton> spin-box will be automatically purged from the cache.</para> + </listitem> + </itemizedlist> + </sect2> + <sect2 id="configure-terminal-only-view"> + <title>Install Progress for Terminal View Only</title> + <para>It is also possible to configure the installation progress to use + only a terminal view. That is to say, no progress bar is displayed, only + a terminal view.</para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/main-view-monitor-update.png" + format="PNG"/> + </imageobject> + <caption> + <para>Monitoring Installation Progress</para> + </caption> + </mediaobject> + </screenshot> + <caution> + <para>Do not terminate the installation process. This may lead to + corruption of installed programs and general system + instability.</para> + </caution> + <para>Changing between 'Progress Bar' and + 'Terminal View,' modes is managed via + <application>Synaptic</application>. To change modes proceed as + follows:</para> + <procedure> + <step> + <para>Start <application>Synaptic</application> by selecting <menuchoice> + <guimenu>System</guimenu> + <guisubmenu>Administration</guisubmenu> + <guimenuitem>Synaptic Package Manager</guimenuitem> + </menuchoice> from the Desktop menu system. </para> + </step> + <step> + <para>When prompted, enter your password.</para> + </step> + <step> + <para>From the main menu, select <menuchoice> + <guimenu>Settings</guimenu> + <guimenuitem>Preferences</guimenuitem> + </menuchoice>. The <interface>Preferences</interface> dialog is + displayed.</para> + </step> + <step> + <para>From the <guibutton>General</guibutton> tab, <guilabel>Apply + Changes</guilabel> group, <action>check</action> or + <action>uncheck</action> the <guibutton>Apply changes in terminal + window</guibutton> checkbox.</para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/synaptic-toggle-install-view.png" + format="PNG"/> + </imageobject> + <caption> + <para>Synaptic Preferences - General Tab</para> + </caption> + </mediaobject> + </screenshot> + </step> + <step> + <para> + <action>Click</action> + <guibutton>OK</guibutton> and exit + <application>Synaptic</application>.</para> + </step> + </procedure> + </sect2> + </sect1> + <sect1 id="about"> + <title>About Update Manager</title> + <para>The <application>Update Manager</application> was written by Michiel + Sikkes <email>michiel@eyeopened.nl</email> and Michael Vogt + <email>michael.vogt@ubuntu.com</email> as an + <application>apt</application> update manager for the GNOME Desktop of the + Ubuntu Linux distribution. The user manual was written by Sean Wheller + <email>sean@inwords.co.za</email>.</para> + <para>To report a bug or make a suggestion regarding this package or this + manual, send mail to <email>ubuntu-users@lists.ubuntu.com</email>.</para> + </sect1> &GFDL; </article> diff --git a/help/Makefile.am b/help/Makefile.am new file mode 100644 index 00000000..42ffacc2 --- /dev/null +++ b/help/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = C diff --git a/install-sh b/install-sh new file mode 100755 index 00000000..6ce63b9f --- /dev/null +++ b/install-sh @@ -0,0 +1,294 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd=$cpprog + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "$0: no input file specified" >&2 + exit 1 +else + : +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d "$dst" ]; then + instcmd=: + chmodcmd="" + else + instcmd=$mkdirprog + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f "$src" ] || [ -d "$src" ] + then + : + else + echo "$0: $src does not exist" >&2 + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "$0: no destination specified" >&2 + exit 1 + else + : + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d "$dst" ] + then + dst=$dst/`basename "$src"` + else + : + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' + ' +IFS="${IFS-$defaultIFS}" + +oIFS=$IFS +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS=$oIFS + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp=$pathcomp$1 + shift + + if [ ! -d "$pathcomp" ] ; + then + $mkdirprog "$pathcomp" + else + : + fi + + pathcomp=$pathcomp/ +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd "$dst" && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename "$dst"` + else + dstfile=`basename "$dst" $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename "$dst"` + else + : + fi + +# Make a couple of temp file names in the proper directory. + + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + +# Trap to clean up temp files at exit. + + trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 + trap '(exit $?); exit' 1 2 13 15 + +# Move or copy the file name to the temp name + + $doit $instcmd "$src" "$dsttmp" && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && + +# Now remove or move aside any old file at destination location. We try this +# two ways since rm can't unlink itself on some systems and the destination +# file might be busy for other reasons. In this case, the final cleanup +# might fail but the new file should still install successfully. + +{ + if [ -f "$dstdir/$dstfile" ] + then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || + $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || + { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit + } + else + : + fi +} && + +# Now rename the file to the real destination. + + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + +fi && + +# The final little trick to "correctly" pass the exit status to the exit trap. + +{ + (exit 0); exit +} diff --git a/intltool-extract b/intltool-extract new file mode 100755 index 00000000..ede7bab2 --- /dev/null +++ b/intltool-extract @@ -0,0 +1,516 @@ +#!/usr/bin/perl -w +# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*- + +# +# The Intltool Message Extractor +# +# Copyright (C) 2000-2001, 2003 Free Software Foundation. +# +# Intltool 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 of the +# License, or (at your option) any later version. +# +# Intltool 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., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. +# +# Authors: Kenneth Christiansen <kenneth@gnu.org> +# Darin Adler <darin@bentspoon.com> +# + +## Release information +my $PROGRAM = "intltool-extract"; +my $PACKAGE = "intltool"; +my $VERSION = "0.33"; + +## Loaded modules +use strict; +use File::Basename; +use Getopt::Long; + +## Scalars used by the option stuff +my $TYPE_ARG = "0"; +my $LOCAL_ARG = "0"; +my $HELP_ARG = "0"; +my $VERSION_ARG = "0"; +my $UPDATE_ARG = "0"; +my $QUIET_ARG = "0"; +my $SRCDIR_ARG = "."; + +my $FILE; +my $OUTFILE; + +my $gettext_type = ""; +my $input; +my %messages = (); +my %loc = (); +my %count = (); +my %comments = (); +my $strcount = 0; + +## Use this instead of \w for XML files to handle more possible characters. +my $w = "[-A-Za-z0-9._:]"; + +## Always print first +$| = 1; + +## Handle options +GetOptions ( + "type=s" => \$TYPE_ARG, + "local|l" => \$LOCAL_ARG, + "help|h" => \$HELP_ARG, + "version|v" => \$VERSION_ARG, + "update" => \$UPDATE_ARG, + "quiet|q" => \$QUIET_ARG, + "srcdir=s" => \$SRCDIR_ARG, + ) or &error; + +&split_on_argument; + + +## Check for options. +## This section will check for the different options. + +sub split_on_argument { + + if ($VERSION_ARG) { + &version; + + } elsif ($HELP_ARG) { + &help; + + } elsif ($LOCAL_ARG) { + &place_local; + &extract; + + } elsif ($UPDATE_ARG) { + &place_normal; + &extract; + + } elsif (@ARGV > 0) { + &place_normal; + &message; + &extract; + + } else { + &help; + + } +} + +sub place_normal { + $FILE = $ARGV[0]; + $OUTFILE = "$FILE.h"; +} + +sub place_local { + $FILE = $ARGV[0]; + $OUTFILE = fileparse($FILE, ()); + if (!-e "tmp/") { + system("mkdir tmp/"); + } + $OUTFILE = "./tmp/$OUTFILE.h" +} + +sub determine_type { + if ($TYPE_ARG =~ /^gettext\/(.*)/) { + $gettext_type=$1 + } +} + +## Sub for printing release information +sub version{ + print <<_EOF_; +${PROGRAM} (${PACKAGE}) $VERSION +Copyright (C) 2000, 2003 Free Software Foundation, Inc. +Written by Kenneth Christiansen, 2000. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +_EOF_ + exit; +} + +## Sub for printing usage information +sub help { + print <<_EOF_; +Usage: ${PROGRAM} [OPTION]... [FILENAME] +Generates a header file from an XML source file. + +It grabs all strings between <_translatable_node> and its end tag in +XML files. Read manpage (man ${PROGRAM}) for more info. + + --type=TYPE Specify the file type of FILENAME. Currently supports: + "gettext/glade", "gettext/ini", "gettext/keys" + "gettext/rfc822deb", "gettext/schemas", + "gettext/scheme", "gettext/xml" + -l, --local Writes output into current working directory + (conflicts with --update) + --update Writes output into the same directory the source file + reside (conflicts with --local) + --srcdir Root of the source tree + -v, --version Output version information and exit + -h, --help Display this help and exit + -q, --quiet Quiet mode + +Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE") +or send email to <xml-i18n-tools\@gnome.org>. +_EOF_ + exit; +} + +## Sub for printing error messages +sub error{ + print STDERR "Try `${PROGRAM} --help' for more information.\n"; + exit; +} + +sub message { + print "Generating C format header file for translation.\n" unless $QUIET_ARG; +} + +sub extract { + &determine_type; + + &convert; + + open OUT, ">$OUTFILE"; + &msg_write; + close OUT; + + print "Wrote $OUTFILE\n" unless $QUIET_ARG; +} + +sub convert { + + ## Reading the file + { + local (*IN); + local $/; #slurp mode + open (IN, "<$SRCDIR_ARG/$FILE") || die "can't open $SRCDIR_ARG/$FILE: $!"; + $input = <IN>; + } + + &type_ini if $gettext_type eq "ini"; + &type_keys if $gettext_type eq "keys"; + &type_xml if $gettext_type eq "xml"; + &type_glade if $gettext_type eq "glade"; + &type_scheme if $gettext_type eq "scheme"; + &type_schemas if $gettext_type eq "schemas"; + &type_rfc822deb if $gettext_type eq "rfc822deb"; +} + +sub entity_decode_minimal +{ + local ($_) = @_; + + s/'/'/g; # ' + s/"/"/g; # " + s/&/&/g; + + return $_; +} + +sub entity_decode +{ + local ($_) = @_; + + s/'/'/g; # ' + s/"/"/g; # " + s/&/&/g; + s/</</g; + s/>/>/g; + + return $_; +} + +sub escape_char +{ + return '\"' if $_ eq '"'; + return '\n' if $_ eq "\n"; + return '\\' if $_ eq '\\'; + + return $_; +} + +sub escape +{ + my ($string) = @_; + return join "", map &escape_char, split //, $string; +} + +sub type_ini { + ### For generic translatable desktop files ### + while ($input =~ /^_.*=(.*)$/mg) { + $messages{$1} = []; + } +} + +sub type_keys { + ### For generic translatable mime/keys files ### + while ($input =~ /^\s*_\w+=(.*)$/mg) { + $messages{$1} = []; + } +} + +sub type_xml { + ### For generic translatable XML files ### + + while ($input =~ /(?:<!--([^>]*?)-->[^\n]*\n?[^\n]*)?\s_$w+\s*=\s*\"([^"]*)\"/sg) { # " + $messages{entity_decode_minimal($2)} = []; + $comments{entity_decode_minimal($2)} = $1 if (defined($1)); + } + + while ($input =~ /(?:<!--([^>]*?)-->\s*)?<_($w+)(?: xml:space="($w+)")?[^>]*>(.*?)<\/_\2>/sg) { + $_ = $4; + if (!defined($3) || $3 ne "preserve") { + s/\s+/ /g; + s/^ //; + s/ $//; + } + $messages{$_} = []; + $comments{$_} = $1 if (defined($1)); + } +} + +sub type_schemas { + ### For schemas XML files ### + + # FIXME: We should handle escaped < (less than) + while ($input =~ / + <locale\ name="C">\s* + (<default>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/default>\s*)? + (<short>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/short>\s*)? + (<long>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/long>\s*)? + <\/locale> + /sgx) { + my @totranslate = ($3,$6,$9); + my @eachcomment = ($2,$5,$8); + foreach (@totranslate) { + my $currentcomment = shift @eachcomment; + next if !$_; + s/\s+/ /g; + $messages{entity_decode_minimal($_)} = []; + $comments{entity_decode_minimal($_)} = $currentcomment if (defined($currentcomment)); + } + } +} + +sub type_rfc822deb { + ### For rfc822-style Debian configuration files ### + + my $lineno = 1; + my $type = ''; + while ($input =~ /\G(.*?)(^|\n)(_+)([^:]+):[ \t]*(.*?)(?=\n\S|$)/sg) + { + my ($pre, $newline, $underscore, $tag, $text) = ($1, $2, $3, $4, $5); + while ($pre =~ m/\n/g) + { + $lineno ++; + } + $lineno += length($newline); + my @str_list = rfc822deb_split(length($underscore), $text); + for my $str (@str_list) + { + $strcount++; + $messages{$str} = []; + $loc{$str} = $lineno; + $count{$str} = $strcount; + my $usercomment = ''; + while($pre =~ s/(^|\n)#([^\n]*)$//s) + { + $usercomment = "\n" . $2 . $usercomment; + } + $comments{$str} = $tag . $usercomment; + } + $lineno += ($text =~ s/\n//g); + } +} + +sub rfc822deb_split { + # Debian defines a special way to deal with rfc822-style files: + # when a value contain newlines, it consists of + # 1. a short form (first line) + # 2. a long description, all lines begin with a space, + # and paragraphs are separated by a single dot on a line + # This routine returns an array of all paragraphs, and reformat + # them. + # When first argument is 2, the string is a comma separated list of + # values. + my $type = shift; + my $text = shift; + $text =~ s/^[ \t]//mg; + return (split(/, */, $text, 0)) if $type ne 1; + return ($text) if $text !~ /\n/; + + $text =~ s/([^\n]*)\n//; + my @list = ($1); + my $str = ''; + for my $line (split (/\n/, $text)) + { + chomp $line; + if ($line =~ /^\.\s*$/) + { + # New paragraph + $str =~ s/\s*$//; + push(@list, $str); + $str = ''; + } + elsif ($line =~ /^\s/) + { + # Line which must not be reformatted + $str .= "\n" if length ($str) && $str !~ /\n$/; + $line =~ s/\s+$//; + $str .= $line."\n"; + } + else + { + # Continuation line, remove newline + $str .= " " if length ($str) && $str !~ /\n$/; + $str .= $line; + } + } + $str =~ s/\s*$//; + push(@list, $str) if length ($str); + return @list; +} + +sub type_glade { + ### For translatable Glade XML files ### + + my $tags = "label|title|text|format|copyright|comments|preview_text|tooltip|message"; + + while ($input =~ /<($tags)>([^<]+)<\/($tags)>/sg) { + # Glade sometimes uses tags that normally mark translatable things for + # little bits of non-translatable content. We work around this by not + # translating strings that only includes something like label4 or window1. + $messages{entity_decode($2)} = [] unless $2 =~ /^(window|label|dialog)[0-9]+$/; + } + + while ($input =~ /<items>(..[^<]*)<\/items>/sg) { + for my $item (split (/\n/, $1)) { + $messages{entity_decode($item)} = []; + } + } + + ## handle new glade files + while ($input =~ /<(property|atkproperty)\s+[^>]*translatable\s*=\s*"yes"(?:\s+[^>]*comments\s*=\s*"([^"]*)")?[^>]*>([^<]+)<\/\1>/sg) { + $messages{entity_decode($3)} = [] unless $3 =~ /^(window|label)[0-9]+$/; + if (defined($2) and !($3 =~ /^(window|label)[0-9]+$/)) { + $comments{entity_decode($3)} = entity_decode($2) ; + } + } + while ($input =~ /<atkaction\s+action_name="([^>]*)"\s+description="([^>]+)"\/>/sg) { + $messages{entity_decode_minimal($2)} = []; + } +} + +sub type_scheme { + my ($line, $i, $state, $str, $trcomment, $char); + for $line (split(/\n/, $input)) { + $i = 0; + $state = 0; # 0 - nothing, 1 - string, 2 - translatable string + while ($i < length($line)) { + if (substr($line,$i,1) eq "\"") { + if ($state == 2) { + $comments{$str} = $trcomment if ($trcomment); + $messages{$str} = []; + $str = ''; + $state = 0; $trcomment = ""; + } elsif ($state == 1) { + $str = ''; + $state = 0; $trcomment = ""; + } else { + $state = 1; + $str = ''; + if ($i>0 && substr($line,$i-1,1) eq '_') { + $state = 2; + } + } + } elsif (!$state) { + if (substr($line,$i,1) eq ";") { + $trcomment = substr($line,$i+1); + $trcomment =~ s/^;*\s*//; + $i = length($line); + } elsif ($trcomment && substr($line,$i,1) !~ /\s|\(|\)|_/) { + $trcomment = ""; + } + } else { + if (substr($line,$i,1) eq "\\") { + $char = substr($line,$i+1,1); + if ($char ne "\"" && $char ne "\\") { + $str = $str . "\\"; + } + $i++; + } + $str = $str . substr($line,$i,1); + } + $i++; + } + } +} + +sub msg_write { + my @msgids; + if (%count) + { + @msgids = sort { $count{$a} <=> $count{$b} } keys %count; + } + else + { + @msgids = sort keys %messages; + } + for my $message (@msgids) + { + my $offsetlines = 1; + $offsetlines++ if $message =~ /%/; + if (defined ($comments{$message})) + { + while ($comments{$message} =~ m/\n/g) + { + $offsetlines++; + } + } + print OUT "# ".($loc{$message} - $offsetlines). " \"$FILE\"\n" + if defined $loc{$message}; + print OUT "/* ".$comments{$message}." */\n" + if defined $comments{$message}; + print OUT "/* xgettext:no-c-format */\n" if $message =~ /%/; + + my @lines = split (/\n/, $message, -1); + for (my $n = 0; $n < @lines; $n++) + { + if ($n == 0) + { + print OUT "char *s = N_(\""; + } + else + { + print OUT " \""; + } + + print OUT escape($lines[$n]); + + if ($n < @lines - 1) + { + print OUT "\\n\"\n"; + } + else + { + print OUT "\");\n"; + } + } + } +} + diff --git a/intltool-extract.in b/intltool-extract.in new file mode 100644 index 00000000..43526806 --- /dev/null +++ b/intltool-extract.in @@ -0,0 +1,516 @@ +#!@INTLTOOL_PERL@ -w +# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*- + +# +# The Intltool Message Extractor +# +# Copyright (C) 2000-2001, 2003 Free Software Foundation. +# +# Intltool 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 of the +# License, or (at your option) any later version. +# +# Intltool 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., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. +# +# Authors: Kenneth Christiansen <kenneth@gnu.org> +# Darin Adler <darin@bentspoon.com> +# + +## Release information +my $PROGRAM = "intltool-extract"; +my $PACKAGE = "intltool"; +my $VERSION = "0.33"; + +## Loaded modules +use strict; +use File::Basename; +use Getopt::Long; + +## Scalars used by the option stuff +my $TYPE_ARG = "0"; +my $LOCAL_ARG = "0"; +my $HELP_ARG = "0"; +my $VERSION_ARG = "0"; +my $UPDATE_ARG = "0"; +my $QUIET_ARG = "0"; +my $SRCDIR_ARG = "."; + +my $FILE; +my $OUTFILE; + +my $gettext_type = ""; +my $input; +my %messages = (); +my %loc = (); +my %count = (); +my %comments = (); +my $strcount = 0; + +## Use this instead of \w for XML files to handle more possible characters. +my $w = "[-A-Za-z0-9._:]"; + +## Always print first +$| = 1; + +## Handle options +GetOptions ( + "type=s" => \$TYPE_ARG, + "local|l" => \$LOCAL_ARG, + "help|h" => \$HELP_ARG, + "version|v" => \$VERSION_ARG, + "update" => \$UPDATE_ARG, + "quiet|q" => \$QUIET_ARG, + "srcdir=s" => \$SRCDIR_ARG, + ) or &error; + +&split_on_argument; + + +## Check for options. +## This section will check for the different options. + +sub split_on_argument { + + if ($VERSION_ARG) { + &version; + + } elsif ($HELP_ARG) { + &help; + + } elsif ($LOCAL_ARG) { + &place_local; + &extract; + + } elsif ($UPDATE_ARG) { + &place_normal; + &extract; + + } elsif (@ARGV > 0) { + &place_normal; + &message; + &extract; + + } else { + &help; + + } +} + +sub place_normal { + $FILE = $ARGV[0]; + $OUTFILE = "$FILE.h"; +} + +sub place_local { + $FILE = $ARGV[0]; + $OUTFILE = fileparse($FILE, ()); + if (!-e "tmp/") { + system("mkdir tmp/"); + } + $OUTFILE = "./tmp/$OUTFILE.h" +} + +sub determine_type { + if ($TYPE_ARG =~ /^gettext\/(.*)/) { + $gettext_type=$1 + } +} + +## Sub for printing release information +sub version{ + print <<_EOF_; +${PROGRAM} (${PACKAGE}) $VERSION +Copyright (C) 2000, 2003 Free Software Foundation, Inc. +Written by Kenneth Christiansen, 2000. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +_EOF_ + exit; +} + +## Sub for printing usage information +sub help { + print <<_EOF_; +Usage: ${PROGRAM} [OPTION]... [FILENAME] +Generates a header file from an XML source file. + +It grabs all strings between <_translatable_node> and its end tag in +XML files. Read manpage (man ${PROGRAM}) for more info. + + --type=TYPE Specify the file type of FILENAME. Currently supports: + "gettext/glade", "gettext/ini", "gettext/keys" + "gettext/rfc822deb", "gettext/schemas", + "gettext/scheme", "gettext/xml" + -l, --local Writes output into current working directory + (conflicts with --update) + --update Writes output into the same directory the source file + reside (conflicts with --local) + --srcdir Root of the source tree + -v, --version Output version information and exit + -h, --help Display this help and exit + -q, --quiet Quiet mode + +Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE") +or send email to <xml-i18n-tools\@gnome.org>. +_EOF_ + exit; +} + +## Sub for printing error messages +sub error{ + print STDERR "Try `${PROGRAM} --help' for more information.\n"; + exit; +} + +sub message { + print "Generating C format header file for translation.\n" unless $QUIET_ARG; +} + +sub extract { + &determine_type; + + &convert; + + open OUT, ">$OUTFILE"; + &msg_write; + close OUT; + + print "Wrote $OUTFILE\n" unless $QUIET_ARG; +} + +sub convert { + + ## Reading the file + { + local (*IN); + local $/; #slurp mode + open (IN, "<$SRCDIR_ARG/$FILE") || die "can't open $SRCDIR_ARG/$FILE: $!"; + $input = <IN>; + } + + &type_ini if $gettext_type eq "ini"; + &type_keys if $gettext_type eq "keys"; + &type_xml if $gettext_type eq "xml"; + &type_glade if $gettext_type eq "glade"; + &type_scheme if $gettext_type eq "scheme"; + &type_schemas if $gettext_type eq "schemas"; + &type_rfc822deb if $gettext_type eq "rfc822deb"; +} + +sub entity_decode_minimal +{ + local ($_) = @_; + + s/'/'/g; # ' + s/"/"/g; # " + s/&/&/g; + + return $_; +} + +sub entity_decode +{ + local ($_) = @_; + + s/'/'/g; # ' + s/"/"/g; # " + s/&/&/g; + s/</</g; + s/>/>/g; + + return $_; +} + +sub escape_char +{ + return '\"' if $_ eq '"'; + return '\n' if $_ eq "\n"; + return '\\' if $_ eq '\\'; + + return $_; +} + +sub escape +{ + my ($string) = @_; + return join "", map &escape_char, split //, $string; +} + +sub type_ini { + ### For generic translatable desktop files ### + while ($input =~ /^_.*=(.*)$/mg) { + $messages{$1} = []; + } +} + +sub type_keys { + ### For generic translatable mime/keys files ### + while ($input =~ /^\s*_\w+=(.*)$/mg) { + $messages{$1} = []; + } +} + +sub type_xml { + ### For generic translatable XML files ### + + while ($input =~ /(?:<!--([^>]*?)-->[^\n]*\n?[^\n]*)?\s_$w+\s*=\s*\"([^"]*)\"/sg) { # " + $messages{entity_decode_minimal($2)} = []; + $comments{entity_decode_minimal($2)} = $1 if (defined($1)); + } + + while ($input =~ /(?:<!--([^>]*?)-->\s*)?<_($w+)(?: xml:space="($w+)")?[^>]*>(.*?)<\/_\2>/sg) { + $_ = $4; + if (!defined($3) || $3 ne "preserve") { + s/\s+/ /g; + s/^ //; + s/ $//; + } + $messages{$_} = []; + $comments{$_} = $1 if (defined($1)); + } +} + +sub type_schemas { + ### For schemas XML files ### + + # FIXME: We should handle escaped < (less than) + while ($input =~ / + <locale\ name="C">\s* + (<default>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/default>\s*)? + (<short>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/short>\s*)? + (<long>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/long>\s*)? + <\/locale> + /sgx) { + my @totranslate = ($3,$6,$9); + my @eachcomment = ($2,$5,$8); + foreach (@totranslate) { + my $currentcomment = shift @eachcomment; + next if !$_; + s/\s+/ /g; + $messages{entity_decode_minimal($_)} = []; + $comments{entity_decode_minimal($_)} = $currentcomment if (defined($currentcomment)); + } + } +} + +sub type_rfc822deb { + ### For rfc822-style Debian configuration files ### + + my $lineno = 1; + my $type = ''; + while ($input =~ /\G(.*?)(^|\n)(_+)([^:]+):[ \t]*(.*?)(?=\n\S|$)/sg) + { + my ($pre, $newline, $underscore, $tag, $text) = ($1, $2, $3, $4, $5); + while ($pre =~ m/\n/g) + { + $lineno ++; + } + $lineno += length($newline); + my @str_list = rfc822deb_split(length($underscore), $text); + for my $str (@str_list) + { + $strcount++; + $messages{$str} = []; + $loc{$str} = $lineno; + $count{$str} = $strcount; + my $usercomment = ''; + while($pre =~ s/(^|\n)#([^\n]*)$//s) + { + $usercomment = "\n" . $2 . $usercomment; + } + $comments{$str} = $tag . $usercomment; + } + $lineno += ($text =~ s/\n//g); + } +} + +sub rfc822deb_split { + # Debian defines a special way to deal with rfc822-style files: + # when a value contain newlines, it consists of + # 1. a short form (first line) + # 2. a long description, all lines begin with a space, + # and paragraphs are separated by a single dot on a line + # This routine returns an array of all paragraphs, and reformat + # them. + # When first argument is 2, the string is a comma separated list of + # values. + my $type = shift; + my $text = shift; + $text =~ s/^[ \t]//mg; + return (split(/, */, $text, 0)) if $type ne 1; + return ($text) if $text !~ /\n/; + + $text =~ s/([^\n]*)\n//; + my @list = ($1); + my $str = ''; + for my $line (split (/\n/, $text)) + { + chomp $line; + if ($line =~ /^\.\s*$/) + { + # New paragraph + $str =~ s/\s*$//; + push(@list, $str); + $str = ''; + } + elsif ($line =~ /^\s/) + { + # Line which must not be reformatted + $str .= "\n" if length ($str) && $str !~ /\n$/; + $line =~ s/\s+$//; + $str .= $line."\n"; + } + else + { + # Continuation line, remove newline + $str .= " " if length ($str) && $str !~ /\n$/; + $str .= $line; + } + } + $str =~ s/\s*$//; + push(@list, $str) if length ($str); + return @list; +} + +sub type_glade { + ### For translatable Glade XML files ### + + my $tags = "label|title|text|format|copyright|comments|preview_text|tooltip|message"; + + while ($input =~ /<($tags)>([^<]+)<\/($tags)>/sg) { + # Glade sometimes uses tags that normally mark translatable things for + # little bits of non-translatable content. We work around this by not + # translating strings that only includes something like label4 or window1. + $messages{entity_decode($2)} = [] unless $2 =~ /^(window|label|dialog)[0-9]+$/; + } + + while ($input =~ /<items>(..[^<]*)<\/items>/sg) { + for my $item (split (/\n/, $1)) { + $messages{entity_decode($item)} = []; + } + } + + ## handle new glade files + while ($input =~ /<(property|atkproperty)\s+[^>]*translatable\s*=\s*"yes"(?:\s+[^>]*comments\s*=\s*"([^"]*)")?[^>]*>([^<]+)<\/\1>/sg) { + $messages{entity_decode($3)} = [] unless $3 =~ /^(window|label)[0-9]+$/; + if (defined($2) and !($3 =~ /^(window|label)[0-9]+$/)) { + $comments{entity_decode($3)} = entity_decode($2) ; + } + } + while ($input =~ /<atkaction\s+action_name="([^>]*)"\s+description="([^>]+)"\/>/sg) { + $messages{entity_decode_minimal($2)} = []; + } +} + +sub type_scheme { + my ($line, $i, $state, $str, $trcomment, $char); + for $line (split(/\n/, $input)) { + $i = 0; + $state = 0; # 0 - nothing, 1 - string, 2 - translatable string + while ($i < length($line)) { + if (substr($line,$i,1) eq "\"") { + if ($state == 2) { + $comments{$str} = $trcomment if ($trcomment); + $messages{$str} = []; + $str = ''; + $state = 0; $trcomment = ""; + } elsif ($state == 1) { + $str = ''; + $state = 0; $trcomment = ""; + } else { + $state = 1; + $str = ''; + if ($i>0 && substr($line,$i-1,1) eq '_') { + $state = 2; + } + } + } elsif (!$state) { + if (substr($line,$i,1) eq ";") { + $trcomment = substr($line,$i+1); + $trcomment =~ s/^;*\s*//; + $i = length($line); + } elsif ($trcomment && substr($line,$i,1) !~ /\s|\(|\)|_/) { + $trcomment = ""; + } + } else { + if (substr($line,$i,1) eq "\\") { + $char = substr($line,$i+1,1); + if ($char ne "\"" && $char ne "\\") { + $str = $str . "\\"; + } + $i++; + } + $str = $str . substr($line,$i,1); + } + $i++; + } + } +} + +sub msg_write { + my @msgids; + if (%count) + { + @msgids = sort { $count{$a} <=> $count{$b} } keys %count; + } + else + { + @msgids = sort keys %messages; + } + for my $message (@msgids) + { + my $offsetlines = 1; + $offsetlines++ if $message =~ /%/; + if (defined ($comments{$message})) + { + while ($comments{$message} =~ m/\n/g) + { + $offsetlines++; + } + } + print OUT "# ".($loc{$message} - $offsetlines). " \"$FILE\"\n" + if defined $loc{$message}; + print OUT "/* ".$comments{$message}." */\n" + if defined $comments{$message}; + print OUT "/* xgettext:no-c-format */\n" if $message =~ /%/; + + my @lines = split (/\n/, $message, -1); + for (my $n = 0; $n < @lines; $n++) + { + if ($n == 0) + { + print OUT "char *s = N_(\""; + } + else + { + print OUT " \""; + } + + print OUT escape($lines[$n]); + + if ($n < @lines - 1) + { + print OUT "\\n\"\n"; + } + else + { + print OUT "\");\n"; + } + } + } +} + diff --git a/intltool-merge b/intltool-merge new file mode 100755 index 00000000..cb7d8515 --- /dev/null +++ b/intltool-merge @@ -0,0 +1,1315 @@ +#!/usr/bin/perl -w +# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*- + +# +# The Intltool Message Merger +# +# Copyright (C) 2000, 2003 Free Software Foundation. +# Copyright (C) 2000, 2001 Eazel, Inc +# +# Intltool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# version 2 published by the Free Software Foundation. +# +# Intltool 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., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. +# +# Authors: Maciej Stachowiak <mjs@noisehavoc.org> +# Kenneth Christiansen <kenneth@gnu.org> +# Darin Adler <darin@bentspoon.com> +# +# Proper XML UTF-8'ification written by Cyrille Chepelov <chepelov@calixo.net> +# + +## Release information +my $PROGRAM = "intltool-merge"; +my $PACKAGE = "intltool"; +my $VERSION = "0.33"; + +## Loaded modules +use strict; +use Getopt::Long; +use Text::Wrap; +use File::Basename; + +my $must_end_tag = -1; +my $last_depth = -1; +my $translation_depth = -1; +my @tag_stack = (); +my @entered_tag = (); +my @translation_strings = (); +my $leading_space = ""; + +## Scalars used by the option stuff +my $HELP_ARG = 0; +my $VERSION_ARG = 0; +my $BA_STYLE_ARG = 0; +my $XML_STYLE_ARG = 0; +my $KEYS_STYLE_ARG = 0; +my $DESKTOP_STYLE_ARG = 0; +my $SCHEMAS_STYLE_ARG = 0; +my $RFC822DEB_STYLE_ARG = 0; +my $QUIET_ARG = 0; +my $PASS_THROUGH_ARG = 0; +my $UTF8_ARG = 0; +my $MULTIPLE_OUTPUT = 0; +my $cache_file; + +## Handle options +GetOptions +( + "help" => \$HELP_ARG, + "version" => \$VERSION_ARG, + "quiet|q" => \$QUIET_ARG, + "oaf-style|o" => \$BA_STYLE_ARG, ## for compatibility + "ba-style|b" => \$BA_STYLE_ARG, + "xml-style|x" => \$XML_STYLE_ARG, + "keys-style|k" => \$KEYS_STYLE_ARG, + "desktop-style|d" => \$DESKTOP_STYLE_ARG, + "schemas-style|s" => \$SCHEMAS_STYLE_ARG, + "rfc822deb-style|r" => \$RFC822DEB_STYLE_ARG, + "pass-through|p" => \$PASS_THROUGH_ARG, + "utf8|u" => \$UTF8_ARG, + "multiple-output|m" => \$MULTIPLE_OUTPUT, + "cache|c=s" => \$cache_file + ) or &error; + +my $PO_DIR; +my $FILE; +my $OUTFILE; + +my %po_files_by_lang = (); +my %translations = (); +my $iconv = $ENV{"ICONV"} || $ENV{"INTLTOOL_ICONV"} || "/usr/bin/iconv"; + +# Use this instead of \w for XML files to handle more possible characters. +my $w = "[-A-Za-z0-9._:]"; + +# XML quoted string contents +my $q = "[^\\\"]*"; + +## Check for options. + +if ($VERSION_ARG) +{ + &print_version; +} +elsif ($HELP_ARG) +{ + &print_help; +} +elsif ($BA_STYLE_ARG && @ARGV > 2) +{ + &utf8_sanity_check; + &preparation; + &print_message; + &ba_merge_translations; + &finalize; +} +elsif ($XML_STYLE_ARG && @ARGV > 2) +{ + &utf8_sanity_check; + &preparation; + &print_message; + &xml_merge_output; + &finalize; +} +elsif ($KEYS_STYLE_ARG && @ARGV > 2) +{ + &utf8_sanity_check; + &preparation; + &print_message; + &keys_merge_translations; + &finalize; +} +elsif ($DESKTOP_STYLE_ARG && @ARGV > 2) +{ + &utf8_sanity_check; + &preparation; + &print_message; + &desktop_merge_translations; + &finalize; +} +elsif ($SCHEMAS_STYLE_ARG && @ARGV > 2) +{ + &utf8_sanity_check; + &preparation; + &print_message; + &schemas_merge_translations; + &finalize; +} +elsif ($RFC822DEB_STYLE_ARG && @ARGV > 2) +{ + &preparation; + &print_message; + &rfc822deb_merge_translations; + &finalize; +} +else +{ + &print_help; +} + +exit; + +## Sub for printing release information +sub print_version +{ + print <<_EOF_; +${PROGRAM} (${PACKAGE}) ${VERSION} +Written by Maciej Stachowiak, Darin Adler and Kenneth Christiansen. + +Copyright (C) 2000-2003 Free Software Foundation, Inc. +Copyright (C) 2000-2001 Eazel, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +_EOF_ + exit; +} + +## Sub for printing usage information +sub print_help +{ + print <<_EOF_; +Usage: ${PROGRAM} [OPTION]... PO_DIRECTORY FILENAME OUTPUT_FILE +Generates an output file that includes some localized attributes from an +untranslated source file. + +Mandatory options: (exactly one must be specified) + -b, --ba-style includes translations in the bonobo-activation style + -d, --desktop-style includes translations in the desktop style + -k, --keys-style includes translations in the keys style + -s, --schemas-style includes translations in the schemas style + -r, --rfc822deb-style includes translations in the RFC822 style + -x, --xml-style includes translations in the standard xml style + +Other options: + -u, --utf8 convert all strings to UTF-8 before merging + (default for everything except RFC822 style) + -p, --pass-through deprecated, does nothing and issues a warning + -m, --multiple-output output one localized file per locale, instead of + a single file containing all localized elements + -c, --cache=FILE specify cache file name + (usually \$top_builddir/po/.intltool-merge-cache) + -q, --quiet suppress most messages + --help display this help and exit + --version output version information and exit + +Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE") +or send email to <xml-i18n-tools\@gnome.org>. +_EOF_ + exit; +} + + +## Sub for printing error messages +sub print_error +{ + print STDERR "Try `${PROGRAM} --help' for more information.\n"; + exit; +} + + +sub print_message +{ + print "Merging translations into $OUTFILE.\n" unless $QUIET_ARG; +} + + +sub preparation +{ + $PO_DIR = $ARGV[0]; + $FILE = $ARGV[1]; + $OUTFILE = $ARGV[2]; + + &gather_po_files; + &get_translation_database; +} + +# General-purpose code for looking up translations in .po files + +sub po_file2lang +{ + my ($tmp) = @_; + $tmp =~ s/^.*\/(.*)\.po$/$1/; + return $tmp; +} + +sub gather_po_files +{ + for my $po_file (glob "$PO_DIR/*.po") { + $po_files_by_lang{po_file2lang($po_file)} = $po_file; + } +} + +sub get_local_charset +{ + my ($encoding) = @_; + my $alias_file = $ENV{"G_CHARSET_ALIAS"} || "/usr/lib/charset.alias"; + + # seek character encoding aliases in charset.alias (glib) + + if (open CHARSET_ALIAS, $alias_file) + { + while (<CHARSET_ALIAS>) + { + next if /^\#/; + return $1 if (/^\s*([-._a-zA-Z0-9]+)\s+$encoding\b/i) + } + + close CHARSET_ALIAS; + } + + # if not found, return input string + + return $encoding; +} + +sub get_po_encoding +{ + my ($in_po_file) = @_; + my $encoding = ""; + + open IN_PO_FILE, $in_po_file or die; + while (<IN_PO_FILE>) + { + ## example: "Content-Type: text/plain; charset=ISO-8859-1\n" + if (/Content-Type\:.*charset=([-a-zA-Z0-9]+)\\n/) + { + $encoding = $1; + last; + } + } + close IN_PO_FILE; + + if (!$encoding) + { + print STDERR "Warning: no encoding found in $in_po_file. Assuming ISO-8859-1\n" unless $QUIET_ARG; + $encoding = "ISO-8859-1"; + } + + system ("$iconv -f $encoding -t UTF-8 </dev/null 2>/dev/null"); + if ($?) { + $encoding = get_local_charset($encoding); + } + + return $encoding +} + +sub utf8_sanity_check +{ + print STDERR "Warning: option --pass-through has been removed.\n" if $PASS_THROUGH_ARG; + $UTF8_ARG = 1; +} + +sub get_translation_database +{ + if ($cache_file) { + &get_cached_translation_database; + } else { + &create_translation_database; + } +} + +sub get_newest_po_age +{ + my $newest_age; + + foreach my $file (values %po_files_by_lang) + { + my $file_age = -M $file; + $newest_age = $file_age if !$newest_age || $file_age < $newest_age; + } + + $newest_age = 0 if !$newest_age; + + return $newest_age; +} + +sub create_cache +{ + print "Generating and caching the translation database\n" unless $QUIET_ARG; + + &create_translation_database; + + open CACHE, ">$cache_file" || die; + print CACHE join "\x01", %translations; + close CACHE; +} + +sub load_cache +{ + print "Found cached translation database\n" unless $QUIET_ARG; + + my $contents; + open CACHE, "<$cache_file" || die; + { + local $/; + $contents = <CACHE>; + } + close CACHE; + %translations = split "\x01", $contents; +} + +sub get_cached_translation_database +{ + my $cache_file_age = -M $cache_file; + if (defined $cache_file_age) + { + if ($cache_file_age <= &get_newest_po_age) + { + &load_cache; + return; + } + print "Found too-old cached translation database\n" unless $QUIET_ARG; + } + + &create_cache; +} + +sub create_translation_database +{ + for my $lang (keys %po_files_by_lang) + { + my $po_file = $po_files_by_lang{$lang}; + + if ($UTF8_ARG) + { + my $encoding = get_po_encoding ($po_file); + + if (lc $encoding eq "utf-8") + { + open PO_FILE, "<$po_file"; + } + else + { + print STDERR "WARNING: $po_file is not in UTF-8 but $encoding, converting...\n" unless $QUIET_ARG;; + + open PO_FILE, "$iconv -f $encoding -t UTF-8 $po_file|"; + } + } + else + { + open PO_FILE, "<$po_file"; + } + + my $nextfuzzy = 0; + my $inmsgid = 0; + my $inmsgstr = 0; + my $msgid = ""; + my $msgstr = ""; + + while (<PO_FILE>) + { + $nextfuzzy = 1 if /^#, fuzzy/; + + if (/^msgid "((\\.|[^\\])*)"/ ) + { + $translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr; + $msgid = ""; + $msgstr = ""; + + if ($nextfuzzy) { + $inmsgid = 0; + } else { + $msgid = unescape_po_string($1); + $inmsgid = 1; + } + $inmsgstr = 0; + $nextfuzzy = 0; + } + + if (/^msgstr "((\\.|[^\\])*)"/) + { + $msgstr = unescape_po_string($1); + $inmsgstr = 1; + $inmsgid = 0; + } + + if (/^"((\\.|[^\\])*)"/) + { + $msgid .= unescape_po_string($1) if $inmsgid; + $msgstr .= unescape_po_string($1) if $inmsgstr; + } + } + $translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr; + } +} + +sub finalize +{ +} + +sub unescape_one_sequence +{ + my ($sequence) = @_; + + return "\\" if $sequence eq "\\\\"; + return "\"" if $sequence eq "\\\""; + return "\n" if $sequence eq "\\n"; + return "\r" if $sequence eq "\\r"; + return "\t" if $sequence eq "\\t"; + return "\b" if $sequence eq "\\b"; + return "\f" if $sequence eq "\\f"; + return "\a" if $sequence eq "\\a"; + return chr(11) if $sequence eq "\\v"; # vertical tab, see ascii(7) + + return chr(hex($1)) if ($sequence =~ /\\x([0-9a-fA-F]{2})/); + return chr(oct($1)) if ($sequence =~ /\\([0-7]{3})/); + + # FIXME: Is \0 supported as well? Kenneth and Rodney don't want it, see bug #48489 + + return $sequence; +} + +sub unescape_po_string +{ + my ($string) = @_; + + $string =~ s/(\\x[0-9a-fA-F]{2}|\\[0-7]{3}|\\.)/unescape_one_sequence($1)/eg; + + return $string; +} + +## NOTE: deal with < - < but not > - > because it seems its ok to have +## > in the entity. For further info please look at #84738. +sub entity_decode +{ + local ($_) = @_; + + s/'/'/g; # ' + s/"/"/g; # " + s/&/&/g; + s/</</g; + + return $_; +} + +# entity_encode: (string) +# +# Encode the given string to XML format (encode '<' etc). + +sub entity_encode +{ + my ($pre_encoded) = @_; + + my @list_of_chars = unpack ('C*', $pre_encoded); + + # with UTF-8 we only encode minimalistic + return join ('', map (&entity_encode_int_minimalist, @list_of_chars)); +} + +sub entity_encode_int_minimalist +{ + return """ if $_ == 34; + return "&" if $_ == 38; + return "'" if $_ == 39; + return "<" if $_ == 60; + return chr $_; +} + +sub entity_encoded_translation +{ + my ($lang, $string) = @_; + + my $translation = $translations{$lang, $string}; + return $string if !$translation; + return entity_encode ($translation); +} + +## XML (bonobo-activation specific) merge code + +sub ba_merge_translations +{ + my $source; + + { + local $/; # slurp mode + open INPUT, "<$FILE" or die "can't open $FILE: $!"; + $source = <INPUT>; + close INPUT; + } + + open OUTPUT, ">$OUTFILE" or die "can't open $OUTFILE: $!"; + + while ($source =~ s|^(.*?)([ \t]*<\s*$w+\s+($w+\s*=\s*"$q"\s*)+/?>)([ \t]*\n)?||s) + { + print OUTPUT $1; + + my $node = $2 . "\n"; + + my @strings = (); + $_ = $node; + while (s/(\s)_($w+\s*=\s*"($q)")/$1$2/s) { + push @strings, entity_decode($3); + } + print OUTPUT; + + my %langs; + for my $string (@strings) + { + for my $lang (keys %po_files_by_lang) + { + $langs{$lang} = 1 if $translations{$lang, $string}; + } + } + + for my $lang (sort keys %langs) + { + $_ = $node; + s/(\sname\s*=\s*)"($q)"/$1"$2-$lang"/s; + s/(\s)_($w+\s*=\s*")($q)"/$1 . $2 . entity_encoded_translation($lang, $3) . '"'/seg; + print OUTPUT; + } + } + + print OUTPUT $source; + + close OUTPUT; +} + + +## XML (non-bonobo-activation) merge code + + +# Process tag attributes +# Only parameter is a HASH containing attributes -> values mapping +sub getAttributeString +{ + my $sub = shift; + my $do_translate = shift || 0; + my $language = shift || ""; + my $result = ""; + my $translate = shift; + foreach my $e (reverse(sort(keys %{ $sub }))) { + my $key = $e; + my $string = $sub->{$e}; + my $quote = '"'; + + $string =~ s/^[\s]+//; + $string =~ s/[\s]+$//; + + if ($string =~ /^'.*'$/) + { + $quote = "'"; + } + $string =~ s/^['"]//g; + $string =~ s/['"]$//g; + + if ($do_translate && $key =~ /^_/) { + $key =~ s|^_||g; + if ($language) { + + # Handle translation + # + my $decode_string = entity_decode($string); + my $translation = $translations{$language, $decode_string}; + if ($translation) { + $translation = entity_encode($translation); + $string = $translation; + $$translate = 2; + } else { + $$translate = 2; # we still want translations for deep nesting (FIXME: this will cause + # problems since we might get untranslated duplicated entries, but with xml:lang set) + # Fix would be to set it here to eg. 3, and do a check in traverse() to see if any of the containing tags + # really need translation, and only emit "translation" if there is (this means parsing same data twice) + } + } else { + $$translate = 2 if ($translate && (!$$translate)); # watch not to "overwrite" if $translate == 2 + } + } + + $result .= " $key=$quote$string$quote"; + } + return $result; +} + +# Returns a translatable string from XML node, it works on contents of every node in XML::Parser tree +# doesn't support nesting of translatable tags (i.e. <_blah>this <_doh>doesn't</_doh> work</_blah> -- besides +# can you define the correct semantics for this?) +# + +sub getXMLstring +{ + my $ref = shift; + my @list = @{ $ref }; + my $result = ""; + + my $count = scalar(@list); + my $attrs = $list[0]; + my $index = 1; + + while ($index < $count) { + my $type = $list[$index]; + my $content = $list[$index+1]; + if (! $type ) { + # We've got CDATA + if ($content) { + # lets strip the whitespace here, and *ONLY* here + $content =~ s/\s+/ /gs if (!((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/))); + $result .= ($content); + } else { + #print "no cdata content when expected it\n"; # is this possible, is this ok? + # what to do if this happens? + # Did I mention that I hate XML::Parser tree style? + } + } else { + # We've got another element + $result .= "<$type"; + $result .= getAttributeString(@{$content}[0], 0); # no nested translatable elements + if ($content) { + my $subresult = getXMLstring($content); + if ($subresult) { + $result .= ">".$subresult . "</$type>"; + } else { + $result .= "/>"; + } + } else { + $result .= "/>"; + } + } + $index += 2; + } + return $result; +} + +# Translate list of nodes if necessary +sub translate_subnodes +{ + my $fh = shift; + my $content = shift; + my $language = shift || ""; + my $singlelang = shift || 0; + + my @nodes = @{ $content }; + + my $count = scalar(@nodes); + my $index = 0; + while ($index < $count) { + my $type = $nodes[$index]; + my $rest = $nodes[$index+1]; + if ($singlelang) { + my $oldMO = $MULTIPLE_OUTPUT; + $MULTIPLE_OUTPUT = 1; + traverse($fh, $type, $rest, $language); + $MULTIPLE_OUTPUT = $oldMO; + } else { + traverse($fh, $type, $rest, $language); + } + $index += 2; + } +} + +sub traverse +{ + my $fh = shift; + my $nodename = shift; + my $content = shift; + my $language = shift || ""; + + if (!$nodename) { + if ($content =~ /^[\s]*$/) { + $leading_space .= $content; + } + print $fh $content; + } else { + # element + my @all = @{ $content }; + my $attrs = shift @all; + my $translate = 0; + my $outattr = getAttributeString($attrs, 1, $language, \$translate); + + if ($nodename =~ /^_/) { + $translate = 1; + $nodename =~ s/^_//; + } + my $lookup = ''; + print $fh "<$nodename", $outattr; + if ($translate) { + $lookup = getXMLstring($content); + if (!((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/))) { + $lookup =~ s/^\s+//s; + $lookup =~ s/\s+$//s; + } + + if ($lookup || $translate == 2) { + my $translation = $translations{$language, $lookup}; + if ($MULTIPLE_OUTPUT && ($translation || $translate == 2)) { + $translation = $lookup if (!$translation); + print $fh " xml:lang=\"", $language, "\"" if $language; + print $fh ">"; + if ($translate == 2) { + translate_subnodes($fh, \@all, $language, 1); + } else { + print $fh $translation; + } + print $fh "</$nodename>"; + + return; # this means there will be no same translation with xml:lang="$language"... + # if we want them both, just remove this "return" + } else { + print $fh ">"; + if ($translate == 2) { + translate_subnodes($fh, \@all, $language, 1); + } else { + print $fh $lookup; + } + print $fh "</$nodename>"; + } + } else { + print $fh "/>"; + } + + for my $lang (sort keys %po_files_by_lang) { + if ($MULTIPLE_OUTPUT && $lang ne "$language") { + next; + } + if ($lang) { + # Handle translation + # + my $translate = 0; + my $localattrs = getAttributeString($attrs, 1, $lang, \$translate); + my $translation = $translations{$lang, $lookup}; + if ($translate && !$translation) { + $translation = $lookup; + } + + if ($translation || $translate) { + print $fh "\n"; + $leading_space =~ s/.*\n//g; + print $fh $leading_space; + print $fh "<", $nodename, " xml:lang=\"", $lang, "\"", $localattrs, ">"; + if ($translate == 2) { + translate_subnodes($fh, \@all, $lang, 1); + } else { + print $fh $translation; + } + print $fh "</$nodename>"; + } + } + } + + } else { + my $count = scalar(@all); + if ($count > 0) { + print $fh ">"; + my $index = 0; + while ($index < $count) { + my $type = $all[$index]; + my $rest = $all[$index+1]; + traverse($fh, $type, $rest, $language); + $index += 2; + } + print $fh "</$nodename>"; + } else { + print $fh "/>"; + } + } + } +} + +sub intltool_tree_cdatastart +{ + my $expat = shift; + my $clist = $expat->{Curlist}; + my $pos = $#$clist; + + push @$clist, 0 => $expat->original_string(); +} + +sub intltool_tree_cdataend +{ + my $expat = shift; + my $clist = $expat->{Curlist}; + my $pos = $#$clist; + + $clist->[$pos] .= $expat->original_string(); +} + +sub intltool_tree_char +{ + my $expat = shift; + my $text = shift; + my $clist = $expat->{Curlist}; + my $pos = $#$clist; + + # Use original_string so that we retain escaped entities + # in CDATA sections. + # + if ($pos > 0 and $clist->[$pos - 1] eq '0') { + $clist->[$pos] .= $expat->original_string(); + } else { + push @$clist, 0 => $expat->original_string(); + } +} + +sub intltool_tree_start +{ + my $expat = shift; + my $tag = shift; + my @origlist = (); + + # Use original_string so that we retain escaped entities + # in attribute values. We must convert the string to an + # @origlist array to conform to the structure of the Tree + # Style. + # + my @original_array = split /\x/, $expat->original_string(); + my $source = $expat->original_string(); + + # Remove leading tag. + # + $source =~ s|^\s*<\s*(\S+)||s; + + # Grab attribute key/value pairs and push onto @origlist array. + # + while ($source) + { + if ($source =~ /^\s*([\w:-]+)\s*[=]\s*["]/) + { + $source =~ s|^\s*([\w:-]+)\s*[=]\s*["]([^"]*)["]||s; + push @origlist, $1; + push @origlist, '"' . $2 . '"'; + } + elsif ($source =~ /^\s*([\w:-]+)\s*[=]\s*[']/) + { + $source =~ s|^\s*([\w:-]+)\s*[=]\s*[']([^']*)[']||s; + push @origlist, $1; + push @origlist, "'" . $2 . "'"; + } + else + { + last; + } + } + + my $ol = [ { @origlist } ]; + + push @{ $expat->{Lists} }, $expat->{Curlist}; + push @{ $expat->{Curlist} }, $tag => $ol; + $expat->{Curlist} = $ol; +} + +sub readXml +{ + my $filename = shift || return; + if(!-f $filename) { + die "ERROR Cannot find filename: $filename\n"; + } + + my $ret = eval 'require XML::Parser'; + if(!$ret) { + die "You must have XML::Parser installed to run $0\n\n"; + } + my $xp = new XML::Parser(Style => 'Tree'); + $xp->setHandlers(Char => \&intltool_tree_char); + $xp->setHandlers(Start => \&intltool_tree_start); + $xp->setHandlers(CdataStart => \&intltool_tree_cdatastart); + $xp->setHandlers(CdataEnd => \&intltool_tree_cdataend); + my $tree = $xp->parsefile($filename); + +# <foo><head id="a">Hello <em>there</em></head><bar>Howdy<ref/></bar>do</foo> +# would be: +# [foo, [{}, head, [{id => "a"}, 0, "Hello ", em, [{}, 0, "there"]], bar, [{}, +# 0, "Howdy", ref, [{}]], 0, "do" ] ] + + return $tree; +} + +sub print_header +{ + my $infile = shift; + my $fh = shift; + my $source; + + if(!-f $infile) { + die "ERROR Cannot find filename: $infile\n"; + } + + print $fh qq{<?xml version="1.0" encoding="UTF-8"?>\n}; + { + local $/; + open DOCINPUT, "<${FILE}" or die; + $source = <DOCINPUT>; + close DOCINPUT; + } + if ($source =~ /(<!DOCTYPE.*\[.*\]\s*>)/s) + { + print $fh "$1\n"; + } + elsif ($source =~ /(<!DOCTYPE[^>]*>)/s) + { + print $fh "$1\n"; + } +} + +sub parseTree +{ + my $fh = shift; + my $ref = shift; + my $language = shift || ""; + + my $name = shift @{ $ref }; + my $cont = shift @{ $ref }; + traverse($fh, $name, $cont, $language); +} + +sub xml_merge_output +{ + my $source; + + if ($MULTIPLE_OUTPUT) { + for my $lang (sort keys %po_files_by_lang) { + if ( ! -e $lang ) { + mkdir $lang or die "Cannot create subdirectory $lang: $!\n"; + } + open OUTPUT, ">$lang/$OUTFILE" or die "Cannot open $lang/$OUTFILE: $!\n"; + my $tree = readXml($FILE); + print_header($FILE, \*OUTPUT); + parseTree(\*OUTPUT, $tree, $lang); + close OUTPUT; + print "CREATED $lang/$OUTFILE\n" unless $QUIET_ARG; + } + } + open OUTPUT, ">$OUTFILE" or die "Cannot open $OUTFILE: $!\n"; + my $tree = readXml($FILE); + print_header($FILE, \*OUTPUT); + parseTree(\*OUTPUT, $tree); + close OUTPUT; + print "CREATED $OUTFILE\n" unless $QUIET_ARG; +} + +sub keys_merge_translations +{ + open INPUT, "<${FILE}" or die; + open OUTPUT, ">${OUTFILE}" or die; + + while (<INPUT>) + { + if (s/^(\s*)_(\w+=(.*))/$1$2/) + { + my $string = $3; + + print OUTPUT; + + my $non_translated_line = $_; + + for my $lang (sort keys %po_files_by_lang) + { + my $translation = $translations{$lang, $string}; + next if !$translation; + + $_ = $non_translated_line; + s/(\w+)=.*/[$lang]$1=$translation/; + print OUTPUT; + } + } + else + { + print OUTPUT; + } + } + + close OUTPUT; + close INPUT; +} + +sub desktop_merge_translations +{ + open INPUT, "<${FILE}" or die; + open OUTPUT, ">${OUTFILE}" or die; + + while (<INPUT>) + { + if (s/^(\s*)_(\w+=(.*))/$1$2/) + { + my $string = $3; + + print OUTPUT; + + my $non_translated_line = $_; + + for my $lang (sort keys %po_files_by_lang) + { + my $translation = $translations{$lang, $string}; + next if !$translation; + + $_ = $non_translated_line; + s/(\w+)=.*/${1}[$lang]=$translation/; + print OUTPUT; + } + } + else + { + print OUTPUT; + } + } + + close OUTPUT; + close INPUT; +} + +sub schemas_merge_translations +{ + my $source; + + { + local $/; # slurp mode + open INPUT, "<$FILE" or die "can't open $FILE: $!"; + $source = <INPUT>; + close INPUT; + } + + open OUTPUT, ">$OUTFILE" or die; + + # FIXME: support attribute translations + + # Empty nodes never need translation, so unmark all of them. + # For example, <_foo/> is just replaced by <foo/>. + $source =~ s|<\s*_($w+)\s*/>|<$1/>|g; + + while ($source =~ s/ + (.*?) + (\s+)(<locale\ name="C">(\s*) + (<default>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/default>)?(\s*) + (<short>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/short>)?(\s*) + (<long>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/long>)?(\s*) + <\/locale>) + //sx) + { + print OUTPUT $1; + + my $locale_start_spaces = $2 ? $2 : ''; + my $default_spaces = $4 ? $4 : ''; + my $short_spaces = $7 ? $7 : ''; + my $long_spaces = $10 ? $10 : ''; + my $locale_end_spaces = $13 ? $13 : ''; + my $c_default_block = $3 ? $3 : ''; + my $default_string = $6 ? $6 : ''; + my $short_string = $9 ? $9 : ''; + my $long_string = $12 ? $12 : ''; + + print OUTPUT "$locale_start_spaces$c_default_block"; + + $default_string =~ s/\s+/ /g; + $default_string = entity_decode($default_string); + $short_string =~ s/\s+/ /g; + $short_string = entity_decode($short_string); + $long_string =~ s/\s+/ /g; + $long_string = entity_decode($long_string); + + for my $lang (sort keys %po_files_by_lang) + { + my $default_translation = $translations{$lang, $default_string}; + my $short_translation = $translations{$lang, $short_string}; + my $long_translation = $translations{$lang, $long_string}; + + next if (!$default_translation && !$short_translation && + !$long_translation); + + print OUTPUT "\n$locale_start_spaces<locale name=\"$lang\">"; + + print OUTPUT "$default_spaces"; + + if ($default_translation) + { + $default_translation = entity_encode($default_translation); + print OUTPUT "<default>$default_translation</default>"; + } + + print OUTPUT "$short_spaces"; + + if ($short_translation) + { + $short_translation = entity_encode($short_translation); + print OUTPUT "<short>$short_translation</short>"; + } + + print OUTPUT "$long_spaces"; + + if ($long_translation) + { + $long_translation = entity_encode($long_translation); + print OUTPUT "<long>$long_translation</long>"; + } + + print OUTPUT "$locale_end_spaces</locale>"; + } + } + + print OUTPUT $source; + + close OUTPUT; +} + +sub rfc822deb_merge_translations +{ + my %encodings = (); + for my $lang (keys %po_files_by_lang) { + $encodings{$lang} = ($UTF8_ARG ? 'UTF-8' : get_po_encoding($po_files_by_lang{$lang})); + } + + my $source; + + $Text::Wrap::huge = 'overflow'; + $Text::Wrap::break = qr/\n|\s(?=\S)/; + + { + local $/; # slurp mode + open INPUT, "<$FILE" or die "can't open $FILE: $!"; + $source = <INPUT>; + close INPUT; + } + + open OUTPUT, ">${OUTFILE}" or die; + + while ($source =~ /(^|\n+)(_*)([^:\s]+)(:[ \t]*)(.*?)(?=\n[\S\n]|$)/sg) + { + my $sep = $1; + my $non_translated_line = $3.$4; + my $string = $5; + my $underscore = length($2); + next if $underscore eq 0 && $non_translated_line =~ /^#/; + # Remove [] dummy strings + my $stripped = $string; + $stripped =~ s/\[\s[^\[\]]*\],/,/g if $underscore eq 2; + $stripped =~ s/\[\s[^\[\]]*\]$//; + $non_translated_line .= $stripped; + + print OUTPUT $sep.$non_translated_line; + + if ($underscore) + { + my @str_list = rfc822deb_split($underscore, $string); + + for my $lang (sort keys %po_files_by_lang) + { + my $is_translated = 1; + my $str_translated = ''; + my $first = 1; + + for my $str (@str_list) + { + my $translation = $translations{$lang, $str}; + + if (!$translation) + { + $is_translated = 0; + last; + } + + # $translation may also contain [] dummy + # strings, mostly to indicate an empty string + $translation =~ s/\[\s[^\[\]]*\]$//; + + if ($first) + { + if ($underscore eq 2) + { + $str_translated .= $translation; + } + else + { + $str_translated .= + Text::Tabs::expand($translation) . + "\n"; + } + } + else + { + if ($underscore eq 2) + { + $str_translated .= ', ' . $translation; + } + else + { + $str_translated .= Text::Tabs::expand( + Text::Wrap::wrap(' ', ' ', $translation)) . + "\n .\n"; + } + } + $first = 0; + + # To fix some problems with Text::Wrap::wrap + $str_translated =~ s/(\n )+\n/\n .\n/g; + } + next unless $is_translated; + + $str_translated =~ s/\n \.\n$//; + $str_translated =~ s/\s+$//; + + $_ = $non_translated_line; + s/^(\w+):\s*.*/$sep${1}-$lang.$encodings{$lang}: $str_translated/s; + print OUTPUT; + } + } + } + print OUTPUT "\n"; + + close OUTPUT; + close INPUT; +} + +sub rfc822deb_split +{ + # Debian defines a special way to deal with rfc822-style files: + # when a value contain newlines, it consists of + # 1. a short form (first line) + # 2. a long description, all lines begin with a space, + # and paragraphs are separated by a single dot on a line + # This routine returns an array of all paragraphs, and reformat + # them. + # When first argument is 2, the string is a comma separated list of + # values. + my $type = shift; + my $text = shift; + $text =~ s/^[ \t]//mg; + return (split(/, */, $text, 0)) if $type ne 1; + return ($text) if $text !~ /\n/; + + $text =~ s/([^\n]*)\n//; + my @list = ($1); + my $str = ''; + + for my $line (split (/\n/, $text)) + { + chomp $line; + if ($line =~ /^\.\s*$/) + { + # New paragraph + $str =~ s/\s*$//; + push(@list, $str); + $str = ''; + } + elsif ($line =~ /^\s/) + { + # Line which must not be reformatted + $str .= "\n" if length ($str) && $str !~ /\n$/; + $line =~ s/\s+$//; + $str .= $line."\n"; + } + else + { + # Continuation line, remove newline + $str .= " " if length ($str) && $str !~ /\n$/; + $str .= $line; + } + } + + $str =~ s/\s*$//; + push(@list, $str) if length ($str); + + return @list; +} + diff --git a/intltool-merge.in b/intltool-merge.in new file mode 100644 index 00000000..7c96d987 --- /dev/null +++ b/intltool-merge.in @@ -0,0 +1,1315 @@ +#!@INTLTOOL_PERL@ -w +# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*- + +# +# The Intltool Message Merger +# +# Copyright (C) 2000, 2003 Free Software Foundation. +# Copyright (C) 2000, 2001 Eazel, Inc +# +# Intltool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# version 2 published by the Free Software Foundation. +# +# Intltool 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., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. +# +# Authors: Maciej Stachowiak <mjs@noisehavoc.org> +# Kenneth Christiansen <kenneth@gnu.org> +# Darin Adler <darin@bentspoon.com> +# +# Proper XML UTF-8'ification written by Cyrille Chepelov <chepelov@calixo.net> +# + +## Release information +my $PROGRAM = "intltool-merge"; +my $PACKAGE = "intltool"; +my $VERSION = "0.33"; + +## Loaded modules +use strict; +use Getopt::Long; +use Text::Wrap; +use File::Basename; + +my $must_end_tag = -1; +my $last_depth = -1; +my $translation_depth = -1; +my @tag_stack = (); +my @entered_tag = (); +my @translation_strings = (); +my $leading_space = ""; + +## Scalars used by the option stuff +my $HELP_ARG = 0; +my $VERSION_ARG = 0; +my $BA_STYLE_ARG = 0; +my $XML_STYLE_ARG = 0; +my $KEYS_STYLE_ARG = 0; +my $DESKTOP_STYLE_ARG = 0; +my $SCHEMAS_STYLE_ARG = 0; +my $RFC822DEB_STYLE_ARG = 0; +my $QUIET_ARG = 0; +my $PASS_THROUGH_ARG = 0; +my $UTF8_ARG = 0; +my $MULTIPLE_OUTPUT = 0; +my $cache_file; + +## Handle options +GetOptions +( + "help" => \$HELP_ARG, + "version" => \$VERSION_ARG, + "quiet|q" => \$QUIET_ARG, + "oaf-style|o" => \$BA_STYLE_ARG, ## for compatibility + "ba-style|b" => \$BA_STYLE_ARG, + "xml-style|x" => \$XML_STYLE_ARG, + "keys-style|k" => \$KEYS_STYLE_ARG, + "desktop-style|d" => \$DESKTOP_STYLE_ARG, + "schemas-style|s" => \$SCHEMAS_STYLE_ARG, + "rfc822deb-style|r" => \$RFC822DEB_STYLE_ARG, + "pass-through|p" => \$PASS_THROUGH_ARG, + "utf8|u" => \$UTF8_ARG, + "multiple-output|m" => \$MULTIPLE_OUTPUT, + "cache|c=s" => \$cache_file + ) or &error; + +my $PO_DIR; +my $FILE; +my $OUTFILE; + +my %po_files_by_lang = (); +my %translations = (); +my $iconv = $ENV{"ICONV"} || $ENV{"INTLTOOL_ICONV"} || "/usr/bin/iconv"; + +# Use this instead of \w for XML files to handle more possible characters. +my $w = "[-A-Za-z0-9._:]"; + +# XML quoted string contents +my $q = "[^\\\"]*"; + +## Check for options. + +if ($VERSION_ARG) +{ + &print_version; +} +elsif ($HELP_ARG) +{ + &print_help; +} +elsif ($BA_STYLE_ARG && @ARGV > 2) +{ + &utf8_sanity_check; + &preparation; + &print_message; + &ba_merge_translations; + &finalize; +} +elsif ($XML_STYLE_ARG && @ARGV > 2) +{ + &utf8_sanity_check; + &preparation; + &print_message; + &xml_merge_output; + &finalize; +} +elsif ($KEYS_STYLE_ARG && @ARGV > 2) +{ + &utf8_sanity_check; + &preparation; + &print_message; + &keys_merge_translations; + &finalize; +} +elsif ($DESKTOP_STYLE_ARG && @ARGV > 2) +{ + &utf8_sanity_check; + &preparation; + &print_message; + &desktop_merge_translations; + &finalize; +} +elsif ($SCHEMAS_STYLE_ARG && @ARGV > 2) +{ + &utf8_sanity_check; + &preparation; + &print_message; + &schemas_merge_translations; + &finalize; +} +elsif ($RFC822DEB_STYLE_ARG && @ARGV > 2) +{ + &preparation; + &print_message; + &rfc822deb_merge_translations; + &finalize; +} +else +{ + &print_help; +} + +exit; + +## Sub for printing release information +sub print_version +{ + print <<_EOF_; +${PROGRAM} (${PACKAGE}) ${VERSION} +Written by Maciej Stachowiak, Darin Adler and Kenneth Christiansen. + +Copyright (C) 2000-2003 Free Software Foundation, Inc. +Copyright (C) 2000-2001 Eazel, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +_EOF_ + exit; +} + +## Sub for printing usage information +sub print_help +{ + print <<_EOF_; +Usage: ${PROGRAM} [OPTION]... PO_DIRECTORY FILENAME OUTPUT_FILE +Generates an output file that includes some localized attributes from an +untranslated source file. + +Mandatory options: (exactly one must be specified) + -b, --ba-style includes translations in the bonobo-activation style + -d, --desktop-style includes translations in the desktop style + -k, --keys-style includes translations in the keys style + -s, --schemas-style includes translations in the schemas style + -r, --rfc822deb-style includes translations in the RFC822 style + -x, --xml-style includes translations in the standard xml style + +Other options: + -u, --utf8 convert all strings to UTF-8 before merging + (default for everything except RFC822 style) + -p, --pass-through deprecated, does nothing and issues a warning + -m, --multiple-output output one localized file per locale, instead of + a single file containing all localized elements + -c, --cache=FILE specify cache file name + (usually \$top_builddir/po/.intltool-merge-cache) + -q, --quiet suppress most messages + --help display this help and exit + --version output version information and exit + +Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE") +or send email to <xml-i18n-tools\@gnome.org>. +_EOF_ + exit; +} + + +## Sub for printing error messages +sub print_error +{ + print STDERR "Try `${PROGRAM} --help' for more information.\n"; + exit; +} + + +sub print_message +{ + print "Merging translations into $OUTFILE.\n" unless $QUIET_ARG; +} + + +sub preparation +{ + $PO_DIR = $ARGV[0]; + $FILE = $ARGV[1]; + $OUTFILE = $ARGV[2]; + + &gather_po_files; + &get_translation_database; +} + +# General-purpose code for looking up translations in .po files + +sub po_file2lang +{ + my ($tmp) = @_; + $tmp =~ s/^.*\/(.*)\.po$/$1/; + return $tmp; +} + +sub gather_po_files +{ + for my $po_file (glob "$PO_DIR/*.po") { + $po_files_by_lang{po_file2lang($po_file)} = $po_file; + } +} + +sub get_local_charset +{ + my ($encoding) = @_; + my $alias_file = $ENV{"G_CHARSET_ALIAS"} || "/usr/lib/charset.alias"; + + # seek character encoding aliases in charset.alias (glib) + + if (open CHARSET_ALIAS, $alias_file) + { + while (<CHARSET_ALIAS>) + { + next if /^\#/; + return $1 if (/^\s*([-._a-zA-Z0-9]+)\s+$encoding\b/i) + } + + close CHARSET_ALIAS; + } + + # if not found, return input string + + return $encoding; +} + +sub get_po_encoding +{ + my ($in_po_file) = @_; + my $encoding = ""; + + open IN_PO_FILE, $in_po_file or die; + while (<IN_PO_FILE>) + { + ## example: "Content-Type: text/plain; charset=ISO-8859-1\n" + if (/Content-Type\:.*charset=([-a-zA-Z0-9]+)\\n/) + { + $encoding = $1; + last; + } + } + close IN_PO_FILE; + + if (!$encoding) + { + print STDERR "Warning: no encoding found in $in_po_file. Assuming ISO-8859-1\n" unless $QUIET_ARG; + $encoding = "ISO-8859-1"; + } + + system ("$iconv -f $encoding -t UTF-8 </dev/null 2>/dev/null"); + if ($?) { + $encoding = get_local_charset($encoding); + } + + return $encoding +} + +sub utf8_sanity_check +{ + print STDERR "Warning: option --pass-through has been removed.\n" if $PASS_THROUGH_ARG; + $UTF8_ARG = 1; +} + +sub get_translation_database +{ + if ($cache_file) { + &get_cached_translation_database; + } else { + &create_translation_database; + } +} + +sub get_newest_po_age +{ + my $newest_age; + + foreach my $file (values %po_files_by_lang) + { + my $file_age = -M $file; + $newest_age = $file_age if !$newest_age || $file_age < $newest_age; + } + + $newest_age = 0 if !$newest_age; + + return $newest_age; +} + +sub create_cache +{ + print "Generating and caching the translation database\n" unless $QUIET_ARG; + + &create_translation_database; + + open CACHE, ">$cache_file" || die; + print CACHE join "\x01", %translations; + close CACHE; +} + +sub load_cache +{ + print "Found cached translation database\n" unless $QUIET_ARG; + + my $contents; + open CACHE, "<$cache_file" || die; + { + local $/; + $contents = <CACHE>; + } + close CACHE; + %translations = split "\x01", $contents; +} + +sub get_cached_translation_database +{ + my $cache_file_age = -M $cache_file; + if (defined $cache_file_age) + { + if ($cache_file_age <= &get_newest_po_age) + { + &load_cache; + return; + } + print "Found too-old cached translation database\n" unless $QUIET_ARG; + } + + &create_cache; +} + +sub create_translation_database +{ + for my $lang (keys %po_files_by_lang) + { + my $po_file = $po_files_by_lang{$lang}; + + if ($UTF8_ARG) + { + my $encoding = get_po_encoding ($po_file); + + if (lc $encoding eq "utf-8") + { + open PO_FILE, "<$po_file"; + } + else + { + print STDERR "WARNING: $po_file is not in UTF-8 but $encoding, converting...\n" unless $QUIET_ARG;; + + open PO_FILE, "$iconv -f $encoding -t UTF-8 $po_file|"; + } + } + else + { + open PO_FILE, "<$po_file"; + } + + my $nextfuzzy = 0; + my $inmsgid = 0; + my $inmsgstr = 0; + my $msgid = ""; + my $msgstr = ""; + + while (<PO_FILE>) + { + $nextfuzzy = 1 if /^#, fuzzy/; + + if (/^msgid "((\\.|[^\\])*)"/ ) + { + $translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr; + $msgid = ""; + $msgstr = ""; + + if ($nextfuzzy) { + $inmsgid = 0; + } else { + $msgid = unescape_po_string($1); + $inmsgid = 1; + } + $inmsgstr = 0; + $nextfuzzy = 0; + } + + if (/^msgstr "((\\.|[^\\])*)"/) + { + $msgstr = unescape_po_string($1); + $inmsgstr = 1; + $inmsgid = 0; + } + + if (/^"((\\.|[^\\])*)"/) + { + $msgid .= unescape_po_string($1) if $inmsgid; + $msgstr .= unescape_po_string($1) if $inmsgstr; + } + } + $translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr; + } +} + +sub finalize +{ +} + +sub unescape_one_sequence +{ + my ($sequence) = @_; + + return "\\" if $sequence eq "\\\\"; + return "\"" if $sequence eq "\\\""; + return "\n" if $sequence eq "\\n"; + return "\r" if $sequence eq "\\r"; + return "\t" if $sequence eq "\\t"; + return "\b" if $sequence eq "\\b"; + return "\f" if $sequence eq "\\f"; + return "\a" if $sequence eq "\\a"; + return chr(11) if $sequence eq "\\v"; # vertical tab, see ascii(7) + + return chr(hex($1)) if ($sequence =~ /\\x([0-9a-fA-F]{2})/); + return chr(oct($1)) if ($sequence =~ /\\([0-7]{3})/); + + # FIXME: Is \0 supported as well? Kenneth and Rodney don't want it, see bug #48489 + + return $sequence; +} + +sub unescape_po_string +{ + my ($string) = @_; + + $string =~ s/(\\x[0-9a-fA-F]{2}|\\[0-7]{3}|\\.)/unescape_one_sequence($1)/eg; + + return $string; +} + +## NOTE: deal with < - < but not > - > because it seems its ok to have +## > in the entity. For further info please look at #84738. +sub entity_decode +{ + local ($_) = @_; + + s/'/'/g; # ' + s/"/"/g; # " + s/&/&/g; + s/</</g; + + return $_; +} + +# entity_encode: (string) +# +# Encode the given string to XML format (encode '<' etc). + +sub entity_encode +{ + my ($pre_encoded) = @_; + + my @list_of_chars = unpack ('C*', $pre_encoded); + + # with UTF-8 we only encode minimalistic + return join ('', map (&entity_encode_int_minimalist, @list_of_chars)); +} + +sub entity_encode_int_minimalist +{ + return """ if $_ == 34; + return "&" if $_ == 38; + return "'" if $_ == 39; + return "<" if $_ == 60; + return chr $_; +} + +sub entity_encoded_translation +{ + my ($lang, $string) = @_; + + my $translation = $translations{$lang, $string}; + return $string if !$translation; + return entity_encode ($translation); +} + +## XML (bonobo-activation specific) merge code + +sub ba_merge_translations +{ + my $source; + + { + local $/; # slurp mode + open INPUT, "<$FILE" or die "can't open $FILE: $!"; + $source = <INPUT>; + close INPUT; + } + + open OUTPUT, ">$OUTFILE" or die "can't open $OUTFILE: $!"; + + while ($source =~ s|^(.*?)([ \t]*<\s*$w+\s+($w+\s*=\s*"$q"\s*)+/?>)([ \t]*\n)?||s) + { + print OUTPUT $1; + + my $node = $2 . "\n"; + + my @strings = (); + $_ = $node; + while (s/(\s)_($w+\s*=\s*"($q)")/$1$2/s) { + push @strings, entity_decode($3); + } + print OUTPUT; + + my %langs; + for my $string (@strings) + { + for my $lang (keys %po_files_by_lang) + { + $langs{$lang} = 1 if $translations{$lang, $string}; + } + } + + for my $lang (sort keys %langs) + { + $_ = $node; + s/(\sname\s*=\s*)"($q)"/$1"$2-$lang"/s; + s/(\s)_($w+\s*=\s*")($q)"/$1 . $2 . entity_encoded_translation($lang, $3) . '"'/seg; + print OUTPUT; + } + } + + print OUTPUT $source; + + close OUTPUT; +} + + +## XML (non-bonobo-activation) merge code + + +# Process tag attributes +# Only parameter is a HASH containing attributes -> values mapping +sub getAttributeString +{ + my $sub = shift; + my $do_translate = shift || 0; + my $language = shift || ""; + my $result = ""; + my $translate = shift; + foreach my $e (reverse(sort(keys %{ $sub }))) { + my $key = $e; + my $string = $sub->{$e}; + my $quote = '"'; + + $string =~ s/^[\s]+//; + $string =~ s/[\s]+$//; + + if ($string =~ /^'.*'$/) + { + $quote = "'"; + } + $string =~ s/^['"]//g; + $string =~ s/['"]$//g; + + if ($do_translate && $key =~ /^_/) { + $key =~ s|^_||g; + if ($language) { + + # Handle translation + # + my $decode_string = entity_decode($string); + my $translation = $translations{$language, $decode_string}; + if ($translation) { + $translation = entity_encode($translation); + $string = $translation; + $$translate = 2; + } else { + $$translate = 2; # we still want translations for deep nesting (FIXME: this will cause + # problems since we might get untranslated duplicated entries, but with xml:lang set) + # Fix would be to set it here to eg. 3, and do a check in traverse() to see if any of the containing tags + # really need translation, and only emit "translation" if there is (this means parsing same data twice) + } + } else { + $$translate = 2 if ($translate && (!$$translate)); # watch not to "overwrite" if $translate == 2 + } + } + + $result .= " $key=$quote$string$quote"; + } + return $result; +} + +# Returns a translatable string from XML node, it works on contents of every node in XML::Parser tree +# doesn't support nesting of translatable tags (i.e. <_blah>this <_doh>doesn't</_doh> work</_blah> -- besides +# can you define the correct semantics for this?) +# + +sub getXMLstring +{ + my $ref = shift; + my @list = @{ $ref }; + my $result = ""; + + my $count = scalar(@list); + my $attrs = $list[0]; + my $index = 1; + + while ($index < $count) { + my $type = $list[$index]; + my $content = $list[$index+1]; + if (! $type ) { + # We've got CDATA + if ($content) { + # lets strip the whitespace here, and *ONLY* here + $content =~ s/\s+/ /gs if (!((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/))); + $result .= ($content); + } else { + #print "no cdata content when expected it\n"; # is this possible, is this ok? + # what to do if this happens? + # Did I mention that I hate XML::Parser tree style? + } + } else { + # We've got another element + $result .= "<$type"; + $result .= getAttributeString(@{$content}[0], 0); # no nested translatable elements + if ($content) { + my $subresult = getXMLstring($content); + if ($subresult) { + $result .= ">".$subresult . "</$type>"; + } else { + $result .= "/>"; + } + } else { + $result .= "/>"; + } + } + $index += 2; + } + return $result; +} + +# Translate list of nodes if necessary +sub translate_subnodes +{ + my $fh = shift; + my $content = shift; + my $language = shift || ""; + my $singlelang = shift || 0; + + my @nodes = @{ $content }; + + my $count = scalar(@nodes); + my $index = 0; + while ($index < $count) { + my $type = $nodes[$index]; + my $rest = $nodes[$index+1]; + if ($singlelang) { + my $oldMO = $MULTIPLE_OUTPUT; + $MULTIPLE_OUTPUT = 1; + traverse($fh, $type, $rest, $language); + $MULTIPLE_OUTPUT = $oldMO; + } else { + traverse($fh, $type, $rest, $language); + } + $index += 2; + } +} + +sub traverse +{ + my $fh = shift; + my $nodename = shift; + my $content = shift; + my $language = shift || ""; + + if (!$nodename) { + if ($content =~ /^[\s]*$/) { + $leading_space .= $content; + } + print $fh $content; + } else { + # element + my @all = @{ $content }; + my $attrs = shift @all; + my $translate = 0; + my $outattr = getAttributeString($attrs, 1, $language, \$translate); + + if ($nodename =~ /^_/) { + $translate = 1; + $nodename =~ s/^_//; + } + my $lookup = ''; + print $fh "<$nodename", $outattr; + if ($translate) { + $lookup = getXMLstring($content); + if (!((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/))) { + $lookup =~ s/^\s+//s; + $lookup =~ s/\s+$//s; + } + + if ($lookup || $translate == 2) { + my $translation = $translations{$language, $lookup}; + if ($MULTIPLE_OUTPUT && ($translation || $translate == 2)) { + $translation = $lookup if (!$translation); + print $fh " xml:lang=\"", $language, "\"" if $language; + print $fh ">"; + if ($translate == 2) { + translate_subnodes($fh, \@all, $language, 1); + } else { + print $fh $translation; + } + print $fh "</$nodename>"; + + return; # this means there will be no same translation with xml:lang="$language"... + # if we want them both, just remove this "return" + } else { + print $fh ">"; + if ($translate == 2) { + translate_subnodes($fh, \@all, $language, 1); + } else { + print $fh $lookup; + } + print $fh "</$nodename>"; + } + } else { + print $fh "/>"; + } + + for my $lang (sort keys %po_files_by_lang) { + if ($MULTIPLE_OUTPUT && $lang ne "$language") { + next; + } + if ($lang) { + # Handle translation + # + my $translate = 0; + my $localattrs = getAttributeString($attrs, 1, $lang, \$translate); + my $translation = $translations{$lang, $lookup}; + if ($translate && !$translation) { + $translation = $lookup; + } + + if ($translation || $translate) { + print $fh "\n"; + $leading_space =~ s/.*\n//g; + print $fh $leading_space; + print $fh "<", $nodename, " xml:lang=\"", $lang, "\"", $localattrs, ">"; + if ($translate == 2) { + translate_subnodes($fh, \@all, $lang, 1); + } else { + print $fh $translation; + } + print $fh "</$nodename>"; + } + } + } + + } else { + my $count = scalar(@all); + if ($count > 0) { + print $fh ">"; + my $index = 0; + while ($index < $count) { + my $type = $all[$index]; + my $rest = $all[$index+1]; + traverse($fh, $type, $rest, $language); + $index += 2; + } + print $fh "</$nodename>"; + } else { + print $fh "/>"; + } + } + } +} + +sub intltool_tree_cdatastart +{ + my $expat = shift; + my $clist = $expat->{Curlist}; + my $pos = $#$clist; + + push @$clist, 0 => $expat->original_string(); +} + +sub intltool_tree_cdataend +{ + my $expat = shift; + my $clist = $expat->{Curlist}; + my $pos = $#$clist; + + $clist->[$pos] .= $expat->original_string(); +} + +sub intltool_tree_char +{ + my $expat = shift; + my $text = shift; + my $clist = $expat->{Curlist}; + my $pos = $#$clist; + + # Use original_string so that we retain escaped entities + # in CDATA sections. + # + if ($pos > 0 and $clist->[$pos - 1] eq '0') { + $clist->[$pos] .= $expat->original_string(); + } else { + push @$clist, 0 => $expat->original_string(); + } +} + +sub intltool_tree_start +{ + my $expat = shift; + my $tag = shift; + my @origlist = (); + + # Use original_string so that we retain escaped entities + # in attribute values. We must convert the string to an + # @origlist array to conform to the structure of the Tree + # Style. + # + my @original_array = split /\x/, $expat->original_string(); + my $source = $expat->original_string(); + + # Remove leading tag. + # + $source =~ s|^\s*<\s*(\S+)||s; + + # Grab attribute key/value pairs and push onto @origlist array. + # + while ($source) + { + if ($source =~ /^\s*([\w:-]+)\s*[=]\s*["]/) + { + $source =~ s|^\s*([\w:-]+)\s*[=]\s*["]([^"]*)["]||s; + push @origlist, $1; + push @origlist, '"' . $2 . '"'; + } + elsif ($source =~ /^\s*([\w:-]+)\s*[=]\s*[']/) + { + $source =~ s|^\s*([\w:-]+)\s*[=]\s*[']([^']*)[']||s; + push @origlist, $1; + push @origlist, "'" . $2 . "'"; + } + else + { + last; + } + } + + my $ol = [ { @origlist } ]; + + push @{ $expat->{Lists} }, $expat->{Curlist}; + push @{ $expat->{Curlist} }, $tag => $ol; + $expat->{Curlist} = $ol; +} + +sub readXml +{ + my $filename = shift || return; + if(!-f $filename) { + die "ERROR Cannot find filename: $filename\n"; + } + + my $ret = eval 'require XML::Parser'; + if(!$ret) { + die "You must have XML::Parser installed to run $0\n\n"; + } + my $xp = new XML::Parser(Style => 'Tree'); + $xp->setHandlers(Char => \&intltool_tree_char); + $xp->setHandlers(Start => \&intltool_tree_start); + $xp->setHandlers(CdataStart => \&intltool_tree_cdatastart); + $xp->setHandlers(CdataEnd => \&intltool_tree_cdataend); + my $tree = $xp->parsefile($filename); + +# <foo><head id="a">Hello <em>there</em></head><bar>Howdy<ref/></bar>do</foo> +# would be: +# [foo, [{}, head, [{id => "a"}, 0, "Hello ", em, [{}, 0, "there"]], bar, [{}, +# 0, "Howdy", ref, [{}]], 0, "do" ] ] + + return $tree; +} + +sub print_header +{ + my $infile = shift; + my $fh = shift; + my $source; + + if(!-f $infile) { + die "ERROR Cannot find filename: $infile\n"; + } + + print $fh qq{<?xml version="1.0" encoding="UTF-8"?>\n}; + { + local $/; + open DOCINPUT, "<${FILE}" or die; + $source = <DOCINPUT>; + close DOCINPUT; + } + if ($source =~ /(<!DOCTYPE.*\[.*\]\s*>)/s) + { + print $fh "$1\n"; + } + elsif ($source =~ /(<!DOCTYPE[^>]*>)/s) + { + print $fh "$1\n"; + } +} + +sub parseTree +{ + my $fh = shift; + my $ref = shift; + my $language = shift || ""; + + my $name = shift @{ $ref }; + my $cont = shift @{ $ref }; + traverse($fh, $name, $cont, $language); +} + +sub xml_merge_output +{ + my $source; + + if ($MULTIPLE_OUTPUT) { + for my $lang (sort keys %po_files_by_lang) { + if ( ! -e $lang ) { + mkdir $lang or die "Cannot create subdirectory $lang: $!\n"; + } + open OUTPUT, ">$lang/$OUTFILE" or die "Cannot open $lang/$OUTFILE: $!\n"; + my $tree = readXml($FILE); + print_header($FILE, \*OUTPUT); + parseTree(\*OUTPUT, $tree, $lang); + close OUTPUT; + print "CREATED $lang/$OUTFILE\n" unless $QUIET_ARG; + } + } + open OUTPUT, ">$OUTFILE" or die "Cannot open $OUTFILE: $!\n"; + my $tree = readXml($FILE); + print_header($FILE, \*OUTPUT); + parseTree(\*OUTPUT, $tree); + close OUTPUT; + print "CREATED $OUTFILE\n" unless $QUIET_ARG; +} + +sub keys_merge_translations +{ + open INPUT, "<${FILE}" or die; + open OUTPUT, ">${OUTFILE}" or die; + + while (<INPUT>) + { + if (s/^(\s*)_(\w+=(.*))/$1$2/) + { + my $string = $3; + + print OUTPUT; + + my $non_translated_line = $_; + + for my $lang (sort keys %po_files_by_lang) + { + my $translation = $translations{$lang, $string}; + next if !$translation; + + $_ = $non_translated_line; + s/(\w+)=.*/[$lang]$1=$translation/; + print OUTPUT; + } + } + else + { + print OUTPUT; + } + } + + close OUTPUT; + close INPUT; +} + +sub desktop_merge_translations +{ + open INPUT, "<${FILE}" or die; + open OUTPUT, ">${OUTFILE}" or die; + + while (<INPUT>) + { + if (s/^(\s*)_(\w+=(.*))/$1$2/) + { + my $string = $3; + + print OUTPUT; + + my $non_translated_line = $_; + + for my $lang (sort keys %po_files_by_lang) + { + my $translation = $translations{$lang, $string}; + next if !$translation; + + $_ = $non_translated_line; + s/(\w+)=.*/${1}[$lang]=$translation/; + print OUTPUT; + } + } + else + { + print OUTPUT; + } + } + + close OUTPUT; + close INPUT; +} + +sub schemas_merge_translations +{ + my $source; + + { + local $/; # slurp mode + open INPUT, "<$FILE" or die "can't open $FILE: $!"; + $source = <INPUT>; + close INPUT; + } + + open OUTPUT, ">$OUTFILE" or die; + + # FIXME: support attribute translations + + # Empty nodes never need translation, so unmark all of them. + # For example, <_foo/> is just replaced by <foo/>. + $source =~ s|<\s*_($w+)\s*/>|<$1/>|g; + + while ($source =~ s/ + (.*?) + (\s+)(<locale\ name="C">(\s*) + (<default>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/default>)?(\s*) + (<short>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/short>)?(\s*) + (<long>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/long>)?(\s*) + <\/locale>) + //sx) + { + print OUTPUT $1; + + my $locale_start_spaces = $2 ? $2 : ''; + my $default_spaces = $4 ? $4 : ''; + my $short_spaces = $7 ? $7 : ''; + my $long_spaces = $10 ? $10 : ''; + my $locale_end_spaces = $13 ? $13 : ''; + my $c_default_block = $3 ? $3 : ''; + my $default_string = $6 ? $6 : ''; + my $short_string = $9 ? $9 : ''; + my $long_string = $12 ? $12 : ''; + + print OUTPUT "$locale_start_spaces$c_default_block"; + + $default_string =~ s/\s+/ /g; + $default_string = entity_decode($default_string); + $short_string =~ s/\s+/ /g; + $short_string = entity_decode($short_string); + $long_string =~ s/\s+/ /g; + $long_string = entity_decode($long_string); + + for my $lang (sort keys %po_files_by_lang) + { + my $default_translation = $translations{$lang, $default_string}; + my $short_translation = $translations{$lang, $short_string}; + my $long_translation = $translations{$lang, $long_string}; + + next if (!$default_translation && !$short_translation && + !$long_translation); + + print OUTPUT "\n$locale_start_spaces<locale name=\"$lang\">"; + + print OUTPUT "$default_spaces"; + + if ($default_translation) + { + $default_translation = entity_encode($default_translation); + print OUTPUT "<default>$default_translation</default>"; + } + + print OUTPUT "$short_spaces"; + + if ($short_translation) + { + $short_translation = entity_encode($short_translation); + print OUTPUT "<short>$short_translation</short>"; + } + + print OUTPUT "$long_spaces"; + + if ($long_translation) + { + $long_translation = entity_encode($long_translation); + print OUTPUT "<long>$long_translation</long>"; + } + + print OUTPUT "$locale_end_spaces</locale>"; + } + } + + print OUTPUT $source; + + close OUTPUT; +} + +sub rfc822deb_merge_translations +{ + my %encodings = (); + for my $lang (keys %po_files_by_lang) { + $encodings{$lang} = ($UTF8_ARG ? 'UTF-8' : get_po_encoding($po_files_by_lang{$lang})); + } + + my $source; + + $Text::Wrap::huge = 'overflow'; + $Text::Wrap::break = qr/\n|\s(?=\S)/; + + { + local $/; # slurp mode + open INPUT, "<$FILE" or die "can't open $FILE: $!"; + $source = <INPUT>; + close INPUT; + } + + open OUTPUT, ">${OUTFILE}" or die; + + while ($source =~ /(^|\n+)(_*)([^:\s]+)(:[ \t]*)(.*?)(?=\n[\S\n]|$)/sg) + { + my $sep = $1; + my $non_translated_line = $3.$4; + my $string = $5; + my $underscore = length($2); + next if $underscore eq 0 && $non_translated_line =~ /^#/; + # Remove [] dummy strings + my $stripped = $string; + $stripped =~ s/\[\s[^\[\]]*\],/,/g if $underscore eq 2; + $stripped =~ s/\[\s[^\[\]]*\]$//; + $non_translated_line .= $stripped; + + print OUTPUT $sep.$non_translated_line; + + if ($underscore) + { + my @str_list = rfc822deb_split($underscore, $string); + + for my $lang (sort keys %po_files_by_lang) + { + my $is_translated = 1; + my $str_translated = ''; + my $first = 1; + + for my $str (@str_list) + { + my $translation = $translations{$lang, $str}; + + if (!$translation) + { + $is_translated = 0; + last; + } + + # $translation may also contain [] dummy + # strings, mostly to indicate an empty string + $translation =~ s/\[\s[^\[\]]*\]$//; + + if ($first) + { + if ($underscore eq 2) + { + $str_translated .= $translation; + } + else + { + $str_translated .= + Text::Tabs::expand($translation) . + "\n"; + } + } + else + { + if ($underscore eq 2) + { + $str_translated .= ', ' . $translation; + } + else + { + $str_translated .= Text::Tabs::expand( + Text::Wrap::wrap(' ', ' ', $translation)) . + "\n .\n"; + } + } + $first = 0; + + # To fix some problems with Text::Wrap::wrap + $str_translated =~ s/(\n )+\n/\n .\n/g; + } + next unless $is_translated; + + $str_translated =~ s/\n \.\n$//; + $str_translated =~ s/\s+$//; + + $_ = $non_translated_line; + s/^(\w+):\s*.*/$sep${1}-$lang.$encodings{$lang}: $str_translated/s; + print OUTPUT; + } + } + } + print OUTPUT "\n"; + + close OUTPUT; + close INPUT; +} + +sub rfc822deb_split +{ + # Debian defines a special way to deal with rfc822-style files: + # when a value contain newlines, it consists of + # 1. a short form (first line) + # 2. a long description, all lines begin with a space, + # and paragraphs are separated by a single dot on a line + # This routine returns an array of all paragraphs, and reformat + # them. + # When first argument is 2, the string is a comma separated list of + # values. + my $type = shift; + my $text = shift; + $text =~ s/^[ \t]//mg; + return (split(/, */, $text, 0)) if $type ne 1; + return ($text) if $text !~ /\n/; + + $text =~ s/([^\n]*)\n//; + my @list = ($1); + my $str = ''; + + for my $line (split (/\n/, $text)) + { + chomp $line; + if ($line =~ /^\.\s*$/) + { + # New paragraph + $str =~ s/\s*$//; + push(@list, $str); + $str = ''; + } + elsif ($line =~ /^\s/) + { + # Line which must not be reformatted + $str .= "\n" if length ($str) && $str !~ /\n$/; + $line =~ s/\s+$//; + $str .= $line."\n"; + } + else + { + # Continuation line, remove newline + $str .= " " if length ($str) && $str !~ /\n$/; + $str .= $line; + } + } + + $str =~ s/\s*$//; + push(@list, $str) if length ($str); + + return @list; +} + diff --git a/intltool-update b/intltool-update new file mode 100755 index 00000000..1f68ad87 --- /dev/null +++ b/intltool-update @@ -0,0 +1,1063 @@ +#!/usr/bin/perl -w +# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*- + +# +# The Intltool Message Updater +# +# Copyright (C) 2000-2003 Free Software Foundation. +# +# Intltool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# version 2 published by the Free Software Foundation. +# +# Intltool 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., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. +# +# Authors: Kenneth Christiansen <kenneth@gnu.org> +# Maciej Stachowiak +# Darin Adler <darin@bentspoon.com> + +## Release information +my $PROGRAM = "intltool-update"; +my $VERSION = "0.33"; +my $PACKAGE = "intltool"; + +## Loaded modules +use strict; +use Getopt::Long; +use Cwd; +use File::Copy; +use File::Find; + +## Scalars used by the option stuff +my $HELP_ARG = 0; +my $VERSION_ARG = 0; +my $DIST_ARG = 0; +my $POT_ARG = 0; +my $HEADERS_ARG = 0; +my $MAINTAIN_ARG = 0; +my $REPORT_ARG = 0; +my $VERBOSE = 0; +my $GETTEXT_PACKAGE = ""; +my $OUTPUT_FILE = ""; + +my @languages; +my %varhash = (); +my %po_files_by_lang = (); + +# Regular expressions to categorize file types. +# FIXME: Please check if the following is correct + +my $xml_support = +"xml(?:\\.in)*|". # http://www.w3.org/XML/ (Note: .in is not required) +"ui|". # Bonobo specific - User Interface desc. files +"lang|". # ? +"glade2?(?:\\.in)*|". # Glade specific - User Interface desc. files (Note: .in is not required) +"scm(?:\\.in)*|". # ? (Note: .in is not required) +"oaf(?:\\.in)+|". # DEPRECATED: Replaces by Bonobo .server files +"etspec|". # ? +"server(?:\\.in)+|". # Bonobo specific +"sheet(?:\\.in)+|". # ? +"schemas(?:\\.in)+|". # GConf specific +"pong(?:\\.in)+|". # DEPRECATED: PONG is not used [by GNOME] any longer. +"kbd(?:\\.in)+"; # GOK specific. + +my $ini_support = +"icon(?:\\.in)+|". # http://www.freedesktop.org/Standards/icon-theme-spec +"desktop(?:\\.in)+|". # http://www.freedesktop.org/Standards/menu-spec +"caves(?:\\.in)+|". # GNOME Games specific +"directory(?:\\.in)+|". # http://www.freedesktop.org/Standards/menu-spec +"soundlist(?:\\.in)+|". # GNOME specific +"keys(?:\\.in)+|". # GNOME Mime database specific +"theme(?:\\.in)+"; # http://www.freedesktop.org/Standards/icon-theme-spec + +my $buildin_gettext_support = +"c|y|cs|cc|cpp|c\\+\\+|h|hh|gob|py"; + +## Always flush buffer when printing +$| = 1; + +## Sometimes the source tree will be rooted somewhere else. +my $SRCDIR = "."; +my $POTFILES_in; + +$SRCDIR = $ENV{"srcdir"} if $ENV{"srcdir"}; +$POTFILES_in = "<$SRCDIR/POTFILES.in"; + +## Handle options +GetOptions +( + "help" => \$HELP_ARG, + "version" => \$VERSION_ARG, + "dist|d" => \$DIST_ARG, + "pot|p" => \$POT_ARG, + "headers|s" => \$HEADERS_ARG, + "maintain|m" => \$MAINTAIN_ARG, + "report|r" => \$REPORT_ARG, + "verbose|x" => \$VERBOSE, + "gettext-package|g=s" => \$GETTEXT_PACKAGE, + "output-file|o=s" => \$OUTPUT_FILE, + ) or &Console_WriteError_InvalidOption; + +&Console_Write_IntltoolHelp if $HELP_ARG; +&Console_Write_IntltoolVersion if $VERSION_ARG; + +my $arg_count = ($DIST_ARG > 0) + + ($POT_ARG > 0) + + ($HEADERS_ARG > 0) + + ($MAINTAIN_ARG > 0) + + ($REPORT_ARG > 0); + +&Console_Write_IntltoolHelp if $arg_count > 1; + +# --version and --help don't require a module name +my $MODULE = $GETTEXT_PACKAGE || &FindPackageName; + +if ($POT_ARG) +{ + &GenerateHeaders; + &GeneratePOTemplate; +} +elsif ($HEADERS_ARG) +{ + &GenerateHeaders; +} +elsif ($MAINTAIN_ARG) +{ + &FindLeftoutFiles; +} +elsif ($REPORT_ARG) +{ + &GenerateHeaders; + &GeneratePOTemplate; + &Console_Write_CoverageReport; +} +elsif ((defined $ARGV[0]) && $ARGV[0] =~ /^[a-z]/) +{ + my $lang = $ARGV[0]; + + ## Report error if the language file supplied + ## to the command line is non-existent + &Console_WriteError_NotExisting("$SRCDIR/$lang.po") + if ! -s "$SRCDIR/$lang.po"; + + if (!$DIST_ARG) + { + print "Working, please wait..." if $VERBOSE; + &GenerateHeaders; + &GeneratePOTemplate; + } + &POFile_Update ($lang, $OUTPUT_FILE); + &Console_Write_TranslationStatus ($lang, $OUTPUT_FILE); +} +else +{ + &Console_Write_IntltoolHelp; +} + +exit; + +######### + +sub Console_Write_IntltoolVersion +{ + print <<_EOF_; +${PROGRAM} (${PACKAGE}) $VERSION +Written by Kenneth Christiansen, Maciej Stachowiak, and Darin Adler. + +Copyright (C) 2000-2003 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +_EOF_ + exit; +} + +sub Console_Write_IntltoolHelp +{ + print <<_EOF_; +Usage: ${PROGRAM} [OPTION]... LANGCODE +Updates PO template files and merge them with the translations. + +Mode of operation (only one is allowed): + -p, --pot generate the PO template only + -s, --headers generate the header files in POTFILES.in + -m, --maintain search for left out files from POTFILES.in + -r, --report display a status report for the module + -d, --dist merge LANGCODE.po with existing PO template + +Extra options: + -g, --gettext-package=NAME override PO template name, useful with --pot + -o, --output-file=FILE write merged translation to FILE + -x, --verbose display lots of feedback + --help display this help and exit + --version output version information and exit + +Examples of use: +${PROGRAM} --pot just create a new PO template +${PROGRAM} xy create new PO template and merge xy.po with it + +Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE") +or send email to <xml-i18n-tools\@gnome.org>. +_EOF_ + exit; +} + +sub echo_n +{ + my $str = shift; + my $ret = `echo "$str"`; + + $ret =~ s/\n$//; # do we need the "s" flag? + + return $ret; +} + +sub POFile_DetermineType ($) +{ + my $type = $_; + my $gettext_type; + + my $xml_regex = "(?:" . $xml_support . ")"; + my $ini_regex = "(?:" . $ini_support . ")"; + my $buildin_regex = "(?:" . $buildin_gettext_support . ")"; + + if ($type =~ /\[type: gettext\/([^\]].*)]/) + { + $gettext_type=$1; + } + elsif ($type =~ /schemas(\.in)+$/) + { + $gettext_type="schemas"; + } + elsif ($type =~ /glade2?(\.in)*$/) + { + $gettext_type="glade"; + } + elsif ($type =~ /scm(\.in)*$/) + { + $gettext_type="scheme"; + } + elsif ($type =~ /keys(\.in)+$/) + { + $gettext_type="keys"; + } + + # bucket types + + elsif ($type =~ /$xml_regex$/) + { + $gettext_type="xml"; + } + elsif ($type =~ /$ini_regex$/) + { + $gettext_type="ini"; + } + elsif ($type =~ /$buildin_regex$/) + { + $gettext_type="buildin"; + } + else + { + $gettext_type="unknown"; + } + + return "gettext\/$gettext_type"; +} + +sub TextFile_DetermineEncoding ($) +{ + my $gettext_code="ASCII"; # All files are ASCII by default + my $filetype=`file $_ | cut -d ' ' -f 2`; + + if ($? eq "0") + { + if ($filetype =~ /^(ISO|UTF)/) + { + chomp ($gettext_code = $filetype); + } + elsif ($filetype =~ /^XML/) + { + $gettext_code="UTF-8"; # We asume that .glade and other .xml files are UTF-8 + } + } + + return $gettext_code; +} + +sub isNotValidMissing +{ + my ($file) = @_; + + return if $file =~ /^\{arch\}\/.*$/; + return if $file =~ /^$varhash{"PACKAGE"}-$varhash{"VERSION"}\/.*$/; +} + +sub FindLeftoutFiles +{ + my (@buf_i18n_plain, + @buf_i18n_xml, + @buf_i18n_xml_unmarked, + @buf_i18n_ini, + @buf_potfiles, + @buf_potfiles_ignore, + @buf_allfiles, + @buf_allfiles_sorted, + @buf_potfiles_sorted + ); + + ## Search and find all translatable files + find sub { + push @buf_i18n_plain, "$File::Find::name" if /\.($buildin_gettext_support)$/; + push @buf_i18n_xml, "$File::Find::name" if /\.($xml_support)$/; + push @buf_i18n_ini, "$File::Find::name" if /\.($ini_support)$/; + push @buf_i18n_xml_unmarked, "$File::Find::name" if /\.(schemas(\.in)+)$/; + }, ".."; + + + open POTFILES, $POTFILES_in or die "$PROGRAM: there's no POTFILES.in!\n"; + @buf_potfiles = grep !/^(#|\s*$)/, <POTFILES>; + close POTFILES; + + foreach (@buf_potfiles) { + s/^\[.*]\s*//; + } + + print "Searching for missing translatable files...\n" if $VERBOSE; + + ## Check if we should ignore some found files, when + ## comparing with POTFILES.in + foreach my $ignore ("POTFILES.skip", "POTFILES.ignore") + { + (-s $ignore) or next; + + if ("$ignore" eq "POTFILES.ignore") + { + print "The usage of POTFILES.ignore is deprecated. Please consider moving the\n". + "content of this file to POTFILES.skip.\n"; + } + + print "Found $ignore: Ignoring files...\n" if $VERBOSE; + open FILE, "<$ignore" or die "ERROR: Failed to open $ignore!\n"; + + while (<FILE>) + { + push @buf_potfiles_ignore, $_ unless /^(#|\s*$)/; + } + close FILE; + + @buf_potfiles = (@buf_potfiles_ignore, @buf_potfiles); + } + + foreach my $file (@buf_i18n_plain) + { + my $in_comment = 0; + my $in_macro = 0; + + open FILE, "<$file"; + while (<FILE>) + { + # Handle continued multi-line comment. + if ($in_comment) + { + next unless s-.*\*/--; + $in_comment = 0; + } + + # Handle continued macro. + if ($in_macro) + { + $in_macro = 0 unless /\\$/; + next; + } + + # Handle start of macro (or any preprocessor directive). + if (/^\s*\#/) + { + $in_macro = 1 if /^([^\\]|\\.)*\\$/; + next; + } + + # Handle comments and quoted text. + while (m-(/\*|//|\'|\")-) # \' and \" keep emacs perl mode happy + { + my $match = $1; + if ($match eq "/*") + { + if (!s-/\*.*?\*/--) + { + s-/\*.*--; + $in_comment = 1; + } + } + elsif ($match eq "//") + { + s-//.*--; + } + else # ' or " + { + if (!s-$match([^\\]|\\.)*?$match-QUOTEDTEXT-) + { + warn "mismatched quotes at line $. in $file\n"; + s-$match.*--; + } + } + } + + if (/\.GetString ?\(QUOTEDTEXT/) + { + if (defined isNotValidMissing (unpack("x3 A*", $file))) { + ## Remove the first 3 chars and add newline + push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + } + last; + } + + if (/_\(QUOTEDTEXT/) + { + if (defined isNotValidMissing (unpack("x3 A*", $file))) { + ## Remove the first 3 chars and add newline + push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + } + last; + } + } + close FILE; + } + + foreach my $file (@buf_i18n_xml) + { + open FILE, "<$file"; + + while (<FILE>) + { + # FIXME: share the pattern matching code with intltool-extract + if (/\s_(.*)=\"/ || /<_[^>]+>/ || /translatable=\"yes\"/) + { + if (defined isNotValidMissing (unpack("x3 A*", $file))) { + push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + } + last; + } + } + close FILE; + } + + foreach my $file (@buf_i18n_ini) + { + open FILE, "<$file"; + while (<FILE>) + { + if (/_(.*)=/) + { + if (defined isNotValidMissing (unpack("x3 A*", $file))) { + push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + } + last; + } + } + close FILE; + } + + foreach my $file (@buf_i18n_xml_unmarked) + { + if (defined isNotValidMissing (unpack("x3 A*", $file))) { + push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + } + } + + + @buf_allfiles_sorted = sort (@buf_allfiles); + @buf_potfiles_sorted = sort (@buf_potfiles); + + my %in2; + foreach (@buf_potfiles_sorted) + { + $in2{$_} = 1; + } + + my @result; + + foreach (@buf_allfiles_sorted) + { + if (!exists($in2{$_})) + { + push @result, $_ + } + } + + my @buf_potfiles_notexist; + + foreach (@buf_potfiles_sorted) + { + chomp (my $dummy = $_); + if ("$dummy" ne "" and ! -f "../$dummy") + { + push @buf_potfiles_notexist, $_; + } + } + + ## Save file with information about the files missing + ## if any, and give information about this procedure. + if (@result + @buf_potfiles_notexist > 0) + { + if (@result) + { + print "\n" if $VERBOSE; + unlink "missing"; + open OUT, ">missing"; + print OUT @result; + close OUT; + warn "\e[1mThe following files contain translations and are currently not in use. Please\e[0m\n". + "\e[1mconsider adding these to the POTFILES.in file, located in the po/ directory.\e[0m\n\n"; + print STDERR @result, "\n"; + warn "If some of these files are left out on purpose then please add them to\n". + "POTFILES.skip instead of POTFILES.in. A file \e[1m'missing'\e[0m containing this list\n". + "of left out files has been written in the current directory.\n"; + } + if (@buf_potfiles_notexist) + { + unlink "notexist"; + open OUT, ">notexist"; + print OUT @buf_potfiles_notexist; + close OUT; + warn "\n" if ($VERBOSE or @result); + warn "\e[1mThe following files do not exist anymore:\e[0m\n\n"; + warn @buf_potfiles_notexist, "\n"; + warn "Please remove them from POTFILES.in or POTFILES.skip. A file \e[1m'notexist'\e[0m\n". + "containing this list of absent files has been written in the current directory.\n"; + } + } + + ## If there is nothing to complain about, notify the user + else { + print "\nAll files containing translations are present in POTFILES.in.\n" if $VERBOSE; + } +} + +sub Console_WriteError_InvalidOption +{ + ## Handle invalid arguments + print STDERR "Try `${PROGRAM} --help' for more information.\n"; + exit 1; +} + +sub GenerateHeaders +{ + my $EXTRACT = "/tmp/3/update-manager-0.37.1+svn20050404.15/intltool-extract"; + chomp $EXTRACT; + + $EXTRACT = $ENV{"INTLTOOL_EXTRACT"} if $ENV{"INTLTOOL_EXTRACT"}; + + ## Generate the .h header files, so we can allow glade and + ## xml translation support + if (! -x "$EXTRACT") + { + print STDERR "\n *** The intltool-extract script wasn't found!" + ."\n *** Without it, intltool-update can not generate files.\n"; + exit; + } + else + { + open (FILE, $POTFILES_in) or die "$PROGRAM: POTFILES.in not found.\n"; + + while (<FILE>) + { + chomp; + next if /^\[\s*encoding/; + + ## Find xml files in POTFILES.in and generate the + ## files with help from the extract script + + my $gettext_type= &POFile_DetermineType ($1); + + if (/\.($xml_support|$ini_support)$/ || /^\[/) + { + s/^\[[^\[].*]\s*//; + + my $filename = "../$_"; + + if ($VERBOSE) + { + system ($EXTRACT, "--update", "--srcdir=$SRCDIR", + "--type=$gettext_type", $filename); + } + else + { + system ($EXTRACT, "--update", "--type=$gettext_type", + "--srcdir=$SRCDIR", "--quiet", $filename); + } + } + } + close FILE; + } +} + +# +# Generate .pot file from POTFILES.in +# +sub GeneratePOTemplate +{ + my $XGETTEXT = $ENV{"XGETTEXT"} || "/usr/bin/xgettext"; + my $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} || ''; + chomp $XGETTEXT; + + if (! -x $XGETTEXT) + { + print STDERR " *** xgettext is not found on this system!\n". + " *** Without it, intltool-update can not extract strings.\n"; + exit; + } + + print "Building $MODULE.pot...\n" if $VERBOSE; + + open INFILE, $POTFILES_in; + unlink "POTFILES.in.temp"; + open OUTFILE, ">POTFILES.in.temp" or die("Cannot open POTFILES.in.temp for writing"); + + my $gettext_support_nonascii = 0; + + # checks for GNU gettext >= 0.12 + my $dummy = `$XGETTEXT --version --from-code=UTF-8 >/dev/null 2>/dev/null`; + if ($? == 0) + { + $gettext_support_nonascii = 1; + } + else + { + # urge everybody to upgrade gettext + print STDERR "WARNING: This version of gettext does not support extracting non-ASCII\n". + " strings. That means you should install a version of gettext\n". + " that supports non-ASCII strings (such as GNU gettext >= 0.12),\n". + " or have to let non-ASCII strings untranslated. (If there is any)\n"; + } + + my $encoding = "ASCII"; + my $forced_gettext_code; + my @temp_headers; + my $encoding_problem_is_reported = 0; + + while (<INFILE>) + { + next if (/^#/ or /^\s*$/); + + chomp; + + my $gettext_code; + + if (/^\[\s*encoding:\s*(.*)\s*\]/) + { + $forced_gettext_code=$1; + } + elsif (/\.($xml_support|$ini_support)$/ || /^\[/) + { + s/^\[.*]\s*//; + print OUTFILE "../$_.h\n"; + push @temp_headers, "../$_.h"; + $gettext_code = &TextFile_DetermineEncoding ("../$_.h") if ($gettext_support_nonascii and not defined $forced_gettext_code); + } + else + { + if ($SRCDIR eq ".") { + print OUTFILE "../$_\n"; + } else { + print OUTFILE "$SRCDIR/../$_\n"; + } + $gettext_code = &TextFile_DetermineEncoding ("../$_") if ($gettext_support_nonascii and not defined $forced_gettext_code); + } + + next if (! $gettext_support_nonascii); + + if (defined $forced_gettext_code) + { + $encoding=$forced_gettext_code; + } + elsif (defined $gettext_code and "$encoding" ne "$gettext_code") + { + if ($encoding eq "ASCII") + { + $encoding=$gettext_code; + } + elsif ($gettext_code ne "ASCII") + { + # Only report once because the message is quite long + if (! $encoding_problem_is_reported) + { + print STDERR "WARNING: You should use the same file encoding for all your project files,\n". + " but $PROGRAM thinks that most of the source files are in\n". + " $encoding encoding, while \"$_\" is (likely) in\n". + " $gettext_code encoding. If you are sure that all translatable strings\n". + " are in same encoding (say UTF-8), please \e[1m*prepend*\e[0m the following\n". + " line to POTFILES.in:\n\n". + " [encoding: UTF-8]\n\n". + " and make sure that configure.in/ac checks for $PACKAGE >= 0.27 .\n". + "(such warning message will only be reported once.)\n"; + $encoding_problem_is_reported = 1; + } + } + } + } + + close OUTFILE; + close INFILE; + + unlink "$MODULE.pot"; + my @xgettext_argument=("$XGETTEXT", + "--add-comments", + "--directory\=\.", + "--output\=$MODULE\.pot", + "--files-from\=\.\/POTFILES\.in\.temp"); + my $XGETTEXT_KEYWORDS = &FindPOTKeywords; + push @xgettext_argument, $XGETTEXT_KEYWORDS; + push @xgettext_argument, "--from-code\=$encoding" if ($gettext_support_nonascii); + push @xgettext_argument, $XGETTEXT_ARGS if $XGETTEXT_ARGS; + my $xgettext_command = join ' ', @xgettext_argument; + + # intercept xgettext error message + print "Running $xgettext_command\n" if $VERBOSE; + my $xgettext_error_msg = `$xgettext_command 2>\&1`; + my $command_failed = $?; + + unlink "POTFILES.in.temp"; + + print "Removing generated header (.h) files..." if $VERBOSE; + unlink foreach (@temp_headers); + print "done.\n" if $VERBOSE; + + if (! $command_failed) + { + if (! -e "$MODULE.pot") + { + print "None of the files in POTFILES.in contain strings marked for translation.\n" if $VERBOSE; + } + else + { + print "Wrote $MODULE.pot\n" if $VERBOSE; + } + } + else + { + if ($xgettext_error_msg =~ /--from-code/) + { + # replace non-ASCII error message with a more useful one. + print STDERR "ERROR: xgettext failed to generate PO template file because there is non-ASCII\n". + " string marked for translation. Please make sure that all strings marked\n". + " for translation are in uniform encoding (say UTF-8), then \e[1m*prepend*\e[0m the\n". + " following line to POTFILES.in and rerun $PROGRAM:\n\n". + " [encoding: UTF-8]\n\n"; + } + else + { + print STDERR "$xgettext_error_msg"; + if (-e "$MODULE.pot") + { + # is this possible? + print STDERR "ERROR: xgettext failed but still managed to generate PO template file.\n". + " Please consult error message above if there is any.\n"; + } + else + { + print STDERR "ERROR: xgettext failed to generate PO template file. Please consult\n". + " error message above if there is any.\n"; + } + } + exit (1); + } +} + +sub POFile_Update +{ + -f "$MODULE.pot" or die "$PROGRAM: $MODULE.pot does not exist.\n"; + + my $MSGMERGE = $ENV{"MSGMERGE"} || "/usr/bin/msgmerge"; + my ($lang, $outfile) = @_; + + print "Merging $SRCDIR/$lang.po with $MODULE.pot..." if $VERBOSE; + + my $infile = "$SRCDIR/$lang.po"; + $outfile = "$SRCDIR/$lang.po" if ($outfile eq ""); + + # I think msgmerge won't overwrite old file if merge is not successful + system ("$MSGMERGE", "-o", $outfile, $infile, "$MODULE.pot"); +} + +sub Console_WriteError_NotExisting +{ + my ($file) = @_; + + ## Report error if supplied language file is non-existing + print STDERR "$PROGRAM: $file does not exist!\n"; + print STDERR "Try '$PROGRAM --help' for more information.\n"; + exit; +} + +sub GatherPOFiles +{ + my @po_files = glob ("./*.po"); + + @languages = map (&POFile_GetLanguage, @po_files); + + foreach my $lang (@languages) + { + $po_files_by_lang{$lang} = shift (@po_files); + } +} + +sub POFile_GetLanguage ($) +{ + s/^(.*\/)?(.+)\.po$/$2/; + return $_; +} + +sub Console_Write_TranslationStatus +{ + my ($lang, $output_file) = @_; + my $MSGFMT = $ENV{"MSGFMT"} || "/usr/bin/msgfmt"; + + $output_file = "$SRCDIR/$lang.po" if ($output_file eq ""); + + system ("$MSGFMT", "-o", "/dev/null", "--statistics", $output_file); +} + +sub Console_Write_CoverageReport +{ + my $MSGFMT = $ENV{"MSGFMT"} || "/usr/bin/msgfmt"; + + &GatherPOFiles; + + foreach my $lang (@languages) + { + print "$lang: "; + &POFile_Update ($lang, ""); + } + + print "\n\n * Current translation support in $MODULE \n\n"; + + foreach my $lang (@languages) + { + print "$lang: "; + system ("$MSGFMT", "-o", "/dev/null", "--statistics", "$SRCDIR/$lang.po"); + } +} + +sub SubstituteVariable +{ + my ($str) = @_; + + # always need to rewind file whenever it has been accessed + seek (CONF, 0, 0); + + # cache each variable. varhash is global to we can add + # variables elsewhere. + while (<CONF>) + { + if (/^(\w+)=(.*)$/) + { + ($varhash{$1} = $2) =~ s/^["'](.*)["']$/$1/; + } + } + + if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/) + { + my $rest = $3; + my $untouched = $1; + my $sub = $varhash{$2}; + + return SubstituteVariable ("$untouched$sub$rest"); + } + + # We're using Perl backticks ` and "echo -n" here in order to + # expand any shell escapes (such as backticks themselves) in every variable + return echo_n ($str); +} + +sub CONF_Handle_Open +{ + my $base_dirname = getcwd(); + $base_dirname =~ s@.*/@@; + + my ($conf_in, $src_dir); + + if ($base_dirname =~ /^po(-.+)?$/) + { + if (-f "Makevars") + { + my $makefile_source; + + local (*IN); + open (IN, "<Makevars") || die "can't open Makevars: $!"; + + while (<IN>) + { + if (/^top_builddir[ \t]*=/) + { + $src_dir = $_; + $src_dir =~ s/^top_builddir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/; + + chomp $src_dir; + if (-f "$src_dir" . "/configure.ac") { + $conf_in = "$src_dir" . "/configure.ac" . "\n"; + } else { + $conf_in = "$src_dir" . "/configure.in" . "\n"; + } + last; + } + } + close IN; + + $conf_in || die "Cannot find top_builddir in Makevars."; + } + elsif (-f "../configure.ac") + { + $conf_in = "../configure.ac"; + } + elsif (-f "../configure.in") + { + $conf_in = "../configure.in"; + } + else + { + my $makefile_source; + + local (*IN); + open (IN, "<Makefile") || return; + + while (<IN>) + { + if (/^top_srcdir[ \t]*=/) + { + $src_dir = $_; + $src_dir =~ s/^top_srcdir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/; + + chomp $src_dir; + $conf_in = "$src_dir" . "/configure.in" . "\n"; + + last; + } + } + close IN; + + $conf_in || die "Cannot find top_srcdir in Makefile."; + } + + open (CONF, "<$conf_in"); + } + else + { + print STDERR "$PROGRAM: Unable to proceed.\n" . + "Make sure to run this script inside the po directory.\n"; + exit; + } +} + +sub FindPackageName +{ + my $version; + my $domain = &FindMakevarsDomain; + my $name = $domain || "untitled"; + + &CONF_Handle_Open; + + my $conf_source; { + local (*IN); + open (IN, "<&CONF") || return $name; + seek (IN, 0, 0); + local $/; # slurp mode + $conf_source = <IN>; + close IN; + } + + # priority for getting package name: + # 1. GETTEXT_PACKAGE + # 2. first argument of AC_INIT (with >= 2 arguments) + # 3. first argument of AM_INIT_AUTOMAKE (with >= 2 argument) + + # /^AM_INIT_AUTOMAKE\([\s\[]*([^,\)\s\]]+)/m + # the \s makes this not work, why? + if ($conf_source =~ /^AM_INIT_AUTOMAKE\(([^,\)]+),([^,\)]+)/m) + { + ($name, $version) = ($1, $2); + $name =~ s/[\[\]\s]//g; + $version =~ s/[\[\]\s]//g; + $varhash{"AC_PACKAGE_NAME"} = $name; + $varhash{"PACKAGE"} = $name; + $varhash{"AC_PACKAGE_VERSION"} = $version; + $varhash{"VERSION"} = $version; + } + + if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)/m) + { + ($name, $version) = ($1, $2); + $name =~ s/[\[\]\s]//g; + $version =~ s/[\[\]\s]//g; + $varhash{"AC_PACKAGE_NAME"} = $name; + $varhash{"PACKAGE"} = $name; + $varhash{"AC_PACKAGE_VERSION"} = $version; + $varhash{"VERSION"} = $version; + } + + # \s makes this not work, why? + $name = $1 if $conf_source =~ /^GETTEXT_PACKAGE=\[?([^\n\]]+)/m; + + # prepend '$' to auto* internal variables, usually they are + # used in configure.in/ac without the '$' + $name =~ s/AC_/\$AC_/g; + $name =~ s/\$\$/\$/g; + + $name = $domain if $domain; + + $name = SubstituteVariable ($name); + $name =~ s/^["'](.*)["']$/$1/; + + return $name if $name; +} + + +sub FindPOTKeywords +{ + + my $keywords = "--keyword\=\_ --keyword\=N\_ --keyword\=U\_ --keyword\=Q\_"; + my $varname = "XGETTEXT_OPTIONS"; + my $make_source; { + local (*IN); + open (IN, "<Makevars") || (open(IN, "<Makefile.in.in") && ($varname = "XGETTEXT_KEYWORDS")) || return $keywords; + seek (IN, 0, 0); + local $/; # slurp mode + $make_source = <IN>; + close IN; + } + + $keywords = $1 if $make_source =~ /^$varname[ ]*=\[?([^\n\]]+)/m; + + return $keywords; +} + +sub FindMakevarsDomain +{ + + my $domain = ""; + my $makevars_source; { + local (*IN); + open (IN, "<Makevars") || return $domain; + seek (IN, 0, 0); + local $/; # slurp mode + $makevars_source = <IN>; + close IN; + } + + $domain = $1 if $makevars_source =~ /^DOMAIN[ ]*=\[?([^\n\]\$]+)/m; + $domain =~ s/^\s+//; + $domain =~ s/\s+$//; + + return $domain; +} diff --git a/intltool-update.in b/intltool-update.in new file mode 100644 index 00000000..425e6132 --- /dev/null +++ b/intltool-update.in @@ -0,0 +1,1063 @@ +#!@INTLTOOL_PERL@ -w +# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*- + +# +# The Intltool Message Updater +# +# Copyright (C) 2000-2003 Free Software Foundation. +# +# Intltool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# version 2 published by the Free Software Foundation. +# +# Intltool 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., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. +# +# Authors: Kenneth Christiansen <kenneth@gnu.org> +# Maciej Stachowiak +# Darin Adler <darin@bentspoon.com> + +## Release information +my $PROGRAM = "intltool-update"; +my $VERSION = "0.33"; +my $PACKAGE = "intltool"; + +## Loaded modules +use strict; +use Getopt::Long; +use Cwd; +use File::Copy; +use File::Find; + +## Scalars used by the option stuff +my $HELP_ARG = 0; +my $VERSION_ARG = 0; +my $DIST_ARG = 0; +my $POT_ARG = 0; +my $HEADERS_ARG = 0; +my $MAINTAIN_ARG = 0; +my $REPORT_ARG = 0; +my $VERBOSE = 0; +my $GETTEXT_PACKAGE = ""; +my $OUTPUT_FILE = ""; + +my @languages; +my %varhash = (); +my %po_files_by_lang = (); + +# Regular expressions to categorize file types. +# FIXME: Please check if the following is correct + +my $xml_support = +"xml(?:\\.in)*|". # http://www.w3.org/XML/ (Note: .in is not required) +"ui|". # Bonobo specific - User Interface desc. files +"lang|". # ? +"glade2?(?:\\.in)*|". # Glade specific - User Interface desc. files (Note: .in is not required) +"scm(?:\\.in)*|". # ? (Note: .in is not required) +"oaf(?:\\.in)+|". # DEPRECATED: Replaces by Bonobo .server files +"etspec|". # ? +"server(?:\\.in)+|". # Bonobo specific +"sheet(?:\\.in)+|". # ? +"schemas(?:\\.in)+|". # GConf specific +"pong(?:\\.in)+|". # DEPRECATED: PONG is not used [by GNOME] any longer. +"kbd(?:\\.in)+"; # GOK specific. + +my $ini_support = +"icon(?:\\.in)+|". # http://www.freedesktop.org/Standards/icon-theme-spec +"desktop(?:\\.in)+|". # http://www.freedesktop.org/Standards/menu-spec +"caves(?:\\.in)+|". # GNOME Games specific +"directory(?:\\.in)+|". # http://www.freedesktop.org/Standards/menu-spec +"soundlist(?:\\.in)+|". # GNOME specific +"keys(?:\\.in)+|". # GNOME Mime database specific +"theme(?:\\.in)+"; # http://www.freedesktop.org/Standards/icon-theme-spec + +my $buildin_gettext_support = +"c|y|cs|cc|cpp|c\\+\\+|h|hh|gob|py"; + +## Always flush buffer when printing +$| = 1; + +## Sometimes the source tree will be rooted somewhere else. +my $SRCDIR = "."; +my $POTFILES_in; + +$SRCDIR = $ENV{"srcdir"} if $ENV{"srcdir"}; +$POTFILES_in = "<$SRCDIR/POTFILES.in"; + +## Handle options +GetOptions +( + "help" => \$HELP_ARG, + "version" => \$VERSION_ARG, + "dist|d" => \$DIST_ARG, + "pot|p" => \$POT_ARG, + "headers|s" => \$HEADERS_ARG, + "maintain|m" => \$MAINTAIN_ARG, + "report|r" => \$REPORT_ARG, + "verbose|x" => \$VERBOSE, + "gettext-package|g=s" => \$GETTEXT_PACKAGE, + "output-file|o=s" => \$OUTPUT_FILE, + ) or &Console_WriteError_InvalidOption; + +&Console_Write_IntltoolHelp if $HELP_ARG; +&Console_Write_IntltoolVersion if $VERSION_ARG; + +my $arg_count = ($DIST_ARG > 0) + + ($POT_ARG > 0) + + ($HEADERS_ARG > 0) + + ($MAINTAIN_ARG > 0) + + ($REPORT_ARG > 0); + +&Console_Write_IntltoolHelp if $arg_count > 1; + +# --version and --help don't require a module name +my $MODULE = $GETTEXT_PACKAGE || &FindPackageName; + +if ($POT_ARG) +{ + &GenerateHeaders; + &GeneratePOTemplate; +} +elsif ($HEADERS_ARG) +{ + &GenerateHeaders; +} +elsif ($MAINTAIN_ARG) +{ + &FindLeftoutFiles; +} +elsif ($REPORT_ARG) +{ + &GenerateHeaders; + &GeneratePOTemplate; + &Console_Write_CoverageReport; +} +elsif ((defined $ARGV[0]) && $ARGV[0] =~ /^[a-z]/) +{ + my $lang = $ARGV[0]; + + ## Report error if the language file supplied + ## to the command line is non-existent + &Console_WriteError_NotExisting("$SRCDIR/$lang.po") + if ! -s "$SRCDIR/$lang.po"; + + if (!$DIST_ARG) + { + print "Working, please wait..." if $VERBOSE; + &GenerateHeaders; + &GeneratePOTemplate; + } + &POFile_Update ($lang, $OUTPUT_FILE); + &Console_Write_TranslationStatus ($lang, $OUTPUT_FILE); +} +else +{ + &Console_Write_IntltoolHelp; +} + +exit; + +######### + +sub Console_Write_IntltoolVersion +{ + print <<_EOF_; +${PROGRAM} (${PACKAGE}) $VERSION +Written by Kenneth Christiansen, Maciej Stachowiak, and Darin Adler. + +Copyright (C) 2000-2003 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +_EOF_ + exit; +} + +sub Console_Write_IntltoolHelp +{ + print <<_EOF_; +Usage: ${PROGRAM} [OPTION]... LANGCODE +Updates PO template files and merge them with the translations. + +Mode of operation (only one is allowed): + -p, --pot generate the PO template only + -s, --headers generate the header files in POTFILES.in + -m, --maintain search for left out files from POTFILES.in + -r, --report display a status report for the module + -d, --dist merge LANGCODE.po with existing PO template + +Extra options: + -g, --gettext-package=NAME override PO template name, useful with --pot + -o, --output-file=FILE write merged translation to FILE + -x, --verbose display lots of feedback + --help display this help and exit + --version output version information and exit + +Examples of use: +${PROGRAM} --pot just create a new PO template +${PROGRAM} xy create new PO template and merge xy.po with it + +Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE") +or send email to <xml-i18n-tools\@gnome.org>. +_EOF_ + exit; +} + +sub echo_n +{ + my $str = shift; + my $ret = `echo "$str"`; + + $ret =~ s/\n$//; # do we need the "s" flag? + + return $ret; +} + +sub POFile_DetermineType ($) +{ + my $type = $_; + my $gettext_type; + + my $xml_regex = "(?:" . $xml_support . ")"; + my $ini_regex = "(?:" . $ini_support . ")"; + my $buildin_regex = "(?:" . $buildin_gettext_support . ")"; + + if ($type =~ /\[type: gettext\/([^\]].*)]/) + { + $gettext_type=$1; + } + elsif ($type =~ /schemas(\.in)+$/) + { + $gettext_type="schemas"; + } + elsif ($type =~ /glade2?(\.in)*$/) + { + $gettext_type="glade"; + } + elsif ($type =~ /scm(\.in)*$/) + { + $gettext_type="scheme"; + } + elsif ($type =~ /keys(\.in)+$/) + { + $gettext_type="keys"; + } + + # bucket types + + elsif ($type =~ /$xml_regex$/) + { + $gettext_type="xml"; + } + elsif ($type =~ /$ini_regex$/) + { + $gettext_type="ini"; + } + elsif ($type =~ /$buildin_regex$/) + { + $gettext_type="buildin"; + } + else + { + $gettext_type="unknown"; + } + + return "gettext\/$gettext_type"; +} + +sub TextFile_DetermineEncoding ($) +{ + my $gettext_code="ASCII"; # All files are ASCII by default + my $filetype=`file $_ | cut -d ' ' -f 2`; + + if ($? eq "0") + { + if ($filetype =~ /^(ISO|UTF)/) + { + chomp ($gettext_code = $filetype); + } + elsif ($filetype =~ /^XML/) + { + $gettext_code="UTF-8"; # We asume that .glade and other .xml files are UTF-8 + } + } + + return $gettext_code; +} + +sub isNotValidMissing +{ + my ($file) = @_; + + return if $file =~ /^\{arch\}\/.*$/; + return if $file =~ /^$varhash{"PACKAGE"}-$varhash{"VERSION"}\/.*$/; +} + +sub FindLeftoutFiles +{ + my (@buf_i18n_plain, + @buf_i18n_xml, + @buf_i18n_xml_unmarked, + @buf_i18n_ini, + @buf_potfiles, + @buf_potfiles_ignore, + @buf_allfiles, + @buf_allfiles_sorted, + @buf_potfiles_sorted + ); + + ## Search and find all translatable files + find sub { + push @buf_i18n_plain, "$File::Find::name" if /\.($buildin_gettext_support)$/; + push @buf_i18n_xml, "$File::Find::name" if /\.($xml_support)$/; + push @buf_i18n_ini, "$File::Find::name" if /\.($ini_support)$/; + push @buf_i18n_xml_unmarked, "$File::Find::name" if /\.(schemas(\.in)+)$/; + }, ".."; + + + open POTFILES, $POTFILES_in or die "$PROGRAM: there's no POTFILES.in!\n"; + @buf_potfiles = grep !/^(#|\s*$)/, <POTFILES>; + close POTFILES; + + foreach (@buf_potfiles) { + s/^\[.*]\s*//; + } + + print "Searching for missing translatable files...\n" if $VERBOSE; + + ## Check if we should ignore some found files, when + ## comparing with POTFILES.in + foreach my $ignore ("POTFILES.skip", "POTFILES.ignore") + { + (-s $ignore) or next; + + if ("$ignore" eq "POTFILES.ignore") + { + print "The usage of POTFILES.ignore is deprecated. Please consider moving the\n". + "content of this file to POTFILES.skip.\n"; + } + + print "Found $ignore: Ignoring files...\n" if $VERBOSE; + open FILE, "<$ignore" or die "ERROR: Failed to open $ignore!\n"; + + while (<FILE>) + { + push @buf_potfiles_ignore, $_ unless /^(#|\s*$)/; + } + close FILE; + + @buf_potfiles = (@buf_potfiles_ignore, @buf_potfiles); + } + + foreach my $file (@buf_i18n_plain) + { + my $in_comment = 0; + my $in_macro = 0; + + open FILE, "<$file"; + while (<FILE>) + { + # Handle continued multi-line comment. + if ($in_comment) + { + next unless s-.*\*/--; + $in_comment = 0; + } + + # Handle continued macro. + if ($in_macro) + { + $in_macro = 0 unless /\\$/; + next; + } + + # Handle start of macro (or any preprocessor directive). + if (/^\s*\#/) + { + $in_macro = 1 if /^([^\\]|\\.)*\\$/; + next; + } + + # Handle comments and quoted text. + while (m-(/\*|//|\'|\")-) # \' and \" keep emacs perl mode happy + { + my $match = $1; + if ($match eq "/*") + { + if (!s-/\*.*?\*/--) + { + s-/\*.*--; + $in_comment = 1; + } + } + elsif ($match eq "//") + { + s-//.*--; + } + else # ' or " + { + if (!s-$match([^\\]|\\.)*?$match-QUOTEDTEXT-) + { + warn "mismatched quotes at line $. in $file\n"; + s-$match.*--; + } + } + } + + if (/\.GetString ?\(QUOTEDTEXT/) + { + if (defined isNotValidMissing (unpack("x3 A*", $file))) { + ## Remove the first 3 chars and add newline + push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + } + last; + } + + if (/_\(QUOTEDTEXT/) + { + if (defined isNotValidMissing (unpack("x3 A*", $file))) { + ## Remove the first 3 chars and add newline + push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + } + last; + } + } + close FILE; + } + + foreach my $file (@buf_i18n_xml) + { + open FILE, "<$file"; + + while (<FILE>) + { + # FIXME: share the pattern matching code with intltool-extract + if (/\s_(.*)=\"/ || /<_[^>]+>/ || /translatable=\"yes\"/) + { + if (defined isNotValidMissing (unpack("x3 A*", $file))) { + push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + } + last; + } + } + close FILE; + } + + foreach my $file (@buf_i18n_ini) + { + open FILE, "<$file"; + while (<FILE>) + { + if (/_(.*)=/) + { + if (defined isNotValidMissing (unpack("x3 A*", $file))) { + push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + } + last; + } + } + close FILE; + } + + foreach my $file (@buf_i18n_xml_unmarked) + { + if (defined isNotValidMissing (unpack("x3 A*", $file))) { + push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + } + } + + + @buf_allfiles_sorted = sort (@buf_allfiles); + @buf_potfiles_sorted = sort (@buf_potfiles); + + my %in2; + foreach (@buf_potfiles_sorted) + { + $in2{$_} = 1; + } + + my @result; + + foreach (@buf_allfiles_sorted) + { + if (!exists($in2{$_})) + { + push @result, $_ + } + } + + my @buf_potfiles_notexist; + + foreach (@buf_potfiles_sorted) + { + chomp (my $dummy = $_); + if ("$dummy" ne "" and ! -f "../$dummy") + { + push @buf_potfiles_notexist, $_; + } + } + + ## Save file with information about the files missing + ## if any, and give information about this procedure. + if (@result + @buf_potfiles_notexist > 0) + { + if (@result) + { + print "\n" if $VERBOSE; + unlink "missing"; + open OUT, ">missing"; + print OUT @result; + close OUT; + warn "\e[1mThe following files contain translations and are currently not in use. Please\e[0m\n". + "\e[1mconsider adding these to the POTFILES.in file, located in the po/ directory.\e[0m\n\n"; + print STDERR @result, "\n"; + warn "If some of these files are left out on purpose then please add them to\n". + "POTFILES.skip instead of POTFILES.in. A file \e[1m'missing'\e[0m containing this list\n". + "of left out files has been written in the current directory.\n"; + } + if (@buf_potfiles_notexist) + { + unlink "notexist"; + open OUT, ">notexist"; + print OUT @buf_potfiles_notexist; + close OUT; + warn "\n" if ($VERBOSE or @result); + warn "\e[1mThe following files do not exist anymore:\e[0m\n\n"; + warn @buf_potfiles_notexist, "\n"; + warn "Please remove them from POTFILES.in or POTFILES.skip. A file \e[1m'notexist'\e[0m\n". + "containing this list of absent files has been written in the current directory.\n"; + } + } + + ## If there is nothing to complain about, notify the user + else { + print "\nAll files containing translations are present in POTFILES.in.\n" if $VERBOSE; + } +} + +sub Console_WriteError_InvalidOption +{ + ## Handle invalid arguments + print STDERR "Try `${PROGRAM} --help' for more information.\n"; + exit 1; +} + +sub GenerateHeaders +{ + my $EXTRACT = "@INTLTOOL_EXTRACT@"; + chomp $EXTRACT; + + $EXTRACT = $ENV{"INTLTOOL_EXTRACT"} if $ENV{"INTLTOOL_EXTRACT"}; + + ## Generate the .h header files, so we can allow glade and + ## xml translation support + if (! -x "$EXTRACT") + { + print STDERR "\n *** The intltool-extract script wasn't found!" + ."\n *** Without it, intltool-update can not generate files.\n"; + exit; + } + else + { + open (FILE, $POTFILES_in) or die "$PROGRAM: POTFILES.in not found.\n"; + + while (<FILE>) + { + chomp; + next if /^\[\s*encoding/; + + ## Find xml files in POTFILES.in and generate the + ## files with help from the extract script + + my $gettext_type= &POFile_DetermineType ($1); + + if (/\.($xml_support|$ini_support)$/ || /^\[/) + { + s/^\[[^\[].*]\s*//; + + my $filename = "../$_"; + + if ($VERBOSE) + { + system ($EXTRACT, "--update", "--srcdir=$SRCDIR", + "--type=$gettext_type", $filename); + } + else + { + system ($EXTRACT, "--update", "--type=$gettext_type", + "--srcdir=$SRCDIR", "--quiet", $filename); + } + } + } + close FILE; + } +} + +# +# Generate .pot file from POTFILES.in +# +sub GeneratePOTemplate +{ + my $XGETTEXT = $ENV{"XGETTEXT"} || "/usr/bin/xgettext"; + my $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} || ''; + chomp $XGETTEXT; + + if (! -x $XGETTEXT) + { + print STDERR " *** xgettext is not found on this system!\n". + " *** Without it, intltool-update can not extract strings.\n"; + exit; + } + + print "Building $MODULE.pot...\n" if $VERBOSE; + + open INFILE, $POTFILES_in; + unlink "POTFILES.in.temp"; + open OUTFILE, ">POTFILES.in.temp" or die("Cannot open POTFILES.in.temp for writing"); + + my $gettext_support_nonascii = 0; + + # checks for GNU gettext >= 0.12 + my $dummy = `$XGETTEXT --version --from-code=UTF-8 >/dev/null 2>/dev/null`; + if ($? == 0) + { + $gettext_support_nonascii = 1; + } + else + { + # urge everybody to upgrade gettext + print STDERR "WARNING: This version of gettext does not support extracting non-ASCII\n". + " strings. That means you should install a version of gettext\n". + " that supports non-ASCII strings (such as GNU gettext >= 0.12),\n". + " or have to let non-ASCII strings untranslated. (If there is any)\n"; + } + + my $encoding = "ASCII"; + my $forced_gettext_code; + my @temp_headers; + my $encoding_problem_is_reported = 0; + + while (<INFILE>) + { + next if (/^#/ or /^\s*$/); + + chomp; + + my $gettext_code; + + if (/^\[\s*encoding:\s*(.*)\s*\]/) + { + $forced_gettext_code=$1; + } + elsif (/\.($xml_support|$ini_support)$/ || /^\[/) + { + s/^\[.*]\s*//; + print OUTFILE "../$_.h\n"; + push @temp_headers, "../$_.h"; + $gettext_code = &TextFile_DetermineEncoding ("../$_.h") if ($gettext_support_nonascii and not defined $forced_gettext_code); + } + else + { + if ($SRCDIR eq ".") { + print OUTFILE "../$_\n"; + } else { + print OUTFILE "$SRCDIR/../$_\n"; + } + $gettext_code = &TextFile_DetermineEncoding ("../$_") if ($gettext_support_nonascii and not defined $forced_gettext_code); + } + + next if (! $gettext_support_nonascii); + + if (defined $forced_gettext_code) + { + $encoding=$forced_gettext_code; + } + elsif (defined $gettext_code and "$encoding" ne "$gettext_code") + { + if ($encoding eq "ASCII") + { + $encoding=$gettext_code; + } + elsif ($gettext_code ne "ASCII") + { + # Only report once because the message is quite long + if (! $encoding_problem_is_reported) + { + print STDERR "WARNING: You should use the same file encoding for all your project files,\n". + " but $PROGRAM thinks that most of the source files are in\n". + " $encoding encoding, while \"$_\" is (likely) in\n". + " $gettext_code encoding. If you are sure that all translatable strings\n". + " are in same encoding (say UTF-8), please \e[1m*prepend*\e[0m the following\n". + " line to POTFILES.in:\n\n". + " [encoding: UTF-8]\n\n". + " and make sure that configure.in/ac checks for $PACKAGE >= 0.27 .\n". + "(such warning message will only be reported once.)\n"; + $encoding_problem_is_reported = 1; + } + } + } + } + + close OUTFILE; + close INFILE; + + unlink "$MODULE.pot"; + my @xgettext_argument=("$XGETTEXT", + "--add-comments", + "--directory\=\.", + "--output\=$MODULE\.pot", + "--files-from\=\.\/POTFILES\.in\.temp"); + my $XGETTEXT_KEYWORDS = &FindPOTKeywords; + push @xgettext_argument, $XGETTEXT_KEYWORDS; + push @xgettext_argument, "--from-code\=$encoding" if ($gettext_support_nonascii); + push @xgettext_argument, $XGETTEXT_ARGS if $XGETTEXT_ARGS; + my $xgettext_command = join ' ', @xgettext_argument; + + # intercept xgettext error message + print "Running $xgettext_command\n" if $VERBOSE; + my $xgettext_error_msg = `$xgettext_command 2>\&1`; + my $command_failed = $?; + + unlink "POTFILES.in.temp"; + + print "Removing generated header (.h) files..." if $VERBOSE; + unlink foreach (@temp_headers); + print "done.\n" if $VERBOSE; + + if (! $command_failed) + { + if (! -e "$MODULE.pot") + { + print "None of the files in POTFILES.in contain strings marked for translation.\n" if $VERBOSE; + } + else + { + print "Wrote $MODULE.pot\n" if $VERBOSE; + } + } + else + { + if ($xgettext_error_msg =~ /--from-code/) + { + # replace non-ASCII error message with a more useful one. + print STDERR "ERROR: xgettext failed to generate PO template file because there is non-ASCII\n". + " string marked for translation. Please make sure that all strings marked\n". + " for translation are in uniform encoding (say UTF-8), then \e[1m*prepend*\e[0m the\n". + " following line to POTFILES.in and rerun $PROGRAM:\n\n". + " [encoding: UTF-8]\n\n"; + } + else + { + print STDERR "$xgettext_error_msg"; + if (-e "$MODULE.pot") + { + # is this possible? + print STDERR "ERROR: xgettext failed but still managed to generate PO template file.\n". + " Please consult error message above if there is any.\n"; + } + else + { + print STDERR "ERROR: xgettext failed to generate PO template file. Please consult\n". + " error message above if there is any.\n"; + } + } + exit (1); + } +} + +sub POFile_Update +{ + -f "$MODULE.pot" or die "$PROGRAM: $MODULE.pot does not exist.\n"; + + my $MSGMERGE = $ENV{"MSGMERGE"} || "/usr/bin/msgmerge"; + my ($lang, $outfile) = @_; + + print "Merging $SRCDIR/$lang.po with $MODULE.pot..." if $VERBOSE; + + my $infile = "$SRCDIR/$lang.po"; + $outfile = "$SRCDIR/$lang.po" if ($outfile eq ""); + + # I think msgmerge won't overwrite old file if merge is not successful + system ("$MSGMERGE", "-o", $outfile, $infile, "$MODULE.pot"); +} + +sub Console_WriteError_NotExisting +{ + my ($file) = @_; + + ## Report error if supplied language file is non-existing + print STDERR "$PROGRAM: $file does not exist!\n"; + print STDERR "Try '$PROGRAM --help' for more information.\n"; + exit; +} + +sub GatherPOFiles +{ + my @po_files = glob ("./*.po"); + + @languages = map (&POFile_GetLanguage, @po_files); + + foreach my $lang (@languages) + { + $po_files_by_lang{$lang} = shift (@po_files); + } +} + +sub POFile_GetLanguage ($) +{ + s/^(.*\/)?(.+)\.po$/$2/; + return $_; +} + +sub Console_Write_TranslationStatus +{ + my ($lang, $output_file) = @_; + my $MSGFMT = $ENV{"MSGFMT"} || "/usr/bin/msgfmt"; + + $output_file = "$SRCDIR/$lang.po" if ($output_file eq ""); + + system ("$MSGFMT", "-o", "/dev/null", "--statistics", $output_file); +} + +sub Console_Write_CoverageReport +{ + my $MSGFMT = $ENV{"MSGFMT"} || "/usr/bin/msgfmt"; + + &GatherPOFiles; + + foreach my $lang (@languages) + { + print "$lang: "; + &POFile_Update ($lang, ""); + } + + print "\n\n * Current translation support in $MODULE \n\n"; + + foreach my $lang (@languages) + { + print "$lang: "; + system ("$MSGFMT", "-o", "/dev/null", "--statistics", "$SRCDIR/$lang.po"); + } +} + +sub SubstituteVariable +{ + my ($str) = @_; + + # always need to rewind file whenever it has been accessed + seek (CONF, 0, 0); + + # cache each variable. varhash is global to we can add + # variables elsewhere. + while (<CONF>) + { + if (/^(\w+)=(.*)$/) + { + ($varhash{$1} = $2) =~ s/^["'](.*)["']$/$1/; + } + } + + if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/) + { + my $rest = $3; + my $untouched = $1; + my $sub = $varhash{$2}; + + return SubstituteVariable ("$untouched$sub$rest"); + } + + # We're using Perl backticks ` and "echo -n" here in order to + # expand any shell escapes (such as backticks themselves) in every variable + return echo_n ($str); +} + +sub CONF_Handle_Open +{ + my $base_dirname = getcwd(); + $base_dirname =~ s@.*/@@; + + my ($conf_in, $src_dir); + + if ($base_dirname =~ /^po(-.+)?$/) + { + if (-f "Makevars") + { + my $makefile_source; + + local (*IN); + open (IN, "<Makevars") || die "can't open Makevars: $!"; + + while (<IN>) + { + if (/^top_builddir[ \t]*=/) + { + $src_dir = $_; + $src_dir =~ s/^top_builddir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/; + + chomp $src_dir; + if (-f "$src_dir" . "/configure.ac") { + $conf_in = "$src_dir" . "/configure.ac" . "\n"; + } else { + $conf_in = "$src_dir" . "/configure.in" . "\n"; + } + last; + } + } + close IN; + + $conf_in || die "Cannot find top_builddir in Makevars."; + } + elsif (-f "../configure.ac") + { + $conf_in = "../configure.ac"; + } + elsif (-f "../configure.in") + { + $conf_in = "../configure.in"; + } + else + { + my $makefile_source; + + local (*IN); + open (IN, "<Makefile") || return; + + while (<IN>) + { + if (/^top_srcdir[ \t]*=/) + { + $src_dir = $_; + $src_dir =~ s/^top_srcdir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/; + + chomp $src_dir; + $conf_in = "$src_dir" . "/configure.in" . "\n"; + + last; + } + } + close IN; + + $conf_in || die "Cannot find top_srcdir in Makefile."; + } + + open (CONF, "<$conf_in"); + } + else + { + print STDERR "$PROGRAM: Unable to proceed.\n" . + "Make sure to run this script inside the po directory.\n"; + exit; + } +} + +sub FindPackageName +{ + my $version; + my $domain = &FindMakevarsDomain; + my $name = $domain || "untitled"; + + &CONF_Handle_Open; + + my $conf_source; { + local (*IN); + open (IN, "<&CONF") || return $name; + seek (IN, 0, 0); + local $/; # slurp mode + $conf_source = <IN>; + close IN; + } + + # priority for getting package name: + # 1. GETTEXT_PACKAGE + # 2. first argument of AC_INIT (with >= 2 arguments) + # 3. first argument of AM_INIT_AUTOMAKE (with >= 2 argument) + + # /^AM_INIT_AUTOMAKE\([\s\[]*([^,\)\s\]]+)/m + # the \s makes this not work, why? + if ($conf_source =~ /^AM_INIT_AUTOMAKE\(([^,\)]+),([^,\)]+)/m) + { + ($name, $version) = ($1, $2); + $name =~ s/[\[\]\s]//g; + $version =~ s/[\[\]\s]//g; + $varhash{"AC_PACKAGE_NAME"} = $name; + $varhash{"PACKAGE"} = $name; + $varhash{"AC_PACKAGE_VERSION"} = $version; + $varhash{"VERSION"} = $version; + } + + if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)/m) + { + ($name, $version) = ($1, $2); + $name =~ s/[\[\]\s]//g; + $version =~ s/[\[\]\s]//g; + $varhash{"AC_PACKAGE_NAME"} = $name; + $varhash{"PACKAGE"} = $name; + $varhash{"AC_PACKAGE_VERSION"} = $version; + $varhash{"VERSION"} = $version; + } + + # \s makes this not work, why? + $name = $1 if $conf_source =~ /^GETTEXT_PACKAGE=\[?([^\n\]]+)/m; + + # prepend '$' to auto* internal variables, usually they are + # used in configure.in/ac without the '$' + $name =~ s/AC_/\$AC_/g; + $name =~ s/\$\$/\$/g; + + $name = $domain if $domain; + + $name = SubstituteVariable ($name); + $name =~ s/^["'](.*)["']$/$1/; + + return $name if $name; +} + + +sub FindPOTKeywords +{ + + my $keywords = "--keyword\=\_ --keyword\=N\_ --keyword\=U\_ --keyword\=Q\_"; + my $varname = "XGETTEXT_OPTIONS"; + my $make_source; { + local (*IN); + open (IN, "<Makevars") || (open(IN, "<Makefile.in.in") && ($varname = "XGETTEXT_KEYWORDS")) || return $keywords; + seek (IN, 0, 0); + local $/; # slurp mode + $make_source = <IN>; + close IN; + } + + $keywords = $1 if $make_source =~ /^$varname[ ]*=\[?([^\n\]]+)/m; + + return $keywords; +} + +sub FindMakevarsDomain +{ + + my $domain = ""; + my $makevars_source; { + local (*IN); + open (IN, "<Makevars") || return $domain; + seek (IN, 0, 0); + local $/; # slurp mode + $makevars_source = <IN>; + close IN; + } + + $domain = $1 if $makevars_source =~ /^DOMAIN[ ]*=\[?([^\n\]\$]+)/m; + $domain =~ s/^\s+//; + $domain =~ s/\s+$//; + + return $domain; +} diff --git a/missing b/missing new file mode 100755 index 00000000..fc54c64e --- /dev/null +++ b/missing @@ -0,0 +1,336 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. + +# 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing 0.4 - GNU automake" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/mkinstalldirs b/mkinstalldirs new file mode 100755 index 00000000..d2d5f21b --- /dev/null +++ b/mkinstalldirs @@ -0,0 +1,111 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman <friedman@prep.ai.mit.edu> +# Created: 1993-05-16 +# Public domain + +errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" 1>&2 + exit 0 + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +case $dirmode in + '') + if mkdir -p -- . 2>/dev/null; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + fi + ;; + *) + if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + fi + ;; +esac + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr="" + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# End: +# mkinstalldirs ends here diff --git a/omf.make b/omf.make new file mode 100644 index 00000000..3261e001 --- /dev/null +++ b/omf.make @@ -0,0 +1,53 @@ +# +# No modifications of this Makefile should be necessary. +# +# This file contains the build instructions for installing OMF files. It is +# generally called from the makefiles for particular formats of documentation. +# +# Note that you must configure your package with --localstatedir=/var/lib +# so that the scrollkeeper-update command below will update the database +# in the standard scrollkeeper directory. +# +# If it is impossible to configure with --localstatedir=/var/lib, then +# modify the definition of scrollkeeper_localstate_dir so that +# it points to the correct location. Note that you must still use +# $(localstatedir) in this or when people build RPMs it will update +# the real database on their system instead of the one under RPM_BUILD_ROOT. +# +# Note: This make file is not incorporated into xmldocs.make because, in +# general, there will be other documents install besides XML documents +# and the makefiles for these formats should also include this file. +# +# About this file: +# This file was taken from scrollkeeper_example2, a package illustrating +# how to install documentation and OMF files for use with ScrollKeeper +# 0.3.x and 0.4.x. For more information, see: +# http://scrollkeeper.sourceforge.net/ +# Version: 0.1.2 (last updated: March 20, 2002) +# + +omf_dest_dir=$(datadir)/omf/@PACKAGE@ +scrollkeeper_localstate_dir = $(localstatedir)/scrollkeeper + +omf: omf_timestamp + +omf_timestamp: $(omffile) + -for file in $(omffile); do \ + scrollkeeper-preinstall $(docdir)/$(docname).xml $(srcdir)/$$file $$file.out; \ + done + touch omf_timestamp + +install-data-hook-omf: + $(mkinstalldirs) $(DESTDIR)$(omf_dest_dir) + for file in $(omffile); do \ + $(INSTALL_DATA) $$file.out $(DESTDIR)$(omf_dest_dir)/$$file; \ + done + -scrollkeeper-update -p $(scrollkeeper_localstate_dir) -o $(DESTDIR)$(omf_dest_dir) + +uninstall-local-omf: + -for file in $(srcdir)/*.omf; do \ + basefile=`basename $$file`; \ + rm -f $(omf_dest_dir)/$$basefile; \ + done + -rmdir $(omf_dest_dir) + -scrollkeeper-update -p $(scrollkeeper_localstate_dir) diff --git a/po/ChangeLog b/po/ChangeLog new file mode 100644 index 00000000..e56e44c1 --- /dev/null +++ b/po/ChangeLog @@ -0,0 +1,196 @@ +2005-04-04 Michael Vogt <mvo@debian.org> + + * xh.po: added Xhosa translation + +2005-04-04 Jorge Bernal 'Koke' <jbernal@cvs.gnome.org> + + * es.po: Updated Spanish translation. + +2005-04-03 Adam Weinberger <adamw@gnome.org> + + * en_CA.po: Updated Canadian English translation. + +2005-04-03 Gabor Kelemen <kelemeng@gnome.hu> + + * hu.po: Hungarian translation updated. + +2005-04-02 Adam Weinberger <adamw@gnome.org> + + * en_CA.po: Updated Canadian English translation. + +2005-04-02 Frank Arnold <farnold@cvs.gnome.org> + + * de.po: Updated German translation. + +2005-04-01 Steve Murphy <murf@e-tools.com> + + * rw.po: Added Kinyarwanda translation. + +2005-03-31 Jorge Bernal 'Koke' <jbernal@cvs.gnome.org> + + * es.po: Spanish translation updated. + +2005-03-30 Gabor Kelemen <kelemeng@gnome.hu> + + * hu.po: Hungarian translation updated. + +2005-03-30 Gabor Kelemen <kelemeng@gnome.hu> + + * hu.po: Hungarian translation updated. + +2005-03-30 Michiel Sikkes <michiel@eyesopened.nl> + + * nl.po: Updated Dutch translation. + +2005-03-30 Frank Arnold <farnold@cvs.gnome.org> + + * de.po: Updated German translation. + +2005-03-30 Ilkka Tuohela <hile@iki.fi> + + * fi.po: Updated Finnish translation, + (translated by Timo Jyrinki). + +2005-03-29 Adam Weinberger <adamw@gnome.org> + + * en_CA.po: Updated Canadian English translation. + +2005-03-29 Raphael Higino <raphaelh@cvs.gnome.org> + + * pt_BR.po: Added Brazilian Portuguese translation. + +2005-03-29 Gabor Kelemen <kelemeng@gnome.hu> + + * hu.po: Hungarian translation updated. + +2005-03-28 Gabor Kelemen <kelemeng@gnome.hu> + + * hu.po: Hungarian translation updated. + +2005-03-28 Martin Willemoes Hansen <mwh@localhost.localdomain> + + * da.po: Updated Danish translation. + +2005-03-26 Christian Rose <menthos@menthos.com> + + * sv.po: Updated Swedish translation. + +2005-03-25 Michiel Sikkes <michiel@eyesopened.nl> + + * nl.po: Updated Dutch translation. + +2005-03-25 Frank Arnold <farnold@cvs.gnome.org> + + * de.po: Updated German translation. + +2005-03-24 Adam Weinberger <adamw@gnome.org> + + * en_CA.po: Updated Canadian English translation. + +2005-03-24 Jorge Bernal <koke@amedias.org> + + * es.po: Updated spanish translation. + +2005-03-24 Michiel Sikkes <michiel@eyesopened.nl> + + * ja.po: Added Japanese translation by Hiroyuki Ikezoe + <ikezoe@good-day.co.jp>. + +2005-03-24 Ilkka Tuohela <hile@iki.fi> + + * fi.po: Updated Finnish translation, + (translated by Timo Jyrinki). + +2005-03-23 Adam Weinberger <adamw@gnome.org> + + * en_CA.po: Updated Canadian English translation. + +2005-03-23 Michiel Sikkes <michiel@eyesopened.nl> + + * es.po: Updated Spanish translation by Jorge Bernal + <koke@sindominio.net> + +2005-03-23 Frank Arnold <farnold@cvs.gnome.org> + + * de.po: Updated German translation. + +2005-03-22 Gabor Kelemen <kelemeng@gnome.hu> + + * hu.po: Hungarian translation added. + +2005-03-22 Adam Weinberger <adamw@gnome.org> + + * en_CA.po: Updated Canadian English translation. + +2005-03-22 Frank Arnold <farnold@cvs.gnome.org> + + * de.po: Updated German translation. + +2005-03-21 Funda Wang <fundawang@linux.net.cn> + + * zh_CN.po: Added Simplified Chinese translation. + +2005-03-21 Martin Willemoes Hansen <mwh@sysrq.dk> + + * da.po: Updated Danish translation. + +2005-03-21 Frank Arnold <farnold@cvs.gnome.org> + + * de.po: Updated German translation. + +2005-03-21 Adam Weinberger <adamw@gnome.org> + + * en_CA.po: Added Canadian English translation. + +2005-03-21 Christian Rose <menthos@menthos.com> + + * update-manager.pot: Removed this file. It is a generated + file that does not belong in CVS. + * .cvsignore: Added this. + * POTFILES.in: Added missing file, sorted, and added comment. + * sv.po: Added Swedish translation. + +2005-03-18 Martin Willemoes Hansen <mwh@localhost.localdomain> + + * da.po: Updated Danish translation. + +2005-03-14 Martin Willemoes Hansen <mwh@sysrq.dk> + + * da.po: Updated Danish translation. + +2005-03-12 Martin Willemoes Hansen <mwh@sysrq.dk> + + * da.po: Updated Danish translation. + +2005-03-11 Michiel Sikkes <michiel@eyesopened.nl> + + * el.po: Added Greek translation by Kostas Papadimas <pkst@gmx.net> + +2005-03-03 Dan Damian <dand@gnome.ro> + + * ro.po: Added Romanian translation. + +2005-03-10 Zygmunt Krynicki <zyga@www.suxx.pl> + + * pl.po: Added Polish translation. + +2005-02-13 Michiel Sikkes <michiel@eyesopened.nl> + + * nl.po: Added Dutch translation. + * fr.po: Updated French translation by Jean Privat <privat@lirmm.fr> + +2005-02-19 Martin Willemoes Hansen <mwh@sysrq.dk> + + * da.po: Updated Danish translation. + +2005-02-18 Martin Willemoes Hansen <mwh@sysrq.dk> + + * da.po: Updated Danish translation. + +2005-01-28 Michiel Sikkes <michiel@eyesopened.nl> + + * Added fr by Jean Privat <privat@lirmm.fr> + +2004-10-25 Michiel Sikkes <michiel@eyesopened.nl> + + * Initial release. diff --git a/po/Makefile.in.in b/po/Makefile.in.in new file mode 100644 index 00000000..22cadc65 --- /dev/null +++ b/po/Makefile.in.in @@ -0,0 +1,256 @@ +# Makefile for program source directory in GNU NLS utilities package. +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu> +# +# This file file be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. +# +# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE +# instead of PACKAGE and to look for po2tbl in ./ not in intl/ +# +# - Modified by jacob berkman <jacob@ximian.com> to install +# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize + +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = .. +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datadir = @datadir@ +libdir = @libdir@ +localedir = $(libdir)/locale +gnulocaledir = $(datadir)/locale +gettextsrcdir = $(datadir)/glib-2.0/gettext/po +subdir = po +install_sh = @install_sh@ +mkdir_p = @mkdir_p@ +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +CC = @CC@ +GENCAT = @GENCAT@ +GMSGFMT = @GMSGFMT@ +MSGFMT = @MSGFMT@ +XGETTEXT = @XGETTEXT@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist +GENPOT = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot + +DEFS = @DEFS@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ + +INCLUDES = -I.. -I$(top_srcdir)/intl + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +SOURCES = +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +DISTFILES = ChangeLog Makefile.in.in POTFILES.in \ +$(POFILES) $(GMOFILES) $(SOURCES) + +POTFILES = \ + +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +INSTOBJEXT = @INSTOBJEXT@ + +.SUFFIXES: +.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat + +.c.o: + $(COMPILE) $< + +.po.pox: + $(MAKE) $(GETTEXT_PACKAGE).pot + $(MSGMERGE) $< $(top_builddir)/po/$(GETTEXT_PACKAGE).pot -o $*pox + +.po.mo: + $(MSGFMT) -o $@ $< + +.po.gmo: + file=`echo $* | sed 's,.*/,,'`.gmo \ + && rm -f $$file && $(GMSGFMT) -o $$file $< + +.po.cat: + sed -f ../intl/po2msg.sed < $< > $*.msg \ + && rm -f $@ && $(GENCAT) $@ $*.msg + + +all: all-@USE_NLS@ + +all-yes: $(CATALOGS) +all-no: + +$(GETTEXT_PACKAGE).pot: $(POTFILES) + $(GENPOT) + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ +install-data-no: all +install-data-yes: all + if test -n "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \ + fi + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + case "$$cat" in \ + *.gmo) destdir=$(gnulocaledir);; \ + *) destdir=$(localedir);; \ + esac; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \ + if test -n "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $$dir; \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \ + fi; \ + if test -r $$cat; then \ + $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ + echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \ + else \ + $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \ + fi; \ + if test -r $$cat.m; then \ + $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \ + else \ + if test -r $(srcdir)/$$cat.m ; then \ + $(INSTALL_DATA) $(srcdir)/$$cat.m \ + $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \ + else \ + true; \ + fi; \ + fi; \ + done + if test "$(PACKAGE)" = "glib"; then \ + if test -n "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \ + fi; \ + $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ + $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ + rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ + rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ + done + if test "$(PACKAGE)" = "glib"; then \ + rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ + fi + +check: all + +dvi info tags TAGS ID: + +mostlyclean: + rm -f core core.* *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp + rm -fr *.o + rm -f .intltool-merge-cache + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f $(GMOFILES) + +distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir) +dist distdir: $(DISTFILES) $(GETTEXT_PACKAGE).pot + dists="$(DISTFILES)"; \ + for file in $$dists; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +update-po: Makefile + $(MAKE) $(GETTEXT_PACKAGE).pot + tmpdir=`pwd`; \ + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + echo "$$lang:"; \ + result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \ + if $$result; then \ + if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$cat failed!"; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi; \ + done + +# POTFILES is created from POTFILES.in by stripping comments, empty lines +# and Intltool tags (enclosed in square brackets), and appending a full +# relative path to them +POTFILES: POTFILES.in + ( if test 'x$(srcdir)' != 'x.'; then \ + posrcprefix='$(top_srcdir)/'; \ + else \ + posrcprefix="../"; \ + fi; \ + rm -f $@-t $@ \ + && (sed -e '/^#/d' \ + -e "s/^\[.*\] +//" \ + -e '/^[ ]*$$/d' \ + -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ + | sed -e '$$s/\\$$//') > $@-t \ + && chmod a-w $@-t \ + && mv $@-t $@ ) + +Makefile: Makefile.in.in ../config.status POTFILES + cd .. \ + && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 00000000..9045d003 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,13 @@ +# List of source files containing translatable strings. +# Please keep this file sorted alphabetically. +data/gnome-software-properties.glade +data/update-manager.desktop.in +data/update-manager.glade +src/aptsources.py.in +src/dialog_add.py.in +src/dialog_apt_key.py.in +src/dialog_edit.py.in +src/dialog_settings.py.in +src/gnome-software-properties.in +src/update-manager.in +src/dialog_settings.py.in diff --git a/po/da.po b/po/da.po new file mode 100644 index 00000000..4bcb0c08 --- /dev/null +++ b/po/da.po @@ -0,0 +1,595 @@ +# Danish translation of Update Manager. +# Copyright (C) 2005 Michiel Sikkes <michiel@eyesopened.nl> +# Copyright (C) 2005 Michael Vogt <michael.vogt@canonical.com> +# This file is distributed under the same license as the update-manager package. +# Martin Willemoes Hansen <mwh@sysrq.dk>, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: update-manager\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-04 10:47+0200\n" +"PO-Revision-Date: 2005-03-28 11:31+0200\n" +"Last-Translator: Martin Willemoes Hansen <mwh@sysrq.dk>\n" +"Language-Team: Danish <dansk@klid.dk>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../data/gnome-software-properties.desktop.in.h:1 +msgid "Edit software sources and settings" +msgstr "Redigér indstillinger og kilder for programmel" + +#: ../data/gnome-software-properties.desktop.in.h:2 +msgid "Software Properties" +msgstr "Indstillinger for programmel" + +#: ../data/gnome-software-properties.glade.h:1 +msgid "<b>Comment:</b>" +msgstr "<b>Kommentar:</b>" + +#: ../data/gnome-software-properties.glade.h:2 +msgid "<b>Components</b>" +msgstr "<b>Komponenter</b>" + +#: ../data/gnome-software-properties.glade.h:3 +msgid "<b>Distribution:</b>" +msgstr "<b>Distribution:</b>" + +#: ../data/gnome-software-properties.glade.h:4 +msgid "<b>Internet Updates</b>" +msgstr "<b>Internet-opdateringer</b>" + +#: ../data/gnome-software-properties.glade.h:5 +msgid "<b>Repository</b>" +msgstr "<b>Arkiv</b>" + +#: ../data/gnome-software-properties.glade.h:6 +msgid "<b>Sections:</b>" +msgstr "<b>Sektioner:</b>" + +#: ../data/gnome-software-properties.glade.h:7 +msgid "<b>Software Sources</b>" +msgstr "<b>Programmelkilder</b>" + +#: ../data/gnome-software-properties.glade.h:8 +msgid "<b>Temporary files</b>" +msgstr "<b>Midlertidige filer</b>" + +#: ../data/gnome-software-properties.glade.h:9 +msgid "<b>Type:</b>" +msgstr "<b>Type:</b>" + +#: ../data/gnome-software-properties.glade.h:10 +msgid "<b>URI:</b>" +msgstr "<b>URI:</b>" + +#: ../data/gnome-software-properties.glade.h:11 +msgid "<b>User Interface</b>" +msgstr "<b>Brugergrænseflade</b>" + +#: ../data/gnome-software-properties.glade.h:12 +msgid "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialog. A key makes it " +"possible to check verify the integrity of the software you download." +msgstr "" +"<big><b>Godkendelsesnøgler</b></big>\n" +"\n" +"Du kan tilføje og fjerne godkendelsesnøgler i dette vindue. En nøgle gør det " +"muligt at kontrollere integriteten af det programmel du henter." + +#: ../data/gnome-software-properties.glade.h:15 +msgid "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." +msgstr "" +"<big><b>Angiv den komplette APT-linje for det arkiv du ønsker at tilføje</" +"b></big>\n" +"\n" +"APT-linjen indeholder typen, stedet og indholdet af arkivet, fx <i>\"deb " +"http://ftp.debian.org sarge main\"</i>. Du kan finde en detaljeret " +"beskrivelse af syntaksen i dokumentationen." + +#: ../data/gnome-software-properties.glade.h:18 +msgid "APT line:" +msgstr "APT-linje:" + +#: ../data/gnome-software-properties.glade.h:19 +msgid "A_uthentication" +msgstr "_Godkendelse" + +#: ../data/gnome-software-properties.glade.h:20 +msgid "Add _CD" +msgstr "Tilføj _cd" + +#: ../data/gnome-software-properties.glade.h:21 +msgid "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " +msgstr "" +"Føj en ny nøgle til den troværdige nøglering. Kontrollér at du har modtaget " +"nøglen via en sikker kanal og at du stoler på ejeren." + +#: ../data/gnome-software-properties.glade.h:22 +msgid "Automatically check for software _updates." +msgstr "Kontrollér om der er nye opdateringer automatisk." + +#: ../data/gnome-software-properties.glade.h:23 +msgid "Automatically clean _temporary packages files" +msgstr "Ryd automatisk _midlertidige pakke-filer" + +#: ../data/gnome-software-properties.glade.h:24 +msgid "" +"Binary\n" +"Source" +msgstr "" +"Binær\n" +"Kildetekst" + +#: ../data/gnome-software-properties.glade.h:26 +msgid "Clean interval in days: " +msgstr "Oprydningsinterval i dage: " + +#: ../data/gnome-software-properties.glade.h:27 +msgid "Delete _old packages in the package cache" +msgstr "Slet _gamle pakker i pakke-mellemlageret" + +#: ../data/gnome-software-properties.glade.h:28 +msgid "Edit Repository..." +msgstr "Redigér arkiv ..." + +#: ../data/gnome-software-properties.glade.h:29 +msgid "Maximum age in days:" +msgstr "Maksimal alder i dage:" + +#: ../data/gnome-software-properties.glade.h:30 +msgid "Maximum size in MB:" +msgstr "Maksimal størrelse i MB:" + +#: ../data/gnome-software-properties.glade.h:31 +msgid "Remove the selected key from the trusted keyring." +msgstr "Fjern den markerede nøgle fra den troværdige nøglering." + +#: ../data/gnome-software-properties.glade.h:32 +msgid "Restore default keys" +msgstr "Genopret de forvalgte nøgler" + +#: ../data/gnome-software-properties.glade.h:33 +msgid "" +"Restore the default keys shiped with the distribution. This will not change " +"user installed keys." +msgstr "" +"Genopret de forvalgte nøgler der kom med distributionen. Dette vil ikke " +"ændre nøgler installeret af brugere." + +#: ../data/gnome-software-properties.glade.h:34 +msgid "Set _maximum size for the package cache" +msgstr "Sæt _maksimal størrelse for pakke-mellemlageret" + +#: ../data/gnome-software-properties.glade.h:35 +msgid "Settings" +msgstr "Indstillinger" + +#: ../data/gnome-software-properties.glade.h:36 +msgid "Show disabled software sources" +msgstr "Vis deaktiverede programmelkilder" + +#: ../data/gnome-software-properties.glade.h:37 +msgid "Software Preferences" +msgstr "Indstillinger" + +#: ../data/gnome-software-properties.glade.h:38 +msgid "Update interval in days: " +msgstr "Opdateringsinterval i dage: " + +#: ../data/gnome-software-properties.glade.h:39 +msgid "_Add Repository" +msgstr "_Tilføj arkiv" + +#: ../data/gnome-software-properties.glade.h:40 +msgid "_Custom" +msgstr "_Tilpasset" + +#: ../data/gnome-software-properties.glade.h:41 +msgid "_Download upgradable packages" +msgstr "_Hent pakker der kan opgraderes" + +#: ../data/update-manager.desktop.in.h:1 +msgid "Show available updates and choose which to install" +msgstr "Vis tilgængelige opgraderinger og vælg hvilke der skal installeres" + +#: ../data/update-manager.desktop.in.h:2 +msgid "Ubuntu Update Manager" +msgstr "Ubuntus opdateringsværktøj" + +#: ../data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "Opdateringshåndtering" + +#: ../data/update-manager.glade.h:1 +msgid "<b>Details</b>" +msgstr "<b>Detaljer</b>" + +#: ../data/update-manager.glade.h:2 +msgid "<b>Packages to install:</b>" +msgstr "<b>Pakker der skal installeres:</b>" + +#: ../data/update-manager.glade.h:3 ../src/update-manager.in:629 +msgid "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." +msgstr "" +"<big><b>Tilgængelige opdateringer</b></big>\n" +"\n" +"Følgende pakker kan opgraderes. Du kan opgradere dem ved at bruge " +"installations-knappen." + +#: ../data/update-manager.glade.h:6 +msgid "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" +msgstr "" +"<span weight=\"bold\" size=\"larger\">Overfører ændringer</span>\n" +"\n" +"Skal hente ændringerne fra den centrale server" + +#: ../data/update-manager.glade.h:9 +msgid "Cancel downloading the changelog" +msgstr "Afbryd overførsel af ændringsloggen" + +#: ../data/update-manager.glade.h:10 +msgid "Changes" +msgstr "Ændringer" + +#: ../data/update-manager.glade.h:11 +msgid "Description" +msgstr "Beskrivelse" + +#: ../data/update-manager.glade.h:12 +msgid "Reload" +msgstr "Genindlæs" + +#: ../data/update-manager.glade.h:13 +msgid "Reload the package information from the server." +msgstr "Genindlæs pakkeinformationen fra serveren." + +#: ../data/update-manager.glade.h:14 +msgid "Software Updates" +msgstr "Opdateringer" + +#: ../data/update-manager.glade.h:15 +msgid "_Install" +msgstr "_Installér" + +#: ../src/aptsources.py.in:234 ../src/aptsources.py.in:282 +#: ../src/aptsources.py.in:328 +msgid "Officially supported" +msgstr "Understøttet officielt" + +#: ../src/aptsources.py.in:235 ../src/aptsources.py.in:283 +msgid "Restricted copyright" +msgstr "Begrænsende copyright" + +#: ../src/aptsources.py.in:236 ../src/aptsources.py.in:284 +msgid "Community maintained (Universe)" +msgstr "Vedligeholdt af fællesskabet (Universe)" + +#: ../src/aptsources.py.in:237 ../src/aptsources.py.in:285 +msgid "Non-free (Multiverse)" +msgstr "Ikke frit programmel (Multiverse)" + +#: ../src/aptsources.py.in:248 ../src/aptsources.py.in:306 +#: ../src/aptsources.py.in:318 +msgid "Ubuntu 5.04 Security Updates" +msgstr "Sikkerhedsopdateringer til Ubuntu 5.04" + +#: ../src/aptsources.py.in:253 ../src/aptsources.py.in:310 +#, fuzzy +msgid "Ubuntu 5.04 Updates" +msgstr "Opdateringer til Ubuntu 4.10" + +#: ../src/aptsources.py.in:276 +msgid "Binary" +msgstr "Binær" + +#: ../src/aptsources.py.in:277 +msgid "Source" +msgstr "Kildetekst" + +#: ../src/aptsources.py.in:289 ../src/aptsources.py.in:293 +msgid "CD" +msgstr "cd" + +#: ../src/aptsources.py.in:314 ../src/aptsources.py.in:322 +msgid "Ubuntu 4.10 Security Updates" +msgstr "Sikkerhedsopdateringer til Ubuntu 4.10" + +#: ../src/aptsources.py.in:329 +msgid "Contributed software" +msgstr "Bidraget programmel" + +#: ../src/aptsources.py.in:330 +msgid "Non-free software" +msgstr "Ikke frit programmel" + +#: ../src/aptsources.py.in:331 +msgid "US export restricted software" +msgstr "Programmel som USA pålægger eksportbegrænsninger." + +#: ../src/aptsources.py.in:346 +msgid "Debian Stable Security Updates" +msgstr "Sikkerhedsopdateringer til Debian Stable" + +#. some known keys +#: ../src/dialog_apt_key.py.in:37 +msgid "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" +msgstr "" + +#: ../src/dialog_apt_key.py.in:38 +msgid "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" +msgstr "" + +#: ../src/dialog_apt_key.py.in:122 +msgid "Choose a key-file" +msgstr "" + +#: ../src/dialog_apt_key.py.in:132 +msgid "Error importing selected file" +msgstr "" + +#: ../src/dialog_apt_key.py.in:133 +msgid "The selected file may not be a GPG key file or it might be corrupt." +msgstr "" + +#: ../src/dialog_apt_key.py.in:145 +msgid "Error removing the key" +msgstr "" + +#: ../src/dialog_apt_key.py.in:146 +msgid "The key you selected could not be removed. Please report this as a bug." +msgstr "" + +#: ../src/gnome-software-properties.in:72 +msgid "Repositories changed" +msgstr "Arkiver er ændret" + +#: ../src/gnome-software-properties.in:74 +#, c-format +msgid "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" +msgstr "" +"Der er ændringer til informationen om arkiver. En sikkerhedskopi af din " +"sources.list er gemt i %s.save. \n" +"\n" +"For at dine ændringer kan træde i kraft, skal du genindlæse pakke-listen fra " +"serverne. Vil du gøre dette nu?" + +#: ../src/update-manager.in:124 +msgid "Your system has broken packages!" +msgstr "Dit system har ødelagte pakker!" + +#: ../src/update-manager.in:125 +msgid "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." +msgstr "" +"Dette betyder at der er nogle afhængiheder af de installerede pakker som " +"ikke er dækket. Brug venligst \"Synaptic\" eller \"apt-get\" til at løse " +"problemet." + +#: ../src/update-manager.in:139 +msgid "It is not possible to upgrade all packages." +msgstr "Det er ikke muligt at opgradere alle pakkerne." + +#: ../src/update-manager.in:141 +msgid "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." +msgstr "" +"Dette betyder at der ud over den aktuelle opgradering af pakkerne vil være " +"krævet nogle yderligere handlinger, såsom installering og afinstallering af " +"pakker. Vær venlig at bruge valgmuligheden \"Smart opgradering\" i Synaptic " +"eller \"apt-get dist-upgrade\" for at løse problemet." + +#: ../src/update-manager.in:154 +msgid "The following packages are not upgraded: " +msgstr "" + +#: ../src/update-manager.in:232 +msgid "Changes not found, the server may not be updated yet." +msgstr "" +"Ingen ændringer fundet, det kan være at serveren ikke er opdateret endnu." + +#: ../src/update-manager.in:235 +msgid "" +"Failed to download changes. Please check if there is an active internet " +"connection." +msgstr "" +"Overførsel af ændringer mislykkedes. Kontrollér at der er en aktiv " +"internetforbindelse." + +#: ../src/update-manager.in:255 +#, c-format +msgid "Version %s: \n" +msgstr "Version %s: \n" + +#: ../src/update-manager.in:303 +msgid "Downloading changes..." +msgstr "Overfører ændringer..." + +#: ../src/update-manager.in:358 +msgid "The updates are being applied." +msgstr "Opdateringerne bliver installeret." + +#: ../src/update-manager.in:360 +msgid "Upgrade finished" +msgstr "Opgradering færdig" + +#: ../src/update-manager.in:417 +msgid "Another package manager is running" +msgstr "En anden pakkehåndtering er i gang" + +#: ../src/update-manager.in:419 +msgid "" +"You can run only one package management application at the same time. Please " +"close this other application first." +msgstr "" +"Du kan kun benytte ét pakkehåndteringsprogram ad gangen. Vær venlig at " +"afslutte det andet program først." + +#: ../src/update-manager.in:437 +msgid "Updating package list..." +msgstr "" + +#: ../src/update-manager.in:439 +msgid "Installing updates..." +msgstr "" + +#: ../src/update-manager.in:618 ../src/update-manager.in:621 +msgid "Your system is up-to-date!" +msgstr "Dit system er opdateret" + +#: ../src/update-manager.in:619 +msgid "There are no updates available." +msgstr "Der er ingen opdateringer tilgængelige." + +#: ../src/update-manager.in:644 +#, c-format +msgid "New version: %s" +msgstr "Ny version: %s" + +#: ../src/update-manager.in:668 +msgid "Your distribution is no longer supported" +msgstr "Din distribution er ikke længere understøttet" + +#: ../src/update-manager.in:668 +msgid "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." +msgstr "" +"Vær venlig at opgradere til en nyere version af Ubuntu Linux. Versionen som " +"du benytter vil ikke længere modtage sikkerhedsfejlrettelser eller andre " +"kritiske opdateringer. Se http://www.ubuntulinux.org for information om " +"opgradering." + +#: ../src/update-manager.in:682 +#, fuzzy +msgid "There is a new release of Ubuntu available!" +msgstr "Der er ingen opdateringer tilgængelige." + +#: ../src/update-manager.in:682 +#, c-format +msgid "" +"A new release with the codename '%s' is available. Please see http://www." +"ubuntulinux.org/ for upgrade instructions." +msgstr "" + +#: ../src/update-manager.in:685 +msgid "Never show this message again" +msgstr "Vis aldrig denne besked igen" + +#: ../src/update-manager.in:781 +msgid "Initializing and getting list of updates..." +msgstr "Initialiserer og henter listen med opdateringer ..." + +#: ../src/update-manager.in:803 +msgid "You need to be root to run this program" +msgstr "Du skal være systemadministrator for at starte dette program" + +#, fuzzy +#~ msgid "" +#~ "<big><b>Available Updates</b></big>\n" +#~ "The following packages are found to be upgradable. You can upgrade them " +#~ "by using the Install button." +#~ msgstr "" +#~ "<big><b>Tilgængelige opdateringer</b></big>\n" +#~ "\n" +#~ "Følgende pakker kan opgraderes. Du kan opgradere dem ved at bruge " +#~ "installations-knappen." + +#~ msgid "%i (%s)" +#~ msgstr "%i (%s)" + +#~ msgid "Your system is up-to-date" +#~ msgstr "Dit system er opdateret" + +#~ msgid "<span weight=\"bold\" size=\"larger\">Repositories changed</span>" +#~ msgstr "<span weight=\"bold\" size=\"larger\">Arkiver er ændret</span>" + +#~ msgid "Non-free" +#~ msgstr "Ikke frit" + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid " " +#~ msgstr " " + +#~ msgid "Community maintained (UNSUPPORTED from canonical)" +#~ msgstr "Vedligeholdt af fællesskabet (understøttes IKKE af Canonical)" + +#~ msgid "Non-free (UNSUPPORTED from canonical)" +#~ msgstr "Ikke frit (Understøttes ikke af Canonical)" + +#~ msgid "Ubuntu 4.10 \"Warty Warthog\"" +#~ msgstr "Ubuntu 4.10 \"Warty Warthog\"" + +#~ msgid "Ubuntu 4.10 Security updates" +#~ msgstr "Sikkerhedsopdateringer til Ubuntu 4.10" + +#~ msgid "Ubuntu 5.04 \"Hoary Hedgehog\"" +#~ msgstr "Ubuntu 5.04 \"Hoary Hedgehog\"" + +#~ msgid "Ubuntu 5.04 Security updates" +#~ msgstr "Sikkerhedsopdateringer til Ubuntu 5.04" + +#~ msgid "CD Ubuntu 5.04 \"Hoary Hedgehog\"" +#~ msgstr "Cd Ubuntu 5.04 \"Hoary Hedgehog\"" + +#~ msgid "CD Ubuntu 4.10 \"Warty Warthog\"" +#~ msgstr "Cd Ubuntu 4.10 \"Warty Warthog\"" + +#~ msgid "Officially supported software" +#~ msgstr "Officielt understøttet programmel" + +#~ msgid "Debian 3.1 \"Sarge\"" +#~ msgstr "Debian 3.1 \"Sarge\"" + +#~ msgid "Debian 3.0 \"Woody\"" +#~ msgstr "Debian 3.0 \"Woody\"" + +#~ msgid "Debian Stable" +#~ msgstr "Debian Stable" + +#~ msgid "Debian Testing" +#~ msgstr "Debian Testing" + +#~ msgid "Debian Unstable \"Sid\"" +#~ msgstr "Debian Unstable \"Sid\"" + +#~ msgid "Debian Non-US (Stable)" +#~ msgstr "Debian Non-US (Stable)" + +#~ msgid "Debian Non-US (Testing)" +#~ msgstr "Debian Non-US (Testing)" + +#~ msgid "Debian Non-US (Unstable)" +#~ msgstr "Debian Non-US (Unstable)" + +#~ msgid "<b>Add or remove authentication keys</b>" +#~ msgstr "<b>Tilføj eller fjern godkendelsesnøgler</b>" diff --git a/po/de.po b/po/de.po new file mode 100644 index 00000000..750ffeac --- /dev/null +++ b/po/de.po @@ -0,0 +1,538 @@ +# German translation of update-manager. +# Copyright (C) 2005 Michiel Sikkes <michiel@eyesopened.nl> +# This file is distributed under the same license as the update-manager package. +# Initial version by an unknown artist. +# Frank Arnold <frank@scirocco-5v-turbo.de>, 2005. +# +# +msgid "" +msgstr "" +"Project-Id-Version: update-manager\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-04 10:47+0200\n" +"PO-Revision-Date: 2005-04-02 08:46+0200\n" +"Last-Translator: Frank Arnold <frank@scirocco-5v-turbo.de>\n" +"Language-Team: German GNOME Translations <gnome-de@gnome.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../data/gnome-software-properties.desktop.in.h:1 +msgid "Edit software sources and settings" +msgstr "Bearbeiten der Software-Quellen und Einstellungen" + +#: ../data/gnome-software-properties.desktop.in.h:2 +msgid "Software Properties" +msgstr "Software-Eigenschaften" + +#: ../data/gnome-software-properties.glade.h:1 +msgid "<b>Comment:</b>" +msgstr "<b>Kommentar:</b>" + +#: ../data/gnome-software-properties.glade.h:2 +msgid "<b>Components</b>" +msgstr "<b>Komponenten</b>" + +#: ../data/gnome-software-properties.glade.h:3 +msgid "<b>Distribution:</b>" +msgstr "<b>Distribution:</b>" + +#: ../data/gnome-software-properties.glade.h:4 +msgid "<b>Internet Updates</b>" +msgstr "<b>Internet-Aktualisierungen</b>" + +#: ../data/gnome-software-properties.glade.h:5 +msgid "<b>Repository</b>" +msgstr "<b>Repository</b>" + +#: ../data/gnome-software-properties.glade.h:6 +msgid "<b>Sections:</b>" +msgstr "<b>Sektionen:</b>" + +#: ../data/gnome-software-properties.glade.h:7 +msgid "<b>Software Sources</b>" +msgstr "<b>Paketquellen</b>" + +#: ../data/gnome-software-properties.glade.h:8 +msgid "<b>Temporary files</b>" +msgstr "<b>Temporäre Dateien</b>" + +#: ../data/gnome-software-properties.glade.h:9 +msgid "<b>Type:</b>" +msgstr "<b>Typ:</b>" + +#: ../data/gnome-software-properties.glade.h:10 +msgid "<b>URI:</b>" +msgstr "<b>Adresse:</b>" + +#: ../data/gnome-software-properties.glade.h:11 +msgid "<b>User Interface</b>" +msgstr "<b>Benutzeroberfläche</b>" + +#: ../data/gnome-software-properties.glade.h:12 +msgid "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialog. A key makes it " +"possible to check verify the integrity of the software you download." +msgstr "" +"<big><b>Authentifizierungsschlüssel</b></big>\n" +"\n" +"In diesem Dialog können Schlüssel zur Authentifizierung der Pakete " +"hinzugefügt und entfernt werden. Ein Schlüssel ermöglicht die " +"Integritätsprüfung von heruntergeladenen Paketen." + +#: ../data/gnome-software-properties.glade.h:15 +msgid "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." +msgstr "" +"<big><b>Geben Sie die vollständige APT-Zeile für das Repository ein, welches " +"hinzugefügt werden soll</b></big>\n" +"\n" +"Die APT-Zeile enthält den Typ, den Ort und den Inhalt der Paketquelle, z.B. " +"<i>»deb http://ftp.debian.org sarge main«</i>. Eine ausführliche " +"Beschreibung des Syntax ist in der Dokumentation zu finden." + +#: ../data/gnome-software-properties.glade.h:18 +msgid "APT line:" +msgstr "APT-Zeile:" + +#: ../data/gnome-software-properties.glade.h:19 +msgid "A_uthentication" +msgstr "A_uthentifizierung" + +#: ../data/gnome-software-properties.glade.h:20 +msgid "Add _CD" +msgstr "_CD hinzufügen" + +#: ../data/gnome-software-properties.glade.h:21 +msgid "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " +msgstr "" +"Hinzufügen einer neuen Schlüsseldatei zum vertrauenswürdigen Schlüsselbund. " +"Stellen Sie sicher, dass der Schlüssel über eine sichere Verbindung bezogen " +"wurde und dass der Besitzer vertrauenswürdig ist." + +#: ../data/gnome-software-properties.glade.h:22 +msgid "Automatically check for software _updates." +msgstr "Automatische Über_prüfung auf Software-Aktualisierungen" + +#: ../data/gnome-software-properties.glade.h:23 +msgid "Automatically clean _temporary packages files" +msgstr "_Temporäre Paketdateien automatisch löschen" + +#: ../data/gnome-software-properties.glade.h:24 +msgid "" +"Binary\n" +"Source" +msgstr "" +"Binär\n" +"Quellen" + +#: ../data/gnome-software-properties.glade.h:26 +msgid "Clean interval in days: " +msgstr "Säuberungsintervall in Tagen:" + +#: ../data/gnome-software-properties.glade.h:27 +msgid "Delete _old packages in the package cache" +msgstr "_Alte Pakete aus dem Zwischenspeicher entfernen" + +#: ../data/gnome-software-properties.glade.h:28 +msgid "Edit Repository..." +msgstr "Repository bearbeiten..." + +#: ../data/gnome-software-properties.glade.h:29 +msgid "Maximum age in days:" +msgstr "Höchstes Alter in Tagen:" + +#: ../data/gnome-software-properties.glade.h:30 +msgid "Maximum size in MB:" +msgstr "Maximale Größe in MB:" + +#: ../data/gnome-software-properties.glade.h:31 +msgid "Remove the selected key from the trusted keyring." +msgstr "" +"Den gewählten Schlüssel aus dem vertrauenswürdigen Schlüsselbund entfernen." + +#: ../data/gnome-software-properties.glade.h:32 +msgid "Restore default keys" +msgstr "Vorgabeschlüssel wiederherstellen" + +#: ../data/gnome-software-properties.glade.h:33 +msgid "" +"Restore the default keys shiped with the distribution. This will not change " +"user installed keys." +msgstr "" +"Zurücksetzen der Vorgabeschlüssel, welche mit der Distribution ausgeliefert " +"wurden. Vom Benutzer installierte Schlüssel werden dadurch nicht geändert." + +#: ../data/gnome-software-properties.glade.h:34 +msgid "Set _maximum size for the package cache" +msgstr "_Begrenzen der Größe des Paketzwischenspeichers" + +#: ../data/gnome-software-properties.glade.h:35 +msgid "Settings" +msgstr "Einstellungen" + +#: ../data/gnome-software-properties.glade.h:36 +msgid "Show disabled software sources" +msgstr "Deaktivierte Paketquellen anzeigen" + +#: ../data/gnome-software-properties.glade.h:37 +msgid "Software Preferences" +msgstr "Software-Einstellungen" + +#: ../data/gnome-software-properties.glade.h:38 +msgid "Update interval in days: " +msgstr "Aktualisierungsintervall in Tagen: " + +#: ../data/gnome-software-properties.glade.h:39 +msgid "_Add Repository" +msgstr "Repository _hinzufügen" + +#: ../data/gnome-software-properties.glade.h:40 +msgid "_Custom" +msgstr "_Benutzerdefiniert" + +#: ../data/gnome-software-properties.glade.h:41 +msgid "_Download upgradable packages" +msgstr "Aktualisierbare Pakete herunter_laden" + +#: ../data/update-manager.desktop.in.h:1 +msgid "Show available updates and choose which to install" +msgstr "Verfügbare Aktualisierungen anzeigen und zu installierende auswählen" + +#: ../data/update-manager.desktop.in.h:2 +msgid "Ubuntu Update Manager" +msgstr "Ubuntu Aktualisierungsverwaltung" + +#: ../data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "Aktualisierungsverwaltung" + +#: ../data/update-manager.glade.h:1 +msgid "<b>Details</b>" +msgstr "<b>Details</b>" + +#: ../data/update-manager.glade.h:2 +msgid "<b>Packages to install:</b>" +msgstr "<b>Zu installierende Pakete:</b>" + +#: ../data/update-manager.glade.h:3 ../src/update-manager.in:629 +msgid "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." +msgstr "" +"<big><b>Verfügbare Aktualisierungen</b></big>\n" +"\n" +"Für folgende Pakete sind neue Versionen verfügbar. Die Aktualisierung kann " +"durch einen Klick auf die Schaltfläche »Installieren« vorgenommen werden." + +#: ../data/update-manager.glade.h:6 +msgid "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" +msgstr "" +"<span weight=\"bold\" size=\"larger\">Änderungen werden heruntergeladen</" +"span>\n" +"\n" +"Die Änderungen müssen vom zentralen Server abgerufen werden" + +#: ../data/update-manager.glade.h:9 +msgid "Cancel downloading the changelog" +msgstr "Herunterladen des Änderungsprotokolls abbrechen" + +#: ../data/update-manager.glade.h:10 +msgid "Changes" +msgstr "Änderungen" + +#: ../data/update-manager.glade.h:11 +msgid "Description" +msgstr "Beschreibung" + +# »Aktualisieren« könnte hier verwirrend sein -fa- +#: ../data/update-manager.glade.h:12 +msgid "Reload" +msgstr "Neu laden" + +#: ../data/update-manager.glade.h:13 +msgid "Reload the package information from the server." +msgstr "Aktuelle Paketinformationen vom Server beziehen." + +#: ../data/update-manager.glade.h:14 +msgid "Software Updates" +msgstr "Software-Aktualisierungen" + +#: ../data/update-manager.glade.h:15 +msgid "_Install" +msgstr "_Installieren" + +#: ../src/aptsources.py.in:234 ../src/aptsources.py.in:282 +#: ../src/aptsources.py.in:328 +msgid "Officially supported" +msgstr "Offiziell unterstützt" + +#: ../src/aptsources.py.in:235 ../src/aptsources.py.in:283 +msgid "Restricted copyright" +msgstr "Eingeschränktes Copyright" + +#: ../src/aptsources.py.in:236 ../src/aptsources.py.in:284 +msgid "Community maintained (Universe)" +msgstr "Von den Gemeinschaft verwaltet (Universe)" + +#: ../src/aptsources.py.in:237 ../src/aptsources.py.in:285 +msgid "Non-free (Multiverse)" +msgstr "Unfrei (Multiverse)" + +#: ../src/aptsources.py.in:248 ../src/aptsources.py.in:306 +#: ../src/aptsources.py.in:318 +msgid "Ubuntu 5.04 Security Updates" +msgstr "Ubuntu 5.04 Sicherheitsaktualisierungen" + +#: ../src/aptsources.py.in:253 ../src/aptsources.py.in:310 +#, fuzzy +msgid "Ubuntu 5.04 Updates" +msgstr "Ubuntu 5.04 Sicherheitsaktualisierungen" + +#: ../src/aptsources.py.in:276 +msgid "Binary" +msgstr "Binär" + +#: ../src/aptsources.py.in:277 +msgid "Source" +msgstr "Quellen" + +#: ../src/aptsources.py.in:289 ../src/aptsources.py.in:293 +msgid "CD" +msgstr "CD" + +#: ../src/aptsources.py.in:314 ../src/aptsources.py.in:322 +msgid "Ubuntu 4.10 Security Updates" +msgstr "Ubuntu 4.10 Sicherheitsaktualisierungen" + +#: ../src/aptsources.py.in:329 +msgid "Contributed software" +msgstr "Contributed Software" + +#: ../src/aptsources.py.in:330 +msgid "Non-free software" +msgstr "Unfreie Software" + +#: ../src/aptsources.py.in:331 +msgid "US export restricted software" +msgstr "Software mit US-Exportbeschränkungen" + +#: ../src/aptsources.py.in:346 +msgid "Debian Stable Security Updates" +msgstr "Debian Stable Sicherheitsaktualisierungen" + +#. some known keys +#: ../src/dialog_apt_key.py.in:37 +msgid "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" +msgstr "" +"Automatischer Signaturschlüssel des Ubuntu-Archivs <ftpmaster@ubuntu.com>" + +#: ../src/dialog_apt_key.py.in:38 +msgid "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" +msgstr "" +"Automatischer Signaturschlüssel für das Ubuntu-CD-Image <cdimage@ubuntu.com>" + +#: ../src/dialog_apt_key.py.in:122 +msgid "Choose a key-file" +msgstr "Eine Schlüsseldatei wählen" + +#: ../src/dialog_apt_key.py.in:132 +msgid "Error importing selected file" +msgstr "Fehler beim Importieren der gewählten Datei" + +#: ../src/dialog_apt_key.py.in:133 +msgid "The selected file may not be a GPG key file or it might be corrupt." +msgstr "" +"Die gewählte Datei ist möglicherweise keine GPG-Schlüsseldatei oder ist " +"beschädigt." + +#: ../src/dialog_apt_key.py.in:145 +msgid "Error removing the key" +msgstr "Fehler beim Entfernen des Schlüssels" + +#: ../src/dialog_apt_key.py.in:146 +msgid "The key you selected could not be removed. Please report this as a bug." +msgstr "" +"Der gewählte Schlüssel konnte nicht entfernt werden. Bitte erstellen Sie " +"hierfür einen Fehlerbericht." + +#: ../src/gnome-software-properties.in:72 +msgid "Repositories changed" +msgstr "Geänderte Repositories" + +#: ../src/gnome-software-properties.in:74 +#, c-format +msgid "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" +msgstr "" +"Die Repository-Informationen wurden geändert. Eine Sicherheitskopie der " +"Datei »sources.list« wurde als »%s.save« gespeichert.\n" +"\n" +"Um die Änderungen zu übernehmen, müssen die Paketinformationen der Server " +"neu abgerufen werden. Wollen Sie dies jetzt tun?" + +#: ../src/update-manager.in:124 +msgid "Your system has broken packages!" +msgstr "Das System enthält defekte Pakete!" + +#: ../src/update-manager.in:125 +msgid "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." +msgstr "" +"Dies bedeutet, dass einige Abhängigkeiten der installierten Pakete nicht " +"aufgelöst sind. Verwenden Sie bitte »Synaptic« oder »apt-get« zur Behebung " +"des Problems." + +#: ../src/update-manager.in:139 +msgid "It is not possible to upgrade all packages." +msgstr "Es ist nicht möglich, alle Pakete zu aktualisieren." + +#: ../src/update-manager.in:141 +msgid "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." +msgstr "" +"Dies bedeutet, dass neben der momentanen Aktualisierung der Pakete weitere " +"Aktionen, wie das Installieren oder Entfernen von Paketen, notwendig sind. " +"Verwenden Sie bitte die »Intelligente Aktualisierung« von Synaptic oder »apt-" +"get dist-upgrade« zur Behebung des Problems." + +#: ../src/update-manager.in:154 +msgid "The following packages are not upgraded: " +msgstr "Die folgenden Pakete wurden nicht aktualisiert: " + +#: ../src/update-manager.in:232 +msgid "Changes not found, the server may not be updated yet." +msgstr "" +"Die Änderungen wurden nicht gefunden. Möglicherweise ist der Server noch " +"nicht aktualisiert." + +#: ../src/update-manager.in:235 +msgid "" +"Failed to download changes. Please check if there is an active internet " +"connection." +msgstr "" +"Das Herunterladen der Änderungen ist fehlgeschlagen. Bitte prüfen Sie, ob " +"eine Internetverbindung besteht." + +#: ../src/update-manager.in:255 +#, c-format +msgid "Version %s: \n" +msgstr "Version %s: \n" + +#: ../src/update-manager.in:303 +msgid "Downloading changes..." +msgstr "Änderungen werden heruntergeladen..." + +#: ../src/update-manager.in:358 +msgid "The updates are being applied." +msgstr "Die Aktualisierungen werden ausgeführt." + +#: ../src/update-manager.in:360 +msgid "Upgrade finished" +msgstr "Aktualisierung fertiggestellt" + +#: ../src/update-manager.in:417 +msgid "Another package manager is running" +msgstr "Ein andere Paketverwaltung läuft bereits" + +#: ../src/update-manager.in:419 +msgid "" +"You can run only one package management application at the same time. Please " +"close this other application first." +msgstr "" +"Es kann immer nur eine Anwendung zur Paketverwaltung zur gleichen Zeit " +"ausgeführt werden. Bitte beenden Sie zuerst die andere Anwendung." + +#: ../src/update-manager.in:437 +msgid "Updating package list..." +msgstr "Paketliste wird aktualisiert..." + +#: ../src/update-manager.in:439 +msgid "Installing updates..." +msgstr "Aktualisierungen werden installiert..." + +#: ../src/update-manager.in:618 ../src/update-manager.in:621 +msgid "Your system is up-to-date!" +msgstr "Das System ist auf dem aktuellen Stand!" + +#: ../src/update-manager.in:619 +msgid "There are no updates available." +msgstr "Es sind keine Aktualisierungen verfügbar." + +#: ../src/update-manager.in:644 +#, c-format +msgid "New version: %s" +msgstr "Neue Version: %s" + +#: ../src/update-manager.in:668 +msgid "Your distribution is no longer supported" +msgstr "Diese Distribution wird nicht länger unterstützt" + +#: ../src/update-manager.in:668 +msgid "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." +msgstr "" +"Verwenden Sie bitte eine aktuellere Version von Ubuntu-Linux. Für die " +"momentan laufende Version werden keine Sicherheits- und andere kritische " +"Aktualisierungen mehr bereitgestellt. Informationen zur Systemaktualisierung " +"finden Sie unter http://www.ubuntulinux.org." + +#: ../src/update-manager.in:682 +msgid "There is a new release of Ubuntu available!" +msgstr "Eine neue Version von Ubuntu ist verfügbar!" + +#: ../src/update-manager.in:682 +#, c-format +msgid "" +"A new release with the codename '%s' is available. Please see http://www." +"ubuntulinux.org/ for upgrade instructions." +msgstr "" +"Eine neue Version mit dem Codenamen »%s« ist verfügbar. Informationen zur " +"Aktualisierung des Systems erhalten Sie unter http://www.ubuntulinux.org." + +#: ../src/update-manager.in:685 +msgid "Never show this message again" +msgstr "Diese Nachricht nicht mehr anzeigen" + +#: ../src/update-manager.in:781 +msgid "Initializing and getting list of updates..." +msgstr "Initialisierung und Abrufen der Aktualisierungsliste..." + +#: ../src/update-manager.in:803 +msgid "You need to be root to run this program" +msgstr "Sie benötigen Administrationsrechte, um diese Anwendung auszuführen." + +#, fuzzy +#~ msgid "" +#~ "<big><b>Available Updates</b></big>\n" +#~ "The following packages are found to be upgradable. You can upgrade them " +#~ "by using the Install button." +#~ msgstr "" +#~ "<big><b>Verfügbare Aktualisierungen</b></big>\n" +#~ "\n" +#~ "Für folgende Pakete sind neue Versionen verfügbar. Die Aktualisierung " +#~ "kann durch einen Klick auf die Schaltfläche »Installieren« vorgenommen " +#~ "werden." diff --git a/po/el.po b/po/el.po new file mode 100644 index 00000000..dc3430de --- /dev/null +++ b/po/el.po @@ -0,0 +1,529 @@ +# translation of el.po to Greek +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER. +# Kostas Papadimas <pkst@gnome.org>, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: el\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-04 10:47+0200\n" +"PO-Revision-Date: 2005-03-05 14:33+0200\n" +"Last-Translator: Kostas Papadimas <pkst@gnome.org>\n" +"Language-Team: Greek <team@gnome.gr>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../data/gnome-software-properties.desktop.in.h:1 +msgid "Edit software sources and settings" +msgstr "" + +#: ../data/gnome-software-properties.desktop.in.h:2 +#, fuzzy +msgid "Software Properties" +msgstr "Προτιμήσεις λογισμικού" + +#: ../data/gnome-software-properties.glade.h:1 +msgid "<b>Comment:</b>" +msgstr "<b>Σχόλιο:</b>" + +#: ../data/gnome-software-properties.glade.h:2 +msgid "<b>Components</b>" +msgstr "<b>Συστατικά</b>" + +#: ../data/gnome-software-properties.glade.h:3 +msgid "<b>Distribution:</b>" +msgstr "<b>Διανομή:</b>" + +#: ../data/gnome-software-properties.glade.h:4 +msgid "<b>Internet Updates</b>" +msgstr "<b>Αναβαθμίσεις διαδικτύου</b>" + +#: ../data/gnome-software-properties.glade.h:5 +msgid "<b>Repository</b>" +msgstr "<b>Repository</b>" + +#: ../data/gnome-software-properties.glade.h:6 +msgid "<b>Sections:</b>" +msgstr "<b>Ενότητες:</b>" + +#: ../data/gnome-software-properties.glade.h:7 +msgid "<b>Software Sources</b>" +msgstr "<b>Πηγές λογισμικού</b>" + +#: ../data/gnome-software-properties.glade.h:8 +msgid "<b>Temporary files</b>" +msgstr "<b>Προσωρινά αρχεία</b>" + +#: ../data/gnome-software-properties.glade.h:9 +msgid "<b>Type:</b>" +msgstr "<b>Τύπος:</b> " + +#: ../data/gnome-software-properties.glade.h:10 +msgid "<b>URI:</b>" +msgstr "<b>URI:</b>" + +#: ../data/gnome-software-properties.glade.h:11 +msgid "<b>User Interface</b>" +msgstr "<b>Επιφάνεια Χρήσης</b>" + +#: ../data/gnome-software-properties.glade.h:12 +msgid "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialog. A key makes it " +"possible to check verify the integrity of the software you download." +msgstr "" +"<big><b>Κλειδιά πιστοποίησης</b></big>\n" +"\n" +"Μπορείτε να προσθέτετε και να αφαιρείτε κλειδιά πιστοποίησης σε αυτό τον " +"διάλογο. Ένα κλειδί κάνειεφικτό το έλεγχο της ακεραιότητας του λογισμικού " +"που μεταφορτώνετε." + +#: ../data/gnome-software-properties.glade.h:15 +msgid "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." +msgstr "" +"<big><b>Εισάγετε την πλήρη γραμμή APT του repository που θέλετε να " +"προσθέσετε</b></big>\n" +"\n" +"Η γραμμή APT περιέχει τον τύπο, τοποθεσία και το περιεχόμενο ενός " +"repository, για παράδειγμα <i>\"deb http://ftp.debian.org sarge main\"</i>. " +"Μπορείτε να βρείτε λεπτομερήςπεριγραφή του τρόπου σύνταξης στην τεκμηρίωση." + +#: ../data/gnome-software-properties.glade.h:18 +msgid "APT line:" +msgstr "Γραμμή APT:" + +#: ../data/gnome-software-properties.glade.h:19 +msgid "A_uthentication" +msgstr "Πι_στοποίηση" + +#: ../data/gnome-software-properties.glade.h:20 +msgid "Add _CD" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:21 +msgid "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " +msgstr "" +"Προσθήκη ενός νέου αρχείου κειδιού στο έμπιστο keyring. Βεβαιωθείτε ότι " +"λάβατετο κλειδί από ασφαλές κανάλι και ότι εμπιστεύεστε τον ιδιοκτήτη." + +#: ../data/gnome-software-properties.glade.h:22 +msgid "Automatically check for software _updates." +msgstr "Αυτόματος έλεγχος για ανα_βαθμίσεις λογισμικού" + +#: ../data/gnome-software-properties.glade.h:23 +msgid "Automatically clean _temporary packages files" +msgstr "Αυτόματη ε_κκαθάριση προσωρινών αρχείων πακέτων" + +#: ../data/gnome-software-properties.glade.h:24 +msgid "" +"Binary\n" +"Source" +msgstr "" +"Binary\n" +"Source" + +#: ../data/gnome-software-properties.glade.h:26 +msgid "Clean interval in days: " +msgstr "Xρονικό μεσοδιάστημα εκκαθάρισης σε ημέρες:" + +#: ../data/gnome-software-properties.glade.h:27 +msgid "Delete _old packages in the package cache" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:28 +msgid "Edit Repository..." +msgstr "Επεξεργασία Repository..." + +#: ../data/gnome-software-properties.glade.h:29 +msgid "Maximum age in days:" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:30 +msgid "Maximum size in MB:" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:31 +msgid "Remove the selected key from the trusted keyring." +msgstr "Διαγραφή του επιλεγμένου κλειδιού από το έμπιστο keyring." + +#: ../data/gnome-software-properties.glade.h:32 +msgid "Restore default keys" +msgstr "Επαναφορά προεπιλεγμένων κλειδιών" + +#: ../data/gnome-software-properties.glade.h:33 +msgid "" +"Restore the default keys shiped with the distribution. This will not change " +"user installed keys." +msgstr "" +"Επαναφορά των προεπιλεγμένων κλειδίων που εκδόθηκαν από την διανομή. Αυτό " +"δεν θα επηρεάσειτα κλειδιά που εγκαταστάθηκαν από τον χρήστη." + +#: ../data/gnome-software-properties.glade.h:34 +msgid "Set _maximum size for the package cache" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:35 +msgid "Settings" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:36 +msgid "Show disabled software sources" +msgstr "Εμφάνιση ανενεργών πηγών λογισμικού" + +#: ../data/gnome-software-properties.glade.h:37 +msgid "Software Preferences" +msgstr "Προτιμήσεις λογισμικού" + +#: ../data/gnome-software-properties.glade.h:38 +msgid "Update interval in days: " +msgstr "Διάστημα ανανέωσης σε ημέρες:" + +#: ../data/gnome-software-properties.glade.h:39 +msgid "_Add Repository" +msgstr "Προσ_θήκη Repository" + +#: ../data/gnome-software-properties.glade.h:40 +msgid "_Custom" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:41 +msgid "_Download upgradable packages" +msgstr "Μετα_φόρτωση αναβαθμίσιμων πακέτων" + +#: ../data/update-manager.desktop.in.h:1 +msgid "Show available updates and choose which to install" +msgstr "" + +#: ../data/update-manager.desktop.in.h:2 +#, fuzzy +msgid "Ubuntu Update Manager" +msgstr "Αναβαθμίσεις Ubuntu 4.10" + +#: ../data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "" + +#: ../data/update-manager.glade.h:1 +msgid "<b>Details</b>" +msgstr "<b>Λεπτομέρειες</b>" + +#: ../data/update-manager.glade.h:2 +#, fuzzy +msgid "<b>Packages to install:</b>" +msgstr "Πακέτα για εγκατάσταση:" + +#: ../data/update-manager.glade.h:3 ../src/update-manager.in:629 +msgid "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." +msgstr "" +"<big><b>Διαθέσιμες αναβαθμίσεις</b></big>\n" +"\n" +"Τα ακόλουθα πακέτα έχουν δυνατότητα αναβάθμισης. Μπορείτε να τα αναβαθμίσετε " +"με την χρήση του κουμπιούΕγκατάσταση." + +#: ../data/update-manager.glade.h:6 +msgid "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" +msgstr "" +"<span weight=\"bold\" size=\"larger\">Μεταφόρτωση αλλαγών</span>\n" +"\n" +"Χρειάζεται να κάνετε λήψη των αλλαγών από τον κεντρικό εξυπηρετητή" + +#: ../data/update-manager.glade.h:9 +msgid "Cancel downloading the changelog" +msgstr "Ακύρωση μεταφόρτωσης του changelog" + +#: ../data/update-manager.glade.h:10 +msgid "Changes" +msgstr "Αλλαγές" + +#: ../data/update-manager.glade.h:11 +msgid "Description" +msgstr "Περιγραφή" + +#: ../data/update-manager.glade.h:12 +msgid "Reload" +msgstr "" + +#: ../data/update-manager.glade.h:13 +msgid "Reload the package information from the server." +msgstr "Ανανέωση των πληροφοριών πακέτων από τον εξυπηρετητή." + +#: ../data/update-manager.glade.h:14 +msgid "Software Updates" +msgstr "Αναβαθμίσεις λογισμικού" + +#: ../data/update-manager.glade.h:15 +msgid "_Install" +msgstr "_Εγκατάσταση" + +#: ../src/aptsources.py.in:234 ../src/aptsources.py.in:282 +#: ../src/aptsources.py.in:328 +msgid "Officially supported" +msgstr "Officially supported" + +#: ../src/aptsources.py.in:235 ../src/aptsources.py.in:283 +msgid "Restricted copyright" +msgstr "Περιορισμένα πνευματικά δικαιώματα" + +#: ../src/aptsources.py.in:236 ../src/aptsources.py.in:284 +msgid "Community maintained (Universe)" +msgstr "Community maintained (Universe)" + +#: ../src/aptsources.py.in:237 ../src/aptsources.py.in:285 +msgid "Non-free (Multiverse)" +msgstr "Όχι-ελεύθερα (Multiverse)" + +#: ../src/aptsources.py.in:248 ../src/aptsources.py.in:306 +#: ../src/aptsources.py.in:318 +msgid "Ubuntu 5.04 Security Updates" +msgstr "Αναβαθμίσεις ασφαλείας Ubuntu 5.04" + +#: ../src/aptsources.py.in:253 ../src/aptsources.py.in:310 +#, fuzzy +msgid "Ubuntu 5.04 Updates" +msgstr "Αναβαθμίσεις ασφαλείας Ubuntu 5.04" + +#: ../src/aptsources.py.in:276 +#, fuzzy +msgid "Binary" +msgstr "" +"Binary\n" +"Source" + +#: ../src/aptsources.py.in:277 +#, fuzzy +msgid "Source" +msgstr "" +"Binary\n" +"Source" + +#: ../src/aptsources.py.in:289 ../src/aptsources.py.in:293 +msgid "CD" +msgstr "CD" + +#: ../src/aptsources.py.in:314 ../src/aptsources.py.in:322 +msgid "Ubuntu 4.10 Security Updates" +msgstr "Αναβαθμίσεις ασφαλείας Ubuntu 4.10" + +#: ../src/aptsources.py.in:329 +msgid "Contributed software" +msgstr "Contributed software" + +#: ../src/aptsources.py.in:330 +msgid "Non-free software" +msgstr "Όχι-ελεύθερο λογισμικό" + +#: ../src/aptsources.py.in:331 +msgid "US export restricted software" +msgstr "US export restricted software" + +#: ../src/aptsources.py.in:346 +msgid "Debian Stable Security Updates" +msgstr "Αναβαθμίσεις ασφαλείας Debian Stable" + +#. some known keys +#: ../src/dialog_apt_key.py.in:37 +msgid "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" +msgstr "" + +#: ../src/dialog_apt_key.py.in:38 +msgid "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" +msgstr "" + +#: ../src/dialog_apt_key.py.in:122 +msgid "Choose a key-file" +msgstr "" + +#: ../src/dialog_apt_key.py.in:132 +msgid "Error importing selected file" +msgstr "" + +#: ../src/dialog_apt_key.py.in:133 +msgid "The selected file may not be a GPG key file or it might be corrupt." +msgstr "" + +#: ../src/dialog_apt_key.py.in:145 +msgid "Error removing the key" +msgstr "" + +#: ../src/dialog_apt_key.py.in:146 +msgid "The key you selected could not be removed. Please report this as a bug." +msgstr "" + +#: ../src/gnome-software-properties.in:72 +msgid "Repositories changed" +msgstr "Τα Repositories άλλαξαν" + +#: ../src/gnome-software-properties.in:74 +#, c-format +msgid "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" +msgstr "" +"Οι πληροφορίες repository έχουν αλλαγές. Ένα αντίγραφο ασφαλείας του αρχείου " +"sources.list έχει αποθηκευτεί στο %s.save. \n" +"\n" +"Θα χρειαστεί να ανανεώσετε την λίστα πακέτων από τους εξυπηρετητές για να " +"πραγματοποιηθούν οι αλλαγέςσας. Θέλετε να το κάνετε τώρα;" + +#: ../src/update-manager.in:124 +#, fuzzy +msgid "Your system has broken packages!" +msgstr "Το σύστημα σας είναι ενημερωμένο!" + +#: ../src/update-manager.in:125 +msgid "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." +msgstr "" + +#: ../src/update-manager.in:139 +msgid "It is not possible to upgrade all packages." +msgstr "" + +#: ../src/update-manager.in:141 +msgid "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." +msgstr "" + +#: ../src/update-manager.in:154 +msgid "The following packages are not upgraded: " +msgstr "" + +#: ../src/update-manager.in:232 +msgid "Changes not found, the server may not be updated yet." +msgstr "" +"Οι αλλαγές δεν βρέθηκαν, ο εξυπηρετητής μπορεί να μην έχει ενημερωθεί ακόμα." + +#: ../src/update-manager.in:235 +msgid "" +"Failed to download changes. Please check if there is an active internet " +"connection." +msgstr "" +"Αποτυχία μεταφόρτωσης αλλαγών. Ελέγξτε αν υπάρχει ενεργή σύνδεση με το " +"διαδίκτυο." + +#: ../src/update-manager.in:255 +#, c-format +msgid "Version %s: \n" +msgstr "Έκδοση %s: \n" + +#: ../src/update-manager.in:303 +msgid "Downloading changes..." +msgstr "Μεταφόρτωση αλλαγών..." + +#: ../src/update-manager.in:358 +msgid "The updates are being applied." +msgstr "Οι αναβαθμίσεις εφαρμόζονται." + +#: ../src/update-manager.in:360 +msgid "Upgrade finished" +msgstr "Η αναβάθμιση ολοκληρώθηκε" + +#: ../src/update-manager.in:417 +msgid "Another package manager is running" +msgstr "Εκτελείται ένας άλλος διαχειριστής πακέτων" + +#: ../src/update-manager.in:419 +msgid "" +"You can run only one package management application at the same time. Please " +"close this other application first." +msgstr "" +"Μπορείτε να εκτελείτε μόνο μια εφαρμογή διαχείρισης πακέτων την φορά. " +"Παρακαλώ κλείστε την άλλη εφαρμογή πρώτα." + +#: ../src/update-manager.in:437 +msgid "Updating package list..." +msgstr "" + +#: ../src/update-manager.in:439 +msgid "Installing updates..." +msgstr "" + +#: ../src/update-manager.in:618 ../src/update-manager.in:621 +msgid "Your system is up-to-date!" +msgstr "Το σύστημα σας είναι ενημερωμένο!" + +#: ../src/update-manager.in:619 +msgid "There are no updates available." +msgstr "Δεν υπάρχουν διαθέσιμες αναβαθμίσεις." + +#: ../src/update-manager.in:644 +#, c-format +msgid "New version: %s" +msgstr "Νέα έκδοση: %s" + +#: ../src/update-manager.in:668 +msgid "Your distribution is no longer supported" +msgstr "Η διανομή σας δεν υποστηρίζεται πιά" + +#: ../src/update-manager.in:668 +msgid "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." +msgstr "" + +#: ../src/update-manager.in:682 +#, fuzzy +msgid "There is a new release of Ubuntu available!" +msgstr "Δεν υπάρχουν διαθέσιμες αναβαθμίσεις." + +#: ../src/update-manager.in:682 +#, c-format +msgid "" +"A new release with the codename '%s' is available. Please see http://www." +"ubuntulinux.org/ for upgrade instructions." +msgstr "" + +#: ../src/update-manager.in:685 +msgid "Never show this message again" +msgstr "" + +#: ../src/update-manager.in:781 +msgid "Initializing and getting list of updates..." +msgstr "Αρχικοποίηση και λήψη λίστας αναβαθμίσεων..." + +#: ../src/update-manager.in:803 +msgid "You need to be root to run this program" +msgstr "" + +#, fuzzy +#~ msgid "" +#~ "<big><b>Available Updates</b></big>\n" +#~ "The following packages are found to be upgradable. You can upgrade them " +#~ "by using the Install button." +#~ msgstr "" +#~ "<big><b>Διαθέσιμες αναβαθμίσεις</b></big>\n" +#~ "\n" +#~ "Τα ακόλουθα πακέτα έχουν δυνατότητα αναβάθμισης. Μπορείτε να τα " +#~ "αναβαθμίσετε με την χρήση του κουμπιούΕγκατάσταση." + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid " " +#~ msgstr " " diff --git a/po/en_CA.po b/po/en_CA.po new file mode 100644 index 00000000..a5b93fbb --- /dev/null +++ b/po/en_CA.po @@ -0,0 +1,520 @@ +# Canadian English translation for update-manager +# Copyright (C) 2005 Adam Weinberger and the GNOME Foundation +# This file is distributed under the same licence as the update-manager package. +# Adam Weinberger <adamw@gnome.org>, 2005. +# +# +msgid "" +msgstr "" +"Project-Id-Version: update-manager\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-04 10:47+0200\n" +"PO-Revision-Date: 2005-04-03 01:26-0500\n" +"Last-Translator: Adam Weinberger <adamw@gnome.org>\n" +"Language-Team: Canadian English <adamw@gnome.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../data/gnome-software-properties.desktop.in.h:1 +msgid "Edit software sources and settings" +msgstr "Edit software sources and settings" + +#: ../data/gnome-software-properties.desktop.in.h:2 +msgid "Software Properties" +msgstr "Software Properties" + +#: ../data/gnome-software-properties.glade.h:1 +msgid "<b>Comment:</b>" +msgstr "<b>Comment:</b>" + +#: ../data/gnome-software-properties.glade.h:2 +msgid "<b>Components</b>" +msgstr "<b>Components</b>" + +#: ../data/gnome-software-properties.glade.h:3 +msgid "<b>Distribution:</b>" +msgstr "<b>Distribution:</b>" + +#: ../data/gnome-software-properties.glade.h:4 +msgid "<b>Internet Updates</b>" +msgstr "<b>Internet Updates</b>" + +#: ../data/gnome-software-properties.glade.h:5 +msgid "<b>Repository</b>" +msgstr "<b>Repository</b>" + +#: ../data/gnome-software-properties.glade.h:6 +msgid "<b>Sections:</b>" +msgstr "<b>Sections:</b>" + +#: ../data/gnome-software-properties.glade.h:7 +msgid "<b>Software Sources</b>" +msgstr "<b>Software Sources</b>" + +#: ../data/gnome-software-properties.glade.h:8 +msgid "<b>Temporary files</b>" +msgstr "<b>Temporary files</b>" + +#: ../data/gnome-software-properties.glade.h:9 +msgid "<b>Type:</b>" +msgstr "<b>Type:</b>" + +#: ../data/gnome-software-properties.glade.h:10 +msgid "<b>URI:</b>" +msgstr "<b>URI:</b>" + +#: ../data/gnome-software-properties.glade.h:11 +msgid "<b>User Interface</b>" +msgstr "<b>User Interface</b>" + +#: ../data/gnome-software-properties.glade.h:12 +msgid "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialog. A key makes it " +"possible to check verify the integrity of the software you download." +msgstr "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialogue. A key makes it " +"possible to check verify the integrity of the software you download." + +#: ../data/gnome-software-properties.glade.h:15 +msgid "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." +msgstr "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." + +#: ../data/gnome-software-properties.glade.h:18 +msgid "APT line:" +msgstr "APT line:" + +#: ../data/gnome-software-properties.glade.h:19 +msgid "A_uthentication" +msgstr "A_uthentication" + +#: ../data/gnome-software-properties.glade.h:20 +msgid "Add _CD" +msgstr "Add _CD" + +#: ../data/gnome-software-properties.glade.h:21 +msgid "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " +msgstr "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " + +#: ../data/gnome-software-properties.glade.h:22 +msgid "Automatically check for software _updates." +msgstr "Automatically check for software _updates." + +#: ../data/gnome-software-properties.glade.h:23 +msgid "Automatically clean _temporary packages files" +msgstr "Automatically clean _temporary packages files" + +#: ../data/gnome-software-properties.glade.h:24 +msgid "" +"Binary\n" +"Source" +msgstr "" +"Binary\n" +"Source" + +#: ../data/gnome-software-properties.glade.h:26 +msgid "Clean interval in days: " +msgstr "Clean interval in days: " + +#: ../data/gnome-software-properties.glade.h:27 +msgid "Delete _old packages in the package cache" +msgstr "Delete _old packages in the package cache" + +#: ../data/gnome-software-properties.glade.h:28 +msgid "Edit Repository..." +msgstr "Edit Repository..." + +#: ../data/gnome-software-properties.glade.h:29 +msgid "Maximum age in days:" +msgstr "Maximum age in days:" + +#: ../data/gnome-software-properties.glade.h:30 +msgid "Maximum size in MB:" +msgstr "Maximum size in MB:" + +#: ../data/gnome-software-properties.glade.h:31 +msgid "Remove the selected key from the trusted keyring." +msgstr "Remove the selected key from the trusted keyring." + +#: ../data/gnome-software-properties.glade.h:32 +msgid "Restore default keys" +msgstr "Restore default keys" + +#: ../data/gnome-software-properties.glade.h:33 +msgid "" +"Restore the default keys shiped with the distribution. This will not change " +"user installed keys." +msgstr "" +"Restore the default keys shiped with the distribution. This will not change " +"user-installed keys." + +#: ../data/gnome-software-properties.glade.h:34 +msgid "Set _maximum size for the package cache" +msgstr "Set _maximum size for the package cache" + +#: ../data/gnome-software-properties.glade.h:35 +msgid "Settings" +msgstr "Settings" + +#: ../data/gnome-software-properties.glade.h:36 +msgid "Show disabled software sources" +msgstr "Show disabled software sources" + +#: ../data/gnome-software-properties.glade.h:37 +msgid "Software Preferences" +msgstr "Software Preferences" + +#: ../data/gnome-software-properties.glade.h:38 +msgid "Update interval in days: " +msgstr "Update interval in days: " + +#: ../data/gnome-software-properties.glade.h:39 +msgid "_Add Repository" +msgstr "_Add Repository" + +#: ../data/gnome-software-properties.glade.h:40 +msgid "_Custom" +msgstr "_Custom" + +#: ../data/gnome-software-properties.glade.h:41 +msgid "_Download upgradable packages" +msgstr "_Download upgradable packages" + +#: ../data/update-manager.desktop.in.h:1 +msgid "Show available updates and choose which to install" +msgstr "Show available updates and choose which to install" + +#: ../data/update-manager.desktop.in.h:2 +msgid "Ubuntu Update Manager" +msgstr "Ubuntu Update Manager" + +#: ../data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "Update Manager" + +#: ../data/update-manager.glade.h:1 +msgid "<b>Details</b>" +msgstr "<b>Details</b>" + +#: ../data/update-manager.glade.h:2 +msgid "<b>Packages to install:</b>" +msgstr "<b>Packages to install:</b>" + +#: ../data/update-manager.glade.h:3 ../src/update-manager.in:629 +msgid "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." +msgstr "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." + +#: ../data/update-manager.glade.h:6 +msgid "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" +msgstr "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" + +#: ../data/update-manager.glade.h:9 +msgid "Cancel downloading the changelog" +msgstr "Cancel downloading the ChangeLog" + +#: ../data/update-manager.glade.h:10 +msgid "Changes" +msgstr "Changes" + +#: ../data/update-manager.glade.h:11 +msgid "Description" +msgstr "Description" + +#: ../data/update-manager.glade.h:12 +msgid "Reload" +msgstr "Reload" + +#: ../data/update-manager.glade.h:13 +msgid "Reload the package information from the server." +msgstr "Reload the package information from the server." + +#: ../data/update-manager.glade.h:14 +msgid "Software Updates" +msgstr "Software Updates" + +#: ../data/update-manager.glade.h:15 +msgid "_Install" +msgstr "_Install" + +#: ../src/aptsources.py.in:234 ../src/aptsources.py.in:282 +#: ../src/aptsources.py.in:328 +msgid "Officially supported" +msgstr "Officially supported" + +#: ../src/aptsources.py.in:235 ../src/aptsources.py.in:283 +msgid "Restricted copyright" +msgstr "Restricted copyright" + +#: ../src/aptsources.py.in:236 ../src/aptsources.py.in:284 +msgid "Community maintained (Universe)" +msgstr "Community maintained (Universe)" + +#: ../src/aptsources.py.in:237 ../src/aptsources.py.in:285 +msgid "Non-free (Multiverse)" +msgstr "Non-free (Multiverse)" + +#: ../src/aptsources.py.in:248 ../src/aptsources.py.in:306 +#: ../src/aptsources.py.in:318 +msgid "Ubuntu 5.04 Security Updates" +msgstr "Ubuntu 5.04 Security Updates" + +#: ../src/aptsources.py.in:253 ../src/aptsources.py.in:310 +msgid "Ubuntu 5.04 Updates" +msgstr "Ubuntu 5.04 Updates" + +#: ../src/aptsources.py.in:276 +msgid "Binary" +msgstr "Binary" + +#: ../src/aptsources.py.in:277 +msgid "Source" +msgstr "Source" + +#: ../src/aptsources.py.in:289 ../src/aptsources.py.in:293 +msgid "CD" +msgstr "CD" + +#: ../src/aptsources.py.in:314 ../src/aptsources.py.in:322 +msgid "Ubuntu 4.10 Security Updates" +msgstr "Ubuntu 4.10 Security Updates" + +#: ../src/aptsources.py.in:329 +msgid "Contributed software" +msgstr "Contributed software" + +#: ../src/aptsources.py.in:330 +msgid "Non-free software" +msgstr "Non-free software" + +#: ../src/aptsources.py.in:331 +msgid "US export restricted software" +msgstr "US export restricted software" + +#: ../src/aptsources.py.in:346 +msgid "Debian Stable Security Updates" +msgstr "Debian Stable Security Updates" + +#. some known keys +#: ../src/dialog_apt_key.py.in:37 +msgid "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" +msgstr "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" + +#: ../src/dialog_apt_key.py.in:38 +msgid "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" +msgstr "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" + +#: ../src/dialog_apt_key.py.in:122 +msgid "Choose a key-file" +msgstr "Choose a key-file" + +#: ../src/dialog_apt_key.py.in:132 +msgid "Error importing selected file" +msgstr "Error importing selected file" + +#: ../src/dialog_apt_key.py.in:133 +msgid "The selected file may not be a GPG key file or it might be corrupt." +msgstr "The selected file may not be a GPG key file or it might be corrupt." + +#: ../src/dialog_apt_key.py.in:145 +msgid "Error removing the key" +msgstr "Error removing the key" + +#: ../src/dialog_apt_key.py.in:146 +msgid "The key you selected could not be removed. Please report this as a bug." +msgstr "" +"The key you selected could not be removed. Please report this as a bug." + +#: ../src/gnome-software-properties.in:72 +msgid "Repositories changed" +msgstr "Repositories changed" + +#: ../src/gnome-software-properties.in:74 +#, c-format +msgid "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" +msgstr "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" + +#: ../src/update-manager.in:124 +msgid "Your system has broken packages!" +msgstr "Your system has broken packages!" + +#: ../src/update-manager.in:125 +msgid "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." +msgstr "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." + +#: ../src/update-manager.in:139 +msgid "It is not possible to upgrade all packages." +msgstr "It is not possible to upgrade all packages." + +#: ../src/update-manager.in:141 +msgid "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." +msgstr "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." + +#: ../src/update-manager.in:154 +msgid "The following packages are not upgraded: " +msgstr "The following packages are not upgraded: " + +#: ../src/update-manager.in:232 +msgid "Changes not found, the server may not be updated yet." +msgstr "Changes not found, the server may not be updated yet." + +#: ../src/update-manager.in:235 +msgid "" +"Failed to download changes. Please check if there is an active internet " +"connection." +msgstr "" +"Failed to download changes. Please check if there is an active internet " +"connection." + +#: ../src/update-manager.in:255 +#, c-format +msgid "Version %s: \n" +msgstr "Version %s: \n" + +#: ../src/update-manager.in:303 +msgid "Downloading changes..." +msgstr "Downloading changes..." + +#: ../src/update-manager.in:358 +msgid "The updates are being applied." +msgstr "The updates are being applied." + +#: ../src/update-manager.in:360 +msgid "Upgrade finished" +msgstr "Upgrade finished" + +#: ../src/update-manager.in:417 +msgid "Another package manager is running" +msgstr "Another package manager is running" + +#: ../src/update-manager.in:419 +msgid "" +"You can run only one package management application at the same time. Please " +"close this other application first." +msgstr "" +"You can run only one package management application at the same time. Please " +"close this other application first." + +#: ../src/update-manager.in:437 +msgid "Updating package list..." +msgstr "Updating package list..." + +#: ../src/update-manager.in:439 +msgid "Installing updates..." +msgstr "Installing updates..." + +#: ../src/update-manager.in:618 ../src/update-manager.in:621 +msgid "Your system is up-to-date!" +msgstr "Your system is up-to-date!" + +#: ../src/update-manager.in:619 +msgid "There are no updates available." +msgstr "There are no updates available." + +#: ../src/update-manager.in:644 +#, c-format +msgid "New version: %s" +msgstr "New version: %s" + +#: ../src/update-manager.in:668 +msgid "Your distribution is no longer supported" +msgstr "Your distribution is no longer supported" + +#: ../src/update-manager.in:668 +msgid "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." +msgstr "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." + +#: ../src/update-manager.in:682 +msgid "There is a new release of Ubuntu available!" +msgstr "There is a new release of Ubuntu available!" + +#: ../src/update-manager.in:682 +#, c-format +msgid "" +"A new release with the codename '%s' is available. Please see http://www." +"ubuntulinux.org/ for upgrade instructions." +msgstr "" +"A new release with the codename '%s' is available. Please see http://www." +"ubuntulinux.org/ for upgrade instructions." + +#: ../src/update-manager.in:685 +msgid "Never show this message again" +msgstr "Never show this message again" + +#: ../src/update-manager.in:781 +msgid "Initializing and getting list of updates..." +msgstr "Initializing and getting list of updates..." + +#: ../src/update-manager.in:803 +msgid "You need to be root to run this program" +msgstr "You need to be root to run this program" + +#, fuzzy +#~ msgid "" +#~ "<big><b>Available Updates</b></big>\n" +#~ "The following packages are found to be upgradable. You can upgrade them " +#~ "by using the Install button." +#~ msgstr "" +#~ "<big><b>Available Updates</b></big>\n" +#~ "\n" +#~ "The following packages are found to be upgradable. You can upgrade them " +#~ "by using the Install button." diff --git a/po/es.po b/po/es.po new file mode 100644 index 00000000..d115cca4 --- /dev/null +++ b/po/es.po @@ -0,0 +1,534 @@ +# translation of update-manager to Spanish +# This file is distributed under the same license as the update-manager package. +# Copyright (c) 2004 Canonical +# 2004 Michiel Sikkes +# Jorge Bernal <koke@amedias.org>, 2005. +# Jorge Bernal <koke@sindominio.net>, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: es\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-04 15:00+0200\n" +"PO-Revision-Date: 2005-04-04 15:00+0200\n" +"Last-Translator: Jorge Bernal <koke@amedias.org>\n" +"Language-Team: Spanish <traductores@gnome.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../data/gnome-software-properties.desktop.in.h:1 +msgid "Edit software sources and settings" +msgstr "Editar fuentes de software y preferencias" + +#: ../data/gnome-software-properties.desktop.in.h:2 +msgid "Software Properties" +msgstr "Propiedades de software" + +#: ../data/gnome-software-properties.glade.h:1 +msgid "<b>Comment:</b>" +msgstr "<b>Comentario:</b>" + +#: ../data/gnome-software-properties.glade.h:2 +msgid "<b>Components</b>" +msgstr "<b>Componentes</b>" + +#: ../data/gnome-software-properties.glade.h:3 +msgid "<b>Distribution:</b>" +msgstr "<b>Distribución:</b>" + +#: ../data/gnome-software-properties.glade.h:4 +msgid "<b>Internet Updates</b>" +msgstr "<b>Actualizaciones por Internet</b>" + +#: ../data/gnome-software-properties.glade.h:5 +msgid "<b>Repository</b>" +msgstr "<b>Repositorio</b>" + +#: ../data/gnome-software-properties.glade.h:6 +msgid "<b>Sections:</b>" +msgstr "<b>Secciones:</b>" + +#: ../data/gnome-software-properties.glade.h:7 +msgid "<b>Software Sources</b>" +msgstr "<b>Orígenes de software</b>" + +#: ../data/gnome-software-properties.glade.h:8 +msgid "<b>Temporary files</b>" +msgstr "<b>Ficheros temporales</b>" + +#: ../data/gnome-software-properties.glade.h:9 +msgid "<b>Type:</b>" +msgstr "<b>Tipo:</b>" + +#: ../data/gnome-software-properties.glade.h:10 +msgid "<b>URI:</b>" +msgstr "<b>URI:</b>" + +#: ../data/gnome-software-properties.glade.h:11 +msgid "<b>User Interface</b>" +msgstr "<b>Interfaz de usuario</b>" + +#: ../data/gnome-software-properties.glade.h:12 +msgid "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialog. A key makes it " +"possible to check verify the integrity of the software you download." +msgstr "" +"<big><b>Claves de autenticación</b></big>\n" +"\n" +"Puede añadir y quitar claves de autenticación desde este diálogo. Una clave " +"hace posible verificar la integridad del software que descarga." + +#: ../data/gnome-software-properties.glade.h:15 +msgid "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." +msgstr "" +"<big><b>Introduzca la línea completa del repositorio APT que quiere añadir</" +"b></big>\n" +"\n" +"La línea de APT contiene el tipo, ubicación y contenido de un repositorio, " +"por ejemplo <i>\"deb http://ftp.debian.org sarge main\"</i>. Puede encontrar " +"una descripción detallada de la sintaxis en la documentación." + +#: ../data/gnome-software-properties.glade.h:18 +msgid "APT line:" +msgstr "Línea de APT:" + +#: ../data/gnome-software-properties.glade.h:19 +msgid "A_uthentication" +msgstr "A_utenticación" + +#: ../data/gnome-software-properties.glade.h:20 +msgid "Add _CD" +msgstr "Añadir _CD" + +#: ../data/gnome-software-properties.glade.h:21 +msgid "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " +msgstr "" +"Añadir un nuevo archivo de clave al anillo de confianza. Asegúrese de que " +"obtuvo la clave a través de un canal seguro y que confía en el propietario. " + +#: ../data/gnome-software-properties.glade.h:22 +msgid "Automatically check for software _updates." +msgstr "_Comprobar automáticamente las actualizaciones de software." + +#: ../data/gnome-software-properties.glade.h:23 +msgid "Automatically clean _temporary packages files" +msgstr "Limpiar _temporalmente los archivos de paquetes" + +#: ../data/gnome-software-properties.glade.h:24 +msgid "" +"Binary\n" +"Source" +msgstr "" +"Binario\n" +"Fuente" + +#: ../data/gnome-software-properties.glade.h:26 +msgid "Clean interval in days: " +msgstr "Intervalo de limpieza en días: " + +#: ../data/gnome-software-properties.glade.h:27 +msgid "Delete _old packages in the package cache" +msgstr "_Borrar paquetes viejos del caché de paquetes" + +#: ../data/gnome-software-properties.glade.h:28 +msgid "Edit Repository..." +msgstr "Editar repositorio..." + +#: ../data/gnome-software-properties.glade.h:29 +msgid "Maximum age in days:" +msgstr "Edad máxima en días:" + +#: ../data/gnome-software-properties.glade.h:30 +msgid "Maximum size in MB:" +msgstr "Tamaño máximo en MB:" + +#: ../data/gnome-software-properties.glade.h:31 +msgid "Remove the selected key from the trusted keyring." +msgstr "Quitar la clave seleccionada del anillo de confianza." + +#: ../data/gnome-software-properties.glade.h:32 +msgid "Restore default keys" +msgstr "Recuperar claves predeterminadas" + +#: ../data/gnome-software-properties.glade.h:33 +msgid "" +"Restore the default keys shiped with the distribution. This will not change " +"user installed keys." +msgstr "" +"Recupera las claves entregadas originalmente con la distribución. Esto no " +"cambia las claves instaladas por el usuario." + +#: ../data/gnome-software-properties.glade.h:34 +msgid "Set _maximum size for the package cache" +msgstr "Establecer tamaño _máximo para el caché de paquetes" + +#: ../data/gnome-software-properties.glade.h:35 +msgid "Settings" +msgstr "Preferencias" + +#: ../data/gnome-software-properties.glade.h:36 +msgid "Show disabled software sources" +msgstr "Mostrar orígenes de software desactivados" + +#: ../data/gnome-software-properties.glade.h:37 +msgid "Software Preferences" +msgstr "Preferencias de software" + +#: ../data/gnome-software-properties.glade.h:38 +msgid "Update interval in days: " +msgstr "Intervalo de actualización en días: " + +#: ../data/gnome-software-properties.glade.h:39 +msgid "_Add Repository" +msgstr "_Añadir repositorio" + +#: ../data/gnome-software-properties.glade.h:40 +msgid "_Custom" +msgstr "_Personalizado" + +#: ../data/gnome-software-properties.glade.h:41 +msgid "_Download upgradable packages" +msgstr "_Descargar paquetes actualizables" + +#: ../data/update-manager.desktop.in.h:1 +msgid "Show available updates and choose which to install" +msgstr "Mostrar actualizaciones disponibles y elegir cuáles instalar" + +#: ../data/update-manager.desktop.in.h:2 +msgid "Ubuntu Update Manager" +msgstr "Gestor de actualizaciones de Ubuntu" + +#: ../data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "Gestor de actualizaciones" + +#: ../data/update-manager.glade.h:1 +msgid "<b>Details</b>" +msgstr "<b>Detalles:</b>" + +#: ../data/update-manager.glade.h:2 +msgid "<b>Packages to install:</b>" +msgstr "<b>Paquetes a instalar:</b>" + +#: ../data/update-manager.glade.h:3 ../src/update-manager.in:629 +msgid "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." +msgstr "" +"<big><b>Actualizaciones disponibles</b></big>\n" +"\n" +"El gestor de actualizaciones encontró los siguientes paquetes actualizables. " +"Puede actualizarlos usando el botón Instalar." + +#: ../data/update-manager.glade.h:6 +msgid "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" +msgstr "" +"<span weight=\"bold\" size=\"larger\">Descargando informe de cambios</span>\n" +"\n" +"Se necesita descargar los cambios del servidor central" + +#: ../data/update-manager.glade.h:9 +msgid "Cancel downloading the changelog" +msgstr "Cancelar la descarga del informe de cambios" + +#: ../data/update-manager.glade.h:10 +msgid "Changes" +msgstr "Cambios" + +#: ../data/update-manager.glade.h:11 +msgid "Description" +msgstr "Descripción" + +#: ../data/update-manager.glade.h:12 +msgid "Reload" +msgstr "Recargar" + +#: ../data/update-manager.glade.h:13 +msgid "Reload the package information from the server." +msgstr "Recargar la información del paquete desde el servidor." + +#: ../data/update-manager.glade.h:14 +msgid "Software Updates" +msgstr "Actualizaciones de software" + +#: ../data/update-manager.glade.h:15 +msgid "_Install" +msgstr "_Instalar" + +#: ../src/aptsources.py.in:234 ../src/aptsources.py.in:282 +#: ../src/aptsources.py.in:328 +msgid "Officially supported" +msgstr "Soportado oficialmente" + +#: ../src/aptsources.py.in:235 ../src/aptsources.py.in:283 +msgid "Restricted copyright" +msgstr "Copyright restringido" + +#: ../src/aptsources.py.in:236 ../src/aptsources.py.in:284 +msgid "Community maintained (Universe)" +msgstr "Mantenido por la comunidad (Universe)" + +#: ../src/aptsources.py.in:237 ../src/aptsources.py.in:285 +msgid "Non-free (Multiverse)" +msgstr "Software no libre (Multiverse)" + +#: ../src/aptsources.py.in:248 ../src/aptsources.py.in:306 +#: ../src/aptsources.py.in:318 +msgid "Ubuntu 5.04 Security Updates" +msgstr "Actualizaciones de seguridad de Ubuntu 5.04" + +#: ../src/aptsources.py.in:253 ../src/aptsources.py.in:310 +msgid "Ubuntu 5.04 Updates" +msgstr "Actualizaciones de Ubuntu 5.04" + +#: ../src/aptsources.py.in:276 +msgid "Binary" +msgstr "Binario" + +#: ../src/aptsources.py.in:277 +msgid "Source" +msgstr "Fuente" + +#: ../src/aptsources.py.in:289 ../src/aptsources.py.in:293 +msgid "CD" +msgstr "CD" + +#: ../src/aptsources.py.in:314 ../src/aptsources.py.in:322 +msgid "Ubuntu 4.10 Security Updates" +msgstr "Ubuntu 4.10 Actualizaciones de seguridad" + +#: ../src/aptsources.py.in:329 +msgid "Contributed software" +msgstr "Software contribuido" + +#: ../src/aptsources.py.in:330 +msgid "Non-free software" +msgstr "Software no libre" + +#: ../src/aptsources.py.in:331 +msgid "US export restricted software" +msgstr "Software con restricciones de exportación estadounidenses" + +#: ../src/aptsources.py.in:346 +msgid "Debian Stable Security Updates" +msgstr "Actualizaciones de seguridad de Debian estable" + +#. some known keys +#: ../src/dialog_apt_key.py.in:37 +msgid "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" +msgstr "" +"Clave de firmado automático del archivo de Ubuntu <ftpmaster@ubuntu.com>" + +#: ../src/dialog_apt_key.py.in:38 +msgid "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" +msgstr "" +"Clave de firmado automático de las imágenes de CD de Ubuntu <cdimage@ubuntu." +"com>" + +#: ../src/dialog_apt_key.py.in:122 +msgid "Choose a key-file" +msgstr "Elija un fichero de clave" + +#: ../src/dialog_apt_key.py.in:132 +msgid "Error importing selected file" +msgstr "Hubo un error al importar el fichero seleccionado" + +#: ../src/dialog_apt_key.py.in:133 +msgid "The selected file may not be a GPG key file or it might be corrupt." +msgstr "" +"Puede que el fichero seleccionado no sea un fichero de clave GPG o que esté " +"corrupto." + +#: ../src/dialog_apt_key.py.in:145 +msgid "Error removing the key" +msgstr "Hubo un error al quitar la clave" + +#: ../src/dialog_apt_key.py.in:146 +msgid "The key you selected could not be removed. Please report this as a bug." +msgstr "" +"No se puede quitar la clave que ha seleccionado. Por favor, avise de esto " +"como un fallo." + +#: ../src/gnome-software-properties.in:72 +msgid "Repositories changed" +msgstr "Hay cambios en los repositorios" + +#: ../src/gnome-software-properties.in:74 +#, c-format +msgid "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" +msgstr "" +"La información del repositorio ha cambiado. Se guardará una copia de su " +"sources.list en %s.save. \n" +"\n" +"Necesita recargar la lista de paquetes de los servidores para que sus " +"cambios hagan efecto. ¿Quiere hacer esto ahora?" + +#: ../src/update-manager.in:124 +msgid "Your system has broken packages!" +msgstr "¡Su sistema tiene paquetes rotos!" + +#: ../src/update-manager.in:125 +msgid "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." +msgstr "" +"Ésto significa que no se satisfacen algunas dependencias de los paquetes " +"instalados. Utilice la \"Actualización inteligente\" de synaptic o \"apt-get " +"dist-upgrade\" para arreglar la situación." + +#: ../src/update-manager.in:139 +msgid "It is not possible to upgrade all packages." +msgstr "No es posible actualizar todos los paquetes." + +#: ../src/update-manager.in:141 +msgid "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." +msgstr "" +"Ésto significa que además de la actualización de los paquetes será necesaria " +"alguna acción adicional (como instalar o quitar paquetes). Utilice la " +"\"Actualización inteligente\" de synaptic o \"apt-get dist-upgrade\" para " +"arreglar la situación." + +#: ../src/update-manager.in:154 +msgid "The following packages are not upgraded: " +msgstr "Los siguientes paquetes no están actualizados: " + +#: ../src/update-manager.in:232 +msgid "Changes not found, the server may not be updated yet." +msgstr "" +"No se ha encontrado el informe de cambios, puede que el servidor no este " +"actualizado aún." + +#: ../src/update-manager.in:235 +msgid "" +"Failed to download changes. Please check if there is an active internet " +"connection." +msgstr "" +"Hubo un fallo al descargar el informe de cambios. Compruebe si tiene alguna " +"conexión activa." + +#: ../src/update-manager.in:255 +#, c-format +msgid "Version %s: \n" +msgstr "Versión %s: \n" + +#: ../src/update-manager.in:303 +msgid "Downloading changes..." +msgstr "Descargando informe de cambios..." + +#: ../src/update-manager.in:358 +msgid "The updates are being applied." +msgstr "Se están aplicando las actualizaciones." + +#: ../src/update-manager.in:360 +msgid "Upgrade finished" +msgstr "Actualización finalizada" + +#: ../src/update-manager.in:417 +msgid "Another package manager is running" +msgstr "Ya hay otro gestor de paquetes en ejecución" + +#: ../src/update-manager.in:419 +msgid "" +"You can run only one package management application at the same time. Please " +"close this other application first." +msgstr "" +"Solo puede ejecutar una aplicación de gestión de paquetes al mismo tiempo. " +"Cierre la otra aplicación primero." + +#: ../src/update-manager.in:437 +msgid "Updating package list..." +msgstr "Actualizando lista de paquetes..." + +#: ../src/update-manager.in:439 +msgid "Installing updates..." +msgstr "Instalando actualizaciones..." + +#: ../src/update-manager.in:618 ../src/update-manager.in:621 +msgid "Your system is up-to-date!" +msgstr "¡Su sistema está actualizado!" + +#: ../src/update-manager.in:619 +msgid "There are no updates available." +msgstr "No hay actualizaciones disponibles." + +#: ../src/update-manager.in:644 +#, c-format +msgid "New version: %s" +msgstr "Nueva versión: %s" + +#: ../src/update-manager.in:668 +msgid "Your distribution is no longer supported" +msgstr "Su distribución ya no esta soportada" + +#: ../src/update-manager.in:668 +msgid "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." +msgstr "" +"Actualícese a una nueva versión de Ubuntu Linux. La versión que está usando " +"no obtendrá más actualizaciones de seguridad ni otras actualizaciones " +"críticas. Visite http://www.ubuntulinux.org para información acerca de cómo " +"actualizar." + +#: ../src/update-manager.in:682 +msgid "There is a new release of Ubuntu available!" +msgstr "Hay una nueva versión de Ubuntu disponible" + +#: ../src/update-manager.in:682 +#, c-format +msgid "" +"A new release with the codename '%s' is available. Please see http://www." +"ubuntulinux.org/ for upgrade instructions." +msgstr "" +"Está disponible una nueva versión con el nombre '%s'. Visite http://www." +"ubuntulinux.org/ para recibir instrucciones acerca de cómo actualizar." + +#: ../src/update-manager.in:685 +msgid "Never show this message again" +msgstr "No mostrar más este mensaje" + +#: ../src/update-manager.in:781 +msgid "Initializing and getting list of updates..." +msgstr "Inicializando y obteniendo lista de actualizaciones..." + +#: ../src/update-manager.in:803 +msgid "You need to be root to run this program" +msgstr "Necesita ser root para ejecutar este programa" + +#, fuzzy +#~ msgid "" +#~ "<big><b>Available Updates</b></big>\n" +#~ "The following packages are found to be upgradable. You can upgrade them " +#~ "by using the Install button." +#~ msgstr "" +#~ "<big><b>Actualizaciones disponibles</b></big>\n" +#~ "\n" +#~ "El gestor de actualizaciones encontró los siguientes paquetes " +#~ "actualizables. Puede actualizarlos usando el botón Instalar." diff --git a/po/fi.po b/po/fi.po new file mode 100644 index 00000000..c82fc2f8 --- /dev/null +++ b/po/fi.po @@ -0,0 +1,530 @@ +# update-manager's Finnish translation. +# Copyright (C) 2005 Timo Jyrinki +# This file is distributed under the same license as the update-manager package. +# Timo Jyrinki <timo.jyrinki@iki.fi>, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: update-manager\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-04 10:47+0200\n" +"PO-Revision-Date: 2005-03-30 08:30+0200\n" +"Last-Translator: Timo Jyrinki <timo.jyrinki@iki.fi>\n" +"Language-Team: Finnish <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../data/gnome-software-properties.desktop.in.h:1 +msgid "Edit software sources and settings" +msgstr "Muokkaa ohjelmalähteitä ja asetuksia" + +#: ../data/gnome-software-properties.desktop.in.h:2 +msgid "Software Properties" +msgstr "Asetukset" + +#: ../data/gnome-software-properties.glade.h:1 +msgid "<b>Comment:</b>" +msgstr "<b>Kommentti:</b>" + +#: ../data/gnome-software-properties.glade.h:2 +msgid "<b>Components</b>" +msgstr "<b>Komponentit</b>" + +#: ../data/gnome-software-properties.glade.h:3 +msgid "<b>Distribution:</b>" +msgstr "<b>Jakelu:</b>" + +#: ../data/gnome-software-properties.glade.h:4 +msgid "<b>Internet Updates</b>" +msgstr "<b>Internet-päivitykset</b>" + +#: ../data/gnome-software-properties.glade.h:5 +msgid "<b>Repository</b>" +msgstr "<b>Varasto</b>" + +#: ../data/gnome-software-properties.glade.h:6 +msgid "<b>Sections:</b>" +msgstr "<b>Osastot:</b>" + +#: ../data/gnome-software-properties.glade.h:7 +msgid "<b>Software Sources</b>" +msgstr "<b>Ohjelmalähteet</b>" + +#: ../data/gnome-software-properties.glade.h:8 +msgid "<b>Temporary files</b>" +msgstr "<b>Väliaikaistiedostot</b>" + +#: ../data/gnome-software-properties.glade.h:9 +msgid "<b>Type:</b>" +msgstr "<b>Tyyppi:</b>" + +#: ../data/gnome-software-properties.glade.h:10 +msgid "<b>URI:</b>" +msgstr "<b>URI:</b>" + +#: ../data/gnome-software-properties.glade.h:11 +msgid "<b>User Interface</b>" +msgstr "<b>Käyttöliittymä</b>" + +#: ../data/gnome-software-properties.glade.h:12 +msgid "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialog. A key makes it " +"possible to check verify the integrity of the software you download." +msgstr "" +"<big><b>Varmennusavaimet</b></big>\n" +"\n" +"Voit lisätä ja poistaa varmennusavaimia tässä valintaikkunassa. Avaimella " +"voidaan tarkistaa lataamiesi ohjelmien eheys." + +#: ../data/gnome-software-properties.glade.h:15 +msgid "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." +msgstr "" +"<big><b>Kirjoita haluamasi varaston koko APT-rivi</b></big>\n" +"\n" +"APT-rivi sisältää varaston tyypin, sijainnin ja sisällön, esimerkiksi <i>" +"\"deb http://ftp.debian.org sarge main\"</i>. Lisätietoja aiheesta löydät " +"dokumentaatiosta." + +#: ../data/gnome-software-properties.glade.h:18 +msgid "APT line:" +msgstr "APT-rivi:" + +#: ../data/gnome-software-properties.glade.h:19 +msgid "A_uthentication" +msgstr "Varmenn_us" + +#: ../data/gnome-software-properties.glade.h:20 +msgid "Add _CD" +msgstr "Lisää _CD" + +#: ../data/gnome-software-properties.glade.h:21 +msgid "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " +msgstr "" +"Lisää uusi avaintiedosto luotettuihin avaimiin. Varmista, että vastaanotit " +"avaimen luotettua kanavaa pitkin ja että luotat avaimen omistajaan. " + +#: ../data/gnome-software-properties.glade.h:22 +msgid "Automatically check for software _updates." +msgstr "Tarkista ohjelma_päivitykset automaattisesti." + +#: ../data/gnome-software-properties.glade.h:23 +msgid "Automatically clean _temporary packages files" +msgstr "Tyhjennä _väliaikaistiedostot automaattisesti" + +#: ../data/gnome-software-properties.glade.h:24 +msgid "" +"Binary\n" +"Source" +msgstr "" +"Binääri\n" +"Lähdekoodi" + +#: ../data/gnome-software-properties.glade.h:26 +msgid "Clean interval in days: " +msgstr "Tyhjennysväli päivissä: " + +#: ../data/gnome-software-properties.glade.h:27 +msgid "Delete _old packages in the package cache" +msgstr "P_oista vanhat paketit pakettivälimuistista" + +#: ../data/gnome-software-properties.glade.h:28 +msgid "Edit Repository..." +msgstr "Muokkaa varastoa..." + +#: ../data/gnome-software-properties.glade.h:29 +msgid "Maximum age in days:" +msgstr "Maksimiaika päivissä:" + +#: ../data/gnome-software-properties.glade.h:30 +msgid "Maximum size in MB:" +msgstr "Maksimikoko megatavuissa:" + +#: ../data/gnome-software-properties.glade.h:31 +msgid "Remove the selected key from the trusted keyring." +msgstr "Poista valittu avain luotetuista avaimista." + +#: ../data/gnome-software-properties.glade.h:32 +msgid "Restore default keys" +msgstr "Palauta oletusavaimet" + +#: ../data/gnome-software-properties.glade.h:33 +msgid "" +"Restore the default keys shiped with the distribution. This will not change " +"user installed keys." +msgstr "" +"Palauta jakelun mukana toimitetut avaimet. Tämä ei tee muutoksia käyttäjän " +"asentamiin avaimiin." + +#: ../data/gnome-software-properties.glade.h:34 +msgid "Set _maximum size for the package cache" +msgstr "Aseta _maksimikoko pakettivälimuistille" + +#: ../data/gnome-software-properties.glade.h:35 +msgid "Settings" +msgstr "Asetukset" + +#: ../data/gnome-software-properties.glade.h:36 +msgid "Show disabled software sources" +msgstr "Näytä poissa käytöstä olevat ohjelmalähteet" + +#: ../data/gnome-software-properties.glade.h:37 +msgid "Software Preferences" +msgstr "Asetukset" + +#: ../data/gnome-software-properties.glade.h:38 +msgid "Update interval in days: " +msgstr "Päivitysten tarkistusväli päivissä: " + +#: ../data/gnome-software-properties.glade.h:39 +msgid "_Add Repository" +msgstr "_Lisää varasto" + +#: ../data/gnome-software-properties.glade.h:40 +msgid "_Custom" +msgstr "_Muu" + +#: ../data/gnome-software-properties.glade.h:41 +msgid "_Download upgradable packages" +msgstr "_Lataa päivitettävät paketit" + +#: ../data/update-manager.desktop.in.h:1 +msgid "Show available updates and choose which to install" +msgstr "Näytä saatavilla olevat päivitykset ja valitse asennettavat" + +#: ../data/update-manager.desktop.in.h:2 +msgid "Ubuntu Update Manager" +msgstr "Ubuntun päivitysten hallinta" + +#: ../data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "Päivitysten hallinta" + +#: ../data/update-manager.glade.h:1 +msgid "<b>Details</b>" +msgstr "<b>Yksityiskohdat</b>" + +#: ../data/update-manager.glade.h:2 +msgid "<b>Packages to install:</b>" +msgstr "<b>Asennettavat paketit:</b>" + +#: ../data/update-manager.glade.h:3 ../src/update-manager.in:629 +msgid "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." +msgstr "" +"<big><b>Saatavilla olevat päivitykset</b></big>\n" +"\n" +"Seuraavat paketit ovat päivitettävissä. Voit päivittää ne napsauttamalla " +"Asenna-painiketta." + +#: ../data/update-manager.glade.h:6 +msgid "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" +msgstr "" +"<span weight=\"bold\" size=\"larger\">Ladataan muutoksia</span>\n" +"\n" +"Muutokset täytyy ladata keskuspalvelimelta" + +#: ../data/update-manager.glade.h:9 +msgid "Cancel downloading the changelog" +msgstr "Keskeytä muutosluettelon lataus" + +#: ../data/update-manager.glade.h:10 +msgid "Changes" +msgstr "Muutokset" + +#: ../data/update-manager.glade.h:11 +msgid "Description" +msgstr "Kuvaus" + +#: ../data/update-manager.glade.h:12 +msgid "Reload" +msgstr "Päivitä" + +#: ../data/update-manager.glade.h:13 +msgid "Reload the package information from the server." +msgstr "Lataa pakettitiedot uudelleen palvelimelta." + +#: ../data/update-manager.glade.h:14 +msgid "Software Updates" +msgstr "Ohjelmapäivitykset" + +#: ../data/update-manager.glade.h:15 +msgid "_Install" +msgstr "_Asenna" + +#: ../src/aptsources.py.in:234 ../src/aptsources.py.in:282 +#: ../src/aptsources.py.in:328 +msgid "Officially supported" +msgstr "Virallisesti tuettu" + +#: ../src/aptsources.py.in:235 ../src/aptsources.py.in:283 +msgid "Restricted copyright" +msgstr "Rajoitettu tekijänoikeus" + +#: ../src/aptsources.py.in:236 ../src/aptsources.py.in:284 +msgid "Community maintained (Universe)" +msgstr "Yhteisön ylläpitämä (Universe)" + +#: ../src/aptsources.py.in:237 ../src/aptsources.py.in:285 +msgid "Non-free (Multiverse)" +msgstr "Ei-vapaat ohjelmat (Multiverse)" + +#: ../src/aptsources.py.in:248 ../src/aptsources.py.in:306 +#: ../src/aptsources.py.in:318 +msgid "Ubuntu 5.04 Security Updates" +msgstr "Ubuntu 5.04 turvallisuuspäivitykset" + +#: ../src/aptsources.py.in:253 ../src/aptsources.py.in:310 +#, fuzzy +msgid "Ubuntu 5.04 Updates" +msgstr "Ubuntu 5.04 turvallisuuspäivitykset" + +#: ../src/aptsources.py.in:276 +msgid "Binary" +msgstr "Binääri" + +#: ../src/aptsources.py.in:277 +msgid "Source" +msgstr "Lähdekoodi" + +#: ../src/aptsources.py.in:289 ../src/aptsources.py.in:293 +msgid "CD" +msgstr "CD" + +#: ../src/aptsources.py.in:314 ../src/aptsources.py.in:322 +msgid "Ubuntu 4.10 Security Updates" +msgstr "Ubuntu 4.10 turvallisuuspäivitykset" + +#: ../src/aptsources.py.in:329 +msgid "Contributed software" +msgstr "Muiden tarjoamat ohjelmat" + +#: ../src/aptsources.py.in:330 +msgid "Non-free software" +msgstr "Ei-vapaat ohjelmat" + +#: ../src/aptsources.py.in:331 +msgid "US export restricted software" +msgstr "USA:sta vientirajoitetut ohjelmat" + +#: ../src/aptsources.py.in:346 +msgid "Debian Stable Security Updates" +msgstr "Debian Stable turvallisuuspäivitykset" + +#. some known keys +#: ../src/dialog_apt_key.py.in:37 +msgid "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" +msgstr "" +"Ubuntu-arkiston automaattinen allekirjoitusavain <ftpmaster@ubuntu.com>" + +#: ../src/dialog_apt_key.py.in:38 +msgid "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" +msgstr "" +"Ubuntun CD-vedosten automaattinen allekirjoitusavain <cdimage@ubuntu.com>" + +#: ../src/dialog_apt_key.py.in:122 +msgid "Choose a key-file" +msgstr "Valitse avaintiedosto" + +#: ../src/dialog_apt_key.py.in:132 +msgid "Error importing selected file" +msgstr "Virhe tuotaessa valittua avainta" + +#: ../src/dialog_apt_key.py.in:133 +msgid "The selected file may not be a GPG key file or it might be corrupt." +msgstr "Valittua tedosto ei ole kelvollinen GPG:n avaintiedosto" + +#: ../src/dialog_apt_key.py.in:145 +msgid "Error removing the key" +msgstr "Virhe poistettaessa avainta" + +#: ../src/dialog_apt_key.py.in:146 +msgid "The key you selected could not be removed. Please report this as a bug." +msgstr "" +"Valitsemaasi avainta ei voitu poistaa. Ole hyvä ja luo tästä virheilmoitus." + +#: ../src/gnome-software-properties.in:72 +msgid "Repositories changed" +msgstr "Varastot muuttuneet" + +#: ../src/gnome-software-properties.in:74 +#, c-format +msgid "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" +msgstr "" +"Varastotiedoissa on muutoksia. Varmuuskopio tiedostosta sources.list on " +"tallennettu nimellä %s.save. \n" +"\n" +"Ohjelmapakettien luettelo täytyy ladata uudelleen palvelimelta, jotta " +"muutoksesi tulevat voimaan. Haluatko tehdä tämän nyt?" + +#: ../src/update-manager.in:124 +msgid "Your system has broken packages!" +msgstr "Järjestelmässä on rikkinäisiä paketteja!" + +#: ../src/update-manager.in:125 +msgid "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." +msgstr "" +"Jotkut asennettujen pakettien riippuvuuksista ovat siis täyttämättä. Käytä " +"\"Synaptic\"- tai \"apt-get\"-ohjelmia korjataksesi ongelman." + +#: ../src/update-manager.in:139 +msgid "It is not possible to upgrade all packages." +msgstr "Kaikkia paketteja ei voida päivittää." + +#: ../src/update-manager.in:141 +msgid "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." +msgstr "" +"Pakettien päivittämisen lisäksi tarvitaan siis joitain muita toimenpiteitä " +"(kuten pakettien asentamista tai poistamista). Käytä Synaptic-ohjelman " +"\"Smart Upgrade\"-toimintoa tai \"apt-get dist-upgrade\"-komentoa " +"korjataksesi ongelman." + +#: ../src/update-manager.in:154 +msgid "The following packages are not upgraded: " +msgstr "" + +#: ../src/update-manager.in:232 +msgid "Changes not found, the server may not be updated yet." +msgstr "Muutoksia ei löytynyt, palvelinta ei ole ehkä vielä päivitetty." + +#: ../src/update-manager.in:235 +msgid "" +"Failed to download changes. Please check if there is an active internet " +"connection." +msgstr "Muutosten lataus epäonnistui. Tarkista, että Internet-yhteys toimii." + +#: ../src/update-manager.in:255 +#, c-format +msgid "Version %s: \n" +msgstr "Versio: %s: \n" + +#: ../src/update-manager.in:303 +msgid "Downloading changes..." +msgstr "Ladataan muutoksia..." + +#: ../src/update-manager.in:358 +msgid "The updates are being applied." +msgstr "Päivityksiä asennetaan." + +#: ../src/update-manager.in:360 +msgid "Upgrade finished" +msgstr "Päivitykset suoritettu" + +#: ../src/update-manager.in:417 +msgid "Another package manager is running" +msgstr "Toinen pakettienhallinta on käynnissä" + +#: ../src/update-manager.in:419 +msgid "" +"You can run only one package management application at the same time. Please " +"close this other application first." +msgstr "" +"Voit hallita paketteja vain yhdellä ohjelmalla kerrallaan. Sulje toinen " +"ohjelma ensin." + +#: ../src/update-manager.in:437 +msgid "Updating package list..." +msgstr "" + +#: ../src/update-manager.in:439 +msgid "Installing updates..." +msgstr "" + +#: ../src/update-manager.in:618 ../src/update-manager.in:621 +msgid "Your system is up-to-date!" +msgstr "Järjestelmäsi on ajan tasalla!" + +#: ../src/update-manager.in:619 +msgid "There are no updates available." +msgstr "Päivityksiä ei saatavilla." + +#: ../src/update-manager.in:644 +#, c-format +msgid "New version: %s" +msgstr "Uusi versio: %s" + +#: ../src/update-manager.in:668 +msgid "Your distribution is no longer supported" +msgstr "Jakeluasi ei enää tueta" + +#: ../src/update-manager.in:668 +msgid "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." +msgstr "" +"Päivitä uudempaan versioon Ubuntu Linuxista. Käyttämällesi versiolle ei enää " +"ole tulossa turvallisuuspäivityksiä tai muita kriittisiä päivityksiä. " +"Tietoja päivittämisestä löydät sivulta http://www.ubuntulinux.org." + +#: ../src/update-manager.in:682 +msgid "There is a new release of Ubuntu available!" +msgstr "Ubuntusta on uusi julkaisu saatavilla!" + +#: ../src/update-manager.in:682 +#, c-format +msgid "" +"A new release with the codename '%s' is available. Please see http://www." +"ubuntulinux.org/ for upgrade instructions." +msgstr "" +"Uusi julkaisu nimeltään '%s' on saatavilla. Päivitysohjeet löydät " +"osoitteesta http://www.ubuntulinux.org/." + +#: ../src/update-manager.in:685 +msgid "Never show this message again" +msgstr "Älä näytä tätä viestiä uudestaan" + +#: ../src/update-manager.in:781 +msgid "Initializing and getting list of updates..." +msgstr "Alustetaan ja ladataan luetteloa päivityksistä..." + +#: ../src/update-manager.in:803 +msgid "You need to be root to run this program" +msgstr "Sinun täytyy olla pääkäyttäjä ajaaksesi tämän ohjelman" + +#, fuzzy +#~ msgid "" +#~ "<big><b>Available Updates</b></big>\n" +#~ "The following packages are found to be upgradable. You can upgrade them " +#~ "by using the Install button." +#~ msgstr "" +#~ "<big><b>Saatavilla olevat päivitykset</b></big>\n" +#~ "\n" +#~ "Seuraavat paketit ovat päivitettävissä. Voit päivittää ne napsauttamalla " +#~ "Asenna-painiketta." + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid " " +#~ msgstr " " + +#~ msgid "Non-free" +#~ msgstr "Ei-vapaa" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 00000000..a892c543 --- /dev/null +++ b/po/fr.po @@ -0,0 +1,516 @@ +# french translation of update-manager. +# Copyright (C) 2005 THE update-manager'S COPYRIGHT HOLDER +# This file is distributed under the same license as the update-manager package. +# Jean Privat <privat@lirmm.fr>, 2005. +# Vincent Carriere <carriere_vincent@yahoo.fr>, 2005 +# +msgid "" +msgstr "" +"Project-Id-Version: update-manager 0.37.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-04 10:47+0200\n" +"PO-Revision-Date: 2005-04-04 19:43+0200\n" +"Last-Translator: \n" +"Language-Team: French <gnomefr@traduc.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../data/gnome-software-properties.desktop.in.h:1 +msgid "Edit software sources and settings" +msgstr "Éditer les sources et paramètres du logiciel" + +#: ../data/gnome-software-properties.desktop.in.h:2 +msgid "Software Properties" +msgstr "Préférences du logiciel" + +#: ../data/gnome-software-properties.glade.h:1 +msgid "<b>Comment:</b>" +msgstr "<b>Commentaire :</b>" + +#: ../data/gnome-software-properties.glade.h:2 +msgid "<b>Components</b>" +msgstr "<b>Composants</b>" + +#: ../data/gnome-software-properties.glade.h:3 +msgid "<b>Distribution:</b>" +msgstr "<b>Distribution :</b>" + +#: ../data/gnome-software-properties.glade.h:4 +msgid "<b>Internet Updates</b>" +msgstr "<b>Mise à jour par Internet</b>" + +#: ../data/gnome-software-properties.glade.h:5 +msgid "<b>Repository</b>" +msgstr "<b>Dépôt</b>" + +#: ../data/gnome-software-properties.glade.h:6 +msgid "<b>Sections:</b>" +msgstr "<b>Sections :</b>" + +#: ../data/gnome-software-properties.glade.h:7 +msgid "<b>Software Sources</b>" +msgstr "<b>Sources des logiciels</b>" + +#: ../data/gnome-software-properties.glade.h:8 +msgid "<b>Temporary files</b>" +msgstr "<b>Fichiers temporaires</b>" + +#: ../data/gnome-software-properties.glade.h:9 +msgid "<b>Type:</b>" +msgstr "<b>Type :</b>" + +#: ../data/gnome-software-properties.glade.h:10 +msgid "<b>URI:</b>" +msgstr "<b>URI :</b>" + +#: ../data/gnome-software-properties.glade.h:11 +msgid "<b>User Interface</b>" +msgstr "<b>Interface utilisateur</b>" + +#: ../data/gnome-software-properties.glade.h:12 +msgid "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialog. A key makes it " +"possible to check verify the integrity of the software you download." +msgstr "" +"<big><b>Clés d'authentification</b></big>\n" +"\n" +"Vous pouvez ajouter ou enlever des clés d'authentification grâce à cette boîte de dialogue. Une clé rend possible la vérification de l'intégrité des logiciels que vous téléchargez." + +#: ../data/gnome-software-properties.glade.h:15 +msgid "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." +msgstr "" +"<big><b>Saisissez la ligne APT complète du dépôt que vous souhaitez ajouter</" +"b></big>\n" +"\n" +"La ligne APT contient le type, la source et le contenu d'un dépôt, par " +"exemple « deb http://ftp.debian.org sarge main ». Vous pouvez trouver une " +"description détaillée de la syntaxe dans la documentation." + +#: ../data/gnome-software-properties.glade.h:18 +msgid "APT line:" +msgstr "Ligne APT :" + +#: ../data/gnome-software-properties.glade.h:19 +msgid "A_uthentication" +msgstr "A_uthentification" + +#: ../data/gnome-software-properties.glade.h:20 +msgid "Add _CD" +msgstr "Ajouter un _cédérom" + +#: ../data/gnome-software-properties.glade.h:21 +msgid "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " +msgstr "" +"Ajouter une nouvelle clé au trousseau digne de confiance. Veuillez vérifier " +"que vous avez obtenu la clé à travers un canal sécurisé et que vous faites " +"confiance à son possesseur." + +#: ../data/gnome-software-properties.glade.h:22 +msgid "Automatically check for software _updates." +msgstr "Vérifier automatiquement les mises à jo_ur des logiciels." + +#: ../data/gnome-software-properties.glade.h:23 +msgid "Automatically clean _temporary packages files" +msgstr "Nettoyer automatiquement les fichiers _temporaires des paquets" + +#: ../data/gnome-software-properties.glade.h:24 +msgid "" +"Binary\n" +"Source" +msgstr "" +"Binaire\n" +"Source" + +#: ../data/gnome-software-properties.glade.h:26 +msgid "Clean interval in days: " +msgstr "Nombre de jours avant nettoyage : " + +#: ../data/gnome-software-properties.glade.h:27 +msgid "Delete _old packages in the package cache" +msgstr "Supprimer les _anciens paquets du cache des paquets" + +#: ../data/gnome-software-properties.glade.h:28 +msgid "Edit Repository..." +msgstr "Éditer le dépôt..." + +#: ../data/gnome-software-properties.glade.h:29 +msgid "Maximum age in days:" +msgstr "Âge maximal en jours :" + +#: ../data/gnome-software-properties.glade.h:30 +msgid "Maximum size in MB:" +msgstr "Taille maximale en Mo :" + +#: ../data/gnome-software-properties.glade.h:31 +msgid "Remove the selected key from the trusted keyring." +msgstr "Supprimer la clé sélectionnée du trousseau digne de confiance." + +#: ../data/gnome-software-properties.glade.h:32 +msgid "Restore default keys" +msgstr "Restaurer les clés par défaut" + +#: ../data/gnome-software-properties.glade.h:33 +msgid "" +"Restore the default keys shiped with the distribution. This will not change " +"user installed keys." +msgstr "" +"Restaurer les clés par défaut fournies avec la distribution. Les clés " +"installées par l'utilisateur ne seront pas modifiées." + +#: ../data/gnome-software-properties.glade.h:34 +msgid "Set _maximum size for the package cache" +msgstr "Définir une taille _maximale pour le cache de paquets" + +#: ../data/gnome-software-properties.glade.h:35 +msgid "Settings" +msgstr "Paramètres" + +#: ../data/gnome-software-properties.glade.h:36 +msgid "Show disabled software sources" +msgstr "Afficher les sources des logiciels désactivées" + +#: ../data/gnome-software-properties.glade.h:37 +msgid "Software Preferences" +msgstr "Préférences du logiciel" + +#: ../data/gnome-software-properties.glade.h:38 +msgid "Update interval in days: " +msgstr "Nombre de jours avant mise à jour : " + +#: ../data/gnome-software-properties.glade.h:39 +msgid "_Add Repository" +msgstr "_Ajouter un dépôt" + +#: ../data/gnome-software-properties.glade.h:40 +msgid "_Custom" +msgstr "_Personnalisé" + +#: ../data/gnome-software-properties.glade.h:41 +msgid "_Download upgradable packages" +msgstr "_Télécharger les paquets pouvant être mis à jour" + +#: ../data/update-manager.desktop.in.h:1 +msgid "Show available updates and choose which to install" +msgstr "Montre les mises à jours disponibles et choisir celles à installer" + +#: ../data/update-manager.desktop.in.h:2 +msgid "Ubuntu Update Manager" +msgstr "Gestionnaire de mises à jour d'Ubuntu" + +#: ../data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "Gestionnaire de mises à jour" + +#: ../data/update-manager.glade.h:1 +msgid "<b>Details</b>" +msgstr "<b>Détails</b>" + +#: ../data/update-manager.glade.h:2 +msgid "<b>Packages to install:</b>" +msgstr "<b>Paquets à installer :</b>" + +#: ../data/update-manager.glade.h:3 ../src/update-manager.in:629 +msgid "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." +msgstr "" +"<big><b>Mises à jour disponibles</b></big>\n" +"\n" +"Les paquets suivant peuvent être mis à jour. Vous pouvez les mettre à jour " +"en utilisant le bouton Installer." + +#: ../data/update-manager.glade.h:6 +msgid "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" +msgstr "" +"<span weight=\"bold\" size=\"larger\">Téléchargement des changements</span>\n" +"\n" +"Il est nécessaire de récupérer les changement du serveur central" + +#: ../data/update-manager.glade.h:9 +msgid "Cancel downloading the changelog" +msgstr "Annuler le téléchargement du changelog" + +#: ../data/update-manager.glade.h:10 +msgid "Changes" +msgstr "Changements" + +#: ../data/update-manager.glade.h:11 +msgid "Description" +msgstr "Description" + +#: ../data/update-manager.glade.h:12 +msgid "Reload" +msgstr "Recharger" + +#: ../data/update-manager.glade.h:13 +msgid "Reload the package information from the server." +msgstr "Recharger les informations des paquets depuis le serveur" + +#: ../data/update-manager.glade.h:14 +msgid "Software Updates" +msgstr "Mises à jour des logiciels" + +#: ../data/update-manager.glade.h:15 +msgid "_Install" +msgstr "_Installer" + +#: ../src/aptsources.py.in:234 ../src/aptsources.py.in:282 +#: ../src/aptsources.py.in:328 +msgid "Officially supported" +msgstr "Supportés officiellement" + +#: ../src/aptsources.py.in:235 ../src/aptsources.py.in:283 +msgid "Restricted copyright" +msgstr "Copyright restreint" + +#: ../src/aptsources.py.in:236 ../src/aptsources.py.in:284 +msgid "Community maintained (Universe)" +msgstr "Maintenu par la communauté (Universe)" + +#: ../src/aptsources.py.in:237 ../src/aptsources.py.in:285 +msgid "Non-free (Multiverse)" +msgstr "Non-libre (Multiverse)" + +#: ../src/aptsources.py.in:248 ../src/aptsources.py.in:306 +#: ../src/aptsources.py.in:318 +msgid "Ubuntu 5.04 Security Updates" +msgstr "Ubuntu 5.04 Mises à jour de sécurité" + +#: ../src/aptsources.py.in:253 ../src/aptsources.py.in:310 +msgid "Ubuntu 5.04 Updates" +msgstr "Mises à jour d'Ubuntu 5.04" + +#: ../src/aptsources.py.in:276 +msgid "Binary" +msgstr "Binaire" + +#: ../src/aptsources.py.in:277 +msgid "Source" +msgstr "Source" + +#: ../src/aptsources.py.in:289 ../src/aptsources.py.in:293 +msgid "CD" +msgstr "CD" + +#: ../src/aptsources.py.in:314 ../src/aptsources.py.in:322 +msgid "Ubuntu 4.10 Security Updates" +msgstr "Ubuntu 4.10 Mises à jour de sécurité" + +#: ../src/aptsources.py.in:329 +msgid "Contributed software" +msgstr "Logiciel contribué" + +#: ../src/aptsources.py.in:330 +msgid "Non-free software" +msgstr "Logiciel non-libre" + +#: ../src/aptsources.py.in:331 +msgid "US export restricted software" +msgstr "Logiciel restreint à l'export (USA)" + +#: ../src/aptsources.py.in:346 +msgid "Debian Stable Security Updates" +msgstr "Debian Stable Mises à jour de sécurité" + +#. some known keys +#: ../src/dialog_apt_key.py.in:37 +msgid "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" +msgstr "Clé de signature automatique de l'archive Ubuntu <ftpmaster@ubuntu.com>" + +#: ../src/dialog_apt_key.py.in:38 +msgid "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" +msgstr "Clé de signature automatique des cédéroms Ubuntu <cdimage@ubuntu.com>" + +#: ../src/dialog_apt_key.py.in:122 +msgid "Choose a key-file" +msgstr "Choisir un fichier de clé" + +#: ../src/dialog_apt_key.py.in:132 +msgid "Error importing selected file" +msgstr "Erreur lors du chargement du fichier sélectionné" + +#: ../src/dialog_apt_key.py.in:133 +msgid "The selected file may not be a GPG key file or it might be corrupt." +msgstr "Le fichier sélectionné n'est peut-être pas un clé GPG ou alors il est corrompu." + +#: ../src/dialog_apt_key.py.in:145 +msgid "Error removing the key" +msgstr "Erreur lors de la suppression de la clé" + +#: ../src/dialog_apt_key.py.in:146 +msgid "The key you selected could not be removed. Please report this as a bug." +msgstr "La clé que vous avez sélectionné ne peut être supprimé. Veuillez envoyer ceci comme étant un bug." + +#: ../src/gnome-software-properties.in:72 +msgid "Repositories changed" +msgstr "Les dépôts ont été modifiés" + +#: ../src/gnome-software-properties.in:74 +#, c-format +msgid "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" +msgstr "" +"Les informations des dépôts ont changés. Une sauvegarde de votre sources." +"list à été copiée à %s.save. \n" +" \n" +"Vous devez recharger la liste des paquets depuis les serveurs pour que vos " +"changements soient effectifs. Voulez-vous le faire maintenant ?" + +#: ../src/update-manager.in:124 +msgid "Your system has broken packages!" +msgstr "Votre système a des paquets cassés !" + +#: ../src/update-manager.in:125 +msgid "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." +msgstr "Ceci signifie que certaines dépendances des paquets installés ne sont pas satisfaites. Veuillez utilisez « Synaptic » ou « apt-get » pour régler la situation." + +#: ../src/update-manager.in:139 +msgid "It is not possible to upgrade all packages." +msgstr "Il n'est pas possible de mettre à jour tous les paquets." + +#: ../src/update-manager.in:141 +msgid "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." +msgstr "Cela signifie que d'autres actions (comme l'installation ou la suppression de paquets) seront requises après la mise à jour. Veuillez utiliser Synaptic « Mise à jour intelligente » ou « apt-get dist-upgrade » pour régler la situation. " + +#: ../src/update-manager.in:154 +msgid "The following packages are not upgraded: " +msgstr "Les paquets suivants ne seront pas mis à jour :" + +#: ../src/update-manager.in:232 +msgid "Changes not found, the server may not be updated yet." +msgstr "" +"Changements non trouvés, le serveur n'a peut-être pas encore été mis à jour." + +#: ../src/update-manager.in:235 +msgid "" +"Failed to download changes. Please check if there is an active internet " +"connection." +msgstr "" +"Échec du téléchargement des changements. Veuillez vérifier que votre " +"connexion internet est activée." + +#: ../src/update-manager.in:255 +#, c-format +msgid "Version %s: \n" +msgstr "Version %s : \n" + +#: ../src/update-manager.in:303 +msgid "Downloading changes..." +msgstr "Téléchargement des changements..." + +#: ../src/update-manager.in:358 +msgid "The updates are being applied." +msgstr "Les mises à jour ont été appliquées." + +#: ../src/update-manager.in:360 +msgid "Upgrade finished" +msgstr "Mise à jour terminée" + +#: ../src/update-manager.in:417 +msgid "Another package manager is running" +msgstr "Un autre gestionnaire de paquets est en fonctionnement" + +#: ../src/update-manager.in:419 +msgid "" +"You can run only one package management application at the same time. Please " +"close this other application first." +msgstr "" +"Vous ne pouvez exécuter qu'un seul gestionnaire de paquets à la fois. " +"Veuillez tout d'abord fermer cette autre application." + +#: ../src/update-manager.in:437 +msgid "Updating package list..." +msgstr "Mise à jour de la liste des paquets..." + +#: ../src/update-manager.in:439 +msgid "Installing updates..." +msgstr "Installation des mises à jour..." + +#: ../src/update-manager.in:618 ../src/update-manager.in:621 +msgid "Your system is up-to-date!" +msgstr "Votre système est à jour !" + +#: ../src/update-manager.in:619 +msgid "There are no updates available." +msgstr "Aucune mise à jour n'est disponible." + +#: ../src/update-manager.in:644 +#, c-format +msgid "New version: %s" +msgstr "Nouvelle version : %s" + +#: ../src/update-manager.in:668 +msgid "Your distribution is no longer supported" +msgstr "Votre distribution n'est plus supportée" + +#: ../src/update-manager.in:668 +msgid "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." +msgstr "Veuillez mettre à jour vers une version plus récente d'Ubuntu Linux. La version que vous êtes entrain d'utiliser ne recevra pas d'autres correctifs de sécurité ou mises à jour critiques. Veuillez voir http://www.ubuntulinux.org pour les informations de mise à jour." + +#: ../src/update-manager.in:682 +msgid "There is a new release of Ubuntu available!" +msgstr "Il y a une nouvelle version d'Ubuntu disponible !" + +#: ../src/update-manager.in:682 +#, c-format +msgid "" +"A new release with the codename '%s' is available. Please see http://www." +"ubuntulinux.org/ for upgrade instructions." +msgstr "Une nouvelle version avec le nom de code « %s » est disponible. Veuillez voir http://www.ubuntulinux.org pour les informations de mise à jour." + +#: ../src/update-manager.in:685 +msgid "Never show this message again" +msgstr "Ne plus afficher ce message à nouveau" + +#: ../src/update-manager.in:781 +msgid "Initializing and getting list of updates..." +msgstr "Initialisation et récupération de la liste des mises à jour..." + +#: ../src/update-manager.in:803 +msgid "You need to be root to run this program" +msgstr "Vous devez être superutilisateur pour lancer ce programme." + +#, fuzzy +#~ msgid "" +#~ "<big><b>Available Updates</b></big>\n" +#~ "The following packages are found to be upgradable. You can upgrade them " +#~ "by using the Install button." +#~ msgstr "" +#~ "<big><b>Mises à jour disponibles</b></big>\n" +#~ "\n" +#~ "Les paquets suivant peuvent être mis à jour. Vous pouvez les mettre à " +#~ "jour en utilisant le bouton Installer." + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid " " +#~ msgstr " " diff --git a/po/hu.po b/po/hu.po new file mode 100644 index 00000000..6ba53995 --- /dev/null +++ b/po/hu.po @@ -0,0 +1,526 @@ +# Hungarian translation of update-manager +# This file is distributed under the same license as the update-manager package. +# Copyright (C) 2005, Free Software Foundation, Inc. +# Gabor Kelemen <kelemeng@gnome.hu>, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: update-manager.HEAD\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-04 10:47+0200\n" +"PO-Revision-Date: 2005-04-03 12:32+0200\n" +"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n" +"Language-Team: Hungarian <gnome@gnome.hu>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.3.1\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ../data/gnome-software-properties.desktop.in.h:1 +msgid "Edit software sources and settings" +msgstr "Szoftverforrások és beállítások szerkesztése" + +#: ../data/gnome-software-properties.desktop.in.h:2 +msgid "Software Properties" +msgstr "Szoftver tulajdonságai" + +#: ../data/gnome-software-properties.glade.h:1 +msgid "<b>Comment:</b>" +msgstr "<b>Megjegyzés:</b>" + +#: ../data/gnome-software-properties.glade.h:2 +msgid "<b>Components</b>" +msgstr "<b>Összetevők</b>" + +#: ../data/gnome-software-properties.glade.h:3 +msgid "<b>Distribution:</b>" +msgstr "<b>Disztribúció:</b>" + +#: ../data/gnome-software-properties.glade.h:4 +msgid "<b>Internet Updates</b>" +msgstr "<b>Internetes frissítések</b>" + +#: ../data/gnome-software-properties.glade.h:5 +msgid "<b>Repository</b>" +msgstr "<b>Tároló</b>" + +#: ../data/gnome-software-properties.glade.h:6 +msgid "<b>Sections:</b>" +msgstr "<b>Csoportok:</b>" + +#: ../data/gnome-software-properties.glade.h:7 +msgid "<b>Software Sources</b>" +msgstr "<b>Szoftverforrások</b>" + +#: ../data/gnome-software-properties.glade.h:8 +msgid "<b>Temporary files</b>" +msgstr "<b>Átmeneti fájlok</b>" + +#: ../data/gnome-software-properties.glade.h:9 +msgid "<b>Type:</b>" +msgstr "<b>Típus:</b>" + +#: ../data/gnome-software-properties.glade.h:10 +msgid "<b>URI:</b>" +msgstr "<b>URI:</b>" + +#: ../data/gnome-software-properties.glade.h:11 +msgid "<b>User Interface</b>" +msgstr "<b>Felhasználói felület</b>" + +#: ../data/gnome-software-properties.glade.h:12 +msgid "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialog. A key makes it " +"possible to check verify the integrity of the software you download." +msgstr "" +"<big><b>Hitelesítési kulcsok</b></big>\n" +"\n" +"Ebben a párbeszédablakban adhat hozzá és távolíthat el hitelesítési " +"kulcsokat.A kulcsok lehetővé teszik az Ön által letöltött szoftverek " +"épségének ellenőrzését." + +#: ../data/gnome-software-properties.glade.h:15 +msgid "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." +msgstr "" +"<big><b>Adja meg a felvenni kívánt tároló teljes APT sorát</b></big>\n" +"\n" +"Az APT sor tartalmazza a tároló típusát, helyét és tartalmát, például <i>" +"\"deb http://ftp.debian.org sarge main\"</i>. A szintakszis részletes " +"leírását a dokumentációban találhatja meg." + +#: ../data/gnome-software-properties.glade.h:18 +msgid "APT line:" +msgstr "APT sor:" + +#: ../data/gnome-software-properties.glade.h:19 +msgid "A_uthentication" +msgstr "_Hitelesítés" + +#: ../data/gnome-software-properties.glade.h:20 +msgid "Add _CD" +msgstr "_CD hozzáadása" + +#: ../data/gnome-software-properties.glade.h:21 +msgid "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " +msgstr "" +"Új kulcsfájl hozzáadása a megbízható kulcstartóhoz. Győződjön meg, hogy a " +"kulcsot biztonságos csatornán keresztül kapta és megbízik a tulajdonosban. " + +#: ../data/gnome-software-properties.glade.h:22 +msgid "Automatically check for software _updates." +msgstr "Szoftverfrissítések a_utomatikus keresése." + +#: ../data/gnome-software-properties.glade.h:23 +msgid "Automatically clean _temporary packages files" +msgstr "Átmeneti csomagfájlok automatikus _törlése" + +#: ../data/gnome-software-properties.glade.h:24 +msgid "" +"Binary\n" +"Source" +msgstr "" +"Bináris\n" +"Forrás" + +#: ../data/gnome-software-properties.glade.h:26 +msgid "Clean interval in days: " +msgstr "Törlés ennyi naponként: " + +#: ../data/gnome-software-properties.glade.h:27 +msgid "Delete _old packages in the package cache" +msgstr "A csomaggyorsítótárban lévő _régi fájlok törlése" + +#: ../data/gnome-software-properties.glade.h:28 +msgid "Edit Repository..." +msgstr "Tároló szerkesztése..." + +#: ../data/gnome-software-properties.glade.h:29 +msgid "Maximum age in days:" +msgstr "Legmagasabb kor napokban:" + +#: ../data/gnome-software-properties.glade.h:30 +msgid "Maximum size in MB:" +msgstr "Legnagyobb méret Mb-ban:" + +#: ../data/gnome-software-properties.glade.h:31 +msgid "Remove the selected key from the trusted keyring." +msgstr "A kijelölt kulcs eltávolítása a megbízható kulcstartóról." + +#: ../data/gnome-software-properties.glade.h:32 +msgid "Restore default keys" +msgstr "Alapértelmezett kulcsok visszaállítása" + +#: ../data/gnome-software-properties.glade.h:33 +msgid "" +"Restore the default keys shiped with the distribution. This will not change " +"user installed keys." +msgstr "" +"A disztribúcióval szállított alapértelmezett kulcsok visszaállítása. Ez nem " +"változtatja meg a felhasználó által telepített kulcsokat." + +#: ../data/gnome-software-properties.glade.h:34 +msgid "Set _maximum size for the package cache" +msgstr "A csomaggyorsítótár legnagyobb _méretének beállítása" + +#: ../data/gnome-software-properties.glade.h:35 +msgid "Settings" +msgstr "Beállítások" + +#: ../data/gnome-software-properties.glade.h:36 +msgid "Show disabled software sources" +msgstr "Kikapcsolt szoftverforrások mutatása" + +#: ../data/gnome-software-properties.glade.h:37 +msgid "Software Preferences" +msgstr "Szoftver beállításai" + +#: ../data/gnome-software-properties.glade.h:38 +msgid "Update interval in days: " +msgstr "Frissítési időköz napokban: " + +#: ../data/gnome-software-properties.glade.h:39 +msgid "_Add Repository" +msgstr "_Tároló hozzáadása" + +#: ../data/gnome-software-properties.glade.h:40 +msgid "_Custom" +msgstr "_Egyéni" + +#: ../data/gnome-software-properties.glade.h:41 +msgid "_Download upgradable packages" +msgstr "Frissíthető csomagok letöltése" + +#: ../data/update-manager.desktop.in.h:1 +msgid "Show available updates and choose which to install" +msgstr "Rendelkezésre álló frissítések mutatása és telepítése" + +#: ../data/update-manager.desktop.in.h:2 +msgid "Ubuntu Update Manager" +msgstr "Ubuntu frissítéskezelő" + +#: ../data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "Frissítéskezelő" + +#: ../data/update-manager.glade.h:1 +msgid "<b>Details</b>" +msgstr "<b>Részletek</b>" + +#: ../data/update-manager.glade.h:2 +msgid "<b>Packages to install:</b>" +msgstr "<b>Telepítendő csomagok:</b>" + +#: ../data/update-manager.glade.h:3 ../src/update-manager.in:629 +msgid "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." +msgstr "" +"<big><b>Elérhető frissítések</b></big>\n" +"\n" +"A következő csomagok frissíthetőek. A Telepítés gomb segítségével " +"frissítheti őket." + +#: ../data/update-manager.glade.h:6 +msgid "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" +msgstr "" +"<span weight=\"bold\" size=\"larger\">Módosítások letöltése</span>\n" +"\n" +"A módosításokat le kell tölteni a központi kiszolgálóról " + +#: ../data/update-manager.glade.h:9 +msgid "Cancel downloading the changelog" +msgstr "A módosítások listájának letöltésének megszakítása" + +#: ../data/update-manager.glade.h:10 +msgid "Changes" +msgstr "Módosítások" + +#: ../data/update-manager.glade.h:11 +msgid "Description" +msgstr "Leírás" + +#: ../data/update-manager.glade.h:12 +msgid "Reload" +msgstr "Újratöltés" + +#: ../data/update-manager.glade.h:13 +msgid "Reload the package information from the server." +msgstr "A csomaginformációk ismételt letöltése a kiszolgálóról." + +#: ../data/update-manager.glade.h:14 +msgid "Software Updates" +msgstr "Szoftverfrissítések" + +#: ../data/update-manager.glade.h:15 +msgid "_Install" +msgstr "_Telepítés" + +#: ../src/aptsources.py.in:234 ../src/aptsources.py.in:282 +#: ../src/aptsources.py.in:328 +msgid "Officially supported" +msgstr "Hivatalosan támogatott" + +#: ../src/aptsources.py.in:235 ../src/aptsources.py.in:283 +msgid "Restricted copyright" +msgstr "Szerzői jogi korlátozás alatt" + +#: ../src/aptsources.py.in:236 ../src/aptsources.py.in:284 +msgid "Community maintained (Universe)" +msgstr "Közösségi karbantartású (Universe)" + +#: ../src/aptsources.py.in:237 ../src/aptsources.py.in:285 +msgid "Non-free (Multiverse)" +msgstr "Nem-szabad (Multiverse)" + +#: ../src/aptsources.py.in:248 ../src/aptsources.py.in:306 +#: ../src/aptsources.py.in:318 +msgid "Ubuntu 5.04 Security Updates" +msgstr "Ubuntu 5.04 biztonsági frissítések" + +#: ../src/aptsources.py.in:253 ../src/aptsources.py.in:310 +#, fuzzy +msgid "Ubuntu 5.04 Updates" +msgstr "Ubuntu 5.04 biztonsági frissítések" + +#: ../src/aptsources.py.in:276 +msgid "Binary" +msgstr "Bináris" + +#: ../src/aptsources.py.in:277 +msgid "Source" +msgstr "Forrás" + +#: ../src/aptsources.py.in:289 ../src/aptsources.py.in:293 +msgid "CD" +msgstr "CD" + +#: ../src/aptsources.py.in:314 ../src/aptsources.py.in:322 +msgid "Ubuntu 4.10 Security Updates" +msgstr "Ubuntu 4.10 biztonsági frissítések" + +#: ../src/aptsources.py.in:329 +msgid "Contributed software" +msgstr "Nem-szabad szoftvertől függ" + +#: ../src/aptsources.py.in:330 +msgid "Non-free software" +msgstr "Nem szabad szoftver" + +#: ../src/aptsources.py.in:331 +msgid "US export restricted software" +msgstr "Egyesült Államok exportkorlátozása alá eső szoftver" + +#: ../src/aptsources.py.in:346 +msgid "Debian Stable Security Updates" +msgstr "Stabil Debian biztonsági frissítések" + +#. some known keys +#: ../src/dialog_apt_key.py.in:37 +msgid "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" +msgstr "Ubuntu archívum automatikus aláírókulcs <ftpmaster@ubuntu.com>" + +#: ../src/dialog_apt_key.py.in:38 +msgid "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" +msgstr "Ubuntu CD-kép automatikus aláírókulcs <cdimage@ubuntu.com>" + +#: ../src/dialog_apt_key.py.in:122 +msgid "Choose a key-file" +msgstr "Válasszon egy kulcsfájlt" + +#: ../src/dialog_apt_key.py.in:132 +msgid "Error importing selected file" +msgstr "Hiba a kiválasztott fájl importálása közben" + +#: ../src/dialog_apt_key.py.in:133 +msgid "The selected file may not be a GPG key file or it might be corrupt." +msgstr "A kiválasztott fájl vagy nem GPG kulcsfájl, vagy sérült." + +#: ../src/dialog_apt_key.py.in:145 +msgid "Error removing the key" +msgstr "Hiba a kulcs eltávolítása közben" + +#: ../src/dialog_apt_key.py.in:146 +msgid "The key you selected could not be removed. Please report this as a bug." +msgstr "" +"Az Ön által kijelölt kulcs nem távolítható el. Kérem jelentse ezt hibaként." + +#: ../src/gnome-software-properties.in:72 +msgid "Repositories changed" +msgstr "Megváltoztak a tárolók" + +#: ../src/gnome-software-properties.in:74 +#, c-format +msgid "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" +msgstr "" +"A tárolóinformációk megváltoztak. A sources.list biztonsági másolata %s.save " +"néven van elmentve.\n" +"\n" +"A csomaglistákat újra le kell tölteni a kiszolgálókról, hogy a változtatások " +"életbe lépjenek. Meg akarja ezt tenni most?" + +#: ../src/update-manager.in:124 +msgid "Your system has broken packages!" +msgstr "A rendszerén törött csomagok vannak!" + +#: ../src/update-manager.in:125 +msgid "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." +msgstr "" +"Ez azt jelenti, hogy a telepített csomagok néhány függősége nincs " +"kielégítve. Kérem használja a \"Synaptic\"-ot vagy az \"apt-get\"-et a " +"probléma megoldására." + +#: ../src/update-manager.in:139 +msgid "It is not possible to upgrade all packages." +msgstr "Nem lehetséges az összes csomagot frissíteni." + +#: ../src/update-manager.in:141 +msgid "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." +msgstr "" +"Ez azt jelenti, hogy a csomagok frissítése mellett néhány további művelet is " +"szükséges (például csomagok telepítése vagy törlése). Kérem használja a " +"Synaptic \"Intelligens frissítés\" lehetőségét, vagy az \"apt-get dist-" +"upgrade\" parancsot a probléma megoldására." + +#: ../src/update-manager.in:154 +msgid "The following packages are not upgraded: " +msgstr "A következő csomagok nem lesznek frissítve: " + +#: ../src/update-manager.in:232 +msgid "Changes not found, the server may not be updated yet." +msgstr "" +"Nem találhatóak módosítások, lehet, hogy a kiszolgáló még nem frissült." + +#: ../src/update-manager.in:235 +msgid "" +"Failed to download changes. Please check if there is an active internet " +"connection." +msgstr "" +"Nem sikerült a módosításokat letölteni. Kérem ellenőrizze, hogy aktív-e az " +"internetkapcsolata." + +#: ../src/update-manager.in:255 +#, c-format +msgid "Version %s: \n" +msgstr "%s verzió: \n" + +#: ../src/update-manager.in:303 +msgid "Downloading changes..." +msgstr "Módosítások letöltése..." + +#: ../src/update-manager.in:358 +msgid "The updates are being applied." +msgstr "A frissítések alkalmazása folyamatban." + +#: ../src/update-manager.in:360 +msgid "Upgrade finished" +msgstr "A frissítés befejeződött" + +#: ../src/update-manager.in:417 +msgid "Another package manager is running" +msgstr "Már fut egy másik csomagkezelő" + +#: ../src/update-manager.in:419 +msgid "" +"You can run only one package management application at the same time. Please " +"close this other application first." +msgstr "" +"Egyidejűleg csak egy csomagkezelő alkalmazást futtathat. Kérem előbb zárja " +"be a másik alkalmazást." + +#: ../src/update-manager.in:437 +msgid "Updating package list..." +msgstr "Csomaglista frissítése..." + +#: ../src/update-manager.in:439 +msgid "Installing updates..." +msgstr "Frissítések telepítése..." + +#: ../src/update-manager.in:618 ../src/update-manager.in:621 +msgid "Your system is up-to-date!" +msgstr "A rendszere naprakész!" + +#: ../src/update-manager.in:619 +msgid "There are no updates available." +msgstr "Nem állnak rendelkezésre frissítések." + +#: ../src/update-manager.in:644 +#, c-format +msgid "New version: %s" +msgstr "Új verzió: %s" + +#: ../src/update-manager.in:668 +msgid "Your distribution is no longer supported" +msgstr "A disztribúciója már nem támogatott" + +#: ../src/update-manager.in:668 +msgid "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." +msgstr "" +"Kérem frissítse rendszerét az Ubuntu Linux újabb verziójára. Az Ön által " +"használt verzió már nem fog biztonsági javításokat vagy egyéb kritikus " +"frissítéseket kapni. Kérem keresse fel a http://www.ubuntulinux.org oldalt a " +"frissítési információkért." + +#: ../src/update-manager.in:682 +msgid "There is a new release of Ubuntu available!" +msgstr "Az Ubuntu egy új kiadása áll rendelkezésre!" + +#: ../src/update-manager.in:682 +#, c-format +msgid "" +"A new release with the codename '%s' is available. Please see http://www." +"ubuntulinux.org/ for upgrade instructions." +msgstr "" +"Egy új, \"%s\" kódnevű kiadás áll rendelkezésre. A frissítési utasításokért " +"keresse fel a http://www.ubuntulinux.org/ webhelyet." + +#: ../src/update-manager.in:685 +msgid "Never show this message again" +msgstr "Ne mutassa többé ezt az üzenetet" + +#: ../src/update-manager.in:781 +msgid "Initializing and getting list of updates..." +msgstr "Inicializálás és a frissítések letöltése..." + +#: ../src/update-manager.in:803 +msgid "You need to be root to run this program" +msgstr "Rootként kell ezt a programot futtatnia" + +#, fuzzy +#~ msgid "" +#~ "<big><b>Available Updates</b></big>\n" +#~ "The following packages are found to be upgradable. You can upgrade them " +#~ "by using the Install button." +#~ msgstr "" +#~ "<big><b>Elérhető frissítések</b></big>\n" +#~ "\n" +#~ "A következő csomagok frissíthetőek. A Telepítés gomb segítségével " +#~ "frissítheti őket." diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 00000000..5b05eb0e --- /dev/null +++ b/po/ja.po @@ -0,0 +1,528 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-04 10:47+0200\n" +"PO-Revision-Date: 2005-03-23 10:23+0900\n" +"Last-Translator: Hiroyuki Ikezoe <ikezoe@good-day.co.jp>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../data/gnome-software-properties.desktop.in.h:1 +msgid "Edit software sources and settings" +msgstr "" + +#: ../data/gnome-software-properties.desktop.in.h:2 +#, fuzzy +msgid "Software Properties" +msgstr "ソフトウェアの設定" + +#: ../data/gnome-software-properties.glade.h:1 +msgid "<b>Comment:</b>" +msgstr "<b>コメント:</b>" + +#: ../data/gnome-software-properties.glade.h:2 +msgid "<b>Components</b>" +msgstr "<b>コンポーネント</b>" + +#: ../data/gnome-software-properties.glade.h:3 +msgid "<b>Distribution:</b>" +msgstr "<b>ディストリビューション:</b>" + +#: ../data/gnome-software-properties.glade.h:4 +msgid "<b>Internet Updates</b>" +msgstr "<b>インターネットアップデート</b>" + +#: ../data/gnome-software-properties.glade.h:5 +msgid "<b>Repository</b>" +msgstr "<b>リポジトリ</b>" + +#: ../data/gnome-software-properties.glade.h:6 +msgid "<b>Sections:</b>" +msgstr "<b>セクション:</b>" + +#: ../data/gnome-software-properties.glade.h:7 +msgid "<b>Software Sources</b>" +msgstr "<b>ソフトウェア取得元</b>" + +#: ../data/gnome-software-properties.glade.h:8 +msgid "<b>Temporary files</b>" +msgstr "<b>一時ファイル</b>" + +#: ../data/gnome-software-properties.glade.h:9 +msgid "<b>Type:</b>" +msgstr "<b>タイプ:</b>" + +#: ../data/gnome-software-properties.glade.h:10 +msgid "<b>URI:</b>" +msgstr "<b>URI:</b>" + +#: ../data/gnome-software-properties.glade.h:11 +msgid "<b>User Interface</b>" +msgstr "ユーザーインターフェース" + +#: ../data/gnome-software-properties.glade.h:12 +msgid "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialog. A key makes it " +"possible to check verify the integrity of the software you download." +msgstr "" +"<big><b>認証鍵</b></big>\n" +"\n" +"認証鍵の追加と削除が行えます。認証鍵によりダウンロードしたソフトウェアが完全" +"なものか確認することができます。" + +#: ../data/gnome-software-properties.glade.h:15 +msgid "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." +msgstr "" +"<big><b>追加したい APT line のレポジトリを入力してください。</b></big>\n" +"\n" +"APT lineにはタイプ、場所、内容などを含めることができます。例:<i>\"deb http://" +"ftp.debian.org sarge main\"</i>付属のドキュメントに詳細な記述形式について書か" +"れています。" + +#: ../data/gnome-software-properties.glade.h:18 +msgid "APT line:" +msgstr "APT line:" + +#: ../data/gnome-software-properties.glade.h:19 +msgid "A_uthentication" +msgstr "認証" + +#: ../data/gnome-software-properties.glade.h:20 +msgid "Add _CD" +msgstr "CDの追加(C)" + +#: ../data/gnome-software-properties.glade.h:21 +msgid "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " +msgstr "" +"新しい鍵ファイルを信頼されたキーホルダーに追加します。セキュアなチャンネル経" +"由で鍵を取得したか、信頼される持ち主のものか確認してください。" + +#: ../data/gnome-software-properties.glade.h:22 +msgid "Automatically check for software _updates." +msgstr "アップデートを自動的にチェックする(U)" + +#: ../data/gnome-software-properties.glade.h:23 +msgid "Automatically clean _temporary packages files" +msgstr "一時ファイルを自動的に削除する(T)" + +#: ../data/gnome-software-properties.glade.h:24 +msgid "" +"Binary\n" +"Source" +msgstr "" +"バイナリ\n" +"ソース" + +#: ../data/gnome-software-properties.glade.h:26 +msgid "Clean interval in days: " +msgstr "削除する間隔(日): " + +#: ../data/gnome-software-properties.glade.h:27 +msgid "Delete _old packages in the package cache" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:28 +msgid "Edit Repository..." +msgstr "リポジトリの編集..." + +#: ../data/gnome-software-properties.glade.h:29 +msgid "Maximum age in days:" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:30 +msgid "Maximum size in MB:" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:31 +msgid "Remove the selected key from the trusted keyring." +msgstr "信頼されたキーホルダーから選択した鍵を削除します。" + +#: ../data/gnome-software-properties.glade.h:32 +msgid "Restore default keys" +msgstr "デフォルトの鍵を元に戻す" + +#: ../data/gnome-software-properties.glade.h:33 +msgid "" +"Restore the default keys shiped with the distribution. This will not change " +"user installed keys." +msgstr "" +"ディストリビューション付属のデフォルトの鍵を元に戻します。この変更によりユー" +"ザーが追加した鍵が失われることはありません。" + +#: ../data/gnome-software-properties.glade.h:34 +msgid "Set _maximum size for the package cache" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:35 +msgid "Settings" +msgstr "設定" + +#: ../data/gnome-software-properties.glade.h:36 +msgid "Show disabled software sources" +msgstr "無効なソフトウェア取得元を表示する" + +#: ../data/gnome-software-properties.glade.h:37 +msgid "Software Preferences" +msgstr "ソフトウェアの設定" + +#: ../data/gnome-software-properties.glade.h:38 +msgid "Update interval in days: " +msgstr "アップデートする間隔(日): " + +#: ../data/gnome-software-properties.glade.h:39 +msgid "_Add Repository" +msgstr "リポジトリの追加(A)" + +#: ../data/gnome-software-properties.glade.h:40 +msgid "_Custom" +msgstr "カスタム(C)" + +#: ../data/gnome-software-properties.glade.h:41 +msgid "_Download upgradable packages" +msgstr "アップグレード可能なパッケージを取得する(D)" + +#: ../data/update-manager.desktop.in.h:1 +msgid "Show available updates and choose which to install" +msgstr "アップデート可能なファイルの表示とインストール" + +#: ../data/update-manager.desktop.in.h:2 +msgid "Ubuntu Update Manager" +msgstr "Ubuntuアップデートマネージャー" + +#: ../data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "アップデートマネージャー" + +#: ../data/update-manager.glade.h:1 +msgid "<b>Details</b>" +msgstr "<b>詳細</b>" + +#: ../data/update-manager.glade.h:2 +#, fuzzy +msgid "<b>Packages to install:</b>" +msgstr "インストールするパッケージ:" + +#: ../data/update-manager.glade.h:3 ../src/update-manager.in:629 +msgid "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." +msgstr "" +"<big><b>利用可能なアップデート</b></big>\n" +"\n" +"以下のパッケージがアップグレード可能です。インストールボタンを押すとこれらの" +"パッケージがインストールされます。" + +#: ../data/update-manager.glade.h:6 +msgid "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" +msgstr "" +"<span weight=\"bold\" size=\"larger\">変更を取得中</span>\n" +"\n" +"中央サーバーから変更を取得する必要があります" + +#: ../data/update-manager.glade.h:9 +msgid "Cancel downloading the changelog" +msgstr "chengelogの取得の中止" + +#: ../data/update-manager.glade.h:10 +msgid "Changes" +msgstr "変更" + +#: ../data/update-manager.glade.h:11 +msgid "Description" +msgstr "詳細" + +#: ../data/update-manager.glade.h:12 +msgid "Reload" +msgstr "再読込" + +#: ../data/update-manager.glade.h:13 +msgid "Reload the package information from the server." +msgstr "サーバーからパッケージ情報を再度読み込む。" + +#: ../data/update-manager.glade.h:14 +msgid "Software Updates" +msgstr "ソフトウェアのアップデート" + +#: ../data/update-manager.glade.h:15 +msgid "_Install" +msgstr "インストール(I)" + +#: ../src/aptsources.py.in:234 ../src/aptsources.py.in:282 +#: ../src/aptsources.py.in:328 +msgid "Officially supported" +msgstr "Officially supported" + +#: ../src/aptsources.py.in:235 ../src/aptsources.py.in:283 +msgid "Restricted copyright" +msgstr "Restricted copyright" + +#: ../src/aptsources.py.in:236 ../src/aptsources.py.in:284 +msgid "Community maintained (Universe)" +msgstr "Community maintained (Universe)" + +#: ../src/aptsources.py.in:237 ../src/aptsources.py.in:285 +msgid "Non-free (Multiverse)" +msgstr "Non-free (Multiuniverse)" + +#: ../src/aptsources.py.in:248 ../src/aptsources.py.in:306 +#: ../src/aptsources.py.in:318 +msgid "Ubuntu 5.04 Security Updates" +msgstr "Ubuntu 5.04 セキュリティアップデート" + +#: ../src/aptsources.py.in:253 ../src/aptsources.py.in:310 +#, fuzzy +msgid "Ubuntu 5.04 Updates" +msgstr "Ubuntu 5.04 セキュリティアップデート" + +#: ../src/aptsources.py.in:276 +#, fuzzy +msgid "Binary" +msgstr "" +"バイナリ\n" +"ソース" + +#: ../src/aptsources.py.in:277 +#, fuzzy +msgid "Source" +msgstr "" +"バイナリ\n" +"ソース" + +#: ../src/aptsources.py.in:289 ../src/aptsources.py.in:293 +msgid "CD" +msgstr "CD" + +#: ../src/aptsources.py.in:314 ../src/aptsources.py.in:322 +msgid "Ubuntu 4.10 Security Updates" +msgstr "Ubuntu 4.10 セキュリティアップデート" + +#: ../src/aptsources.py.in:329 +msgid "Contributed software" +msgstr "寄贈されたソフトウェア" + +#: ../src/aptsources.py.in:330 +msgid "Non-free software" +msgstr "Non-free ソフトウェア" + +#: ../src/aptsources.py.in:331 +msgid "US export restricted software" +msgstr "アメリカ合衆国外への輸出が禁止されているソフトウェア" + +#: ../src/aptsources.py.in:346 +msgid "Debian Stable Security Updates" +msgstr "Debian Stable セキュリティアップデート" + +#. some known keys +#: ../src/dialog_apt_key.py.in:37 +msgid "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" +msgstr "" + +#: ../src/dialog_apt_key.py.in:38 +msgid "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" +msgstr "" + +#: ../src/dialog_apt_key.py.in:122 +msgid "Choose a key-file" +msgstr "" + +#: ../src/dialog_apt_key.py.in:132 +msgid "Error importing selected file" +msgstr "" + +#: ../src/dialog_apt_key.py.in:133 +msgid "The selected file may not be a GPG key file or it might be corrupt." +msgstr "" + +#: ../src/dialog_apt_key.py.in:145 +msgid "Error removing the key" +msgstr "" + +#: ../src/dialog_apt_key.py.in:146 +msgid "The key you selected could not be removed. Please report this as a bug." +msgstr "" + +#: ../src/gnome-software-properties.in:72 +msgid "Repositories changed" +msgstr "リポジトリが変更されました" + +#: ../src/gnome-software-properties.in:74 +#, c-format +msgid "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" +msgstr "" +"リポジトリ情報が変更されました。sources.listのバックアップを %s.save にコピー" +"しました\n" +"\n" +"パッケージリストをサーバーから再取得する必要があります。今すぐ実行しますか?" + +#: ../src/update-manager.in:124 +#, fuzzy +msgid "Your system has broken packages!" +msgstr "システムは最新の状態です!" + +#: ../src/update-manager.in:125 +#, fuzzy +msgid "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." +msgstr "" +"パッケージのアップグレードの他にパッケージのインストールや削除などの別の対処" +"が干る用です。Synaptic \"Smart Upgrade\"か\"apt-get dist-upgrade\"を実行して" +"問題を修正してください。" + +#: ../src/update-manager.in:139 +msgid "It is not possible to upgrade all packages." +msgstr "全てのパッケージをアップグレードすることは不可能です。" + +#: ../src/update-manager.in:141 +msgid "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." +msgstr "" +"パッケージのアップグレードの他にパッケージのインストールや削除などの別の対処" +"が干る用です。Synaptic \"Smart Upgrade\"か\"apt-get dist-upgrade\"を実行して" +"問題を修正してください。" + +#: ../src/update-manager.in:154 +msgid "The following packages are not upgraded: " +msgstr "" + +#: ../src/update-manager.in:232 +msgid "Changes not found, the server may not be updated yet." +msgstr "" +"変更は見つかりませんでした。サーバーはまだアップデートされていないようです。" + +#: ../src/update-manager.in:235 +msgid "" +"Failed to download changes. Please check if there is an active internet " +"connection." +msgstr "" +"変更の取得に失敗しました。インターネットに接続されているか確認してください。" + +#: ../src/update-manager.in:255 +#, c-format +msgid "Version %s: \n" +msgstr "バージョン %s: \n" + +#: ../src/update-manager.in:303 +msgid "Downloading changes..." +msgstr "変更を取得中..." + +#: ../src/update-manager.in:358 +msgid "The updates are being applied." +msgstr "アップデートされました。" + +#: ../src/update-manager.in:360 +msgid "Upgrade finished" +msgstr "アップグレードが終了しました" + +#: ../src/update-manager.in:417 +msgid "Another package manager is running" +msgstr "他のパッケージマネージャーが動いています" + +#: ../src/update-manager.in:419 +msgid "" +"You can run only one package management application at the same time. Please " +"close this other application first." +msgstr "" +"同時にひとつのパッケージマネージャーしか起動できません。他のアプリケーション" +"マネージャーを先に終了してください。" + +#: ../src/update-manager.in:437 +msgid "Updating package list..." +msgstr "" + +#: ../src/update-manager.in:439 +msgid "Installing updates..." +msgstr "" + +#: ../src/update-manager.in:618 ../src/update-manager.in:621 +msgid "Your system is up-to-date!" +msgstr "システムは最新の状態です!" + +#: ../src/update-manager.in:619 +msgid "There are no updates available." +msgstr "アップデートするものはありません。" + +#: ../src/update-manager.in:644 +#, c-format +msgid "New version: %s" +msgstr "新しいバージョン: %s" + +#: ../src/update-manager.in:668 +msgid "Your distribution is no longer supported" +msgstr "あなたのディストリビューションはすでにサポート対象外です。" + +#: ../src/update-manager.in:668 +msgid "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." +msgstr "" +"新しいUbuntu Linuxにアップグレードしてください。現在お使いのシステムにはセ" +"キュリティフィクスや危急のアップデートはすでに提供されていません。アップグ" +"レードに関する情報は http://www.ubuntulinux.org/ を見てください。" + +#: ../src/update-manager.in:682 +#, fuzzy +msgid "There is a new release of Ubuntu available!" +msgstr "アップデートするものはありません。" + +#: ../src/update-manager.in:682 +#, c-format +msgid "" +"A new release with the codename '%s' is available. Please see http://www." +"ubuntulinux.org/ for upgrade instructions." +msgstr "" + +#: ../src/update-manager.in:685 +msgid "Never show this message again" +msgstr "このメッセージを二度と表示しない" + +#: ../src/update-manager.in:781 +msgid "Initializing and getting list of updates..." +msgstr "アップデートリストを取得中..." + +#: ../src/update-manager.in:803 +msgid "You need to be root to run this program" +msgstr "rootで実行してください" + +#, fuzzy +#~ msgid "" +#~ "<big><b>Available Updates</b></big>\n" +#~ "The following packages are found to be upgradable. You can upgrade them " +#~ "by using the Install button." +#~ msgstr "" +#~ "<big><b>利用可能なアップデート</b></big>\n" +#~ "\n" +#~ "以下のパッケージがアップグレード可能です。インストールボタンを押すとこれら" +#~ "のパッケージがインストールされます。" diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 00000000..394017f5 --- /dev/null +++ b/po/pl.po @@ -0,0 +1,528 @@ +# Polish translation of Update Manager. +# Copyright (C) 2005 Zygmunt Krynicki <zyga@www.suxx.pl> +# This file is distributed under the same license as the update-manager package. +# +# +msgid "" +msgstr "" +"Project-Id-Version: update-manager cvs\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-04 10:47+0200\n" +"PO-Revision-Date: 2005-03-25 17:23+0100\n" +"Last-Translator: Zygmunt Krynicki <zyga@www.suxx.pl>\n" +"Language-Team: Polish <translators@gnomepl.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../data/gnome-software-properties.desktop.in.h:1 +msgid "Edit software sources and settings" +msgstr "Modyfikuje ustawienia i źródła oprogramowania" + +#: ../data/gnome-software-properties.desktop.in.h:2 +msgid "Software Properties" +msgstr "Właściwości oprogramowania" + +#: ../data/gnome-software-properties.glade.h:1 +msgid "<b>Comment:</b>" +msgstr "<b>Komentarz:</b>" + +#: ../data/gnome-software-properties.glade.h:2 +msgid "<b>Components</b>" +msgstr "<b>Komponenty</b>" + +#: ../data/gnome-software-properties.glade.h:3 +msgid "<b>Distribution:</b>" +msgstr "<b>Dystrybucja:</b>" + +#: ../data/gnome-software-properties.glade.h:4 +msgid "<b>Internet Updates</b>" +msgstr "<b>Aktualizacje internetowe</b>" + +#: ../data/gnome-software-properties.glade.h:5 +msgid "<b>Repository</b>" +msgstr "<b>Repozytorium</b>" + +#: ../data/gnome-software-properties.glade.h:6 +msgid "<b>Sections:</b>" +msgstr "<b>Sekcje:</b>" + +#: ../data/gnome-software-properties.glade.h:7 +msgid "<b>Software Sources</b>" +msgstr "<b>Źródła oprogramowania</b>" + +#: ../data/gnome-software-properties.glade.h:8 +msgid "<b>Temporary files</b>" +msgstr "<b>Pliki tymczasowe</b>" + +#: ../data/gnome-software-properties.glade.h:9 +msgid "<b>Type:</b>" +msgstr "<b>Typ:</b>" + +#: ../data/gnome-software-properties.glade.h:10 +msgid "<b>URI:</b>" +msgstr "<b>URI:</b>" + +#: ../data/gnome-software-properties.glade.h:11 +msgid "<b>User Interface</b>" +msgstr "<b>Interfejs użytkownika</b>" + +#: ../data/gnome-software-properties.glade.h:12 +msgid "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialog. A key makes it " +"possible to check verify the integrity of the software you download." +msgstr "" +"<big><b>Klucze autentykacyjne</b></big>\n" +"\n" +"W tym oknie dialogowym można dodawać i usuwać klucze autentykacyjne. Klucz " +"pozwala na sprawdzenie integralności oprogramowania które jest pobierane z " +"sieci." + +#: ../data/gnome-software-properties.glade.h:15 +msgid "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." +msgstr "" +"<big><b>Wpisz pełny wiersz APT opisujący repozytorium które chcesz dodać</" +"b></big>\n" +"\n" +"Wiersz APT zawiera typ, lokalizację i zawartość repozytorium. Dla przykładu " +"<i>\"deb http://ftp.debian.org sarge main\"</i>. Szczegółowy opis składni " +"znajduje się w dokumentacji APT" + +#: ../data/gnome-software-properties.glade.h:18 +msgid "APT line:" +msgstr "Wiersz APT:" + +#: ../data/gnome-software-properties.glade.h:19 +msgid "A_uthentication" +msgstr "A_utentykacja" + +#: ../data/gnome-software-properties.glade.h:20 +msgid "Add _CD" +msgstr "Dodaj płytę _CD" + +#: ../data/gnome-software-properties.glade.h:21 +msgid "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " +msgstr "" +"Dodaje plik z kluczem do listy zaufanych kluczy. Należy upewnić sie, że " +"został otrzymany bezpiecznym kanałem oraz, że pochodzi z zaufanego źródła. " + +#: ../data/gnome-software-properties.glade.h:22 +msgid "Automatically check for software _updates." +msgstr "Automatycznie sprawdzaj dostępność akt_ualizacji oprogramowania." + +#: ../data/gnome-software-properties.glade.h:23 +msgid "Automatically clean _temporary packages files" +msgstr "Usuwaj _tymczasowe pliki z pakietami" + +#: ../data/gnome-software-properties.glade.h:24 +msgid "" +"Binary\n" +"Source" +msgstr "" +"Binarne\n" +"Źródłowe" + +#: ../data/gnome-software-properties.glade.h:26 +msgid "Clean interval in days: " +msgstr "Co tyle dni:" + +#: ../data/gnome-software-properties.glade.h:27 +msgid "Delete _old packages in the package cache" +msgstr "Usuwaj stare pakiety z pamięci p_odręcznej" + +#: ../data/gnome-software-properties.glade.h:28 +msgid "Edit Repository..." +msgstr "Modyfikuj repozytorium..." + +#: ../data/gnome-software-properties.glade.h:29 +msgid "Maximum age in days:" +msgstr "Po tylu dniach:" + +#: ../data/gnome-software-properties.glade.h:30 +msgid "Maximum size in MB:" +msgstr "Maksymalny rozmiar pakietu w MB:" + +#: ../data/gnome-software-properties.glade.h:31 +msgid "Remove the selected key from the trusted keyring." +msgstr "Usuwa zaznaczony klucz z grupy zaufanych kluczy." + +#: ../data/gnome-software-properties.glade.h:32 +msgid "Restore default keys" +msgstr "Przywraca domyślne klucze" + +#: ../data/gnome-software-properties.glade.h:33 +msgid "" +"Restore the default keys shiped with the distribution. This will not change " +"user installed keys." +msgstr "" +"Przywraca domyślne klucze rozprowadzane wraz z dystrybucją. Nie wpływa to na " +"klucze zainstalowane przez użytkownika." + +#: ../data/gnome-software-properties.glade.h:34 +msgid "Set _maximum size for the package cache" +msgstr "Maksymalny rozmiar pamięci podręcznej" + +#: ../data/gnome-software-properties.glade.h:35 +msgid "Settings" +msgstr "Ustawienia" + +#: ../data/gnome-software-properties.glade.h:36 +msgid "Show disabled software sources" +msgstr "Pokaż nieaktywne źródła oprogramowania" + +#: ../data/gnome-software-properties.glade.h:37 +msgid "Software Preferences" +msgstr "Ustawienia oprogramowania" + +#: ../data/gnome-software-properties.glade.h:38 +msgid "Update interval in days: " +msgstr "Co tyle dni: " + +#: ../data/gnome-software-properties.glade.h:39 +msgid "_Add Repository" +msgstr "_Dodaj repozytorium" + +#: ../data/gnome-software-properties.glade.h:40 +msgid "_Custom" +msgstr "_Zaawansowane" + +#: ../data/gnome-software-properties.glade.h:41 +msgid "_Download upgradable packages" +msgstr "_Pobierz uaktualnione pakiety" + +#: ../data/update-manager.desktop.in.h:1 +msgid "Show available updates and choose which to install" +msgstr "" +"Wyświetla dostępne aktualizacje i pozwala wybrać te, które chcemy " +"zainstalować" + +#: ../data/update-manager.desktop.in.h:2 +msgid "Ubuntu Update Manager" +msgstr "Menadżer aktualizacji Ubuntu" + +#: ../data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "Menadżer aktualizacji" + +#: ../data/update-manager.glade.h:1 +msgid "<b>Details</b>" +msgstr "<b>Szczegóły</b>" + +#: ../data/update-manager.glade.h:2 +msgid "<b>Packages to install:</b>" +msgstr "<b>Pakiety do zainstalowania:</b>" + +#: ../data/update-manager.glade.h:3 ../src/update-manager.in:629 +msgid "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." +msgstr "" +"<big><b>Dostępne aktualizacje</b></big>\n" +"\n" +"Następujące pakiety posiadają aktualizacje. Można je zainstalować klikając " +"przycisk Instaluj." + +#: ../data/update-manager.glade.h:6 +msgid "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" +msgstr "" +"<span weight=\"bold\" size=\"larger\">Pobierz zmiany</span>\n" +"\n" +"Trzeba pobrać informacje o zmianach z centralnego serwera" + +#: ../data/update-manager.glade.h:9 +msgid "Cancel downloading the changelog" +msgstr "Anuluj pobieranie pliku zmian (Changelog)" + +#: ../data/update-manager.glade.h:10 +msgid "Changes" +msgstr "Zmiany" + +#: ../data/update-manager.glade.h:11 +msgid "Description" +msgstr "Opis" + +#: ../data/update-manager.glade.h:12 +msgid "Reload" +msgstr "Wczytaj ponownie" + +#: ../data/update-manager.glade.h:13 +msgid "Reload the package information from the server." +msgstr "Wczytuje ponownie z serwera informacje o pakietach." + +#: ../data/update-manager.glade.h:14 +msgid "Software Updates" +msgstr "Aktualizacje oprogramowania" + +#: ../data/update-manager.glade.h:15 +msgid "_Install" +msgstr "_Instaluj" + +#: ../src/aptsources.py.in:234 ../src/aptsources.py.in:282 +#: ../src/aptsources.py.in:328 +msgid "Officially supported" +msgstr "Wspierane oficjalnie" + +#: ../src/aptsources.py.in:235 ../src/aptsources.py.in:283 +msgid "Restricted copyright" +msgstr "O ograniczonych prawach kopiowania" + +#: ../src/aptsources.py.in:236 ../src/aptsources.py.in:284 +msgid "Community maintained (Universe)" +msgstr "Utrzymywane przez społeczność (Universe)" + +#: ../src/aptsources.py.in:237 ../src/aptsources.py.in:285 +msgid "Non-free (Multiverse)" +msgstr "Nie-wolnodostępne (Multiverse)" + +#: ../src/aptsources.py.in:248 ../src/aptsources.py.in:306 +#: ../src/aptsources.py.in:318 +msgid "Ubuntu 5.04 Security Updates" +msgstr "Uaktualnienia bezpieczeństwa dla Ubuntu 5.04" + +#: ../src/aptsources.py.in:253 ../src/aptsources.py.in:310 +#, fuzzy +msgid "Ubuntu 5.04 Updates" +msgstr "Uaktualnienia Ubuntu 4.10" + +#: ../src/aptsources.py.in:276 +msgid "Binary" +msgstr "Binarny" + +#: ../src/aptsources.py.in:277 +msgid "Source" +msgstr "Źródłowy" + +#: ../src/aptsources.py.in:289 ../src/aptsources.py.in:293 +msgid "CD" +msgstr "CD" + +#: ../src/aptsources.py.in:314 ../src/aptsources.py.in:322 +msgid "Ubuntu 4.10 Security Updates" +msgstr "Uaktualnienia bezpieczeństwa dla Ubuntu 4.10" + +#: ../src/aptsources.py.in:329 +msgid "Contributed software" +msgstr "Inne oprogramowanie (Contributed)" + +#: ../src/aptsources.py.in:330 +msgid "Non-free software" +msgstr "Oprogramowanie nie-wolnodostępne" + +#: ../src/aptsources.py.in:331 +msgid "US export restricted software" +msgstr "Oprogramowanie objęte restrykcjami eksportowymi USA" + +#: ../src/aptsources.py.in:346 +msgid "Debian Stable Security Updates" +msgstr "Uaktualnienia bezpieczeństwa dla stabilnego Debiana" + +#. some known keys +#: ../src/dialog_apt_key.py.in:37 +msgid "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" +msgstr "Klucz automatycznego podpisu archiwum Ubuntu <ftpmaster@ubuntu.com>" + +#: ../src/dialog_apt_key.py.in:38 +msgid "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" +msgstr "Klucz automatycznego podpisu płyty CD Ubuntu <cdimage@ubuntu.com>" + +#: ../src/dialog_apt_key.py.in:122 +msgid "Choose a key-file" +msgstr "Wybierz plik z kluczem" + +#: ../src/dialog_apt_key.py.in:132 +msgid "Error importing selected file" +msgstr "Błąd podczas importu wybranego pliku" + +#: ../src/dialog_apt_key.py.in:133 +msgid "The selected file may not be a GPG key file or it might be corrupt." +msgstr "Wybrany plik może nie być kluczem GPG lub może być uszkodzony." + +#: ../src/dialog_apt_key.py.in:145 +msgid "Error removing the key" +msgstr "Błąd podczas usuwania klucza" + +#: ../src/dialog_apt_key.py.in:146 +msgid "The key you selected could not be removed. Please report this as a bug." +msgstr "Nie można było usunąć wybranego klucza. Proszę zgłosić to jako błąd." + +#: ../src/gnome-software-properties.in:72 +msgid "Repositories changed" +msgstr "Repozytoria zmienione" + +#: ../src/gnome-software-properties.in:74 +#, c-format +msgid "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" +msgstr "" +"Zmieniły się informacje o repozytoriach. Kopia zapasowa oryginalnego pliku " +"sources.list została zapisana w %s.save. \n" +"\n" +"Należy ponownie odczytać listę pakietów z serwerów aby zmiany były widoczne. " +"Czy chcesz zrobić to teraz?" + +#: ../src/update-manager.in:124 +msgid "Your system has broken packages!" +msgstr "Twój system zawiera uszkodzone pakiety!" + +#: ../src/update-manager.in:125 +msgid "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." +msgstr "" +"Oznacza to, że pewne zależności instalowanych pakietów nie są spełnione.Aby " +"rozwiązać problem proszę skorzystać z programu \"Synaptic\" lub \"apt-get\"." + +#: ../src/update-manager.in:139 +msgid "It is not possible to upgrade all packages." +msgstr "Nie można uaktualnić wszystkich pakietów" + +#: ../src/update-manager.in:141 +msgid "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." +msgstr "" +"Oznacza to, że do aktualizacji wymagane sa dodatkowe działania (takie jak " +"dodanie lub usunięcie pakietów). Aby rozwiązać problem proszę skorzystać z " +"funkcji \"sprytnej aktualizacji\" programu Synaptic lub wykonać polecenie " +"\"apt-get dist-upgrade\"." + +#: ../src/update-manager.in:154 +msgid "The following packages are not upgraded: " +msgstr "Następujące pakiety nie są aktualizowane: " + +#: ../src/update-manager.in:232 +msgid "Changes not found, the server may not be updated yet." +msgstr "" +"Nie odnaleziono informacji o zmianach, być może serwer nie został jeszcze " +"zaktualizowany" + +#: ../src/update-manager.in:235 +msgid "" +"Failed to download changes. Please check if there is an active internet " +"connection." +msgstr "" +"Nie udało się pobrać informacji o zmianach. Proszę sprawdzić czy połączenie " +"z internetem jest aktywne" + +#: ../src/update-manager.in:255 +#, c-format +msgid "Version %s: \n" +msgstr "Wersja %s: \n" + +#: ../src/update-manager.in:303 +msgid "Downloading changes..." +msgstr "Pobieranie informacji o zmianach..." + +#: ../src/update-manager.in:358 +msgid "The updates are being applied." +msgstr "Aktualizacje są teraz instalowane." + +#: ../src/update-manager.in:360 +msgid "Upgrade finished" +msgstr "Aktualizowanie zakończone" + +#: ../src/update-manager.in:417 +msgid "Another package manager is running" +msgstr "Działa inny menadżer pakietów" + +#: ../src/update-manager.in:419 +msgid "" +"You can run only one package management application at the same time. Please " +"close this other application first." +msgstr "" +"Naraz można uruchomić tylko jedną aplikację zarządzającą pakietami. Należy " +"najpierw zamknąć aplikację która teraz działa." + +#: ../src/update-manager.in:437 +msgid "Updating package list..." +msgstr "Aktualizacja listy pakietów..." + +#: ../src/update-manager.in:439 +msgid "Installing updates..." +msgstr "Instalacja pakietów..." + +#: ../src/update-manager.in:618 ../src/update-manager.in:621 +msgid "Your system is up-to-date!" +msgstr "Twój system jest w pełni zaktualizowany" + +#: ../src/update-manager.in:619 +msgid "There are no updates available." +msgstr "Nie ma żadnych dostępnych aktualizacji" + +#: ../src/update-manager.in:644 +#, c-format +msgid "New version: %s" +msgstr "Nowa wersja %s" + +#: ../src/update-manager.in:668 +msgid "Your distribution is no longer supported" +msgstr "Twoja dystrybucja nie jest już wspierana" + +#: ../src/update-manager.in:668 +msgid "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." +msgstr "" +"Proszę uaktualnić dystrybucję do nowszej wersji Ubuntu Linux. Obecna wersja " +"nie będzie już otrzymywać uaktualnień bezpieczeństwa oraz innych krytycznych " +"uaktualnień. Informacje o tym jak uaktualnić dystrybucję można znaleźć na " +"stronie http://www.ubuntulinux.org (Witryna w języku angielskim)" + +#: ../src/update-manager.in:682 +#, fuzzy +msgid "There is a new release of Ubuntu available!" +msgstr "Nie ma żadnych dostępnych aktualizacji" + +#: ../src/update-manager.in:682 +#, c-format +msgid "" +"A new release with the codename '%s' is available. Please see http://www." +"ubuntulinux.org/ for upgrade instructions." +msgstr "" + +#: ../src/update-manager.in:685 +msgid "Never show this message again" +msgstr "Nie pokazuj więcej tego komunikatu" + +#: ../src/update-manager.in:781 +msgid "Initializing and getting list of updates..." +msgstr "Inicjowanie i pobieranie listy aktualizacji..." + +#: ../src/update-manager.in:803 +msgid "You need to be root to run this program" +msgstr "Aby uruchomić ten program wymagane są uprawnienia administratora" + +#, fuzzy +#~ msgid "" +#~ "<big><b>Available Updates</b></big>\n" +#~ "The following packages are found to be upgradable. You can upgrade them " +#~ "by using the Install button." +#~ msgstr "" +#~ "<big><b>Dostępne aktualizacje</b></big>\n" +#~ "\n" +#~ "Następujące pakiety posiadają aktualizacje. Można je zainstalować " +#~ "klikając przycisk Instaluj." + +#~ msgid "CD disk" +#~ msgstr "Płyta CD" diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 00000000..315e8cbd --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,407 @@ +# Brazilian Portuguese translation of update-manager. +# Copyright (C) 2005 Free Software Foundation, Inc. +# This file is distributed under the same license as the update-manager package. +# Raphael Higino <raphaelh@uai.com.br>, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: update-manager\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-03-28 11:51+0200\n" +"PO-Revision-Date: 2005-03-29 13:36-0300\n" +"Last-Translator: Raphael Higino <raphaelh@uai.com.br>\n" +"Language-Team: Brazilian Portuguese <gnome-l10n-status@listas.cipsga.org.br>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: data/gnome-software-properties.desktop.in.h:1 +msgid "Edit software sources and settings" +msgstr "" + +#: data/gnome-software-properties.desktop.in.h:2 +msgid "Software Properties" +msgstr "Propriedades dos Softwares" + +#: data/gnome-software-properties.glade.h:1 +msgid "<b>Comment:</b>" +msgstr "" + +#: data/gnome-software-properties.glade.h:2 +msgid "<b>Components</b>" +msgstr "<b>Componentes</b>" + +#: data/gnome-software-properties.glade.h:3 +msgid "<b>Distribution:</b>" +msgstr "" + +#: data/gnome-software-properties.glade.h:4 +msgid "<b>Internet Updates</b>" +msgstr "" + +#: data/gnome-software-properties.glade.h:5 +msgid "<b>Repository</b>" +msgstr "" + +#: data/gnome-software-properties.glade.h:6 +msgid "<b>Sections:</b>" +msgstr "" + +#: data/gnome-software-properties.glade.h:7 +msgid "<b>Software Sources</b>" +msgstr "<b>Fontes de Software</b>" + +#: data/gnome-software-properties.glade.h:8 +msgid "<b>Temporary files</b>" +msgstr "" + +#: data/gnome-software-properties.glade.h:9 +msgid "<b>Type:</b>" +msgstr "<b>Tipo:</b>" + +#: data/gnome-software-properties.glade.h:10 +msgid "<b>URI:</b>" +msgstr "<b>URI:</b>" + +#: data/gnome-software-properties.glade.h:11 +msgid "<b>User Interface</b>" +msgstr "" + +#: data/gnome-software-properties.glade.h:12 +msgid "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialog. A key makes it " +"possible to check verify the integrity of the software you download." +msgstr "" + +#: data/gnome-software-properties.glade.h:15 +msgid "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." +msgstr "" + +#: data/gnome-software-properties.glade.h:18 +msgid "APT line:" +msgstr "Linha do APT:" + +#: data/gnome-software-properties.glade.h:19 +msgid "A_uthentication" +msgstr "" + +#: data/gnome-software-properties.glade.h:20 +msgid "Add _CD" +msgstr "Adicionar _CD" + +#: data/gnome-software-properties.glade.h:21 +msgid "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " +msgstr "" + +#: data/gnome-software-properties.glade.h:22 +msgid "Automatically check for software _updates." +msgstr "" + +#: data/gnome-software-properties.glade.h:23 +msgid "Automatically clean _temporary packages files" +msgstr "" + +#: data/gnome-software-properties.glade.h:24 +msgid "" +"Binary\n" +"Source" +msgstr "" + +#: data/gnome-software-properties.glade.h:26 +msgid "Clean interval in days: " +msgstr "Intervalo de limpeza, em dias: " + +#: data/gnome-software-properties.glade.h:27 +msgid "Delete _old packages in the package cache" +msgstr "Excluir pacotes _antigos do cache de pacotes" + +#: data/gnome-software-properties.glade.h:28 +msgid "Edit Repository..." +msgstr "" + +#: data/gnome-software-properties.glade.h:29 +msgid "Maximum age in days:" +msgstr "" + +#: data/gnome-software-properties.glade.h:30 +msgid "Maximum size in MB:" +msgstr "" + +#: data/gnome-software-properties.glade.h:31 +msgid "Remove the selected key from the trusted keyring." +msgstr "" + +#: data/gnome-software-properties.glade.h:32 +msgid "Restore default keys" +msgstr "" + +#: data/gnome-software-properties.glade.h:33 +msgid "" +"Restore the default keys shiped with the distribution. This will not change " +"user installed keys." +msgstr "" + +#: data/gnome-software-properties.glade.h:34 +msgid "Set _maximum size for the package cache" +msgstr "" + +#: data/gnome-software-properties.glade.h:35 +msgid "Settings" +msgstr "" + +#: data/gnome-software-properties.glade.h:36 +msgid "Show disabled software sources" +msgstr "" + +#: data/gnome-software-properties.glade.h:37 +msgid "Software Preferences" +msgstr "" + +#: data/gnome-software-properties.glade.h:38 +msgid "Update interval in days: " +msgstr "" + +#: data/gnome-software-properties.glade.h:39 +msgid "_Add Repository" +msgstr "" + +#: data/gnome-software-properties.glade.h:40 +msgid "_Custom" +msgstr "" + +#: data/gnome-software-properties.glade.h:41 +msgid "_Download upgradable packages" +msgstr "" + +#: data/update-manager.desktop.in.h:1 +msgid "Show available updates and choose which to install" +msgstr "" + +#: data/update-manager.desktop.in.h:2 +msgid "Ubuntu Update Manager" +msgstr "" + +#: data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "" + +#: data/update-manager.glade.h:1 +msgid "<b>Details</b>" +msgstr "" + +#: data/update-manager.glade.h:2 +msgid "<b>Packages to install:</b>" +msgstr "" + +#: data/update-manager.glade.h:3 +msgid "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." +msgstr "" + +#: data/update-manager.glade.h:6 +msgid "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" +msgstr "" + +#: data/update-manager.glade.h:9 +msgid "Cancel downloading the changelog" +msgstr "" + +#: data/update-manager.glade.h:10 +msgid "Changes" +msgstr "" + +#: data/update-manager.glade.h:11 +msgid "Description" +msgstr "" + +#: data/update-manager.glade.h:12 +msgid "Reload" +msgstr "" + +#: data/update-manager.glade.h:13 +msgid "Reload the package information from the server." +msgstr "" + +#: data/update-manager.glade.h:14 +msgid "Software Updates" +msgstr "" + +#: data/update-manager.glade.h:15 +msgid "_Install" +msgstr "" + +#: src/aptsources.py.in:207 src/aptsources.py.in:257 src/aptsources.py.in:299 +msgid "Officially supported" +msgstr "" + +#: src/aptsources.py.in:208 src/aptsources.py.in:258 +msgid "Restricted copyright" +msgstr "" + +#: src/aptsources.py.in:209 src/aptsources.py.in:259 +msgid "Community maintained (Universe)" +msgstr "Mantido pela comunidade (Universo)" + +#: src/aptsources.py.in:210 src/aptsources.py.in:260 +msgid "Non-free (Multiverse)" +msgstr "" + +#: src/aptsources.py.in:221 src/aptsources.py.in:281 src/aptsources.py.in:289 +msgid "Ubuntu 5.04 Security Updates" +msgstr "" + +#: src/aptsources.py.in:251 +msgid "Binary" +msgstr "" + +#: src/aptsources.py.in:252 +msgid "Source" +msgstr "" + +#: src/aptsources.py.in:264 src/aptsources.py.in:268 +msgid "CD" +msgstr "CD" + +#: src/aptsources.py.in:285 src/aptsources.py.in:293 +msgid "Ubuntu 4.10 Security Updates" +msgstr "" + +#: src/aptsources.py.in:300 +msgid "Contributed software" +msgstr "" + +#: src/aptsources.py.in:301 +msgid "Non-free software" +msgstr "" + +#: src/aptsources.py.in:302 +msgid "US export restricted software" +msgstr "" + +#: src/aptsources.py.in:317 +msgid "Debian Stable Security Updates" +msgstr "" + +#: src/gnome-software-properties.in:72 +msgid "Repositories changed" +msgstr "" + +#: src/gnome-software-properties.in:74 +#, c-format +msgid "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" +msgstr "" + +#: src/update-manager.in:124 +msgid "Your system has broken packages!" +msgstr "O seu sistema tem pacotes quebrados!" + +#: src/update-manager.in:125 +msgid "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." +msgstr "" + +#: src/update-manager.in:139 +msgid "It is not possible to upgrade all packages." +msgstr "" + +#: src/update-manager.in:141 +msgid "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." +msgstr "" + +#: src/update-manager.in:232 +msgid "Changes not found, the server may not be updated yet." +msgstr "" + +#: src/update-manager.in:235 +msgid "" +"Failed to download changes. Please check if there is an active internet " +"connection." +msgstr "" + +#: src/update-manager.in:255 +#, c-format +msgid "Version %s: \n" +msgstr "" + +#: src/update-manager.in:303 +msgid "Downloading changes..." +msgstr "" + +#: src/update-manager.in:358 +msgid "The updates are being applied." +msgstr "" + +#: src/update-manager.in:360 +msgid "Upgrade finished" +msgstr "Upgrade terminado" + +#: src/update-manager.in:417 +msgid "Another package manager is running" +msgstr "" + +#: src/update-manager.in:419 +msgid "" +"You can run only one package management application at the same time. Please " +"close this other application first." +msgstr "" + +#: src/update-manager.in:618 src/update-manager.in:621 +msgid "Your system is up-to-date!" +msgstr "" + +#: src/update-manager.in:619 +msgid "There are no updates available." +msgstr "" + +#: src/update-manager.in:638 +#, c-format +msgid "New version: %s" +msgstr "" + +#: src/update-manager.in:662 +msgid "Your distribution is no longer supported" +msgstr "" + +#: src/update-manager.in:662 +msgid "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." +msgstr "" + +#: src/update-manager.in:679 +msgid "Never show this message again" +msgstr "Nunca exibir esta mensagem novamente" + +#: src/update-manager.in:772 +msgid "Initializing and getting list of updates..." +msgstr "" + +#: src/update-manager.in:794 +msgid "You need to be root to run this program" +msgstr "" diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 00000000..6c3f58f9 --- /dev/null +++ b/po/ro.po @@ -0,0 +1,529 @@ +# Romanian translation of update-manager. +# Copyright (C) 2005 Free Software Foundation, Inc. +# This file is distributed under the same license as the update-manager package. +# Dan Damian <dand@gnome.ro>, 2005. +# +# +msgid "" +msgstr "" +"Project-Id-Version: update-manager\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-04 10:47+0200\n" +"PO-Revision-Date: 2005-03-03 19:28+0200\n" +"Last-Translator: Dan Damian <dand@gnome.ro>\n" +"Language-Team: Romanian <gnomero-list@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../data/gnome-software-properties.desktop.in.h:1 +msgid "Edit software sources and settings" +msgstr "" + +#: ../data/gnome-software-properties.desktop.in.h:2 +#, fuzzy +msgid "Software Properties" +msgstr "Preferinţe software" + +#: ../data/gnome-software-properties.glade.h:1 +msgid "<b>Comment:</b>" +msgstr "<b>Comentariu:</b>" + +#: ../data/gnome-software-properties.glade.h:2 +msgid "<b>Components</b>" +msgstr "<b>Componente</b>" + +#: ../data/gnome-software-properties.glade.h:3 +msgid "<b>Distribution:</b>" +msgstr "<b>Distribuţie:</b>" + +#: ../data/gnome-software-properties.glade.h:4 +msgid "<b>Internet Updates</b>" +msgstr "<b>Actualizări de pe Internet</b>" + +#: ../data/gnome-software-properties.glade.h:5 +msgid "<b>Repository</b>" +msgstr "<b>Locaţie</b>" + +#: ../data/gnome-software-properties.glade.h:6 +msgid "<b>Sections:</b>" +msgstr "<b>Secţiuni:</b>" + +#: ../data/gnome-software-properties.glade.h:7 +msgid "<b>Software Sources</b>" +msgstr "<b>Surse software</b>" + +#: ../data/gnome-software-properties.glade.h:8 +msgid "<b>Temporary files</b>" +msgstr "<b>Fişiere temporare</b>" + +#: ../data/gnome-software-properties.glade.h:9 +msgid "<b>Type:</b>" +msgstr "<b>Tip:</b>" + +#: ../data/gnome-software-properties.glade.h:10 +msgid "<b>URI:</b>" +msgstr "<b>URI:</b>" + +#: ../data/gnome-software-properties.glade.h:11 +msgid "<b>User Interface</b>" +msgstr "<b>Interfaţă utilizator</b>" + +#: ../data/gnome-software-properties.glade.h:12 +msgid "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialog. A key makes it " +"possible to check verify the integrity of the software you download." +msgstr "" +"<big><b>Chei autentificare</b></big>\n" +"\n" +"Din acest dialog puteţi adăuga sau şterge chei de autentificare. Rolul unei " +"chei estede a permite verificarea integrităţii unui pachet software " +"descărcat." + +#: ../data/gnome-software-properties.glade.h:15 +msgid "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." +msgstr "" +"<big><b>Introduceţi linia APT completă a locaţiei pe care doriţi să o " +"adăugaţi</b></big>\n" +"\n" +"Linia APT conţine tipul, adresa şi conţinutul unei locaţii, de exemplu<i>" +"\"deb http://ftp.debian.org sarge main\"</i>. Puteţi găsi o descriere " +"detaliată a sintaxei în documentaţie." + +#: ../data/gnome-software-properties.glade.h:18 +msgid "APT line:" +msgstr "Linie APT:" + +#: ../data/gnome-software-properties.glade.h:19 +msgid "A_uthentication" +msgstr "A_utentificare" + +#: ../data/gnome-software-properties.glade.h:20 +msgid "Add _CD" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:21 +msgid "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " +msgstr "" +"Adăugaţi o nouă cheie în keyring-ul de încredere. Asiguraţi-vă că aţi " +"obţinut cheia printr-un canal sigur şi că aveţi încredere în proprietarul ei." + +#: ../data/gnome-software-properties.glade.h:22 +msgid "Automatically check for software _updates." +msgstr "Verifică a_utomat actualizările software." + +#: ../data/gnome-software-properties.glade.h:23 +msgid "Automatically clean _temporary packages files" +msgstr "Curăţă automat fişierele _temporare ale pachetelor" + +#: ../data/gnome-software-properties.glade.h:24 +msgid "" +"Binary\n" +"Source" +msgstr "" +"Binar\n" +"Sursă" + +#: ../data/gnome-software-properties.glade.h:26 +msgid "Clean interval in days: " +msgstr "Interval de curăţire în zile: " + +#: ../data/gnome-software-properties.glade.h:27 +msgid "Delete _old packages in the package cache" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:28 +msgid "Edit Repository..." +msgstr "Editează locaţia..." + +#: ../data/gnome-software-properties.glade.h:29 +msgid "Maximum age in days:" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:30 +msgid "Maximum size in MB:" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:31 +msgid "Remove the selected key from the trusted keyring." +msgstr "Elimină cheia selectată din keyring-ul de încredere." + +#: ../data/gnome-software-properties.glade.h:32 +msgid "Restore default keys" +msgstr "Restaurează cheile implicite." + +#: ../data/gnome-software-properties.glade.h:33 +msgid "" +"Restore the default keys shiped with the distribution. This will not change " +"user installed keys." +msgstr "" +"Restaurează cheile implicite furnizate împreună cu distribuţia. Această " +"acţiune nu va influenţa cheile instalate ca utilizator." + +#: ../data/gnome-software-properties.glade.h:34 +msgid "Set _maximum size for the package cache" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:35 +msgid "Settings" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:36 +msgid "Show disabled software sources" +msgstr "Afişează sursele software dezactivate" + +#: ../data/gnome-software-properties.glade.h:37 +msgid "Software Preferences" +msgstr "Preferinţe software" + +#: ../data/gnome-software-properties.glade.h:38 +msgid "Update interval in days: " +msgstr "Interval de actualizare în zile: " + +#: ../data/gnome-software-properties.glade.h:39 +msgid "_Add Repository" +msgstr "_Adaugă locaţie" + +#: ../data/gnome-software-properties.glade.h:40 +msgid "_Custom" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:41 +msgid "_Download upgradable packages" +msgstr "_Descarcă pachetele actualizate" + +#: ../data/update-manager.desktop.in.h:1 +msgid "Show available updates and choose which to install" +msgstr "" + +#: ../data/update-manager.desktop.in.h:2 +#, fuzzy +msgid "Ubuntu Update Manager" +msgstr "Actualizări Ubuntu 4.10" + +#: ../data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "" + +#: ../data/update-manager.glade.h:1 +msgid "<b>Details</b>" +msgstr "<b>Detalii</b>" + +#: ../data/update-manager.glade.h:2 +#, fuzzy +msgid "<b>Packages to install:</b>" +msgstr "Pachete de instalat:" + +#: ../data/update-manager.glade.h:3 ../src/update-manager.in:629 +msgid "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." +msgstr "" +"<big><b>Actualizări disponibile</b></big>\n" +"\n" +"Pachetele următoare pot fi actualizate. Puteţi instala actualizările apăsând " +"pe butonul Instalează." + +#: ../data/update-manager.glade.h:6 +msgid "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" +msgstr "" +"<span weight=\"bold\" size=\"larger\">Descarc modificările</span>\n" +"\n" +"Trebuiesc obţinute schimbările de pe serverul central" + +#: ../data/update-manager.glade.h:9 +msgid "Cancel downloading the changelog" +msgstr "Întrerupe descărcarea jurnalului de modificări" + +#: ../data/update-manager.glade.h:10 +msgid "Changes" +msgstr "Modificări" + +#: ../data/update-manager.glade.h:11 +msgid "Description" +msgstr "Descriere" + +#: ../data/update-manager.glade.h:12 +msgid "Reload" +msgstr "" + +#: ../data/update-manager.glade.h:13 +msgid "Reload the package information from the server." +msgstr "Reîncarcă informaţiile despre pachete de pe server." + +#: ../data/update-manager.glade.h:14 +msgid "Software Updates" +msgstr "Actualizări software" + +#: ../data/update-manager.glade.h:15 +msgid "_Install" +msgstr "_Instalează" + +#: ../src/aptsources.py.in:234 ../src/aptsources.py.in:282 +#: ../src/aptsources.py.in:328 +msgid "Officially supported" +msgstr "Pachete suportate oficial" + +#: ../src/aptsources.py.in:235 ../src/aptsources.py.in:283 +msgid "Restricted copyright" +msgstr "Copyright restrictiv" + +#: ../src/aptsources.py.in:236 ../src/aptsources.py.in:284 +msgid "Community maintained (Universe)" +msgstr "Pachete întreţinute de comunitate (Universe)" + +#: ../src/aptsources.py.in:237 ../src/aptsources.py.in:285 +msgid "Non-free (Multiverse)" +msgstr "Pachete non-libere (Multiverse)" + +#: ../src/aptsources.py.in:248 ../src/aptsources.py.in:306 +#: ../src/aptsources.py.in:318 +msgid "Ubuntu 5.04 Security Updates" +msgstr "Actualizări de securitate Ubuntu 5.04" + +#: ../src/aptsources.py.in:253 ../src/aptsources.py.in:310 +#, fuzzy +msgid "Ubuntu 5.04 Updates" +msgstr "Actualizări de securitate Ubuntu 5.04" + +#: ../src/aptsources.py.in:276 +#, fuzzy +msgid "Binary" +msgstr "" +"Binar\n" +"Sursă" + +#: ../src/aptsources.py.in:277 +#, fuzzy +msgid "Source" +msgstr "" +"Binar\n" +"Sursă" + +#: ../src/aptsources.py.in:289 ../src/aptsources.py.in:293 +msgid "CD" +msgstr "CD" + +#: ../src/aptsources.py.in:314 ../src/aptsources.py.in:322 +msgid "Ubuntu 4.10 Security Updates" +msgstr "Actualizări de securitate Ubuntu 4.10" + +#: ../src/aptsources.py.in:329 +msgid "Contributed software" +msgstr "Software în contribuţie" + +#: ../src/aptsources.py.in:330 +msgid "Non-free software" +msgstr "Software non-liber" + +#: ../src/aptsources.py.in:331 +msgid "US export restricted software" +msgstr "Software cu restricţii de export din SUA" + +#: ../src/aptsources.py.in:346 +msgid "Debian Stable Security Updates" +msgstr "Actualizări de securitate Debian Stable" + +#. some known keys +#: ../src/dialog_apt_key.py.in:37 +msgid "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" +msgstr "" + +#: ../src/dialog_apt_key.py.in:38 +msgid "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" +msgstr "" + +#: ../src/dialog_apt_key.py.in:122 +msgid "Choose a key-file" +msgstr "" + +#: ../src/dialog_apt_key.py.in:132 +msgid "Error importing selected file" +msgstr "" + +#: ../src/dialog_apt_key.py.in:133 +msgid "The selected file may not be a GPG key file or it might be corrupt." +msgstr "" + +#: ../src/dialog_apt_key.py.in:145 +msgid "Error removing the key" +msgstr "" + +#: ../src/dialog_apt_key.py.in:146 +msgid "The key you selected could not be removed. Please report this as a bug." +msgstr "" + +#: ../src/gnome-software-properties.in:72 +msgid "Repositories changed" +msgstr "Locaţiile au fost schimbate" + +#: ../src/gnome-software-properties.in:74 +#, c-format +msgid "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" +msgstr "" +"Informaţiile despre locaţii au fost schimbate. O copie de siguranţă a " +"fişierului sources.list a fost salvată în %s.save.\n" +"\n" +"Pentru ca modificările să aibe efect, trebuie să reîncărcaţi lista de " +"pachete de pe servere. Doriţi să faceţi acum acest lucru?" + +#: ../src/update-manager.in:124 +#, fuzzy +msgid "Your system has broken packages!" +msgstr "Sistemul dvs. este la zi!" + +#: ../src/update-manager.in:125 +msgid "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." +msgstr "" + +#: ../src/update-manager.in:139 +msgid "It is not possible to upgrade all packages." +msgstr "" + +#: ../src/update-manager.in:141 +msgid "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." +msgstr "" + +#: ../src/update-manager.in:154 +msgid "The following packages are not upgraded: " +msgstr "" + +#: ../src/update-manager.in:232 +msgid "Changes not found, the server may not be updated yet." +msgstr "" +"Nu am găsit modificări, s-ar putea ca serverul să nu fi fost actualizat." + +#: ../src/update-manager.in:235 +msgid "" +"Failed to download changes. Please check if there is an active internet " +"connection." +msgstr "" +"Nu am putut descărca modificările. Vă rog să verificaţi dacă aveţi o " +"conexiune internet activă." + +#: ../src/update-manager.in:255 +#, c-format +msgid "Version %s: \n" +msgstr "Versiunea %s: \n" + +#: ../src/update-manager.in:303 +msgid "Downloading changes..." +msgstr "Descarc modificările..." + +#: ../src/update-manager.in:358 +msgid "The updates are being applied." +msgstr "Actualizările sunt în curs de aplicare." + +#: ../src/update-manager.in:360 +msgid "Upgrade finished" +msgstr "Actualizare completă" + +#: ../src/update-manager.in:417 +msgid "Another package manager is running" +msgstr "Un alt manager de pachete rulează" + +#: ../src/update-manager.in:419 +msgid "" +"You can run only one package management application at the same time. Please " +"close this other application first." +msgstr "" +"Puteţi rula doar un singur manager de pachete la un moment dat. Vă rog să " +"închideţi ceilalţi manageri mai întâi." + +#: ../src/update-manager.in:437 +msgid "Updating package list..." +msgstr "" + +#: ../src/update-manager.in:439 +msgid "Installing updates..." +msgstr "" + +#: ../src/update-manager.in:618 ../src/update-manager.in:621 +msgid "Your system is up-to-date!" +msgstr "Sistemul dvs. este la zi!" + +#: ../src/update-manager.in:619 +msgid "There are no updates available." +msgstr "Nu există nici un pachet de actualizat." + +#: ../src/update-manager.in:644 +#, c-format +msgid "New version: %s" +msgstr "Versiune nouă: %s" + +#: ../src/update-manager.in:668 +msgid "Your distribution is no longer supported" +msgstr "Distribuţia dvs. nu mai este suportată" + +#: ../src/update-manager.in:668 +msgid "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." +msgstr "" + +#: ../src/update-manager.in:682 +#, fuzzy +msgid "There is a new release of Ubuntu available!" +msgstr "Nu există nici un pachet de actualizat." + +#: ../src/update-manager.in:682 +#, c-format +msgid "" +"A new release with the codename '%s' is available. Please see http://www." +"ubuntulinux.org/ for upgrade instructions." +msgstr "" + +#: ../src/update-manager.in:685 +msgid "Never show this message again" +msgstr "" + +#: ../src/update-manager.in:781 +msgid "Initializing and getting list of updates..." +msgstr "Iniţializez şi obţin lista actualizărilor..." + +#: ../src/update-manager.in:803 +msgid "You need to be root to run this program" +msgstr "" + +#, fuzzy +#~ msgid "" +#~ "<big><b>Available Updates</b></big>\n" +#~ "The following packages are found to be upgradable. You can upgrade them " +#~ "by using the Install button." +#~ msgstr "" +#~ "<big><b>Actualizări disponibile</b></big>\n" +#~ "\n" +#~ "Pachetele următoare pot fi actualizate. Puteţi instala actualizările " +#~ "apăsând pe butonul Instalează." + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid " " +#~ msgstr " " diff --git a/po/rw.po b/po/rw.po new file mode 100644 index 00000000..3dd60932 --- /dev/null +++ b/po/rw.po @@ -0,0 +1,570 @@ +# translation of update-manager to Kinyarwanda. +# Copyright (C) 2005 Free Software Foundation, Inc. +# This file is distributed under the same license as the update-manager package. +# Steve Murphy <murf@e-tools.com>, 2005 +# Steve performed initial rough translation from compendium built from translations provided by the following translators: +# Philibert Ndandali <ndandali@yahoo.fr>, 2005. +# Viateur MUGENZI <muvia1@yahoo.fr>, 2005. +# Noëlla Mupole <s24211045@tuks.co.za>, 2005. +# Carole Karema <karemacarole@hotmail.com>, 2005. +# JEAN BAPTISTE NGENDAHAYO <ngenda_denis@yahoo.co.uk>, 2005. +# Augustin KIBERWA <akiberwa@yahoo.co.uk>, 2005. +# Donatien NSENGIYUMVA <ndonatienuk@yahoo.co.uk>, 2005.. +# +msgid "" +msgstr "" +"Project-Id-Version: update-manager HEAD\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-01 17:19-0700\n" +"PO-Revision-Date: 2005-03-31 20:55-0700\n" +"Last-Translator: Steve Murphy <murf@e-tools.com>\n" +"Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"ULL NAME <EMAIL@ADDRESS>\n" + +#: data/gnome-software-properties.desktop.in.h:1 +#, fuzzy +msgid "Edit software sources and settings" +msgstr "Na Amagenamiterere" + +#: data/gnome-software-properties.desktop.in.h:2 +msgid "Software Properties" +msgstr "" + +#: data/gnome-software-properties.glade.h:1 +#, fuzzy +msgid "<b>Comment:</b>" +msgstr "<B B" + +#: data/gnome-software-properties.glade.h:2 +#, fuzzy +msgid "<b>Components</b>" +msgstr "<B B" + +#: data/gnome-software-properties.glade.h:3 +#, fuzzy +msgid "<b>Distribution:</b>" +msgstr "<B B" + +#: data/gnome-software-properties.glade.h:4 +#, fuzzy +msgid "<b>Internet Updates</b>" +msgstr "<B B" + +#: data/gnome-software-properties.glade.h:5 +#, fuzzy +msgid "<b>Repository</b>" +msgstr "<B B" + +#: data/gnome-software-properties.glade.h:6 +#, fuzzy +msgid "<b>Sections:</b>" +msgstr "<B B" + +#: data/gnome-software-properties.glade.h:7 +#, fuzzy +msgid "<b>Software Sources</b>" +msgstr "<B B" + +#: data/gnome-software-properties.glade.h:8 +#, fuzzy +msgid "<b>Temporary files</b>" +msgstr "<B Idosiye B" + +#: data/gnome-software-properties.glade.h:9 +#, fuzzy +msgid "<b>Type:</b>" +msgstr "<B B" + +#: data/gnome-software-properties.glade.h:10 +#, fuzzy +msgid "<b>URI:</b>" +msgstr "<B B" + +#: data/gnome-software-properties.glade.h:11 +#, fuzzy +msgid "<b>User Interface</b>" +msgstr "<B B" + +#: data/gnome-software-properties.glade.h:12 +#, fuzzy +msgid "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialog. A key makes it " +"possible to check verify the integrity of the software you download." +msgstr "" +"<B Utubuto B Kongeramo Na Gukuraho... Utubuto in iyi Ikiganiro A Urufunguzo " +"Kuri Kugenzura... i Bya i Gufungura" + +#: data/gnome-software-properties.glade.h:15 +#, fuzzy +msgid "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." +msgstr "" +"<B i Byuzuye Umurongo Bya i Kuri Kongeramo B Umurongo Kirimo i Ubwoko Ahantu " +"Na Ibikubiyemo Bya a kugirango Urugero i HTTP FTP org i Gushaka a " +"Isobanuramiterere Bya i in i" + +#: data/gnome-software-properties.glade.h:18 +#, fuzzy +msgid "APT line:" +msgstr "Umurongo" + +#: data/gnome-software-properties.glade.h:19 +msgid "A_uthentication" +msgstr "" + +#: data/gnome-software-properties.glade.h:20 +msgid "Add _CD" +msgstr "" + +#: data/gnome-software-properties.glade.h:21 +#, fuzzy +msgid "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " +msgstr "a Gishya Urufunguzo IDOSIYE Kuri i i Urufunguzo KURI a Na i" + +#: data/gnome-software-properties.glade.h:22 +#, fuzzy +msgid "Automatically check for software _updates." +msgstr "Kugenzura... kugirango" + +#: data/gnome-software-properties.glade.h:23 +#, fuzzy +msgid "Automatically clean _temporary packages files" +msgstr "GUSUKURA By'igihe gito Idosiye" + +#: data/gnome-software-properties.glade.h:24 +msgid "" +"Binary\n" +"Source" +msgstr "" + +#: data/gnome-software-properties.glade.h:26 +#, fuzzy +msgid "Clean interval in days: " +msgstr "Intera in Iminsi" + +#: data/gnome-software-properties.glade.h:27 +#, fuzzy +msgid "Delete _old packages in the package cache" +msgstr "ki/ bishaje in i Ubwihisho" + +#: data/gnome-software-properties.glade.h:28 +msgid "Edit Repository..." +msgstr "" + +#: data/gnome-software-properties.glade.h:29 +#, fuzzy +msgid "Maximum age in days:" +msgstr "in Iminsi" + +#: data/gnome-software-properties.glade.h:30 +#, fuzzy +msgid "Maximum size in MB:" +msgstr "Ingano in" + +#: data/gnome-software-properties.glade.h:31 +#, fuzzy +msgid "Remove the selected key from the trusted keyring." +msgstr "i Byahiswemo Urufunguzo Bivuye i" + +#: data/gnome-software-properties.glade.h:32 +#, fuzzy +msgid "Restore default keys" +msgstr "Mburabuzi Utubuto" + +#: data/gnome-software-properties.glade.h:33 +#, fuzzy +msgid "" +"Restore the default keys shiped with the distribution. This will not change " +"user installed keys." +msgstr "" +"i Mburabuzi Utubuto Na: i Ikwirakwiza... OYA Guhindura>> Ukoresha: Utubuto" + +#: data/gnome-software-properties.glade.h:34 +#, fuzzy +msgid "Set _maximum size for the package cache" +msgstr "Kinini Ingano kugirango i Ubwihisho" + +#: data/gnome-software-properties.glade.h:35 +msgid "Settings" +msgstr "Amagenamiterere" + +#: data/gnome-software-properties.glade.h:36 +#, fuzzy +msgid "Show disabled software sources" +msgstr "Yahagaritswe" + +#: data/gnome-software-properties.glade.h:37 +msgid "Software Preferences" +msgstr "" + +#: data/gnome-software-properties.glade.h:38 +#, fuzzy +msgid "Update interval in days: " +msgstr "Intera in Iminsi" + +#: data/gnome-software-properties.glade.h:39 +msgid "_Add Repository" +msgstr "" + +#: data/gnome-software-properties.glade.h:40 +#, fuzzy +msgid "_Custom" +msgstr "Guhanga" + +#: data/gnome-software-properties.glade.h:41 +msgid "_Download upgradable packages" +msgstr "" + +#: data/update-manager.desktop.in.h:1 +#, fuzzy +msgid "Show available updates and choose which to install" +msgstr "Bihari Na Guhitamo Kuri Kwinjiza porogaramu" + +#: data/update-manager.desktop.in.h:2 +msgid "Ubuntu Update Manager" +msgstr "" + +#: data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "" + +#: data/update-manager.glade.h:1 +#, fuzzy +msgid "<b>Details</b>" +msgstr "<B B" + +#: data/update-manager.glade.h:2 +#, fuzzy +msgid "<b>Packages to install:</b>" +msgstr "<B Kuri Kwinjiza porogaramu B" + +#: data/update-manager.glade.h:3 +#, fuzzy +msgid "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." +msgstr "<B B Byabonetse Kuri ku ikoresha i Akabuto" + +#: data/update-manager.glade.h:6 +#, fuzzy +msgid "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" +msgstr "" +"<Uburemere UTSINDAGIYE Ingano Kinini Amahinduka Kuri Kubona i Amahinduka " +"Bivuye i Seriveri" + +#: data/update-manager.glade.h:9 +#, fuzzy +msgid "Cancel downloading the changelog" +msgstr "Iyimura... i" + +# officecfg/registry\schema\org\openoffice\Office\Calc.xcs:....Revision.Color.Change.text +#: data/update-manager.glade.h:10 +msgid "Changes" +msgstr "Amahinduka" + +# #-#-#-#-# basctl.pot (PACKAGE VERSION) #-#-#-#-# +# basctl/source\basicide\moptions.src:RID_MACROOPTIONS.RID_FT_DESCR.text +# #-#-#-#-# basctl.pot (PACKAGE VERSION) #-#-#-#-# +# basctl/source\basicide\moptions.src:RID_MACROOPTIONS.text +#: data/update-manager.glade.h:11 +msgid "Description" +msgstr "Isobanuramiterere" + +# sfx2/sdi\sfxslots.src:SID_RELOAD.text +#: data/update-manager.glade.h:12 +msgid "Reload" +msgstr "Kongera Gutangiza" + +#: data/update-manager.glade.h:13 +#, fuzzy +msgid "Reload the package information from the server." +msgstr "Kongerakuyitangiza i Ibisobanuro Bivuye i Seriveri" + +#: data/update-manager.glade.h:14 +msgid "Software Updates" +msgstr "Ibihuzagihe bya porogaramumudasobwa " + +# #-#-#-#-# setup2.pot (PACKAGE VERSION) #-#-#-#-# +# setup2/source\ui\pages\plang.src:RESID_PAGE_PAGELANGUAGE.STR_PROG.text +# #-#-#-#-# setup2.pot (PACKAGE VERSION) #-#-#-#-# +# setup2/source\uibase\agentdlg.src:RC_AGENTDLG.RESID_DLG_AGENT_STR_INSTALL.text +#: data/update-manager.glade.h:15 +#, fuzzy +msgid "_Install" +msgstr "Kwinjiza porogaramu" + +#: src/aptsources.py.in:207 src/aptsources.py.in:257 src/aptsources.py.in:299 +msgid "Officially supported" +msgstr "" + +#: src/aptsources.py.in:208 src/aptsources.py.in:258 +#, fuzzy +msgid "Restricted copyright" +msgstr "Uburenganzira bw'umuhimbyi" + +#: src/aptsources.py.in:209 src/aptsources.py.in:259 +msgid "Community maintained (Universe)" +msgstr "" + +#: src/aptsources.py.in:210 src/aptsources.py.in:260 +#, fuzzy +msgid "Non-free (Multiverse)" +msgstr "Kigenga" + +#: src/aptsources.py.in:221 src/aptsources.py.in:281 src/aptsources.py.in:289 +#, fuzzy +msgid "Ubuntu 5.04 Security Updates" +msgstr "5" + +# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-# +# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Filter.Graphic.Export.PBM.FileFormat..0.text +# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-# +# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Filter.Graphic.Export.PGM.FileFormat..0.text +# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-# +# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Filter.Graphic.Export.PPM.FileFormat..0.text +#: src/aptsources.py.in:251 +msgid "Binary" +msgstr "Nyabibiri" + +#: src/aptsources.py.in:252 +msgid "Source" +msgstr "Inkomoko" + +#: src/aptsources.py.in:264 src/aptsources.py.in:268 +msgid "CD" +msgstr "" + +#: src/aptsources.py.in:285 src/aptsources.py.in:293 +#, fuzzy +msgid "Ubuntu 4.10 Security Updates" +msgstr "4. 10" + +#: src/aptsources.py.in:300 +msgid "Contributed software" +msgstr "" + +#: src/aptsources.py.in:301 +#, fuzzy +msgid "Non-free software" +msgstr "Kigenga" + +#: src/aptsources.py.in:302 +#, fuzzy +msgid "US export restricted software" +msgstr "Kohereza Nta gukoresha bisesuye" + +#: src/aptsources.py.in:317 +msgid "Debian Stable Security Updates" +msgstr "" + +#. some known keys +#: src/dialog_apt_key.py.in:37 +#, fuzzy +msgid "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" +msgstr "com" + +#: src/dialog_apt_key.py.in:38 +#, fuzzy +msgid "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" +msgstr "com" + +#: src/dialog_apt_key.py.in:122 +#, fuzzy +msgid "Choose a key-file" +msgstr "a Urufunguzo IDOSIYE" + +#: src/dialog_apt_key.py.in:132 +#, fuzzy +msgid "Error importing selected file" +msgstr "Kuzaza Byahiswemo IDOSIYE" + +#: src/dialog_apt_key.py.in:133 +#, fuzzy +msgid "The selected file may not be a GPG key file or it might be corrupt." +msgstr "Byahiswemo IDOSIYE Gicurasi OYA a Urufunguzo IDOSIYE Cyangwa" + +#: src/dialog_apt_key.py.in:145 +#, fuzzy +msgid "Error removing the key" +msgstr "i Urufunguzo" + +#: src/dialog_apt_key.py.in:146 +#, fuzzy +msgid "The key you selected could not be removed. Please report this as a bug." +msgstr "Urufunguzo Byahiswemo OYA Cyavanyweho Icyegeranyo iyi Nka a" + +#: src/gnome-software-properties.in:72 +#, fuzzy +msgid "Repositories changed" +msgstr "Byahinduwe" + +#: src/gnome-software-properties.in:74 +#, fuzzy, c-format +msgid "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" +msgstr "Kubika." + +#: src/update-manager.in:124 +#, fuzzy +msgid "Your system has broken packages!" +msgstr "Sisitemu" + +#: src/update-manager.in:125 +#, fuzzy +msgid "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." +msgstr "Bya i OYA Gukoresha Cyangwa Kubona Kuri i" + +#: src/update-manager.in:139 +#, fuzzy +msgid "It is not possible to upgrade all packages." +msgstr "ni OYA Kuri Byose" + +#: src/update-manager.in:141 +#, fuzzy +msgid "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." +msgstr "" +"i Bya i Igikorwa Nka gukora iyinjizaporogaramu:%s Cyangwa ni Bya ngombwa " +"Gukoresha Cyangwa Kubona Kuri i" + +#: src/update-manager.in:154 +#, fuzzy +msgid "The following packages are not upgraded: " +msgstr "OYA" + +#: src/update-manager.in:232 +#, fuzzy +msgid "Changes not found, the server may not be updated yet." +msgstr "OYA Byabonetse i Seriveri Gicurasi OYA" + +#: src/update-manager.in:235 +#, fuzzy +msgid "" +"Failed to download changes. Please check if there is an active internet " +"connection." +msgstr "" +"Kuri Gufungura Amahinduka Kugenzura... NIBA ni Gikora Interineti Ukwihuza" + +# goodies/source\filter.vcl\eps\dlgeps.src:DLG_EXPORT_EPS.GRP_VERSION.text +#: src/update-manager.in:255 +#, fuzzy, c-format +msgid "Version %s: \n" +msgstr "Verisiyo" + +#: src/update-manager.in:303 +#, fuzzy +msgid "Downloading changes..." +msgstr "Amahinduka" + +#: src/update-manager.in:358 +#, fuzzy +msgid "The updates are being applied." +msgstr "Byashyizweho" + +#: src/update-manager.in:360 +#, fuzzy +msgid "Upgrade finished" +msgstr "Byarangiye" + +#: src/update-manager.in:417 +#, fuzzy +msgid "Another package manager is running" +msgstr "Muyobozi ni" + +#: src/update-manager.in:419 +#, fuzzy +msgid "" +"You can run only one package management application at the same time. Please " +"close this other application first." +msgstr "Gukoresha Porogaramu ku i Igihe Gufunga iyi Ikindi Porogaramu Itangira" + +#: src/update-manager.in:437 +#, fuzzy +msgid "Updating package list..." +msgstr "Urutonde" + +#: src/update-manager.in:439 +msgid "Installing updates..." +msgstr "" + +#: src/update-manager.in:618 src/update-manager.in:621 +#, fuzzy +msgid "Your system is up-to-date!" +msgstr "Sisitemu ni Hejuru Kuri Itariki" + +#: src/update-manager.in:619 +#, fuzzy +msgid "There are no updates available." +msgstr "Oya Bihari" + +#: src/update-manager.in:638 +#, fuzzy, c-format +msgid "New version: %s" +msgstr "Verisiyo" + +#: src/update-manager.in:662 +#, fuzzy +msgid "Your distribution is no longer supported" +msgstr "Ikwirakwiza... ni Oya" + +#: src/update-manager.in:662 +#, fuzzy +msgid "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." +msgstr "" +"Kuri a Verisiyo Bya Verisiyo Oya Kubona Umutekano Cyangwa Ikindi Ibyangombwa " +"HTTP www org kugirango Ibisobanuro" + +#: src/update-manager.in:676 +#, fuzzy +msgid "There is a new release of Ubuntu available!" +msgstr "ni a Gishya Bya Bihari" + +#: src/update-manager.in:676 +#, fuzzy, c-format +msgid "" +"A new release with the codename '%s' is available. Please see http://www." +"ubuntulinux.org/ for upgrade instructions." +msgstr "A Gishya Na: i ni Bihari HTTP www org kugirango Amabwiriza" + +#: src/update-manager.in:679 +#, fuzzy +msgid "Never show this message again" +msgstr "Garagaza iyi Ubutumwa" + +#: src/update-manager.in:775 +#, fuzzy +msgid "Initializing and getting list of updates..." +msgstr "Na Urutonde Bya" + +#: src/update-manager.in:797 +#, fuzzy +msgid "You need to be root to run this program" +msgstr "Kuri Imizi Kuri Gukoresha iyi Porogaramu" diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 00000000..37f72976 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,2450 @@ +# Swedish messages for update-manager. +# Copyright (C) 2005 Free Software Foundation, Inc. +# Christian Rose <menthos@menthos.com>, 2005. +# +# $Id: sv.po,v 1.5 2005/04/04 08:49:52 mvogt Exp $ +# +msgid "" +msgstr "" +"Project-Id-Version: update-manager\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-04 10:47+0200\n" +"PO-Revision-Date: 2005-03-26 15:14+0100\n" +"Last-Translator: Christian Rose <menthos@menthos.com>\n" +"Language-Team: Swedish <sv@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../data/gnome-software-properties.desktop.in.h:1 +msgid "Edit software sources and settings" +msgstr "Redigera källor och inställningar för programvaror" + +#: ../data/gnome-software-properties.desktop.in.h:2 +msgid "Software Properties" +msgstr "Programvaruegenskaper" + +#: ../data/gnome-software-properties.glade.h:1 +msgid "<b>Comment:</b>" +msgstr "<b>Kommentar:</b>" + +#: ../data/gnome-software-properties.glade.h:2 +msgid "<b>Components</b>" +msgstr "<b>Komponenter</b>" + +#: ../data/gnome-software-properties.glade.h:3 +msgid "<b>Distribution:</b>" +msgstr "<b>Distribution:</b>" + +#: ../data/gnome-software-properties.glade.h:4 +msgid "<b>Internet Updates</b>" +msgstr "<b>Internet-uppdateringar</b>" + +#: ../data/gnome-software-properties.glade.h:5 +#, fuzzy +msgid "<b>Repository</b>" +msgstr "<b>Säkerhet</b>" + +#: ../data/gnome-software-properties.glade.h:6 +#, fuzzy +msgid "<b>Sections:</b>" +msgstr "<b>Val</b>" + +#: ../data/gnome-software-properties.glade.h:7 +msgid "<b>Software Sources</b>" +msgstr "<b>Programvarukällor</b>" + +#: ../data/gnome-software-properties.glade.h:8 +msgid "<b>Temporary files</b>" +msgstr "<b>Temporära filer</b>" + +#: ../data/gnome-software-properties.glade.h:9 +msgid "<b>Type:</b>" +msgstr "<b>Typ:</b>" + +#: ../data/gnome-software-properties.glade.h:10 +msgid "<b>URI:</b>" +msgstr "<b>URI:</b>" + +#: ../data/gnome-software-properties.glade.h:11 +msgid "<b>User Interface</b>" +msgstr "<b>Användargränssnitt</b>" + +#: ../data/gnome-software-properties.glade.h:12 +msgid "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialog. A key makes it " +"possible to check verify the integrity of the software you download." +msgstr "" + +#: ../data/gnome-software-properties.glade.h:15 +msgid "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." +msgstr "" + +#: ../data/gnome-software-properties.glade.h:18 +msgid "APT line:" +msgstr "APT-rad:" + +#: ../data/gnome-software-properties.glade.h:19 +msgid "A_uthentication" +msgstr "A_utentisering" + +#: ../data/gnome-software-properties.glade.h:20 +msgid "Add _CD" +msgstr "Lägg till _cd" + +#: ../data/gnome-software-properties.glade.h:21 +msgid "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " +msgstr "" + +#: ../data/gnome-software-properties.glade.h:22 +msgid "Automatically check for software _updates." +msgstr "" + +#: ../data/gnome-software-properties.glade.h:23 +msgid "Automatically clean _temporary packages files" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:24 +msgid "" +"Binary\n" +"Source" +msgstr "" +"Binär\n" +"Källkod" + +#: ../data/gnome-software-properties.glade.h:26 +msgid "Clean interval in days: " +msgstr "" + +#: ../data/gnome-software-properties.glade.h:27 +msgid "Delete _old packages in the package cache" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:28 +#, fuzzy +msgid "Edit Repository..." +msgstr "Redigera värdar..." + +#: ../data/gnome-software-properties.glade.h:29 +msgid "Maximum age in days:" +msgstr "Maximal ålder i dagar:" + +#: ../data/gnome-software-properties.glade.h:30 +msgid "Maximum size in MB:" +msgstr "Maximal storlek i MB:" + +#: ../data/gnome-software-properties.glade.h:31 +msgid "Remove the selected key from the trusted keyring." +msgstr "" + +#: ../data/gnome-software-properties.glade.h:32 +#, fuzzy +msgid "Restore default keys" +msgstr "Systemets standardalternativ" + +#: ../data/gnome-software-properties.glade.h:33 +msgid "" +"Restore the default keys shiped with the distribution. This will not change " +"user installed keys." +msgstr "" + +#: ../data/gnome-software-properties.glade.h:34 +msgid "Set _maximum size for the package cache" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:35 +msgid "Settings" +msgstr "Inställningar" + +#: ../data/gnome-software-properties.glade.h:36 +msgid "Show disabled software sources" +msgstr "Visa inaktiverade programvarukällor" + +#: ../data/gnome-software-properties.glade.h:37 +msgid "Software Preferences" +msgstr "Programvaruinställningar" + +#: ../data/gnome-software-properties.glade.h:38 +msgid "Update interval in days: " +msgstr "Uppdateringsintervall i dagar: " + +#: ../data/gnome-software-properties.glade.h:39 +#, fuzzy +msgid "_Add Repository" +msgstr "_Lägg till värd" + +#: ../data/gnome-software-properties.glade.h:40 +msgid "_Custom" +msgstr "An_passad" + +#: ../data/gnome-software-properties.glade.h:41 +msgid "_Download upgradable packages" +msgstr "_Hämta uppgraderingsbara paket" + +#: ../data/update-manager.desktop.in.h:1 +msgid "Show available updates and choose which to install" +msgstr "Visa tillgängliga uppdateringar och välj vilka som ska installeras" + +#: ../data/update-manager.desktop.in.h:2 +msgid "Ubuntu Update Manager" +msgstr "Ubuntu-uppdateringshanterare" + +#: ../data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "Uppdateringshanterare" + +#: ../data/update-manager.glade.h:1 +msgid "<b>Details</b>" +msgstr "<b>Detaljer</b>" + +#: ../data/update-manager.glade.h:2 +msgid "<b>Packages to install:</b>" +msgstr "<b>Paket att installera:</b>" + +#: ../data/update-manager.glade.h:3 ../src/update-manager.in:629 +msgid "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." +msgstr "" + +#: ../data/update-manager.glade.h:6 +#, fuzzy +msgid "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" +msgstr "" +"<span weight=\"bold\" size=\"larger\">Nätverksinställningar</span>\n" +"Använd detta verktyg för att konfigurera det sätt som ditt system kommer åt " +"andra datorer" + +#: ../data/update-manager.glade.h:9 +msgid "Cancel downloading the changelog" +msgstr "Avbryt hämtningen av changelog" + +#: ../data/update-manager.glade.h:10 +msgid "Changes" +msgstr "Ändringar" + +#: ../data/update-manager.glade.h:11 +msgid "Description" +msgstr "Beskrivning" + +#: ../data/update-manager.glade.h:12 +msgid "Reload" +msgstr "Läs om" + +#: ../data/update-manager.glade.h:13 +msgid "Reload the package information from the server." +msgstr "Läs om paketinformationen från servern." + +#: ../data/update-manager.glade.h:14 +msgid "Software Updates" +msgstr "Programvaruuppdateringar" + +#: ../data/update-manager.glade.h:15 +msgid "_Install" +msgstr "_Installera" + +#: ../src/aptsources.py.in:234 ../src/aptsources.py.in:282 +#: ../src/aptsources.py.in:328 +msgid "Officially supported" +msgstr "Stöds officiellt" + +#: ../src/aptsources.py.in:235 ../src/aptsources.py.in:283 +msgid "Restricted copyright" +msgstr "Begränsad copyright" + +#: ../src/aptsources.py.in:236 ../src/aptsources.py.in:284 +msgid "Community maintained (Universe)" +msgstr "Gemenskapsunderhållen (Universe)" + +#: ../src/aptsources.py.in:237 ../src/aptsources.py.in:285 +msgid "Non-free (Multiverse)" +msgstr "Ickefri (Multiverse)" + +#: ../src/aptsources.py.in:248 ../src/aptsources.py.in:306 +#: ../src/aptsources.py.in:318 +msgid "Ubuntu 5.04 Security Updates" +msgstr "" + +#: ../src/aptsources.py.in:253 ../src/aptsources.py.in:310 +#, fuzzy +msgid "Ubuntu 5.04 Updates" +msgstr "Brådskande uppdateringar" + +#: ../src/aptsources.py.in:276 +msgid "Binary" +msgstr "Binär" + +#: ../src/aptsources.py.in:277 +msgid "Source" +msgstr "Källkod" + +#: ../src/aptsources.py.in:289 ../src/aptsources.py.in:293 +msgid "CD" +msgstr "CD" + +#: ../src/aptsources.py.in:314 ../src/aptsources.py.in:322 +msgid "Ubuntu 4.10 Security Updates" +msgstr "" + +#: ../src/aptsources.py.in:329 +msgid "Contributed software" +msgstr "Bidragen programvara" + +#: ../src/aptsources.py.in:330 +msgid "Non-free software" +msgstr "Ickefri programvara" + +#: ../src/aptsources.py.in:331 +msgid "US export restricted software" +msgstr "Programvara med USA-exportbegränsningar" + +#: ../src/aptsources.py.in:346 +msgid "Debian Stable Security Updates" +msgstr "" + +#. some known keys +#: ../src/dialog_apt_key.py.in:37 +msgid "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" +msgstr "" + +#: ../src/dialog_apt_key.py.in:38 +msgid "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" +msgstr "" + +#: ../src/dialog_apt_key.py.in:122 +#, fuzzy +msgid "Choose a key-file" +msgstr "Välj en spegel" + +#: ../src/dialog_apt_key.py.in:132 +msgid "Error importing selected file" +msgstr "" + +#: ../src/dialog_apt_key.py.in:133 +msgid "The selected file may not be a GPG key file or it might be corrupt." +msgstr "" + +#: ../src/dialog_apt_key.py.in:145 +msgid "Error removing the key" +msgstr "" + +#: ../src/dialog_apt_key.py.in:146 +msgid "The key you selected could not be removed. Please report this as a bug." +msgstr "" + +#: ../src/gnome-software-properties.in:72 +#, fuzzy +msgid "Repositories changed" +msgstr "Värdnamnet har ändrats" + +#: ../src/gnome-software-properties.in:74 +#, c-format +msgid "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" +msgstr "" + +#: ../src/update-manager.in:124 +msgid "Your system has broken packages!" +msgstr "Ditt system har trasiga paket!" + +#: ../src/update-manager.in:125 +msgid "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." +msgstr "" + +#: ../src/update-manager.in:139 +msgid "It is not possible to upgrade all packages." +msgstr "Det går inte att uppgradera alla paket." + +#: ../src/update-manager.in:141 +msgid "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." +msgstr "" + +#: ../src/update-manager.in:154 +#, fuzzy +msgid "The following packages are not upgraded: " +msgstr "Följande kanaler är våra kanaltips!" + +#: ../src/update-manager.in:232 +msgid "Changes not found, the server may not be updated yet." +msgstr "Ändringar kunde inte hittas, servern har kanske inte uppdaterats än." + +#: ../src/update-manager.in:235 +msgid "" +"Failed to download changes. Please check if there is an active internet " +"connection." +msgstr "" +"Misslyckades med att hämta ändringar. Kontrollera att det finns en aktiv " +"Internetanslutning." + +#: ../src/update-manager.in:255 +#, c-format +msgid "Version %s: \n" +msgstr "Version %s: \n" + +#: ../src/update-manager.in:303 +msgid "Downloading changes..." +msgstr "Hämtar ändringar..." + +#: ../src/update-manager.in:358 +msgid "The updates are being applied." +msgstr "Uppdateringarna verkställs." + +#: ../src/update-manager.in:360 +msgid "Upgrade finished" +msgstr "Uppgradering slutförd" + +#: ../src/update-manager.in:417 +msgid "Another package manager is running" +msgstr "En annan pakethanterare körs" + +#: ../src/update-manager.in:419 +msgid "" +"You can run only one package management application at the same time. Please " +"close this other application first." +msgstr "" +"Du kan endast köra ett pakethanteringsprogram på samma gång. Stäng det andra " +"programmet först." + +#: ../src/update-manager.in:437 +#, fuzzy +msgid "Updating package list..." +msgstr "Hittade %d matchande paket" + +#: ../src/update-manager.in:439 +#, fuzzy +msgid "Installing updates..." +msgstr "Letar efter uppdateringar..." + +#: ../src/update-manager.in:618 ../src/update-manager.in:621 +msgid "Your system is up-to-date!" +msgstr "Ditt system är aktuellt!" + +#: ../src/update-manager.in:619 +msgid "There are no updates available." +msgstr "Det finns inga tillgängliga uppdateringar." + +#: ../src/update-manager.in:644 +#, c-format +msgid "New version: %s" +msgstr "Ny version: %s" + +#: ../src/update-manager.in:668 +msgid "Your distribution is no longer supported" +msgstr "Din distribution stöds inte längre" + +#: ../src/update-manager.in:668 +msgid "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." +msgstr "" + +#: ../src/update-manager.in:682 +#, fuzzy +msgid "There is a new release of Ubuntu available!" +msgstr "Det finns inga tillgängliga uppdateringar." + +#: ../src/update-manager.in:682 +#, c-format +msgid "" +"A new release with the codename '%s' is available. Please see http://www." +"ubuntulinux.org/ for upgrade instructions." +msgstr "" + +#: ../src/update-manager.in:685 +msgid "Never show this message again" +msgstr "Visa aldrig detta meddelande igen" + +#: ../src/update-manager.in:781 +msgid "Initializing and getting list of updates..." +msgstr "Initierar och hämtar lista med uppdateringar..." + +#: ../src/update-manager.in:803 +msgid "You need to be root to run this program" +msgstr "Du måste vara root för att kunna köra detta program" + +#~ msgid "Software Sources" +#~ msgstr "Programvarukällor" + +#~ msgid "Sources" +#~ msgstr "Källor" + +#~ msgid "Temporary files" +#~ msgstr "Temporära filer" + +#~ msgid "Packages to install:" +#~ msgstr "Paket att installera:" + +#~ msgid "" +#~ "Failed to download changes. Please check if there is an active Internet " +#~ "connection." +#~ msgstr "" +#~ "Misslyckades med att hämta ändringar. Kontrollera att det finns en aktiv " +#~ "Internetanslutning." + +#~ msgid "Packages to install: " +#~ msgstr "Paket att installera: " + +#~ msgid "Properties" +#~ msgstr "Egenskaper" + +#~ msgid "Comment:" +#~ msgstr "Kommentar:" + +#~ msgid "Components" +#~ msgstr "Komponenter" + +#~ msgid "Distribution:" +#~ msgstr "Distribution:" + +#~ msgid "Internet Updates" +#~ msgstr "Internet-uppdateringar" + +#~ msgid "Type:" +#~ msgstr "Typ:" + +#~ msgid "<b>URL:</b>" +#~ msgstr "<b>URL:</b>" + +#~ msgid "URI:" +#~ msgstr "URI:" + +#~ msgid "URL:" +#~ msgstr "URL:" + +#~ msgid "User Interface" +#~ msgstr "Användargränssnitt" + +#~ msgid "Authentication" +#~ msgstr "Autentisering" + +#~ msgid "Details" +#~ msgstr "Detaljer" + +#~ msgid "Install" +#~ msgstr "Installera" + +#~ msgid "Version %s:" +#~ msgstr "Version %s:" + +#~ msgid "New version:" +#~ msgstr "Ny version" + +#~ msgid "Please wait while getting data." +#~ msgstr "Var vänlig vänta vid hämtande av data." + +#~ msgid "Please ensure that your network settings are correct." +#~ msgstr "Försäkra dig om att dina nätverksinställningar är korrekta." + +#~ msgid "Refreshing channel data" +#~ msgstr "Uppdaterar kanaldata" + +#~ msgid "Downloading channel information" +#~ msgstr "Hämtar kanalinformation" + +#~ msgid "Verifying" +#~ msgstr "Verifierar" + +#~ msgid "Unable to verify package signature for" +#~ msgstr "Kan inte verifiera paketsignatur för" + +#~ msgid "There is no package signature for" +#~ msgstr "Det finns ingen paketsignatur för" + +#~ msgid "Preparing Transaction" +#~ msgstr "Förbereder transaktion" + +#~ msgid "Installing" +#~ msgstr "Installerar" + +#~ msgid "Removing" +#~ msgstr "Tar bort" + +#~ msgid "Configuring" +#~ msgstr "Konfigurerar" + +#~ msgid "Brought to you by:" +#~ msgstr "Presenteras av:" + +#~ msgid "With love from:" +#~ msgstr "Kramar från:" + +#~ msgid "Best wishes from:" +#~ msgstr "Hälsningar från:" + +#~ msgid "Sincerely:" +#~ msgstr "Med vänliga hälsningar:" + +#~ msgid "Developed by chimps:" +#~ msgstr "Utvecklat av chimpanser:" + +#~ msgid "Licensed under the GNU General Public License, version 2" +#~ msgstr "Licensierat under GNU General Public License, version 2" + +#~ msgid "Group Activation" +#~ msgstr "Gruppaktivering" + +#~ msgid "Service:" +#~ msgstr "Tjänst:" + +#~ msgid "Email:" +#~ msgstr "E-post:" + +#~ msgid "Activation Code:" +#~ msgstr "Aktiveringskod:" + +#~ msgid "Activate" +#~ msgstr "Aktivera" + +#~ msgid "Please fill in both email and activation code." +#~ msgstr "Fyll i både e-postadress och aktiveringskod." + +#~ msgid "Unable to activate" +#~ msgstr "Kan inte aktivera" + +#~ msgid "" +#~ "Please ensure you typed the email address and activation code correctly" +#~ msgstr "" +#~ "Försäkra dig om att du angav e-postadressen och aktiveringskoden korrekt" + +#~ msgid "" +#~ "Unable to show help because the help files were missing. Please report " +#~ "this to your vendor." +#~ msgstr "" +#~ "Kan inte visa hjälp eftersom hjälpfilerna saknas. Rapportera detta till " +#~ "din leverantör." + +#~ msgid "" +#~ "Unable to show help because there are no applications available to view " +#~ "help." +#~ msgstr "" +#~ "Kan inte visa hjälp eftersom inga program för att visa hjälp är " +#~ "tillgängliga." + +#~ msgid "Are you sure you want to open %d package information windows?" +#~ msgstr "Är du säker på att du vill öppna %d fönster med paketinformation?" + +#~ msgid "Run Now" +#~ msgstr "Kör nu" + +#~ msgid "Perform installations and removals" +#~ msgstr "Utför installationer och borttagningar" + +#~ msgid "Channels" +#~ msgstr "Kanaler" + +#~ msgid "Change your channel subscriptions" +#~ msgstr "Ändra dina kanalprenumerationer" + +#~ msgid "Refresh" +#~ msgstr "Uppdatera" + +#~ msgid "Refresh channel data" +#~ msgstr "Uppdatera kanaldata" + +#~ msgid "Mark for _Installation" +#~ msgstr "Markera för _installation" + +#~ msgid "Mark selected packages for installation" +#~ msgstr "Markera valda paket för installation" + +#~ msgid "Mark for _Removal" +#~ msgstr "Markera för _borttagning" + +#~ msgid "Mark selected packages for removal" +#~ msgstr "Markera valda paket för borttagning" + +#~ msgid "_Cancel" +#~ msgstr "_Avbryt" + +#~ msgid "Cancel marked package actions" +#~ msgstr "Avbryt markerade paketåtgärder" + +#~ msgid "I_nformation" +#~ msgstr "I_nformation" + +#~ msgid "Package information" +#~ msgstr "Paketinformation" + +#~ msgid "_File" +#~ msgstr "_Arkiv" + +#~ msgid "_Edit" +#~ msgstr "_Redigera" + +#~ msgid "_View" +#~ msgstr "_Visa" + +#~ msgid "_Actions" +#~ msgstr "_Åtgärder" + +#~ msgid "_Help" +#~ msgstr "_Hjälp" + +#~ msgid "Connect to daemon..." +#~ msgstr "Anslut till demon..." + +#~ msgid "Connect to a remote daemon" +#~ msgstr "Anslut till en fjärrdemon" + +#~ msgid "Install from _File..." +#~ msgstr "Installera från _fil..." + +#~ msgid "Install a package from a local file" +#~ msgstr "Installera ett paket från en lokal fil" + +#~ msgid "Install from _URL..." +#~ msgstr "Installera från _URL..." + +#~ msgid "Install a package from a remote URL" +#~ msgstr "Installera ett paket från en fjärr-URL" + +#~ msgid "_Mount Directory..." +#~ msgstr "_Montera katalog..." + +#~ msgid "Mount a directory as a channel" +#~ msgstr "Montera en katalog som en kanal" + +#~ msgid "U_nmount Directory..." +#~ msgstr "A_vmontera katalog..." + +#~ msgid "Unmount a directory" +#~ msgstr "Avmontera en katalog" + +#~ msgid "_Activate..." +#~ msgstr "_Aktivera..." + +#~ msgid "Quit" +#~ msgstr "Avsluta" + +#~ msgid "Select _All" +#~ msgstr "Markera _alla" + +#~ msgid "Select all items" +#~ msgstr "Markera alla objekt" + +#~ msgid "Select _None" +#~ msgstr "Markera _inga" + +#~ msgid "Deselect all items" +#~ msgstr "Avmarkera alla objekt" + +#~ msgid "Services..." +#~ msgstr "Tjänster..." + +#~ msgid "Edit services" +#~ msgstr "Redigera tjänster" + +#~ msgid "Channel _Subscriptions..." +#~ msgstr "Kanal_prenumerationer..." + +#~ msgid "Edit your channel subscriptions" +#~ msgstr "Redigera dina kanalprenumerationer" + +#~ msgid "_Preferences..." +#~ msgstr "_Inställningar..." + +#~ msgid "_Users..." +#~ msgstr "_Användare..." + +#~ msgid "Edit user permissions for this daemon" +#~ msgstr "Redigera användarrättigheter för denna demon" + +#~ msgid "_Sidebar" +#~ msgstr "_Sidopanel" + +#~ msgid "Hide or show the Pending Actions sidebar" +#~ msgstr "Dölj eller visa sidopanelen med förestående åtgärder" + +#~ msgid "_Advanced Search Options" +#~ msgstr "_Avancerade sökalternativ" + +#~ msgid "Hide or show advanced search options" +#~ msgstr "Dölj eller visa avancerade sökalternativ" + +#~ msgid "_Channel Names" +#~ msgstr "_Kanalnamn" + +#~ msgid "Hide or show channel names in package lists" +#~ msgstr "Dölj eller visa kanalnamn i paketlistor" + +#~ msgid "Package _Information..." +#~ msgstr "Paket_information..." + +#~ msgid "View information about currently selected packages" +#~ msgstr "Visa information om för tillfället markerade paket" + +#~ msgid "_Daemon Information..." +#~ msgstr "_Demoninformation..." + +#~ msgid "View information about this daemon" +#~ msgstr "Visa information om denna demon" + +#~ msgid "Run _Now" +#~ msgstr "Kör _nu" + +#~ msgid "Run the current transaction" +#~ msgstr "Kör den aktuella transaktionen" + +#~ msgid "_Verify System Dependencies" +#~ msgstr "_Verifiera systemberoenden" + +#~ msgid "Verify that all system dependencies are met" +#~ msgstr "Verifiera att alla systemberoenden är lösta" + +#~ msgid "Mark for I_nstallation" +#~ msgstr "Markera för i_nstallation" + +#~ msgid "Mark this package for installation" +#~ msgstr "Markera detta paket för installation" + +#~ msgid "Mark this package for removal" +#~ msgstr "Markera detta paket för borttagning" + +#~ msgid "Cancel installation or removal mark" +#~ msgstr "Ta bort installations- eller borttagningsmarkering" + +#~ msgid "Re_fresh Channel Data" +#~ msgstr "_Uppdatera kanaldata" + +#~ msgid "Download latest channel data" +#~ msgstr "Hämta senaste kanaldata" + +#~ msgid "_Contents" +#~ msgstr "_Innehåll" + +#~ msgid "_About..." +#~ msgstr "_Om..." + +#~ msgid "Go to the '%s' page" +#~ msgstr "Gå till sidan \"%s\"" + +#~ msgid "All Channels" +#~ msgstr "Alla kanaler" + +#~ msgid "All Subscribed Channels" +#~ msgstr "Alla prenumererade kanaler" + +#~ msgid "No Channel/Unknown Channel" +#~ msgstr "Ingen kanal/Okänd kanal" + +#~ msgid "" +#~ "Unable to connect to the daemon:\n" +#~ " '%s'." +#~ msgstr "" +#~ "Kan inte ansluta till demonen:\n" +#~ " \"%s\"." + +#~ msgid "Starting daemon..." +#~ msgstr "Startar demon..." + +#~ msgid "Connect to this system" +#~ msgstr "Anslut till detta system" + +#~ msgid "Connect to a remote system" +#~ msgstr "Anslut till ett fjärrsystem" + +#~ msgid "Server:" +#~ msgstr "Server:" + +#~ msgid "User name:" +#~ msgstr "Användarnamn:" + +#~ msgid "Password:" +#~ msgstr "Lösenord:" + +#~ msgid "Connect" +#~ msgstr "Anslut" + +#~ msgid "Connection to daemon restored.\n" +#~ msgstr "Anslutningen till demonen återställd.\n" + +#~ msgid "Lost contact with the daemon!" +#~ msgstr "Tappade kontakten med demonen!" + +#~ msgid "Dependency Resolution" +#~ msgstr "Beroendeupplösning" + +#~ msgid "Verifying System" +#~ msgstr "Verifierar system" + +#~ msgid "Resolving Dependencies" +#~ msgstr "Löser beroenden" + +#~ msgid "" +#~ "You must agree to the licenses covering this software before installing " +#~ "it." +#~ msgstr "" +#~ "Du måste acceptera villkoren i licenserna som rör denna programvara innan " +#~ "du kan installera den." + +#~ msgid "I Agree" +#~ msgstr "Jag accepterar" + +#~ msgid "Dependency Resolution Failed" +#~ msgstr "Beroendeupplösning misslyckades" + +#~ msgid "System Verified" +#~ msgstr "Systemet verifierat" + +#~ msgid "" +#~ "All package dependencies are satisfied, and no corrective actions are " +#~ "required." +#~ msgstr "" +#~ "Alla paketberoenden tillfredsställs och inga korrigeringsåtgärder behövs." + +#~ msgid "Requested Installations" +#~ msgstr "Begärda installationer" + +#~ msgid "Requested Removals" +#~ msgstr "Begärda borttagningar" + +#~ msgid "Required Installations" +#~ msgstr "Nödvändiga installationer" + +#~ msgid "Required Removals" +#~ msgstr "Nödvändiga borttagningar" + +#~ msgid "Continue" +#~ msgstr "Fortsätt" + +#~ msgid "Channel" +#~ msgstr "Kanal" + +#~ msgid "Package" +#~ msgstr "Paket" + +#~ msgid "Current Version" +#~ msgstr "Aktuell version" + +#~ msgid "Size" +#~ msgstr "Storlek" + +#~ msgid "All" +#~ msgstr "Alla" + +#~ msgid "Installations" +#~ msgstr "Installationer" + +#~ msgid "Removals" +#~ msgstr "Borttagningar" + +#~ msgid "Upgrades" +#~ msgstr "Uppgraderingar" + +#~ msgid "User:" +#~ msgstr "Användare:" + +#~ msgid "Timeframe (days):" +#~ msgstr "Tidsperiod (dagar):" + +#~ msgid "Searching..." +#~ msgstr "Söker..." + +#~ msgid "Time" +#~ msgstr "Tid" + +#~ msgid "Action" +#~ msgstr "Åtgärd" + +#~ msgid "User" +#~ msgstr "Användare" + +#~ msgid "Old Version" +#~ msgstr "Gammal version" + +#~ msgid "History" +#~ msgstr "Historik" + +#~ msgid "_History" +#~ msgstr "_Historik" + +#~ msgid "No results found." +#~ msgstr "Inga resultat hittades." + +#~ msgid "%s is not a valid package" +#~ msgstr "%s är inte ett giltigt paket." + +#~ msgid "There are no valid packages to install" +#~ msgstr "Det finns inga giltiga paket att installera" + +#~ msgid "Install from File" +#~ msgstr "Installera från fil" + +#~ msgid "Downloading %s..." +#~ msgstr "Hämtar %s..." + +#~ msgid "Install from URL" +#~ msgstr "Installera från URL" + +#~ msgid "Package URL:" +#~ msgstr "Paket-URL:" + +#~ msgid "ERROR: You cannot specify both -h/--host and -l/--local options" +#~ msgstr "FEL: Du kan inte båda ange flaggorna -h/--host och -l/--local" + +#~ msgid "ERROR: You cannot specify a user to a local daemon" +#~ msgstr "FEL: Du kan inte ange en användare till en lokal demon" + +#~ msgid "Mirror" +#~ msgstr "Spegel" + +#~ msgid "Location" +#~ msgstr "Plats" + +#~ msgid "Unable to unmount '%s'" +#~ msgstr "Kan inte avmontera \"%s\"" + +#~ msgid "Browse..." +#~ msgstr "Bläddra..." + +#~ msgid "Mount Directory" +#~ msgstr "Montera katalog" + +#~ msgid "Mount channel" +#~ msgstr "Montera kanal" + +#~ msgid "Mount a directory as channel" +#~ msgstr "Montera katalog som kanal" + +#~ msgid "Channel Name:" +#~ msgstr "Kanalnamn:" + +#~ msgid "Directory:" +#~ msgstr "Katalog:" + +#~ msgid "Look for packages recursively" +#~ msgstr "Leta efter paket rekursivt" + +#~ msgid "Please choose the path for channel." +#~ msgstr "Ange en sökväg för kanalen." + +#~ msgid "Unmount Channel" +#~ msgstr "Avmontera kanal" + +#~ msgid "Unmount?" +#~ msgstr "Avmontera?" + +#~ msgid "%s News" +#~ msgstr "Nyheter för %s" + +#~ msgid "Connect to a locally running daemon" +#~ msgstr "Anslut till en demon som körs lokalt" + +#~ msgid "hostname" +#~ msgstr "värdnamn" + +#~ msgid "Contact daemon on specified host" +#~ msgstr "Kontakta demon på angiven värd" + +#~ msgid "username" +#~ msgstr "användarnamn" + +#~ msgid "Specify user name" +#~ msgstr "Ange användarnamn" + +#~ msgid "password" +#~ msgstr "lösenord" + +#~ msgid "Specify password" +#~ msgstr "Ange lösenord" + +#~ msgid "Print client version and exit" +#~ msgstr "Skriv ut klientversionsnummer och avsluta" + +#~ msgid "Get usage information" +#~ msgstr "Hämta användningsinformation" + +#~ msgid "Usage: %s <options> ..." +#~ msgstr "Användning: %s <flaggor> ..." + +#~ msgid "The following options are understood:" +#~ msgstr "Följande flaggor förstås:" + +#~ msgid "installed" +#~ msgstr "installerad" + +#~ msgid "newer" +#~ msgstr "nyare" + +#~ msgid "older" +#~ msgstr "äldre" + +#~ msgid "not installed" +#~ msgstr "inte installerad" + +#~ msgid "upgrade" +#~ msgstr "uppgradera" + +#~ msgid "downgrade" +#~ msgstr "nedgradera" + +#~ msgid "install" +#~ msgstr "installera" + +#~ msgid "remove" +#~ msgstr "ta bort" + +#~ msgid "Found 1 matching package" +#~ msgstr "Hittade 1 matchande paket" + +#~ msgid "No matching packages found" +#~ msgstr "Inga matchande paket hittades" + +# Patch = programfix enligt Datatermgruppen +# http://www.nada.kth.se/dataterm/rek.html#a141 +#~ msgid "Found %d matching patches" +#~ msgstr "Hittade %d matchande programfixar" + +#~ msgid "Found 1 matching patch" +#~ msgstr "Hittade 1 matchande programfix" + +#~ msgid "No matching patches found" +#~ msgstr "Inga matchande programfixar hittades" + +#~ msgid "Package Information" +#~ msgstr "Paketinformation" + +#~ msgid "Unnamed" +#~ msgstr "Namnlös" + +#~ msgid "Dependencies" +#~ msgstr "Beroenden" + +#~ msgid "Provides" +#~ msgstr "Tillhandahållanden" + +#~ msgid "Requires" +#~ msgstr "Krav" + +#~ msgid "Conflicts With" +#~ msgstr "Är i konflikt med" + +#~ msgid "Name" +#~ msgstr "Namn" + +#~ msgid "Version" +#~ msgstr "Version" + +#~ msgid "Package Size" +#~ msgstr "Paketstorlek" + +#~ msgid "Installed Size" +#~ msgstr "Installerad storlek" + +#~ msgid "Section" +#~ msgstr "Sektion" + +#~ msgid "Summary" +#~ msgstr "Sammanfattning" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "Status" +#~ msgstr "Status" + +#~ msgid "Importance" +#~ msgstr "Viktighet" + +#~ msgid "Patches" +#~ msgstr "Programfixar" + +# Osäker +#~ msgid "YOU Patches" +#~ msgstr "YOU-programfixar" + +#~ msgid "Searching for matching patches..." +#~ msgstr "Söker efter matchande programfixar..." + +#~ msgid "No matching patches found." +#~ msgstr "Inga matchande programfixar hittades." + +#~ msgid "%.1f%% completed" +#~ msgstr "%.1f%% klart" + +#~ msgid "Updating System" +#~ msgstr "Uppdaterar system" + +#~ msgid "Download cancelled" +#~ msgstr "Hämtning avbruten" + +#~ msgid "Transaction cancelled" +#~ msgstr "Transaktion avbruten" + +#~ msgid "Transaction Finished" +#~ msgstr "Transaktion slutförd" + +#~ msgid "Download Failed" +#~ msgstr "Hämtning misslyckades" + +#~ msgid "Unknown Error" +#~ msgstr "Okänt fel" + +#~ msgid "Processing Transaction" +#~ msgstr "Bearbetar transaktion" + +#~ msgid "The transaction has completed successfully" +#~ msgstr "Transaktionen har färdigställts utan problem" + +#~ msgid "Transaction failed" +#~ msgstr "Transaktion misslyckades" + +#~ msgid "Transaction Failed" +#~ msgstr "Transaktion misslyckades" + +#~ msgid "Interval to refresh channel data (in hours):" +#~ msgstr "Intervall för att uppdatera kanaldata (i timmar):" + +#~ msgid "Packages" +#~ msgstr "Paket" + +#~ msgid "Require package signatures" +#~ msgstr "Kräv paketsignaturer" + +#~ msgid "Maximum number of packages to download at once:" +#~ msgstr "Maximalt antal paket som ska hämtas på en gång:" + +#~ msgid "Enable package rollback" +#~ msgstr "Aktivera pakettillbakarullning" + +#~ msgid "Proxy" +#~ msgstr "Proxyserver" + +#~ msgid "Use a proxy" +#~ msgstr "Använd en proxyserver" + +#~ msgid "Proxy URL:" +#~ msgstr "Proxyserver-URL:" + +#~ msgid "Username:" +#~ msgstr "Användarnamn:" + +#~ msgid "You do not have permissions to view proxy settings" +#~ msgstr "Du har inte rättigheter att granska proxyserverinställningarna" + +#~ msgid "Cache downloaded packages and metadata" +#~ msgstr "Mellanlagra hämtade paket och metadata" + +#~ msgid "Location of cached data:" +#~ msgstr "Plats för mellanlagrad data:" + +#~ msgid "Expiration" +#~ msgstr "Utgång" + +#~ msgid "Cache expires" +#~ msgstr "Cachen utgår" + +#~ msgid "Current cache size:" +#~ msgstr "Aktuell cachestorlek:" + +#~ msgid "Are you sure you want to delete the package files in your cache?" +#~ msgstr "Är du säker på att du vill ta bort paketfilerna i din cache?" + +#~ msgid "Empty Cache" +#~ msgstr "Töm cache" + +#~ msgid "%d MB" +#~ msgstr "%d MB" + +#~ msgid "Value" +#~ msgstr "Värde" + +#~ msgid "Loading preferences..." +#~ msgstr "Läser in inställningar..." + +#~ msgid "%s Preferences" +#~ msgstr "Inställningar för %s" + +#~ msgid "Search" +#~ msgstr "Sök" + +#~ msgid "S_earch Packages" +#~ msgstr "S_ök paket" + +#~ msgid "Searching for matching packages..." +#~ msgstr "Söker efter matchande paket..." + +#~ msgid "No matching packages found." +#~ msgstr "Inga matchande paket hittades." + +#~ msgid "All Packages" +#~ msgstr "Alla paket" + +#~ msgid "Updates" +#~ msgstr "Uppdateringar" + +#~ msgid "Uninstalled Packages" +#~ msgstr "Avinstallerade paket" + +#~ msgid "Installed Packages" +#~ msgstr "Installerade paket" + +#~ msgid "All Sections" +#~ msgstr "Alla sektioner" + +#~ msgid "Productivity" +#~ msgstr "Produktivitet" + +#~ msgid "Imaging" +#~ msgstr "Bildbehandling" + +#~ msgid "Personal Info. Mgmt" +#~ msgstr "Personlig informationshantering" + +#~ msgid "X Windows" +#~ msgstr "X Windows" + +#~ msgid "Games" +#~ msgstr "Spel" + +#~ msgid "Multimedia" +#~ msgstr "Multimedia" + +#~ msgid "Internet" +#~ msgstr "Internet" + +#~ msgid "Utilities" +#~ msgstr "Verktyg" + +#~ msgid "System" +#~ msgstr "System" + +#~ msgid "Documentation" +#~ msgstr "Dokumentation" + +#~ msgid "Libraries" +#~ msgstr "Bibliotek" + +#~ msgid "Development" +#~ msgstr "Utveckling" + +#~ msgid "Development Tools" +#~ msgstr "Utvecklingsverktyg" + +#~ msgid "Miscellaneous" +#~ msgstr "Diverse" + +#~ msgid "Search descriptions" +#~ msgstr "Sök i beskrivningar" + +#~ msgid "Match:" +#~ msgstr "Matcha:" + +#~ msgid "Channel:" +#~ msgstr "Kanal:" + +#~ msgid "The daemon identified itself as:" +#~ msgstr "Demonen identifierade sig själv som:" + +#~ msgid "System type" +#~ msgstr "Systemtyp" + +#~ msgid "Server URL" +#~ msgstr "Server-URL" + +#~ msgid "Server supports enhanced features." +#~ msgstr "Servern stöder utökade funktioner." + +#~ msgid "Unable to contact the daemon." +#~ msgstr "Kunde inte kontakta demonen." + +#~ msgid "Dump daemon info to XML file" +#~ msgstr "Dumpa demon i XML-fil" + +#~ msgid "Could not open file '%s': %s" +#~ msgstr "Kunde inte öppna filen \"%s\": %s" + +#~ msgid "Choose file to write XML to" +#~ msgstr "Välj fil att skriva XML till" + +#~ msgid "Edit Services" +#~ msgstr "Redigera tjänster" + +#~ msgid "URL" +#~ msgstr "URL" + +#~ msgid "_Remove service" +#~ msgstr "_Ta bort tjänst" + +#~ msgid "_Add service" +#~ msgstr "_Lägg till tjänst" + +#~ msgid "Add Service" +#~ msgstr "Lägg till tjänst" + +#~ msgid "Service URL" +#~ msgstr "Tjänst-URL" + +#~ msgid "Pending Actions" +#~ msgstr "Förestående åtgärder" + +#~ msgid "%d pending install" +#~ msgstr "%d förestående installation" + +#~ msgid "%d pending installs" +#~ msgstr "%d förestående installationer" + +#~ msgid "%d pending removal" +#~ msgstr "%d förestående borttagning" + +#~ msgid "%d pending removals" +#~ msgstr "%d förestående borttagningar" + +#~ msgid "No pending actions" +#~ msgstr "Inga förestående åtgärder" + +#~ msgid "I_nstalled Software" +#~ msgstr "I_nstallerad programvara" + +#~ msgid "Available Software" +#~ msgstr "Tillgängliga program" + +#~ msgid "A_vailable Software" +#~ msgstr "T_illgängliga program" + +#~ msgid "Connected to %s" +#~ msgstr "Ansluten till %s" + +#~ msgid "Subscribed" +#~ msgstr "Prenumererad" + +#~ msgid "Channel Name" +#~ msgstr "Kanalnamn" + +#~ msgid "%s Channel Subscriptions" +#~ msgstr "Kanalprenumerationer på kanal %s" + +#~ msgid "" +#~ "You do not have permission to subscribe or unsubscribe from channels. " +#~ "You will be unable to make any changes to the subscriptions." +#~ msgstr "" +#~ "Du har inte rättighet att prenumerera eller säga upp prenumerationer på " +#~ "kanaler. Du kommer inte att kunna göra ändringar i prenumerationer." + +#~ msgid "Untitled" +#~ msgstr "Namnlös" + +#~ msgid "Are you sure you want to quit?" +#~ msgstr "Är du säker på att du vill avsluta?" + +#~ msgid "_Pending Actions" +#~ msgstr "_Förestående åtgärder" + +#~ msgid "_Updates" +#~ msgstr "_Uppdateringar" + +#~ msgid "_Update All" +#~ msgstr "_Uppdatera alla" + +#~ msgid "Privilege" +#~ msgstr "Privilegium" + +#~ msgid "" +#~ "If you remove superuser privileges from yourself, you will be unable to " +#~ "re-add them.\n" +#~ "\n" +#~ "Are you sure you want to do this?" +#~ msgstr "" +#~ "Om du tar bort superanvändarprivilegier från dig själv kommer du inte att " +#~ "kunna lägga till dem igen.\n" +#~ "\n" +#~ "Är du säker på att du vill göra detta?" + +#~ msgid "Enabled" +#~ msgstr "Aktiverad" + +#~ msgid "Edit Users" +#~ msgstr "Redigera användare" + +#~ msgid "Confirm:" +#~ msgstr "Bekräfta:" + +#~ msgid "Set Password" +#~ msgstr "Ange lösenord" + +#~ msgid "Password can not be empty." +#~ msgstr "Lösenord kan inte vara tomma." + +#~ msgid "Passwords do not match." +#~ msgstr "Lösenorden stämmer inte överens." + +#~ msgid "Set %s's password" +#~ msgstr "Ange lösenord för %s" + +#~ msgid "Users" +#~ msgstr "Användare" + +#~ msgid "Add" +#~ msgstr "Lägg till" + +#~ msgid "Are you sure you want to delete '%s'?" +#~ msgstr "Är du säker på att du vill ta bort \"%s\"?" + +#~ msgid "Remove" +#~ msgstr "Ta bort" + +#~ msgid "Privileges" +#~ msgstr "Privilegier" + +#~ msgid "Add new user" +#~ msgstr "Lägg till ny användare" + +#~ msgid "Invalid user name." +#~ msgstr "Ogiltigt användarnamn." + +#~ msgid "User '%s' already exists." +#~ msgstr "Användaren \"%s\" finns redan." + +#~ msgid "Patch" +#~ msgstr "Programfix" + +#~ msgid "Edit services..." +#~ msgstr "Redigera tjänster..." + +#~ msgid "_Edit services" +#~ msgstr "_Redigera tjänster" + +#~ msgid "Remove service" +#~ msgstr "Ta bort tjänst" + +#~ msgid "Remove Service" +#~ msgstr "Ta bort tjänst" + +#~ msgid "Add service" +#~ msgstr "Lägg till tjänst" + +#~ msgid "" +#~ "System could not be activated: Invalid activation code or email address." +#~ msgstr "" +#~ "Systemet kunde inte aktiveras: Ogiltig aktiveringskod eller e-postadress." + +#~ msgid "Services" +#~ msgstr "Tjänster" + +#~ msgid "Unable to mount '%s' as a channel" +#~ msgstr "Kan inte montera \"%s\" som en kanal" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "Server URL:" +#~ msgstr "Server-URL:" + +#~ msgid "Mirrors" +#~ msgstr "Speglar" + +#~ msgid "Connect..." +#~ msgstr "Anslut..." + +#~ msgid "Connect to %s" +#~ msgstr "Anslut till %s" + +#~ msgid "Update cancelled" +#~ msgstr "Uppdatering avbruten" + +#~ msgid "Update Failed" +#~ msgstr "Uppdatering misslyckades" + +#~ msgid "System successfully activated." +#~ msgstr "Systemet aktiverades framgångsrikt." + +#~ msgid "" +#~ "Please ensure you typed the email address and activation code correctly." +#~ msgstr "" +#~ "Försäkra dig om att du angav e-postadressen och aktiveringskoden korrekt." + +#~ msgid "Mark for Installation" +#~ msgstr "Markera för installation" + +#~ msgid "Mark for Removal" +#~ msgstr "Markera för borttagning" + +#~ msgid "Cancel" +#~ msgstr "Avbryt" + +#~ msgid "Information" +#~ msgstr "Information" + +#~ msgid "" +#~ "Unable to show help because it was not found or because you don't have " +#~ "any help viewers available." +#~ msgstr "" +#~ "Kan inte visa hjälp eftersom den inte hittades eller eftersom du inte har " +#~ "några hjälpvisare tillgängliga." + +#~ msgid "Update All" +#~ msgstr "Uppdatera alla" + +#~ msgid "System Packages" +#~ msgstr "Systempaket" + +#~ msgid "S_ystem Packages" +#~ msgstr "S_ystempaket" + +#~ msgid "Searching system for matching packages..." +#~ msgstr "Söker efter matchande paket på systemet..." + +#~ msgid "News" +#~ msgstr "Nyheter" + +#~ msgid "My Computer" +#~ msgstr "Den här datorn" + +#~ msgid "_My Computer" +#~ msgstr "_Den här datorn" + +#~ msgid "Installations and Removals" +#~ msgstr "Installationer och borttagningar" + +#~ msgid "Update Summary" +#~ msgstr "Uppdateringssammanfattning" + +#~ msgid "_Update Summary" +#~ msgstr "_Uppdateringssammanfattning" + +#~ msgid "Installations and _Removals" +#~ msgstr "Installationer och _borttagningar" + +#~ msgid "User name" +#~ msgstr "Användarnamn" + +#~ msgid "Password" +#~ msgstr "Lösenord" + +#~ msgid "Username" +#~ msgstr "Användarnamn" + +#~ msgid "%d KB" +#~ msgstr "%d kB" + +#~ msgid "%d kB" +#~ msgstr "%d kB" + +#~ msgid "Subscribe" +#~ msgstr "Prenumerera" + +#~ msgid "Package Information..." +#~ msgstr "Paketinformation..." + +#~ msgid "No Channel" +#~ msgstr "Ingen kanal" + +#~ msgid "Unknown Channel" +#~ msgstr "Okänd kanal" + +#~ msgid "Preferences" +#~ msgstr "Inställningar" + +#~ msgid "_About" +#~ msgstr "_Om" + +#~ msgid "About" +#~ msgstr "Om" + +#~ msgid "View" +#~ msgstr "Visa" + +#~ msgid "_Verify Installed Packages" +#~ msgstr "_Verifiera installerade paket" + +#~ msgid "_Install Local Packages..." +#~ msgstr "_Installera lokala paket..." + +#~ msgid "_Refresh" +#~ msgstr "_Uppdatera" + +#~ msgid "_Unsubscribe" +#~ msgstr "_Säg upp prenumeration" + +#~ msgid "_Users Manual" +#~ msgstr "_Användarhandbok" + +#~ msgid "Main Page" +#~ msgstr "Huvudsida" + +#~ msgid "Pause" +#~ msgstr "Pausa" + +#~ msgid "Download" +#~ msgstr "Hämta" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Error Page" +#~ msgstr "Felsida" + +#~ msgid "Misc Page" +#~ msgstr "Diversesida" + +#~ msgid "Executive Summary" +#~ msgstr "Sammanfattning" + +#~ msgid "" +#~ "Update packages individually (NOTE: This is an unsupported operation)" +#~ msgstr "" +#~ "Uppdatera paket individuellt (OBSERVERA: Denna operation stöds inte)" + +#~ msgid "Actual widget tag" +#~ msgstr "Riktig widgettagg" + +#~ msgid "No Proxy" +#~ msgstr "Ingen proxyserver" + +#~ msgid "HTTP Proxy" +#~ msgstr "HTTP-proxyserver" + +#~ msgid "SOCKS 4 Proxy" +#~ msgstr "SOCKS 4-proxyserver" + +#~ msgid "SOCKS 5 Proxy" +#~ msgstr "SOCKS 5-proxyserver" + +#~ msgid "Host" +#~ msgstr "Värd" + +#~ msgid "Port" +#~ msgstr "Port" + +#~ msgid "Authenticated Proxy" +#~ msgstr "Autentiserad proxyserver" + +#~ msgid "Send requests using HTTP 1.0" +#~ msgstr "Skicka begäran med HTTP 1.0" + +#~ msgid "Enable caching of downloaded data" +#~ msgstr "Använd mellanlagring av hämtad data" + +#~ msgid "Clear cached packages on exit" +#~ msgstr "Töm mellanlagrade paket vid avslut" + +#~ msgid "Clear cached packages after a period of time" +#~ msgstr "Töm mellanlagrade paket efter en tid" + +#~ msgid "Days:" +#~ msgstr "Dagar:" + +#~ msgid "Show more descriptive package names instead of the actual names." +#~ msgstr "Visa mer beskrivande paketnamn istället för de riktiga paketnamnen." + +#~ msgid "" +#~ "Ask before installing packages with signatures that cannot be verified." +#~ msgstr "" +#~ "Fråga innan installation av paket med signaturer som inte kan verifieras." + +#~ msgid "General" +#~ msgstr "Allmänt" + +#~ msgid "Find text:" +#~ msgstr "Sök text:" + +#~ msgid "Case sensitive" +#~ msgstr "Gör skillnad på gemener/VERSALER" + +#~ msgid "%P%%" +#~ msgstr "%P%%" + +#~ msgid "%P%% (%V of %U)" +#~ msgstr "%P%% (%V av %U)" + +#~ msgid "Do you wish to install this package anyway?" +#~ msgstr "Vill du ändå installera detta paket?" + +#~ msgid "Do not show this warning again." +#~ msgstr "Visa inte denna varning igen." + +#~ msgid "" +#~ "Warning! Removing this many packages can be dangerous\n" +#~ "and should only be done if you know what you are doing.\n" +#~ "\n" +#~ "Are you sure you want to proceed with this transaction?" +#~ msgstr "" +#~ "Varning! Att ta bort så här många paket kan vara farligt\n" +#~ "och du bör endast göra det om du vet vad du gör.\n" +#~ "\n" +#~ "Är du säker på att du vill fortsätta med denna\n" +#~ "transaktion?" + +#~ msgid "" +#~ "If you are behind a firewall and use a proxy to access web sites, you " +#~ "should\n" +#~ "enable proxy support here. If your proxy requires authentication, select\n" +#~ "\"Use authentication\" and enter your username and password.\n" +#~ "\n" +#~ "You can change these settings in the future by selecting Preferences from " +#~ "the\n" +#~ "Settings menu. These settings are on the Proxy tab.\n" +#~ "\n" +#~ "When you have correctly entered your proxy information, click OK to " +#~ "continue.\n" +#~ msgstr "" +#~ "Om du är bakom en brandvägg och använder en proxyserver för att komma åt\n" +#~ "webbplatser bör du slå på proxystöd här. Om din proxyserver kräver\n" +#~ "autentisering väljer du \"Använd autentisering\" och anger ditt\n" +#~ "användarnamn och lösenord.\n" +#~ "\n" +#~ "Du kan ändra dessa inställningar i framtiden genom att välja\n" +#~ "Inställningar i menyn Inställningar. Inställningarna finns på fliken\n" +#~ "Proxyserver.\n" +#~ "\n" +#~ "När du har angett din proxyinformation klickar du på OK för att\n" +#~ "fortsätta.\n" + +#~ msgid "Use authentication" +#~ msgstr "Använd autentisering" + +#~ msgid "The password you have entered is incorrect." +#~ msgstr "Lösenordet du angav är felaktigt." + +#~ msgid "Name: " +#~ msgstr "Namn: " + +#~ msgid "Progress: " +#~ msgstr "Förlopp: " + +#~ msgid "%P %%" +#~ msgstr "%P%%" + +#~ msgid "Downloading" +#~ msgstr "Hämtar" + +#~ msgid "First, the requested packages are downloaded from their source" +#~ msgstr "Först hämtas de begärda paketen från deras källa" + +#~ msgid "Done" +#~ msgstr "Klart" + +#~ msgid "Percent Complete" +#~ msgstr "Procent färdigt" + +#~ msgid "Next, packages are verified to ensure cryptographic integrity" +#~ msgstr "Sedan verifieras paketen för att garantera kryptografisk integritet" + +#~ msgid "Transacting" +#~ msgstr "Verkställer" + +#~ msgid "The new packages are installed and old packages are removed." +#~ msgstr "De nya paketen installeras och gamla paket tas bort." + +#~ msgid "Finishing up..." +#~ msgstr "Städar upp..." + +#~ msgid "" +#~ "The packages you requested are being downloaded and installed on your " +#~ "system." +#~ msgstr "" +#~ "Paketen du begärde håller på att hämtas och installeras på ditt system." + +#~ msgid "Total" +#~ msgstr "Totalt" + +#~ msgid "The packages you selected are being removed from your system" +#~ msgstr "Paketen du valde håller på att tas bort från ditt system" + +#~ msgid "Removal has finished." +#~ msgstr "Borttagningen har slutförts." + +#~ msgid "The packages you selected are being removed from your system." +#~ msgstr "Paketen du valde håller på att tas bort från ditt system." + +#~ msgid "Keyword not found" +#~ msgstr "Nyckelordet hittades inte" + +#~ msgid "<!--html-->Failed Dependencies" +#~ msgstr "<!--html-->Misslyckade beroenden" + +#~ msgid "Click here to send a dependency report" +#~ msgstr "Klicka här för att skicka en beroenderapport" + +#~ msgid "needed by: <b>%s</b>" +#~ msgstr "behövd av: <b>%s</b>" + +#~ msgid "conflicts with: <b>%s</b>" +#~ msgstr "är i konflikt med: <b>%s</b>" + +#~ msgid "depends on: <b>%s</b>" +#~ msgstr "beror på: <b>%s</b>" + +#~ msgid "needed by" +#~ msgstr "behövd av" + +#~ msgid "needs %s %s %s, which is being removed" +#~ msgstr "behöver %s %s %s, som kommer att tas bort" + +#~ msgid "needs %s %s %s, which cannot be found" +#~ msgstr "behöver %s %s %s, som inte kan hittas" + +#~ msgid "conflicts with %s %s %s" +#~ msgstr "är i konflikt med %s %s %s" + +#~ msgid "<!--html-->This package will be pulled in from the %s channel." +#~ msgstr "<!--html-->Detta paket kommer att hämtas från kanalen %s." + +#~ msgid "" +#~ "<!--html-->This package will be pulled in from the <b>unsubscribed</b> %s " +#~ "channel." +#~ msgstr "" +#~ "<!--html-->Detta paket kommer att hämtas från den <b>oprenumererade</b> " +#~ "kanalen %s." + +#~ msgid "<!--html-->Package Dependencies" +#~ msgstr "<!--html-->Paketberoenden" + +#~ msgid "" +#~ "<!--html-->Your system's package database is valid!<br><br>Click the " +#~ "Previous button to go back." +#~ msgstr "" +#~ "<!--html-->Ditt systems paketdatabas är giltig!<br><br>Klicka på knappen " +#~ "Föregående för att gå tillbaka." + +#~ msgid "<b>1</b> Requested Package" +#~ msgstr "<b>1</b> begärt paket" + +#~ msgid "<b>%d</b> Requested Packages" +#~ msgstr "<b>%d</b> begärda paket" + +#~ msgid "<b>1</b> Necessary Removal" +#~ msgstr "<b>1</b> nödvändig borttagning" + +#~ msgid "<b>%d</b> Necessary Removals" +#~ msgstr "<b>%d</b> nödvändiga borttagningar" + +#~ msgid "<b>1</b> Necessary Installation" +#~ msgstr "<b>1</b> nödvändig installation" + +#~ msgid "<b>%d</b> Necessary Installations" +#~ msgstr "<b>%d</b> nödvändiga installationer" + +#~ msgid "<!--html--><b>%s</b> will need to be downloaded. " +#~ msgstr "<!--html--><b>%s</b> kommer att behöva hämtas. " + +#~ msgid "<!--html-->After operations, <b>%s</b> of disk space will be used." +#~ msgstr "" +#~ "<!--html-->Efter åtgärderna kommer <b>%s</b> diskutrymme att användas." + +#~ msgid "<!--html-->After operations, <b>%s</b> of disk space will be freed." +#~ msgstr "" +#~ "<!--html-->Efter åtgärderna kommer <b>%s</b> diskutrymme att ha frigjorts." + +#~ msgid "" +#~ "<!--html-->After operations, no additional space will be freed or used." +#~ msgstr "" +#~ "<!--html-->Efter åtgärderna kommer inget ytterligare utrymme att frigöras " +#~ "eller användas." + +#~ msgid "" +#~ "<!--html-->You have insufficient disk space to download the requested " +#~ "packages. You must free up some disk space before you can continue. Some " +#~ "options include:" +#~ msgstr "" +#~ "<!--html-->Du har inte tillräckligt med diskutrymme för att kunna hämta " +#~ "de begärda paketen. Du måste skapa ledigt utrymme innan du kan fortsätta. " +#~ "Det finns en del alternativ:" + +#~ msgid "<!--html-->Removing some packages from your system" +#~ msgstr "<!--html-->Tar bort en del paket från ditt system" + +#~ msgid "Changing your <a href=\"updater:prefs_cache\">cache settings</a>." +#~ msgstr "Ändrar dina <a href=\"updater:prefs_cache\">cacheinställningar</a>." + +#~ msgid "<a href=\"updater:cache_clear\">Clearing your cache</a>." +#~ msgstr "<a href=\"updater:cache_clear\">Töm din cache</a>." + +#~ msgid "" +#~ "<font color=#ff0000>Warning!</font> There may not be sufficient disk " +#~ "space to install this package, and installation of this package may fail. " +#~ "You should free up some disk space before continuing." +#~ msgstr "" +#~ "<font color=#ff0000>Varning!</font> Det kan finnas otillräckligt med " +#~ "diskutrymme för att installera detta paket, och installation av detta " +#~ "paket kan misslyckas. Du bör skapa en del ledigt diskutrymme innan du " +#~ "fortsätter." + +#~ msgid "1 Package" +#~ msgstr "1 paket" + +#~ msgid "%d Packages" +#~ msgstr "%d paket" + +#~ msgid "<td width=25%>Old Version</td>" +#~ msgstr "<td width=25%>Gammal version</td>" + +# Här kommer en siffra framför +#~ msgid "Necessary Removals" +#~ msgstr "nödvändiga borttagningar" + +# Här kommer en siffra framför +#~ msgid "Necessary Installations" +#~ msgstr "nödvändiga installationer" + +#~ msgid "<html><body><b>Please wait, loading page...</b></body></html>" +#~ msgstr "" +#~ "<html><body><b>Var vänlig vänta, läser in sidan...</b></body></html>" + +#~ msgid "" +#~ "You have no packages from this channel currently installed on your system." +#~ msgstr "" +#~ "Du har för närvarande inte några paket från denna kanal installerade på " +#~ "ditt system." + +#~ msgid "" +#~ "You can visit the channel's <a href=\"updater:info_page\">about page</a> " +#~ "to get more information about what software is available, or you can go " +#~ "directly to the <a href=\"updater:available_page\">install page</a> to " +#~ "install software." +#~ msgstr "" +#~ "Du kan besöka kanalens <a href=\"updater:info_page\">om-sida</a> för att " +#~ "få mer information om vilken programvara som är tillgänglig, eller gå " +#~ "direkt till <a href=\"updater:available_page\">installationssidan</a> för " +#~ "att installera program." + +#~ msgid "View the <a href=\"updater:info_page\">about page</a>." +#~ msgstr "Visa <a href=\"updater:info_page\">om-sidan</a>." + +#~ msgid "View the <a href=\"updater:available_page\">install page</a>." +#~ msgstr "Visa <a href=\"updater:available_page\">installationssidan</a>." + +#~ msgid "Return to the <a href=\"updater:summary\">Summary</a>." +#~ msgstr "Gå tillbaka till <a href=\"updater:summary\">sammanfattningen</a>." + +#~ msgid "" +#~ "You don't have any packages installed from this channel. The following " +#~ "pre-defined sets of packages are available, or you may select individual " +#~ "packages from the <a href=updater:available_page>Install page</a>." +#~ msgstr "" +#~ "Du har inga paket installerade från denna kanal. Följande fördefinierade " +#~ "paket är tillgängliga, eller så kan du välja enstaka paket från <a " +#~ "href=updater:available_page>installationssidan</a>." + +#~ msgid "All of the software from this channel is up-to-date." +#~ msgstr "All programvara från denna kanal är aktuell." + +#~ msgid "" +#~ "To install new software from this channel, visit the <a href=\"updater:" +#~ "available_page\">install page</a>." +#~ msgstr "" +#~ "För att installera ny programvara går du till <a href=\"updater:" +#~ "available_page\">installationssidan</a>." + +#~ msgid "" +#~ "To remove already installed software from this channel, visit the <a href=" +#~ "\"updater:installed_page\">remove page</a>." +#~ msgstr "" +#~ "För att ta bort redan installerad programvara från denna kanal går du " +#~ "till <a href=\"updater:installed_page\">borttagningssidan</a>." + +#~ msgid "<a href=\"updater:unsubscribe\">Unsubscribe</a> from this channel." +#~ msgstr "" +#~ "<a href=\"updater:unsubscribed_page\">Säg upp prenumerationen</a> på " +#~ "denna kanal." + +#~ msgid "" +#~ "There is <b>1 update</b> available in this channel, totalling <b>%s</b> " +#~ "of data to be downloaded." +#~ msgstr "" +#~ "Det finns <b>1 uppdatering</b> tillgänglig i denna kanal, som kräver att " +#~ "<b>%s</b> data hämtas." + +#~ msgid "" +#~ "There are <b>%s updates</b> available in this channel, totalling <b>%s</" +#~ "b> of data to be downloaded." +#~ msgstr "" +#~ "Det finns <b>%s uppdateringar</b> tillgängliga i denna kanal, som kräver " +#~ "att <b>%s</b> data hämtas." + +#~ msgid "Essential Updates" +#~ msgstr "Nödvändiga uppdateringar" + +#~ msgid "Feature Enhancements" +#~ msgstr "Programförbättringar" + +#~ msgid "Minor Fixes/Updates" +#~ msgstr "Mindre fixar/uppdateringar" + +#~ msgid "1 update" +#~ msgstr "1 uppdatering" + +#~ msgid "%d updates" +#~ msgstr "%d uppdateringar" + +#~ msgid "" +#~ "The following packages from this channel are currently installed on your " +#~ "system." +#~ msgstr "" +#~ "Följande paket från denna kanal är för närvarande installerade på ditt " +#~ "system." + +#~ msgid "" +#~ "<p>All packages available in this channel are already installed on your " +#~ "system.</p>" +#~ msgstr "" +#~ "<p>Alla paket som är tillgängliga i denna kanal är redan installerade på " +#~ "ditt system.</p>" + +#~ msgid "" +#~ "<p>You can go to the <a href=\"updater:update_page\">Update page</a> to " +#~ "view available updates for your software in this channel, or return to " +#~ "the <a href=\"updater:summary\">Summary</a> to view all available updates." +#~ "</p>" +#~ msgstr "" +#~ "<p>Du kan gå till <a href=\"updater:update_page\">uppdateringssidan</a> " +#~ "för att se de uppdateringar till din programvara som finns i denna kanal, " +#~ "eller gå tillbaka till <a href=\"updater:summary\">sammanfattningen</a> " +#~ "för att se alla tillgängliga uppdateringar.</p>" + +#~ msgid "" +#~ "<p>You can go to the <a href=\"updater:summary\">Summary</a> to view all " +#~ "available updates for your system.</p>" +#~ msgstr "" +#~ "<p>Du kan gå till <a href=\"updater:summary\">sammanfattningen</a> för " +#~ "att se alla uppdateringar som är tillgängliga för ditt system.</p>" + +#~ msgid "" +#~ "<!--html-->The following packages from this channel are available for " +#~ "installation." +#~ msgstr "" +#~ "<!--html-->Följande paket från denna kanal är tillgängliga för " +#~ "installation." + +#~ msgid "" +#~ " Package names that are in <font color=\"#777777\">gray</font> indicate " +#~ "that a newer version of this package is already installed." +#~ msgstr "" +#~ " Paketnamn som är <font color=\"#777777\">grå</font> indikerar att en " +#~ "nyare version av detta paket redan är installerat." + +#~ msgid "Name:" +#~ msgstr "Namn:" + +#~ msgid "Installed Version:" +#~ msgstr "Installerad version:" + +#~ msgid "Size:" +#~ msgstr "Storlek:" + +#~ msgid "bytes" +#~ msgstr "byte" + +#~ msgid "Summary:" +#~ msgstr "Sammanfattning:" + +#~ msgid "or" +#~ msgstr "eller" + +#~ msgid " Update Now! " +#~ msgstr " Uppdatera nu! " + +#~ msgid " Remove Packages " +#~ msgstr " Ta bort paket " + +#~ msgid " Unsubscribe " +#~ msgstr " Säg upp prenumeration " + +#~ msgid " Subscribe " +#~ msgstr " Prenumerera " + +#~ msgid "Keyword Search:" +#~ msgstr "Nyckelordssökning:" + +#~ msgid "Credits" +#~ msgstr "Tack" + +#~ msgid "All links will open in an external browser window." +#~ msgstr "Alla länkar kommer att öppnas i ett externt webbläsarfönster." + +#~ msgid "You are currently subscribed to all available channels!" +#~ msgstr "Du prenumererar för närvarande på alla tillgängliga kanaler!" + +#~ msgid "" +#~ "There is <b>one update</b> available for your system, totalling <b>%s</b> " +#~ "of data to be downloaded." +#~ msgstr "" +#~ "Det finns <b>en uppdatering</b> tillgänglig för ditt system, som kräver " +#~ "att <b>%s</b> data hämtas." + +#~ msgid "" +#~ "There are <b>%s updates</b> available for your system, totalling <b>%s</" +#~ "b> of data to be downloaded." +#~ msgstr "" +#~ "Det finns <b>%s uppdateringar</b> tillgängliga för ditt system, som " +#~ "kräver att <b>%s</b> data hämtas." + +#~ msgid " Of these updates, <b>one</b> is <b>urgent</b>." +#~ msgstr " Utav dessa uppdateringar är <b>en brådskande</b>." + +#~ msgid " Of these updates, <b>%s</b> are <b>urgent</b>." +#~ msgstr " Utav dessa uppdateringar är <b>%s brådskande</b>." + +#~ msgid "1 other in the %s channel..." +#~ msgstr "1 annan i kanalen %s..." + +#~ msgid "%d others in the %s channel..." +#~ msgstr "%d andra i kanalen %s..." + +#~ msgid "Visible debugging level, ranges from 0 (nothing) to 6 (everything)" +#~ msgstr "Synlig felsökningsnivå, går från 0 (ingenting) till 6 (allting)" + +#~ msgid "Log file debugging level, ranges from 0 (nothing) to 6 (everything)" +#~ msgstr "" +#~ "Felsökningsnivå för loggfil, går från 0 (ingenting) till 6 (allting)" + +#~ msgid "The XAuthority file (usually from GDM)" +#~ msgstr "XAuthority-filen (vanligtvis från GDM)" + +#~ msgid "(Re)configure proxy settings before starting" +#~ msgstr "(Om)konfigurera proxyinställningar innan start" + +#~ msgid "" +#~ "Unable to access packaging subsystem:<br>%s<p>Please ensure that no other " +#~ "package management programs are running, and try again." +#~ msgstr "" +#~ "Kan inte komma åt paketsystem:<br>%s<p>Försäkra dig om att inga andra " +#~ "pakethanteringsprogram kör, och försök igen." + +#~ msgid "Downloading mirror list..." +#~ msgstr "Hämtar spegellista..." + +#~ msgid "Downloading channel artwork..." +#~ msgstr "Hämtar kanalgrafik..." + +#~ msgid "" +#~ "An error occurred trying to parse the channel list. You should ensure " +#~ "that you are running a supported distribution and try again later." +#~ msgstr "" +#~ "Ett fel inträffade vid försök att tolka kanallistan. Du bör försäkra dig " +#~ "om att du använder en distribution som stöds och försöka igen senare." + +#~ msgid "Navigation" +#~ msgstr "Navigering" + +#~ msgid "Downloading mirrors..." +#~ msgstr "Hämtar speglar..." + +#~ msgid "packages" +#~ msgstr "paket" + +#~ msgid "%%p%%%% (%s of %s)" +#~ msgstr "%%p%%%% (%s av %s)" + +#~ msgid "%s pulled from cache" +#~ msgstr "%s togs från cachen" + +#~ msgid "%s downloaded %d bytes in %d seconds (%s/s)" +#~ msgstr "%s hämtade %d byte på %d sekunder (%s/s)" + +#~ msgid "%p%% (%v of %u)" +#~ msgstr "%p%% (%v av %u)" + +#~ msgid "Cryptographic verification of %s (%s) has FAILED." +#~ msgstr "Kryptografisk verifiering av %s (%s) har MISSLYCKATS." + +#~ msgid "" +#~ "INFO:\n" +#~ "Name: %s (%s)\n" +#~ "Version: %s\n" +#~ "Release: %s\n" +#~ "Package Filename:\n" +#~ "%s" +#~ msgstr "" +#~ "INFORMATION:\n" +#~ "Namn: %s (%s)\n" +#~ "Version: %s\n" +#~ "Släpp: %s\n" +#~ "Paketfilnamn:\n" +#~ "%s" + +#~ msgid "Verification of %s (%s) is inconclusive; aborting" +#~ msgstr "Verifiering av %s (%s) är inte beviskraftig; avbryter" + +#~ msgid "Verification of %s (%s) is inconclusive; continuing" +#~ msgstr "Verifiering av %s (%s) är inte beviskraftig; fortsätter" + +#~ msgid "%s (%s) has been verified as cryptographically secure by %s" +#~ msgstr "%s (%s) har verifierats som kryptografiskt säker av %s" + +#~ msgid "The integrity of %s (%s) has been confirmed." +#~ msgstr "Integriteten av %s (%s) har bekräftats." + +#~ msgid "Unable to create directory %s for local package storage" +#~ msgstr "Kan inte skapa katalogen %s för lokal paketlagring" + +#~ msgid "Download Log" +#~ msgstr "Hämtningslogg" + +#~ msgid "Verification Log" +#~ msgstr "Verifieringslogg" + +#~ msgid "%.2f MB" +#~ msgstr "%.2f MB" + +#~ msgid "%d bytes" +#~ msgstr "%d byte" + +#~ msgid "%%p%%%% (%s of %s) - %s/s" +#~ msgstr "%%p%%%% (%s av %s) - %s/s" + +#~ msgid "%s - %s/s" +#~ msgstr "%s - %s/s" + +#~ msgid "Downloading data..." +#~ msgstr "Hämtar data..." + +#~ msgid "%%p%%%% (%s of %s) - Paused" +#~ msgstr "%%p%%%% (%s av %s) - Gör paus" + +#~ msgid "%s - Paused" +#~ msgstr "%s - Gör paus" + +#~ msgid "%.2f%sMB" +#~ msgstr "%.2f%sMB" + +#~ msgid "%d%sKB" +#~ msgstr "%d%skB" + +#~ msgid "%d%sbytes" +#~ msgstr "%d%sbyte" + +#~ msgid "zero" +#~ msgstr "noll" + +#~ msgid "one" +#~ msgstr "en" + +#~ msgid "two" +#~ msgstr "två" + +#~ msgid "three" +#~ msgstr "tre" + +#~ msgid "five" +#~ msgstr "fem" + +#~ msgid "six" +#~ msgstr "sex" + +#~ msgid "seven" +#~ msgstr "sju" + +#~ msgid "eight" +#~ msgstr "åtta" + +#~ msgid "Fatal Error" +#~ msgstr "Ödesdigert fel" + +#~ msgid "Error" +#~ msgstr "Fel" + +#~ msgid "Possible actions:" +#~ msgstr "Möjliga åtgärder:" + +#~ msgid "<li>Click <b>Quit</b> to quit." +#~ msgstr "<li>Klicka på <b>Avsluta</b> för att avsluta." + +#~ msgid "<li>Click <b>Retry</b> to retry." +#~ msgstr "<li>Klicka på <b>Försök igen</b> för att försöka igen." + +#~ msgid "<li>Click <b>Cancel</b> to cancel." +#~ msgstr "<li>Klicka på <b>Avbryt</b> för att avbryta." + +#~ msgid "Retry" +#~ msgstr "Försök igen" + +#~ msgid "Load file(s)" +#~ msgstr "Läs in fil(er)" + +#~ msgid "Close" +#~ msgstr "Stäng" + +#~ msgid "No mirror (always use default host)" +#~ msgstr "Ingen spegel (använd alltid standardvärd)" + +#~ msgid "N/A" +#~ msgstr "-" + +#~ msgid "Unable to parse mirror list." +#~ msgstr "Kan inte tolka spegellista." + +#~ msgid "Unable to save mirror list (%s)." +#~ msgstr "Kan inte tolka spegellista (%s)." + +#~ msgid "<p>You can continue without any mirrors by pressing \"Cancel\"" +#~ msgstr "" +#~ "<p>Du kan fortsätta utan några speglar genom att trycka på \"Avbryt\"" + +#~ msgid "Allowed cache difference:" +#~ msgstr "Tillåten cacheskillnad:" + +#~ msgid "seconds" +#~ msgstr "sekunder" + +#~ msgid "<b>%d</b> %s" +#~ msgstr "<b>%d</b> %s" + +# Här kommer en siffra framför +#~ msgid "Requested Packages" +#~ msgstr "begärda paket" + +#~ msgid "Prefs" +#~ msgstr "Inställn" + +#~ msgid "User Interface Design" +#~ msgstr "Design av användargränssnittet" + +#~ msgid "Artwork" +#~ msgstr "Artister" + +#~ msgid "Unable to access packaging subsystem:<br>%s" +#~ msgstr "Kan inte komma åt paketeringsundersystem:<br>%s" + +#~ msgid "Transfer of %s did not complete: %s" +#~ msgstr "Överföring av %s fullföljdes inte: %s" + +#~ msgid "File not found" +#~ msgstr "Filen hittades inte" + +#~ msgid "IO error" +#~ msgstr "IO-fel" + +#~ msgid "User Registration" +#~ msgstr "Användarregistrering" + +#~ msgid "GUI Options" +#~ msgstr "Inställningar för användargränssnittet" + +#~ msgid "No description available" +#~ msgstr "Ingen beskrivning finns tillgänglig" + +#~ msgid "translator_credits" +#~ msgstr "" +#~ "Christian Rose\n" +#~ "Skicka synpunkter på översättningen till sv@li.org" + +#~ msgid "translator-credits" +#~ msgstr "" +#~ "Christian Rose\n" +#~ "Skicka synpunkter på översättningen till sv@li.org" diff --git a/po/xh.po b/po/xh.po new file mode 100644 index 00000000..61d2c333 --- /dev/null +++ b/po/xh.po @@ -0,0 +1,82 @@ +# Xhosa translation of update-notifier +# Copyright (C) 2005 Canonical Ltd. +# This file is distributed under the same license as the update-notifier package. +# Translation by Canonical Ltd <translations@canonical.com> with thanks to +# Translation World CC in South Africa, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: update-notifier\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-08 10:20+0100\n" +"PO-Revision-Date: 2005-03-30 13:25+0200\n" +"Last-Translator: Canonical Ltd <translations@canonical.com>\n" +"Language-Team: Xhosa <xh-translate@ubuntu.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n!=1;\n" + +#: src/update-notifier.c:59 +#, c-format +msgid "" +"Please enter your password to run:\n" +" %s" +msgstr "" +"Nceda faka i-password yakho ukuqhuba:\n" +" %s" + +#: src/update.c:10 +msgid "Show updates" +msgstr "Bonisa izihlaziyo" + +#: src/update.c:11 +msgid "Install all updates" +msgstr "Seka zonke izihlaziyo" + +#: src/update.c:12 +msgid "Package Manager" +msgstr "UMlawuli woMqulu weNkqubo" + +#: src/update.c:13 +msgid "Update package list now" +msgstr "Hlaziya uluhlu lomqulu wenkqubo ngoku" + +#: src/update.c:54 +#, c-format +msgid "There is %i update available" +msgid_plural "There are %i updates available" +msgstr[0] "Kukho i-%i yohlaziyo ekhoyo" +msgstr[1] "Kukho i-%i yohlaziyo ekhoyo" + +#: src/update.c:58 +msgid "Press this icon to show the updates." +msgstr "Cofa lo mfanekiso ungumqondiso ukubonisa izihlaziyo." + +#: src/update.c:81 +msgid "Software preferences" +msgstr "Uluhlu lwezinto ezikhethwayo zeenkqubo zekhompyutha" + +#: src/hooks.c:18 +#, c-format +msgid "There are %i post-update informations available!" +msgstr "Kukho i-%i yolwazi lwasemva kohlaziyo olukhoyo!" + +#: src/hooks.c:21 +msgid "Press this icon to show the information." +msgstr "Cofa lo mfanekiso ungumqondiso ukubonisa ulwazi." + +#: ui/hooks-dialog.glade:92 +msgid "" +"<span weight=\"bold\" size=\"larger\">Update information</span>\n" +"\n" +"There is some post software update information available. Please read the following information carefully." +msgstr "" +"<span weight=\"bold\" size=\"larger\">Ulwazi oluhlaziyiweyo</span>\n" +"\n" +"Kukho iinkqubo zekhompyutha zasemva kohlaziyo zolwazi olukhoyo. Nceda funda olu lwazi lulandelayo ngocoselelo." + +#: ui/hooks-dialog.glade:180 +msgid "Run now" +msgstr "Phumeza inkqubo ngoku" + diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 00000000..669dd9c7 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,476 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Funda Wang <fundawang@linux.net.cn>, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: update-manager HEAD\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-04 10:47+0200\n" +"PO-Revision-Date: 2005-03-21 22:00+0800\n" +"Last-Translator: Funda Wang <fundawang@linux.net.cn>\n" +"Language-Team: zh_CN <i18n-translation@lists.linux.net.cn>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../data/gnome-software-properties.desktop.in.h:1 +msgid "Edit software sources and settings" +msgstr "编辑软件源及设置" + +#: ../data/gnome-software-properties.desktop.in.h:2 +msgid "Software Properties" +msgstr "软件属性" + +#: ../data/gnome-software-properties.glade.h:1 +msgid "<b>Comment:</b>" +msgstr "<b>注释:</b>" + +#: ../data/gnome-software-properties.glade.h:2 +msgid "<b>Components</b>" +msgstr "<b>组件</b>" + +#: ../data/gnome-software-properties.glade.h:3 +msgid "<b>Distribution:</b>" +msgstr "<b>发行版:</b>" + +#: ../data/gnome-software-properties.glade.h:4 +msgid "<b>Internet Updates</b>" +msgstr "<b>Internet 更新</b>" + +#: ../data/gnome-software-properties.glade.h:5 +msgid "<b>Repository</b>" +msgstr "<b>仓库</b>" + +#: ../data/gnome-software-properties.glade.h:6 +msgid "<b>Sections:</b>" +msgstr "<b>节:</b>" + +#: ../data/gnome-software-properties.glade.h:7 +msgid "<b>Software Sources</b>" +msgstr "<b>软件源</b>" + +#: ../data/gnome-software-properties.glade.h:8 +msgid "<b>Temporary files</b>" +msgstr "<b>临时文件</b>" + +#: ../data/gnome-software-properties.glade.h:9 +msgid "<b>Type:</b>" +msgstr "<b>类型:</b>" + +#: ../data/gnome-software-properties.glade.h:10 +msgid "<b>URI:</b>" +msgstr "<b>URI:</b>" + +#: ../data/gnome-software-properties.glade.h:11 +msgid "<b>User Interface</b>" +msgstr "<b>用户界面</b>" + +#: ../data/gnome-software-properties.glade.h:12 +msgid "" +"<big><b>Authentication keys</b></big>\n" +"\n" +"You can add and remove authentication keys in this dialog. A key makes it " +"possible to check verify the integrity of the software you download." +msgstr "" + +#: ../data/gnome-software-properties.glade.h:15 +msgid "" +"<big><b>Enter the complete APT line of the repository that you want to add</" +"b></big>\n" +"\n" +"The APT line contains the type, location and content of a repository, for " +"example <i>\"deb http://ftp.debian.org sarge main\"</i>. You can find a " +"detailed description of the syntax in the documentation." +msgstr "" + +#: ../data/gnome-software-properties.glade.h:18 +msgid "APT line:" +msgstr "APT 行:" + +#: ../data/gnome-software-properties.glade.h:19 +msgid "A_uthentication" +msgstr "身份验证(_U)" + +#: ../data/gnome-software-properties.glade.h:20 +msgid "Add _CD" +msgstr "添加 CD(_C)" + +#: ../data/gnome-software-properties.glade.h:21 +msgid "" +"Add a new key file to the trusted keyring. Make sure that you got the key " +"over a secure channel and that you trust the owner. " +msgstr "" + +#: ../data/gnome-software-properties.glade.h:22 +msgid "Automatically check for software _updates." +msgstr "自动检查软件更新(_U)。" + +#: ../data/gnome-software-properties.glade.h:23 +msgid "Automatically clean _temporary packages files" +msgstr "自动清理临时包文件(_T)" + +#: ../data/gnome-software-properties.glade.h:24 +msgid "" +"Binary\n" +"Source" +msgstr "" +"二进制\n" +"源代码" + +#: ../data/gnome-software-properties.glade.h:26 +msgid "Clean interval in days: " +msgstr "清理间隔(以天计):" + +#: ../data/gnome-software-properties.glade.h:27 +msgid "Delete _old packages in the package cache" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:28 +msgid "Edit Repository..." +msgstr "编辑仓库..." + +#: ../data/gnome-software-properties.glade.h:29 +msgid "Maximum age in days:" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:30 +msgid "Maximum size in MB:" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:31 +msgid "Remove the selected key from the trusted keyring." +msgstr "从信任的密钥环中删除选中的密钥。" + +#: ../data/gnome-software-properties.glade.h:32 +msgid "Restore default keys" +msgstr "恢复默认密钥" + +#: ../data/gnome-software-properties.glade.h:33 +msgid "" +"Restore the default keys shiped with the distribution. This will not change " +"user installed keys." +msgstr "" + +#: ../data/gnome-software-properties.glade.h:34 +msgid "Set _maximum size for the package cache" +msgstr "" + +#: ../data/gnome-software-properties.glade.h:35 +msgid "Settings" +msgstr "设置" + +#: ../data/gnome-software-properties.glade.h:36 +msgid "Show disabled software sources" +msgstr "显示禁用的软件源" + +#: ../data/gnome-software-properties.glade.h:37 +msgid "Software Preferences" +msgstr "软件首选项" + +#: ../data/gnome-software-properties.glade.h:38 +msgid "Update interval in days: " +msgstr "更新间隔(以天计):" + +#: ../data/gnome-software-properties.glade.h:39 +msgid "_Add Repository" +msgstr "添加仓库(_A)" + +#: ../data/gnome-software-properties.glade.h:40 +msgid "_Custom" +msgstr "自定义(_C)" + +#: ../data/gnome-software-properties.glade.h:41 +msgid "_Download upgradable packages" +msgstr "下载可更新的包(_D)" + +#: ../data/update-manager.desktop.in.h:1 +msgid "Show available updates and choose which to install" +msgstr "显示可用的更新并选择要安装的更新" + +#: ../data/update-manager.desktop.in.h:2 +msgid "Ubuntu Update Manager" +msgstr "Ubuntu 更新管理器" + +#: ../data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "更新管理器" + +#: ../data/update-manager.glade.h:1 +msgid "<b>Details</b>" +msgstr "<b>细节</b>" + +#: ../data/update-manager.glade.h:2 +#, fuzzy +msgid "<b>Packages to install:</b>" +msgstr "要安装的软件包:" + +#: ../data/update-manager.glade.h:3 ../src/update-manager.in:629 +msgid "" +"<big><b>Available Updates</b></big>\n" +"\n" +"The following packages are found to be upgradable. You can upgrade them by " +"using the Install button." +msgstr "" + +#: ../data/update-manager.glade.h:6 +msgid "" +"<span weight=\"bold\" size=\"larger\">Downloading changes</span>\n" +"\n" +"Need to get the changes from the central server" +msgstr "" + +#: ../data/update-manager.glade.h:9 +msgid "Cancel downloading the changelog" +msgstr "取消更新日志的下载" + +#: ../data/update-manager.glade.h:10 +msgid "Changes" +msgstr "更改" + +#: ../data/update-manager.glade.h:11 +msgid "Description" +msgstr "描述" + +#: ../data/update-manager.glade.h:12 +msgid "Reload" +msgstr "重新装入" + +#: ../data/update-manager.glade.h:13 +msgid "Reload the package information from the server." +msgstr "从服务器重新装入软件包信息。" + +#: ../data/update-manager.glade.h:14 +msgid "Software Updates" +msgstr "软件更新" + +#: ../data/update-manager.glade.h:15 +msgid "_Install" +msgstr "安装(_I)" + +#: ../src/aptsources.py.in:234 ../src/aptsources.py.in:282 +#: ../src/aptsources.py.in:328 +msgid "Officially supported" +msgstr "官方支持" + +#: ../src/aptsources.py.in:235 ../src/aptsources.py.in:283 +msgid "Restricted copyright" +msgstr "版权限制" + +#: ../src/aptsources.py.in:236 ../src/aptsources.py.in:284 +msgid "Community maintained (Universe)" +msgstr "社区维护" + +#: ../src/aptsources.py.in:237 ../src/aptsources.py.in:285 +msgid "Non-free (Multiverse)" +msgstr "非自由" + +#: ../src/aptsources.py.in:248 ../src/aptsources.py.in:306 +#: ../src/aptsources.py.in:318 +msgid "Ubuntu 5.04 Security Updates" +msgstr "Ubuntu 5.04 安全更新" + +#: ../src/aptsources.py.in:253 ../src/aptsources.py.in:310 +#, fuzzy +msgid "Ubuntu 5.04 Updates" +msgstr "Ubuntu 5.04 安全更新" + +#: ../src/aptsources.py.in:276 +#, fuzzy +msgid "Binary" +msgstr "" +"二进制\n" +"源代码" + +#: ../src/aptsources.py.in:277 +#, fuzzy +msgid "Source" +msgstr "" +"二进制\n" +"源代码" + +#: ../src/aptsources.py.in:289 ../src/aptsources.py.in:293 +msgid "CD" +msgstr "CD" + +#: ../src/aptsources.py.in:314 ../src/aptsources.py.in:322 +msgid "Ubuntu 4.10 Security Updates" +msgstr "Ubuntu 4.10 安全更新" + +#: ../src/aptsources.py.in:329 +msgid "Contributed software" +msgstr "贡献的软件" + +#: ../src/aptsources.py.in:330 +msgid "Non-free software" +msgstr "非自由软件" + +#: ../src/aptsources.py.in:331 +msgid "US export restricted software" +msgstr "美国限制出口的软件" + +#: ../src/aptsources.py.in:346 +msgid "Debian Stable Security Updates" +msgstr "Debian 稳定版安全更新" + +#. some known keys +#: ../src/dialog_apt_key.py.in:37 +msgid "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" +msgstr "" + +#: ../src/dialog_apt_key.py.in:38 +msgid "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" +msgstr "" + +#: ../src/dialog_apt_key.py.in:122 +msgid "Choose a key-file" +msgstr "" + +#: ../src/dialog_apt_key.py.in:132 +msgid "Error importing selected file" +msgstr "" + +#: ../src/dialog_apt_key.py.in:133 +msgid "The selected file may not be a GPG key file or it might be corrupt." +msgstr "" + +#: ../src/dialog_apt_key.py.in:145 +msgid "Error removing the key" +msgstr "" + +#: ../src/dialog_apt_key.py.in:146 +msgid "The key you selected could not be removed. Please report this as a bug." +msgstr "" + +#: ../src/gnome-software-properties.in:72 +msgid "Repositories changed" +msgstr "仓库已变更" + +#: ../src/gnome-software-properties.in:74 +#, c-format +msgid "" +"The repository information has changes. A backup copy of your sources.list " +"is stored in %s.save. \n" +"\n" +"You need to reload the package list from the servers for your changes to " +"take effect. Do you want to do this now?" +msgstr "" + +#: ../src/update-manager.in:124 +msgid "Your system has broken packages!" +msgstr "您的系统有损坏的软件包!" + +#: ../src/update-manager.in:125 +msgid "" +"This means that some dependencies of the installed packages are not " +"satisfied. Please use \"Synaptic\" or \"apt-get\" to fix the situation." +msgstr "" + +#: ../src/update-manager.in:139 +msgid "It is not possible to upgrade all packages." +msgstr "无法升级全部软件包。" + +#: ../src/update-manager.in:141 +msgid "" +"This means that besides the actual upgrade of the packages some further " +"action (such as installing or removing packages) is required. Please use " +"Synaptic \"Smart Upgrade\" or \"apt-get dist-upgrade\" to fix the situation." +msgstr "" + +#: ../src/update-manager.in:154 +msgid "The following packages are not upgraded: " +msgstr "" + +#: ../src/update-manager.in:232 +msgid "Changes not found, the server may not be updated yet." +msgstr "更改未找到,服务器可能尚未更新。" + +#: ../src/update-manager.in:235 +msgid "" +"Failed to download changes. Please check if there is an active internet " +"connection." +msgstr "" + +#: ../src/update-manager.in:255 +#, c-format +msgid "Version %s: \n" +msgstr "版本 %s:\n" + +#: ../src/update-manager.in:303 +msgid "Downloading changes..." +msgstr "正在下载更改..." + +#: ../src/update-manager.in:358 +msgid "The updates are being applied." +msgstr "更新已经应用。" + +#: ../src/update-manager.in:360 +msgid "Upgrade finished" +msgstr "更新已经完成" + +#: ../src/update-manager.in:417 +msgid "Another package manager is running" +msgstr "正在运行另外一个软件包管理器" + +#: ../src/update-manager.in:419 +msgid "" +"You can run only one package management application at the same time. Please " +"close this other application first." +msgstr "" + +#: ../src/update-manager.in:437 +msgid "Updating package list..." +msgstr "" + +#: ../src/update-manager.in:439 +msgid "Installing updates..." +msgstr "" + +#: ../src/update-manager.in:618 ../src/update-manager.in:621 +msgid "Your system is up-to-date!" +msgstr "您的系统已为最新!" + +#: ../src/update-manager.in:619 +msgid "There are no updates available." +msgstr "没有可用的更新。" + +#: ../src/update-manager.in:644 +#, c-format +msgid "New version: %s" +msgstr "新版本:%s" + +#: ../src/update-manager.in:668 +msgid "Your distribution is no longer supported" +msgstr "您的发行版不再被支持" + +#: ../src/update-manager.in:668 +msgid "" +"Please upgrade to a newer version of Ubuntu Linux. The version you are " +"running will no longer get security fixes or other critical updates. Please " +"see http://www.ubuntulinux.org for upgrade information." +msgstr "" + +#: ../src/update-manager.in:682 +#, fuzzy +msgid "There is a new release of Ubuntu available!" +msgstr "没有可用的更新。" + +#: ../src/update-manager.in:682 +#, c-format +msgid "" +"A new release with the codename '%s' is available. Please see http://www." +"ubuntulinux.org/ for upgrade instructions." +msgstr "" + +#: ../src/update-manager.in:685 +msgid "Never show this message again" +msgstr "不再显示此消息" + +#: ../src/update-manager.in:781 +msgid "Initializing and getting list of updates..." +msgstr "正在初始化并获得更新列表..." + +#: ../src/update-manager.in:803 +msgid "You need to be root to run this program" +msgstr "您需要以 root 身份运行此程序" diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 00000000..62ea2e68 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,10 @@ +exedir = $(prefix)/bin + +exe_SCRIPTS = update-manager + +properties_modules_DATA = utils.py +properties_modulesdir = $(datadir)/update-manager/python + + +EXTRA_DIST = update-manager.in \ + utils.py diff --git a/src/aptsources.py.in b/src/aptsources.py.in new file mode 100644 index 00000000..7badd141 --- /dev/null +++ b/src/aptsources.py.in @@ -0,0 +1,442 @@ +# aptsource.py.in - parse sources.list +# +# Copyright (c) 2004 Canonical +# 2004 Michiel Sikkes +# +# Author: Michiel Sikkes <michiel@eyesopened.nl> +# Michael Vogt <mvo@debian.org> +# +# 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 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import string +import gettext +import re + +# actual source.list entries +class SourceEntry: + + # works mostely like split but takes [] into account + def mysplit(self, line): + line = string.strip(line) + pieces = [] + tmp = "" + # we are inside a [..] block + p_found = False + space_found = False + for i in range(len(line)): + if line[i] == "[": + p_found=True + tmp += line[i] + elif line[i] == "]": + p_found=False + tmp += line[i] + elif space_found and not line[i].isspace(): # we skip one or more space + space_found = False + pieces.append(tmp) + tmp = line[i] + elif line[i].isspace() and not p_found: # found a whitespace + space_found = True + else: + tmp += line[i] + # append last piece + if len(tmp) > 0: + pieces.append(tmp) + return pieces + + + # parse a given source line and split it into the fields we need + def parse(self,line): + line = string.strip(self.line) + #print line + # check if the source is enabled/disabled + if line == "" or line == "#": + self.invalid = True + return + if line[0] == "#": + self.disabled = True + pieces = string.split(line[1:]) + # if it looks not like a disabled deb line return + if not (pieces[0] == "deb" or pieces[0] == "deb-src"): + self.invalid = True + return + else: + line = line[1:] + # check for another "#" in the line (this is treated as a comment) + i = line.find("#") + if i > 0: + self.comment = line[i+1:] + line = line[:i] + # source is ok, split it and see what we have + pieces = self.mysplit(line) + # Type, deb or deb-src + self.type = string.strip(pieces[0]) + # URI + self.uri = string.strip(pieces[1]) + # distro and components (optional) + # Directory or distro + self.dist = string.strip(pieces[2]) + if len(pieces) > 3: + # List of components + self.comps = pieces[3:] + else: + self.comps = [] + + #print self.__dict__ + + + # set enabled/disabled + def set_enabled(self, new_value): + self.disabled = not new_value + # enable, remove all "#" from the start of the line + if new_value == True: + i=0 + self.line = string.lstrip(self.line) + while self.line[i] == "#": + i += 1 + self.line = self.line[i:] + else: + # disabled, add a "#" + if string.strip(self.line)[0] != "#": + self.line = "#" + self.line + + + def __init__(self, line): + self.invalid = False + self.disabled = False + self.type = "" + self.uri = "" + self.dist = "" + self.comps = [] + self.comment = "" + self.line = line + self.parse(line) + + + def str(self): + return self.line + + +def uniq(s): + """ simple (and not efficient) way to return uniq list """ + u = [] + for x in s: + if x not in u: + u.append(x) + return u + + +# the SourceList file as a class +class SourcesList: + def __init__(self, file): + self.list = [] # of Type SourceEntries + self.load(file) + + def is_mirror(self, add_uri, orig_uri): + """check if the given add_url is idential or a mirror of orig_uri + e.g. add_uri = archive.ubuntu.com + orig_uri = de.archive.ubuntu.com + -> True + """ + # remove traling spaces and "/" + add_uri = add_uri.rstrip("/ ") + orig_uri = orig_uri.rstrip("/ ") + # uri is identical + if add_uri == orig_uri: + #print "Identical" + return True + # add uri is a master site and orig_uri has the from "XX.mastersite" + # (e.g. de.archive.ubuntu.com) + try: + add_srv = add_uri.split("//")[1] + orig_srv = orig_uri.split("//")[1] + #print "%s == %s " % (add_srv, orig_srv) + except IndexError: # ok, somethings wrong here + #print "IndexError" + return False + if add_srv == orig_srv[3:]: + #print "Mirror" + return True + return False + + def add(self, type, uri, dist, comps, comment="", pos=-1): + # if there is a repo with the same (type, uri, dist) just add the + # components + for i in self.list: + if i.type == type and self.is_mirror(uri,i.uri) and i.dist == dist: + comps = uniq(i.comps + comps) + # preserver mirror + uri = i.uri + # set to the old position and preserve comment + comment = i.comment + pos = self.list.index(i) + self.list.remove(i) + line = "%s %s %s" % (type,uri,dist) + for c in comps: + line = line + " " + c; + if comment != "": + line = "%s #%s\n" %(line,comment) + line = line + "\n" + self.list.insert(pos, SourceEntry(line)) + + def remove(self, source_entry): + self.list.remove(source_entry) + + def load(self,file): + f = open(file, "r") + lines = f.readlines() + for line in lines: + source = SourceEntry(line) + self.list.append(source) + f.close() + + def save(self,file): + f=open(file,"w") + for source in self.list: + f.write(source.str()) + f.close() + + +# templates for the add dialog +class SourceEntryTemplate(SourceEntry): + def __init__(self,a_type,uri,dist,description,comps): + self.comps = [] + self.comps_descriptions = [] + self.type = a_type + self.uri = uri + self.dist = dist + self.description = description + self.comps = comps + +class SourceCompTemplate: + def __init__(self, name, description, on_by_default): + self.name = name + self.description = description + self.on_by_default = on_by_default + +class SourceEntryTemplates: + def __init__(self): + _ = gettext.gettext + self.templates = [] + + # ubuntu components templates + ubuntu_comps = [] + ubuntu_comps.append(SourceCompTemplate("main",_("Officially supported"),True)) + ubuntu_comps.append(SourceCompTemplate("restricted",_("Restricted copyright"),True)) + ubuntu_comps.append(SourceCompTemplate("universe",_("Community maintained (Universe)"),False)) + ubuntu_comps.append(SourceCompTemplate("multiverse",_("Non-free (Multiverse)"),False)) + + # ubuntu distro + self.templates.append(SourceEntryTemplate("deb", + "http://archive.ubuntu.com/ubuntu/", + "breezy", + "Ubuntu 5.10 \"Breezy Badger\"", + ubuntu_comps )) + self.templates.append(SourceEntryTemplate("deb", + "http://security.ubuntu.com/ubuntu/", + "breezy-security", + _("Ubuntu 5.10 Security Updates"), + ubuntu_comps)) + self.templates.append(SourceEntryTemplate("deb", + "http://archive.ubuntu.com/ubuntu/", + "breezy-updates", + _("Ubuntu 5.10 Updates"), + ubuntu_comps)) + + +# matcher class to make a source entry look nice +# lots of predefined matchers to make it i18n/gettext friendly +class SourceEntryMatcher: + class MatchType: + def __init__(self, a_type,a_descr): + self.type = a_type + self.description = a_descr + + class MatchDist: + def __init__(self,a_uri,a_dist, a_descr,l_comps, l_comps_descr): + self.uri = a_uri + self.dist = a_dist + self.description = a_descr + self.comps = l_comps + self.comps_descriptions = l_comps_descr + + def __init__(self): + _ = gettext.gettext + self.type_list = [] + self.type_list.append(self.MatchType("^deb$",_("Binary"))) + self.type_list.append(self.MatchType("^deb-src$",_("Source"))) + + self.dist_list = [] + + ubuntu_comps = ["^main$","^restricted$","^universe$","^multiverse$"] + ubuntu_comps_descr = [_("Officially supported"), + _("Restricted copyright"), + _("Community maintained (Universe)"), + _("Non-free (Multiverse)")] + # CDs + self.dist_list.append(self.MatchDist("cdrom:\[Ubuntu.*4.10", + ".*", + _("CD") + + " Ubuntu 4.10 \"Warty Warthog\"", + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist("cdrom:\[Ubuntu.*5.04", + ".*", + _("CD") + + " Ubuntu 5.04 \"Hoary Hedgehog\"", + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist("cdrom:\[Ubuntu.*5.10", + ".*", + _("CD") + + " Ubuntu 5.10 \"Breezy Badger\"", + ubuntu_comps, ubuntu_comps_descr)) + + # URIs + # normal archive + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^warty$", + "Ubuntu 4.10 \"Warty Warthog\"", + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^hoary$", + "Ubuntu 5.04 \"Hoary Hedgehog\"", + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^breezy$", + "Ubuntu 5.10 \"Breezy Badger\"", + ubuntu_comps, ubuntu_comps_descr)) + # updates + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^hoary-updates$", + _("Ubuntu 5.04 Updates"), + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^breezy-updates$", + _("Ubuntu 5.10 Updates"), + ubuntu_comps, ubuntu_comps_descr)) + + # security + self.dist_list.append(self.MatchDist(".*security.ubuntu.com/ubuntu", + "^warty-security$", + _("Ubuntu 4.10 Security Updates"), + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*security.ubuntu.com/ubuntu", + "^hoary-security$", + _("Ubuntu 5.04 Security Updates"), + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*security.ubuntu.com/ubuntu", + "^breezy-security$", + _("Ubuntu 5.10 Security Updates"), + ubuntu_comps, ubuntu_comps_descr)) + # security (normal archive uri) + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^warty-security$", + _("Ubuntu 4.10 Security Updates"), + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^hoary-security$", + _("Ubuntu 5.04 Security Updates"), + ubuntu_comps, ubuntu_comps_descr)) + self.dist_list.append(self.MatchDist(".*archive.ubuntu.com/ubuntu", + "^breezy-security$", + _("Ubuntu 5.10 Security Updates"), + ubuntu_comps, ubuntu_comps_descr)) + + + # DEBIAN + debian_comps = ["^main$","^contrib$","^non-free$","^non-US$"] + debian_comps_descr = [_("Officially supported"), + _("Contributed software"), + _("Non-free software"), + _("US export restricted software") + ] + + # dists by name + self.dist_list.append(self.MatchDist(".*debian.org/debian", + "^sarge$", + "Debian 3.1 \"Sarge\"", + debian_comps, debian_comps_descr)) + self.dist_list.append(self.MatchDist(".*debian.org/debian", + "^woody$", + "Debian 3.0 \"Woody\"", + debian_comps, debian_comps_descr)) + # securtiy + self.dist_list.append(self.MatchDist(".*security.debian.org", + "^stable.*$", + _("Debian Stable Security Updates"), + debian_comps, debian_comps_descr)) + # dists by status + self.dist_list.append(self.MatchDist(".*debian.org/debian", + "^stable$", + "Debian Stable", + debian_comps, debian_comps_descr)) + self.dist_list.append(self.MatchDist(".*debian.org/debian", + "^testing$", + "Debian Testing", + debian_comps, debian_comps_descr)) + self.dist_list.append(self.MatchDist(".*debian.org/debian", + "^unstable$", + "Debian Unstable \"Sid\"", + debian_comps, debian_comps_descr)) + + # non-us + self.dist_list.append(self.MatchDist(".*debian.org/debian-non-US", + "^stable.*$", + "Debian Non-US (Stable)", + debian_comps, debian_comps_descr)) + self.dist_list.append(self.MatchDist(".*debian.org/debian-non-US", + "^testing.*$", + "Debian Non-US (Testing)", + debian_comps, debian_comps_descr)) + self.dist_list.append(self.MatchDist(".*debian.org/debian-non-US", + "^unstable.*$", + "Debian Non-US (Unstable)", + debian_comps, debian_comps_descr)) + + + + + def match(self,source): + _ = gettext.gettext + # some sane defaults first + type_description = source.type + dist_description = source.uri + " " + source.dist + comp_description = "" + for c in source.comps: + comp_description = comp_description + " " + c + + for t in self.type_list: + if re.match(t.type, source.type): + type_description = _(t.description) + break + + for d in self.dist_list: + #print "'%s'" %source.uri + if re.match(d.uri, source.uri) and re.match(d.dist,source.dist): + dist_description = d.description + comp_description = "" + for c in source.comps: + found = False + for i in range(len(d.comps)): + if re.match(d.comps[i], c): + comp_description = comp_description+"\n"+d.comps_descriptions[i] + found = True + if found == False: + comp_description = comp_description+" "+c + break + + + return (type_description,dist_description,comp_description) + + diff --git a/src/dialog_add.py.in b/src/dialog_add.py.in new file mode 100644 index 00000000..141fc009 --- /dev/null +++ b/src/dialog_add.py.in @@ -0,0 +1,107 @@ +# dialog_add.py.in - dialog to add a new repository +# +# Copyright (c) 2004 Canonical +# +# Author: Michael Vogt <mvo@debian.org> +# +# 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 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import os +import gobject +import gtk +import gtk.glade + +import aptsources + +class dialog_add: + def __init__(self,parent,sourceslist): + self.sourceslist = sourceslist + + # templates + self.templatelist = aptsources.SourceEntryTemplates() + + # gtk stuff + if os.path.exists("../data/gnome-software-properties.glade"): + self.gladexml = gtk.glade.XML("../data/gnome-software-properties.glade") + else: + self.gladexml = gtk.glade.XML("@prefix@/share/update-manager/gnome-software-properties.glade") + + self.main = widget = self.gladexml.get_widget("dialog_add") + self.main.set_transient_for(parent) + + combo = self.gladexml.get_widget("combobox_what") + self.gladexml.signal_connect("on_combobox_what_changed", self.on_combobox_what_changed, None) + # combox box needs + cell = gtk.CellRendererText() + combo.pack_start(cell, True) + combo.add_attribute(cell, 'text', 0) + self.fill_combo(combo) + self.gladexml.signal_connect("on_button_custom_clicked", + self.on_button_custom_clicked, None) + + + def fill_combo(self,combo): + liststore = gtk.ListStore(gobject.TYPE_STRING,gobject.TYPE_PYOBJECT) + for item in self.templatelist.templates: + liststore.append((item.description, item)) + combo.set_model(liststore) + combo.set_active(0) + + def on_combobox_what_changed(self, combobox, user): + #print "on_combobox_what_changed" + vbox = self.gladexml.get_widget("vbox_comps") + vbox.foreach(lambda widget,vbox: vbox.remove(widget), vbox) + liststore = combobox.get_model() + a_iter = liststore.iter_nth_child(None, combobox.get_active()) + (name, template) = liststore.get(a_iter, 0,1) + self.selected = template + comps = template.comps + for c in comps: + checkbox = gtk.CheckButton(c.description) + checkbox.set_active(c.on_by_default) + checkbox.set_data("name",c.name) + vbox.pack_start(checkbox) + checkbox.show() + + def on_button_custom_clicked(self, widget, data): + #print "on_button_custom_clicked()" + # this hide here is ugly :/ + self.main.hide() + dialog = self.gladexml.get_widget("dialog_add_custom") + res = dialog.run() + dialog.hide() + entry = self.gladexml.get_widget("entry_source_line") + line = entry.get_text() + "\n" + self.sourceslist.list.append(aptsources.SourceEntry(line)) + self.main.response(res) + + def get_enabled_comps(self, checkbutton): + if checkbutton.get_active(): + self.selected_comps.append(checkbutton.get_data("name")) + + def run(self): + res = self.main.run() + if res == gtk.RESPONSE_OK: + # add repository + self.selected_comps = [] + vbox = self.gladexml.get_widget("vbox_comps") + vbox.foreach(self.get_enabled_comps) + self.sourceslist.add(self.selected.type, + self.selected.uri, + self.selected.dist, + self.selected_comps) + self.main.hide() + return res diff --git a/src/dialog_apt_key.py.in b/src/dialog_apt_key.py.in new file mode 100644 index 00000000..d11dfd0a --- /dev/null +++ b/src/dialog_apt_key.py.in @@ -0,0 +1,163 @@ +# dialog_apt_key.py.in - edit the apt keys +# +# Copyright (c) 2004 Canonical +# +# Author: Michael Vogt <mvo@debian.org> +# +# 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 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import os +import gobject +import gtk +import gtk.glade +import subprocess +import gettext +from utils import error +from subprocess import PIPE + +# gettext convenient +_ = gettext.gettext +def dummy(e): return e +N_ = dummy + +# some known keys +N_("Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>") +N_("Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>") + +class apt_key: + def __init__(self): + self.gpg = ["/usr/bin/gpg"] + self.base_opt = self.gpg + ["--no-options", "--no-default-keyring", + "--secret-keyring", "/etc/apt/secring.gpg", + "--trustdb-name", "/etc/apt/trustdb.gpg", + "--keyring", "/etc/apt/trusted.gpg"] + self.list_opt = self.base_opt + ["--with-colons", "--batch", + "--list-keys"] + self.rm_opt = self.base_opt + ["--quiet", "--batch", + "--delete-key", "--yes"] + self.add_opt = self.base_opt + ["--quiet", "--batch", + "--import"] + + + def list(self): + res = [] + #print self.list_opt + p = subprocess.Popen(self.list_opt,stdout=PIPE).stdout + for line in p.readlines(): + fields = line.split(":") + if fields[0] == "pub": + name = fields[9] + res.append("%s %s\n%s" %((fields[4])[-8:],fields[5], _(name))) + return res + + def add(self, filename): + #print "request to add " + filename + cmd = self.add_opt[:] + cmd.append(filename) + p = subprocess.Popen(cmd) + return (p.wait() == 0) + + def update(self): + cmd = ["/usr/bin/apt-key", "update"] + p = subprocess.Popen(cmd) + return (p.wait() == 0) + + def rm(self, key): + #print "request to remove " + key + cmd = self.rm_opt[:] + cmd.append(key) + p = subprocess.Popen(cmd) + return (p.wait() == 0) + +class dialog_apt_key: + def __init__(self, parent): + # gtk stuff + if os.path.exists("../data/gnome-software-properties.glade"): + self.gladexml = gtk.glade.XML("../data/gnome-software-properties.glade") + else: + self.gladexml = gtk.glade.XML("@prefix@/share/update-manager/gnome-software-properties.glade") + self.main = self.gladexml.get_widget("dialog_apt_key") + self.main.set_transient_for(parent) + + self.gladexml.signal_connect("on_button_key_add_clicked", + self.on_button_key_add_clicked) + self.gladexml.signal_connect("on_button_key_remove_clicked", + self.on_button_key_remove_clicked) + self.gladexml.signal_connect("on_button_apt_key_update_clicked", + self.on_button_apt_key_update_clicked) + + # create apt-key object (abstraction for the apt-key command) + self.apt_key = apt_key() + + # get some widgets + self.treeview_apt_key = self.gladexml.get_widget("treeview_apt_key") + self.liststore_apt_key = gtk.ListStore(str) + self.treeview_apt_key.set_model(self.liststore_apt_key) + # Create columns and append them. + tr = gtk.CellRendererText() + tr.set_property("xpad", 10) + tr.set_property("ypad", 10) + c0 = gtk.TreeViewColumn("Key", tr, text=0) + self.treeview_apt_key.append_column(c0) + self.update_key_list() + + def on_button_apt_key_update_clicked(self, widget): + self.apt_key.update() + self.update_key_list() + + def on_button_key_add_clicked(self, widget): + chooser = gtk.FileChooserDialog(title=_("Choose a key-file"), + parent=self.main, + buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_REJECT, + gtk.STOCK_OK,gtk.RESPONSE_ACCEPT)) + res = chooser.run() + chooser.hide() + if res == gtk.RESPONSE_ACCEPT: + #print chooser.get_filename() + if not self.apt_key.add(chooser.get_filename()): + error(self.main, + _("Error importing selected file"), + _("The selected file may not be a GPG key file " + "or it might be corrupt.")) + self.update_key_list() + + def on_button_key_remove_clicked(self, widget): + selection = self.treeview_apt_key.get_selection() + (model,a_iter) = selection.get_selected() + if a_iter == None: + return + key = model.get_value(a_iter,0) + if not self.apt_key.rm(key[:8]): + error(self.main, + _("Error removing the key"), + _("The key you selected could not be removed. " + "Please report this as a bug.")) + self.update_key_list() + + def update_key_list(self): + self.liststore_apt_key.clear() + for key in self.apt_key.list(): + self.liststore_apt_key.append([key]) + + def run(self): + res = self.main.run() + self.main.hide() + + +if __name__ == "__main__": + ui = dialog_apt_key(None) + ui.run() + diff --git a/src/dialog_edit.py.in b/src/dialog_edit.py.in new file mode 100644 index 00000000..02eac6c0 --- /dev/null +++ b/src/dialog_edit.py.in @@ -0,0 +1,102 @@ +# dialog_edit.py.in - edit a existing repository +# +# Copyright (c) 2004 Canonical +# +# Author: Michael Vogt <mvo@debian.org> +# +# 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 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import os +import gobject +import gtk +import gtk.glade + +import aptsources + +class dialog_edit: + def __init__(self,parent,sourceslist,source_entry): + self.sourceslist = sourceslist + self.source_entry = source_entry + + # gtk stuff + if os.path.exists("../data/gnome-software-properties.glade"): + self.gladexml = gtk.glade.XML("../data/gnome-software-properties.glade") + else: + self.gladexml = gtk.glade.XML("@prefix@/share/update-manager/gnome-software-properties.glade") + self.main = self.gladexml.get_widget("dialog_edit") + self.main.set_transient_for(parent) + + # type + combo_type = self.gladexml.get_widget("combobox_type") + if source_entry.type == "deb": + combo_type.set_active(0) + elif source_entry.type == "deb-src": + combo_type.set_active(1) + else: + print "Error, unknown source type: '%s'" % source_enrty.type + + # uri + entry = self.gladexml.get_widget("entry_uri") + entry.set_text(source_entry.uri) + + entry = self.gladexml.get_widget("entry_dist") + entry.set_text(source_entry.dist) + + entry = self.gladexml.get_widget("entry_comps") + comps = "" + for c in source_entry.comps: + if len(comps) > 0: + comps = comps + " " + c + else: + comps = c + entry.set_text(comps) + + entry = self.gladexml.get_widget("entry_comment") + entry.set_text(source_entry.comment) + + def run(self): + res = self.main.run() + if res == gtk.RESPONSE_OK: + # get values + combo_type = self.gladexml.get_widget("combobox_type") + if combo_type.get_active() == 0: + line = "deb" + else: + line = "deb-src" + entry = self.gladexml.get_widget("entry_uri") + line = line + " " + entry.get_text() + + entry = self.gladexml.get_widget("entry_dist") + line = line + " " + entry.get_text() + + entry = self.gladexml.get_widget("entry_comps") + line = line + " " + entry.get_text() + + entry = self.gladexml.get_widget("entry_comment") + if entry.get_text() != "": + line = line + " #" + entry.get_text() + "\n" + else: + line = line + "\n" + + # change repository + index = self.sourceslist.list.index(self.source_entry) + self.sourceslist.list[index] = aptsources.SourceEntry(line) + #self.sourceslist.add(self.selected.type, + # self.selected.uri, + # self.selected.dist, + # self.selected_comps) + self.main.hide() + return res diff --git a/src/dialog_settings.py.in b/src/dialog_settings.py.in new file mode 100644 index 00000000..cfa13e38 --- /dev/null +++ b/src/dialog_settings.py.in @@ -0,0 +1,144 @@ +# dialog_settings.py.in - edit some settings +# +# Copyright (c) 2005 Canonical +# +# Author: Michael Vogt <mvo@debian.org> +# +# 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 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import gconf +import apt_pkg +import gtk +import os + +periodicAptConfFile = "/etc/apt/apt.conf.d/10periodic" +archiveAptConfFile = "/etc/apt/apt.conf.d/20archive" + +class dialog_settings: + def save_periodic_config(self): + #print "saving ..." + + # get the new values + for key in self.conf_map: + cb = self.gladexml.get_widget("checkbutton_%s"% key) + sb = self.gladexml.get_widget("spinbutton_%s"% key) + if cb and not cb.get_active(): + #print "%s=%s" % (self.conf_map[key], "0") + apt_pkg.Config.Set(self.conf_map[key], "0") + elif sb: + value = sb.get_value() + apt_pkg.Config.Set(self.conf_map[key], str(value)) + #print "%s=%s" % (self.conf_map[key], value) + + # special case for autodownload, it has the same interval as + # Update-Package-Lists + cb = self.gladexml.get_widget("checkbutton_autodownload") + key = "autodownload" + if cb.get_active(): + autoupdate = str(apt_pkg.Config.FindI("APT::Periodic::Update-Package-Lists")) + apt_pkg.Config.Set(self.conf_map[key], autoupdate) + else: + apt_pkg.Config.Set(self.conf_map[key], "0") + + + # write both config-prefixes to different files + for (file, prefix) in ((periodicAptConfFile, "APT::Periodic"), + (archiveAptConfFile, "APT::Archives")): + + content = [] + if os.path.isfile(file): + content=open(file,"r").readlines() + + cnf = apt_pkg.Config.SubTree(prefix) + + f = open(file,"w+") + for line in content: + # don't write the udpated keys + found = False + for key in cnf.List(): + #print "%s=%s" % (key, cnf[key]) + if line.find("%s::%s" % (prefix,key)) >= 0: + found = True + break + if not found: + f.write(line) + # write new keys + for i in cnf.List(): + f.write("%s::%s \"%s\";\n" % (prefix,i,cnf.FindI((i)))) + f.close() + + def toggle_show_disabled(self, widget, data): + self.show_disabled = widget.get_active() + self.gconfclient.set_bool("/apps/gnome-software-properties/show_disabled",\ + self.show_disabled) + + def toggle_settings_cb(self, widget, data): + mode = widget.get_active() + self.gladexml.get_widget(data).set_sensitive(mode) + + def run(self): + res = self.main_window.run() + self.save_periodic_config() + self.main_window.hide() + return res + + def __init__(self, parent, glade): + + self.gladexml = glade + self.main_window = self.gladexml.get_widget("dialog_settings") + self.main_window.set_transient_for(parent) + self.parent = parent + self.gconfclient = gconf.client_get_default() + + # preferences entries + self.show_disabled = self.gconfclient.get_bool("/apps/gnome-software-properties/show_disabled") + + checkbutton_show_disabled = self.gladexml.get_widget("checkbutton_show_disabled") + checkbutton_show_disabled.set_active(self.show_disabled) + checkbutton_show_disabled.connect("toggled", self.toggle_show_disabled, None) + + + # apt-config + + # set the update stuff + self.conf_map = { + "autoupdate" : "APT::Periodic::Update-Package-Lists", + "autodownload" : "APT::Periodic::Download-Upgradeable-Packages", + "autoclean" : "APT::Periodic::AutocleanInterval", + "max_size" : "APT::Archives::MaxSize", + "max_age" : "APT::Archives::MaxAge" + } + + for key in self.conf_map: + value = apt_pkg.Config.FindI(self.conf_map[key]) + #print "%s=%s" % (key, value) + cb = self.gladexml.get_widget("checkbutton_%s"% key) + #if cb == None: + # print "checkbutton_%s not found" % key + sb = self.gladexml.get_widget("spinbutton_%s"% key) + if sb != None: + #print "setting %s to %s" % (key, value) + sb.set_value(value) + #else: + # print "spinbutton_%s not found" % key + box = self.gladexml.get_widget("vbox_%s"% key) + #if box == None: + # print "vbox_%s not found" % key + if box and cb: + cb.connect("toggled", self.toggle_settings_cb, ("vbox_%s" % key)) + if cb: + cb.set_active(value) + diff --git a/src/gnome-software-properties.in b/src/gnome-software-properties.in new file mode 100755 index 00000000..6c9b8d3b --- /dev/null +++ b/src/gnome-software-properties.in @@ -0,0 +1,332 @@ +#!/usr/bin/python2.4 +# gnome-software-properties.in - edit /etc/apt/sources.list +# +# Copyright (c) 2004 Canonical +# 2004 Michiel Sikkes +# +# Author: Michiel Sikkes <michiel@eyesopened.nl> +# Michael Vogt <mvo@debian.org> +# +# 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 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import pygtk +import sys +pygtk.require('2.0') +import gtk +import gtk.glade +import gconf +import gobject +import os +import gettext +import re +import string +import time +import tempfile +import subprocess +from optparse import OptionParser +import apt_pkg + +sys.path.append("@prefix@/share/update-manager/python") + +import aptsources +import dialog_add +import dialog_edit +import dialog_apt_key +from dialog_settings import dialog_settings +import shutil + + +(LIST_MARKUP, LIST_ENABLED, LIST_ENTRY_OBJ) = range(3) + +class SoftwareConfigurator: + + def on_button_ok_clicked(self, widget, data): + #self.save_periodic_config(periodicAptConfFile) + + location = "/etc/apt/sources.list" + #backup first + shutil.copy(location,location+".save") + # write + self.sourceslist.save(location) + + # write the source.list first, even if dirty=False, because + # e.g. CD-ROM add does not set dirty variable even if it adds + # something to the sources.list (but no reload needed) + if self.dirty == False: + gtk.main_quit() + sys.exit(0) + + primary = "<span weight=\"bold\" size=\"larger\">" + _("Repositories " + "changed") + "</span>" + secondary = _("The repository information has changes. A backup copy of " + "your sources.list is stored in %s.save. " + "\n\n" + "You need to reload the package list from the servers " + "for your changes to take effect. Do you want to do this " + "now?") % location + dialog = gtk.MessageDialog(self.main_window,gtk.DIALOG_MODAL, + gtk.MESSAGE_INFO,gtk.BUTTONS_YES_NO,"") + dialog.set_markup(primary); + dialog.format_secondary_text(secondary); + #textview = gtk.TextView() + #textview.set_editable(gtk.FALSE) + #textbuffer = textview.get_buffer() + #f = os.popen("/usr/bin/diff -u %s.save %s" % (location,location)) + #diff = f.read() + #textbuffer.set_text(diff) + #if f.close() != None: + # win = gtk.ScrolledWindow() + # win.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC) + # win.add(textview) + # win.set_size_request(400,300) + # win.show() + # dialog.vbox.pack_start(child = win, padding = 6) + # textview.show() + res = dialog.run() + dialog.destroy() + if res == gtk.RESPONSE_YES: + self.main_window.hide() + # we are in "no-update" mode, this is used when the calling application + # wants to deal with this itself + if options.no_update: + gtk.main_quit() + sys.exit(1) + child = subprocess.Popen(["/usr/sbin/synaptic", "--update-at-startup", + "--hide-main-window","--non-interactive"], + close_fds=True) + # wait for the child to finish + while child.poll() == None: + time.sleep(0.05) + while gtk.events_pending(): + gtk.main_iteration() + gtk.main_quit() + sys.exit(1) + gtk.main_quit() + sys.exit(0) + + def on_button_edit_clicked(self, widget, data): + selection = self.sourceslist_view.get_selection() + (model, iter) = selection.get_selected() + source_entry = model.get_value(iter, LIST_ENTRY_OBJ) + edit = dialog_edit.dialog_edit(self.main_window,self.sourceslist, + source_entry) + if edit.run() == gtk.RESPONSE_OK: + self.reloadsources(self.sourceslist,self.matcher) + self.dirty = True + + def on_sourceslist_selection_changed(self, selection, data): + (model, iter) = selection.get_selected() + if iter != None: + self.button_del.set_sensitive(True) + self.button_edit.set_sensitive(True) + else: + self.button_del.set_sensitive(False) + self.button_edit.set_sensitive(False) + + #def on_sourceslist_row_activated(self, treeview, path, column, data): + # #print "on_row_activated()" + # model = treeview.get_model() + # source_entry = model.get_value(model.get_iter(path), LIST_ENTRY_OBJ) + # edit = dialog_edit.dialog_edit(self.main_window,self.sourceslist, + # source_entry) + # edit.run() + # self.reloadsources(self.sourceslist,self.matcher) + + def on_button_remove_clicked(self, widget, data): + selection = self.sourceslist_view.get_selection() + (model,a_iter) = selection.get_selected() + if a_iter == None: + return + source = model.get_value(a_iter, LIST_ENTRY_OBJ) + self.sourceslist.remove(source) + self.reloadsources(self.sourceslist,self.matcher) + self.dirty=True + + def on_button_add_clicked(self, widget, data): + add = dialog_add.dialog_add(self.main_window,self.sourceslist) + if add.run() == gtk.RESPONSE_OK: + self.reloadsources(self.sourceslist,self.matcher) + self.dirty=True + + def on_button_settings_clicked(self, widget, data): + settings = dialog_settings(self.main_window, self.gladexml) + settings.run() + self.show_disabled = self.gconfclient.get_bool("/apps/gnome-software-properties/show_disabled") + self.c_enabled.set_property("visible", self.show_disabled) + self.reloadsources(self.sourceslist, self.matcher) + + def on_button_add_cdrom_clicked(self, widget, data): + tmp = tempfile.NamedTemporaryFile() + cmd = ["/usr/sbin/synaptic", "--hide-main-window", "--non-interactive", + "-o","Dir::Etc::sourcelist=%s" % tmp.name,"--ask-cdrom" ] + self.main_window.set_sensitive(False) + proc = subprocess.Popen(cmd) + # wait for process to finish + while proc.poll() == None: + while gtk.events_pending(): + gtk.main_iteration() + time.sleep(0.05) + self.main_window.set_sensitive(True) + # read tmp file with source name + line = "" + for x in open(tmp.name): + line = x + if line != "": + self.sourceslist.list.append(aptsources.SourceEntry(line)) + self.reloadsources(self.sourceslist,self.matcher) + #self.dirty=True # no need here + + def on_button_authentication_clicked(self, widget, data): + auth = dialog_apt_key.dialog_apt_key(self.main_window) + auth.run() + + def reloadsources(self, sourceslist, matcher): + #self.meta = meta_data() + self.sourcesstore.clear() + for source in sourceslist.list: + if source.invalid or (source.disabled and not self.show_disabled): + continue + (a_type,dist,comps) = matcher.match(source) + contents = "" + if source.comment != "": + contents += "<i>%s</i>\n\n" % (source.comment) + contents +="<big><b>%s </b></big> (%s) <small>\n%s</small>" % (dist,a_type, comps) + iter = self.sourcesstore.append([contents, not source.disabled, source]) + + def show_help(self, widget, data): + print "self.show_help() called" + + # toggled on/off a source in the listview + def toggled_enabled(self, renderer, path_string): + iter = self.sourcesstore.get_iter_from_string(path_string) + source = self.sourcesstore.get_value(iter, LIST_ENTRY_OBJ) + self.dirty=True + if self.sourcesstore.get_value(iter, LIST_ENABLED): + self.sourcesstore.set_value(iter, LIST_ENABLED, False) + source.set_enabled(False) + else: + self.sourcesstore.set_value(iter, LIST_ENABLED, True) + source.set_enabled(True) + + def __init__(self): + self.gconfclient = gconf.client_get_default() + + if os.path.exists("../data/gnome-software-properties.glade"): + self.gladexml = gtk.glade.XML("../data/gnome-software-properties.glade") + else: + self.gladexml = gtk.glade.XML("@prefix@/share/update-manager/gnome-software-properties.glade") + + # do we show disabled sources? + self.show_disabled = self.gconfclient.get_bool("/apps/gnome-software-properties/show_disabled") + self.main_window = self.gladexml.get_widget("SoftwareConfigurator") + # button on the right + self.gladexml.signal_connect("on_button_edit_clicked", + self.on_button_edit_clicked, None) + self.button_edit = self.gladexml.get_widget("button_edit") + self.button_del = self.gladexml.get_widget("button_remove") + + # Gets the treeview and creates a store for it. + self.sourceslist_view = self.gladexml.get_widget("sourceslist") + self.sourcesstore = gtk.ListStore(str, bool,gobject.TYPE_PYOBJECT) + self.sourceslist_view.set_model(self.sourcesstore) + #self.gladexml.signal_connect("on_sourceslist_row_activated", + # self.on_sourceslist_row_activated, None) + self.sourceslist_view.get_selection().connect("changed", self.on_sourceslist_selection_changed, None) + + # was something modified + self.dirty=False + + # Create columns and append them. + cr = gtk.CellRendererToggle() + cr.set_property("activatable", True) + cr.set_property("xpad", 10) + cr.set_property("ypad", 10) + cr.connect("toggled", self.toggled_enabled) + self.c_enabled = gtk.TreeViewColumn("Enabled", cr, active=LIST_ENABLED) + self.sourceslist_view.append_column(self.c_enabled) + self.c_enabled.set_property("visible", self.show_disabled) + + tr = gtk.CellRendererText() + tr.set_property("xpad", 10) + tr.set_property("ypad", 10) + c0 = gtk.TreeViewColumn("Entry", tr, markup=LIST_MARKUP) + self.sourceslist_view.append_column(c0) + + self.sourceslist = aptsources.SourcesList("@sysconfdir@/apt/sources.list") + self.matcher = aptsources.SourceEntryMatcher() + # Empty and fill the sources store. + self.reloadsources(self.sourceslist,self.matcher) + + self.main_window = self.gladexml.get_widget("SoftwareConfigurator") + self.main_window.connect("delete_event", lambda widget,ev: gtk.main_quit()) + + okbutton = self.gladexml.get_widget("button_ok") + okbutton.connect("clicked", self.on_button_ok_clicked, None) + + cancelbutton = self.gladexml.get_widget("button_cancel") + cancelbutton.connect("clicked", lambda w,v: gtk.main_quit(), None) + + self.gladexml.signal_connect("on_button_add_clicked", self.on_button_add_clicked, None) + self.gladexml.signal_connect("on_button_add_cdrom_clicked", self.on_button_add_cdrom_clicked, None) + self.gladexml.signal_connect("on_button_remove_clicked", self.on_button_remove_clicked, None) + self.gladexml.signal_connect("on_button_authentication_clicked", self.on_button_authentication_clicked, None) + + # settings + self.gladexml.signal_connect("on_button_settings_clicked", self.on_button_settings_clicked, None) + + self.main_window.show() + if options.toplevel != None: + # don't show the add-cdrom button for now + # FIXME: on the long run interface with apt-pkg/cdrom.h + b = self.gladexml.get_widget("button_add_cdrom") + b.hide() + toplevel = gtk.gdk.window_foreign_new(int(options.toplevel)) + self.main_window.window.set_transient_for(toplevel) + + + # init the config + apt_pkg.InitConfig() + + def main(self): + gtk.main() + + +if __name__ == "__main__": + APP="update-manager" + DIR="@prefix@/share/locale" + gettext.bindtextdomain(APP, DIR) + gettext.textdomain(APP) + gtk.glade.bindtextdomain(APP, DIR) + gtk.glade.textdomain(APP) + _ = gettext.gettext + #print "Software Configurator started..." + + # add option parser + parser = OptionParser() + parser.add_option("-n", "--no-update", action="store_true", + dest="no_update", default=False, + help="No update on repository change (usefull if called "\ + "from a external program).") + parser.add_option("-t", "--toplevel", + action="store", type="string", dest="toplevel", + help="Set x-window-id of the toplevel parent for the "\ + "dialog (usefull for embedding)") + + + (options, args) = parser.parse_args() + ui = SoftwareConfigurator() + ui.main() + #print "Software Configurator ended..." diff --git a/src/update-manager.in b/src/update-manager.in new file mode 100644 index 00000000..90928b8e --- /dev/null +++ b/src/update-manager.in @@ -0,0 +1,874 @@ +#!/usr/bin/python2.4 +# update-manager.in - easy updating application +# +# Copyright (c) 2004 Canonical +# 2004 Michiel Sikkes +# +# Author: Michiel Sikkes <michiel@eyesopened.nl> +# Michael Vogt <mvo@debian.org> +# +# 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 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import pygtk +pygtk.require('2.0') +import gtk +import gtk.gdk +import gtk.glade +import gobject +import gnome +import apt_pkg +import gettext +import copy +import string +import sys +import os +import os.path +import urllib2 +import re +import thread +import tempfile +import time +import rfc822 +import gconf +import pango +import subprocess +import pwd +import xml.sax.saxutils + + +# FIXME: +# - cary a reference to the update-class around in the ListStore +# - kill "all_changes" and move the changes into the "Update" class + +# list constants +(LIST_INSTALL, LIST_CONTENTS, LIST_NAME, LIST_SHORTDESC, + LIST_VERSION, LIST_LONG_DESCR, LIST_PKG) = range(7) + +# actions for "invoke_manager" +(INSTALL, UPDATE) = range(2) + +SYNAPTIC_PINFILE = "/var/lib/synaptic/preferences" + +METARELEASE_URI = "http://changelogs.ubuntu.com/meta-release" +#METARELEASE_URI = "http://people.ubuntu.com/~mvo/meta-release-test" +METARELEASE_FILE = "/var/lib/update-manager/meta-release" + +CHANGELOGS_URI="http://changelogs.ubuntu.com/changelogs/pool/%s/%s/%s/%s_%s/changelog" + +# fixme: use a utils package for this sort of stuff +def str_to_bool(str): + if str == "0" or str.upper() == "FALSE": + return False + return True + +def utf8(str): + return unicode(str, 'latin1').encode('utf-8') + +class Update: + + def __init__(self, package, cache, records, depcache): + #package = cache[name] + name = package.Name + version = depcache.GetCandidateVer(package) + file, index = version.FileList.pop(0) + records.Lookup((file, index)) + + self.name = name + self.version = version.VerStr + self.shortdesc = records.ShortDesc + self.longdesc = "" + self.size = version.Size + + longdesc = records.LongDesc + lines = longdesc.split("\n") + lines.pop(0) + for line in lines: + line = line[1:] + first_char = string.strip(line)[0] + if line == ".": + self.longdesc = self.longdesc + "\n" + else: + self.longdesc = self.longdesc + line + "\n" + +class UpdateList: + def __init__(self, parent_window): + self.pkgs = [] + self.num_updates = 0 + self.parent_window = parent_window + + def saveDistUpgrade(self, cache, depcache): + """ this functions mimics a upgrade but will never remove anything """ + depcache.Upgrade(True) + if depcache.DelCount > 0: + # nice try, falling back + for pkg in cache.Packages: + depcache.MarkKeep(pkg) + assert depcache.BrokenCount == 0 and depcache.DelCount == 0 + depcache.Upgrade() + + def update(self, cache, records, depcache): + held_back = [] + broken = [] + self.saveDistUpgrade(cache, depcache) + for pkg in cache.Packages: + if depcache.MarkedUpgrade(pkg) or depcache.MarkedInstall(pkg): + self.pkgs.append(Update(pkg, cache, records, depcache)) + self.num_updates = self.num_updates + 1 + elif depcache.IsInstBroken(pkg) or depcache.IsNowBroken(pkg): + broken.append(pkg.Name) + elif pkg.CurrentVer != None and depcache.IsUpgradable(pkg): + #print "MarkedKeep: %s " % pkg.Name + held_back.append(pkg.Name) + self.pkgs.sort(lambda x,y: cmp(x.name,y.name)) + if depcache.BrokenCount > 0: + # FIXME: show what packages are broken + msg=("<big><b>%s</b></big>\n\n%s"%(_("Your system has broken packages!"), + _("This means that some dependencies " + "of the installed packages are not " + "satisfied. Please use \"Synaptic\" " + "or \"apt-get\" to fix the " + "situation." + ))) + dialog = gtk.MessageDialog(self.parent_window, 0, gtk.MESSAGE_ERROR, + gtk.BUTTONS_OK,"") + dialog.set_markup(msg) + dialog.vbox.set_spacing(6) + dialog.run() + dialog.destroy() + sys.exit(1) + if depcache.KeepCount > 0: + #print "WARNING, keeping packages" + msg=("<big><b>%s</b></big>\n\n%s"%(_("It is not possible to upgrade " + "all packages."), + _("This means that " + "besides the actual upgrade of the " + "packages some further action " + "(such as installing or removing " + "packages) " + "is required. Please use Synaptic " + "\"Smart Upgrade\" or " + "\"apt-get dist-upgrade\" to fix " + "the situation." + ))) + dialog = gtk.MessageDialog(self.parent_window, 0, gtk.MESSAGE_INFO, + gtk.BUTTONS_OK,"") + dialog.set_default_response(gtk.RESPONSE_OK) + dialog.set_markup(msg) + dialog.vbox.set_spacing(6) + label = gtk.Label(_("The following packages are not upgraded: ")) + label.set_alignment(0.0,0.5) + dialog.set_border_width(6) + label.show() + dialog.vbox.pack_start(label) + scroll = gtk.ScrolledWindow() + scroll.set_size_request(-1,200) + scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + text = gtk.TextView() + text.set_editable(False) + text.set_cursor_visible(False) + buf = text.get_buffer() + held_back.sort() + buf.set_text("\n".join(held_back)) + scroll.add(text) + dialog.vbox.pack_start(scroll) + scroll.show_all() + dialog.run() + dialog.destroy() + + +class UpdateManager: + + # FIXME: wrong location for this func + # don't touch the gui in this function, it needs to be thread-safe + def get_changelog(self, name, lock): + pkg = self.cache[name] + + # FIXME: not correct, need to get canidateVer + version = self.depcache.GetCandidateVer(pkg) + file, index = version.FileList.pop(0) + self.records.Lookup((file, index)) + if self.records.SourcePkg != "": + srcpkg = self.records.SourcePkg + else: + srcpkg = name + + src_section = "main" + l = string.split(pkg.Section,"/") + if len(l) > 1: + sec_section = l[0] + + prefix = srcpkg[0] + if srcpkg.startswith("lib"): + prefix = "lib" + srcpkg[3] + + verstr = version.VerStr + l = string.split(verstr,":") + if len(l) > 1: + verstr = l[1] + + try: + uri = CHANGELOGS_URI % (src_section,prefix,srcpkg,srcpkg, verstr) + changelog = urllib2.urlopen(uri) + #print changelog.read() + # do only get the lines that are new + alllines = "" + regexp = "^%s \((.*)\)(.*)$" % (srcpkg) + + i=0 + while True: + line = changelog.readline() + #print line + if line == "": + break + match = re.match(regexp,line) + if match: + if apt_pkg.VersionCompare(match.group(1),pkg.CurrentVer.VerStr) <= 0: + break + # EOF (shouldn't really happen) + alllines = alllines + line + + # only write if we where not canceld + if lock.locked(): + self.all_changes[name] = [alllines, srcpkg] + except urllib2.HTTPError: + if lock.locked(): + self.all_changes[name] = [_("Changes not found, the server may not be updated yet."), srcpkg] + except IOError: + if lock.locked(): + self.all_changes[name] = [_("Failed to download changes. Please check if there is an active internet connection."), srcpkg] + if lock.locked(): + lock.release() + + def set_changes_buffer(self, changes_buffer, text, name, srcpkg): + changes_buffer.set_text("") + lines = text.split("\n") + if len(lines) == 1: + changes_buffer.set_text(text) + return + + for line in lines: + + end_iter = changes_buffer.get_end_iter() + + version_match = re.match("^%s \((.*)\)(.*)$" % (srcpkg), line) + #bullet_match = re.match("^.*[\*-]", line) + author_match = re.match("^.*--.*<.*@.*>.*$", line) + if version_match: + version = version_match.group(1) + version_text = _("Version %s: \n") % version + changes_buffer.insert_with_tags_by_name(end_iter, version_text, "versiontag") + # mvo: disabled for now as it does not catch multi line entries + # (see ubuntu #7034 for rational) + #elif bullet_match and not author_match: + # bullet_text = " " + line + "\n" + # changes_buffer.insert(end_iter, bullet_text) + elif (author_match): + pass + #chanages_buffer.insert(end_iter, "\n") + else: + changes_buffer.insert(end_iter, line+"\n") + + + def cursor_changed(self, widget): + tuple = widget.get_cursor() + path = tuple[0] + # check if we have a path at all + if path == None: + return + model = widget.get_model() + iter = model.get_iter(path) + + # set descr + long_desc = model.get_value(iter, 5) + if long_desc == None: + return + desc_buffer = self.DescView.get_buffer() + desc_buffer.set_text(utf8(long_desc)) + + # now do the changelog + name = model.get_value(iter, 2) + if name == None: + return + + changes_buffer = self.ChangesView.get_buffer() + + # check if we have the changes already + if self.all_changes.has_key(name): + changes = self.all_changes[name] + self.set_changes_buffer(changes_buffer, changes[0], name, changes[1]) + else: + if self.expander.get_expanded(): + self.treeview.set_sensitive(False) + self.Glade.get_widget("hbox_footer").set_sensitive(False) + lock = thread.allocate_lock() + lock.acquire() + t=thread.start_new_thread(self.get_changelog,(name,lock)) + changes_buffer.set_text(_("Downloading changes...")) + button = self.Glade.get_widget("button_cancel_dl_changelog") + button.show() + id = button.connect("clicked", + lambda w,lock: lock.release(), lock) + # wait for the dl-thread + while lock.locked(): + time.sleep(0.05) + while gtk.events_pending(): + gtk.main_iteration() + # download finished (or canceld, or time-out) + button.hide() + button.disconnect(id); + self.treeview.set_sensitive(True) + self.Glade.get_widget("hbox_footer").set_sensitive(True) + + if self.all_changes.has_key(name): + changes = self.all_changes[name] + self.set_changes_buffer(changes_buffer, changes[0], name, changes[1]) + + def remove_update(self, pkg): + name = pkg.name + if name in self.packages: + self.packages.remove(name) + self.dl_size -= pkg.size + if len(self.packages) == 0: + self.installbutton.set_sensitive(False) + self.update_count() + + def add_update(self, pkg): + name = pkg.name + if name not in self.packages: + self.packages.append(name) + self.dl_size += pkg.size + if len(self.packages) > 0: + self.installbutton.set_sensitive(True) + self.update_count() + + def update_count(self): + text = "%i (%s)" % (len(self.packages), + apt_pkg.SizeToStr(self.dl_size)) + self.NumUpdates.set_text(text) + + def activate_details(self, expander, data): + expanded = self.expander.get_expanded() + self.gconfclient.set_bool("/apps/update-manager/show_details",expanded) + if expanded: + self.cursor_changed(self.treeview) + + def run_synaptic(self, id, action, lock): + apt_pkg.PkgSystemUnLock() + cmd = ["/usr/sbin/synaptic", "--hide-main-window", "--non-interactive", + "--plug-progress-into", "%s" % (id) ] + if action == INSTALL: + cmd.append("--set-selections") + cmd.append("--progress-str") + cmd.append("%s" % _("The updates are being applied.")) + cmd.append("--finish-str") + cmd.append("%s" % _("Upgrade finished")) + proc = subprocess.Popen(cmd, stdin=subprocess.PIPE) + f = proc.stdin + for s in self.packages: + f.write("%s\tinstall\n" % s) + f.close() + proc.wait() + elif action == UPDATE: + cmd.append("--update-at-startup") + subprocess.call(cmd) + else: + print "run_synaptic() called with unknown action" + sys.exit(1) + + # use this once gksudo does propper reporting + #if os.geteuid() != 0: + # if os.system("gksudo /bin/true") != 0: + # return + # cmd = "sudo " + cmd; + lock.release() + + def plug_removed(self, w, (win,socket)): + #print "plug_removed" + # plug was removed, but we don't want to get it removed, only hiden + # unti we get more + win.hide() + return True + + def plug_added(self, sock, win): + win.show() + while gtk.events_pending(): + gtk.main_iteration() + + def on_button_reload_clicked(self, widget): + #print "on_button_reload_clicked" + self.invoke_manager(UPDATE) + + def on_button_help_clicked(self, widget): + gnome.help_display_desktop(self.gnome_program, "update-manager", "update-manager", "") + + def on_button_install_clicked(self, widget): + #print "on_button_install_clicked" + self.invoke_manager(INSTALL) + + def invoke_manager(self, action): + # check first if no other package manager is runing + import struct, fcntl + lock = os.path.dirname(apt_pkg.Config.Find("Dir::State::status"))+"/lock" + lock_file= open(lock) + flk=struct.pack('hhllhl',fcntl.F_WRLCK,0,0,0,0,0) + try: + rv = fcntl.fcntl(lock_file, fcntl.F_GETLK, flk) + except IOError: + print "Error getting lockstatus" + raise + locked = struct.unpack('hhllhl', rv)[0] + if locked != fcntl.F_UNLCK: + msg=("<big><b>%s</b></big>\n\n%s"%(_("Another package manager is " + "running"), + _("You can run only one " + "package management application " + "at the same time. Please close " + "this other application first."))); + dialog = gtk.MessageDialog(self.main_window, 0, gtk.MESSAGE_ERROR, + gtk.BUTTONS_OK,"") + dialog.set_markup(msg) + dialog.run() + dialog.destroy() + return + + # don't display apt-listchanges, we already showed the changelog + os.environ["APT_LISTCHANGES_FRONTEND"]="none" + + # set window to insensitive + self.main_window.set_sensitive(False) + # create a progress window that will swallow the synaptic progress bars + win = gtk.Window() + if action==UPDATE: + win.set_title(_("Updating package list...")) + else: + win.set_title(_("Installing updates...")) + win.set_border_width(6) + win.set_transient_for(self.main_window) + win.set_position(gtk.WIN_POS_CENTER_ON_PARENT) + win.resize(400,200) + win.set_resizable(False) + # prevent the window from closing with the delete button (there is + # a cancel button in the window) + win.connect("delete_event", lambda e,w: True); + + # create the socket + socket = gtk.Socket() + socket.show() + win.add(socket) + + socket.connect("plug-added", self.plug_added, win) + socket.connect("plug-removed", self.plug_removed, (win,socket)) + lock = thread.allocate_lock() + lock.acquire() + t = thread.start_new_thread(self.run_synaptic,(socket.get_id(),action,lock)) + while lock.locked(): + while gtk.events_pending(): + gtk.main_iteration() + time.sleep(0.05) + win.destroy() + while gtk.events_pending(): + gtk.main_iteration() + self.fillstore() + self.main_window.set_sensitive(True) + + def toggled(self, renderer, path_string): + """ a toggle button in the listview was toggled """ + iter = self.store.get_iter_from_string(path_string) + if self.store.get_value(iter, LIST_INSTALL): + self.store.set_value(iter, LIST_INSTALL, False) + self.remove_update(self.store.get_value(iter, LIST_PKG)) + else: + self.store.set_value(iter, LIST_INSTALL, True) + self.add_update(self.store.get_value(iter, LIST_PKG)) + + + def exit(self): + """ exit the application, save the state """ + self.save_state() + gtk.main_quit() + sys.exit(0) + + def save_state(self): + """ save the state (window-size for now) """ + (x,y) = self.main_window.get_size() + self.gconfclient.set_pair("/apps/update-manager/window_size", + gconf.VALUE_INT, gconf.VALUE_INT, x, y) + + def restore_state(self): + """ restore the state (window-size for now) """ + expanded = self.gconfclient.get_bool("/apps/update-manager/show_details") + self.expander.set_expanded(expanded) + (x,y) = self.gconfclient.get_pair("/apps/update-manager/window_size", + gconf.VALUE_INT, gconf.VALUE_INT) + if x > 0 and y > 0: + self.main_window.resize(x,y) + + def on_button_preferences_clicked(self, widget): + """ start gnome-software preferences """ + # args: "-n" means we take care of the reloading of the + # package list ourself + apt_pkg.PkgSystemUnLock() + args = ['/usr/bin/gnome-software-properties', '-n'] + child = subprocess.Popen(args) + self.main_window.set_sensitive(False) + res = None + while res == None: + res = child.poll() + time.sleep(0.05) + while gtk.events_pending(): + gtk.main_iteration() + # repository information changed, call "reload" + try: + apt_pkg.PkgSystemLock() + except SystemError: + print "Error geting the cache" + apt_pkg.PkgSystemLock() + if res > 0: + self.on_button_reload_clicked(None) + self.main_window.set_sensitive(True) + + def __init__(self, download_changes_at_startup=False): + + self.gnome_program = gnome.init("update-manager", "0.39") + + self.download_changes_at_startup = download_changes_at_startup + self.packages = [] + self.dl_size = 0 + self.all_changes = {} + self.dist = self.get_dist() + if os.path.exists("../data/update-manager.glade"): + self.Glade = gtk.glade.XML("../data/update-manager.glade") + else: + self.Glade = gtk.glade.XML("@prefix@/share/update-manager/update-manager.glade") + + self.NumUpdates = self.Glade.get_widget("num_updates") + self.main_window = self.Glade.get_widget("MainWindow") + self.main_window.connect("delete_event", lambda w, ev: self.exit()) + self.DescView = self.Glade.get_widget("descview") + self.ChangesView = self.Glade.get_widget("textview_changes") + changes_buffer = self.ChangesView.get_buffer() + changes_buffer.create_tag("versiontag", weight=pango.WEIGHT_BOLD) + self.expander = self.Glade.get_widget("expander_details") + self.expander.connect("notify::expanded", self.activate_details) + + self.installbutton = self.Glade.get_widget("button_install") + self.Glade.signal_connect("on_button_install_clicked", + self.on_button_install_clicked) + self.Glade.signal_connect("on_button_close_clicked", + lambda w: self.exit()) + self.Glade.signal_connect("on_button_reload_clicked", + self.on_button_reload_clicked) + self.Glade.signal_connect("on_button_preferences_clicked", + self.on_button_preferences_clicked) + self.Glade.signal_connect("on_button_help_clicked", + self.on_button_help_clicked) + + self.treeview = self.Glade.get_widget("updatelist") + + self.store = gtk.ListStore(gobject.TYPE_BOOLEAN, str, str, str, str, str, + gobject.TYPE_PYOBJECT) + self.treeview.set_model(self.store) + self.treeview.set_headers_clickable(True); + + self.treeview.connect('cursor-changed', self.cursor_changed) + + tr = gtk.CellRendererText() + tr.set_property("xpad", 10) + tr.set_property("ypad", 10) + cr = gtk.CellRendererToggle() + cr.set_property("activatable", True) + cr.set_property("xpad", 10) + cr.connect("toggled", self.toggled) + self.cb = gtk.TreeViewColumn("Install", cr, active=LIST_INSTALL) + c0 = gtk.TreeViewColumn("Name", tr, markup=LIST_CONTENTS) + c0.set_resizable(True) + major,minor,patch = gtk.pygtk_version + if (major >= 2) and (minor >= 5): + self.cb.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) + self.cb.set_fixed_width(30) + c0.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) + c0.set_fixed_width(100) + #self.treeview.set_fixed_height_mode(True) + + self.treeview.append_column(self.cb) + self.cb.set_visible(False); + self.treeview.append_column(c0) + self.treeview.set_search_column(LIST_NAME) + #self.treeview.append_column(c1) + #self.treeview.append_column(c2) + #self.treeview.set_headers_visible(False) + # set expander to last position + + # proxy stuff + SYNAPTIC_CONF_FILE = "%s/.synaptic/synaptic.conf" % pwd.getpwuid(0)[5] + if os.path.exists(SYNAPTIC_CONF_FILE): + cnf = apt_pkg.newConfiguration() + apt_pkg.ReadConfigFile(cnf, SYNAPTIC_CONF_FILE) + use_proxy = cnf.FindB("Synaptic::useProxy", False) + if use_proxy: + proxy_host = cnf.Find("Synaptic::httpProxy") + proxy_port = str(cnf.FindI("Synaptic::httpProxyPort")) + if proxy_host and proxy_port: + proxy_support = urllib2.ProxyHandler({"http":"http://%s:%s" % (proxy_host, proxy_port)}) + opener = urllib2.build_opener(proxy_support) + urllib2.install_opener(opener) + + self.gconfclient = gconf.client_get_default() + # restore state + self.restore_state() + + def fillstore(self): + if self.download_changes_at_startup: + dialog = self.Glade.get_widget("dialog_fetching") + dialog.set_transient_for(self.main_window) + dialog.set_modal(True) + progress = self.Glade.get_widget("progressbar_fetching") + dialog.show() + while gtk.events_pending(): + gtk.main_iteration() + + # clean most objects + self.packages = [] + self.dl_size = 0 + self.all_changes = {} + self.store.clear() + self.initCache() + self.list = UpdateList(self.main_window) + + # fill them again + self.list.update(self.cache, self.records, self.depcache) + if self.list.num_updates < 1: + # set the label and treeview and hide the checkbox column + self.cb.set_visible(False) + self.expander.hide() + label = self.Glade.get_widget("label_header") + text = "<big><b>%s</b></big>\n\n%s" % (_("Your system is up-to-date!"), + _("There are no updates available.")) + label.set_markup(text) + self.store.append([False, _("Your system is up-to-date!"), None, None, None, None, None]) + # make sure no install is possible + self.installbutton.set_sensitive(False) + else: + self.cb.set_visible(True) + self.expander.show() + self.treeview.set_headers_visible(False) + label = self.Glade.get_widget("label_header") + text = _("<big><b>Available Updates</b></big>\n" + "\n" + "The following packages are found to be upgradable. You can upgrade them by " + "using the Install button.") + label.set_markup(text) + i=0 + for pkg in self.list.pkgs: + if self.download_changes_at_startup: + progress.set_fraction(float(i)/len(self.list.pkgs)) + while gtk.events_pending(): + gtk.main_iteration() + lock = thread.allocate_lock() + self.all_changes[pkg.name] = self.get_changelog(pkg.name,lock) + + name = xml.sax.saxutils.escape(pkg.name) + summary = xml.sax.saxutils.escape(pkg.shortdesc) + contents = "<big><b>%s</b></big>\n<small>%s\n\n" % (name, summary) + contents = contents + _("New version: %s") % (pkg.version) + "</small>" + + iter = self.store.append([True, contents, pkg.name, pkg.shortdesc, pkg.version, pkg.longdesc, pkg]) + self.add_update(pkg) + i = i + 1 + + if self.download_changes_at_startup: + dialog.hide() + + self.update_count() + return False + + # FIXME: use lsb-release binary and cache the result + def get_dist(self): + f = open("/etc/lsb-release", "r") + lines = f.readlines() + for line in lines: + key, value = line.split("=") + if (key == "DISTRIB_CODENAME"): + return value[:-1] + f.close() + + def current_dist_not_supported(self, name): + #print name + msg = "<big><b>%s</b></big>\n\n%s" % (_("Your distribution is no longer supported"), _("Please upgrade to a newer version of Ubuntu Linux. The version you are running will no longer get security fixes or other critical updates. Please see http://www.ubuntulinux.org for upgrade information.")) + dialog = gtk.MessageDialog(self.main_window, 0, gtk.MESSAGE_WARNING, + gtk.BUTTONS_OK,"") + dialog.set_markup(msg) + dialog.run() + dialog.destroy() + + + def new_dist_available(self, name): + #print name + # check if the user already knowns about this dist + seen = self.gconfclient.get_string("/apps/update-manager/seen_dist") + if name == seen: + return + + msg = "<big><b>%s</b></big>\n\n%s" % (_("There is a new release of Ubuntu available!"), _("A new release with the codename '%s' is available. Please see http://www.ubuntulinux.org/ for upgrade instructions.") % name) + dialog = gtk.MessageDialog(self.main_window, 0, gtk.MESSAGE_INFO, + gtk.BUTTONS_CLOSE, "") + dialog.set_markup(msg) + check = gtk.CheckButton(_("Never show this message again")) + check.show() + dialog.vbox.pack_start(check) + dialog.run() + if check.get_active(): + self.gconfclient.set_string("/apps/update-manager/seen_dist",name) + dialog.destroy() + + # code that does the meta release file checking + def check_meta_release(self): + #print "check_meta_release" + current_dist = self.dist + dists = {} + if self.metarelease_information != None: + #print "meta_release found (current_dist: %s)" % (current_dist) + # we have a meta-release file + current_dist_date = 0 + current_dist_supported = False + new_dist_available = False + # parse it + index_tag = apt_pkg.ParseTagFile(self.metarelease_information) + step_result = index_tag.Step() + while step_result: + if index_tag.Section.has_key("Dist"): + dist = index_tag.Section["Dist"] + date = time.mktime(rfc822.parsedate(index_tag.Section["Date"])) + dists[dist] = date + if dist == current_dist: + current_dist_supported = str_to_bool(index_tag.Section["Supported"]) + current_dist_date = time.mktime(rfc822.parsedate(index_tag.Section["Date"])) + step_result = index_tag.Step() + # check for newer dists + new_dist = "" + found = False + for dist in dists: + if dist == current_dist: + found = True + if dists[dist] > current_dist_date and not dist == current_dist: + new_dist = dist + current_dist_date = dists[dist] + + # we know nothing about the installed distro, so we just return + # silently + if not found: + return False + + # only warn if unsupported and a new dist is available (because + # the development version is also unsupported) + if new_dist != "" and not current_dist_supported: + self.current_dist_not_supported(new_dist) + elif new_dist != "": + self.new_dist_available(new_dist) + # don't run this event again + return False + # we have no information about the meta-release, so run it again + return True + + # the network thread that tries to fetch the meta-index file + def get_meta_release(self): + lastmodified = 0 + req = urllib2.Request(METARELEASE_URI) + if os.access(METARELEASE_FILE, os.W_OK): + lastmodified = os.stat(METARELEASE_FILE).st_mtime + if lastmodified > 0: + req.add_header("If-Modified-Since", lastmodified) + try: + uri=urllib2.urlopen(req) + f=open(METARELEASE_FILE,"w+") + for line in uri.readlines(): + f.write(line) + f.flush() + f.seek(0,0) + self.metarelease_information=f + uri.close() + except urllib2.URLError: + pass + + # fixme: we should probably abstract away all the stuff from libapt + def initCache(self): + # get the lock + try: + apt_pkg.PkgSystemLock() + except SystemError: + d = gtk.MessageDialog(parent=self.main_window, + flags=gtk.DIALOG_MODAL, + type=gtk.MESSAGE_ERROR, + buttons=gtk.BUTTONS_OK) + d.set_markup("<big><b>%s</b></big>\n\n%s" % ( + _("Unable to get exclusive lock"), + _("This usually means that another package management " + "application (like apt-get or aptitude) already running. " + "Please close that application first"))) + res = d.run() + d.destroy() + sys.exit() + + self.cache = apt_pkg.GetCache() + #apt_pkg.Config.Set("Debug::pkgPolicy","1") + self.depcache = apt_pkg.GetDepCache(self.cache) + self.depcache.ReadPinFile() + if os.path.exists(SYNAPTIC_PINFILE): + self.depcache.ReadPinFile(SYNAPTIC_PINFILE) + self.depcache.Init() + self.records = apt_pkg.GetPkgRecords(self.cache) + + + def main(self): + # FIXME: stat a check update thread + self.metarelease_information = None + t=thread.start_new_thread(self.get_meta_release, ()) + gobject.timeout_add(1000, self.check_meta_release) + #self.get_meta_release() + + self.store.append([True, _("Initializing and getting list of updates..."), + None, None, None, None, None]) + + while gtk.events_pending(): + gtk.main_iteration() + + # global init of apt, FIXME: move all the apt details in it's own class + apt_pkg.init() + self.fillstore() + gtk.main() + + +if __name__ == "__main__": + + APP="update-manager" + DIR="@prefix@/share/locale" + gettext.bindtextdomain(APP, DIR) + gettext.textdomain(APP) + gtk.glade.bindtextdomain(APP, DIR) + gtk.glade.textdomain(APP) + _ = gettext.gettext + if os.geteuid() != 0: + dialog = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, + _("You need to be root to run this program")) + dialog.run() + dialog.destroy() + sys.exit(1) + + if (len(sys.argv) > 1) and (sys.argv[1].strip() == "--download-changes-at-startup"): + updatemanager = UpdateManager(True) + else: + updatemanager = UpdateManager() + updatemanager.main() diff --git a/src/utils.py b/src/utils.py new file mode 100644 index 00000000..3231ba98 --- /dev/null +++ b/src/utils.py @@ -0,0 +1,12 @@ +import gobject +import gtk +import gtk.glade + +def error(parent, primary, secondary): + p = "<span weight=\"bold\" size=\"larger\">%s</span>" % primary + dialog = gtk.MessageDialog(parent,gtk.DIALOG_MODAL, + gtk.MESSAGE_ERROR,gtk.BUTTONS_OK,"") + dialog.set_markup(p); + dialog.format_secondary_text(secondary); + dialog.run() + dialog.hide() diff --git a/xmldocs.make b/xmldocs.make new file mode 100644 index 00000000..5d58b28b --- /dev/null +++ b/xmldocs.make @@ -0,0 +1,96 @@ +# +# No modifications of this Makefile should be necessary. +# +# To use this template: +# 1) Define: figdir, docname, lang, omffile, and entities in +# your Makefile.am file for each document directory, +# although figdir, omffile, and entities may be empty +# 2) Make sure the Makefile in (1) also includes +# "include $(top_srcdir)/xmldocs.make" and +# "dist-hook: app-dist-hook". +# 3) Optionally define 'entities' to hold xml entities which +# you would also like installed +# 4) Figures must go under $(figdir)/ and be in PNG format +# 5) You should only have one document per directory +# 6) Note that the figure directory, $(figdir)/, should not have its +# own Makefile since this Makefile installs those figures. +# +# example Makefile.am: +# figdir = figures +# docname = scrollkeeper-manual +# lang = C +# omffile=scrollkeeper-manual-C.omf +# entities = fdl.xml +# include $(top_srcdir)/xmldocs.make +# dist-hook: app-dist-hook +# +# About this file: +# This file was taken from scrollkeeper_example2, a package illustrating +# how to install documentation and OMF files for use with ScrollKeeper +# 0.3.x and 0.4.x. For more information, see: +# http://scrollkeeper.sourceforge.net/ +# Version: 0.1.2 (last updated: March 20, 2002) +# + + +# ************* Begin of section some packagers may need to modify ************** +# This variable (docdir) specifies where the documents should be installed. +# This default value should work for most packages. +# docdir = $(datadir)/@PACKAGE@/doc/$(docname)/$(lang) +docdir = $(datadir)/gnome/help/$(docname)/$(lang) + +# ************** You should not have to edit below this line ******************* +xml_files = $(entities) $(docname).xml + +EXTRA_DIST = $(xml_files) $(omffile) +CLEANFILES = omf_timestamp + +# If the following file is in a subdir (like help/) you need to add that to the path +include $(top_srcdir)/omf.make + +all: omf + +$(docname).xml: $(entities) + -ourdir=`pwd`; \ + cd $(srcdir); \ + cp $(entities) $$ourdir + +app-dist-hook: + if test "$(figdir)"; then \ + $(mkinstalldirs) $(distdir)/$(figdir); \ + for file in $(srcdir)/$(figdir)/*.png; do \ + basefile=`echo $$file | sed -e 's,^.*/,,'`; \ + $(INSTALL_DATA) $$file $(distdir)/$(figdir)/$$basefile; \ + done \ + fi + +install-data-local: omf + $(mkinstalldirs) $(DESTDIR)$(docdir) + for file in $(xml_files); do \ + cp $(srcdir)/$$file $(DESTDIR)$(docdir); \ + done + if test "$(figdir)"; then \ + $(mkinstalldirs) $(DESTDIR)$(docdir)/$(figdir); \ + for file in $(srcdir)/$(figdir)/*.png; do \ + basefile=`echo $$file | sed -e 's,^.*/,,'`; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(docdir)/$(figdir)/$$basefile; \ + done \ + fi + +install-data-hook: install-data-hook-omf + +uninstall-local: uninstall-local-doc uninstall-local-omf + +uninstall-local-doc: + -if test "$(figdir)"; then \ + for file in $(srcdir)/$(figdir)/*.png; do \ + basefile=`echo $$file | sed -e 's,^.*/,,'`; \ + rm -f $(docdir)/$(figdir)/$$basefile; \ + done; \ + rmdir $(DESTDIR)$(docdir)/$(figdir); \ + fi + -for file in $(xml_files); do \ + rm -f $(DESTDIR)$(docdir)/$$file; \ + done + -rmdir $(DESTDIR)$(docdir) + |
